ZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL0tidWlsZCBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL0tidWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Mjk4YmY2Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvS2J1aWxkCkBAIC0wLDAgKzEsNCBAQAorY2NmbGFncy0kKENPTkZJR19IQVNfQ0MzMjIwU0RLKSArPSAtRCQoQ09NUElMRVIpCisjIE5lZWQgdG8gYnVpbGQgcHJjbSBhbmQgdXRpbHMgZm9yIFBSQ01DQzMyMjBNQ1VJbml0LCB3aGljaCBpcyBub3QgaW4gUk9NCitvYmotJChDT05GSUdfSEFTX0NDMzIyMFNESykgKz0gZHJpdmVybGliL3V0aWxzLm8KK29iai0kKENPTkZJR19IQVNfQ0MzMjIwU0RLKSArPSBkcml2ZXJsaWIvcHJjbS5vCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9LY29uZmlnIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvS2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2Q3OTQzCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvS2NvbmZpZwpAQCAtMCwwICsxLDExIEBACisjIEtjb25maWcgLSBDQzMyMjAgU0RLIEhBTCBjb25maWd1cmF0aW9uCisKK2NvbmZpZyBIQVNfQ0MzMjIwU0RLCisJYm9vbAorCittZW51Y29uZmlnIENDMzIyMFNESworCWJvb2wgIlRJIENDMzIyMCBTREsgc3VwcG9ydCIKKwlkZWZhdWx0IG4KKwlkZXBlbmRzIG9uIEhBU19DQzMyMjBTREsKKwloZWxwCisJQnVpbGQgcmVxdWlyZWQgcGVyaXBoZXJhbCBkcml2ZXJsaWIgZmlsZXMgZnJvbSB0aGUgQ0MzMjIwIFNESwpkaWZmIC0tZ2l0IGEvZXh0L2hhbC90aS9jYzMyMjBzZGsvTWFrZWZpbGUgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGE0MWZjCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvTWFrZWZpbGUKQEAgLTAsMCArMSw2IEBACitpZmRlZiBDT05GSUdfSEFTX0NDMzIyMFNESworWkVQSFlSSU5DTFVERSArPS1JJChzcmN0cmVlKS9leHQvaGFsL3RpL2NjMzIyMHNkaworWkVQSFlSSU5DTFVERSArPS1JJChzcmN0cmVlKS9leHQvaGFsL3RpL2NjMzIyMHNkay9pbmMKK1pFUEhZUklOQ0xVREUgKz0tSSQoc3JjdHJlZSkvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliCitLQlVJTERfQ0ZMQUdTICs9IC1EVVNFX0NDMzIwMF9ST01fRFJWX0FQSQorZW5kaWYgIyBDT05GSUdfSEFTX0NDMzIyMFNESwpkaWZmIC0tZ2l0IGEvZXh0L2hhbC90aS9jYzMyMjBzZGsvUkVBRE1FIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2OTY4NGUKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9SRUFETUUKQEAgLTAsMCArMSwyNiBAQAorVGhlIENDMzIyMCBTREsgcHJvdmlkZXMgYSBwZXJpcGhlcmFsIGRyaXZlciBsaWJyYXJ5IGFuZCBoYXJkd2FyZQorcmVnaXN0ZXIgYWNjZXNzIGhlYWRlciBmaWxlcyBmb3IgdGhlIFRleGFzIEluc3RydW1lbnRzIFNpbXBsZUxpbmsKK0NDMzIyMFMgYW5kIENDMzIyMFNGIFNvQ3MuCisKK1RoZSBjdXJyZW50IHZlcnNpb24gc3VwcG9ydGVkIGluIFplcGh5ciBpcyBDQzMyMjAgU0RLIDEuMzAuMDEuMDMsCitkb3dubG9hZGVkIGZyb206CisKKwlodHRwOi8vd3d3LnRpLmNvbS90b29sL2Rvd25sb2FkL1NJTVBMRUxJTkstQ0MzMjIwLVNESworCitBIHN1YnNldCBvZiB0aGUgZmlsZXMgaW4gZHJpdmVybGliLyBhbmQgaW5jLyBhcmUgY29waWVkIGZyb20gYQorTGludXggQ0MzMjIwIFNESyBpbnN0YWxsYXRpb24gd2l0aG91dCBtb2RpZmljYXRpb24uCisKK1RJIHByb3ZpZGVzIHRoZSBkcml2ZXIgbGlicmFyeSBmdW5jdGlvbnMgYnVybmVkIGludG8gUk9NIGF0IHRoZSBmYWN0b3J5LAorb3IgdXBkYXRlZCB2aWEgYSBzZXJ2aWNlIHBhY2sgcGF0Y2gsIHRodXMgc2F2aW5nIGFwcGxpY2F0aW9uIGNvZGUgc3BhY2UuCisKK0NhbGxpbmcgZHJpdmVybGliIEFQSXMgcHJlZml4ZWQgYnkgIk1BUF8iIHdpbGwgdmVjdG9yIHRvIHRob3NlIGZ1bmN0aW9ucworYWxyZWFkeSBleGlzdGluZyBpbiBST00uCisKK0ZvciB0aGUgemVwaHlyIHNoZWxsIHNhbXBsZSwgZm9yIGV4YW1wbGUsIHVzaW5nIHRoZXNlIFJPTSBmdW5jdGlvbnMKK3Jlc3VsdHMgaW4gYSBzYXZpbmdzIG9mIGFib3V0IDJLYiBpbiBjb2RlIHNwYWNlLgorCitBZnRlciBzZXR0aW5nIENPTkZJR19IQVNfQ0MzMjIwU0RLPXkgaW4gS2NvbmZpZywgbW9zdCBvZiB0aGUKK3BlcmlwaGVyYWwgZHJpdmVyIGxpYnJhcnkgZnVuY3Rpb25zIHdpbGwgYmUgYWNjZXNzaWJsZSBmcm9tIFJPTSwKK2V4Y2VwdCBmb3IgdGhlIGZvbGxvd2luZyBtb2R1bGVzOgorLSBkcml2ZXJsaWIvcHJjbS5jCistIGRyaXZlcmxpYi91dGlscy5jCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvY3B1LmggYi9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvY3B1LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU4ODQwZQotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9jcHUuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiAgYXJlIG1ldDoKKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vICBjcHUuaAorLy8KKy8vICBQcm90b3R5cGVzIGZvciB0aGUgQ1BVIGluc3RydWN0aW9uIHdyYXBwZXIgZnVuY3Rpb25zLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworI2lmbmRlZiBfX0NQVV9IX18KKyNkZWZpbmUgX19DUFVfSF9fCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBJZiBidWlsZGluZyB3aXRoIGEgQysrIGNvbXBpbGVyLCBtYWtlIGFsbCBvZiB0aGUgZGVmaW5pdGlvbnMgaW4gdGhpcyBoZWFkZXIKKy8vIGhhdmUgYSBDIGJpbmRpbmcuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCit7CisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFByb3RvdHlwZXMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorZXh0ZXJuIHVuc2lnbmVkIGxvbmcgQ1BVY3BzaWQodm9pZCk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBDUFVjcHNpZSh2b2lkKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIENQVXByaW1hc2sodm9pZCk7CitleHRlcm4gdm9pZCBDUFV3Zmkodm9pZCk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBDUFViYXNlcHJpR2V0KHZvaWQpOworZXh0ZXJuIHZvaWQgQ1BVYmFzZXByaVNldCh1bnNpZ25lZCBsb25nIHVsTmV3QmFzZXByaSk7CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYXJrIHRoZSBlbmQgb2YgdGhlIEMgYmluZGluZ3Mgc2VjdGlvbiBmb3IgQysrIGNvbXBpbGVycy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gX19DUFVfSF9fCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvZmxhc2guaCBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9mbGFzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ZjBhMDAKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvZmxhc2guaApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCisgKgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKgorICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyAgZmxhc2guaAorLy8KKy8vICBQcm90b3R5cGVzIGZvciB0aGUgZmxhc2ggZHJpdmVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworI2lmbmRlZiBfX0ZMQVNIX0hfXworI2RlZmluZSBfX0ZMQVNIX0hfXworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gSWYgYnVpbGRpbmcgd2l0aCBhIEMrKyBjb21waWxlciwgbWFrZSBhbGwgb2YgdGhlIGRlZmluaXRpb25zIGluIHRoaXMgaGVhZGVyCisvLyBoYXZlIGEgQyBiaW5kaW5nLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgoreworI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIEZsYXNoUHJvdGVjdFNldCgpLCBhbmQgcmV0dXJuZWQgYnkKKy8vIEZsYXNoUHJvdGVjdEdldCgpLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3R5cGVkZWYgZW51bQoreworICAgIEZsYXNoUmVhZFdyaXRlLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGbGFzaCBjYW4gYmUgcmVhZCBhbmQgd3JpdHRlbgorICAgIEZsYXNoUmVhZE9ubHksICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGbGFzaCBjYW4gb25seSBiZSByZWFkCisgICAgRmxhc2hFeGVjdXRlT25seSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZsYXNoIGNhbiBvbmx5IGJlIGV4ZWN1dGVkCit9Cit0Rmxhc2hQcm90ZWN0aW9uOworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVmFsdWVzIHBhc3NlZCB0byBGbGFzaEludEVuYWJsZSgpLCBGbGFzaEludERpc2FibGUoKSBhbmQgRmxhc2hJbnRDbGVhcigpIGFuZAorLy8gcmV0dXJuZWQgZnJvbSBGbGFzaEludFN0YXR1cygpLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgRkxBU0hfSU5UX1BST0dSQU0gICAgIDB4MDAwMDAwMDIgLy8gUHJvZ3JhbW1pbmcgSW50ZXJydXB0IE1hc2sKKyNkZWZpbmUgRkxBU0hfSU5UX0FDQ0VTUyAgICAgIDB4MDAwMDAwMDEgLy8gQWNjZXNzIEludGVycnVwdCBNYXNrCisjZGVmaW5lIEZMQVNIX0lOVF9FRVBST00gICAgICAweDAwMDAwMDA0IC8vIEVFUFJPTSBJbnRlcnJ1cHQgTWFzaworI2RlZmluZSBGTEFTSF9JTlRfVk9MVEFHRV9FUlIgMHgwMDAwMDIwMCAvLyBWb2x0YWdlIEVycm9yIEludGVycnVwdCBNYXNrCisjZGVmaW5lIEZMQVNIX0lOVF9EQVRBX0VSUiAgICAweDAwMDAwNDAwIC8vIEludmFsaWQgRGF0YSBJbnRlcnJ1cHQgTWFzaworI2RlZmluZSBGTEFTSF9JTlRfRVJBU0VfRVJSICAgMHgwMDAwMDgwMCAvLyBFcmFzZSBFcnJvciBJbnRlcnJ1cHQgTWFzaworI2RlZmluZSBGTEFTSF9JTlRfUFJPR1JBTV9FUlIgMHgwMDAwMjAwMCAvLyBQcm9ncmFtIFZlcmlmeSBFcnJvciBJbnRlcnJ1cHQgTWFzaworCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBQcm90b3R5cGVzIGZvciB0aGUgQVBJcy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitleHRlcm4gdm9pZCBGbGFzaERpc2FibGUodm9pZCk7CitleHRlcm4gbG9uZyBGbGFzaEVyYXNlKHVuc2lnbmVkIGxvbmcgdWxBZGRyZXNzKTsKK2V4dGVybiB2b2lkIEZsYXNoRXJhc2VOb25CbG9ja2luZyh1bnNpZ25lZCBsb25nIHVsQWRkcmVzcyk7CitleHRlcm4gbG9uZyBGbGFzaE1hc3NFcmFzZSh2b2lkKTsKK2V4dGVybiB2b2lkIEZsYXNoTWFzc0VyYXNlTm9uQmxvY2tpbmcodm9pZCk7CitleHRlcm4gbG9uZyBGbGFzaFByb2dyYW0odW5zaWduZWQgbG9uZyAqcHVsRGF0YSwgdW5zaWduZWQgbG9uZyB1bEFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENvdW50KTsKK2V4dGVybiBsb25nIEZsYXNoUHJvZ3JhbU5vbkJsb2NraW5nKHVuc2lnbmVkIGxvbmcgKnB1bERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDb3VudCk7CitleHRlcm4gdm9pZCBGbGFzaEludFJlZ2lzdGVyKHZvaWQgKCpwZm5IYW5kbGVyKSh2b2lkKSk7CitleHRlcm4gdm9pZCBGbGFzaEludFVucmVnaXN0ZXIodm9pZCk7CitleHRlcm4gdm9pZCBGbGFzaEludEVuYWJsZSh1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpOworZXh0ZXJuIHZvaWQgRmxhc2hJbnREaXNhYmxlKHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncyk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBGbGFzaEludFN0YXR1cyh0Qm9vbGVhbiBiTWFza2VkKTsKK2V4dGVybiB2b2lkIEZsYXNoSW50Q2xlYXIodW5zaWduZWQgbG9uZyB1bEludEZsYWdzKTsKK2V4dGVybiB0Rmxhc2hQcm90ZWN0aW9uIEZsYXNoUHJvdGVjdEdldCh1bnNpZ25lZCBsb25nIHVsQWRkcmVzcyk7CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYXJrIHRoZSBlbmQgb2YgdGhlIEMgYmluZGluZ3Mgc2VjdGlvbiBmb3IgQysrIGNvbXBpbGVycy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gX19GTEFTSF9IX18KZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9ncGlvLmggYi9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvZ3Bpby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MmJhZTYKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvZ3Bpby5oCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiAgYXJlIG1ldDoKKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vICBncGlvLmgKKy8vCisvLyAgRGVmaW5lcyBhbmQgTWFjcm9zIGZvciBHUElPIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyNpZm5kZWYgX19HUElPX0hfXworI2RlZmluZSBfX0dQSU9fSF9fCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBJZiBidWlsZGluZyB3aXRoIGEgQysrIGNvbXBpbGVyLCBtYWtlIGFsbCBvZiB0aGUgZGVmaW5pdGlvbnMgaW4gdGhpcyBoZWFkZXIKKy8vIGhhdmUgYSBDIGJpbmRpbmcuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCit7CisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgdmFsdWVzIGRlZmluZSB0aGUgYml0IGZpZWxkIGZvciB0aGUgdWNQaW5zIGFyZ3VtZW50IHRvIHNldmVyYWwKKy8vIG9mIHRoZSBBUElzLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19QSU5fMCAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gR1BJTyBwaW4gMAorI2RlZmluZSBHUElPX1BJTl8xICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyBHUElPIHBpbiAxCisjZGVmaW5lIEdQSU9fUElOXzIgICAgICAgICAgICAgIDB4MDAwMDAwMDQgIC8vIEdQSU8gcGluIDIKKyNkZWZpbmUgR1BJT19QSU5fMyAgICAgICAgICAgICAgMHgwMDAwMDAwOCAgLy8gR1BJTyBwaW4gMworI2RlZmluZSBHUElPX1BJTl80ICAgICAgICAgICAgICAweDAwMDAwMDEwICAvLyBHUElPIHBpbiA0CisjZGVmaW5lIEdQSU9fUElOXzUgICAgICAgICAgICAgIDB4MDAwMDAwMjAgIC8vIEdQSU8gcGluIDUKKyNkZWZpbmUgR1BJT19QSU5fNiAgICAgICAgICAgICAgMHgwMDAwMDA0MCAgLy8gR1BJTyBwaW4gNgorI2RlZmluZSBHUElPX1BJTl83ICAgICAgICAgICAgICAweDAwMDAwMDgwICAvLyBHUElPIHBpbiA3CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIEdQSU9EaXJNb2RlU2V0IGFzIHRoZSB1bFBpbklPIHBhcmFtZXRlciwgYW5kCisvLyByZXR1cm5lZCBmcm9tIEdQSU9EaXJNb2RlR2V0LgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19ESVJfTU9ERV9JTiAgICAgICAgMHgwMDAwMDAwMCAgLy8gUGluIGlzIGEgR1BJTyBpbnB1dAorI2RlZmluZSBHUElPX0RJUl9NT0RFX09VVCAgICAgICAweDAwMDAwMDAxICAvLyBQaW4gaXMgYSBHUElPIG91dHB1dAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVmFsdWVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBHUElPSW50VHlwZVNldCBhcyB0aGUgdWxJbnRUeXBlIHBhcmFtZXRlciwgYW5kCisvLyByZXR1cm5lZCBmcm9tIEdQSU9JbnRUeXBlR2V0LgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19GQUxMSU5HX0VER0UgICAgICAgMHgwMDAwMDAwMCAgLy8gSW50ZXJydXB0IG9uIGZhbGxpbmcgZWRnZQorI2RlZmluZSBHUElPX1JJU0lOR19FREdFICAgICAgICAweDAwMDAwMDA0ICAvLyBJbnRlcnJ1cHQgb24gcmlzaW5nIGVkZ2UKKyNkZWZpbmUgR1BJT19CT1RIX0VER0VTICAgICAgICAgMHgwMDAwMDAwMSAgLy8gSW50ZXJydXB0IG9uIGJvdGggZWRnZXMKKyNkZWZpbmUgR1BJT19MT1dfTEVWRUwgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gSW50ZXJydXB0IG9uIGxvdyBsZXZlbAorI2RlZmluZSBHUElPX0hJR0hfTEVWRUwgICAgICAgICAweDAwMDAwMDA2ICAvLyBJbnRlcnJ1cHQgb24gaGlnaCBsZXZlbAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVmFsdWVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBHUElPSW50RW5hYmxlKCkgYW5kIEdQSU9JbnREaXNhYmxlKCkgZnVuY3Rpb25zCisvLyBpbiB0aGUgdWxJbnRGbGFncyBwYXJhbWV0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0lOVF9ETUEgICAgICAgICAgICAweDAwMDAwMTAwCisjZGVmaW5lIEdQSU9fSU5UX1BJTl8wICAgICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgR1BJT19JTlRfUElOXzEgICAgICAgICAgMHgwMDAwMDAwMgorI2RlZmluZSBHUElPX0lOVF9QSU5fMiAgICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIEdQSU9fSU5UX1BJTl8zICAgICAgICAgIDB4MDAwMDAwMDgKKyNkZWZpbmUgR1BJT19JTlRfUElOXzQgICAgICAgICAgMHgwMDAwMDAxMAorI2RlZmluZSBHUElPX0lOVF9QSU5fNSAgICAgICAgICAweDAwMDAwMDIwCisjZGVmaW5lIEdQSU9fSU5UX1BJTl82ICAgICAgICAgIDB4MDAwMDAwNDAKKyNkZWZpbmUgR1BJT19JTlRfUElOXzcgICAgICAgICAgMHgwMDAwMDA4MAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gUHJvdG90eXBlcyBmb3IgdGhlIEFQSXMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorZXh0ZXJuIHZvaWQgR1BJT0Rpck1vZGVTZXQodW5zaWduZWQgbG9uZyB1bFBvcnQsIHVuc2lnbmVkIGNoYXIgdWNQaW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFBpbklPKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIEdQSU9EaXJNb2RlR2V0KHVuc2lnbmVkIGxvbmcgdWxQb3J0LCB1bnNpZ25lZCBjaGFyIHVjUGluKTsKK2V4dGVybiB2b2lkIEdQSU9JbnRUeXBlU2V0KHVuc2lnbmVkIGxvbmcgdWxQb3J0LCB1bnNpZ25lZCBjaGFyIHVjUGlucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRUeXBlKTsKK2V4dGVybiB2b2lkIEdQSU9ETUFUcmlnZ2VyRW5hYmxlKHVuc2lnbmVkIGxvbmcgdWxQb3J0KTsKK2V4dGVybiB2b2lkIEdQSU9ETUFUcmlnZ2VyRGlzYWJsZSh1bnNpZ25lZCBsb25nIHVsUG9ydCk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBHUElPSW50VHlwZUdldCh1bnNpZ25lZCBsb25nIHVsUG9ydCwgdW5zaWduZWQgY2hhciB1Y1Bpbik7CitleHRlcm4gdm9pZCBHUElPSW50RW5hYmxlKHVuc2lnbmVkIGxvbmcgdWxQb3J0LCB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpOworZXh0ZXJuIHZvaWQgR1BJT0ludERpc2FibGUodW5zaWduZWQgbG9uZyB1bFBvcnQsIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncyk7CitleHRlcm4gbG9uZyBHUElPSW50U3RhdHVzKHVuc2lnbmVkIGxvbmcgdWxQb3J0LCB0Qm9vbGVhbiBiTWFza2VkKTsKK2V4dGVybiB2b2lkIEdQSU9JbnRDbGVhcih1bnNpZ25lZCBsb25nIHVsUG9ydCwgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKTsKK2V4dGVybiB2b2lkIEdQSU9JbnRSZWdpc3Rlcih1bnNpZ25lZCBsb25nIHVsUG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBmbkludEhhbmRsZXIpKHZvaWQpKTsKK2V4dGVybiB2b2lkIEdQSU9JbnRVbnJlZ2lzdGVyKHVuc2lnbmVkIGxvbmcgdWxQb3J0KTsKK2V4dGVybiBsb25nIEdQSU9QaW5SZWFkKHVuc2lnbmVkIGxvbmcgdWxQb3J0LCB1bnNpZ25lZCBjaGFyIHVjUGlucyk7CitleHRlcm4gdm9pZCBHUElPUGluV3JpdGUodW5zaWduZWQgbG9uZyB1bFBvcnQsIHVuc2lnbmVkIGNoYXIgdWNQaW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdWNWYWwpOworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFyayB0aGUgZW5kIG9mIHRoZSBDIGJpbmRpbmdzIHNlY3Rpb24gZm9yIEMrKyBjb21waWxlcnMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vICBfX0dQSU9fSF9fCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvaW50ZXJydXB0LmggYi9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvaW50ZXJydXB0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk5YmQzNwotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9pbnRlcnJ1cHQuaApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCisgKgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKgorICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyAgaW50ZXJydXB0LmgKKy8vCisvLyAgUHJvdG90eXBlcyBmb3IgdGhlIE5WSUMgSW50ZXJydXB0IENvbnRyb2xsZXIgRHJpdmVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworI2lmbmRlZiBfX0lOVEVSUlVQVF9IX18KKyNkZWZpbmUgX19JTlRFUlJVUFRfSF9fCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBJZiBidWlsZGluZyB3aXRoIGEgQysrIGNvbXBpbGVyLCBtYWtlIGFsbCBvZiB0aGUgZGVmaW5pdGlvbnMgaW4gdGhpcyBoZWFkZXIKKy8vIGhhdmUgYSBDIGJpbmRpbmcuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCit7CisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIEEgdW5pb24gdGhhdCBkZXNjcmliZXMgdGhlIGVudHJpZXMgb2YgdGhlIHZlY3RvciB0YWJsZS4gIFRoZSB1bmlvbiBpcyBuZWVkZWQKKy8vIHNpbmNlIHRoZSBmaXJzdCBlbnRyeSBpcyB0aGUgc3RhY2sgcG9pbnRlciBhbmQgdGhlIHJlbWFpbmRlciBhcmUgZnVuY3Rpb24KKy8vIHBvaW50ZXJzLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3R5cGVkZWYgdW5pb24KK3sKKyAgICB2b2lkICgqcGZuSGFuZGxlcikodm9pZCk7CisgICAgdW5zaWduZWQgbG9uZyB1bFB0cjsKK30KK3VWZWN0b3JFbnRyeTsKKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm8gdG8gZ2VuZXJhdGUgYW4gaW50ZXJydXB0IHByaW9yaXR5IG1hc2sgYmFzZWQgb24gdGhlIG51bWJlciBvZiBiaXRzCisvLyBvZiBwcmlvcml0eSBzdXBwb3J0ZWQgYnkgdGhlIGhhcmR3YXJlLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSU5UX1BSSU9SSVRZX01BU0sgICAgICAgKCgweEZGIDw8ICg4IC0gTlVNX1BSSU9SSVRZX0JJVFMpKSAmIDB4RkYpCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIEludGVycnVwdCBwcmlvcml0eSBsZXZlbHMKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSU5UX1BSSU9SSVRZX0xWTF8wICAgICAgMHgwMAorI2RlZmluZSBJTlRfUFJJT1JJVFlfTFZMXzEgICAgICAweDIwCisjZGVmaW5lIElOVF9QUklPUklUWV9MVkxfMiAgICAgIDB4NDAKKyNkZWZpbmUgSU5UX1BSSU9SSVRZX0xWTF8zICAgICAgMHg2MAorI2RlZmluZSBJTlRfUFJJT1JJVFlfTFZMXzQgICAgICAweDgwCisjZGVmaW5lIElOVF9QUklPUklUWV9MVkxfNSAgICAgIDB4QTAKKyNkZWZpbmUgSU5UX1BSSU9SSVRZX0xWTF82ICAgICAgMHhDMAorI2RlZmluZSBJTlRfUFJJT1JJVFlfTFZMXzcgICAgICAweEUwCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBQcm90b3R5cGVzIGZvciB0aGUgQVBJcy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitleHRlcm4gdEJvb2xlYW4gSW50TWFzdGVyRW5hYmxlKHZvaWQpOworZXh0ZXJuIHRCb29sZWFuIEludE1hc3RlckRpc2FibGUodm9pZCk7CitleHRlcm4gdm9pZCBJbnRWVGFibGVCYXNlU2V0KHVuc2lnbmVkIGxvbmcgdWxWdGFibGVCYXNlKTsKK2V4dGVybiB2b2lkIEludFJlZ2lzdGVyKHVuc2lnbmVkIGxvbmcgdWxJbnRlcnJ1cHQsIHZvaWQgKCpwZm5IYW5kbGVyKSh2b2lkKSk7CitleHRlcm4gdm9pZCBJbnRVbnJlZ2lzdGVyKHVuc2lnbmVkIGxvbmcgdWxJbnRlcnJ1cHQpOworZXh0ZXJuIHZvaWQgSW50UHJpb3JpdHlHcm91cGluZ1NldCh1bnNpZ25lZCBsb25nIHVsQml0cyk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBJbnRQcmlvcml0eUdyb3VwaW5nR2V0KHZvaWQpOworZXh0ZXJuIHZvaWQgSW50UHJpb3JpdHlTZXQodW5zaWduZWQgbG9uZyB1bEludGVycnVwdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdWNQcmlvcml0eSk7CitleHRlcm4gbG9uZyBJbnRQcmlvcml0eUdldCh1bnNpZ25lZCBsb25nIHVsSW50ZXJydXB0KTsKK2V4dGVybiB2b2lkIEludEVuYWJsZSh1bnNpZ25lZCBsb25nIHVsSW50ZXJydXB0KTsKK2V4dGVybiB2b2lkIEludERpc2FibGUodW5zaWduZWQgbG9uZyB1bEludGVycnVwdCk7CitleHRlcm4gdm9pZCBJbnRQZW5kU2V0KHVuc2lnbmVkIGxvbmcgdWxJbnRlcnJ1cHQpOworZXh0ZXJuIHZvaWQgSW50UGVuZENsZWFyKHVuc2lnbmVkIGxvbmcgdWxJbnRlcnJ1cHQpOworZXh0ZXJuIHZvaWQgSW50UHJpb3JpdHlNYXNrU2V0KHVuc2lnbmVkIGxvbmcgdWxQcmlvcml0eU1hc2spOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgSW50UHJpb3JpdHlNYXNrR2V0KHZvaWQpOworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFyayB0aGUgZW5kIG9mIHRoZSBDIGJpbmRpbmdzIHNlY3Rpb24gZm9yIEMrKyBjb21waWxlcnMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIF9fSU5URVJSVVBUX0hfXwpkaWZmIC0tZ2l0IGEvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL3Bpbi5oIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL3Bpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhOTQ2ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvcGluLmgKQEAgLTAsMCArMSwxOTEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLworICoKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqICBhcmUgbWV0OgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqICAgIE5laXRoZXIgdGhlIG5hbWUgb2YgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gIHBpbi5oCisvLworLy8gIERlZmluZXMgYW5kIE1hY3JvcyBmb3IgdGhlIHBpbiBtdXggbW9kdWxlCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisjaWZuZGVmIF9fUElOX0hfXworI2RlZmluZSBfX1BJTl9IX18KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIElmIGJ1aWxkaW5nIHdpdGggYSBDKysgY29tcGlsZXIsIG1ha2UgYWxsIG9mIHRoZSBkZWZpbml0aW9ucyBpbiB0aGlzIGhlYWRlcgorLy8gaGF2ZSBhIEMgYmluZGluZy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKK3sKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBNYWNyb3MgRGVmaW5pbmcgUGlucworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisjZGVmaW5lIFBJTl8wMSAJIDB4MDAwMDAwMDAKKyNkZWZpbmUgUElOXzAyIAkgMHgwMDAwMDAwMQorI2RlZmluZSBQSU5fMDMgICAweDAwMDAwMDAyCisjZGVmaW5lIFBJTl8wNCAJIDB4MDAwMDAwMDMKKyNkZWZpbmUgUElOXzA1ICAgMHgwMDAwMDAwNAorI2RlZmluZSBQSU5fMDYgICAweDAwMDAwMDA1CisjZGVmaW5lIFBJTl8wNyAgIDB4MDAwMDAwMDYKKyNkZWZpbmUgUElOXzA4ICAgMHgwMDAwMDAwNworI2RlZmluZSBQSU5fMTEgICAweDAwMDAwMDBBCisjZGVmaW5lIFBJTl8xMiAgIDB4MDAwMDAwMEIKKyNkZWZpbmUgUElOXzEzICAgMHgwMDAwMDAwQworI2RlZmluZSBQSU5fMTQgICAweDAwMDAwMDBECisjZGVmaW5lIFBJTl8xNSAgIDB4MDAwMDAwMEUKKyNkZWZpbmUgUElOXzE2ICAgMHgwMDAwMDAwRgorI2RlZmluZSBQSU5fMTcgICAweDAwMDAwMDEwCisjZGVmaW5lIFBJTl8xOCAgIDB4MDAwMDAwMTEKKyNkZWZpbmUgUElOXzE5IAkgMHgwMDAwMDAxMgorI2RlZmluZSBQSU5fMjAgICAweDAwMDAwMDEzCisjZGVmaW5lIFBJTl8yMSAgIDB4MDAwMDAwMTQKKyNkZWZpbmUgUElOXzQ1ICAgMHgwMDAwMDAyQworI2RlZmluZSBQSU5fNDYgICAweDAwMDAwMDJECisjZGVmaW5lIFBJTl80NyAgIDB4MDAwMDAwMkUKKyNkZWZpbmUgUElOXzQ4ICAgMHgwMDAwMDAyRgorI2RlZmluZSBQSU5fNDkgICAweDAwMDAwMDMwCisjZGVmaW5lIFBJTl81MCAgIDB4MDAwMDAwMzEKKyNkZWZpbmUgUElOXzUyICAgMHgwMDAwMDAzMworI2RlZmluZSBQSU5fNTMgICAweDAwMDAwMDM0CisjZGVmaW5lIFBJTl81NSAgIDB4MDAwMDAwMzYKKyNkZWZpbmUgUElOXzU2ICAgMHgwMDAwMDAzNworI2RlZmluZSBQSU5fNTcgICAweDAwMDAwMDM4CisjZGVmaW5lIFBJTl81OCAgIDB4MDAwMDAwMzkKKyNkZWZpbmUgUElOXzU5ICAgMHgwMDAwMDAzQQorI2RlZmluZSBQSU5fNjAgICAweDAwMDAwMDNCCisjZGVmaW5lIFBJTl82MQkgMHgwMDAwMDAzQworI2RlZmluZSBQSU5fNjIJIDB4MDAwMDAwM0QKKyNkZWZpbmUgUElOXzYzCSAweDAwMDAwMDNFCisjZGVmaW5lIFBJTl82NAkgMHgwMDAwMDAzRgorCisKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gTWFjcm9zIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBQaW5Db25maWdTZXQoKSwgUGluVHlwZUdldCgpLCBQaW5TdHJlbmd0aEdldCgpCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyNkZWZpbmUgUElOX01PREVfMAkgMHgwMDAwMDAwMAorI2RlZmluZSBQSU5fTU9ERV8xCSAweDAwMDAwMDAxCisjZGVmaW5lIFBJTl9NT0RFXzIJIDB4MDAwMDAwMDIKKyNkZWZpbmUgUElOX01PREVfMwkgMHgwMDAwMDAwMworI2RlZmluZSBQSU5fTU9ERV80CSAweDAwMDAwMDA0CisjZGVmaW5lIFBJTl9NT0RFXzUJIDB4MDAwMDAwMDUKKyNkZWZpbmUgUElOX01PREVfNgkgMHgwMDAwMDAwNgorI2RlZmluZSBQSU5fTU9ERV83CSAweDAwMDAwMDA3CisjZGVmaW5lIFBJTl9NT0RFXzgJIDB4MDAwMDAwMDgKKyNkZWZpbmUgUElOX01PREVfOQkgMHgwMDAwMDAwOQorI2RlZmluZSBQSU5fTU9ERV8xMAkgMHgwMDAwMDAwQQorI2RlZmluZSBQSU5fTU9ERV8xMQkgMHgwMDAwMDAwQgorI2RlZmluZSBQSU5fTU9ERV8xMgkgMHgwMDAwMDAwQworI2RlZmluZSBQSU5fTU9ERV8xMwkgMHgwMDAwMDAwRAorI2RlZmluZSBQSU5fTU9ERV8xNAkgMHgwMDAwMDAwRQorI2RlZmluZSBQSU5fTU9ERV8xNQkgMHgwMDAwMDAwRgorLy8gTm90ZSA6IFBJTl9NT0RFXzI1NSBpcyBhIGR1bW15IGRlZmluZSBmb3IgcGlubXV4IHV0aWxpdHkgY29kZSBnZW5lcmF0aW9uCisvLyBQSU5fTU9ERV8yNTUgc2hvdWxkIG5ldmVyIGJlIHVzZWQgaW4gYW55IHVzZXIgY29kZS4KKyNkZWZpbmUgUElOX01PREVfMjU1IDB4MDAwMDAwRkYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gTWFjcm9zIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBQaW5EaXJNb2RlU2V0KCkgYW5kIHJldHVybmVkIGZyb20KKy8vIFBpbkRpck1vZGVHZXQoKS4KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgUElOX0RJUl9NT0RFX0lOICAweDAwMDAwQzAwIC8vIFBpbiBpcyBpbnB1dAorI2RlZmluZSBQSU5fRElSX01PREVfT1VUIDB4MDAwMDA4MDAgLy8gUGluIGlzIG91dHB1dAorI2RlZmluZSBQSU5fRElSX01PREVfSFcgIDB4MDAwMDAwMDAgLy8gUGluIGlzIHBlcmlwaGVyYWwgZnVuY3Rpb24KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gTWFjcm9zIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBQaW5Db25maWdTZXQoKQorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBQSU5fU1RSRU5HVEhfMk1BICAweDAwMDAwMDIwCisjZGVmaW5lIFBJTl9TVFJFTkdUSF80TUEgIDB4MDAwMDAwNDAKKyNkZWZpbmUgUElOX1NUUkVOR1RIXzZNQSAgMHgwMDAwMDA2MAorCisjZGVmaW5lIFBJTl9UWVBFX1NURCAgICAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgUElOX1RZUEVfU1REX1BVICAgMHgwMDAwMDEwMAorI2RlZmluZSBQSU5fVFlQRV9TVERfUEQgICAweDAwMDAwMjAwCisKKyNkZWZpbmUgUElOX1RZUEVfT0QgICAgICAgMHgwMDAwMDAxMAorI2RlZmluZSBQSU5fVFlQRV9PRF9QVSAgICAweDAwMDAwMTEwCisjZGVmaW5lIFBJTl9UWVBFX09EX1BEICAgIDB4MDAwMDAyMTAKKyNkZWZpbmUgUElOX1RZUEVfQU5BTE9HICAgMHgxMDAwMDAwMAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBNYWNyb3MgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIFBpbkh5c3RlcmVzaXNTZXQoKQorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBQSU5fSFlTVEVSRVNJU19PRkYgICAgICAweDAwMDAwMDAwCisjZGVmaW5lIFBJTl9IWVNURVJFU0lTXzEwICAgICAgIDB4MDAwMDAwMDQKKyNkZWZpbmUgUElOX0hZU1RFUkVTSVNfMjAgICAgICAgMHgwMDAwMDAwQworI2RlZmluZSBQSU5fSFlTVEVSRVNJU18zMCAgICAgICAweDAwMDAwMDE0CisjZGVmaW5lIFBJTl9IWVNURVJFU0lTXzQwICAgICAgIDB4MDAwMDAwMUMKKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gQVBJIEZ1bmN0aW9uIHByb3RvdHlwZXMKKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitleHRlcm4gdm9pZCBQaW5Nb2RlU2V0KHVuc2lnbmVkIGxvbmcgdWxQaW4sIHVuc2lnbmVkIGxvbmcgdWxQaW5Nb2RlKTsKK2V4dGVybiB2b2lkIFBpbkRpck1vZGVTZXQodW5zaWduZWQgbG9uZyB1bFBpbiwgdW5zaWduZWQgbG9uZyB1bFBpbklPKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIFBpbkRpck1vZGVHZXQodW5zaWduZWQgbG9uZyB1bFBpbik7CitleHRlcm4gdW5zaWduZWQgbG9uZyBQaW5Nb2RlR2V0KHVuc2lnbmVkIGxvbmcgdWxQaW4pOworZXh0ZXJuIHZvaWQgUGluQ29uZmlnR2V0KHVuc2lnbmVkIGxvbmcgdWxQaW4sdW5zaWduZWQgbG9uZyAgKnB1bFBpblN0cmVuZ3RoLAorCQkJCQkJdW5zaWduZWQgbG9uZyAqcHVsUGluVHlwZSk7CitleHRlcm4gdm9pZCBQaW5Db25maWdTZXQodW5zaWduZWQgbG9uZyB1bFBpbix1bnNpZ25lZCBsb25nICB1bFBpblN0cmVuZ3RoLAorCQkJCQkJdW5zaWduZWQgbG9uZyB1bFBpblR5cGUpOworZXh0ZXJuIHZvaWQgUGluVHlwZVVBUlQodW5zaWduZWQgbG9uZyB1bFBpbix1bnNpZ25lZCBsb25nIHVsUGluTW9kZSk7CitleHRlcm4gdm9pZCBQaW5UeXBlSTJDKHVuc2lnbmVkIGxvbmcgdWxQaW4sdW5zaWduZWQgbG9uZyB1bFBpbk1vZGUpOworZXh0ZXJuIHZvaWQgUGluVHlwZVNQSSh1bnNpZ25lZCBsb25nIHVsUGluLHVuc2lnbmVkIGxvbmcgdWxQaW5Nb2RlKTsKK2V4dGVybiB2b2lkIFBpblR5cGVJMlModW5zaWduZWQgbG9uZyB1bFBpbix1bnNpZ25lZCBsb25nIHVsUGluTW9kZSk7CitleHRlcm4gdm9pZCBQaW5UeXBlVGltZXIodW5zaWduZWQgbG9uZyB1bFBpbix1bnNpZ25lZCBsb25nIHVsUGluTW9kZSk7CitleHRlcm4gdm9pZCBQaW5UeXBlQ2FtZXJhKHVuc2lnbmVkIGxvbmcgdWxQaW4sdW5zaWduZWQgbG9uZyB1bFBpbk1vZGUpOworZXh0ZXJuIHZvaWQgUGluVHlwZUdQSU8odW5zaWduZWQgbG9uZyB1bFBpbix1bnNpZ25lZCBsb25nIHVsUGluTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRCb29sZWFuIGJPcGVuRHJhaW4pOworZXh0ZXJuIHZvaWQgUGluVHlwZUFEQyh1bnNpZ25lZCBsb25nIHVsUGluLHVuc2lnbmVkIGxvbmcgdWxQaW5Nb2RlKTsKK2V4dGVybiB2b2lkIFBpblR5cGVTREhvc3QodW5zaWduZWQgbG9uZyB1bFBpbix1bnNpZ25lZCBsb25nIHVsUGluTW9kZSk7CitleHRlcm4gdm9pZCBQaW5IeXN0ZXJlc2lzU2V0KHVuc2lnbmVkIGxvbmcgdWxIeXN0ZXJlc2lzKTsKK2V4dGVybiB2b2lkIFBpbkxvY2tMZXZlbFNldCh1bnNpZ25lZCBsb25nIHVsUGluLCB1bnNpZ25lZCBjaGFyIHVjTGV2ZWwpOworZXh0ZXJuIHZvaWQgUGluTG9jayh1bnNpZ25lZCBsb25nIHVsT3V0RW5hYmxlKTsKK2V4dGVybiB2b2lkIFBpblVubG9jayh2b2lkKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIFBpblRvUGFkR2V0KHVuc2lnbmVkIGxvbmcgdWxQaW4pOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgUGluRnJvbVBhZEdldCh1bnNpZ25lZCBsb25nIHVsUGFkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vX19QSU5fSF9fCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvcHJjbS5jIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL3ByY20uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDE5YzcxCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL3ByY20uYwpAQCAtMCwwICsxLDI3MTUgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLworICoKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqICBhcmUgbWV0OgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqICAgIE5laXRoZXIgdGhlIG5hbWUgb2YgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgXGFkZHRvZ3JvdXAgUFJDTV9Qb3dlcl9SZXNldF9DbG9ja19Nb2R1bGVfYXBpCisvLyEgQHsKKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyNpbmNsdWRlICJpbmMvaHdfdHlwZXMuaCIKKyNpbmNsdWRlICJpbmMvaHdfaW50cy5oIgorI2luY2x1ZGUgImluYy9od19tZW1tYXAuaCIKKyNpbmNsdWRlICJpbmMvaHdfYXBwc19yY20uaCIKKyNpbmNsdWRlICJpbmMvaHdfZ3ByY20uaCIKKyNpbmNsdWRlICJpbmMvaHdfaGliMXAyLmgiCisjaW5jbHVkZSAiaW5jL2h3X2hpYjNwMy5oIgorI2luY2x1ZGUgImluYy9od19vY3Bfc2hhcmVkLmgiCisjaW5jbHVkZSAiaW5jL2h3X2NvbW1vbl9yZWcuaCIKKyNpbmNsdWRlICJwcmNtLmgiCisjaW5jbHVkZSAiaW50ZXJydXB0LmgiCisjaW5jbHVkZSAiY3B1LmgiCisjaW5jbHVkZSAiZmxhc2guaCIKKyNpbmNsdWRlICJ1dGlscy5oIgorCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIE1hY3JvIGRlZmluaXRpb24KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgUFJDTV9TT0ZUX1JFU0VUICAgICAgICAgICAweDAwMDAwMDAxCisjZGVmaW5lIFBSQ01fRU5BQkxFX1NUQVRVUyAgICAgICAgMHgwMDAwMDAwMgorI2RlZmluZSBTWVNfQ0xLICAgICAgICAgICAgICAgICAgIDgwMDAwMDAwCisjZGVmaW5lIFhUQUxfQ0xLICAgICAgICAgICAgICAgICAgNDAwMDAwMDAKKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyAgICBDQzMyMDAgZG9lcyBub3QgaGF2ZSBhIHRydWUgUlRDIGNhcGFiaWxpdHkuIEhvd2V2ZXIsIEFQSShzKSBpbiB0aGlzIGZpbGUKKy8vICAgIHByb3ZpZGUgYW4gZWZmZWN0aXZlIG1lY2hhbmlzbSB0byBzdXBwb3J0IFJUQyBmZWF0dXJlIGluIHRoZSBkZXZpY2UuCisvLworLy8gICAgVGhlIGltcGxlbWVudGF0aW9uIHRvIHN1cHBvcnQgUlRDIGhhcyBiZWVuIGtlcHQgdmVyeSBzaW1wbGUuIEEgc2V0IG9mCisvLyAgICBISUIgTWVtb3J5IFJlZ2lzdGVycyBpbiBjb25qdW5jdGlvbiB3aXRoIFNsb3cgQ2xvY2sgQ291bnRlciBhcmUgdXNlZAorLy8gICAgdG8gcmVuZGVyIFJUQyBpbmZvcm1hdGlvbiB0byB1c2Vycy4gQ29yZSBwcmluY2lwbGUgb2YgZGVzaWduIGludm9sdmVzCisvLyAgICB0d28gc3RlcHMgKGEpIGVzdGFibGlzaCBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuIHVzZXIgcHJvdmlkZWQgd2FsbC1jbG9jaworLy8gICAgYW5kIHNsb3cgY2xvY2sgY291bnRlci4gKGIpIHN0b3JlIHJlZmVyZW5jZSB2YWx1ZSBvZiB0aGlzIGFzc29jaWF0dGlvbgorLy8gICAgaW4gSElCIFJlZ2lzdGVycy4gVGhpcyByZWZlcmVuY2UgdmFsdWUgYW5kIFNDQyB2YWx1ZSBhcmUgdGhlbiBjb21iaW5lZAorLy8gICAgdG8gY3JlYXRlIHJlYWwtd29ybGQgY2FsZW5kYXIgdGltZS4KKy8vCisvLyAgICBBY3Jvc3MgSElCIGN5Y2xlcywgdmFsdWUgc3RvcmVkIGluIEhJQiBSZWdpc3RlcnMgaXMgcmV0YWluZWQgYW5kIHNsb3cKKy8vICAgIGNsb2NrIGNvdW50ZXIgY29udGludWVzIHRvIHRpY2ssIHRoZXJlYnksIHRoaXMgYXJyYWdlbWVudCBpcyByZWxldmFudAorLy8gICAgYW5kIHZhbGlkIGFzIGxvbmcgYXMgZGV2aWNlIGhhcyBhICh0aWNrbGUpIGJhdHRlcnkgcG93ZXIuCisvLworLy8gICAgRnVydGhlciwgcHJvdmlzaW9uIGFsc28gaGFzIGJlZW4gbWFkZSB0byBzZXQgYW4gYWxhcm0uIFdoZW4gaXQgUlRDIHZhbHVlCisvLyAgICBtYXRjaGVzIHRoYXQgb2Ygc2V0IGZvciBhbGFybSwgYW4gaW50ZXJydXB0IGlzIGdlbmVyYXRlZC4KKy8vCisvLyAgICBISUIgTUVNIFJFRzAgYW5kIFJFRzEgYXJlIHJlc2VydmVkIGZvciBUSS4KKy8vCisvLyAgICBJZiBSVEMgZmVhdHVyZSBpcyBub3QgdXNlZCwgdGhlbiBISUIgUkVHMiAmIFJFRzMgYXJlIGF2YWlsYWJsZSB0byB1c2VyLgorLy8KKy8vICAgIExvd2VyIGhhbGYgb2YgUkVHMCBpcyB1c2VkIGZvciBUSSBIVyBFQ08uCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFJUQ19VNjRNU0VDX01LKHUzMlNlY3MsIHUxNk1zZWMpICgoKHVuc2lnbmVkIGxvbmcgbG9uZyl1MzJTZWNzIDw8IDEwKXxcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodTE2TXNlYyAmIDB4M0ZGKSkKKworI2RlZmluZSBSVENfU0VDU19JTl9VNjRNU0VDKHU2NE1zZWMpICAgICAoKHVuc2lnbmVkIGxvbmcpKHU2NE1zZWMgID4+ICAgMTApKQorI2RlZmluZSBSVENfTVNFQ19JTl9VNjRNU0VDKHU2NE1zZWMpICAgICAoKHVuc2lnbmVkIHNob3J0KSh1NjRNc2VjICYgMHgzRkYpKQorCisjZGVmaW5lIFJUQ19TRUNTX1UzMl9SRUdfQUREUiAgICAgICAgICAgIChISUIzUDNfQkFTRSArIEhJQjNQM19PX01FTV9ISUJfUkVHMykKKyNkZWZpbmUgUlRDX01TRUNfVTE2X1JFR19BRERSICAgICAgICAgICAgKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SRUcyKzIpCisKKyNkZWZpbmUgUlRDX1UzMlNFQ1NfUkVHICAgICAgICAgICAgICAgICAoSFdSRUcoUlRDX1NFQ1NfVTMyX1JFR19BRERSKSkKKyNkZWZpbmUgUlRDX1UxNk1TRUNfUkVHICAgICAgICAgICAgICAgICAoKih1bnNpZ25lZCBzaG9ydCopUlRDX01TRUNfVTE2X1JFR19BRERSKQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBSZWdpc3RlciBBY2Nlc3MgYW5kIFVwZGF0ZXMKKy8vCisvLyBUaWNrIG9mIFNDQyBoYXMgYSByZXNvbHV0aW9uIG9mIDMyNzY4SHosIG1lYW5pbmcgMSBzZWMgaXMgZXF1YWwgdG8gMzI3NjgKKy8vIGNsb2NrIHRpY2tzLiBJZGVhbCB3YXkgb2YgZ2V0dGluZyB0aW1lIGluIG1pbGxpc2Vjb25kIHdpbGwgaW52b2x2ZSBmbG9hdGluZworLy8gcG9pbnQgYXJpdGhtZXRpYyAoZGl2aXNpb24gYnkgMzIuNzY4KS4gVG8gYXZvaWQgdGhpcywgd2Ugc2ltcGx5IGRpdmlkZSBpdCBieQorLy8gMzIsIHdoaWNoIHdpbGwgZ2l2ZSBhIHJhbmdlIGZyb20gMCAtMTAyMyhpbnN0ZWFkIG9mIDAtOTk5KS4gVG8gdXNlIHRoaXMKKy8vIG91dHB1dCBjb3JyZWN0bHkgd2UgaGF2ZSB0byB0YWtlIGNhcmUgb2YgdGhpcyBpbmFjY3VyYWN5IGV4dGVybmFsbHkuCisvLyBmb2xsb3dpbmcgd3JhcHBlciBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IHRoZSB2YWx1ZSBmcm9tIGN5Y2xlcyB0bworLy8gbWlsbGlzZWNvbmQ6CisvLworLy8gQ1lDTEVTX1UxNk1TKGN5Y2xlcykJKChjeWNsZXMgKjEwMDApLyAxMDI0KSwKKy8vCisvLyBTaW1pbGFybHksIGJlZm9yZSBzZXR0aW5nIHRoZSB2YWx1ZSwgaXQgbXVzdCBiZSBmaXJzdCBjb252ZXJ0ZWQgKGZyb20gbXMgdG8KKy8vIGN5Y2xlcykuCisvLworLy8gVTE2TVNfQ1lDTEVTKG1zZWMpCSgobXNlYyAqMTAyNCkvMTAwMCkKKy8vCisvLyBOb3RlOiBUaGVyZSBpcyBhIHByZWNpc2lvbiBsb3NzIG9mIDEgbXMgd2l0aCB0aGUgYWJvdmUgc2NoZW1lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgU0NDX1U2NE1TRUNfR0VUKCkgICAgICAgICAgICAgICAgKFBSQ01TbG93Q2xrQ3RyR2V0KCkgPj4gNSkKKyNkZWZpbmUgU0NDX1U2NE1TRUNfTUFUQ0hfU0VUKHU2NE1zZWMpICAgKFBSQ01TbG93Q2xrQ3RyTWF0Y2hTZXQodTY0TXNlYyA8PCA1KSkKKyNkZWZpbmUgU0NDX1U2NE1TRUNfTUFUQ0hfR0VUKCkgICAgICAgICAgKFBSQ01TbG93Q2xrQ3RyTWF0Y2hHZXQoKSA+PiA1KQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gQml0OiAgMzEgaXMgdXNlZCB0byBpbmRpY2F0ZSB1c2Ugb2YgUlRDLiBJZiBzZXQgYXMgJzEnLCBSVEMgZmVhdHVyZSBpcyB1c2VkLgorLy8gQml0czogMzAgdG8gMjYgYXJlIHJlc2VydmVkLCBhdmFpbGFibGUgdG8gc29mdHdhcmUgZm9yIHVzZQorLy8gQml0czogMjUgdG8gMTYgYXJlIHVzZWQgdG8gc2F2ZSBtaWxsaXNlY29uZCBwYXJ0IG9mIFJUQyByZWZlcmVuY2UuCisvLyBCaXRzOiAxNSB0byAwIGFyZSBiZWluZyB1c2VkIGZvciBIVyBDaGFuZ2VzIC8gRUNPCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBTZXQgUlRDIFVTRSBCaXQKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3N0YXRpYyB2b2lkIFJUQ1VzZVNldCh2b2lkKQoreworICB1bnNpZ25lZCBzaG9ydCB1c1JlZ1ZhbHVlOworCisgIHVzUmVnVmFsdWUgPSBSVENfVTE2TVNFQ19SRUcgfCAgKDEgPDwgMTUpOworCisgIFV0aWxzRGVsYXkoKDgwKjIwMCkvMyk7CisKKyAgUlRDX1UxNk1TRUNfUkVHID0gdXNSZWdWYWx1ZTsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gQ2hlY2tzIGlmIFJUQy1VU0UgYml0IGlzIHNldAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorc3RhdGljIHRCb29sZWFuIElzUlRDVXNlZCh2b2lkKQoreworICB1bnNpZ25lZCBzaG9ydCB1c1JlZ1ZhbHVlOworCisgIHVzUmVnVmFsdWUgPSBSVENfVTE2TVNFQ19SRUc7CisKKyAgVXRpbHNEZWxheSgoODAqMjAwKS8zKTsKKworICByZXR1cm4gKCh1c1JlZ1ZhbHVlICYgKDEgPDwgMTUpKT8gdHJ1ZSA6IGZhbHNlKTsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gUmVhZCAxNi1iaXQgbVNlY3MKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCBSVENVMTZNU2VjUmVnUmVhZCh2b2lkKQoreworICB1bnNpZ25lZCBzaG9ydCB1c1JlZ1ZhbHVlOworCisgIHVzUmVnVmFsdWUgPSBSVENfVTE2TVNFQ19SRUc7CisKKyAgVXRpbHNEZWxheSgoODAqMjAwKS8zKTsKKworICByZXR1cm4gKHVzUmVnVmFsdWUgJiAweDNGRik7Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFdyaXRlIDE2LWJpdCBtU2VjcworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorc3RhdGljIHZvaWQgUlRDVTE2TVNlY1JlZ1dyaXRlKHVuc2lnbmVkIHNob3J0IHUxNk1zZWMpCit7CisgICB1bnNpZ25lZCBzaG9ydCB1c1JlZ1ZhbHVlOworCisgICB1c1JlZ1ZhbHVlID0gUlRDX1UxNk1TRUNfUkVHOworCisgICBVdGlsc0RlbGF5KCg4MCoyMDApLzMpOworCisgICBSVENfVTE2TVNFQ19SRUcgPSAoKHVzUmVnVmFsdWUgJiB+MHgzRkYpIHx1MTZNc2VjKTsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gUmVhZCAzMi1iaXQgU2VjcworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorc3RhdGljIHVuc2lnbmVkIGxvbmcgUlRDVTMyU2VjUmVnUmVhZCh2b2lkKQoreworICByZXR1cm4gKFBSQ01ISUJSZWdSZWFkKFJUQ19TRUNTX1UzMl9SRUdfQUREUikpOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBXcml0ZSAzMi1iaXQgU2VjcworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorc3RhdGljIHZvaWQgUlRDVTMyU2VjUmVnV3JpdGUodW5zaWduZWQgbG9uZyB1MzJNc2VjKQoreworICAgUFJDTUhJQlJlZ1dyaXRlKFJUQ19TRUNTX1UzMl9SRUdfQUREUiwgdTMyTXNlYyk7Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIE1hY3JvcworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBJU19SVENfVVNFRCgpICAgICAgICAgICAgICAgICAgIElzUlRDVXNlZCgpCisjZGVmaW5lIFJUQ19VU0VfU0VUKCkgICAgICAgICAgICAgICAgICAgUlRDVXNlU2V0KCkKKworI2RlZmluZSBSVENfVTE2TVNFQ19SRUdfUkQoKSAgICAgICAgICAgIFJUQ1UxNk1TZWNSZWdSZWFkKCkKKyNkZWZpbmUgUlRDX1UxNk1TRUNfUkVHX1dSKHUxNk1zZWMpICAgICBSVENVMTZNU2VjUmVnV3JpdGUodTE2TXNlYykKKworI2RlZmluZSBSVENfVTMyU0VDU19SRUdfUkQoKSAgICAgICAgICAgIFJUQ1UzMlNlY1JlZ1JlYWQoKQorI2RlZmluZSBSVENfVTMyU0VDU19SRUdfV1IodTMyU2VjcykgICAgIFJUQ1UzMlNlY1JlZ1dyaXRlKHUzMlNlY3MpCisKKyNkZWZpbmUgU0VMRUNUX1NDQ19VNDJCSVRTKHU2NE1zZWMpICAgICAodTY0TXNlYyAmIDB4M2ZmZmZmZmZmZmYpCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIEdsb2JhbCBQZXJpcGhlcmFsIGNsb2NrIGFuZCByZXN0IFJlZ2lzdGVycworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorc3RhdGljIGNvbnN0IFBSQ01fUGVyaXBoUmVnc190IFBSQ01fUGVyaXBoUmVnc0xpc3RbXSA9Cit7CisKKwl7QVBQU19SQ01fT19DQU1FUkFfQ0xLX0dBVElORywgICBBUFBTX1JDTV9PX0NBTUVSQV9TT0ZUX1JFU0VUICAgfSwKKwl7QVBQU19SQ01fT19NQ0FTUF9DTEtfR0FUSU5HLCAgICBBUFBTX1JDTV9PX01DQVNQX1NPRlRfUkVTRVQgICAgfSwKKwl7QVBQU19SQ01fT19NTUNIU19DTEtfR0FUSU5HLCAgICBBUFBTX1JDTV9PX01NQ0hTX1NPRlRfUkVTRVQgICAgfSwKKwl7QVBQU19SQ01fT19NQ1NQSV9BMV9DTEtfR0FUSU5HLCBBUFBTX1JDTV9PX01DU1BJX0ExX1NPRlRfUkVTRVQgfSwKKwl7QVBQU19SQ01fT19NQ1NQSV9BMl9DTEtfR0FUSU5HLCBBUFBTX1JDTV9PX01DU1BJX0EyX1NPRlRfUkVTRVQgfSwKKwl7QVBQU19SQ01fT19VRE1BX0FfQ0xLX0dBVElORywgICBBUFBTX1JDTV9PX1VETUFfQV9TT0ZUX1JFU0VUICAgfSwKKwl7QVBQU19SQ01fT19HUElPX0FfQ0xLX0dBVElORywgICBBUFBTX1JDTV9PX0dQSU9fQV9TT0ZUX1JFU0VUICAgfSwKKwl7QVBQU19SQ01fT19HUElPX0JfQ0xLX0dBVElORywgICBBUFBTX1JDTV9PX0dQSU9fQl9TT0ZUX1JFU0VUICAgfSwKKwl7QVBQU19SQ01fT19HUElPX0NfQ0xLX0dBVElORywgICBBUFBTX1JDTV9PX0dQSU9fQ19TT0ZUX1JFU0VUICAgfSwKKwl7QVBQU19SQ01fT19HUElPX0RfQ0xLX0dBVElORywgICBBUFBTX1JDTV9PX0dQSU9fRF9TT0ZUX1JFU0VUICAgfSwKKwl7QVBQU19SQ01fT19HUElPX0VfQ0xLX0dBVElORywgICBBUFBTX1JDTV9PX0dQSU9fRV9TT0ZUX1JFU0VUICAgfSwKKwl7QVBQU19SQ01fT19XRE9HX0FfQ0xLX0dBVElORywgICBBUFBTX1JDTV9PX1dET0dfQV9TT0ZUX1JFU0VUICAgfSwKKwl7QVBQU19SQ01fT19VQVJUX0EwX0NMS19HQVRJTkcsICBBUFBTX1JDTV9PX1VBUlRfQTBfU09GVF9SRVNFVCAgfSwKKwl7QVBQU19SQ01fT19VQVJUX0ExX0NMS19HQVRJTkcsICBBUFBTX1JDTV9PX1VBUlRfQTFfU09GVF9SRVNFVCAgfSwKKwl7QVBQU19SQ01fT19HUFRfQTBfQ0xLX0dBVElORyAsICBBUFBTX1JDTV9PX0dQVF9BMF9TT0ZUX1JFU0VUICAgfSwKKwl7QVBQU19SQ01fT19HUFRfQTFfQ0xLX0dBVElORywgICBBUFBTX1JDTV9PX0dQVF9BMV9TT0ZUX1JFU0VUICAgfSwKKwl7QVBQU19SQ01fT19HUFRfQTJfQ0xLX0dBVElORywgICBBUFBTX1JDTV9PX0dQVF9BMl9TT0ZUX1JFU0VUICAgfSwKKwl7QVBQU19SQ01fT19HUFRfQTNfQ0xLX0dBVElORywgICBBUFBTX1JDTV9PX0dQVF9BM19TT0ZUX1JFU0VUICAgfSwKKwl7QVBQU19SQ01fT19DUllQVE9fQ0xLX0dBVElORywgICBBUFBTX1JDTV9PX0NSWVBUT19TT0ZUX1JFU0VUICAgfSwKKwl7QVBQU19SQ01fT19NQ1NQSV9TMF9DTEtfR0FUSU5HLCBBUFBTX1JDTV9PX01DU1BJX1MwX1NPRlRfUkVTRVQgfSwKKwl7QVBQU19SQ01fT19JMkNfQ0xLX0dBVElORywgICAgICBBUFBTX1JDTV9PX0kyQ19TT0ZUX1JFU0VUICAgICAgfQorCit9OworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIFBlcmZvcm1zIGEgc29mdHdhcmUgcmVzZXQgb2YgYSBNQ1UgYW5kIGFzc29jaWF0ZWQgcGVyaXBoZXJhbHMKKy8vIQorLy8hIFxwYXJhbSBiSW5jbHVkZVN1YnN5c3RlbSBpcyBcYiB0cnVlIHRvIHJlc2V0IGFzc29jaWF0ZWQgcGVyaXBoZXJhbHMuCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgc29mdHdhcmUgcmVzZXQgb2YgYSBNQ1UgYW5kIGFzc29jaWF0ZWQgcGVyaXBoZXJhbHMuCisvLyEgVG8gcmVzZXQgdGhlIGFzc29jaWF0ZWQgcGVyaXBoZXJhbCwgdGhlIHBhcmFtZXRlciBcZSBiSW5jbHVkZVN1YnN5c3RlbQorLy8hIHNob3VsZCBiZSBzZXQgdG8gXGIgdHJ1ZS4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkIFBSQ01NQ1VSZXNldCh0Qm9vbGVhbiBiSW5jbHVkZVN1YnN5c3RlbSkKK3sKKyAgaWYoYkluY2x1ZGVTdWJzeXN0ZW0pCisgIHsKKyAgICAvLworICAgIC8vIFJlc2V0IEFwcHMgcHJvY2Vzc29yIGFuZCBhc3NvY2lhdGVkIHBlcmlwaGVyYWwKKyAgICAvLworICAgIEhXUkVHKEdQUkNNX0JBU0UrIEdQUkNNX09fQVBQU19TT0ZUX1JFU0VUKSA9IDB4MjsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvLworICAgIC8vIFJlc2V0IEFwcHMgcHJvY2Vzc29yIG9ubHkKKyAgICAvLworICAgIEhXUkVHKEdQUkNNX0JBU0UrIEdQUkNNX09fQVBQU19TT0ZUX1JFU0VUKSA9IDB4MTsKKyAgfQorCisgIC8vCisgIC8vIFdhaXQgZm9yIHN5c3RlbSB0byBlbnRlciBoaWJlcm5hdGUKKyAgLy8KKyAgX19hc20oIiAgICB3ZmlcbiIpOworCisgIC8vCisgIC8vIEluZmluaXRlIGxvb3AKKyAgLy8KKyAgd2hpbGUoMSkKKyAgeworCisgIH0KK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBHZXRzIHRoZSByZWFzb24gZm9yIGEgcmVzZXQuCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlYXNvbihzKSBmb3IgYSByZXNldC4gVGhlIHJlc2V0IHJlYXNvbiBhcmU6LQorLy8hIC1cYiBQUkNNX1BPV0VSX09OICAtIERldmljZSBpcyBwb3dlcmluZyB1cC4KKy8vISAtXGIgUFJDTV9MUERTX0VYSVQgLSBEZXZpY2UgaXMgZXhpdGluZyBmcm9tIExQRFMuCisvLyEgLVxiIFBSQ01fQ09SRV9SRVNFVCAtIERldmljZSBpcyBleGl0aW5nIHNvZnQgY29yZSBvbmx5IHJlc2V0CisvLyEgLVxiIFBSQ01fTUNVX1JFU0VUIC0gRGV2aWNlIGlzIGV4aXRpbmcgc29mdCBzdWJzeXN0ZW0gcmVzZXQuCisvLyEgLVxiIFBSQ01fV0RUX1JFU0VUIC0gRGV2aWNlIHdhcyByZXNldCBieSB3YXRjaGRvZy4KKy8vISAtXGIgUFJDTV9TT0NfUkVTRVQgLSBEZXZpY2UgaXMgZXh0aW5nIFNPQyByZXNldC4KKy8vISAtXGIgUFJDTV9ISUJfRVhJVCAtIERldmljZSBpcyBleGl0aW5nIGhpYmVybmF0ZS4KKy8vIQorLy8hIFxyZXR1cm4gUmV0dXJucyBvbmUgb2YgdGhlIGNhdXNlIGRlZmluZWQgYWJvdmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordW5zaWduZWQgbG9uZyBQUkNNU3lzUmVzZXRDYXVzZUdldCgpCit7CisgIHVuc2lnbmVkIGxvbmcgdWxXYWtldXBTdGF0dXM7CisKKyAgLy8KKyAgLy8gUmVhZCB0aGUgUmVzZXQgc3RhdHVzCisgIC8vCisgIHVsV2FrZXVwU3RhdHVzID0gKEhXUkVHKEdQUkNNX0JBU0UrIEdQUkNNX09fQVBQU19SRVNFVF9DQVVTRSkgJiAweEZGKTsKKworICAvLworICAvLyBGb3IgaGliZXJuYXRlIGRvIGFkZGl0aW9uYWwgY2hlY2suCisgIC8vCisgIGlmKHVsV2FrZXVwU3RhdHVzID09IFBSQ01fUE9XRVJfT04pCisgIHsKKyAgICBpZihQUkNNSElCUmVnUmVhZChISUIzUDNfQkFTRSArIEhJQjNQM19PX01FTV9ISUJfV0FLRV9TVEFUVVMpICYgMHgxKQorICAgIHsKKyAgICAgIHVsV2FrZXVwU3RhdHVzID0gUFJDTV9ISUJfRVhJVDsKKworICAgICAgaWYoIChIV1JFRyhPQ1BfU0hBUkVEX0JBU0UgKyBPQ1BfU0hBUkVEX09fU1BBUkVfUkVHXzgpICYgKDB4MDAwMDAyODApKSA9PSAweDAwMDAwMjgwICApCisgICAgICB7CisgICAgICAgIHVsV2FrZXVwU3RhdHVzID0gUFJDTV9XRFRfUkVTRVQ7CisgICAgICB9CisgICAgfQorICB9CisgIGVsc2UgaWYoKHVsV2FrZXVwU3RhdHVzID09IFBSQ01fTFBEU19FWElUKSAmJgorICAgICAgICAgICEoSFdSRUcoR1BSQ01fQkFTRSArIEdQUkNNX09fR1BSQ01fRUZVU0VfUkVBRF9SRUcxKSAmICgxIDw8MikpICkKKyAgeworICAgIGlmKEhXUkVHKE9DUF9TSEFSRURfQkFTRSArIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfOCkgJiAoMHgxPDw4KSkKKyAgICB7CisgICAgICB1bFdha2V1cFN0YXR1cyA9IFBSQ01fUE9XRVJfT047CisgICAgfQorICB9CisKKyAgLy8KKyAgLy8gUmV0dXJuIHN0YXR1cy4KKyAgLy8KKyAgcmV0dXJuIHVsV2FrZXVwU3RhdHVzOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIEVuYWJsZSBjbG9jayhzKSB0byBwZXJpcGhlcmFsLgorLy8hCisvLyEgXHBhcmFtIHVsUGVyaXBoZXJhbCBpcyBvbmUgb2YgdGhlIHZhbGlkIHBlcmlwaGVyYWxzCisvLyEgXHBhcmFtIHVsQ2xrRmxhZ3MgYXJlIGJpdG1hc2sgb2YgY2xvY2socykgdG8gYmUgZW5hYmxlZC4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gZW5hYmxlcyB0aGUgY2xvY2sgZm9yIHRoZSBzcGVjaWZpZWQgcGVyaXBoZXJhbC4gUGVyaXBoZXJhbHMKKy8vISBhcmUgYnkgZGVmYXVsdCBjbG9jayBnYXRlZCAoZGlzYWJsZWQpIGFuZCBnZW5lcmF0ZXMgYSBidXMgZmF1bHQgaWYKKy8vISBhY2Nlc3NlZC4KKy8vIQorLy8hIFRoZSBwYXJhbWV0ZXIgXGUgdWxDbGtGbGFncyBjYW4gYmUgbG9naWNhbCBPUiBvZiB0aGUgZm9sbG93aW5nOgorLy8hIC1cYiBQUkNNX1JVTl9NT0RFX0NMSyAtIFVuZ2F0ZXMgY2xvY2sgdG8gdGhlIHBlcmlwaGVyYWwKKy8vISAtXGIgUFJDTV9TTFBfTU9ERV9DTEsgLSBLZWVwcyB0aGUgY2xvY2tzIHVuZ2F0ZWQgaW4gc2xlZXAuCisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZAorUFJDTVBlcmlwaGVyYWxDbGtFbmFibGUodW5zaWduZWQgbG9uZyB1bFBlcmlwaGVyYWwsIHVuc2lnbmVkIGxvbmcgdWxDbGtGbGFncykKK3sKKyAgLy8KKyAgLy8gRW5hYmxlIHRoZSBzcGVjaWZpZWQgcGVyaXBoZXJhbCBjbG9ja3MsIE5vdGhpbmcgdG8gYmUgZG9uZSBmb3IgUFJDTV9BREMKKyAgLy8gYXMgaXQgaXMgYSBkdW1teSBkZWZpbmUgZm9yIHBpbm11eCB1dGlsaXR5IGNvZGUgZ2VuZXJhdGlvbgorICAvLworICBpZih1bFBlcmlwaGVyYWwgIT0gUFJDTV9BREMpCisgIHsKKyAgICBIV1JFRyhBUkNNX0JBU0UgKyBQUkNNX1BlcmlwaFJlZ3NMaXN0W3VsUGVyaXBoZXJhbF0udWxDbGtSZWcpIHw9IHVsQ2xrRmxhZ3M7CisgIH0KKworICAvLworICAvLyBDaGVja2luZyBST00gVmVyc2lvbiBsZXNzIHRoYW4gMi54LnguCisgIC8vIE9ubHkgZm9yIGRyaXZlcmxpYiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CisgIC8vCisgIGlmKCAoSFdSRUcoMHgwMDAwMDQwMCkgJiAweEZGRkYpIDwgMiApCisgIHsKKyAgICAvLworICAgIC8vIFNldCB0aGUgZGVmYXVsdCBjbG9jayBmb3IgY2FtZXJhCisgICAgLy8KKyAgICBpZih1bFBlcmlwaGVyYWwgPT0gUFJDTV9DQU1FUkEpCisgICAgeworICAgICAgSFdSRUcoQVJDTV9CQVNFICsgQVBQU19SQ01fT19DQU1FUkFfQ0xLX0dFTikgPSAweDA0MDQ7CisgICAgfQorICB9Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgRGlzYWJsZXMgY2xvY2socykgdG8gcGVyaXBoZXJhbC4KKy8vIQorLy8hIFxwYXJhbSB1bFBlcmlwaGVyYWwgaXMgb25lIG9mIHRoZSB2YWxpZCBwZXJpcGhlcmFscworLy8hIFxwYXJhbSB1bENsa0ZsYWdzIGFyZSBiaXRtYXNrIG9mIGNsb2NrKHMpIHRvIGJlIGVuYWJsZWQuCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIGRpc2FibGUgdGhlIGNsb2NrIGZvciB0aGUgc3BlY2lmaWVkIHBlcmlwaGVyYWwuIFBlcmlwaGVyYWxzCisvLyEgYXJlIGJ5IGRlZmF1bHQgY2xvY2sgZ2F0ZWQgKGRpc2FibGVkKSBhbmQgZ2VuZXJhdGVkIGEgYnVzIGZhdWx0IGlmCisvLyEgYWNjZXNzZWQuCisvLyEKKy8vISBUaGUgcGFyYW1ldGVyIFxlIHVsQ2xrRmxhZ3MgY2FuIGJlIGxvZ2ljYWwgT1IgYml0IGZpZWxkcyBhcyBkZWZpbmVkIGluCisvLyEgUFJDTUVuYWJsZVBlcmlwaGVyYWwoKS4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkCitQUkNNUGVyaXBoZXJhbENsa0Rpc2FibGUodW5zaWduZWQgbG9uZyB1bFBlcmlwaGVyYWwsIHVuc2lnbmVkIGxvbmcgdWxDbGtGbGFncykKK3sKKyAgLy8KKyAgLy8gRGlzYWJsZSB0aGUgc3BlY2lmaWVkIHBlcmlwaGVyYWwgY2xvY2tzCisgIC8vCisgIEhXUkVHKEFSQ01fQkFTRSArIFBSQ01fUGVyaXBoUmVnc0xpc3RbdWxQZXJpcGhlcmFsXS51bENsa1JlZykgJj0gfnVsQ2xrRmxhZ3M7Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgR2V0cyB0aGUgaW5wdXQgY2xvY2sgZm9yIHRoZSBzcGVjaWZpZWQgcGVyaXBoZXJhbC4KKy8vIQorLy8hIFxwYXJhbSB1bFBlcmlwaGVyYWwgaXMgb25lIG9mIHRoZSB2YWxpZCBwZXJpcGhlcmFscy4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gZ2V0cyB0aGUgaW5wdXQgY2xvY2sgZm9yIHRoZSBzcGVjaWZpZWQgcGVyaXBoZXJhbC4KKy8vIQorLy8hIFRoZSBwYXJhbWV0ZXIgXGUgdWxQZXJpcGhlcmFsIGhhcyB0aGUgc2FtZSBkZWZpbml0aW9uIGFzIHRoYXQgaW4KKy8vISBQUkNNUGVyaXBoZXJhbENsa0VuYWJsZSgpOworLy8hCisvLyEgXHJldHVybiBSZXR1cm5zIGlucHV0IGNsb2NrIGZyZXF1ZW5jeSBmb3Igc3BlY2lmaWVkIHBlcmlwaGVyYWwuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordW5zaWduZWQgbG9uZworUFJDTVBlcmlwaGVyYWxDbG9ja0dldCh1bnNpZ25lZCBsb25nIHVsUGVyaXBoZXJhbCkKK3sKKyAgdW5zaWduZWQgbG9uZyB1bENsb2NrRnJlcTsKKyAgdW5zaWduZWQgbG9uZyB1bEhpUHVsc2VEaXY7CisgIHVuc2lnbmVkIGxvbmcgdWxMb1B1bHNlRGl2OworCisgIC8vCisgIC8vIEdldCB0aGUgY2xvY2sgYmFzZWQgb24gc3BlY2lmaWVkIHBlcmlwaGVyYWwuCisgIC8vCisgIGlmKCgodWxQZXJpcGhlcmFsID09IFBSQ01fU1NQSSkgfCAodWxQZXJpcGhlcmFsID09IFBSQ01fTFNQSSkKKyAgICAgICAgICAgIHwgKHVsUGVyaXBoZXJhbCA9PSBQUkNNX0dTUEkpKSkKKyAgeworICAgIHJldHVybiBYVEFMX0NMSzsKKyAgfQorICBlbHNlIGlmKHVsUGVyaXBoZXJhbCA9PSBQUkNNX0NBTUVSQSkKKyAgeworICAgIHVsSGlQdWxzZURpdiA9ICgoSFdSRUcoQVJDTV9CQVNFICsgQVBQU19SQ01fT19DQU1FUkFfQ0xLX0dFTikgPj4gOCkgJiAweDA3KTsKKyAgICB1bExvUHVsc2VEaXYgPSAoSFdSRUcoQVJDTV9CQVNFICsgQVBQU19SQ01fT19DQU1FUkFfQ0xLX0dFTikmIDB4RkYpOworICB9CisgIGVsc2UgaWYodWxQZXJpcGhlcmFsID09IFBSQ01fU0RIT1NUKQorICB7CisgICAgdWxIaVB1bHNlRGl2ID0gKChIV1JFRyhBUkNNX0JBU0UgKyBBUFBTX1JDTV9PX01NQ0hTX0NMS19HRU4pID4+IDgpICYgMHgwNyk7CisgICAgdWxMb1B1bHNlRGl2ID0gKEhXUkVHKEFSQ01fQkFTRSArIEFQUFNfUkNNX09fTU1DSFNfQ0xLX0dFTikmIDB4RkYpOworICB9CisgIGVsc2UKKyAgeworICAgIHJldHVybiBTWVNfQ0xLOworICB9CisKKyAgLy8KKyAgLy8gQ29tcHV0ZSB0aGUgY2xvY2sgZnJlcS4gZnJvbSB0aGUgZGl2aWRlciB2YWx1ZQorICAvLworICB1bENsb2NrRnJlcSA9ICgyNDAwMDAwMDAvKCh1bEhpUHVsc2VEaXYgKyAxKSArICh1bExvUHVsc2VEaXYgKyAxKSkpOworCisgIC8vCisgIC8vIFJldHVybiB0aGUgY2xvY2sgcmF0ZS4KKyAgLy8KKyAgcmV0dXJuIHVsQ2xvY2tGcmVxOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIFBlcmZvcm1zIGEgc29mdHdhcmUgcmVzZXQgb2YgYSBwZXJpcGhlcmFsLgorLy8hCisvLyEgXHBhcmFtIHVsUGVyaXBoZXJhbCBpcyBvbmUgb2YgdGhlIHZhbGlkIHBlcmlwaGVyYWwuCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIGRvZXMgc29mdCByZXNldCBvZiB0aGUgc3BlY2lmaWVkIHBlcmlwaGVyYWwKKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkCitQUkNNUGVyaXBoZXJhbFJlc2V0KHVuc2lnbmVkIGxvbmcgdWxQZXJpcGhlcmFsKQoreworICB2b2xhdGlsZSB1bnNpZ25lZCBsb25nIHVsRGVsYXk7CisKKyAgaWYoIHVsUGVyaXBoZXJhbCAhPSBQUkNNX0RUSEUpCisgIHsKKyAgICAvLworICAgIC8vIEFzc2VydCB0aGUgcmVzZXQKKyAgICAvLworICAgIEhXUkVHKEFSQ01fQkFTRSArIFBSQ01fUGVyaXBoUmVnc0xpc3RbdWxQZXJpcGhlcmFsXS51bFJzdFJlZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHw9IFBSQ01fU09GVF9SRVNFVDsKKyAgICAvLworICAgIC8vIERlbGF5IGEgbGl0dGxlIGJpdC4KKyAgICAvLworICAgIGZvcih1bERlbGF5ID0gMDsgdWxEZWxheSA8IDE2OyB1bERlbGF5KyspCisgICAgeworICAgIH0KKworICAgIC8vCisgICAgLy8gRGVhc3NlcnQgdGhlIHJlc2V0CisgICAgLy8KKyAgICBIV1JFRyhBUkNNX0JBU0UrUFJDTV9QZXJpcGhSZWdzTGlzdFt1bFBlcmlwaGVyYWxdLnVsUnN0UmVnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICY9IH5QUkNNX1NPRlRfUkVTRVQ7CisgIH0KK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBEZXRlcm1pbmVzIGlmIGEgcGVyaXBoZXJhbCBpcyByZWFkeS4KKy8vIQorLy8hIFxwYXJhbSB1bFBlcmlwaGVyYWwgaXMgb25lIG9mIHRoZSB2YWxpZCBtb2R1bGVzCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgaWYgYSBwYXJ0aWN1bGFyIHBlcmlwaGVyYWwgaXMgcmVhZHkgdG8gYmUKKy8vISBhY2Nlc3NlZC4gVGhlIHBlcmlwaGVyYWwgbWF5IGJlIGluIGEgbm9uLXJlYWR5IHN0YXRlIGlmIGl0IGlzIG5vdCBlbmFibGVkLAorLy8hIGlzIGJlaW5nIGhlbGQgaW4gcmVzZXQsIG9yIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlY29taW5nIHJlYWR5IGFmdGVyIGJlaW5nCisvLyEgZW5hYmxlZCBvciB0YWtlbiBvdXQgb2YgcmVzZXQuCisvLyEKKy8vISBccmV0dXJuIFJldHVybnMgXGIgdHJ1ZSBpZiB0aGUgIHBlcmlwaGVyYWwgaXMgcmVhZHksIFxiIGZhbHNlIG90aGVyd2lzZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit0Qm9vbGVhbgorUFJDTVBlcmlwaGVyYWxTdGF0dXNHZXQodW5zaWduZWQgbG9uZyB1bFBlcmlwaGVyYWwpCit7CisgIHVuc2lnbmVkIGxvbmcgUmVhZHlCaXQ7CisKKyAgLy8KKyAgLy8gUmVhZCB0aGUgcmVhZHkgYml0IHN0YXR1cworICAvLworICBSZWFkeUJpdCA9IEhXUkVHKEFSQ01fQkFTRSArIFBSQ01fUGVyaXBoUmVnc0xpc3RbdWxQZXJpcGhlcmFsXS51bFJzdFJlZyk7CisgIFJlYWR5Qml0ID0gUmVhZHlCaXQgJiBQUkNNX0VOQUJMRV9TVEFUVVM7CisKKyAgaWYgKFJlYWR5Qml0KQorICB7CisgICAgLy8KKyAgICAvLyBNb2R1bGUgaXMgcmVhZHkKKyAgICAvLworICAgIHJldHVybih0cnVlKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvLworICAgIC8vIE1vZHVsZSBpcyBub3QgcmVhZHkKKyAgICAvLworICAgIHJldHVybihmYWxzZSk7CisgIH0KK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBDb25maWd1cmUgSTJTIGZyYWNhY3Rpb25hbCBkaXZpZGVyCisvLyEKKy8vISBccGFyYW0gdWxJMkNDbGtGcmVxIGlzIHRoZSByZXF1aXJlZCBpbnB1dCBjbG9jayBmb3IgTWNBUFMgbW9kdWxlCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIGNvbmZpZ3VyZXMgSTJTIGZyYWN0aW9uYWwgZGl2aWRlci4gQnkgZGVmYXVsdCB0aGlzCisvLyEgZGl2aWRlciBpcyBzZXQgdG8gb3V0cHV0IDI0IE1oeiBjbG9jayB0byBJMlMgbW9kdWxlLgorLy8hCisvLyEgVGhlIG1pbmltdW0gZnJlcXVlbmN5IHRoYXQgY2FuIGJlIG9idGFpbmVkIGJ5IGNvbmZpZ3VyaW5nIHRoaXMgZGl2aWRlciBpcworLy8hCisvLyEgKDI0MDAwMEtIei8xMDIzLjk5KSA9ICAyMzQuMzc3IEtIegorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQKK1BSQ01JMlNDbG9ja0ZyZXFTZXQodW5zaWduZWQgbG9uZyB1bEkyQ0Nsa0ZyZXEpCit7CisgIHVuc2lnbmVkIGxvbmcgbG9uZyB1bGxEaXY7CisgIHVuc2lnbmVkIHNob3J0IHVzSW50ZWdlcjsKKyAgdW5zaWduZWQgc2hvcnQgdXNGcmFjOworCisgIHVsbERpdiA9ICgoKHVuc2lnbmVkIGxvbmcgbG9uZykyNDAwMDAwMDAgKiA2NTUzNikvdWxJMkNDbGtGcmVxKTsKKworICB1c0ludGVnZXIgPSAodWxsRGl2LzY1NTM2KTsKKyAgdXNGcmFjICAgID0gKHVsbERpdiU2NTUzNik7CisKKyAgSFdSRUcoQVJDTV9CQVNFICsgQVBQU19SQ01fT19NQ0FTUF9GUkFDX0NMS19DT05GSUcwKSA9CisgICAgKCh1c0ludGVnZXIgJiAweDNGRikgPDwgMTYgfCB1c0ZyYWMpOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIFNldHMgdGhlIExQRFMgZXhpdCBQQyBhbmQgU1AgcmVzdG9yZSB2bGF1ZXMuCisvLyEKKy8vISBccGFyYW0gdWxTdGFja1B0ciBpcyB0aGUgU1AgcmVzdG9yZSB2YWx1ZS4KKy8vISBccGFyYW0gdWxQcm9nQ250ciBpcyB0aGUgUEMgcmVzdG9yZSB2YWx1ZQorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBMUERTIGV4aXQgUEMgYW5kIFNQIHJlc3RvcmUgdmxhdWVzLiBTZXR0aW5nCisvLyEgXGUgdWxQcm9nQ250ciB0byBhIG5vbi16ZXJvIHZhbHVlLCBmb3JjZXMgYm9vdGxvYWRlciB0byBqdW1wIHRvIHRoYXQKKy8vISBhZGRyZXNzIHdpdGggU3RhY2sgUG9pbnRlciBpbml0aWFsaXplZCB0byBcZSB1bFN0YWNrUHRyIG9uIExQRFMgZXhpdCwKKy8vISBvdGhlcndpc2UgdGhlIGFwcGxpY2F0aW9uJ3MgdmVjdG9yIHRhYmxlIGVudHJpZXMgYXJlIHVzZWQuCisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZAorUFJDTUxQRFNSZXN0b3JlSW5mb1NldCh1bnNpZ25lZCBsb25nIHVsU3RhY2tQdHIsIHVuc2lnbmVkIGxvbmcgdWxQcm9nQ250cikKK3sKKyAgLy8KKyAgLy8gUk9NIFZlcnNpb24gMi54Lnggb3IgZ3JlYXRlcgorICAvLworICBpZiggKEhXUkVHKDB4MDAwMDA0MDApICYgMHhGRkZGKSA+PSAyICkKKyAgeworICAgIC8vCisgICAgLy8gU2V0IFRoZSBTUCBWYWx1ZQorICAgIC8vCisgICAgSFdSRUcoMHg0NDAyRTE2MCkgPSB1bFN0YWNrUHRyOworCisgICAgLy8KKyAgICAvLyBTZXQgVGhlIFBDIFZhbHVlCisgICAgLy8KKyAgICBIV1JFRygweDQ0MDJFMTk4KSA9IHVsUHJvZ0NudHI7CisKKyAgfQorICBlbHNlCisgIHsKKyAgICAvLworICAgIC8vIFNldCBUaGUgU1AgVmFsdWUKKyAgICAvLworICAgIEhXUkVHKDB4NDQwMkUxOEMpID0gdWxTdGFja1B0cjsKKworICAgIC8vCisgICAgLy8gU2V0IFRoZSBQQyBWYWx1ZQorICAgIC8vCisgICAgSFdSRUcoMHg0NDAyRTE5MCkgPSB1bFByb2dDbnRyOworICB9Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgUHV0cyB0aGUgc3lzdGVtIGludG8gTG93IFBvd2VyIERlZWwgU2xlZXAgKExQRFMpIHBvd2VyIG1vZGUuCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIHB1dHMgdGhlIHN5c3RlbSBpbnRvIExvdyBQb3dlciBEZWVsIFNsZWVwIChMUERTKSBwb3dlciBtb2RlLgorLy8hIEEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uIG5ldmVyIHJldHVybnMgYW5kIHRoZSBleGVjdXRpb24gc3RhcnRzIGZyb20gUmVzZXQuCisvLyEgXHNhIFBSQ01MUERTUmVzdG9yZUluZm9TZXQoKS4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vIQorLy8hIFxub3RlICBFeHRlcm5hbCBkZWJ1Z2dlciB3aWxsIGFsd2F5cyBkaXNjb25uZWN0IHdoZW5ldmVyIHRoZSBzeXN0ZW0KKy8vISAgZW50ZXJzIExQRFMgYW5kIGRlYnVnIGludGVyZmFjZSBpcyBzaHV0ZG93biB1bnRpbCBuZXh0IFBPUiByZXNldC4gSW4gb3JkZXIKKy8vISAgdG8gYXZvaWQgdGhpcyBhbmQgYWxsb3cgZm9yIGNvbm5lY3RpbmcgYmFjayB0aGUgZGVidWdnZXIgYWZ0ZXIgd2FraW5nIHVwCisvLyEgIGZyb20gTFBEUyBcc2EgUFJDTUxQRFNFbnRlcktlZXBEZWJ1Z0lmKCkuCisvLyEKKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkCitQUkNNTFBEU0VudGVyKCkKK3sKKyAgdW5zaWduZWQgbG9uZyB1bENoaXBJZDsKKworICAvLworICAvLyBSZWFkIHRoZSBDaGlwIElECisgIC8vCisgIHVsQ2hpcElkID0gKChIV1JFRyhHUFJDTV9CQVNFICsgR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzIpID4+IDE2KSAmIDB4MUYpOworCisgIC8vCisgIC8vIENoZWNrIGlmIGZsYXNoIGV4aXN0cworICAvLworICBpZiggKDB4MTEgPT0gdWxDaGlwSWQpIHx8ICgweDE5ID09IHVsQ2hpcElkKSkKKyAgeworCisgICAgLy8KKyAgICAvLyBEaXNhYmxlIHRoZSBmbGFzaAorICAgIC8vCisgICAgRmxhc2hEaXNhYmxlKCk7CisgIH0KKworI2lmbmRlZiBLRUVQX1RFU1RQRF9BTElWRQorCisgIC8vCisgIC8vIERpc2FibGUgVGVzdFBECisgIC8vCisgIEhXUkVHKDB4NDQwMkUxNjgpIHw9ICgxPDw5KTsKKyNlbmRpZgorCisgIC8vCisgIC8vIFNldCBiYW5kZ2FwIGR1dHkgY3ljbGUgdG8gMQorICAvLworICBIV1JFRyhISUIxUDJfQkFTRSArIEhJQjFQMl9PX0JHQVBfRFVUWV9DWUNMSU5HX0VYSVRfQ0ZHKSA9IDB4MTsKKworICAvLworICAvLyBSZXF1ZXN0IExQRFMKKyAgLy8KKyAgSFdSRUcoQVJDTV9CQVNFICsgQVBQU19SQ01fT19BUFBTX0xQRFNfUkVRKQorICAgICAgICAgID0gQVBQU19SQ01fQVBQU19MUERTX1JFUV9BUFBTX0xQRFNfUkVROworCisgIC8vCisgIC8vIFdhaXQgZm9yIHN5c3RlbSB0byBlbnRlciBMUERTCisgIC8vCisgIF9fYXNtKCIgICAgd2ZpXG4iKTsKKworICAvLworICAvLyBJbmZpbml0ZSBsb29wCisgIC8vCisgIHdoaWxlKDEpCisgIHsKKworICB9CisKK30KKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIFB1dHMgdGhlIHN5c3RlbSBpbnRvIExvdyBQb3dlciBEZWVsIFNsZWVwIChMUERTKSBwb3dlciBtb2RlIGtlZXBpbmcKKy8vISBkZWJ1ZyBpbnRlcmZhY2UgYWxpdmUuCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIHB1dHMgdGhlIHN5c3RlbSBpbnRvIExvdyBQb3dlciBEZWVsIFNsZWVwIChMUERTKSBwb3dlciBtb2RlCisvLyEga2VlcGluZyBkZWJ1ZyBpbnRlcmZhY2UgYWxpdmUuIEEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uIG5ldmVyIHJldHVybnMgYW5kIHRoZQorLy8hIGV4ZWN1dGlvbiBzdGFydHMgZnJvbSBSZXNldCBcc2EgUFJDTUxQRFNSZXN0b3JlSW5mb1NldCgpLgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8hCisvLyEgXG5vdGUgRXh0ZXJuYWwgZGVidWdnZXIgd2lsbCBhbHdheXMgZGlzY29ubmVjdCB3aGVuZXZlciB0aGUgc3lzdGVtCisvLyEgIGVudGVycyBMUERTLCB1c2luZyB0aGlzIEFQSSB3aWxsIGFsbG93IGNvbm5lY3RpbmcgYmFjayB0aGUgZGVidWdnZXIgYWZ0ZXIKKy8vISAgd2FraW5nIHVwIGZyb20gTFBEUy4gVGhpcyBBUEkgaXMgcmVjb21tZW5kZWQgZm9yIGRldmVsb3BtZW50IHB1cnBvc2VzCisvLyEgIG9ubHkgYXMgaXQgYWRkcyB0byB0aGUgY3VycmVudCBjb25zdW1wdGlvbiBvZiB0aGUgc3lzdGVtLgorLy8hCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZAorUFJDTUxQRFNFbnRlcktlZXBEZWJ1Z0lmKCkKK3sKKyAgdW5zaWduZWQgbG9uZyB1bENoaXBJZDsKKworICAvLworICAvLyBSZWFkIHRoZSBDaGlwIElECisgIC8vCisgIHVsQ2hpcElkID0gKChIV1JFRyhHUFJDTV9CQVNFICsgR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzIpID4+IDE2KSAmIDB4MUYpOworCisgIC8vCisgIC8vIENoZWNrIGlmIGZsYXNoIGV4aXN0cworICAvLworICBpZiggKDB4MTEgPT0gdWxDaGlwSWQpIHx8ICgweDE5ID09IHVsQ2hpcElkKSkKKyAgeworCisgICAgLy8KKyAgICAvLyBEaXNhYmxlIHRoZSBmbGFzaAorICAgIC8vCisgICAgRmxhc2hEaXNhYmxlKCk7CisgIH0KKworICAvLworICAvLyBTZXQgYmFuZGdhcCBkdXR5IGN5Y2xlIHRvIDEKKyAgLy8KKyAgSFdSRUcoSElCMVAyX0JBU0UgKyBISUIxUDJfT19CR0FQX0RVVFlfQ1lDTElOR19FWElUX0NGRykgPSAweDE7CisKKyAgLy8KKyAgLy8gUmVxdWVzdCBMUERTCisgIC8vCisgIEhXUkVHKEFSQ01fQkFTRSArIEFQUFNfUkNNX09fQVBQU19MUERTX1JFUSkKKyAgICAgICAgICA9IEFQUFNfUkNNX0FQUFNfTFBEU19SRVFfQVBQU19MUERTX1JFUTsKKworICAvLworICAvLyBXYWl0IGZvciBzeXN0ZW0gdG8gZW50ZXIgTFBEUworICAvLworICBfX2FzbSgiICAgIHdmaVxuIik7CisKKyAgLy8KKyAgLy8gSW5maW5pdGUgbG9vcAorICAvLworICB3aGlsZSgxKQorICB7CisKKyAgfQorCit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgRW5hYmxlIHRoZSBpbmRpdmlkdWFsIExQRFMgd2FrZXVwIHNvdXJjZShzKS4KKy8vIQorLy8hIFxwYXJhbSB1bExwZHNXYWtldXBTcmMgaXMgbG9naWNhbCBPUiBvZiB3YWtldXAgc291cmNlcy4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gZW5hYmxlIHRoZSBpbmRpdmlkdWFsIExQRFMgd2FrZXVwIHNvdXJjZShzKSBhbmQgZm9sbG93aW5nCisvLyEgdGhyZWUgd2FrZXVwIHNvdXJjZXMgKFxlIHVsTHBkc1dha2V1cFNyYyApIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZS4KKy8vISAtXGIgUFJDTV9MUERTX0hPU1RfSVJRCisvLyEgLVxiIFBSQ01fTFBEU19HUElPCisvLyEgLVxiIFBSQ01fTFBEU19USU1FUgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQKK1BSQ01MUERTV2FrZXVwU291cmNlRW5hYmxlKHVuc2lnbmVkIGxvbmcgdWxMcGRzV2FrZXVwU3JjKQoreworICB1bnNpZ25lZCBsb25nIHVsUmVnVmFsOworCisgIC8vCisgIC8vIFJlYWQgdGhlIGN1cnJlbnQgd2FrdXAgc291cmNlcworICAvLworICB1bFJlZ1ZhbCA9IEhXUkVHKEdQUkNNX0JBU0UrIEdQUkNNX09fQVBQU19MUERTX1dBS0VVUF9DRkcpOworCisgIC8vCisgIC8vIEVuYWJsZSBpbmRpdmlkdWFsIHdha2V1cCBzb3VyY2UKKyAgLy8KKyAgdWxSZWdWYWwgPSAoKHVsUmVnVmFsIHwgdWxMcGRzV2FrZXVwU3JjKSAmIDB4OTEpOworCisgIC8vCisgIC8vIFNldCB0aGUgY29uZmlndXJhdGlvbiBpbiB0aGUgcmVnaXN0ZXIKKyAgLy8KKyAgSFdSRUcoR1BSQ01fQkFTRSsgR1BSQ01fT19BUFBTX0xQRFNfV0FLRVVQX0NGRykgPSB1bFJlZ1ZhbDsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBEaXNhYmxlIHRoZSBpbmRpdmlkdWFsIExQRFMgd2FrZXVwIHNvdXJjZShzKS4KKy8vIQorLy8hIFxwYXJhbSB1bExwZHNXYWtldXBTcmMgaXMgbG9naWNhbCBPUiBvZiB3YWtldXAgc291cmNlcy4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gZW5hYmxlIHRoZSBpbmRpdmlkdWFsIExQRFMgd2FrZXVwIHNvdXJjZShzKSBhbmQgZm9sbG93aW5nCisvLyEgdGhyZWUgd2FrZSB1cCBzb3VyY2VzIChcZSB1bExwZHNXYWtldXBTcmMgKSBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2UuCisvLyEgLVxiIFBSQ01fTFBEU19IT1NUX0lSUQorLy8hIC1cYiBQUkNNX0xQRFNfR1BJTworLy8hIC1cYiBQUkNNX0xQRFNfVElNRVIKKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkCitQUkNNTFBEU1dha2V1cFNvdXJjZURpc2FibGUodW5zaWduZWQgbG9uZyB1bExwZHNXYWtldXBTcmMpCit7CisgIEhXUkVHKEdQUkNNX0JBU0UrIEdQUkNNX09fQVBQU19MUERTX1dBS0VVUF9DRkcpICY9IH51bExwZHNXYWtldXBTcmM7Cit9CisKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBHZXQgTFBEUyB3YWtldXAgY2F1c2UKKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gZ2V0cyBMUERTIHdha2V1cCBjYW91c2UKKy8vIQorLy8hIFxyZXR1cm4gUmV0dXJucyB2YWx1ZXMgZW51bWVyYXRlZCBhcyBkZXNjcmliZWQgaW4KKy8vISBQUkNNTFBEU1dha2V1cFNvdXJjZUVuYWJsZSgpLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3Vuc2lnbmVkIGxvbmcKK1BSQ01MUERTV2FrZXVwQ2F1c2VHZXQoKQoreworICByZXR1cm4gKEhXUkVHKEdQUkNNX0JBU0UrIEdQUkNNX09fQVBQU19MUERTX1dBS0VVUF9TUkMpKTsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBTZXRzIExQRFMgd2FrZXVwIFRpbWVyCisvLyEKKy8vISBccGFyYW0gdWxUaWNrcyBpcyBudW1iZXIgb2YgMzIuNzY4IEtIeiBjbG9ja3MKKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gc2V0cyBpbnRlcm5hbCBMUERTIHdha2V1cCB0aW1lciBydW5uaW5nIGF0IDMyLjc2OCBLSHouIFRoZQorLy8hIHRpbWVyIGlzIG9ubHkgY29uZmlndXJlZCBpZiB0aGUgcGFyYW1ldGVyIFxlIHVsVGlja3MgaXMgaW4gdmFsaWQgcmFuZ2UgaS5lLgorLy8hIGZyb20gMjEgdG8gMl4zMi4KKy8vIQorLy8hIFxyZXR1cm4gUmV0dXJucyBcYiB0cnVlIG9uIHN1Y2Nlc3MsIFxiIGZhbHNlIG90aGVyd2lzZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkCitQUkNNTFBEU0ludGVydmFsU2V0KHVuc2lnbmVkIGxvbmcgdWxUaWNrcykKK3sKKyAgLy8KKyAgLy8gQ2hlY2sgc2xlZXAgaXMgYXRsZWFzdCBmb3IgMjEgY3ljbGVzCisgIC8vIElmIG5vdCBzZXQgdGhlIHNsZWVwIHRpbWUgdG8gMjEgY3ljbGVzCisgIC8vCisgIGlmKCB1bFRpY2tzIDwgMjEpCisgIHsKKyAgICAgIHVsVGlja3MgPSAyMTsKKyAgfQorCisgIEhXUkVHKEdQUkNNX0JBU0UgKyBHUFJDTV9PX0FQUFNfTFBEU19XQUtFVElNRV9XQUtFX0NGRykgPSB1bFRpY2tzOworICBIV1JFRyhHUFJDTV9CQVNFICsgR1BSQ01fT19BUFBTX0xQRFNfV0FLRVRJTUVfT1BQX0NGRykgPSB1bFRpY2tzLTIwOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIFNlbGVjdHMgdGhlIEdQSU8gZm9yIExQRFMgd2FrZXVwCisvLyEKKy8vISBccGFyYW0gdWxHUElPUGluIGlzIG9uZSBvZiB0aGUgdmFsaWQgR1BJTyBmcm8gTFBEUyB3YWtldXAuCisvLyEgXHBhcmFtIHVsVHlwZSBpcyB0aGUgd2FrZXVwIHRyaWdnZXIgdHlwZS4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gc2V0ZWN0cyB0aGUgd2FrZXVwIEdQSU8gZm9yIExQRFMgd2FrZXVwIGFuZCBjYW4gYmUKKy8vISB1c2VkIHRvIHNlbGVjdCBvbmUgb3V0IG9mIDcgcHJlLWRlZmluZWQgR1BJTyhzKS4KKy8vIQorLy8hIFRoZSBwYXJhbWV0ZXIgXGUgdWxMcGRzR1BJT1NlbCBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6LQorLy8hIC1cYiBQUkNNX0xQRFNfR1BJTzIKKy8vISAtXGIgUFJDTV9MUERTX0dQSU80CisvLyEgLVxiIFBSQ01fTFBEU19HUElPMTMKKy8vISAtXGIgUFJDTV9MUERTX0dQSU8xNworLy8hIC1cYiBQUkNNX0xQRFNfR1BJTzExCisvLyEgLVxiIFBSQ01fTFBEU19HUElPMjQKKy8vISAtXGIgUFJDTV9MUERTX0dQSU8yNgorLy8hCisvLyEgVGhlIHBhcmFtZXRlciBcZSB1bFR5cGUgc2V0cyB0aGUgdHJpZ2dlciB0eXBlIGFuZCBjYW4gYmUgb25lIG9mIHRoZQorLy8hIGZvbGxvd2luZzoKKy8vISAtIFxiIFBSQ01fTFBEU19MT1dfTEVWRUwKKy8vISAtIFxiIFBSQ01fTFBEU19ISUdIX0xFVkVMCisvLyEgLSBcYiBQUkNNX0xQRFNfRkFMTF9FREdFCisvLyEgLSBcYiBQUkNNX0xQRFNfUklTRV9FREdFCisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZAorUFJDTUxQRFNXYWtlVXBHUElPU2VsZWN0KHVuc2lnbmVkIGxvbmcgdWxHUElPUGluLCB1bnNpZ25lZCBsb25nIHVsVHlwZSkKK3sKKyAgLy8KKyAgLy8gU2V0IHRoZSB3YWtldXAgR1BJTworICAvLworICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UgKyBISUIzUDNfT19NRU1fSElCX0xQRFNfR1BJT19TRUwsIHVsR1BJT1Bpbik7CisKKyAgLy8KKyAgLy8gU2V0IHRoZSB0cmlnZ2VyIHR5cGUuCisgIC8vCisgIEhXUkVHKEdQUkNNX0JBU0UgKyBHUFJDTV9PX0FQUFNfR1BJT19XQUtFX0NPTkYpID0gKHVsVHlwZSAmIDB4Myk7Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgUHV0cyB0aGUgc3lzdGVtIGludG8gU2xlZXAuCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIHB1dHMgdGhlIHN5c3RlbSBpbnRvIHNsZWVwIHBvd2VyIG1vZGUuIFN5c3RlbSBleGl0cyB0aGUgcG93ZXIKKy8vISBzdGF0ZSBvbiBhbnkgb25lIG9mIHRoZSBhdmFpbGFibGUgaW50ZXJydXB0LiBPbiBleGl0IGZyb20gc2xlZXAgbW9kZSB0aGUKKy8vISBmdW5jdGlvbiByZXR1cm5zIHRvIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIHdpdGggYWxsIHRoZSBwcm9jZXNzb3IgY29yZQorLy8hIHJlZ2lzdGVycyByZXRhaW5lZC4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkCitQUkNNU2xlZXBFbnRlcigpCit7CisgIC8vCisgIC8vIFJlcXVlc3QgU2xlZXAKKyAgLy8KKyAgQ1BVd2ZpKCk7Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgRW5hYmxlIFNSQU0gY29sdW1uIHJldGVudGlvbiBkdXJpbmcgTFBEUyBQb3dlciBtb2RlKHMpCisvLyEKKy8vISBccGFyYW0gdWxTcmFtQ29sU2VsIGlzIGJpdCBtYXNrIG9mIHZhbGlkIFNSQU0gY29sdW1ucy4KKy8vISBccGFyYW0gdWxNb2RlRmxhZ3MgaXMgdGhlIGJpdCBtYXNrIG9mIHBvd2VyIG1vZGVzLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbnMgZW5hYmxlcyB0aGUgU1JBTSByZXRlbnRpb24uIFRoZSBkZXZpY2Ugc3VwcG9ydHMgY29uZmlndXJhYmxlCisvLyEgU1JBTSBjb2x1bW4gcmV0ZW50aW9uIGluIExvdyBQb3dlciBEZWVwIFNsZWVwIChMUERTKS4gRWFjaCBjb2x1bW4gaXMgb2YKKy8vISA2NCBLQiBzaXplLgorLy8hCisvLyEgVGhlIHBhcmFtZXRlciBcZSB1bFNyYW1Db2xTZWwgc2hvdWxkIGJlIGxvZ2ljYWwgT1Igb2YgdGhlIGZvbGxvd2luZzotCisvLyEgLVxiIFBSQ01fU1JBTV9DT0xfMQorLy8hIC1cYiBQUkNNX1NSQU1fQ09MXzIKKy8vISAtXGIgUFJDTV9TUkFNX0NPTF8zCisvLyEgLVxiIFBSQ01fU1JBTV9DT0xfNAorLy8hCisvLyEgVGhlIHBhcmFtZXRlciBcZSB1bE1vZGVGbGFncyBzZWxlY3RzIHRoZSBwb3dlciBtb2RlcyBhbmQgc2hvbHVkIGJlIGxvZ2ljYWwKKy8vISBPUiBvZiBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nCisvLyEgLVxiIFBSQ01fU1JBTV9MUERTX1JFVAorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZAorUFJDTVNSQU1SZXRlbnRpb25FbmFibGUodW5zaWduZWQgbG9uZyB1bFNyYW1Db2xTZWwsIHVuc2lnbmVkIGxvbmcgdWxNb2RlRmxhZ3MpCit7CisgIGlmKHVsTW9kZUZsYWdzICYgUFJDTV9TUkFNX0xQRFNfUkVUKQorICB7CisgICAgLy8KKyAgICAvLyBDb25maWd1cmUgTFBEUyBTUkFNIHJldGVudGlvbiByZWdpc3RlcgorICAgIC8vCisgICAgSFdSRUcoR1BSQ01fQkFTRSsgR1BSQ01fT19BUFBTX1NSQU1fTFBEU19DRkcpID0gKHVsU3JhbUNvbFNlbCAmIDB4Rik7CisgIH0KK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBEaXNhYmxlIFNSQU0gY29sdW1uIHJldGVudGlvbiBkdXJpbmcgTFBEUyBQb3dlciBtb2RlKHMpLgorLy8hCisvLyEgXHBhcmFtIHVsU3JhbUNvbFNlbCBpcyBiaXQgbWFzayBvZiB2YWxpZCBTUkFNIGNvbHVtbnMuCisvLyEgXHBhcmFtIHVsRmxhZ3MgaXMgdGhlIGJpdCBtYXNrIG9mIHBvd2VyIG1vZGVzLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbnMgZGlzYWJsZSB0aGUgU1JBTSByZXRlbnRpb24uIFRoZSBkZXZpY2Ugc3VwcG9ydHMgY29uZmlndXJhYmxlCisvLyEgU1JBTSBjb2x1bW4gcmV0ZW50aW9uIGluIExvdyBQb3dlciBEZWVwIFNsZWVwIChMUERTKS4gRWFjaCBjb2x1bW4gaXMKKy8vISBvZiA2NCBLQiBzaXplLgorLy8hCisvLyEgVGhlIHBhcmFtZXRlciBcZSB1bFNyYW1Db2xTZWwgc2hvdWxkIGJlIGxvZ2ljYWwgT1Igb2YgdGhlIGZvbGxvd2luZzotCisvLyEgLVxiIFBSQ01fU1JBTV9DT0xfMQorLy8hIC1cYiBQUkNNX1NSQU1fQ09MXzIKKy8vISAtXGIgUFJDTV9TUkFNX0NPTF8zCisvLyEgLVxiIFBSQ01fU1JBTV9DT0xfNAorLy8hCisvLyEgVGhlIHBhcmFtZXRlciBcZSB1bEZsYWdzIHNlbGVjdHMgdGhlIHBvd2VyIG1vZGVzIGFuZCBzaG9sdWQgYmUgbG9naWNhbCBPUgorLy8hIG9mIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcKKy8vISAtXGIgUFJDTV9TUkFNX0xQRFNfUkVUCisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkCitQUkNNU1JBTVJldGVudGlvbkRpc2FibGUodW5zaWduZWQgbG9uZyB1bFNyYW1Db2xTZWwsIHVuc2lnbmVkIGxvbmcgdWxGbGFncykKK3sKKyAgaWYodWxGbGFncyAmIFBSQ01fU1JBTV9MUERTX1JFVCkKKyAgeworICAgIC8vCisgICAgLy8gQ29uZmlndXJlIExQRFMgU1JBTSByZXRlbnRpb24gcmVnaXN0ZXIKKyAgICAvLworICAgIEhXUkVHKEdQUkNNX0JBU0UrIEdQUkNNX09fQVBQU19TUkFNX0xQRFNfQ0ZHKSAmPSB+KHVsU3JhbUNvbFNlbCAmIDB4Rik7CisgIH0KK30KKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIEVuYWJsZXMgaW5kaXZpZHVhbCBISUIgd2FrZXVwIHNvdXJjZShzKS4KKy8vIQorLy8hIFxwYXJhbSB1bEhJQldha3VwU3JjIGlzIGxvZ2ljYWwgT1Igb2YgdmFsaWQgSElCIHdha2V1cCBzb3VyY2VzLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBlbmFibGVzIGluZGl2aWR1YWwgSElCIHdha2V1cCBzb3VyY2UocykuIFRoZSBwYXJhbXRlcgorLy8hIFxlIHVsSElCV2FrdXBTcmMgaXMgdGhlIGJpdCBtYXNrIG9mIEhJQiB3YWtldXAgc291cmNlcyBhbmQgc2hvdWxkIGJlCisvLyEgbG9naWNhbCBPUiBvZiBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbHdvaW5nIDotCisvLyEgLVxiIFBSQ01fSElCX1NMT1dfQ0xLX0NUUgorLy8hIC1cYiBQUkNNX0hJQl9HUElPMgorLy8hIC1cYiBQUkNNX0hJQl9HUElPNAorLy8hIC1cYiBQUkNNX0hJQl9HUElPMTMKKy8vISAtXGIgUFJDTV9ISUJfR1BJTzE3CisvLyEgLVxiIFBSQ01fSElCX0dQSU8xMQorLy8hIC1cYiBQUkNNX0hJQl9HUElPMjQKKy8vISAtXGIgUFJDTV9ISUJfR1BJTzI2CisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZAorUFJDTUhpYmVybmF0ZVdha2V1cFNvdXJjZUVuYWJsZSh1bnNpZ25lZCBsb25nIHVsSElCV2FrdXBTcmMpCit7CisgIHVuc2lnbmVkIGxvbmcgdWxSZWdWYWx1ZTsKKworICAvLworICAvLyBSZWFkIHRoZSBSVEMgcmVnaXN0ZXIKKyAgLy8KKyAgdWxSZWdWYWx1ZSA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9ISUJfUlRDX1dBS0VfRU4pOworCisgIC8vCisgIC8vIEVuYWJsZSB0aGUgUlRDIGFzIHdha2V1cCBzb3VyY2UgaWYgc3BlY2lmaWVkCisgIC8vCisgIHVsUmVnVmFsdWUgfD0gKHVsSElCV2FrdXBTcmMgJiAweDEpOworCisgIC8vCisgIC8vIEVuYWJsZSBISUIgd2FrZXVwIHNvdXJjZXMKKyAgLy8KKyAgUFJDTUhJQlJlZ1dyaXRlKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9ISUJfUlRDX1dBS0VfRU4sdWxSZWdWYWx1ZSk7CisKKyAgLy8KKyAgLy8gUkVhZCB0aGUgR1BJTyB3YWtldXAgY29uZmlndXJhdGlvbiByZWdpc3RlcgorICAvLworICB1bFJlZ1ZhbHVlID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX0dQSU9fV0FLRV9FTik7CisKKyAgLy8KKyAgLy8gRW5hYmxlIHRoZSBzcGVjaWZpZWQgR1BJT3MgYSB3YWtldXAgc291cmNlcworICAvLworICB1bFJlZ1ZhbHVlIHw9ICgodWxISUJXYWt1cFNyYz4+MTYpJjB4RkYpOworCisgIC8vCisgIC8vIFdyaXRlIHRoZSBuZXcgcmVnaXN0ZXIgY29uZmlndXJhdGlvbgorICAvLworICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX0dQSU9fV0FLRV9FTix1bFJlZ1ZhbHVlKTsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBEaXNhYmxlIGluZGl2aWR1YWwgSElCIHdha2V1cCBzb3VyY2UocykuCisvLyEKKy8vISBccGFyYW0gdWxISUJXYWt1cFNyYyBpcyBsb2dpY2FsIE9SIG9mIHZhbGlkIEhJQiB3YWtldXAgc291cmNlcy4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gZGlzYWJsZSBpbmRpdmlkdWFsIEhJQiB3YWtldXAgc291cmNlKHMpLiBUaGUgcGFyYW10ZXIKKy8vISBcZSB1bEhJQldha3VwU3JjIGlzIHNhbWUgYXMgYml0IGZpbGVkcyBkZWZpbmVkIGluCisvLyEgUFJDTUVuYWJsZUhpYmVybmF0ZVdha2V1cFNvdXJjZSgpCisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZAorUFJDTUhpYmVybmF0ZVdha2V1cFNvdXJjZURpc2FibGUodW5zaWduZWQgbG9uZyB1bEhJQldha3VwU3JjKQoreworICB1bnNpZ25lZCBsb25nIHVsUmVnVmFsdWU7CisKKyAgLy8KKyAgLy8gUmVhZCB0aGUgUlRDIHJlZ2lzdGVyCisgIC8vCisgIHVsUmVnVmFsdWUgPSBQUkNNSElCUmVnUmVhZChISUIzUDNfQkFTRStISUIzUDNfT19NRU1fSElCX1JUQ19XQUtFX0VOKTsKKworICAvLworICAvLyBEaXNhYmxlIHRoZSBSVEMgYXMgd2FrZXVwIHNvdXJjZSBpZiBzcGVjaWZpZWQKKyAgLy8KKyAgdWxSZWdWYWx1ZSAmPSB+KHVsSElCV2FrdXBTcmMgJiAweDEpOworCisgIC8vCisgIC8vIERpc2FibGUgSElCIHdha2V1cCBzb3VyY2VzCisgIC8vCisgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRStISUIzUDNfT19NRU1fSElCX1JUQ19XQUtFX0VOLHVsUmVnVmFsdWUpOworCisgIC8vCisgIC8vIFJlYWQgdGhlIEdQSU8gd2FrZXVwIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIKKyAgLy8KKyAgdWxSZWdWYWx1ZSA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9HUElPX1dBS0VfRU4pOworCisgIC8vCisgIC8vIEVuYWJsZSB0aGUgc3BlY2lmaWVkIEdQSU9zIGEgd2FrZXVwIHNvdXJjZXMKKyAgLy8KKyAgdWxSZWdWYWx1ZSAmPSB+KCh1bEhJQldha3VwU3JjPj4xNikmMHhGRik7CisKKyAgLy8KKyAgLy8gV3JpdGUgdGhlIG5ldyByZWdpc3RlciBjb25maWd1cmF0aW9uCisgIC8vCisgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRStISUIzUDNfT19NRU1fR1BJT19XQUtFX0VOLHVsUmVnVmFsdWUpOworfQorCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgR2V0IGhpYmVybmF0ZSB3YWtldXAgY2F1c2UKKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gZ2V0cyB0aGUgaGliZXJuYXRlIHdha2V1cCBjYXVzZS4KKy8vIQorLy8hIFxyZXR1cm4gUmV0dXJucyBcYiBQUkNNX0hJQl9XQUtFVVBfQ0FVU0VfU0xPV19DTE9DSyBvcgorLy8hIFxiIFBSQ01fSElCX1dBS0VVUF9DQVVTRV9HUElPCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordW5zaWduZWQgbG9uZworUFJDTUhpYmVybmF0ZVdha2V1cENhdXNlR2V0KCkKK3sKKyAgLy8KKyAgLy8gU3VwcG9ydGVkIG9ubHkgaW4gRVMyLjAwIGFuZCBMYXRlciBkZXZpY2VzIGkuZS4gUk9NIFZlcnNpb24gMi54Lnggb3IgZ3JlYXRlcgorICAvLworICBpZiggKEhXUkVHKDB4MDAwMDA0MDApICYgMHhGRkZGKSA+PSAyICkKKyAgeworICAgICAgcmV0dXJuICgoUFJDTUhJQlJlZ1JlYWQoKE9DUF9TSEFSRURfQkFTRSArIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfOCkpPj4yKSYweDcpOworICB9CisgIGVsc2UKKyAgeworICAgICAgcmV0dXJuKDApOworICB9Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgU2V0cyBIaWJlcm5hdGUgd2FrZXVwIFRpbWVyCisvLyEKKy8vISBccGFyYW0gdWxsVGlja3MgaXMgbnVtYmVyIG9mIDMyLjc2OCBLSHogY2xvY2tzCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIHNldHMgaW50ZXJuYWwgaGliZXJuYXRlIHdha2V1cCB0aW1lciBydW5uaW5nIGF0IDMyLjc2OCBLSHouCisvLyEKKy8vISBccmV0dXJuIFJldHVybnMgXGIgdHJ1ZSBvbiBzdWNjZXNzLCBcYiBmYWxzZSBvdGhlcndpc2UuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZAorUFJDTUhpYmVybmF0ZUludGVydmFsU2V0KHVuc2lnbmVkIGxvbmcgbG9uZyB1bGxUaWNrcykKK3sKKyAgdW5zaWduZWQgbG9uZyBsb25nIHVsbFJUQ1ZhbDsKKworICAvLworICAvLyBMYXRjaCB0aGUgUlRDIHZsYXVlCisgIC8vCisgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRStISUIzUDNfT19NRU1fSElCX1JUQ19USU1FUl9SRUFEICwweDEpOworCisgIC8vCisgIC8vIFJlYWQgbGF0Y2hlZCB2YWx1ZXMgYXMgMiAzMi1iaXQgdmxhdWVzCisgIC8vCisgIHVsbFJUQ1ZhbCAgPSBQUkNNSElCUmVnUmVhZChISUIzUDNfQkFTRSArIEhJQjNQM19PX01FTV9ISUJfUlRDX1RJTUVSX01TVyk7CisgIHVsbFJUQ1ZhbCAgPSB1bGxSVENWYWwgPDwgMzI7CisgIHVsbFJUQ1ZhbCB8PSBQUkNNSElCUmVnUmVhZChISUIzUDNfQkFTRStISUIzUDNfT19NRU1fSElCX1JUQ19USU1FUl9MU1cpOworCisgIC8vCisgIC8vIEFkZCB0aGUgaW50ZXJ2YWwKKyAgLy8KKyAgdWxsUlRDVmFsID0gdWxsUlRDVmFsICsgdWxsVGlja3M7CisKKyAgLy8KKyAgLy8gU2V0IFJUQyBtYXRjaCB2YWx1ZQorICAvLworICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX0hJQl9SVENfV0FLRV9MU1dfQ09ORiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKHVsbFJUQ1ZhbCkpOworICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX0hJQl9SVENfV0FLRV9NU1dfQ09ORiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykodWxsUlRDVmFsPj4zMikpOworfQorCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgU2VsZWN0cyB0aGUgR1BJTyhzKSBmb3IgaGliZXJuYXRlIHdha2V1cAorLy8hCisvLyEgXHBhcmFtIHVsR1BJT0JpdE1hcCBpcyB0aGUgYml0LW1hcCBvZiB2YWxpZCBoaWJlcm5hdGUgd2FrZXVwIEdQSU8uCisvLyEgXHBhcmFtIHVsVHlwZSBpcyB0aGUgd2FrZXVwIHRyaWdnZXIgdHlwZS4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gc2V0ZWN0cyB0aGUgd2FrZXVwIEdQSU8gZm9yIGhpYmVybmF0ZSBhbmQgY2FuIGJlCisvLyEgdXNlZCB0byBzZWxlY3QgYW55IGNvbWJpbmF0aW9uIG9mIDcgcHJlLWRlZmluZWQgR1BJTyhzKS4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gZW5hYmxlcyBpbmRpdmlkdWFsIEhJQiB3YWtldXAgc291cmNlKHMpLiBUaGUgcGFyYW10ZXIKKy8vISBcZSB1bEdQSU9CaXRNYXAgc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbHdvaW5nIDotCisvLyEgLVxiIFBSQ01fSElCX0dQSU8yCisvLyEgLVxiIFBSQ01fSElCX0dQSU80CisvLyEgLVxiIFBSQ01fSElCX0dQSU8xMworLy8hIC1cYiBQUkNNX0hJQl9HUElPMTcKKy8vISAtXGIgUFJDTV9ISUJfR1BJTzExCisvLyEgLVxiIFBSQ01fSElCX0dQSU8yNAorLy8hIC1cYiBQUkNNX0hJQl9HUElPMjYKKy8vIQorLy8hIFRoZSBwYXJhbWV0ZXIgXGUgdWxUeXBlIHNldHMgdGhlIHRyaWdnZXIgdHlwZSBhbmQgY2FuIGJlIG9uZSBvZiB0aGUKKy8vISBmb2xsb3dpbmc6CisvLyEgLSBcYiBQUkNNX0hJQl9MT1dfTEVWRUwKKy8vISAtIFxiIFBSQ01fSElCX0hJR0hfTEVWRUwKKy8vISAtIFxiIFBSQ01fSElCX0ZBTExfRURHRQorLy8hIC0gXGIgUFJDTV9ISUJfUklTRV9FREdFCisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZAorUFJDTUhpYmVybmF0ZVdha2VVcEdQSU9TZWxlY3QodW5zaWduZWQgbG9uZyB1bEdQSU9CaXRNYXAsIHVuc2lnbmVkIGxvbmcgdWxUeXBlKQoreworICB1bnNpZ25lZCBjaGFyIHVjTG9vcDsKKyAgdW5zaWduZWQgbG9uZyB1bFJlZ1ZhbHVlOworCisgIC8vCisgIC8vIFNoaWZ0IHRoZSBiaXRzIHRvIGV4dHJhY3QgdGhlIEdQSU8gc2VsZWN0aW9uCisgIC8vCisgIHVsR1BJT0JpdE1hcCA+Pj0gMTY7CisKKyAgLy8KKyAgLy8gU2V0IHRoZSBjb25maWd1cmF0aW9uIGZvciBlYWNoIEdQSU8KKyAgLy8KKyAgZm9yKHVjTG9vcD0wOyB1Y0xvb3AgPCA3OyB1Y0xvb3ArKykKKyAgeworICAgIGlmKHVsR1BJT0JpdE1hcCAmICgxPDx1Y0xvb3ApKQorICAgIHsKKyAgICAgIHVsUmVnVmFsdWUgID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX0dQSU9fV0FLRV9DT05GKTsKKyAgICAgIHVsUmVnVmFsdWUgPSAodWxSZWdWYWx1ZSAmICh+KDB4MyA8PCAodWNMb29wKjIpKSkpIHwgKHVsVHlwZSA8PCh1Y0xvb3AqMikpOworICAgICAgUFJDTUhJQlJlZ1dyaXRlKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9HUElPX1dBS0VfQ09ORiwgdWxSZWdWYWx1ZSk7CisgICAgfQorICB9Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgUHV0cyB0aGUgc3lzdGVtIGludG8gSGliZXJuYXRlCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIHB1dHMgdGhlIHN5c3RlbSBpbnRvIEhpYmVybmF0ZS4gVGhlIGRldmljZSBlbnRlcnMgSElCCisvLyEgaW1tZWRpYXRlbHkgYW5kIG9uIGV4aXQgZnJvbSBISUIgZGV2aWNlIGNvcmUgc3RhcnRzIGl0cyBleGVjdXRpb24gZnJvbQorLy8hIHJlc2V0IHRodXMgdGhlIGZ1bmN0aW9uIG5ldmVyIHJldHVybnMuCisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZAorUFJDTUhpYmVybmF0ZUVudGVyKCkKK3sKKworICAvLworICAvLyBSZXF1ZXN0IGhpYmVybmF0ZS4KKyAgLy8KKyAgUFJDTUhJQlJlZ1dyaXRlKChISUIzUDNfQkFTRStISUIzUDNfT19NRU1fSElCX1JFUSksMHgxKTsKKworICAvLworICAvLyBXYWl0IGZvciBzeXN0ZW0gdG8gZW50ZXIgaGliZXJuYXRlCisgIC8vCisgIF9fYXNtKCIgICAgd2ZpXG4iKTsKKworICAvLworICAvLyBJbmZpbml0ZSBsb29wCisgIC8vCisgIHdoaWxlKDEpCisgIHsKKworICB9Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgR2V0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaW50ZXJuYWwgc2xvdyBjbG9jayBjb3VudGVyCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIGxhdGNoZXMgYW5kIHJlYWRzIHRoZSBpbnRlcm5hbCBSVEMgcnVubmluZyBhdCAzMi43NjggS2h6CisvLyEKKy8vISBccmV0dXJuIDY0LWJpdCBjdXJyZW50IGNvdW50ZXIgdmxhdWUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordW5zaWduZWQgbG9uZyBsb25nCitQUkNNU2xvd0Nsa0N0ckdldCgpCit7CisgIHVuc2lnbmVkIGxvbmcgbG9uZyB1bGxSVENWYWw7CisKKyAgLy8KKyAgLy8gTGF0Y2ggdGhlIFJUQyB2bGF1ZQorICAvLworICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX0hJQl9SVENfVElNRVJfUkVBRCwgMHgxKTsKKworICAvLworICAvLyBSZWFkIGxhdGNoZWQgdmFsdWVzIGFzIDIgMzItYml0IHZsYXVlcworICAvLworICB1bGxSVENWYWwgID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UgKyBISUIzUDNfT19NRU1fSElCX1JUQ19USU1FUl9NU1cpOworICB1bGxSVENWYWwgID0gdWxsUlRDVmFsIDw8IDMyOworICB1bGxSVENWYWwgfD0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX0hJQl9SVENfVElNRVJfTFNXKTsKKworICByZXR1cm4gdWxsUlRDVmFsOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIEdldHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGludGVybmFsIHNsb3cgY2xvY2sgY291bnRlcgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIFxzYSBQUkNNU2xvd0Nsa0N0ckdldCgpIGJ1dCByZWFkcyB0aGUgY291bnRlcgorLy8hIHZhbHVlIGZyb20gYSByZWxhdGl2ZWx5IGZhc3RlciBpbnRlcmZhY2UgdXNpbmcgYW4gYXV0by1sYXRjaCBtZWNoYWluc20uCisvLyEKKy8vISBcbm90ZSBEdWUgdG8gdGhlIG5hdHVyZSBvZiBpbXBsZW1ldGF0aW9uIG9mIGF1dG8gbGF0Y2hpbmcsIHdoZW4gdXNpbmcgdGhpcworLy8hIEFQSSwgdGhlIHJlY29tbWVuZGF0aW9uIGlzIHRvIHJlYWQgdGhlIHZhbHVlIHRocmljZSBhbmQgaWRlbnRpZnkgdGhlIHJpZ2h0CisvLyEgdmFsdWUgKGFzIDIgb3V0IHRoZSAzIHJlYWQgdmFsdWVzIHdpbGwgYWx3YXlzIGJlIGNvcnJlY3QgYW5kIHdpdGggYSBtYXguIG9mCisvLyEgMSBMU0IgY2hhbmdlKQorLy8hCisvLyEgXHJldHVybiA2NC1iaXQgY3VycmVudCBjb3VudGVyIHZsYXVlLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3Vuc2lnbmVkIGxvbmcgbG9uZyBQUkNNU2xvd0Nsa0N0ckZhc3RHZXQodm9pZCkKK3sKKyAgdW5zaWduZWQgbG9uZyBsb25nIHVsbFJUQ1ZhbDsKKworICAvLworICAvLyBSZWFkIGFzIDIgMzItYml0IHZhbHVlcworICAvLworICB1bGxSVENWYWwgPSBIV1JFRyhISUIxUDJfQkFTRSArIEhJQjFQMl9PX0hJQl9SVENfVElNRVJfTVNXXzFQMik7CisgIHVsbFJUQ1ZhbCA9IHVsbFJUQ1ZhbCA8PCAzMjsKKyAgdWxsUlRDVmFsIHw9IEhXUkVHKEhJQjFQMl9CQVNFICsgSElCMVAyX09fSElCX1JUQ19USU1FUl9MU1dfMVAyKTsKKworICByZXR1cm4gdWxsUlRDVmFsOworCit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgU2V0cyBzbG93IGNsb2NrIGNvdW50ZXIgbWF0Y2ggdmFsdWUgdG8gaW50ZXJydXB0IHRoZSBwcm9jZXNzb3IuCisvLyEKKy8vISBccGFyYW0gdWxsVmFsdWUgaXMgdGhlIG1hdGNoIHZhbHVlLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBtYXRjaCB2YWx1ZSBmb3IgIHNsb3cgY2xvY2sgY291bnRlci4gVGhpcyBpcyB1c2UKKy8vISB0byBpbnRlcnJ1cHQgdGhlIHByb2Nlc3NvciB3aGVuIFJUQyBjb3VudHMgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkIFBSQ01TbG93Q2xrQ3RyTWF0Y2hTZXQodW5zaWduZWQgbG9uZyBsb25nIHVsbFZhbHVlKQoreworICAvLworICAvLyBTZXQgUlRDIG1hdGNoIHZhbHVlCisgIC8vCisgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRSArIEhJQjNQM19PX01FTV9ISUJfUlRDX0lSUV9MU1dfQ09ORiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykodWxsVmFsdWUpKTsKKyAgUFJDTUhJQlJlZ1dyaXRlKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SVENfSVJRX01TV19DT05GLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSh1bGxWYWx1ZT4+MzIpKTsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBHZXRzIHNsb3cgY2xvY2sgY291bnRlciBtYXRjaCB2YWx1ZS4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gZ2V0cyB0aGUgbWF0Y2ggdmFsdWUgZm9yICBzbG93IGNsb2NrIGNvdW50ZXIuIFRoaXMgaXMgdXNlCisvLyEgdG8gaW50ZXJydXB0IHRoZSBwcm9jZXNzb3Igd2hlbiBSVEMgY291bnRzIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuCisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordW5zaWduZWQgbG9uZyBsb25nIFBSQ01TbG93Q2xrQ3RyTWF0Y2hHZXQoKQoreworICB1bnNpZ25lZCBsb25nIGxvbmcgdWxsVmFsdWU7CisKKyAgLy8KKyAgLy8gR2V0IFJUQyBtYXRjaCB2YWx1ZQorICAvLworICB1bGxWYWx1ZSA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SVENfSVJRX01TV19DT05GKTsKKyAgdWxsVmFsdWUgPSB1bGxWYWx1ZTw8MzI7CisgIHVsbFZhbHVlIHw9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SVENfSVJRX0xTV19DT05GKTsKKworICAvLworICAvLyBSZXR1cm4gdGhlIHZhbHVlCisgIC8vCisgIHJldHVybiB1bGxWYWx1ZTsKK30KKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIFdyaXRlIHRvIE9uLUNoaXAgUmV0ZW50aW9uIChPQ1IpIHJlZ2lzdGVyLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiB3cml0ZXMgdG8gT24tQ2hpcCByZXRlbnRpb24gcmVnaXN0ZXIuIFRoZSBkZXZpY2Ugc3VwcG9ydHMgdHdvCisvLyEgNC1ieXRlIE9DUiByZWdpc3RlciB3aGljaCBhcmUgcmV0YWluZWQgYWNyb3NzIGFsbCBwb3dlciBtb2RlLgorLy8hCisvLyEgVGhlIHBhcmFtZXRlciBcZSB1Y0luZGV4IGlzIGFuIGluZGV4IG9mIHRoZSBPQ1IgYW5kIGNhbiBiZSBcYiAwIG9yIFxiIDEuCisvLyEKKy8vISBUaGVzZSByZWdpc3RlcnMgYXJlIHNoYXJlZCBieSB0aGUgUlRDIGltcGxlbWVudGF0aW9uIChpZiBEcml2ZXJsaWIgUlRDCisvLyEgQVBJcyBhcmUgdXNlZCksIFJPTSwgYW5kIHVzZXIgYXBwbGljYXRpb24uCisvLyEKKy8vISBXaGVuIFJUQyBBUElzIGluIHVzZToKKy8vIQorLy8hICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisvLyEgICAgIHwgICAgICAgICAgICAgICAgICBJTkRFWCAxICAgICAgICAgICAgICAgICAgICAgIHwKKy8vISAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorLy8hICAgICB8MzF8MzB8Mjl8Mjh8Mjd8MjZ8MjV8MjR8MjN8MjJ8MjF8MjB8MTl8MTh8MTd8MTZ8CisvLyEgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKy8vISAgICAgfCAgICAgICAgICAgUmVzZXJ2ZWQgYnkgUlRDIEFQSXMgLSBZWSAgICAgICAgICAgfAorLy8hICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisvLyEgICAgIHwxNXwxNHwxM3wxMnwxMXwxMHwwOXwwOHwwN3wwNnwwNXwwNHwwM3wwMnwwMXwwMHwKKy8vISAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorLy8hICAgICB8ICAgICAgICAgICBSZXNlcnZlZCBieSBSVEMgQVBJcyAtIFlZICAgICAgICAgICB8CisvLyEgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKy8vIQorLy8hCisvLyEgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKy8vISAgICAgfCAgICAgICAgICAgICAgICAgIElOREVYIDAgICAgICAgICAgICAgICAgICAgICAgfAorLy8hICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisvLyEgICAgIHwzMXwzMHwyOXwyOHwyN3wyNnwyNXwyNHwyM3wyMnwyMXwyMHwxOXwxOHwxN3wxNnwKKy8vISAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorLy8hICAgICB8ICAgICAgICAgICBSZXNlcnZlZCBieSBSVEMgQVBJcyAtIFlZICAgICAgICAgICB8CisvLyEgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKy8vISAgICAgfDE1fDE0fDEzfDEyfDExfDEwfDA5fDA4fDA3fDA2fDA1fDA0fDAzfDAyfDAxfDAwfAorLy8hICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisvLyEgICAgIHxZWXwgICAgICAgIEZvciBVc2VyIEFwcGxpY2F0aW9uICAgICAgICAgICAgIHxYWHwKKy8vISAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorLy8hCisvLyEgICAgIFlZID0+IFJlc2VydmVkIGJ5IFJUQyBBUElzLiBJZiBEcml2ZXJsaWIgUlRDIEFQSXMgYXJlIHVzZWQKKy8vISAgICAgWFggPT4gUmVzZXJ2ZWQgYnkgUk9NCisvLyEKKy8vIQorLy8hIFdoZW4gUlRDIEFQSXMgYXJlIG5vdCBpbiB1c2U6CisvLyEKKy8vISAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorLy8hICAgICB8ICAgICAgICAgICAgICAgICAgSU5ERVggMSAgICAgICAgICAgICAgICAgICAgICB8CisvLyEgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKy8vISAgICAgfDMxfDMwfDI5fDI4fDI3fDI2fDI1fDI0fDIzfDIyfDIxfDIwfDE5fDE4fDE3fDE2fAorLy8hICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisvLyEgICAgIHwgICAgICAgICAgICBGb3IgVXNlciBBcHBsaWNhdGlvbiAgICAgICAgICAgICAgIHwKKy8vISAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorLy8hICAgICB8MTV8MTR8MTN8MTJ8MTF8MTB8MDl8MDh8MDd8MDZ8MDV8MDR8MDN8MDJ8MDF8MDB8CisvLyEgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKy8vISAgICAgfCAgICAgICAgICAgIEZvciBVc2VyIEFwcGxpY2F0aW9uICAgICAgICAgICAgICAgfAorLy8hICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisvLyEKKy8vIQorLy8hICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisvLyEgICAgIHwgICAgICAgICAgICAgICAgICBJTkRFWCAwICAgICAgICAgICAgICAgICAgICAgIHwKKy8vISAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorLy8hICAgICB8MzF8MzB8Mjl8Mjh8Mjd8MjZ8MjV8MjR8MjN8MjJ8MjF8MjB8MTl8MTh8MTd8MTZ8CisvLyEgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKy8vISAgICAgfCAgICAgICAgICAgIEZvciBVc2VyIEFwcGxpY2F0aW9uICAgICAgICAgICAgICAgfAorLy8hICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisvLyEgICAgIHwxNXwxNHwxM3wxMnwxMXwxMHwwOXwwOHwwN3wwNnwwNXwwNHwwM3wwMnwwMXwwMHwKKy8vISAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorLy8hICAgICB8ICAgICAgICAgICBGb3IgVXNlciBBcHBsaWNhdGlvbiAgICAgICAgICAgICB8WFh8CisvLyEgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKy8vIQorLy8hICAgICBYWCA9PiBSZXNlcnZlZCBieSBST00KKy8vIQorLy8hCisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZCBQUkNNT0NSUmVnaXN0ZXJXcml0ZSh1bnNpZ25lZCBjaGFyIHVjSW5kZXgsIHVuc2lnbmVkIGxvbmcgdWxSZWdWYWx1ZSkKK3sKKyAgdW5zaWduZWQgbG9uZyB1bFZhbDsKKworICAvLworICAvLyBDb21wdWl0ciB0aGUgb2Zmc2V0CisgIC8vCisgIHVjSW5kZXggPSB1Y0luZGV4IDw8IDI7CisKKyAgLy8KKyAgLy8gSWYgYml0IDAgaXMgcmVzZXJ2ZWQKKyAgLy8KKyAgaWYoIChIV1JFRyhPQ1BfU0hBUkVEX0JBU0UgKyBPQ1BfU0hBUkVEX09fU1BBUkVfUkVHXzgpICYgKDB4MDAwMDAwODApKSAmJgorICAgICAgKHVjSW5kZXggPT0gMCkgKQorICB7CisgICAgdWxWYWwgPSBQUkNNSElCUmVnUmVhZChISUIzUDNfQkFTRSArIEhJQjNQM19PX01FTV9ISUJfUkVHMiArIHVjSW5kZXgpOworICAgIHVsUmVnVmFsdWUgPSAoKHVsUmVnVmFsdWUgPDwgMHgxKSB8ICh1bFZhbCAmICgweDEpKSk7CisgIH0KKworICAvLworICAvLyBXcml0ZSB0aHIgdmFsdWUKKyAgLy8KKyAgUFJDTUhJQlJlZ1dyaXRlKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SRUcyICsgdWNJbmRleCx1bFJlZ1ZhbHVlKTsKKworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIFJlYWQgZnJvbSBPbi1DaGlwIFJldGVudGlvbiAoT0NSKSByZWdpc3Rlci4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gcmVhZHMgZnJvbSBPbi1DaGlwIHJldGVudGlvbiByZWdpc3Rlci4gVGhlIGRldmljZSBzdXBwb3J0cyB0d28KKy8vISA0LWJ5dGUgT0NSIHJlZ2lzdGVyIHdoaWNoIGFyZSByZXRhaW5lZCBhY3Jvc3MgYWxsIHBvd2VyIG1vZGUuCisvLyEKKy8vISBUaGUgcGFyYW1ldGVyIFxlIHVjSW5kZXggaXMgYW4gaW5kZXggb2YgdGhlIE9DUiBhbmQgY2FuIGJlIFxiIDAgb3IgXGIgMS4KKy8vIQorLy8hIFxzYSBQUkNNT0NSUmVnaXN0ZXJXcml0ZSgpIGZvciB0aGUgcmVnaXN0ZXIgdXNhZ2UgZGV0YWlscy4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit1bnNpZ25lZCBsb25nIFBSQ01PQ1JSZWdpc3RlclJlYWQodW5zaWduZWQgY2hhciB1Y0luZGV4KQoreworICB1bnNpZ25lZCBsb25nIHVsUmV0OworCisgIC8vCisgIC8vIFJlYWQgdGhlIE9DUiByZWdpc3RlcgorICAvLworICB1bFJldCA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9ISUJfUkVHMiArICh1Y0luZGV4IDw8IDIpKTsKKworICAvLworICAvLyBJZiBiaXQgMCBpcyByZXNlcnZlZAorICAvLworICBpZiggKEhXUkVHKE9DUF9TSEFSRURfQkFTRSArIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfOCkgJiAoMHgwMDAwMDA4MCkpICYmCisgICAgICAodWNJbmRleCA9PSAwKSApCisgIHsKKyAgICAgdWxSZXQgPSB1bFJldCA+PiAweDE7CisgIH0KKworICAvLworICAvLyBSZXR1cm4gdGhlIHJlYWQgdmFsdWUuCisgIC8vCisgIHJldHVybiB1bFJldDsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBSZWdpc3RlcnMgYW4gaW50ZXJydXB0IGhhbmRsZXIgZm9yIHRoZSBQUkNNLgorLy8hCisvLyEgXHBhcmFtIHBmbkhhbmRsZXIgaXMgYSBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUKKy8vISBpbnRlcnJ1cHQgaXMgYWN0aXZhdGVkLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBkb2VzIHRoZSBhY3R1YWwgcmVnaXN0ZXJpbmcgb2YgdGhlIGludGVycnVwdCBoYW5kbGVyLiAgVGhpcworLy8hIGZ1bmN0aW9uIGVuYWJsZXMgdGhlIGdsb2JhbCBpbnRlcnJ1cHQgaW4gdGhlIGludGVycnVwdCBjb250cm9sbGVyOworLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQgUFJDTUludFJlZ2lzdGVyKHZvaWQgKCpwZm5IYW5kbGVyKSh2b2lkKSkKK3sKKyAgLy8KKyAgLy8gUmVnaXN0ZXIgdGhlIGludGVycnVwdCBoYW5kbGVyLgorICAvLworICBJbnRSZWdpc3RlcihJTlRfUFJDTSwgcGZuSGFuZGxlcik7CisKKyAgLy8KKyAgLy8gRW5hYmxlIHRoZSBQUkNNIGludGVycnVwdC4KKyAgLy8KKyAgSW50RW5hYmxlKElOVF9QUkNNKTsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBVbnJlZ2lzdGVycyBhbiBpbnRlcnJ1cHQgaGFuZGxlciBmb3IgdGhlIFBSQ00uCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGFjdHVhbCB1bnJlZ2lzdGVyaW5nIG9mIHRoZSBpbnRlcnJ1cHQgaGFuZGxlci4gIEl0CisvLyEgY2xlYXJzIHRoZSBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIGEgUFJDTSBpbnRlcnJ1cHQgb2NjdXJzLiAgVGhpcworLy8hIGZ1bmN0aW9uIGFsc28gbWFza3Mgb2ZmIHRoZSBpbnRlcnJ1cHQgaW4gdGhlIGludGVycnVwdCBjb250cm9sbGVyIHNvIHRoYXQKKy8vISB0aGUgaW50ZXJydXB0IGhhbmRsZXIgbm8gbG9uZ2VyIGlzIGNhbGxlZC4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkIFBSQ01JbnRVbnJlZ2lzdGVyKCkKK3sKKyAgLy8KKyAgLy8gRW5hYmxlIHRoZSBVQVJUIGludGVycnVwdC4KKyAgLy8KKyAgSW50RGlzYWJsZShJTlRfUFJDTSk7CisKKyAgLy8KKyAgLy8gUmVnaXN0ZXIgdGhlIGludGVycnVwdCBoYW5kbGVyLgorICAvLworICBJbnRVbnJlZ2lzdGVyKElOVF9QUkNNKTsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBFbmFibGVzIGluZGl2aWR1YWwgUFJDTSBpbnRlcnJ1cHQgc291cmNlcy4KKy8vIQorLy8hIFxwYXJhbSB1bEludEZsYWdzIGlzIHRoZSBiaXQgbWFzayBvZiB0aGUgaW50ZXJydXB0IHNvdXJjZXMgdG8gYmUgZW5hYmxlZC4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gZW5hYmxlcyB0aGUgaW5kaWNhdGVkIEFSQ00gaW50ZXJydXB0IHNvdXJjZXMuICBPbmx5IHRoZQorLy8hIHNvdXJjZXMgdGhhdCBhcmUgZW5hYmxlZCBjYW4gYmUgcmVmbGVjdGVkIHRvIHRoZSBwcm9jZXNzb3IgaW50ZXJydXB0OworLy8hIGRpc2FibGVkIHNvdXJjZXMgaGF2ZSBubyBlZmZlY3Qgb24gdGhlIHByb2Nlc3Nvci4KKy8vIQorLy8hIFRoZSBcZSB1bEludEZsYWdzIHBhcmFtZXRlciBpcyB0aGUgbG9naWNhbCBPUiBvZiBhbnkgb2YgdGhlIGZvbGxvd2luZzoKKy8vISAtXGIgUFJDTV9JTlRfU0xPV19DTEtfQ1RSCisvLyEKKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkIFBSQ01JbnRFbmFibGUodW5zaWduZWQgbG9uZyB1bEludEZsYWdzKQoreworICB1bnNpZ25lZCBsb25nIHVsUmVnVmFsdWU7CisKKyAgaWYodWxJbnRGbGFncyAmIFBSQ01fSU5UX1NMT1dfQ0xLX0NUUiApCisgIHsKKyAgICAvLworICAgIC8vIEVuYWJsZSBQUkNNIGludGVycnVwdAorICAgIC8vCisgICAgSFdSRUcoQVJDTV9CQVNFICsgQVBQU19SQ01fT19BUFBTX1JDTV9JTlRFUlJVUFRfRU5BQkxFKSB8PSAweDQ7CisKKyAgICAvLworICAgIC8vIEVuYWJsZSBSVEMgaW50ZXJydXB0CisgICAgLy8KKyAgICB1bFJlZ1ZhbHVlID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UgKyBISUIzUDNfT19NRU1fSElCX1JUQ19JUlFfRU5BQkxFKTsKKyAgICB1bFJlZ1ZhbHVlIHw9IDB4MTsKKyAgICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UgKyBISUIzUDNfT19NRU1fSElCX1JUQ19JUlFfRU5BQkxFLCB1bFJlZ1ZhbHVlKTsKKyAgfQorfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIERpc2FibGVzIGluZGl2aWR1YWwgUFJDTSBpbnRlcnJ1cHQgc291cmNlcy4KKy8vIQorLy8hIFxwYXJhbSB1bEludEZsYWdzIGlzIHRoZSBiaXQgbWFzayBvZiB0aGUgaW50ZXJydXB0IHNvdXJjZXMgdG8gYmUgZGlzYWJsZWQuCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIGRpc2FibGVzIHRoZSBpbmRpY2F0ZWQgQVJDTSBpbnRlcnJ1cHQgc291cmNlcy4gIE9ubHkgdGhlCisvLyEgc291cmNlcyB0aGF0IGFyZSBlbmFibGVkIGNhbiBiZSByZWZsZWN0ZWQgdG8gdGhlIHByb2Nlc3NvciBpbnRlcnJ1cHQ7CisvLyEgZGlzYWJsZWQgc291cmNlcyBoYXZlIG5vIGVmZmVjdCBvbiB0aGUgcHJvY2Vzc29yLgorLy8hCisvLyEgVGhlIFxlIHVsSW50RmxhZ3MgcGFyYW1ldGVyIGhhcyB0aGUgc2FtZSBkZWZpbml0aW9uIGFzIHRoZSBcZSB1bEludEZsYWdzCisvLyEgcGFyYW1ldGVyIHRvIFBSQ01FbmFibGVJbnRlcnJ1cHQoKS4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkIFBSQ01JbnREaXNhYmxlKHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykKK3sKKyAgdW5zaWduZWQgbG9uZyB1bFJlZ1ZhbHVlOworCisgIGlmKHVsSW50RmxhZ3MgJiBQUkNNX0lOVF9TTE9XX0NMS19DVFIgKQorICB7CisgICAgLy8KKyAgICAvLyBEaXNhYmxlIFBSQ00gaW50ZXJydXB0CisgICAgLy8KKyAgICBIV1JFRyhBUkNNX0JBU0UgKyBBUFBTX1JDTV9PX0FQUFNfUkNNX0lOVEVSUlVQVF9FTkFCTEUpICY9IH4weDQ7CisKKyAgICAvLworICAgIC8vIERpc2FibGUgUlRDIGludGVycnVwdAorICAgIC8vCisgICAgdWxSZWdWYWx1ZSA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SVENfSVJRX0VOQUJMRSk7CisgICAgdWxSZWdWYWx1ZSAmPSB+MHgxOworICAgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRSArIEhJQjNQM19PX01FTV9ISUJfUlRDX0lSUV9FTkFCTEUsIHVsUmVnVmFsdWUpOworICB9Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgR2V0cyB0aGUgY3VycmVudCBpbnRlcnJ1cHQgc3RhdHVzLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBQUkNNIGludGVycnVwdCBzdGF0dXMgb2YgaW50ZXJydXB0cyB0aGF0IGFyZQorLy8hIGFsbG93ZWQgdG8gcmVmbGVjdCB0byB0aGUgcHJvY2Vzc29yLiBUaGUgaW50ZXJydXB0cyBhcmUgY2xlYXJlZCBvbiByZWFkLgorLy8hCisvLyEgXHJldHVybiBSZXR1cm5zIHRoZSBjdXJyZW50IGludGVycnVwdCBzdGF0dXMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordW5zaWduZWQgbG9uZyBQUkNNSW50U3RhdHVzKCkKK3sKKyAgICByZXR1cm4gSFdSRUcoQVJDTV9CQVNFICsgQVBQU19SQ01fT19BUFBTX1JDTV9JTlRFUlJVUFRfU1RBVFVTKTsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBNYXJrIHRoZSBmdW5jdGlvbiBvZiBSVEMgYXMgYmVpbmcgdXNlZAorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBtYXJrcyBpbiBIVyB0aGF0IGZlYXR1cmUgdG8gbWFpbnRhaW4gY2FsZW5kYXIgdGltZSBpbiBkZXZpY2UKKy8vISBpcyBiZWluZyB1c2VkLgorLy8hCisvLyEgU3BlY2lmaWNhbGx5LCB0aGlzIGZlYXR1cmUgcmVzZXJ2ZXMgdXNlcidzIEhJQiBSZWdpc3Rlci0xIGFjY2Vzc2VkIHRocm91Z2gKKy8vISBQUkNNT0NSUmVnaXN0ZXJXcml0ZSgxKSBmb3IgaW50ZXJuYWwgd29yayAvIHB1cnBvc2UsIHRoZXJlZm9yZSwgdGhlIHN0YXRlZAorLy8hIHJlZ2lzdGVyIGlzIG5vdCBhdmFpbGFibGUgdG8gdXNlci4gQWxzbywgdXNlcnMgbXVzdCBub3QgZXhjZXJjaXNlIHRoZSBTbG93CisvLyEgQ2xvY2sgQ291bnRlciBBUEkocyksIGlmIFJUQyBoYXMgYmVlbiBzZXQgZm9yIHVzZS4KKy8vIQorLy8hIFRoZSBSVEMgZmVhdHVyZSwgaWYgc2V0IG9yIG1hcmtlZCwgY2FuIGJlIG9ubHkgcmVzZXQgZWl0aGVyIHRocm91Z2ggcmVib290CisvLyEgb3IgcG93ZXIgY3ljbGUuCisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordm9pZCBQUkNNUlRDSW5Vc2VTZXQoKQoreworICAgICAgICBSVENfVVNFX1NFVCgpOworICAgICAgICByZXR1cm47Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgQXNjZXJ0YWluIHdoZXRoZXIgZnVuY3Rpb24gb2YgUlRDIGlzIGJlaW5nIHVzZWQKKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gaW5kaWNhdGVzIHdoZXRoZXIgZnVuY3Rpb24gb2YgUlRDIGlzIGJlaW5nIHVzZWQgb24gdGhlIGRldmljZQorLy8hIG9yIG5vdC4KKy8vIQorLy8hIFRoaXMgcm91dGluZSBzaG91bGQgYmUgdXRpbGl6ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHNvZnR3YXJlLCB3aGVuIHJldHVybmluZworLy8hIGZyb20gbG93LXBvd2VyLCB0byBjb25maXJtIHRoYXQgUlRDIGhhcyBiZWVuIHB1dCB0byB1c2UgYW5kIG1heSBub3QgbmVlZCB0bworLy8hIHNldCB0aGUgdmFsdWUgb2YgdGhlIFJUQy4KKy8vIQorLy8hIFRoZSBSVEMgZmVhdHVyZSwgaWYgc2V0IG9yIG1hcmtlZCwgY2FuIGJlIG9ubHkgcmVzZXQgZWl0aGVyIHRocm91Z2ggcmVib290CisvLyEgb3IgcG93ZXIgY3ljbGUuCisvLyEKKy8vISBccmV0dXJuIE5vbmUuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordEJvb2xlYW4gUFJDTVJUQ0luVXNlR2V0KCkKK3sKKyAgICAgICAgcmV0dXJuIElTX1JUQ19VU0VEKCk/IHRydWUgOiBmYWxzZTsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBTZXQgdGhlIGNhbGVuZGFyIHRpbWUgaW4gdGhlIGRldmljZS4KKy8vIQorLy8hIFxwYXJhbSB1bFNlY3MgcmVmZXJzIHRvIHRoZSBzZWNvbmRzIHBhcnQgb2YgdGhlICBjYWxlbmRhciB0aW1lCisvLyEgXHBhcmFtIHVzTXNlYyByZWZlcnMgdG8gdGhlIGZyYWN0aW9uYWwgKG1zKSBwYXJ0IG9mIHRoZSBzZWNvbmQKKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgc3BlY2lmaWVkIGNhbGVuZGFyIHRpbWUgaW4gdGhlIGRldmljZS4gVGhlIGNhbGVuZGFyCisvLyEgdGltZSBpcyBvdXRsaW5lZCBpbiB0ZXJtcyBvZiBzZWNvbmRzIGFuZCBtaWxsaXNlY29uZHMuIEhvd2V2ZXIsIHRoZSBkZXZpY2UKKy8vISBtYWtlcyBubyBhc3N1bXB0aW9uIGFib3V0IHRoZSBvcmlnaW4gb3IgcmVmZXJlbmNlIG9mIHRoZSBjYWxlbmRhciB0aW1lLgorLy8hCisvLyEgVGhlIGRldmljZSB1c2VzIHRoZSBpbmRpY2F0ZWQgY2FsZW5kYXIgdmFsdWUgdG8gdXBkYXRlIGFuZCBtYWludGFpbiB0aGUKKy8vISB3YWxsLWNsb2NrIHRpbWUgYWNyb3NzIGFjdGl2ZSBhbmQgbG93IHBvd2VyIHN0YXRlcy4KKy8vIQorLy8hIFRoZSBmdW5jdGlvbiBQUkNNUlRDSW5Vc2VTZXQoKSBtdXN0IGJlIGludm9rZWQgcHJpb3IgdG8gdXNlIG9mIHRoaXMgZmVhdHVyZS4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkIFBSQ01SVENTZXQodW5zaWduZWQgbG9uZyB1bFNlY3MsIHVuc2lnbmVkIHNob3J0IHVzTXNlYykKK3sKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHVsbE1zZWMgPSAwOworCisgICAgICAgIGlmKElTX1JUQ19VU0VEKCkpIHsKKyAgICAgICAgICAgICAgICB1bGxNc2VjID0gUlRDX1U2NE1TRUNfTUsodWxTZWNzLCB1c01zZWMpIC0gU0NDX1U2NE1TRUNfR0VUKCk7CisKKyAgICAgICAgICAgICAgICAgUlRDX1UzMlNFQ1NfUkVHX1dSKFJUQ19TRUNTX0lOX1U2NE1TRUModWxsTXNlYykpOworICAgICAgICAgICAgICAgICBSVENfVTE2TVNFQ19SRUdfV1IoUlRDX01TRUNfSU5fVTY0TVNFQyh1bGxNc2VjKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm47Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgR2V0IHRoZSBpbnN0YW50YW5lb3VzIGNhbGVuZGFyIHRpbWUgZnJvbSB0aGUgZGV2aWNlLgorLy8hCisvLyEgXHBhcmFtIHVsU2VjcyByZWZlcnMgdG8gdGhlIHNlY29uZHMgcGFydCBvZiB0aGUgIGNhbGVuZGFyIHRpbWUKKy8vISBccGFyYW0gdXNNc2VjIHJlZmVycyB0byB0aGUgZnJhY3Rpb25hbCAobXMpIHBhcnQgb2YgdGhlIHNlY29uZAorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBmZXRjaGVzIHRoZSBpbnN0YW50YW5lb3VzIHZhbHVlIG9mIHRoZSB0aWNraW5nIGNhbGVuZGFyIHRpbWUKKy8vISBmcm9tIHRoZSBkZXZpY2UuIFRoZSBjYWxlbmRhciB0aW1lIGlzIG91dGxpbmVkIGluIHRlcm1zIG9mIHNlY29uZHMgYW5kCisvLyEgbWlsbGlzZWNvbmRzLgorLy8hCisvLyEgVGhlIGRldmljZSBwcm92aWRlcyB0aGUgY2FsZW5kYXIgdmFsdWUgdGhhdCBoYXMgYmVlbiBtYWludGFpbmVkIGFjcm9zcworLy8hIGFjdGl2ZSBhbmQgbG93IHBvd2VyIHN0YXRlcy4KKy8vIQorLy8hIFRoZSBmdW5jdGlvbiBQUkNNUlRDU2V0KCkgbXVzdCBoYXZlIGJlZW4gaW52b2tlZCBvbmNlIHRvIHNldCBhIHJlZmVyZW5jZS4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkIFBSQ01SVENHZXQodW5zaWduZWQgbG9uZyAqdWxTZWNzLCB1bnNpZ25lZCBzaG9ydCAqdXNNc2VjKQoreworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdWxsTXNlYyA9IDA7CisKKyAgICAgICAgaWYoSVNfUlRDX1VTRUQoKSkgeworICAgICAgICAgICAgICAgIHVsbE1zZWMgID0gUlRDX1U2NE1TRUNfTUsoUlRDX1UzMlNFQ1NfUkVHX1JEKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVENfVTE2TVNFQ19SRUdfUkQoKSk7CisgICAgICAgICAgICAgICAgdWxsTXNlYyArPSBTQ0NfVTY0TVNFQ19HRVQoKTsKKyAgICAgICAgfQorCisgICAgICAgICp1bFNlY3MgPSBSVENfU0VDU19JTl9VNjRNU0VDKHVsbE1zZWMpOworICAgICAgICAqdXNNc2VjID0gUlRDX01TRUNfSU5fVTY0TVNFQyh1bGxNc2VjKTsKKworICAgICAgICByZXR1cm47Cit9CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgU2V0IGEgY2FsZW5kYXIgdGltZSBhbGFybS4KKy8vIQorLy8hIFxwYXJhbSB1bFNlY3MgcmVmZXJzIHRvIHRoZSBzZWNvbmRzIHBhcnQgb2YgdGhlICBjYWxlbmRhciB0aW1lCisvLyEgXHBhcmFtIHVzTXNlYyByZWZlcnMgdG8gdGhlIGZyYWN0aW9uYWwgKG1zKSBwYXJ0IG9mIHRoZSBzZWNvbmQKKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gc2V0cyBhbiB3YWxsLWNsb2NrIGFsYXJtIGluIHRoZSBkZXZpY2UgdG8gYmUgcmVwb3J0ZWQgZm9yICBhCisvLyEgZnV0dXJpc3RpYyBjYWxlbmRhciB0aW1lLiBUaGUgY2FsZW5kYXIgdGltZSBpcyBvdXRsaW5lZCBpbiB0ZXJtcyBvZiBzZWNvbmRzCisvLyEgYW5kIG1pbGxpc2Vjb25kcy4KKy8vIQorLy8hIFRoZSBkZXZpY2UgcHJvdmlkZXMgdXNlcyB0aGUgY2FsZW5kYXIgdmFsdWUgdGhhdCBoYXMgYmVlbiBtYWludGFpbmVkIGFjcm9zcworLy8hIGFjdGl2ZSBhbmQgbG93IHBvd2VyIHN0YXRlcyB0byByZXBvcnQgYXR0YWlubWVudCBvZiBhbGFybSB0aW1lLgorLy8hCisvLyEgVGhlIGZ1bmN0aW9uIFBSQ01SVENTZXQoKSBtdXN0IGhhdmUgYmVlbiBpbnZva2VkIG9uY2UgdG8gc2V0IGEgcmVmZXJlbmNlLgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQgUFJDTVJUQ01hdGNoU2V0KHVuc2lnbmVkIGxvbmcgdWxTZWNzLCB1bnNpZ25lZCBzaG9ydCB1c01zZWMpCit7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1bGxNc2VjID0gMDsKKworICAgICAgICBpZihJU19SVENfVVNFRCgpKSB7CisgICAgICAgICAgICAgICAgdWxsTXNlYyAgPSBSVENfVTY0TVNFQ19NSyh1bFNlY3MsIHVzTXNlYyk7CisgICAgICAgICAgICAgICAgdWxsTXNlYyAtPSBSVENfVTY0TVNFQ19NSyhSVENfVTMyU0VDU19SRUdfUkQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJUQ19VMTZNU0VDX1JFR19SRCgpKTsKKyAgICAgICAgICAgICAgICBTQ0NfVTY0TVNFQ19NQVRDSF9TRVQoU0VMRUNUX1NDQ19VNDJCSVRTKHVsbE1zZWMpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBHZXQgYSBwcmV2aW91c2x5IHNldCBjYWxlbmRhciB0aW1lIGFsYXJtLgorLy8hCisvLyEgXHBhcmFtIHVsU2VjcyByZWZlcnMgdG8gdGhlIHNlY29uZHMgcGFydCBvZiB0aGUgIGNhbGVuZGFyIHRpbWUKKy8vISBccGFyYW0gdXNNc2VjIHJlZmVycyB0byB0aGUgZnJhY3Rpb25hbCAobXMpIHBhcnQgb2YgdGhlIHNlY29uZAorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBmZXRjaGVzIGZyb20gdGhlIGRldmljZSBhIHdhbGwtY2xvY2sgYWxhcm0gdGhhdCB3b3VsZCAgaGF2ZQorLy8hIGJlZW4gcHJldmlvdXNseSBzZXQgaW4gdGhlIGRldmljZS4gVGhlIGNhbGVuZGFyIHRpbWUgaXMgb3V0bGluZWQgaW4gdGVybXMKKy8vISBvZiBzZWNvbmRzIGFuZCBtaWxsaXNlY29uZHMuCisvLyEKKy8vISBJZiBubyBhbGFybSB3YXMgc2V0IGluIHRoZSBwYXN0LCB0aGVuIHRoaXMgZnVuY3Rpb24gd291bGQgZmV0Y2ggYSByYW5kb20KKy8vISBpbmZvcm1hdGlvbi4KKy8vIQorLy8hIFRoZSBmdW5jdGlvbiBQUkNNUlRDTWF0Y2hTZXQoKSBtdXN0IGhhdmUgYmVlbiBpbnZva2VkIG9uY2UgdG8gc2V0IGFuIGFsYXJtLgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQgUFJDTVJUQ01hdGNoR2V0KHVuc2lnbmVkIGxvbmcgKnVsU2VjcywgdW5zaWduZWQgc2hvcnQgKnVzTXNlYykKK3sKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHVsbE1zZWMgPSAwOworCisgICAgICAgIGlmKElTX1JUQ19VU0VEKCkpIHsKKyAgICAgICAgICAgICAgICB1bGxNc2VjICA9IFNDQ19VNjRNU0VDX01BVENIX0dFVCgpOworICAgICAgICAgICAgICAgIHVsbE1zZWMgKz0gUlRDX1U2NE1TRUNfTUsoUlRDX1UzMlNFQ1NfUkVHX1JEKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVENfVTE2TVNFQ19SRUdfUkQoKSk7CisgICAgICAgIH0KKworICAgICAgICAqdWxTZWNzID0gUlRDX1NFQ1NfSU5fVTY0TVNFQyh1bGxNc2VjKTsKKyAgICAgICAgKnVzTXNlYyA9IFJUQ19NU0VDX0lOX1U2NE1TRUModWxsTXNlYyk7CisKKyAgICAgICAgcmV0dXJuOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIE1DVSBJbml0aWFsaXphdGlvbiBSb3V0aW5lCisvLyEKKy8vISBUaGlzIGZ1bmN0aW9uIGNvbnRhaW5zIGFsbCB0aGUgbWFuZGF0b3J5IGJ1ZyBmaXhlcywgRUNPIGVuYWJsZXMsCisvLyEgaW5pdGlhbGl6YXRpb25zIGZvciBib3RoIENDMzIwMCBhbmQgQ0MzMjIwLgorLy8hCisvLyEgXG5vdGUgXGIgIyMjSU1QT1JUQU5UIyMjIDogVGhpcyBpcyBhIHJvdXRpbmUgd2hpY2ggc2hvdWxkIGJlIG9uZSBvZiB0aGUKKy8vISBmaXJzdCB0aGluZ3MgdG8gYmUgZXhlY3V0ZWQgYWZ0ZXIgY29udHJvbCBjb21lcyB0byBNQ1UgQXBwbGljYXRpb24gY29kZS4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZQorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQgUFJDTUNDMzIwME1DVUluaXQoKQoreworCisgIGlmKCBQUkNNU3lzUmVzZXRDYXVzZUdldCgpICE9IFBSQ01fTFBEU19FWElUICkKKyAgeworICAgIGlmKCAweDAwMDEwMDAxID09IEhXUkVHKDB4MDAwMDA0MDApICkKKyAgICB7CisKKyNpZm5kZWYgUkVNT1ZFX0NDMzIwMF9FU18xXzJfMV9DT0RFCisKKyAgICAgIHVuc2lnbmVkIGxvbmcgdWxSZWdWYWw7CisKKyAgICAgIC8vCisgICAgICAvLyBESUcgRENEQyBORkVUIFNFTCBhbmQgQ09UIG1vZGUgZGlzYWJsZQorICAgICAgLy8KKyAgICAgIEhXUkVHKDB4NDQwMkYwMTApID0gMHgzMDAzMTgyMDsKKyAgICAgIEhXUkVHKDB4NDQwMkYwMEMpID0gMHgwNDAwMDAwMDsKKworICAgICAgVXRpbHNEZWxheSgzMjAwMCk7CisKKyAgICAgIC8vCisgICAgICAvLyBBTkEgRENEQyBjbG9jayBjb25maWcKKyAgICAgIC8vCisgICAgICBIV1JFRygweDQ0MDJGMTFDKSA9IDB4MDk5OworICAgICAgSFdSRUcoMHg0NDAyRjExQykgPSAweDBBQTsKKyAgICAgIEhXUkVHKDB4NDQwMkYxMUMpID0gMHgxQUE7CisKKyAgICAgIC8vCisgICAgICAvLyBQQSBEQ0RDIGNsb2NrIGNvbmZpZworICAgICAgLy8KKyAgICAgIEhXUkVHKDB4NDQwMkYxMjQpID0gMHgwOTk7CisgICAgICBIV1JFRygweDQ0MDJGMTI0KSA9IDB4MEFBOworICAgICAgSFdSRUcoMHg0NDAyRjEyNCkgPSAweDFBQTsKKworICAgICAgLy8KKyAgICAgIC8vIFREIEZsYXNoIHRpbWluZyBjb25maWd1cmF0aW9ucyBpbiBjYXNlIG9mIE1DVSBXRFQgcmVzZXQKKyAgICAgIC8vCisgICAgICBpZigoSFdSRUcoMHg0NDAyRDAwQykgJiAweEZGKSA9PSAweDAwMDAwMDA1KQorICAgICAgeworICAgICAgICAgIEhXUkVHKDB4NDAwRjcwN0MpIHw9IDB4MDE4NDAwODI7CisgICAgICAgICAgSFdSRUcoMHg0MDBGNzBDNCk9IDB4MTsKKyAgICAgICAgICBIV1JFRygweDQwMEY3MEM0KT0gMHgwOworICAgICAgfQorCisgICAgICAvLworICAgICAgLy8gVGFrZSBJMkMgc2VtYXBob3JlCisgICAgICAvLworICAgICAgdWxSZWdWYWwgPSBIV1JFRygweDQwMEY3MDAwKTsKKyAgICAgIHVsUmVnVmFsID0gKHVsUmVnVmFsICYgfjB4MykgfCAweDE7CisgICAgICBIV1JFRygweDQwMEY3MDAwKSA9IHVsUmVnVmFsOworCisgICAgICAvLworICAgICAgLy8gVGFrZSBHUElPIHNlbWFwaG9yZQorICAgICAgLy8KKyAgICAgIHVsUmVnVmFsID0gSFdSRUcoMHg0MDBGNzAzQyk7CisgICAgICB1bFJlZ1ZhbCA9ICh1bFJlZ1ZhbCAmIH4weDNGRikgfCAweDE1NTsKKyAgICAgIEhXUkVHKDB4NDAwRjcwM0MpID0gdWxSZWdWYWw7CisKKyAgICAgIC8vCisgICAgICAvLyBFbmFibGUgMzJLSHogaW50ZXJuYWwgUkMgb3NjaWxsYXRvcgorICAgICAgLy8KKyAgICAgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRStISUIzUDNfT19NRU1fSU5UX09TQ19DT05GLCAweDAwMDAwMTAxKTsKKworICAgICAgLy8KKyAgICAgIC8vIERlbGF5IGZvciBhIGxpdHRsZSBiaXQuCisgICAgICAvLworICAgICAgVXRpbHNEZWxheSg4MDAwKTsKKworICAgICAgLy8KKyAgICAgIC8vIEVuYWJsZSAxNk1IeiBjbG9jaworICAgICAgLy8KKyAgICAgIEhXUkVHKEhJQjFQMl9CQVNFK0hJQjFQMl9PX0NNX09TQ18xNk1fQ09ORklHKSA9IDB4MDAwMTAwMDg7CisKKyAgICAgIC8vCisgICAgICAvLyBEZWxheSBmb3IgYSBsaXR0bGUgYml0LgorICAgICAgLy8KKyAgICAgIFV0aWxzRGVsYXkoODAwMCk7CisKKyNlbmRpZiAvLyBSRU1PVkVfQ0MzMjAwX0VTXzFfMl8xX0NPREUKKworICAgIH0KKyAgICBlbHNlCisgICAgeworCisgICAgICB1bnNpZ25lZCBsb25nIHVsUmVnVmFsdWU7CisKKyAgICAgIC8vCisgICAgICAvLyBESUcgRENEQyBMUERTIEVDTyBFbmFibGUKKyAgICAgIC8vCisgICAgICBIV1JFRygweDQ0MDJGMDY0KSB8PSAweDgwMDAwMDsKKworICAgICAgLy8KKyAgICAgIC8vIEVuYWJsZSBoaWJlcm5hdGUgRUNPIGZvciBQRyAxLjMyIGRldmljZXMgb25seS4gV2l0aCB0aGlzIEVDTyBlbmFibGVkLAorICAgICAgLy8gYW55IGhpYmVybmF0ZSB3YWtldXAgc291cmNlIHdpbGwgYmUga2VwdCBtYWtlZCB1bnRpbCB0aGUgZGV2aWNlIGVudGVycworICAgICAgLy8gaGliZXJuYXRlIGNvbXBsZXRlbHkgKGFuYWxvZyArIGRpZ2l0YWwpCisgICAgICAvLworICAgICAgdWxSZWdWYWx1ZSA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFICArIEhJQjNQM19PX01FTV9ISUJfUkVHMCk7CisgICAgICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UgKyBISUIzUDNfT19NRU1fSElCX1JFRzAsIHVsUmVnVmFsdWUgfCAoMTw8NCkpOworCisgICAgICAvLworICAgICAgLy8gSGFuZGxpbmcgdGhlIGNsb2NrIHN3aXRjaGluZyAoZm9yIDEuMzIgb25seSkKKyAgICAgIC8vCisgICAgICBIV1JFRygweDQ0MDJFMTZDKSB8PSAweDNDOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBFbmFibGUgdURNQQorICAgIC8vCisgICAgUFJDTVBlcmlwaGVyYWxDbGtFbmFibGUoUFJDTV9VRE1BLFBSQ01fUlVOX01PREVfQ0xLKTsKKworICAgIC8vCisgICAgLy8gUmVzZXQgdURNQQorICAgIC8vCisgICAgUFJDTVBlcmlwaGVyYWxSZXNldChQUkNNX1VETUEpOworCisgICAgLy8KKyAgICAvLyBEaXNhYmxlIHVETUEKKyAgICAvLworICAgIFBSQ01QZXJpcGhlcmFsQ2xrRGlzYWJsZShQUkNNX1VETUEsUFJDTV9SVU5fTU9ERV9DTEspOworCisgICAgLy8KKyAgICAvLyBFbmFibGUgUlRDCisgICAgLy8KKyAgICBpZihQUkNNU3lzUmVzZXRDYXVzZUdldCgpPT0gUFJDTV9QT1dFUl9PTikKKyAgICB7CisgICAgICAgIFBSQ01ISUJSZWdXcml0ZSgweDQ0MDJGODA0LDB4MSk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBTV0QgbW9kZQorICAgIC8vCisgICAgaWYoKChIV1JFRygweDQ0MDJGMEM4KSAmIDB4RkYpID09IDB4MikpCisgICAgeworICAgICAgICBIV1JFRygweDQ0MDJFMTEwKSA9ICgoSFdSRUcoMHg0NDAyRTExMCkgJiB+MHhDMEYpIHwgMHgyKTsKKyAgICAgICAgSFdSRUcoMHg0NDAyRTExNCkgPSAoKEhXUkVHKDB4NDQwMkUxMTApICYgfjB4QzBGKSB8IDB4Mik7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBPdmVycmlkZSBKVEFHIG11eAorICAgIC8vCisgICAgSFdSRUcoMHg0NDAyRTE4NCkgfD0gMHgyOworCisgICAgLy8KKyAgICAvLyBDaGFuZ2UgVUFSVCBwaW5zKDU1LDU3KSBtb2RlIHRvIFBJTl9NT0RFXzAgaWYgdGhleSBhcmUgaW4gUElOX01PREVfMQorICAgIC8vCisgICAgaWYoIChIV1JFRygweDQ0MDJFMEE0KSAmIDB4RikgPT0gMHgxKQorICAgIHsKKyAgICAgICAgSFdSRUcoMHg0NDAyRTBBNCkgPSAoKEhXUkVHKDB4NDQwMkUwQTQpICYgfjB4RikpOworICAgIH0KKworICAgIGlmKCAoSFdSRUcoMHg0NDAyRTBBOCkgJiAweEYpID09IDB4MSkKKyAgICB7CisgICAgICAgIEhXUkVHKDB4NDQwMkUwQTgpID0gKChIV1JFRygweDQ0MDJFMEE4KSAmIH4weEYpKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIERJRyBEQ0RDIFZPVVQgdHJpbSBzZXR0aW5ncyBiYXNlZCBvbiBQUk9DRVNTIElORElDQVRPUgorICAgIC8vCisgICAgaWYoKChIV1JFRygweDQ0MDJEQzc4KSA+PiAyMikgJiAweEYpID09IDB4RSkKKyAgICB7CisgICAgICAgIEhXUkVHKDB4NDQwMkYwQjApID0gKChIV1JFRygweDQ0MDJGMEIwKSAmIH4oMHgwMEZDMDAwMCkpfCgweDMyIDw8IDE4KSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEhXUkVHKDB4NDQwMkYwQjApID0gKChIV1JFRygweDQ0MDJGMEIwKSAmIH4oMHgwMEZDMDAwMCkpfCgweDI5IDw8IDE4KSk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBFbmFibGUgU09GVCBSRVNUQVJUIGluIGNhc2Ugb2YgRElHIERDREMgY29sbGFwc2UKKyAgICAvLworICAgIEhXUkVHKDB4NDQwMkZDNzQpICY9IH4oMHgxMDAwMDAwMCk7CisKKyAgICAvLworICAgIC8vIFJlcXVpcmVkIG9ubHkgaWYgUk9NIHZlcnNpb24gaXMgbG93ZXIgdGhhbiAyLngueAorICAgIC8vCisgICAgaWYoIChIV1JFRygweDAwMDAwNDAwKSAmIDB4RkZGRikgPCAyICkKKyAgICB7CisgICAgICAvLworICAgICAgLy8gRGlzYWJsZSB0aGUgc2xlZXAgZm9yIEFOQSBEQ0RDCisgICAgICAvLworICAgICAgSFdSRUcoMHg0NDAyRjBBOCkgfD0gMHgwMDAwMDAwNCA7CisgICAgfQorICAgIGVsc2UgaWYoIChIV1JFRygweDAwMDAwNDAwKSA+PiAxNikgID49IDEgKQorICAgIHsKKyAgICAgIC8vCisgICAgICAvLyBFbmFibGUgTldQIGZvcmNlIHJlc2V0IGFuZCBISUIgb24gV0RUIHJlc2V0CisgICAgICAvLyBFbmFibGUgZGlyZWN0IGJvb3QgcGF0aCBmb3IgZmxhc2gKKyAgICAgIC8vCisgICAgICBIV1JFRyhPQ1BfU0hBUkVEX0JBU0UgKyBPQ1BfU0hBUkVEX09fU1BBUkVfUkVHXzgpIHw9ICgoNzw8NSkgfCAweDEpOworICAgICAgaWYoKEhXUkVHKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SRUcyKSAmIDB4MSkgKQorICAgICAgeworICAgICAgICAgIEhXUkVHKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SRUcyKSAmPSB+MHgxOworICAgICAgICAgIEhXUkVHKE9DUF9TSEFSRURfQkFTRSArIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfOCkgfD0gKDE8PDkpOworCisgICAgICAgICAgLy8KKyAgICAgICAgICAvLyBDbGVhciB0aGUgUlRDIGhpYiB3YWtlIHVwIHNvdXJjZQorICAgICAgICAgIC8vCisgICAgICAgICAgSFdSRUcoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX0hJQl9SVENfV0FLRV9FTikgJj0gfjB4MTsKKworICAgICAgICAgIC8vCisgICAgICAgICAgLy8gUmVzZXQgUlRDIG1hdGNoIHZhbHVlCisgICAgICAgICAgLy8KKyAgICAgICAgICBIV1JFRyhISUIzUDNfQkFTRSArIEhJQjNQM19PX01FTV9ISUJfUlRDX1dBS0VfTFNXX0NPTkYpID0gMDsKKyAgICAgICAgICBIV1JFRyhISUIzUDNfQkFTRSArIEhJQjNQM19PX01FTV9ISUJfUlRDX1dBS0VfTVNXX0NPTkYpID0gMDsKKworICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGxvbmcgZWZ1c2VfcmVnMjsKKyAgICB1bnNpZ25lZCBsb25nIHVsRGV2TWFqb3JWZXIsIHVsRGV2TWlub3JWZXI7CisgICAgLy8KKyAgICAvLyBSZWFkIHRoZSBkZXZpY2UgaWRlbnRpZmljYXRpb24gcmVnaXN0ZXIKKyAgICAvLworICAgIGVmdXNlX3JlZzI9IEhXUkVHKEdQUkNNX0JBU0UgKyBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHMik7CisKKyAgICAvLworICAgIC8vIFJlYWQgdGhlIFJPTSBtb2pvciBhbmQgbWlub3IgdmVyc2lvbgorICAgIC8vCisgICAgdWxEZXZNYWpvclZlciA9ICgoZWZ1c2VfcmVnMiA+PiAyOCkgJiAweEYpOworICAgIHVsRGV2TWlub3JWZXIgPSAoKGVmdXNlX3JlZzIgPj4gMjQpICYgMHhGKTsKKworICAgIGlmKCgodWxEZXZNYWpvclZlciA9PSAweDMpICYmICh1bERldk1pbm9yVmVyID09IDApKSB8fCAodWxEZXZNYWpvclZlciA8IDB4MykpCisgICAgeworICAgICAgdW5zaWduZWQgaW50IFNjcmF0Y2gsIFByZVJlZ3VsYXRlZE1vZGU7CisKKyAgICAgIC8vIDB4NDQwMkY4NDAgPT4gNnRoIGJpdCDigJwx4oCdIGluZGljYXRlcyBkZXZpY2UgaXMgaW4gcHJlLXJlZ3VsYXRlZCBtb2RlLgorICAgICAgUHJlUmVndWxhdGVkTW9kZSA9IChIV1JFRygweDQ0MDJGODQwKSA+PiA2KSAmIDE7CisKKyAgICAgIGlmKCBQcmVSZWd1bGF0ZWRNb2RlKQorICAgICAgeworICAgICAgICBTY3JhdGNoID0gSFdSRUcoMHg0NDAyRjAyOCk7CisgICAgICAgIFNjcmF0Y2ggJj0gMHhGRkZGRkY3RjsgLy8gPDc6Nz4gPSAwCisgICAgICAgIEhXUkVHKDB4NDQwMkYwMjgpID0gU2NyYXRjaDsKKworICAgICAgICBTY3JhdGNoID0gSFdSRUcoMHg0NDAyRjAxMCk7CisgICAgICAgIFNjcmF0Y2ggJj0gMHgwRkZGRkZGRjsgLy8gPDMxOjI4PiA9IDAKKyAgICAgICAgU2NyYXRjaCB8PSAweDEwMDAwMDAwOyAvLyA8MzE6Mjg+ID0gMQorICAgICAgICBIV1JFRygweDQ0MDJGMDEwKSA9IFNjcmF0Y2g7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIFNjcmF0Y2ggPSBIV1JFRygweDQ0MDJGMDI0KTsKKworICAgICAgICBTY3JhdGNoICY9IDB4RkZGRkZGRjA7IC8vIDwzOjA+ID0gMAorICAgICAgICBTY3JhdGNoIHw9IDB4MDAwMDAwMDE7IC8vIDwzOjA+ID0gMQorICAgICAgICBTY3JhdGNoICY9IDB4RkZGRkYwRkY7IC8vIDwxMTo4PiA9IDAwMDAKKyAgICAgICAgU2NyYXRjaCB8PSAweDAwMDAwNTAwOyAvLyA8MTE6OD4gPSAwMTAxCisgICAgICAgIFNjcmF0Y2ggJj0gMHhGRkZFN0ZGRjsgLy8gPDE2OjE1PiA9IDAwMDAKKyAgICAgICAgU2NyYXRjaCB8PSAweDAwMDEwMDAwOyAvLyA8MTY6MTU+ID0gMTAKKworICAgICAgICBIV1JFRygweDQ0MDJGMDI0KSA9IFNjcmF0Y2g7CisKKyAgICAgICAgU2NyYXRjaCA9IEhXUkVHKDB4NDQwMkYwMjgpOworCisgICAgICAgIFNjcmF0Y2ggJj0gMHhGRkZGRkY3RjsgLy8gPDc6Nz4gPSAwCisgICAgICAgIFNjcmF0Y2ggJj0gMHgwRkZGRkZGRjsgLy8gPDMxOjI4PiA9IDAKKyAgICAgICAgU2NyYXRjaCAmPSAweEZGMEZGRkZGOyAvLyA8MjM6MjA+ID0gMAorICAgICAgICBTY3JhdGNoIHw9IDB4MDAzMDAwMDA7IC8vIDwyMzoyMD4gPSAwMDExCisgICAgICAgIFNjcmF0Y2ggJj0gMHhGRkYwRkZGRjsgLy8gPDE5OjE2PiA9IDAKKyAgICAgICAgU2NyYXRjaCB8PSAweDAwMDMwMDAwOyAvLyA8MTk6MTY+ID0gMDAxMQorCisgICAgICAgIEhXUkVHKDB4NDQwMkYwMjgpID0gU2NyYXRjaDsKKyAgICAgICAgSFdSRUcoMHg0NDAyRjAxMCkgJj0gMHgwRkZGRkZGRjsgLy8gPDMxOjI4PiA9IDAKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIHVuc2lnbmVkIGludCBTY3JhdGNoLCBQcmVSZWd1bGF0ZWRNb2RlOworCisgICAgICAvLyAweDQ0MDJGODQwID0+IDZ0aCBiaXQg4oCcMeKAnSBpbmRpY2F0ZXMgZGV2aWNlIGlzIGluIHByZS1yZWd1bGF0ZWQgbW9kZS4KKyAgICAgIFByZVJlZ3VsYXRlZE1vZGUgPSAoSFdSRUcoMHg0NDAyRjg0MCkgPj4gNikgJiAxOworCisgICAgICBTY3JhdGNoID0gSFdSRUcoMHg0NDAyRjAyOCk7CisgICAgICBTY3JhdGNoICY9IDB4RkZGRkZGN0Y7IC8vIDw3Ojc+ID0gMAorICAgICAgSFdSRUcoMHg0NDAyRjAyOCkgPSBTY3JhdGNoOworCisgICAgICBIV1JFRygweDQ0MDJGMDEwKSAmPSAweDBGRkZGRkZGOyAvLyA8MzE6Mjg+ID0gMAorICAgICAgaWYoIFByZVJlZ3VsYXRlZE1vZGUpCisgICAgICB7CisgICAgICAgIEhXUkVHKDB4NDQwMkYwMTApIHw9IDB4MTAwMDAwMDA7IC8vIDwzMToyOD4gPSAxCisgICAgICB9CisgICAgfQorICB9CisgIGVsc2UKKyAgeworICAgIHVuc2lnbmVkIGxvbmcgdWxSZWdWYWw7CisKKyAgICAvLworICAgIC8vIEkyQyBDb25maWd1cmF0aW9uCisgICAgLy8KKyAgICB1bFJlZ1ZhbCA9IEhXUkVHKENPTU1PTl9SRUdfQkFTRSArIENPTU1PTl9SRUdfT19JMkNfUHJvcGVydGllc19SZWdpc3Rlcik7CisgICAgdWxSZWdWYWwgPSAodWxSZWdWYWwgJiB+MHgzKSB8IDB4MTsKKyAgICBIV1JFRyhDT01NT05fUkVHX0JBU0UgKyBDT01NT05fUkVHX09fSTJDX1Byb3BlcnRpZXNfUmVnaXN0ZXIpID0gdWxSZWdWYWw7CisKKyAgICAvLworICAgIC8vIEdQSU8gY29uZmlndXJhdGlvbgorICAgIC8vCisgICAgdWxSZWdWYWwgPSBIV1JFRyhDT01NT05fUkVHX0JBU0UgKyBDT01NT05fUkVHX09fR1BJT19wcm9wZXJ0aWVzX3JlZ2lzdGVyKTsKKyAgICB1bFJlZ1ZhbCA9ICh1bFJlZ1ZhbCAmIH4weDNGRikgfCAweDE1NTsKKyAgICBIV1JFRyhDT01NT05fUkVHX0JBU0UgKyBDT01NT05fUkVHX09fR1BJT19wcm9wZXJ0aWVzX3JlZ2lzdGVyKSA9IHVsUmVnVmFsOworCisgIH0KK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBSZWFkcyAzMi1iaXQgdmFsdWUgZnJvbSByZWdpc3RlciBhdCBzcGVjaWZpZWQgYWRkcmVzcworLy8hCisvLyEgXHBhcmFtIHVsUmVnQWRkciBpcyB0aGUgYWRkcmVzcyBvZiByZWdpc3RlciB0byBiZSByZWFkLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiByZWFkcyAzMi1iaXQgdmFsdWUgZnJvbSB0aGUgcmVnaXN0ZXIgYXMgc3BlY2lmaWVkIGJ5CisvLyEgXGUgdWxSZWdBZGRyLgorLy8hCisvLyEgXHJldHVybiBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit1bnNpZ25lZCBsb25nIFBSQ01ISUJSZWdSZWFkKHVuc2lnbmVkIGxvbmcgdWxSZWdBZGRyKQoreworICB1bnNpZ25lZCBsb25nIHVsVmFsdWU7CisKKyAgLy8KKyAgLy8gUmVhZCB0aGUgUmVnIHZhbHVlCisgIC8vCisgIHVsVmFsdWUgPSBIV1JFRyh1bFJlZ0FkZHIpOworCisgIC8vCisgIC8vIFdhaXQgZm9yIDIwMCB1U2VjCisgIC8vCisgIFV0aWxzRGVsYXkoKDgwKjIwMCkvMyk7CisKKyAgLy8KKyAgLy8gUmV0dXJuIHRoZSB2YWx1ZQorICAvLworICByZXR1cm4gdWxWYWx1ZTsKK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBXcml0ZXMgMzItYml0IHZhbHVlIHRvIHJlZ2lzdGVyIGF0IHNwZWNpZmllZCBhZGRyZXNzCisvLyEKKy8vISBccGFyYW0gdWxSZWdBZGRyIGlzIHRoZSBhZGRyZXNzIG9mIHJlZ2lzdGVyIHRvIGJlIHJlYWQuCisvLyEgXHBhcmFtIHVsVmFsdWUgaXMgdGhlIDMyLWJpdCB2YWx1ZSB0byBiZSB3cml0dGVuLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiB3cml0ZXMgMzItYml0IHZhbHVlIHBhc3NlZCBhcyBcZSB1bFZhbHVlIHRvIHRoZSByZWdpc3RlciBhcworLy8hIHNwZWNpZmllZCBieSBcZSB1bFJlZ0FkZHIKKy8vIQorLy8hIFxyZXR1cm4gTm9uZQorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQgUFJDTUhJQlJlZ1dyaXRlKHVuc2lnbmVkIGxvbmcgdWxSZWdBZGRyLCB1bnNpZ25lZCBsb25nIHVsVmFsdWUpCit7CisgIC8vCisgIC8vIFJlYWQgdGhlIFJlZyB2YWx1ZQorICAvLworICBIV1JFRyh1bFJlZ0FkZHIpID0gdWxWYWx1ZTsKKworICAvLworICAvLyBXYWl0IGZvciAyMDAgdVNlYworICAvLworICBVdGlsc0RlbGF5KCg4MCoyMDApLzMpOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIFxwYXJhbSB1bERpdmlkZXIgaXMgY2xvY2sgZnJlcXVlbmN5IGRpdmlkZXIgdmFsdWUKKy8vISBccGFyYW0gdWxXaWR0aCBpcyB0aGUgd2lkdGggb2YgdGhlIGhpZ2ggcHVsc2UKKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgaW5wdXQgZnJlcXVlbmN5IGZvciBjYW1lcmEgbW9kdWxlLgorLy8hCisvLyEgVGhlIGZyZXF1ZW5jeSBpcyBjYWxjdWxhdGVkIGFzIGZvbGxvd3M6CisvLyEKKy8vISAgICAgICAgZl9vdXQgPSAyNDBNSHovdWxEaXZpZGVyOworLy8hCisvLyEgVGhlIHBhcmFtZXRlciBcZSB1bFdpZHRoIHNldHMgdGhlIHdpZHRoIG9mIHRoZSBoaWdoIHB1bHNlLgorLy8hCisvLyEgRm9yIGUuZy46CisvLyEKKy8vISAgICAgdWxEaXZpZGVyID0gNDsKKy8vISAgICAgdWxXaWR0aCAgID0gMjsKKy8vIQorLy8hICAgICBmX291dCA9IDMwIE1IeiBhbmQgNTAlIGR1dHkgY3ljbGUKKy8vIQorLy8hIEFuZCwKKy8vIQorLy8hICAgICB1bERpdmlkZXIgPSA0OworLy8hICAgICB1bFdpZHRoICAgPSAxOworLy8hCisvLyEgICAgIGZfb3V0ID0gMzAgTUh6IGFuZCAyNSUgZHV0eSBjeWNsZQorLy8hCisvLyEgXHJldHVybiAwIG9uIHN1Y2Nlc3MsIDEgb24gZXJyb3IKKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit1bnNpZ25lZCBsb25nIFBSQ01DYW1lcmFGcmVxU2V0KHVuc2lnbmVkIGNoYXIgdWxEaXZpZGVyLCB1bnNpZ25lZCBjaGFyIHVsV2lkdGgpCit7CisgICAgaWYodWxEaXZpZGVyID4gdWxXaWR0aCAmJiB1bFdpZHRoICE9IDAgKQorICAgIHsKKyAgICAgIC8vCisgICAgICAvLyBTZXQgIHRoZSBoaWZoIHB1bHNlIHdpZHRoCisgICAgICAvLworICAgICAgSFdSRUcoQVJDTV9CQVNFICsKKyAgICAgICAgICAgIEFQUFNfUkNNX09fQ0FNRVJBX0NMS19HRU4pID0gKCgodWxXaWR0aCAmIDB4MDcpIC0xKSA8PCA4KTsKKworICAgICAgLy8KKyAgICAgIC8vIFNldCB0aGUgbG93IHB1bHNlIHdpZHRoCisgICAgICAvLworICAgICAgSFdSRUcoQVJDTV9CQVNFICsKKyAgICAgICAgICAgIEFQUFNfUkNNX09fQ0FNRVJBX0NMS19HRU4pID0gKCh1bERpdmlkZXIgLSB1bFdpZHRoIC0gMSkgJiAweDA3KTsKKyAgICAgIC8vCisgICAgICAvLyBSZXR1cm4gc3VjY2VzcworICAgICAgLy8KKyAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vCisgICAgLy8gU3VjY2VzczsKKyAgICAvLworICAgIHJldHVybiAxOworfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIEVuYWJsZSB0aGUgSU8gdmFsdWUgcmV0ZW50aW9uCisvLyEKKy8vISBccGFyYW0gdWxJT1JldEdycEZsYWdzIGlzIG9uZSBvZiB0aGUgdmFsaWQgSU8gZ3JvdXBzLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBlbmFibGVzIHRoZSBJTyByZXRlbnRpb24gZm9yIGdyb3VwIG9mIHBpbnMgYXMgc3BlY2lmaWVkIGJ5CisvLyEgXGUgdWxJT1JldEdycEZsYWdzIHBhcmFtZXRlci4gRW5hYmxpbmcgcmV0ZW50aW9uIHdpbGwgaW1tZWRpYXRlbHkgbG9jayB0aGUKKy8vISBkaWdpdGFsIHBpbnMsIGluIHRoZSBzcGVjaWZpZWQgZ3JvdXAsIHRvIHRoZWlyIGN1cnJlbnQgc3RhdGUgKDAgb3IgMSkuCisvLyEgT3V0cHV0IHBpbnMgY2FuIG9ubHkgYmUgZHJpdmVuIHdoZW4gcmV0ZW50aW9uIGlzIGRpc2FibGVkLgorLy8hCisvLyEgVGhlIHBhcmFtZXRlciBcZSB1bElPUmV0R3JwRmxhZ3MgY2FuIGJlIGxvZ2ljYWwgT1Igb2Ygb25lIG9yCisvLyEgbW9yZSBvZiB0aGUgZm9sbG93aW5nOgorLy8hIC1cYiBQUkNNX0lPX1JFVF9HUlBfMCAtIEFsbCB0aGUgcGlucyBleGNlcHQgc0ZsYXNoIGFuZCBKVEFHIGludGVyZmFjZQorLy8hIC1cYiBQUkNNX0lPX1JFVF9HUlBfMSAtIHNGbGFzaCBpbnRlcmZhY2UgcGlucyAxMSwxMiwxMywxNAorLy8hIC1cYiBQUkNNX0lPX1JFVF9HUlBfMiAtIEpUQUcgVERJIGFuZCBURE8gaW50ZXJmYWNlIHBpbnMgMTYsMTcKKy8vISAtXGIgUFJDTV9JT19SRVRfR1JQXzMgLSBKVEFHIFRDSyBhbmQgVE1TIGludGVyZmFjZSBwaW5zIDE5LDIwCisvLyEKKy8vISBcbm90ZSBVc2UgY2FzZSBpcyB0byBwYXJrIHRoZSBwaW5zIHdoZW4gZW50ZXJpbmcgSElCLgorLy8hCisvLyEgXHJldHVybiBOb25lLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQgUFJDTUlPUmV0ZW50aW9uRW5hYmxlKHVuc2lnbmVkIGxvbmcgdWxJT1JldEdycEZsYWdzKQoreworICB1bnNpZ25lZCBsb25nIHVsUmVnVmFsOworCisgIC8vCisgIC8vIFN1cHBvcnRlZCBvbmx5IGluIEVTMi4wMCBhbmQgTGF0ZXIgZGV2aWNlcyBpLmUuIFJPTSBWZXJzaW9uIDIueC54IG9yIGdyZWF0ZXIKKyAgLy8KKyAgaWYoIChIV1JFRygweDAwMDAwNDAwKSAmIDB4RkZGRikgPj0gMiApCisgIHsKKyAgICAvLworICAgIC8vIERpc2FibGUgSU8gUGFkIHRvIE9ESSBQYXRoCisgICAgLy8KKyAgICBIV1JFRyhPQ1BfU0hBUkVEX0JBU0UgKyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ01OX0NPTkZJRykgfD0gMHgwMDAwMUQwMDsKKworICAgIC8vCisgICAgLy8gMGInMCBpbiBiaXQgNSBmb3IgSlRBRyBQQURTCisgICAgLy8gMGInMCBpbiBiaXQgMCBmb3IgYWxsIG90aGVyIElPcworICAgIC8vCisgICAgSFdSRUcoT0NQX1NIQVJFRF9CQVNFICsgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NNTl9DT05GSUcpICY9IH4oMHgwMDAwMDAyMyk7CisKKyAgICAvLworICAgIC8vIEVuYWJsZSByZXRlbnRpb24gZm9yIEdSUDAKKyAgICAvLworICAgIGlmKCB1bElPUmV0R3JwRmxhZ3MgJiBQUkNNX0lPX1JFVF9HUlBfMCApCisgICAgeworICAgICAgdWxSZWdWYWwgID0gUFJDTUhJQlJlZ1JlYWQoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX1BBRF9PRU5fUkVUMzNfQ09ORik7CisgICAgICB1bFJlZ1ZhbCB8PSAweDU7CisgICAgICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX1BBRF9PRU5fUkVUMzNfQ09ORix1bFJlZ1ZhbCk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBFbmFibGUgcmV0ZW50aW9uIGZvciBHUlAxCisgICAgLy8KKyAgICBpZiggdWxJT1JldEdycEZsYWdzICYgUFJDTV9JT19SRVRfR1JQXzEgKQorICAgIHsKKyAgICAgIHVsUmVnVmFsICA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFICArIEhJQjNQM19PX01FTV9ISUJfUkVHMCk7CisgICAgICB1bFJlZ1ZhbCB8PSAoKDB4Mzw8NSkpOworICAgICAgUFJDTUhJQlJlZ1dyaXRlKEhJQjNQM19CQVNFICArIEhJQjNQM19PX01FTV9ISUJfUkVHMCx1bFJlZ1ZhbCk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBFbmFibGUgcmV0ZW50aW9uIGZvciBHUlAyCisgICAgLy8KKyAgICBpZiggdWxJT1JldEdycEZsYWdzICYgUFJDTV9JT19SRVRfR1JQXzIgKQorICAgIHsKKyAgICAgIHVsUmVnVmFsICA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFICArIEhJQjNQM19PX01FTV9KVEFHX0NPTkYpOworICAgICAgdWxSZWdWYWwgfD0gMHgwMDAwMDEwMTsKKyAgICAgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRSAgKyBISUIzUDNfT19NRU1fSlRBR19DT05GLHVsUmVnVmFsKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIEVuYWJsZSByZXRlbnRpb24gZm9yIEdSUDMKKyAgICAvLworICAgIGlmKCB1bElPUmV0R3JwRmxhZ3MgJiBQUkNNX0lPX1JFVF9HUlBfMyApCisgICAgeworICAgICAgIHVsUmVnVmFsICA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFICArIEhJQjNQM19PX01FTV9KVEFHX0NPTkYpOworICAgICAgIHVsUmVnVmFsIHw9IDB4MDAwMDAyMDQ7CisgICAgICAgUFJDTUhJQlJlZ1dyaXRlKEhJQjNQM19CQVNFICArIEhJQjNQM19PX01FTV9KVEFHX0NPTkYsdWxSZWdWYWwpOworICAgIH0KKyAgfQorfQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIERpc2FibGUgdGhlIElPIHZhbHVlIHJldGVudGlvbgorLy8hCisvLyEgXHBhcmFtIHVsSU9SZXRHcnBGbGFncyBpcyBvbmUgb2YgdGhlIHZhbGlkIElPIGdyb3Vwcy4KKy8vIQorLy8hIFRoaXMgZnVuY3Rpb24gZGlzYWJsZSB0aGUgSU8gcmV0ZW50aW9uIGZvciBncm91cCBvZiBwaW5zIGFzIHNwZWNpZmllZCBieQorLy8hIFxlIHVsSU9SZXRHcnBGbGFncyBwYXJhbWV0ZXIuIERpc2FibGluZyByZXRlbnRpb24gd2lsbCB1bmxvY2sgdGhlCisvLyEgZGlnaXRhbCBwaW5zIGluIHRoZSBzcGVjaWZpZWQgZ3JvdXAuIE91dHB1dCBwaW5zIGNhbiBvbmx5IGJlIGRyaXZlbiB3aGVuCisvLyEgcmV0ZW50aW9uIGlzIGRpc2FibGVkLgorLy8hCisvLyEgVGhlIHBhcmFtZXRlciBcZSB1bElPUmV0R3JwRmxhZ3MgY2FuIGJlIGxvZ2ljYWwgT1Igb2Ygb25lIG9yCisvLyEgbW9yZSBvZiB0aGUgZm9sbG93aW5nOgorLy8hIC1cYiBQUkNNX0lPX1JFVF9HUlBfMCAtIEFsbCB0aGUgcGlucyBleGNlcHQgc0ZsYXNoIGFuZCBKVEFHIGludGVyZmFjZQorLy8hIC1cYiBQUkNNX0lPX1JFVF9HUlBfMSAtIHNGbGFzaCBpbnRlcmZhY2UgcGlucyAxMSwxMiwxMywxNAorLy8hIC1cYiBQUkNNX0lPX1JFVF9HUlBfMiAtIEpUQUcgVERJIGFuZCBURE8gaW50ZXJmYWNlIHBpbnMgMTYsMTcKKy8vISAtXGIgUFJDTV9JT19SRVRfR1JQXzMgLSBKVEFHIFRDSyBhbmQgVE1TIGludGVyZmFjZSBwaW5zIDE5LDIwCisvLyEKKy8vISBcbm90ZSBVc2UgY2FzZSBpcyB0byB1bi1wYXJrIHRoZSBwaW5zIHdoZW4gZXhpdGluZyBISUIKKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit2b2lkIFBSQ01JT1JldGVudGlvbkRpc2FibGUodW5zaWduZWQgbG9uZyB1bElPUmV0R3JwRmxhZ3MpCit7CisgIHVuc2lnbmVkIGxvbmcgdWxSZWdWYWw7CisKKyAgLy8KKyAgLy8gU3VwcG9ydGVkIG9ubHkgaW4gRVMyLjAwIGFuZCBMYXRlciBkZXZpY2VzIGkuZS4gUk9NIFZlcnNpb24gMi54Lnggb3IgZ3JlYXRlcgorICAvLworICBpZiggKEhXUkVHKDB4MDAwMDA0MDApICYgMHhGRkZGKSA+PSAyICkKKyAgeworCisgICAgLy8KKyAgICAvLyBFbmFibGUgSU8gUGFkIHRvIE9ESSBQYXRoCisgICAgLy8KKyAgICBIV1JFRyhPQ1BfU0hBUkVEX0JBU0UgKyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ01OX0NPTkZJRykgJj0gfigweDAwMDAxRDAwKTsKKworICAgIC8vCisgICAgLy8gMGInMSBpbiBiaXQgNSBmb3IgSlRBRyBQQURTCisgICAgLy8gMGInMSBpbiBiaXQgMCBmb3IgYWxsIG90aGVyIElPcworICAgIC8vCisgICAgSFdSRUcoT0NQX1NIQVJFRF9CQVNFICsgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NNTl9DT05GSUcpIHw9IDB4MDAwMDAwMjM7CisKKyAgICAvLworICAgIC8vIERpc2FibGUgcmV0ZW50aW9uIGZvciBHUlAwCisgICAgLy8KKyAgICBpZiggdWxJT1JldEdycEZsYWdzICYgUFJDTV9JT19SRVRfR1JQXzAgKQorICAgIHsKKyAgICAgIHVsUmVnVmFsICA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9QQURfT0VOX1JFVDMzX0NPTkYpOworICAgICAgdWxSZWdWYWwgJj0gfjB4NTsKKyAgICAgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRStISUIzUDNfT19NRU1fUEFEX09FTl9SRVQzM19DT05GLHVsUmVnVmFsKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIERpc2FibGUgcmV0ZW50aW9uIGZvciBHUlAxCisgICAgLy8KKyAgICBpZiggdWxJT1JldEdycEZsYWdzICYgUFJDTV9JT19SRVRfR1JQXzEgKQorICAgIHsKKyAgICAgIHVsUmVnVmFsICA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SRUcwKTsKKyAgICAgIHVsUmVnVmFsICY9IH4oKDB4Mzw8NSkpOworICAgICAgUFJDTUhJQlJlZ1dyaXRlKEhJQjNQM19CQVNFICsgSElCM1AzX09fTUVNX0hJQl9SRUcwLHVsUmVnVmFsKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIERpc2FibGUgcmV0ZW50aW9uIGZvciBHUlAyCisgICAgLy8KKyAgICBpZiggdWxJT1JldEdycEZsYWdzICYgUFJDTV9JT19SRVRfR1JQXzIgKQorICAgIHsKKyAgICAgIHVsUmVnVmFsICA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFICArIEhJQjNQM19PX01FTV9KVEFHX0NPTkYpOworICAgICAgdWxSZWdWYWwgJj0gfjB4MDAwMDAxMDE7CisgICAgICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UgICsgSElCM1AzX09fTUVNX0pUQUdfQ09ORix1bFJlZ1ZhbCk7CisKKyAgICB9CisKKyAgICAvLworICAgIC8vIERpc2FibGUgcmV0ZW50aW9uIGZvciBHUlAzCisgICAgLy8KKyAgICBpZiggdWxJT1JldEdycEZsYWdzICYgUFJDTV9JT19SRVRfR1JQXzMgKQorICAgIHsKKyAgICAgIHVsUmVnVmFsICA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFICArIEhJQjNQM19PX01FTV9KVEFHX0NPTkYpOworICAgICAgdWxSZWdWYWwgJj0gfjB4MDAwMDAyMDQ7CisgICAgICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UgICsgSElCM1AzX09fTUVNX0pUQUdfQ09ORix1bFJlZ1ZhbCk7CisgICAgfQorCisgIH0KK30KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBHZXRzIHRoZSBkZXZpY2UgdHlwZQorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGJpdC1wYWNrZWQgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSBkZXZpY2UgdHlwZQorLy8hCisvLyEgVGhlIHJldHVybmVkIHZhbHVlIGlzIGxvZ2ljYWwgT1Igb2Ygb25lIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZzotCisvLyEKKy8vISAtXGIgUFJDTV9ERVZfVFlQRV9GTEFHX1IgICAgICAgIC0gUiB2YXJpYW50CisvLyEgLVxiIFBSQ01fREVWX1RZUEVfRkxBR19GICAgICAgICAtIEYgdmFyaWFudAorLy8hIC1cYiBQUkNNX0RFVl9UWVBFX0ZMQUdfWiAgICAgICAgLSBaIHZhcmlhbnQKKy8vISAtXGIgUFJDTV9ERVZfVFlQRV9GTEFHX1NFQ1VSRSAgIC0gRGV2aWNlIGlzIHNlY3VyZQorLy8hIC1cYiBQUkNNX0RFVl9UWVBFX0ZMQUdfUFJFX1BST0QgLSBEZXZpY2UgaXMgYSBwcmUtcHJvZHVjdGlvbiBwYXJ0CisvLyEgLVxiIFBSQ01fREVWX1RZUEVfRkxBR18zMjAwICAgICAtIERldmljZSBpcyBDQzMyMDAKKy8vISAtXGIgUFJDTV9ERVZfVFlQRV9GTEFHXzMyMjAgICAgIC0gRGV2aWNlIGlzIENDMzIyMAorLy8hIC1cYiBQUkNNX0RFVl9UWVBFX0ZMQUdfUkVWMSAgICAgLSBEZXZpY2UgUmV2IDEKKy8vISAtXGIgUFJDTV9ERVZfVFlQRV9GTEFHX1JFVjIgICAgIC0gRGV2aWNlIFJldiAyCisvLyEKKy8vISBQcmUtZGVmaW5lZCBoZWxwZXIgbWFjcm9zOi0KKy8vIQorLy8hIC1cYiBQUkNNX0RFVl9UWVBFX1BSRV9DQzMyMDBSICAgLSBQcmUtUHJvZHVjdGlvbiBDQzMyMDBSCisvLyEgLVxiIFBSQ01fREVWX1RZUEVfUFJFX0NDMzIwMEYgICAtIFByZS1Qcm9kdWN0aW9uIENDMzIwMEYKKy8vISAtXGIgUFJDTV9ERVZfVFlQRV9QUkVfQ0MzMjAwWiAgIC0gUHJlLVByb2R1Y3Rpb24gQ0MzMjAwWgorLy8hIC1cYiBQUkNNX0RFVl9UWVBFX0NDMzIwMFIgICAgICAgLSBQcm9kdWN0aW9uIENDMzIwMFIKKy8vISAtXGIgUFJDTV9ERVZfVFlQRV9QUkVfQ0MzMjIwUiAgIC0gUHJlLVByb2R1Y3Rpb24gQ0MzMjIwUgorLy8hIC1cYiBQUkNNX0RFVl9UWVBFX1BSRV9DQzMyMjBGICAgLSBQcmUtUHJvZHVjdGlvbiBDQzMyMjBGCisvLyEgLVxiIFBSQ01fREVWX1RZUEVfUFJFX0NDMzIyMFogICAtIFByZS1Qcm9kdWN0aW9uIENDMzIyMFoKKy8vISAtXGIgUFJDTV9ERVZfVFlQRV9DQzMyMjBSICAgICAgIC0gUHJvZHVjdGlvbiBDQzMyMjBSCisvLyEgLVxiIFBSQ01fREVWX1RZUEVfUFJFX0NDMzIyMFJTICAtIFByZS1Qcm9kdWN0aW9uIENDMzIyMFJTCisvLyEgLVxiIFBSQ01fREVWX1RZUEVfUFJFX0NDMzIyMEZTICAtIFByZS1Qcm9kdWN0aW9uIENDMzIyMEZTCisvLyEgLVxiIFBSQ01fREVWX1RZUEVfUFJFX0NDMzIyMFpTICAtIFByZS1Qcm9kdWN0aW9uIENDMzIyMFpTCisvLyEgLVxiIFBSQ01fREVWX1RZUEVfQ0MzMjIwUlMgICAgICAtIFByb2R1Y3Rpb24gQ0MzMjIwUlMKKy8vISAtXGIgUFJDTV9ERVZfVFlQRV9DQzMyMjBGUyAgICAgIC0gUHJvZHVjdGlvbiBDQzMyMjBGUworLy8hCisvLyEgXHJldHVybiAgUmV0dXJucywgYml0LXBhY2tlZCB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIGRldmljZSB0eXBlLAorLy8hIG9yIDAgaWYgZGV2aWNlIGlzIHVua25vd24KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCit1bnNpZ25lZCBsb25nIFBSQ01EZXZpY2VUeXBlR2V0KCkKK3sKKyAgdW5zaWduZWQgbG9uZyB1bERldlR5cGU7CisgIHVuc2lnbmVkIGxvbmcgdWxDaGlwSWQ7CisgIHVuc2lnbmVkIGxvbmcgdWxEZXZNYWpvclZlcjsKKyAgdW5zaWduZWQgbG9uZyB1bERldk1pbm9yVmVyOworCisgIC8vCisgIC8vIFJlYWQgdGhlIGRldmljZSBpZGVudGlmaWNhdGlvbiByZWdpc3RlcgorICAvLworICB1bENoaXBJZCA9IEhXUkVHKEdQUkNNX0JBU0UgKyBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHMik7CisKKyAgLy8KKyAgLy8gUmVhZCB0aGUgUk9NIG1vam9yIGFuZCBtaW5vciB2ZXJzaW9uCisgIC8vCisgIHVsRGV2TWFqb3JWZXIgPSAoKHVsQ2hpcElkID4+IDI4KSAmIDB4Rik7CisgIHVsRGV2TWlub3JWZXIgPSAoKHVsQ2hpcElkID4+IDI0KSAmIDB4Rik7CisKKworICB1bENoaXBJZCA9ICgoSFdSRUcoR1BSQ01fQkFTRSArIEdQUkNNX09fR1BSQ01fRUZVU0VfUkVBRF9SRUcyKSA+PiAxNikgJiAweDFGKTsKKworICAvLworICAvLyBHZXQgdGhlIGRldmljZSB2YXJpYW50IGZyb20gdGhlIGNoaXAgaWQKKyAgLy8KKyAgc3dpdGNoKCh1bENoaXBJZCAmIDB4RikpCisgIHsKKyAgICAvLworICAgIC8vIEl0IGlzIFIgdmFyaWFudAorICAgIC8vCisgICAgY2FzZSAweDA6CisgICAgICB1bERldlR5cGUgPSBQUkNNX0RFVl9UWVBFX0ZMQUdfUjsKKyAgICAgIGJyZWFrOworCisgICAgLy8KKyAgICAvLyBJdCBpcyBGIHZhcmlhbnQsIG5vbiBzZWN1cmUgRiB2YXJpYW50IGlzIGFsd2F5cyBQcmUtUHJvZHVjdGlvbgorICAgIC8vCisgICAgY2FzZSAweDE6CisgICAgICB1bERldlR5cGUgPSBQUkNNX0RFVl9UWVBFX0ZMQUdfRnxQUkNNX0RFVl9UWVBFX0ZMQUdfUFJFX1BST0Q7CisgICAgICBicmVhazsKKworICAgIC8vCisgICAgLy8gSXQgaXMgWiB2YXJpYW50IGFuZCBpcyBhbHdheXMgUHJlLVByb2R1Y3Rpb24KKyAgICAvLworICAgIGNhc2UgMHgzOgorICAgICAgdWxEZXZUeXBlID0gUFJDTV9ERVZfVFlQRV9GTEFHX1p8UFJDTV9ERVZfVFlQRV9GTEFHX1BSRV9QUk9EOworICAgICAgYnJlYWs7CisKKyAgICAvLworICAgIC8vIEl0IGlzIFNlY3VyZSBSCisgICAgLy8KKyAgICBjYXNlIDB4ODoKKyAgICAgIHVsRGV2VHlwZSA9IFBSQ01fREVWX1RZUEVfRkxBR19SfFBSQ01fREVWX1RZUEVfRkxBR19TRUNVUkU7CisgICAgICBicmVhazsKKworICAgIC8vCisgICAgLy8gSXQgaXMgU2VjdXJlIEYKKyAgICAvLworICAgIGNhc2UgMHg5OgorICAgICAgdWxEZXZUeXBlID0gUFJDTV9ERVZfVFlQRV9GTEFHX0Z8UFJDTV9ERVZfVFlQRV9GTEFHX1NFQ1VSRTsKKyAgICAgIGJyZWFrOworCisgICAgLy8KKyAgICAvLyBJdCBpcyBzZWN1cmUgWiB2YXJpYW50IGFuZCB2YXJpYW50IGlzIGFsd2F5cyBQcmUtUHJvZHVjdGlvbgorICAgIC8vCisgICAgY2FzZSAweEI6CisgICAgICB1bERldlR5cGUgPSBQUkNNX0RFVl9UWVBFX0ZMQUdfWnxQUkNNX0RFVl9UWVBFX0ZMQUdfU0VDVVJFfAorICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHX1BSRV9QUk9EOworICAgICAgYnJlYWs7CisKKyAgICAvLworICAgIC8vIFVuZGVmaW5lZCB2YXJpYW50CisgICAgLy8KKyAgICBkZWZhdWx0OgorICAgICAgdWxEZXZUeXBlID0gMHgwOworICB9CisKKyAgaWYoIHVsRGV2VHlwZSAhPSAwICkKKyAgeworICAgIGlmKCB1bERldk1ham9yVmVyID09IDB4MyApCisgICAgeworICAgICAgdWxEZXZUeXBlIHw9IFBSQ01fREVWX1RZUEVfRkxBR18zMjIwOworICAgIH0KKyAgICBlbHNlIGlmKCB1bERldk1ham9yVmVyID09IDB4MiApCisgICAgeworICAgICAgdWxEZXZUeXBlICB8PSAoUFJDTV9ERVZfVFlQRV9GTEFHX1BSRV9QUk9EfFBSQ01fREVWX1RZUEVfRkxBR18zMjIwKTsKKworICAgICAgaWYoICgodWxEZXZUeXBlICYgUFJDTV9ERVZfVFlQRV9GTEFHX1opICE9IDApICkKKyAgICAgIHsKKyAgICAgICAgaWYoKHVsRGV2TWlub3JWZXIgPT0gMHgwKSkKKyAgICAgICAgeworICAgICAgICAgIHVsRGV2VHlwZSB8PSBQUkNNX0RFVl9UWVBFX0ZMQUdfUkVWMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICB1bERldlR5cGUgfD0gUFJDTV9ERVZfVFlQRV9GTEFHX1JFVjI7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgaWYoKHVsRGV2TWlub3JWZXIgPT0gMHgxKSkKKyAgICAgICAgeworICAgICAgICAgIHVsRGV2VHlwZSB8PSBQUkNNX0RFVl9UWVBFX0ZMQUdfUkVWMTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgaWYoICh1bERldk1pbm9yVmVyID09IDB4NCkpCisgICAgICB7CisgICAgICAgIGlmKCAoKHVsRGV2VHlwZSAmIFBSQ01fREVWX1RZUEVfRkxBR19aKSAhPSAwKSkKKyAgICAgICAgeworICAgICAgICAgIHVsRGV2VHlwZSB8PSAoUFJDTV9ERVZfVFlQRV9GTEFHX1BSRV9QUk9EfFBSQ01fREVWX1RZUEVfRkxBR18zMjIwKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICB1bERldlR5cGUgfD0gUFJDTV9ERVZfVFlQRV9GTEFHXzMyMDA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgdWxEZXZUeXBlIHw9IChQUkNNX0RFVl9UWVBFX0ZMQUdfUFJFX1BST0R8UFJDTV9ERVZfVFlQRV9GTEFHXzMyMDApOworICAgICAgfQorICAgIH0KKyAgfQorCisKKyAgcmV0dXJuIHVsRGV2VHlwZTsKK30KKworCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vISBVc2VkIHRvIHRyaWdnZXIgYSBoaWJlcm5hdGUgY3ljbGUgZm9yIHRoZSBkZXZpY2UgdXNpbmcgUlRDCisvLyEKKy8vISBUaGlzIEFQSSBjYW4gYmUgdXNlZCB0byBkbyBhIGNsZWFuIHJlYm9vdCBvZiBkZXZpY2UuCisvLyEKKy8vISBcbm90ZSBUaGlzIHJvdXRpbmUgc2hvdWxkIG9ubHkgYmUgZXhlcmNpc2VkIGFmdGVyIGFsbCB0aGUgbmV0d29yayBwcm9jZXNzaW5nCisvLyEgaGFzIGJlZW4gc3RvcHBlZC4gVG8gc3RvcCBuZXR3b3JrIHByb2Nlc3NpbmcgdXNlIFxiIHNsX3N0b3AgQVBJIGZyb20KKy8vISBzaW1wbGVsaW5rIGxpYnJhcnkuCisvLyEKKy8vISBccmV0dXJuIE5vbmUKKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3ZvaWQgUFJDTUhpYmVybmF0ZUN5Y2xlVHJpZ2dlcigpCit7CisgIHVuc2lnbmVkIGxvbmcgdWxSZWdWYWx1ZTsKKyAgdW5zaWduZWQgbG9uZyBsb25nIHVsbFJUQ1ZhbDsKKworICAvLworICAvLyBSZWFkIHRoZSBSVEMgcmVnaXN0ZXIKKyAgLy8KKyAgdWxSZWdWYWx1ZSA9IFBSQ01ISUJSZWdSZWFkKEhJQjNQM19CQVNFK0hJQjNQM19PX01FTV9ISUJfUlRDX1dBS0VfRU4pOworCisgIC8vCisgIC8vIEVuYWJsZSB0aGUgUlRDIGFzIHdha2V1cCBzb3VyY2UgaWYgc3BlY2lmaWVkCisgIC8vCisgIHVsUmVnVmFsdWUgfD0gKFBSQ01fSElCX1NMT1dfQ0xLX0NUUiAmIDB4MSk7CisKKyAgLy8KKyAgLy8gRW5hYmxlIEhJQiB3YWtldXAgc291cmNlcworICAvLworICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX0hJQl9SVENfV0FLRV9FTix1bFJlZ1ZhbHVlKTsKKworICAvLworICAvLyBMYXRjaCB0aGUgUlRDIHZsYXVlCisgIC8vCisgIFBSQ01ISUJSZWdXcml0ZShISUIzUDNfQkFTRStISUIzUDNfT19NRU1fSElCX1JUQ19USU1FUl9SRUFEICwweDEpOworCisgIC8vCisgIC8vIFJlYWQgbGF0Y2hlZCB2YWx1ZXMgYXMgMiAzMi1iaXQgdmxhdWVzCisgIC8vCisgIHVsbFJUQ1ZhbCAgPSBQUkNNSElCUmVnUmVhZChISUIzUDNfQkFTRSArIEhJQjNQM19PX01FTV9ISUJfUlRDX1RJTUVSX01TVyk7CisgIHVsbFJUQ1ZhbCAgPSB1bGxSVENWYWwgPDwgMzI7CisgIHVsbFJUQ1ZhbCB8PSBQUkNNSElCUmVnUmVhZChISUIzUDNfQkFTRStISUIzUDNfT19NRU1fSElCX1JUQ19USU1FUl9MU1cpOworCisgIC8vCisgIC8vQ29uc2lkZXJpbmcgd29yc3QgY2FzZSBleGVjdXRpb24gdGltZXMgb2YgUk9NLFJBTSxGbGFzaCB2YWx1ZSBvZiAxNjAgaXMgdXNlZAorICAvLworICB1bGxSVENWYWwgPSB1bGxSVENWYWwgKyAxNjA7CisKKyAgLy8KKyAgLy8gU2V0IFJUQyBtYXRjaCB2YWx1ZQorICAvLworICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX0hJQl9SVENfV0FLRV9MU1dfQ09ORiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKHVsbFJUQ1ZhbCkpOworICBQUkNNSElCUmVnV3JpdGUoSElCM1AzX0JBU0UrSElCM1AzX09fTUVNX0hJQl9SVENfV0FLRV9NU1dfQ09ORiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykodWxsUlRDVmFsPj4zMikpOworICAvLworICAvLyBOb3RlIDogQW55IGFkZGl0aW9uIG9mIGNvZGUgYWZ0ZXIgdGhpcyBsaW5lIHdvdWxkIG5lZWQgYSBjaGFuZ2UgaW4KKyAgLy8gdWxsVGlja3MgSW50ZXJ2YWwgY3VycmVudGx5IHNldCB0byAxNjAKKyAgLy8KKworICAvLworICAvLyBSZXF1ZXN0IGhpYmVybmF0ZS4KKyAgLy8KKyAgUFJDTUhJQlJlZ1dyaXRlKChISUIzUDNfQkFTRStISUIzUDNfT19NRU1fSElCX1JFUSksMHgxKTsKKworICAvLworICAvLyBXYWl0IGZvciBzeXN0ZW0gdG8gZW50ZXIgaGliZXJuYXRlCisgIC8vCisgIF9fYXNtKCIgICAgd2ZpXG4iKTsKKworICAvLworICAvLyBJbmZpbml0ZSBsb29wCisgIC8vCisgIHdoaWxlKDEpCisgIHsKKworICB9Cit9CisKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIENsb3NlIHRoZSBEb3h5Z2VuIGdyb3VwLgorLy8hIEB9CisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0tZ2l0IGEvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL3ByY20uaCBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9wcmNtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdlMjRmZgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9wcmNtLmgKQEAgLTAsMCArMSwzNjggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLworICoKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqICBhcmUgbWV0OgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqICAgIE5laXRoZXIgdGhlIG5hbWUgb2YgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gIHByY20uaAorLy8KKy8vICBQcm90b3R5cGVzIGZvciB0aGUgUFJDTSBjb250cm9sIGRyaXZlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyNpZm5kZWYgX19QUkNNX0hfXworI2RlZmluZSBfX1BSQ01fSF9fCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBJZiBidWlsZGluZyB3aXRoIGEgQysrIGNvbXBpbGVyLCBtYWtlIGFsbCBvZiB0aGUgZGVmaW5pdGlvbnMgaW4gdGhpcyBoZWFkZXIKKy8vIGhhdmUgYSBDIGJpbmRpbmcuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCit7CisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFBlcmlwaGVyYWwgY2xvY2sgYW5kIHJlc2V0IGNvbnRyb2wgcmVnaXN0ZXJzCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordHlwZWRlZiBzdHJ1Y3QgX1BSQ01fUGVyaXBoZXJhbFJlZ3NfCit7CisKK3Vuc2lnbmVkIGxvbmcgdWxDbGtSZWc7Cit1bnNpZ25lZCBsb25nIHVsUnN0UmVnOworCit9UFJDTV9QZXJpcGhSZWdzX3Q7CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFZhbHVlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gUFJDTVBlcmlwaGVyYWxFbmFibGUoKSBhbmQKKy8vIFBSQ01QZXJpcGhlcmFsRGlzYWJsZSgpCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFBSQ01fUlVOX01PREVfQ0xLICAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBQUkNNX1NMUF9NT0RFX0NMSyAgICAgICAgIDB4MDAwMDAxMDAKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gVmFsdWVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBQUkNNU1JBTVJldGVudGlvbkVuYWJsZSgpIGFuZAorLy8gUFJDTVNSQU1SZXRlbnRpb25EaXNhYmxlKCkgYXMgdWxTcmFtQ29sU2VsLgorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBQUkNNX1NSQU1fQ09MXzEgICAgICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgUFJDTV9TUkFNX0NPTF8yICAgICAgICAgICAweDAwMDAwMDAyCisjZGVmaW5lIFBSQ01fU1JBTV9DT0xfMyAgICAgICAgICAgMHgwMDAwMDAwNAorI2RlZmluZSBQUkNNX1NSQU1fQ09MXzQgICAgICAgICAgIDB4MDAwMDAwMDgKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gVmFsdWVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBQUkNNU1JBTVJldGVudGlvbkVuYWJsZSgpIGFuZAorLy8gUFJDTVNSQU1SZXRlbnRpb25EaXNhYmxlKCkgYXMgdWxNb2RlRmxhZ3MuCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFBSQ01fU1JBTV9MUERTX1JFVCAgICAgICAgMHgwMDAwMDAwMgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIFBSQ01MUERTV2FrZXVwU291cmNlRW5hYmxlKCksCisvLyBQUkNNTFBEU1dha2V1cENhdXNlR2V0KCkgYW5kIFBSQ01MUERTV2FrZXVwU291cmNlRGlzYWJsZSgpLgorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBQUkNNX0xQRFNfSE9TVF9JUlEgICAgICAgIDB4MDAwMDAwODAKKyNkZWZpbmUgUFJDTV9MUERTX0dQSU8gICAgICAgICAgICAweDAwMDAwMDEwCisjZGVmaW5lIFBSQ01fTFBEU19USU1FUiAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIFBSQ01MUERTV2FrZVVwR1BJT1NlbGVjdCgpIGFzIFR5cGUKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgUFJDTV9MUERTX0xPV19MRVZFTCAgICAgICAweDAwMDAwMDAyCisjZGVmaW5lIFBSQ01fTFBEU19ISUdIX0xFVkVMICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBQUkNNX0xQRFNfRkFMTF9FREdFICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgUFJDTV9MUERTX1JJU0VfRURHRSAgICAgICAweDAwMDAwMDAzCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFZhbHVlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gUFJDTUxQRFNXYWtlVXBHUElPU2VsZWN0KCkKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgUFJDTV9MUERTX0dQSU8yICAgICAgICAgICAweDAwMDAwMDAwCisjZGVmaW5lIFBSQ01fTFBEU19HUElPNCAgICAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBQUkNNX0xQRFNfR1BJTzEzICAgICAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgUFJDTV9MUERTX0dQSU8xNyAgICAgICAgICAweDAwMDAwMDAzCisjZGVmaW5lIFBSQ01fTFBEU19HUElPMTEgICAgICAgICAgMHgwMDAwMDAwNAorI2RlZmluZSBQUkNNX0xQRFNfR1BJTzI0ICAgICAgICAgIDB4MDAwMDAwMDUKKyNkZWZpbmUgUFJDTV9MUERTX0dQSU8yNiAgICAgICAgICAweDAwMDAwMDA2CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFZhbHVlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gUFJDTUhpYmVybmF0ZVdha2V1cFNvdXJjZUVuYWJsZSgpLAorLy8gUFJDTUhpYmVybmF0ZVdha2V1cFNvdXJjZURpc2FibGUoKS4KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgUFJDTV9ISUJfU0xPV19DTEtfQ1RSICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFZhbHVlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gUFJDTUhpYmVybmF0ZVdha2VVcEdQSU9TZWxlY3QoKSBhcyB1bFR5cGUKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgUFJDTV9ISUJfTE9XX0xFVkVMICAgICAgICAweDAwMDAwMDAwCisjZGVmaW5lIFBSQ01fSElCX0hJR0hfTEVWRUwgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBQUkNNX0hJQl9GQUxMX0VER0UgICAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgUFJDTV9ISUJfUklTRV9FREdFICAgICAgICAweDAwMDAwMDAzCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFZhbHVlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gUFJDTUhpYmVybmF0ZVdha2V1cFNvdXJjZUVuYWJsZSgpLAorLy8gUFJDTUhpYmVybmF0ZVdha2V1cFNvdXJjZURpc2FibGUoKSwgUFJDTUhpYmVybmF0ZVdha2VVcEdQSU9TZWxlY3QoKQorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBQUkNNX0hJQl9HUElPMiAgICAgICAgICAgIDB4MDAwMTAwMDAKKyNkZWZpbmUgUFJDTV9ISUJfR1BJTzQgICAgICAgICAgICAweDAwMDIwMDAwCisjZGVmaW5lIFBSQ01fSElCX0dQSU8xMyAgICAgICAgICAgMHgwMDA0MDAwMAorI2RlZmluZSBQUkNNX0hJQl9HUElPMTcgICAgICAgICAgIDB4MDAwODAwMDAKKyNkZWZpbmUgUFJDTV9ISUJfR1BJTzExICAgICAgICAgICAweDAwMTAwMDAwCisjZGVmaW5lIFBSQ01fSElCX0dQSU8yNCAgICAgICAgICAgMHgwMDIwMDAwMAorI2RlZmluZSBQUkNNX0hJQl9HUElPMjYgICAgICAgICAgIDB4MDA0MDAwMDAKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gVmFsdWVzIHRoYXQgd2lsbCBiZSByZXR1cm5lZCBmcm9tIFBSQ01TeXNSZXNldENhdXNlR2V0KCkuCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFBSQ01fUE9XRVJfT04gICAgICAgICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBQUkNNX0xQRFNfRVhJVCAgICAgICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgUFJDTV9DT1JFX1JFU0VUICAgICAgICAgICAweDAwMDAwMDAzCisjZGVmaW5lIFBSQ01fTUNVX1JFU0VUICAgICAgICAgICAgMHgwMDAwMDAwNAorI2RlZmluZSBQUkNNX1dEVF9SRVNFVCAgICAgICAgICAgIDB4MDAwMDAwMDUKKyNkZWZpbmUgUFJDTV9TT0NfUkVTRVQgICAgICAgICAgICAweDAwMDAwMDA2CisjZGVmaW5lIFBSQ01fSElCX0VYSVQgICAgICAgICAgICAgMHgwMDAwMDAwNworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIFBSQ01IaWJlcm5hdGVXYWtldXBDYXVzZUdldCgpLgorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBQUkNNX0hJQl9XQUtFVVBfQ0FVU0VfU0xPV19DTE9DSyAgMHgwMDAwMDAwMgorI2RlZmluZSBQUkNNX0hJQl9XQUtFVVBfQ0FVU0VfR1BJTyAgICAgICAgMHgwMDAwMDAwNAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIFBSQ01TRW5hYmxlSW50ZXJydXB0CisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFBSQ01fSU5UX1NMT1dfQ0xLX0NUUiAgICAgMHgwMDAwNDAwMAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIFBSQ01QZXJpcGhlcmFsQ2xrRW5hYmxlKCksCisvLyBQUkNNUGVyaXBoZXJhbENsa0Rpc2FibGUoKSwgUFJDTVBlcmlwaGVyYWxSZXNldCgpCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFBSQ01fQ0FNRVJBICAgICAgICAgICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBQUkNNX0kyUyAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgUFJDTV9TREhPU1QgICAgICAgICAgICAgICAweDAwMDAwMDAyCisjZGVmaW5lIFBSQ01fR1NQSSAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMworI2RlZmluZSBQUkNNX0xTUEkgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQKKyNkZWZpbmUgUFJDTV9VRE1BICAgICAgICAgICAgICAgICAweDAwMDAwMDA1CisjZGVmaW5lIFBSQ01fR1BJT0EwICAgICAgICAgICAgICAgMHgwMDAwMDAwNgorI2RlZmluZSBQUkNNX0dQSU9BMSAgICAgICAgICAgICAgIDB4MDAwMDAwMDcKKyNkZWZpbmUgUFJDTV9HUElPQTIgICAgICAgICAgICAgICAweDAwMDAwMDA4CisjZGVmaW5lIFBSQ01fR1BJT0EzICAgICAgICAgICAgICAgMHgwMDAwMDAwOQorI2RlZmluZSBQUkNNX0dQSU9BNCAgICAgICAgICAgICAgIDB4MDAwMDAwMEEKKyNkZWZpbmUgUFJDTV9XRFQgICAgICAgICAgICAgICAgICAweDAwMDAwMDBCCisjZGVmaW5lIFBSQ01fVUFSVEEwICAgICAgICAgICAgICAgMHgwMDAwMDAwQworI2RlZmluZSBQUkNNX1VBUlRBMSAgICAgICAgICAgICAgIDB4MDAwMDAwMEQKKyNkZWZpbmUgUFJDTV9USU1FUkEwICAgICAgICAgICAgICAweDAwMDAwMDBFCisjZGVmaW5lIFBSQ01fVElNRVJBMSAgICAgICAgICAgICAgMHgwMDAwMDAwRgorI2RlZmluZSBQUkNNX1RJTUVSQTIgICAgICAgICAgICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgUFJDTV9USU1FUkEzICAgICAgICAgICAgICAweDAwMDAwMDExCisjZGVmaW5lIFBSQ01fRFRIRSAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMgorI2RlZmluZSBQUkNNX1NTUEkgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTMKKyNkZWZpbmUgUFJDTV9JMkNBMCAgICAgICAgICAgICAgICAweDAwMDAwMDE0CisvLyBOb3RlIDogUFJDTV9BREMgaXMgYSBkdW1teSBkZWZpbmUgZm9yIHBpbm11eCB1dGlsaXR5IGNvZGUgZ2VuZXJhdGlvbgorLy8gUFJDTV9BREMgc2hvdWxkIG5ldmVyIGJlIHVzZWQgaW4gYW55IHVzZXIgY29kZS4KKyNkZWZpbmUgUFJDTV9BREMgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGCisKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gVmFsdWVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBQUkNNSU9SZXRFbmFibGUoKSBhbmQgUFJDTUlPUmV0RGlzYWJsZSgpCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFBSQ01fSU9fUkVUX0dSUF8wICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgUFJDTV9JT19SRVRfR1JQXzEgICAgICAgMHgwMDAwMDAwMgorI2RlZmluZSBQUkNNX0lPX1JFVF9HUlBfMiAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIFBSQ01fSU9fUkVUX0dSUF8zICAgICAgIDB4MDAwMDAwMDgKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gTWFjcm9zIGRlZmluaWcgdGhlIGRldmljZSB0eXBlCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFBSQ01fREVWX1RZUEVfRkxBR19SICAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBQUkNNX0RFVl9UWVBFX0ZMQUdfRiAgICAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgUFJDTV9ERVZfVFlQRV9GTEFHX1ogICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIFBSQ01fREVWX1RZUEVfRkxBR19TRUNVUkUgICAgMHgwMDAwMDAwOAorI2RlZmluZSBQUkNNX0RFVl9UWVBFX0ZMQUdfUFJFX1BST0QgIDB4MDAwMDAwMTAKKyNkZWZpbmUgUFJDTV9ERVZfVFlQRV9GTEFHXzMyMDAgICAgICAweDAwMDAwMDIwCisjZGVmaW5lIFBSQ01fREVWX1RZUEVfRkxBR18zMjIwICAgICAgMHgwMDAwMDA0MAorI2RlZmluZSBQUkNNX0RFVl9UWVBFX0ZMQUdfUkVWMSAgICAgIDB4MDAwMTAwMDAKKyNkZWZpbmUgUFJDTV9ERVZfVFlQRV9GTEFHX1JFVjIgICAgICAweDAwMDIwMDAwCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFByZS1kZWZpbmVkIGhlbHBlciBtYWNyb3MKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgUFJDTV9ERVZfVFlQRV9QUkVfQ0MzMjAwUiAgICAoUFJDTV9ERVZfVFlQRV9GTEFHX1BSRV9QUk9EfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR18zMjAwfCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfUikKKworI2RlZmluZSBQUkNNX0RFVl9UWVBFX1BSRV9DQzMyMDBGICAgIChQUkNNX0RFVl9UWVBFX0ZMQUdfUFJFX1BST0R8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHXzMyMDB8ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR19GKQorCisjZGVmaW5lIFBSQ01fREVWX1RZUEVfUFJFX0NDMzIwMFogICAgKFBSQ01fREVWX1RZUEVfRkxBR19QUkVfUFJPRHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfMzIwMHwgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHX1opCisKKyNkZWZpbmUgUFJDTV9ERVZfVFlQRV9DQzMyMDBSICAgICAgICAoUFJDTV9ERVZfVFlQRV9GTEFHX1BSRV9QUk9EfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR18zMjAwfCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfUikKKworI2RlZmluZSBQUkNNX0RFVl9UWVBFX1BSRV9DQzMyMjBSICAgIChQUkNNX0RFVl9UWVBFX0ZMQUdfUFJFX1BST0R8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHXzMyMjB8ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR19SKQorCisjZGVmaW5lIFBSQ01fREVWX1RZUEVfUFJFX0NDMzIyMEYgICAgKFBSQ01fREVWX1RZUEVfRkxBR19QUkVfUFJPRHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfMzIyMHwgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHX0YpCisKKyNkZWZpbmUgUFJDTV9ERVZfVFlQRV9QUkVfQ0MzMjIwWiAgICAoUFJDTV9ERVZfVFlQRV9GTEFHX1BSRV9QUk9EfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR18zMjIwfCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfWikKKworI2RlZmluZSBQUkNNX0RFVl9UWVBFX0NDMzIyMFIgICAgICAgIChQUkNNX0RFVl9UWVBFX0ZMQUdfMzIyMHwgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHX1IpCisKKworI2RlZmluZSBQUkNNX0RFVl9UWVBFX1BSRV9DQzMyMjBSUyAgIChQUkNNX0RFVl9UWVBFX0ZMQUdfUFJFX1BST0R8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHXzMyMjB8ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR19SfCAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfU0VDVVJFKQorCisjZGVmaW5lIFBSQ01fREVWX1RZUEVfUFJFX0NDMzIyMEZTICAgKFBSQ01fREVWX1RZUEVfRkxBR19QUkVfUFJPRHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfMzIyMHwgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHX0Z8ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR19TRUNVUkUpCisKKyNkZWZpbmUgUFJDTV9ERVZfVFlQRV9QUkVfQ0MzMjIwWlMgICAoUFJDTV9ERVZfVFlQRV9GTEFHX1BSRV9QUk9EfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR18zMjIwfCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfWnwgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHX1NFQ1VSRSkKKworI2RlZmluZSBQUkNNX0RFVl9UWVBFX0NDMzIyMFJTICAgICAgIChQUkNNX0RFVl9UWVBFX0ZMQUdfMzIyMHwgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHX1J8ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR19TRUNVUkUpCisKKyNkZWZpbmUgUFJDTV9ERVZfVFlQRV9DQzMyMjBGUyAgICAgICAoUFJDTV9ERVZfVFlQRV9GTEFHXzMyMjB8ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR19GfCAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfU0VDVVJFKQorCisKKyNkZWZpbmUgUFJDTV9ERVZfVFlQRV9QUkVfQ0MzMjIwWjEgICAoUFJDTV9ERVZfVFlQRV9GTEFHX1BSRV9QUk9EfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR18zMjIwfCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfWnwgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHX1JFVjEpCisKKyNkZWZpbmUgUFJDTV9ERVZfVFlQRV9QUkVfQ0MzMjIwWjIgICAoUFJDTV9ERVZfVFlQRV9GTEFHX1BSRV9QUk9EfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQ01fREVWX1RZUEVfRkxBR18zMjIwfCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkNNX0RFVl9UWVBFX0ZMQUdfWnwgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJDTV9ERVZfVFlQRV9GTEFHX1JFVjIpCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBBUEkgRnVuY3Rpb24gcHJvdG90eXBlcworLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK2V4dGVybiB2b2lkIFBSQ01NQ1VSZXNldCh0Qm9vbGVhbiBiSW5jbHVkZVN1YnN5c3RlbSk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBQUkNNU3lzUmVzZXRDYXVzZUdldCh2b2lkKTsKKworZXh0ZXJuIHZvaWQgUFJDTVBlcmlwaGVyYWxDbGtFbmFibGUodW5zaWduZWQgbG9uZyB1bFBlcmlwaGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ2xrRmxhZ3MpOworZXh0ZXJuIHZvaWQgUFJDTVBlcmlwaGVyYWxDbGtEaXNhYmxlKHVuc2lnbmVkIGxvbmcgdWxQZXJpcGhlcmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDbGtGbGFncyk7CitleHRlcm4gdm9pZCBQUkNNUGVyaXBoZXJhbFJlc2V0KHVuc2lnbmVkIGxvbmcgdWxQZXJpcGhlcmFsKTsKK2V4dGVybiB0Qm9vbGVhbiBQUkNNUGVyaXBoZXJhbFN0YXR1c0dldCh1bnNpZ25lZCBsb25nIHVsUGVyaXBoZXJhbCk7CisKK2V4dGVybiB2b2lkIFBSQ01JMlNDbG9ja0ZyZXFTZXQodW5zaWduZWQgbG9uZyB1bEkyQ0Nsa0ZyZXEpOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgUFJDTVBlcmlwaGVyYWxDbG9ja0dldCh1bnNpZ25lZCBsb25nIHVsUGVyaXBoZXJhbCk7CisKK2V4dGVybiB2b2lkIFBSQ01TbGVlcEVudGVyKHZvaWQpOworCitleHRlcm4gdm9pZCBQUkNNU1JBTVJldGVudGlvbkVuYWJsZSh1bnNpZ25lZCBsb25nIHVsU3JhbUNvbFNlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxGbGFncyk7CitleHRlcm4gdm9pZCBQUkNNU1JBTVJldGVudGlvbkRpc2FibGUodW5zaWduZWQgbG9uZyB1bFNyYW1Db2xTZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEZsYWdzKTsKK2V4dGVybiB2b2lkIFBSQ01MUERTUmVzdG9yZUluZm9TZXQodW5zaWduZWQgbG9uZyB1bFJlc3RvcmVTUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFJlc3RvcmVQQyk7CitleHRlcm4gdm9pZCBQUkNNTFBEU0VudGVyKHZvaWQpOworZXh0ZXJuIHZvaWQgUFJDTUxQRFNJbnRlcnZhbFNldCh1bnNpZ25lZCBsb25nIHVsVGlja3MpOworZXh0ZXJuIHZvaWQgUFJDTUxQRFNXYWtldXBTb3VyY2VFbmFibGUodW5zaWduZWQgbG9uZyB1bExwZHNXYWtldXBTcmMpOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgUFJDTUxQRFNXYWtldXBDYXVzZUdldCh2b2lkKTsKK2V4dGVybiB2b2lkIFBSQ01MUERTV2FrZVVwR1BJT1NlbGVjdCh1bnNpZ25lZCBsb25nIHVsR1BJT1BpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsVHlwZSk7CitleHRlcm4gdm9pZCBQUkNNTFBEU1dha2V1cFNvdXJjZURpc2FibGUodW5zaWduZWQgbG9uZyB1bExwZHNXYWtldXBTcmMpOworCitleHRlcm4gdm9pZCBQUkNNSGliZXJuYXRlRW50ZXIodm9pZCk7CitleHRlcm4gdm9pZCBQUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRW5hYmxlKHVuc2lnbmVkIGxvbmcgdWxISUJXYWt1cFNyYyk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBQUkNNSGliZXJuYXRlV2FrZXVwQ2F1c2VHZXQodm9pZCk7CitleHRlcm4gdm9pZCBQUkNNSGliZXJuYXRlV2FrZVVwR1BJT1NlbGVjdCh1bnNpZ25lZCBsb25nIHVsTXVsdGlHUElPQml0TWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFR5cGUpOworZXh0ZXJuIHZvaWQgUFJDTUhpYmVybmF0ZVdha2V1cFNvdXJjZURpc2FibGUodW5zaWduZWQgbG9uZyB1bEhJQldha3VwU3JjKTsKK2V4dGVybiB2b2lkIFBSQ01IaWJlcm5hdGVJbnRlcnZhbFNldCh1bnNpZ25lZCBsb25nIGxvbmcgdWxsVGlja3MpOworCitleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIFBSQ01TbG93Q2xrQ3RyR2V0KHZvaWQpOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBQUkNNU2xvd0Nsa0N0ckZhc3RHZXQodm9pZCk7CitleHRlcm4gdm9pZCBQUkNNU2xvd0Nsa0N0ck1hdGNoU2V0KHVuc2lnbmVkIGxvbmcgbG9uZyB1bGxUaWNrcyk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIFBSQ01TbG93Q2xrQ3RyTWF0Y2hHZXQodm9pZCk7CisKK2V4dGVybiB2b2lkIFBSQ01PQ1JSZWdpc3RlcldyaXRlKHVuc2lnbmVkIGNoYXIgdWNJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxSZWdWYWx1ZSk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBQUkNNT0NSUmVnaXN0ZXJSZWFkKHVuc2lnbmVkIGNoYXIgdWNJbmRleCk7CisKK2V4dGVybiB2b2lkIFBSQ01JbnRSZWdpc3Rlcih2b2lkICgqcGZuSGFuZGxlcikodm9pZCkpOworZXh0ZXJuIHZvaWQgUFJDTUludFVucmVnaXN0ZXIodm9pZCk7CitleHRlcm4gdm9pZCBQUkNNSW50RW5hYmxlKHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncyk7CitleHRlcm4gdm9pZCBQUkNNSW50RGlzYWJsZSh1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgUFJDTUludFN0YXR1cyh2b2lkKTsKK2V4dGVybiB2b2lkIFBSQ01SVENJblVzZVNldCh2b2lkKTsKK2V4dGVybiB0Qm9vbGVhbiBQUkNNUlRDSW5Vc2VHZXQodm9pZCk7CitleHRlcm4gdm9pZCBQUkNNUlRDU2V0KHVuc2lnbmVkIGxvbmcgdWxTZWNzLCB1bnNpZ25lZCBzaG9ydCB1c01zZWMpOworZXh0ZXJuIHZvaWQgUFJDTVJUQ0dldCh1bnNpZ25lZCBsb25nICp1bFNlY3MsIHVuc2lnbmVkIHNob3J0ICp1c01zZWMpOworZXh0ZXJuIHZvaWQgUFJDTVJUQ01hdGNoU2V0KHVuc2lnbmVkIGxvbmcgdWxTZWNzLCB1bnNpZ25lZCBzaG9ydCB1c01zZWMpOworZXh0ZXJuIHZvaWQgUFJDTVJUQ01hdGNoR2V0KHVuc2lnbmVkIGxvbmcgKnVsU2VjcywgdW5zaWduZWQgc2hvcnQgKnVzTXNlYyk7CitleHRlcm4gdm9pZCBQUkNNQ0MzMjAwTUNVSW5pdCh2b2lkKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIFBSQ01ISUJSZWdSZWFkKHVuc2lnbmVkIGxvbmcgdWxSZWdBZGRyKTsKK2V4dGVybiB2b2lkIFBSQ01ISUJSZWdXcml0ZSh1bnNpZ25lZCBsb25nIHVsUmVnQWRkciwgdW5zaWduZWQgbG9uZyB1bFZhbHVlKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIFBSQ01DYW1lcmFGcmVxU2V0KHVuc2lnbmVkIGNoYXIgdWxEaXZpZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB1bFdpZHRoKTsKK2V4dGVybiB2b2lkIFBSQ01JT1JldGVudGlvbkVuYWJsZSh1bnNpZ25lZCBsb25nIHVsSU9SZXRHcnBGbGFncyk7CitleHRlcm4gdm9pZCBQUkNNSU9SZXRlbnRpb25EaXNhYmxlKHVuc2lnbmVkIGxvbmcgdWxJT1JldEdycEZsYWdzKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIFBSQ01EZXZpY2VUeXBlR2V0KHZvaWQpOworZXh0ZXJuIHZvaWQgUFJDTUxQRFNFbnRlcktlZXBEZWJ1Z0lmKHZvaWQpOworZXh0ZXJuIHZvaWQgUFJDTUhpYmVybmF0ZUN5Y2xlVHJpZ2dlcih2b2lkKTsKKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFyayB0aGUgZW5kIG9mIHRoZSBDIGJpbmRpbmdzIHNlY3Rpb24gZm9yIEMrKyBjb21waWxlcnMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vICBfX1BSQ01fSF9fCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvcm9tLmggYi9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvcm9tLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg5MzhjZgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9yb20uaApAQCAtMCwwICsxLDI3ODcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLworICoKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqICBhcmUgbWV0OgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqICAgIE5laXRoZXIgdGhlIG5hbWUgb2YgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gcm9tLmggLSBNYWNyb3MgdG8gZmFjaWxpdGF0ZSBjYWxsaW5nIGZ1bmN0aW9ucyBpbiB0aGUgUk9NLgorLy8KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVEhJUyBJUyBBTiBBVVRPLUdFTkVSQVRFRCBGSUxFLiAgRE8gTk9UIEVESVQgQlkgSEFORC4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyNpZm5kZWYgX19ST01fSF9fCisjZGVmaW5lIF9fUk9NX0hfXworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBEcml2ZXJsaWIgdmVyc2lvbnMKKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgVEFSR0VUX0lTX0NDMzIwMAorI2RlZmluZSBVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFBvaW50ZXJzIHRvIHRoZSBtYWluIEFQSSB0YWJsZXMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBST01fQVBJVEFCTEUgICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKikweDAwMDAwNDBDKQorI2RlZmluZSBST01fVkVSU0lPTiAgICAgICAgICAgICAoUk9NX0FQSVRBQkxFWzBdKQorI2RlZmluZSBST01fVUFSVFRBQkxFICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKikoUk9NX0FQSVRBQkxFWzFdKSkKKyNkZWZpbmUgUk9NX1RJTUVSVEFCTEUgICAgICAgICAgKCh1bnNpZ25lZCBsb25nICopKFJPTV9BUElUQUJMRVsyXSkpCisjZGVmaW5lIFJPTV9XQVRDSERPR1RBQkxFICAgICAgICgodW5zaWduZWQgbG9uZyAqKShST01fQVBJVEFCTEVbM10pKQorI2RlZmluZSBST01fSU5URVJSVVBUVEFCTEUgICAgICAoKHVuc2lnbmVkIGxvbmcgKikoUk9NX0FQSVRBQkxFWzRdKSkKKyNkZWZpbmUgUk9NX1VETUFUQUJMRSAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nICopKFJPTV9BUElUQUJMRVs1XSkpCisjZGVmaW5lIFJPTV9QUkNNVEFCTEUgICAgICAgICAgICgodW5zaWduZWQgbG9uZyAqKShST01fQVBJVEFCTEVbNl0pKQorI2RlZmluZSBST01fSTJDVEFCTEUgICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKikoUk9NX0FQSVRBQkxFWzddKSkKKyNkZWZpbmUgUk9NX1NQSVRBQkxFICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nICopKFJPTV9BUElUQUJMRVs4XSkpCisjZGVmaW5lIFJPTV9DQU1FUkFUQUJMRSAgICAgICAgICgodW5zaWduZWQgbG9uZyAqKShST01fQVBJVEFCTEVbOV0pKQorI2RlZmluZSBST01fRkxBU0hUQUJMRSAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKikoUk9NX0FQSVRBQkxFWzEwXSkpCisjZGVmaW5lIFJPTV9QSU5UQUJMRSAgICAgICAgICAgICgodW5zaWduZWQgbG9uZyAqKShST01fQVBJVEFCTEVbMTFdKSkKKyNkZWZpbmUgUk9NX1NZU1RJQ0tUQUJMRSAgICAgICAgKCh1bnNpZ25lZCBsb25nICopKFJPTV9BUElUQUJMRVsxMl0pKQorI2RlZmluZSBST01fVVRJTFNUQUJMRSAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKikoUk9NX0FQSVRBQkxFWzEzXSkpCisjZGVmaW5lIFJPTV9JMlNUQUJMRSAgICAgICAgICAgICgodW5zaWduZWQgbG9uZyAqKShST01fQVBJVEFCTEVbMTRdKSkKKyNkZWZpbmUgUk9NX0hXU1BJTkxPQ0tUQUJMRSAgICAgKCh1bnNpZ25lZCBsb25nICopKFJPTV9BUElUQUJMRVsxNV0pKQorI2RlZmluZSBST01fR1BJT1RBQkxFICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKikoUk9NX0FQSVRBQkxFWzE2XSkpCisjZGVmaW5lIFJPTV9BRVNUQUJMRSAgICAgICAgICAgICgodW5zaWduZWQgbG9uZyAqKShST01fQVBJVEFCTEVbMTddKSkKKyNkZWZpbmUgUk9NX0RFU1RBQkxFICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nICopKFJPTV9BUElUQUJMRVsxOF0pKQorI2RlZmluZSBST01fU0hBTUQ1VEFCTEUgICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKikoUk9NX0FQSVRBQkxFWzE5XSkpCisjZGVmaW5lIFJPTV9DUkNUQUJMRSAgICAgICAgICAgICgodW5zaWduZWQgbG9uZyAqKShST01fQVBJVEFCTEVbMjBdKSkKKyNkZWZpbmUgUk9NX1NESE9TVFRBQkxFICAgICAgICAgKCh1bnNpZ25lZCBsb25nICopKFJPTV9BUElUQUJMRVsyMV0pKQorI2RlZmluZSBST01fQURDVEFCTEUgICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKikoUk9NX0FQSVRBQkxFWzIyXSkpCisjZGVmaW5lIFJPTV9DUFVUQUJMRSAgICAgICAgICAgICgodW5zaWduZWQgbG9uZyAqKShST01fQVBJVEFCTEVbMjNdKSkKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgY2FsbGluZyBST00gZnVuY3Rpb25zIGluIHRoZSBJbnRlcnJ1cHQgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JbnRFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEludGVycnVwdCkpUk9NX0lOVEVSUlVQVFRBQkxFWzBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSW50TWFzdGVyRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHRCb29sZWFuICgqKSh2b2lkKSlST01fSU5URVJSVVBUVEFCTEVbMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JbnRNYXN0ZXJEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodEJvb2xlYW4gKCopKHZvaWQpKVJPTV9JTlRFUlJVUFRUQUJMRVsyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ludERpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsSW50ZXJydXB0KSlST01fSU5URVJSVVBUVEFCTEVbM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JbnRQcmlvcml0eUdyb3VwaW5nU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJpdHMpKVJPTV9JTlRFUlJVUFRUQUJMRVs0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ludFByaW9yaXR5R3JvdXBpbmdHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh2b2lkKSlST01fSU5URVJSVVBUVEFCTEVbNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JbnRQcmlvcml0eVNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEludGVycnVwdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB1Y1ByaW9yaXR5KSlST01fSU5URVJSVVBUVEFCTEVbNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JbnRQcmlvcml0eUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgobG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEludGVycnVwdCkpUk9NX0lOVEVSUlVQVFRBQkxFWzddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSW50UGVuZFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxJbnRlcnJ1cHQpKVJPTV9JTlRFUlJVUFRUQUJMRVs4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ludFBlbmRDbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsSW50ZXJydXB0KSlST01fSU5URVJSVVBUVEFCTEVbOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JbnRQcmlvcml0eU1hc2tTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFByaW9yaXR5TWFzaykpUk9NX0lOVEVSUlVQVFRBQkxFWzEwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ludFByaW9yaXR5TWFza0dldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh2b2lkKSlST01fSU5URVJSVVBUVEFCTEVbMTFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSW50UmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxJbnRlcnJ1cHQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHZvaWQgKCpwZm5IYW5kbGVyKSh2b2lkKSkpUk9NX0lOVEVSUlVQVFRBQkxFWzEyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ludFVucmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsSW50ZXJydXB0KSlST01fSU5URVJSVVBUVEFCTEVbMTNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSW50VlRhYmxlQmFzZVNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxWdGFibGVCYXNlKSlST01fSU5URVJSVVBUVEFCTEVbMTRdKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgVGltZXIgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9UaW1lckVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFRpbWVyKSlST01fVElNRVJUQUJMRVswXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1RpbWVyRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsVGltZXIpKVJPTV9USU1FUlRBQkxFWzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJDb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDb25maWcpKVJPTV9USU1FUlRBQkxFWzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJDb250cm9sTGV2ZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUaW1lciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHRCb29sZWFuIGJJbnZlcnQpKVJPTV9USU1FUlRBQkxFWzNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJDb250cm9sRXZlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUaW1lciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxFdmVudCkpUk9NX1RJTUVSVEFCTEVbNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9UaW1lckNvbnRyb2xTdGFsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFRpbWVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdEJvb2xlYW4gYlN0YWxsKSlST01fVElNRVJUQUJMRVs1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1RpbWVyUHJlc2NhbGVTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsVGltZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsVmFsdWUpKVJPTV9USU1FUlRBQkxFWzZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJQcmVzY2FsZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUaW1lcikpUk9NX1RJTUVSVEFCTEVbN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9UaW1lclByZXNjYWxlTWF0Y2hTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFRpbWVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFZhbHVlKSlST01fVElNRVJUQUJMRVs4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1RpbWVyUHJlc2NhbGVNYXRjaEdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsVGltZXIpKVJPTV9USU1FUlRBQkxFWzldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJMb2FkU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUaW1lciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxWYWx1ZSkpUk9NX1RJTUVSVEFCTEVbMTBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJMb2FkR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUaW1lcikpUk9NX1RJTUVSVEFCTEVbMTFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJWYWx1ZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUaW1lcikpUk9NX1RJTUVSVEFCTEVbMTJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJNYXRjaFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUaW1lciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxWYWx1ZSkpUk9NX1RJTUVSVEFCTEVbMTNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJNYXRjaEdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUaW1lcikpUk9NX1RJTUVSVEFCTEVbMTRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJJbnRSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUaW1lciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHZvaWQgKCpwZm5IYW5kbGVyKSh2b2lkKSkpUk9NX1RJTUVSVEFCTEVbMTVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJJbnRVbnJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUaW1lcikpUk9NX1RJTUVSVEFCTEVbMTZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJJbnRFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX1RJTUVSVEFCTEVbMTddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJJbnREaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX1RJTUVSVEFCTEVbMThdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVGltZXJJbnRTdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRCb29sZWFuIGJNYXNrZWQpKVJPTV9USU1FUlRBQkxFWzE5XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1RpbWVySW50Q2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9USU1FUlRBQkxFWzIwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1RpbWVyVmFsdWVTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsVGltZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsVmFsdWUpKVJPTV9USU1FUlRBQkxFWzIyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1RpbWVyRE1BRXZlbnRTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsRE1BRXZlbnQpKVJPTV9USU1FUlRBQkxFWzIzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1RpbWVyRE1BRXZlbnRHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1RJTUVSVEFCTEVbMjRdKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgVUFSVCBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRQYXJpdHlNb2RlU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsUGFyaXR5KSlST01fVUFSVFRBQkxFWzBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVFBhcml0eU1vZGVHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fVUFSVFRBQkxFWzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVEZJRk9MZXZlbFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUeExldmVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxSeExldmVsKSlST01fVUFSVFRBQkxFWzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVEZJRk9MZXZlbEdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnB1bFR4TGV2ZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnB1bFJ4TGV2ZWwpKVJPTV9VQVJUVEFCTEVbM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJUQ29uZmlnU2V0RXhwQ2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFVBUlRDbGssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEJhdWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENvbmZpZykpUk9NX1VBUlRUQUJMRVs0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRDb25maWdHZXRFeHBDbGsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsVUFSVENsaywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpwdWxCYXVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpwdWxDb25maWcpKVJPTV9VQVJUVEFCTEVbNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJURW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9VQVJUVEFCTEVbNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJURGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9VQVJUVEFCTEVbN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJURklGT0VuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9VQVJUVEFCTEVbOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJURklGT0Rpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9VQVJUVEFCTEVbOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJUQ2hhcnNBdmFpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodEJvb2xlYW4gKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fVUFSVFRBQkxFWzEwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRTcGFjZUF2YWlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh0Qm9vbGVhbiAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9VQVJUVEFCTEVbMTFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVENoYXJHZXROb25CbG9ja2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fVUFSVFRBQkxFWzEyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRDaGFyR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1VBUlRUQUJMRVsxM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJUQ2hhclB1dE5vbkJsb2NraW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodEJvb2xlYW4gKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdWNEYXRhKSlST01fVUFSVFRBQkxFWzE0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRDaGFyUHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHVjRGF0YSkpUk9NX1VBUlRUQUJMRVsxNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJUQnJlYWtDdGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdEJvb2xlYW4gYkJyZWFrU3RhdGUpKVJPTV9VQVJUVEFCTEVbMTZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVEJ1c3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHRCb29sZWFuICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1VBUlRUQUJMRVsxN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJUSW50UmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdm9pZCgqcGZuSGFuZGxlcikodm9pZCkpKVJPTV9VQVJUVEFCTEVbMThdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVEludFVucmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fVUFSVFRBQkxFWzE5XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRJbnRFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9VQVJUVEFCTEVbMjBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVEludERpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX1VBUlRUQUJMRVsyMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJUSW50U3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdEJvb2xlYW4gYk1hc2tlZCkpUk9NX1VBUlRUQUJMRVsyMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJUSW50Q2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fVUFSVFRBQkxFWzIzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRETUFFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsRE1BRmxhZ3MpKVJPTV9VQVJUVEFCTEVbMjRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVERNQURpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxETUFGbGFncykpUk9NX1VBUlRUQUJMRVsyNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJUUnhFcnJvckdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9VQVJUVEFCTEVbMjZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVFJ4RXJyb3JDbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fVUFSVFRBQkxFWzI3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRNb2RlbUNvbnRyb2xTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ29udHJvbCkpUk9NX1VBUlRUQUJMRVsyOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJUTW9kZW1Db250cm9sQ2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENvbnRyb2wpKVJPTV9VQVJUVEFCTEVbMjldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVE1vZGVtQ29udHJvbEdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fVUFSVFRBQkxFWzMwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRNb2RlbVN0YXR1c0dldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1VBUlRUQUJMRVszMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJURmxvd0NvbnRyb2xTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bE1vZGUpKVJPTV9VQVJUVEFCTEVbMzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fVUFSVEZsb3dDb250cm9sR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fVUFSVFRBQkxFWzMzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1VBUlRUeEludE1vZGVTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsTW9kZSkpUk9NX1VBUlRUQUJMRVszNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VQVJUVHhJbnRNb2RlR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9VQVJUVEFCTEVbMzVdKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgdURNQSBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFDaGFubmVsVHJhbnNmZXJTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQ2hhbm5lbFN0cnVjdEluZGV4LCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsTW9kZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB2b2lkICpwdlNyY0FkZHIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB2b2lkICpwdkRzdEFkZHIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsVHJhbnNmZXJTaXplKSlST01fVURNQVRBQkxFWzBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fdURNQUVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQpKVJPTV9VRE1BVEFCTEVbMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV91RE1BRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCkpUk9NX1VETUFUQUJMRVsyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFFcnJvclN0YXR1c0dldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh2b2lkKSlST01fVURNQVRBQkxFWzNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fdURNQUVycm9yU3RhdHVzQ2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQpKVJPTV9VRE1BVEFCTEVbNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV91RE1BQ2hhbm5lbEVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bENoYW5uZWxOdW0pKVJPTV9VRE1BVEFCTEVbNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV91RE1BQ2hhbm5lbERpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bENoYW5uZWxOdW0pKVJPTV9VRE1BVEFCTEVbNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV91RE1BQ2hhbm5lbElzRW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodEJvb2xlYW4gKCopKHVuc2lnbmVkIGxvbmcgdWxDaGFubmVsTnVtKSlST01fVURNQVRBQkxFWzddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fdURNQUNvbnRyb2xCYXNlU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQgKnBDb250cm9sVGFibGUpKVJPTV9VRE1BVEFCTEVbOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV91RE1BQ29udHJvbEJhc2VHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAqICgqKSh2b2lkKSlST01fVURNQVRBQkxFWzldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fdURNQUNoYW5uZWxSZXF1ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxDaGFubmVsTnVtKSlST01fVURNQVRBQkxFWzEwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFDaGFubmVsQXR0cmlidXRlRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQ2hhbm5lbE51bSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQXR0cikpUk9NX1VETUFUQUJMRVsxMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV91RE1BQ2hhbm5lbEF0dHJpYnV0ZURpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bENoYW5uZWxOdW0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEF0dHIpKVJPTV9VRE1BVEFCTEVbMTJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fdURNQUNoYW5uZWxBdHRyaWJ1dGVHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxDaGFubmVsTnVtKSlST01fVURNQVRBQkxFWzEzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFDaGFubmVsQ29udHJvbFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQ2hhbm5lbFN0cnVjdEluZGV4LCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ29udHJvbCkpUk9NX1VETUFUQUJMRVsxNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV91RE1BQ2hhbm5lbFNpemVHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bENoYW5uZWxTdHJ1Y3RJbmRleCkpUk9NX1VETUFUQUJMRVsxNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV91RE1BQ2hhbm5lbE1vZGVHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bENoYW5uZWxTdHJ1Y3RJbmRleCkpUk9NX1VETUFUQUJMRVsxNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV91RE1BSW50U3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodm9pZCkpUk9NX1VETUFUQUJMRVsxN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV91RE1BSW50Q2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bENoYW5NYXNrKSlST01fVURNQVRBQkxFWzE4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFDb250cm9sQWx0ZXJuYXRlQmFzZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICogKCopKHZvaWQpKVJPTV9VRE1BVEFCTEVbMTldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fdURNQUNoYW5uZWxTY2F0dGVyR2F0aGVyU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxDaGFubmVsTnVtLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHVsVGFza0NvdW50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHZvaWQgKnB2VGFza0xpc3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJc1BlcmlwaFNHKSlST01fVURNQVRBQkxFWzIwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFDaGFubmVsQXNzaWduICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsTWFwcGluZykpUk9NX1VETUFUQUJMRVsyMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV91RE1BSW50UmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEludENoYW5uZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBmbkhhbmRsZXIpKHZvaWQpKSlST01fVURNQVRBQkxFWzIyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX3VETUFJbnRVbnJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsSW50Q2hhbm5lbCkpUk9NX1VETUFUQUJMRVsyM10pCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgY2FsbGluZyBST00gZnVuY3Rpb25zIGluIHRoZSBXYXRjaGRvZyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1dhdGNoZG9nSW50Q2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1dBVENIRE9HVEFCTEVbMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9XYXRjaGRvZ1J1bm5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodEJvb2xlYW4gKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fV0FUQ0hET0dUQUJMRVsxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1dhdGNoZG9nRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1dBVENIRE9HVEFCTEVbMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9XYXRjaGRvZ0xvY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9XQVRDSERPR1RBQkxFWzNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fV2F0Y2hkb2dVbmxvY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fV0FUQ0hET0dUQUJMRVs0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1dhdGNoZG9nTG9ja1N0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh0Qm9vbGVhbiAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9XQVRDSERPR1RBQkxFWzVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fV2F0Y2hkb2dSZWxvYWRTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxMb2FkVmFsKSlST01fV0FUQ0hET0dUQUJMRVs2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1dhdGNoZG9nUmVsb2FkR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1dBVENIRE9HVEFCTEVbN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9XYXRjaGRvZ1ZhbHVlR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9XQVRDSERPR1RBQkxFWzhdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fV2F0Y2hkb2dJbnRTdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRCb29sZWFuIGJNYXNrZWQpKVJPTV9XQVRDSERPR1RBQkxFWzEwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1dhdGNoZG9nU3RhbGxFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1dBVENIRE9HVEFCTEVbMTFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fV2F0Y2hkb2dTdGFsbERpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fV0FUQ0hET0dUQUJMRVsxMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9XYXRjaGRvZ0ludFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdm9pZCgqcGZuSGFuZGxlcikodm9pZCkpKVJPTV9XQVRDSERPR1RBQkxFWzEzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1dhdGNoZG9nSW50VW5yZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1dBVENIRE9HVEFCTEVbMTRdKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgSTJDIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDSW50UmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHZvaWQocGZuSGFuZGxlcikodm9pZCkpKVJPTV9JMkNUQUJMRVswXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ0ludFVucmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDVHhGSUZPQ29uZmlnU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJDb25maWcpKVJPTV9JMkNUQUJMRVsyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1R4RklGT0ZsdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDUnhGSUZPQ29uZmlnU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJDb25maWcpKVJPTV9JMkNUQUJMRVs0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1J4RklGT0ZsdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDRklGT1N0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVpbnQzMl90ICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDRklGT0RhdGFQdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgdWk4RGF0YSkpUk9NX0kyQ1RBQkxFWzddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDRklGT0RhdGFQdXROb25CbG9ja2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVpbnQzMl90ICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHVpOERhdGEpKVJPTV9JMkNUQUJMRVs4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ0ZJRk9EYXRhR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1aW50MzJfdCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9JMkNUQUJMRVs5XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ0ZJRk9EYXRhR2V0Tm9uQmxvY2tpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1aW50MzJfdCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOERhdGEpKVJPTV9JMkNUQUJMRVsxMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNNYXN0ZXJCdXJzdExlbmd0aFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCB1aThMZW5ndGgpKVJPTV9JMkNUQUJMRVsxMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNNYXN0ZXJCdXJzdENvdW50R2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodWludDMyX3QgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fSTJDVEFCTEVbMTJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDTWFzdGVyR2xpdGNoRmlsdGVyQ29uZmlnU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJDb25maWcpKVJPTV9JMkNUQUJMRVsxM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNTbGF2ZUZJRk9FbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkNvbmZpZykpUk9NX0kyQ1RBQkxFWzE0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1NsYXZlRklGT0Rpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzE1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ01hc3RlckJ1c0J1c3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChib29sICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzE2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ01hc3RlckJ1c3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChib29sICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzE3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ01hc3RlckNvbnRyb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyQ21kKSlST01fSTJDVEFCTEVbMThdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDTWFzdGVyRGF0YUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVpbnQzMl90ICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzE5XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ01hc3RlckRhdGFQdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90IHVpOERhdGEpKVJPTV9JMkNUQUJMRVsyMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNNYXN0ZXJEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9JMkNUQUJMRVsyMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNNYXN0ZXJFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9JMkNUQUJMRVsyMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNNYXN0ZXJFcnIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodWludDMyX3QgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fSTJDVEFCTEVbMjNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDTWFzdGVySW50Q2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fSTJDVEFCTEVbMjRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDTWFzdGVySW50RGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fSTJDVEFCTEVbMjVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDTWFzdGVySW50RW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fSTJDVEFCTEVbMjZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDTWFzdGVySW50U3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGJvb2wgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIGJvb2wgYk1hc2tlZCkpUk9NX0kyQ1RBQkxFWzI3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ01hc3RlckludEVuYWJsZUV4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMySW50RmxhZ3MpKVJPTV9JMkNUQUJMRVsyOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNNYXN0ZXJJbnREaXNhYmxlRXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkludEZsYWdzKSlST01fSTJDVEFCTEVbMjldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDTWFzdGVySW50U3RhdHVzRXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVpbnQzMl90ICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICBib29sIGJNYXNrZWQpKVJPTV9JMkNUQUJMRVszMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNNYXN0ZXJJbnRDbGVhckV4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkludEZsYWdzKSlST01fSTJDVEFCTEVbMzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDTWFzdGVyVGltZW91dFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJWYWx1ZSkpUk9NX0kyQ1RBQkxFWzMyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1NsYXZlQUNLT3ZlcnJpZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICBib29sIGJFbmFibGUpKVJPTV9JMkNUQUJMRVszM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNTbGF2ZUFDS1ZhbHVlU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgYm9vbCBiQUNLKSlST01fSTJDVEFCTEVbMzRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDTWFzdGVyTGluZVN0YXRlR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVpbnQzMl90ICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzM1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ01hc3RlclNsYXZlQWRkclNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90IHVpOFNsYXZlQWRkciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICBib29sIGJSZWNlaXZlKSlST01fSTJDVEFCTEVbMzZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDU2xhdmVEYXRhR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVpbnQzMl90ICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX0kyQ1RBQkxFWzM3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1NsYXZlRGF0YVB1dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90IHVpOERhdGEpKVJPTV9JMkNUQUJMRVszOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNTbGF2ZURpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9JMkNUQUJMRVszOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNTbGF2ZUVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9JMkNUQUJMRVs0MF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNTbGF2ZUluaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCB1aThTbGF2ZUFkZHIpKVJPTV9JMkNUQUJMRVs0MV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNTbGF2ZUFkZHJlc3NTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCB1aThBZGRyTnVtLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCB1aThTbGF2ZUFkZHIpKVJPTV9JMkNUQUJMRVs0Ml0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNTbGF2ZUludENsZWFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9JMkNUQUJMRVs0M10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNTbGF2ZUludERpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9JMkNUQUJMRVs0NF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNTbGF2ZUludEVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9JMkNUQUJMRVs0NV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNTbGF2ZUludENsZWFyRXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkludEZsYWdzKSlST01fSTJDVEFCTEVbNDZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDU2xhdmVJbnREaXNhYmxlRXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJJbnRGbGFncykpUk9NX0kyQ1RBQkxFWzQ3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyQ1NsYXZlSW50RW5hYmxlRXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMySW50RmxhZ3MpKVJPTV9JMkNUQUJMRVs0OF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNTbGF2ZUludFN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgoYm9vbCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgYm9vbCBiTWFza2VkKSlST01fSTJDVEFCTEVbNDldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDU2xhdmVJbnRTdGF0dXNFeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVpbnQzMl90ICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICBib29sIGJNYXNrZWQpKVJPTV9JMkNUQUJMRVs1MF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMkNTbGF2ZVN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodWludDMyX3QgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fSTJDVEFCTEVbNTFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJDTWFzdGVySW5pdEV4cENsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJJMkNDbGssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIGJvb2wgYkZhc3QpKVJPTV9JMkNUQUJMRVs1Ml0pCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgY2FsbGluZyBST00gZnVuY3Rpb25zIGluIHRoZSBTUEkgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TUElFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9TUElUQUJMRVswXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NQSURpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX1NQSVRBQkxFWzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU1BJUmVzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fU1BJVEFCTEVbMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TUElDb25maWdTZXRFeHBDbGsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsU1BJQ2xrLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEJpdFJhdGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bE1vZGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFN1Yk1vZGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENvbmZpZykpUk9NX1NQSVRBQkxFWzNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU1BJRGF0YUdldE5vbkJsb2NraW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKiBwdWxEYXRhKSlST01fU1BJVEFCTEVbNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TUElEYXRhR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqcHVsRGF0YSkpUk9NX1NQSVRBQkxFWzVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU1BJRGF0YVB1dE5vbkJsb2NraW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxEYXRhKSlST01fU1BJVEFCTEVbNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TUElEYXRhUHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bERhdGEpKVJPTV9TUElUQUJMRVs3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NQSUZJRk9FbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsRmxhZ3MpKVJPTV9TUElUQUJMRVs4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NQSUZJRk9EaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsRmxhZ3MpKVJPTV9TUElUQUJMRVs5XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NQSUZJRk9MZXZlbFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsVHhMZXZlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsUnhMZXZlbCkpUk9NX1NQSVRBQkxFWzEwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NQSUZJRk9MZXZlbEdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpwdWxUeExldmVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpwdWxSeExldmVsKSlST01fU1BJVEFCTEVbMTFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU1BJV29yZENvdW50U2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxXb3JkQ291bnQpKVJPTV9TUElUQUJMRVsxMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TUElJbnRSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdm9pZCgqcGZuSGFuZGxlcikodm9pZCkpKVJPTV9TUElUQUJMRVsxM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TUElJbnRVbnJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9TUElUQUJMRVsxNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TUElJbnRFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fU1BJVEFCTEVbMTVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU1BJSW50RGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX1NQSVRBQkxFWzE2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NQSUludFN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Qm9vbGVhbiBiTWFza2VkKSlST01fU1BJVEFCTEVbMTddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU1BJSW50Q2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX1NQSVRBQkxFWzE4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NQSURtYUVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsRmxhZ3MpKVJPTV9TUElUQUJMRVsxOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TUElEbWFEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEZsYWdzKSlST01fU1BJVEFCTEVbMjBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU1BJQ1NFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fU1BJVEFCTEVbMjFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU1BJQ1NEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fU1BJVEFCTEVbMjJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU1BJVHJhbnNmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnVjRG91dCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnVjRGluLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxTaXplLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxGbGFncykpUk9NX1NQSVRBQkxFWzIzXSkKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciBjYWxsaW5nIFJPTSBmdW5jdGlvbnMgaW4gdGhlIENBTSBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NhbWVyYVJlc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX0NBTUVSQVRBQkxFWzBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ2FtZXJhUGFyYW1zQ29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxIU1BvbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxWU1BvbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxGbGFncykpUk9NX0NBTUVSQVRBQkxFWzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ2FtZXJhWENsa0NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDYW1DbGtJbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxYQ2xrKSlST01fQ0FNRVJBVEFCTEVbMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9DYW1lcmFYQ2xrU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBiWENsa0ZsYWdzKSlST01fQ0FNRVJBVEFCTEVbM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9DYW1lcmFETUFFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9DQU1FUkFUQUJMRVs0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NhbWVyYURNQURpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX0NBTUVSQVRBQkxFWzVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ2FtZXJhVGhyZXNob2xkU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUaHJlc2hvbGQpKVJPTV9DQU1FUkFUQUJMRVs2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NhbWVyYUludFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB2b2lkICgqcGZuSGFuZGxlcikodm9pZCkpKVJPTV9DQU1FUkFUQUJMRVs3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NhbWVyYUludFVucmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX0NBTUVSQVRBQkxFWzhdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ2FtZXJhSW50RW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX0NBTUVSQVRBQkxFWzldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ2FtZXJhSW50RGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX0NBTUVSQVRBQkxFWzEwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NhbWVyYUludFN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX0NBTUVSQVRBQkxFWzExXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NhbWVyYUludENsZWFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9DQU1FUkFUQUJMRVsxMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9DYW1lcmFDYXB0dXJlU3RvcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdEJvb2xlYW4gYkltbWVkaWF0ZSkpUk9NX0NBTUVSQVRBQkxFWzEzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NhbWVyYUNhcHR1cmVTdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX0NBTUVSQVRBQkxFWzE0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NhbWVyYUJ1ZmZlclJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnBCdWZmZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHVjU2l6ZSkpUk9NX0NBTUVSQVRBQkxFWzE1XSkKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciBjYWxsaW5nIFJPTSBmdW5jdGlvbnMgaW4gdGhlIEZMQVNIIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fRmxhc2hEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQpKVJPTV9GTEFTSFRBQkxFWzBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fRmxhc2hFcmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxBZGRyZXNzKSlST01fRkxBU0hUQUJMRVsxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ZsYXNoTWFzc0VyYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChsb25nICgqKSh2b2lkKSlST01fRkxBU0hUQUJMRVsyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ZsYXNoTWFzc0VyYXNlTm9uQmxvY2tpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh2b2lkKSlST01fRkxBU0hUQUJMRVszXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ZsYXNoRXJhc2VOb25CbG9ja2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQWRkcmVzcykpUk9NX0ZMQVNIVEFCTEVbNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9GbGFzaFByb2dyYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgobG9uZyAoKikodW5zaWduZWQgbG9uZyAqcHVsRGF0YSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEFkZHJlc3MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENvdW50KSlST01fRkxBU0hUQUJMRVs1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ZsYXNoUHJvZ3JhbU5vbkJsb2NraW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChsb25nICgqKSh1bnNpZ25lZCBsb25nICpwdWxEYXRhLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQWRkcmVzcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ291bnQpKVJPTV9GTEFTSFRBQkxFWzZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fRmxhc2hJbnRSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQgKCpwZm5IYW5kbGVyKSh2b2lkKSkpUk9NX0ZMQVNIVEFCTEVbN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9GbGFzaEludFVucmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCkpUk9NX0ZMQVNIVEFCTEVbOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9GbGFzaEludEVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fRkxBU0hUQUJMRVs5XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ZsYXNoSW50RGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9GTEFTSFRBQkxFWzEwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0ZsYXNoSW50U3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh0Qm9vbGVhbiBiTWFza2VkKSlST01fRkxBU0hUQUJMRVsxMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9GbGFzaEludENsZWFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fRkxBU0hUQUJMRVsxMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9GbGFzaFByb3RlY3RHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodEZsYXNoUHJvdGVjdGlvbiAoKikodW5zaWduZWQgbG9uZyB1bEFkZHJlc3MpKVJPTV9GTEFTSFRBQkxFWzEzXSkKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciBjYWxsaW5nIFJPTSBmdW5jdGlvbnMgaW4gdGhlIFBpbiBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1Bpbk1vZGVTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUGluLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsUGluTW9kZSkpUk9NX1BJTlRBQkxFWzBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUGluRGlyTW9kZVNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxQaW4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxQaW5JTykpUk9NX1BJTlRBQkxFWzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUGluRGlyTW9kZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxQaW4pKVJPTV9QSU5UQUJMRVsyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1Bpbk1vZGVHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsUGluKSlST01fUElOVEFCTEVbM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QaW5Db25maWdHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBpbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICAqcHVsUGluU3RyZW5ndGgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqcHVsUGluVHlwZSkpUk9NX1BJTlRBQkxFWzRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUGluQ29uZmlnU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxQaW4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAgdWxQaW5TdHJlbmd0aCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxQaW5UeXBlKSlST01fUElOVEFCTEVbNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QaW5UeXBlVUFSVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBpbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsUGluTW9kZSkpUk9NX1BJTlRBQkxFWzZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUGluVHlwZUkyQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxQaW4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFBpbk1vZGUpKVJPTV9QSU5UQUJMRVs3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BpblR5cGVTUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUGluLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxQaW5Nb2RlKSlST01fUElOVEFCTEVbOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QaW5UeXBlSTJTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBpbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsUGluTW9kZSkpUk9NX1BJTlRBQkxFWzldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUGluVHlwZVRpbWVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxQaW4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFBpbk1vZGUpKVJPTV9QSU5UQUJMRVsxMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QaW5UeXBlQ2FtZXJhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBpbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsUGluTW9kZSkpUk9NX1BJTlRBQkxFWzExXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BpblR5cGVHUElPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUGluLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxQaW5Nb2RlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB0Qm9vbGVhbiBiT3BlbkRyYWluKSlST01fUElOVEFCTEVbMTJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUGluVHlwZUFEQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxQaW4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFBpbk1vZGUpKVJPTV9QSU5UQUJMRVsxM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QaW5UeXBlU0RIb3N0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBpbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsUGluTW9kZSkpUk9NX1BJTlRBQkxFWzE0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1Bpbkh5c3RlcmVzaXNTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsSHlzdGVyZXNpcykpUk9NX1BJTlRBQkxFWzE1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BpbkxvY2tMZXZlbFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUGluLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHVjTGV2ZWwpKVJPTV9QSU5UQUJMRVsxNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QaW5Mb2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bE91dEVuYWJsZSkpUk9NX1BJTlRBQkxFWzE3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BpblVubG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh2b2lkKSlST01fUElOVEFCTEVbMThdKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgU1lTVElDSyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1N5c1RpY2tFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh2b2lkKSlST01fU1lTVElDS1RBQkxFWzBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU3lzVGlja0Rpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQpKVJPTV9TWVNUSUNLVEFCTEVbMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TeXNUaWNrSW50UmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCAoKnBmbkhhbmRsZXIpKHZvaWQpKSlST01fU1lTVElDS1RBQkxFWzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU3lzVGlja0ludFVucmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQpKVJPTV9TWVNUSUNLVEFCTEVbM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TeXNUaWNrSW50RW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCkpUk9NX1NZU1RJQ0tUQUJMRVs0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1N5c1RpY2tJbnREaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh2b2lkKSlST01fU1lTVElDS1RBQkxFWzVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU3lzVGlja1BlcmlvZFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxQZXJpb2QpKVJPTV9TWVNUSUNLVEFCTEVbNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TeXNUaWNrUGVyaW9kR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodm9pZCkpUk9NX1NZU1RJQ0tUQUJMRVs3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1N5c1RpY2tWYWx1ZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh2b2lkKSlST01fU1lTVElDS1RBQkxFWzhdKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgVVRJTFMgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9VdGlsc0RlbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bENvdW50KSlST01fVVRJTFNUQUJMRVswXSkKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciBjYWxsaW5nIFJPTSBmdW5jdGlvbnMgaW4gdGhlIEkyUyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyU0VuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsTW9kZSkpUk9NX0kyU1RBQkxFWzBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJTRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fSTJTVEFCTEVbMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMlNEYXRhUHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bERhdGFMaW5lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bERhdGEpKVJPTV9JMlNUQUJMRVsyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyU0RhdGFQdXROb25CbG9ja2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsRGF0YUxpbmUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsRGF0YSkpUk9NX0kyU1RBQkxFWzNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJTRGF0YUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxEYXRhTGluZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnB1bERhdGEpKVJPTV9JMlNUQUJMRVs0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyU0RhdGFHZXROb25CbG9ja2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsRGF0YUxpbmUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpwdWxEYXRhKSlST01fSTJTVEFCTEVbNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMlNDb25maWdTZXRFeHBDbGsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEkyU0NsaywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEJpdENsaywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENvbmZpZykpUk9NX0kyU1RBQkxFWzZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJTVHhGSUZPRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUeExldmVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxXb3Jkc1BlclRyYW5zZmVyKSlST01fSTJTVEFCTEVbN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMlNUeEZJRk9EaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9JMlNUQUJMRVs4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyU1J4RklGT0VuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsUnhMZXZlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsV29yZHNQZXJUcmFuc2ZlcikpUk9NX0kyU1RBQkxFWzldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJTUnhGSUZPRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fSTJTVEFCTEVbMTBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJTVHhGSUZPU3RhdHVzR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fSTJTVEFCTEVbMTFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJTUnhGSUZPU3RhdHVzR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fSTJTVEFCTEVbMTJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJTU2VyaWFsaXplckNvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxEYXRhTGluZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxTZXJNb2RlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbkFjdFN0YXRlKSlST01fSTJTVEFCTEVbMTNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJTSW50RW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX0kyU1RBQkxFWzE0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyU0ludERpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9JMlNUQUJMRVsxNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMlNJbnRTdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9JMlNUQUJMRVsxNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9JMlNJbnRDbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fSTJTVEFCTEVbMTddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSTJTSW50UmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHZvaWQgKCpwZm5IYW5kbGVyKSh2b2lkKSkpUk9NX0kyU1RBQkxFWzE4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyU0ludFVucmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX0kyU1RBQkxFWzE5XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyU1R4QWN0aXZlU2xvdFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQWN0U2xvdCkpUk9NX0kyU1RBQkxFWzIwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0kyU1J4QWN0aXZlU2xvdFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQWN0U2xvdCkpUk9NX0kyU1RBQkxFWzIxXSkKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciBjYWxsaW5nIFJPTSBmdW5jdGlvbnMgaW4gdGhlIEdQSU8gQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9HUElPRGlyTW9kZVNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBvcnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB1Y1BpbnMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFBpbklPKSlST01fR1BJT1RBQkxFWzBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fR1BJT0Rpck1vZGVHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxQb3J0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdWNQaW4pKVJPTV9HUElPVEFCTEVbMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9HUElPSW50VHlwZVNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBvcnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB1Y1BpbnMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludFR5cGUpKVJPTV9HUElPVEFCTEVbMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9HUElPRE1BVHJpZ2dlckVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBvcnQpKVJPTV9HUElPVEFCTEVbM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9HUElPRE1BVHJpZ2dlckRpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBvcnQpKVJPTV9HUElPVEFCTEVbNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9HUElPSW50VHlwZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bFBvcnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB1Y1BpbikpUk9NX0dQSU9UQUJMRVs1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0dQSU9JbnRFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUG9ydCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9HUElPVEFCTEVbNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9HUElPSW50RGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBvcnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fR1BJT1RBQkxFWzddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fR1BJT0ludFN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxQb3J0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHRCb29sZWFuIGJNYXNrZWQpKVJPTV9HUElPVEFCTEVbOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9HUElPSW50Q2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBvcnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fR1BJT1RBQkxFWzldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fR1BJT0ludFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxQb3J0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHZvaWQgKCpwZm5JbnRIYW5kbGVyKSh2b2lkKSkpUk9NX0dQSU9UQUJMRVsxMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9HUElPSW50VW5yZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBvcnQpKVJPTV9HUElPVEFCTEVbMTFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fR1BJT1BpblJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxQb3J0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdWNQaW5zKSlST01fR1BJT1RBQkxFWzEyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0dQSU9QaW5Xcml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUG9ydCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHVjUGlucywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHVjVmFsKSlST01fR1BJT1RBQkxFWzEzXSkKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciBjYWxsaW5nIFJPTSBmdW5jdGlvbnMgaW4gdGhlIEFFUyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FFU0NvbmZpZ1NldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyQ29uZmlnKSlST01fQUVTVEFCTEVbMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRVNLZXkxU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOEtleSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMktleXNpemUpKVJPTV9BRVNUQUJMRVsxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FFU0tleTJTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4S2V5LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyS2V5c2l6ZSkpUk9NX0FFU1RBQkxFWzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQUVTS2V5M1NldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThLZXkpKVJPTV9BRVNUQUJMRVszXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FFU0lWU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4SVZkYXRhKSlST01fQUVTVEFCTEVbNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRVNUYWdSZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOFRhZ0RhdGEpKVJPTV9BRVNUQUJMRVs1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FFU0RhdGFMZW5ndGhTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50NjRfdCB1aTY0TGVuZ3RoKSlST01fQUVTVEFCTEVbNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRVNBdXRoRGF0YUxlbmd0aFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkxlbmd0aCkpUk9NX0FFU1RBQkxFWzddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQUVTRGF0YVJlYWROb25CbG9ja2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGJvb2wgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThEZXN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgdWk4TGVuZ3RoKSlST01fQUVTVEFCTEVbOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRVNEYXRhUmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOERlc3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCB1aThMZW5ndGgpKVJPTV9BRVNUQUJMRVs5XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FFU0RhdGFXcml0ZU5vbkJsb2NraW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChib29sICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4U3JjLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90IHVpOExlbmd0aCkpUk9NX0FFU1RBQkxFWzEwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FFU0RhdGFXcml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4U3JjLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90IHVpOExlbmd0aCkpUk9NX0FFU1RBQkxFWzExXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FFU0RhdGFQcm9jZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChib29sICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4U3JjLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4RGVzdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyTGVuZ3RoKSlST01fQUVTVEFCTEVbMTJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQUVTRGF0YU1BQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGJvb2wgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThTcmMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJMZW5ndGgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThUYWcpKVJPTV9BRVNUQUJMRVsxM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRVNEYXRhUHJvY2Vzc0FFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgoYm9vbCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOFNyYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOERlc3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkxlbmd0aCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOEF1dGhTcmMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkF1dGhMZW5ndGgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOFRhZykpUk9NX0FFU1RBQkxFWzE0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FFU0ludFN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1aW50MzJfdCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBiTWFza2VkKSlST01fQUVTVEFCTEVbMTVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQUVTSW50RW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJJbnRGbGFncykpUk9NX0FFU1RBQkxFWzE2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FFU0ludERpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMySW50RmxhZ3MpKVJPTV9BRVNUQUJMRVsxN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRVNJbnRDbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkludEZsYWdzKSlST01fQUVTVEFCTEVbMThdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQUVTSW50UmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHZvaWQoKnBmbkhhbmRsZXIpKHZvaWQpKSlST01fQUVTVEFCTEVbMTldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQUVTSW50VW5yZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlKSlST01fQUVTVEFCTEVbMjBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQUVTRE1BRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJGbGFncykpUk9NX0FFU1RBQkxFWzIxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FFU0RNQURpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyRmxhZ3MpKVJPTV9BRVNUQUJMRVsyMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRVNJVkdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOElWZGF0YSkpUk9NX0FFU1RBQkxFWzIzXSkKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciBjYWxsaW5nIFJPTSBmdW5jdGlvbnMgaW4gdGhlIERFUyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0RFU0NvbmZpZ1NldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyQ29uZmlnKSlST01fREVTVEFCTEVbMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9ERVNEYXRhUmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOERlc3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCB1aThMZW5ndGgpKVJPTV9ERVNUQUJMRVsxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0RFU0RhdGFSZWFkTm9uQmxvY2tpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChib29sICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4RGVzdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90IHVpOExlbmd0aCkpUk9NX0RFU1RBQkxFWzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fREVTRGF0YVByb2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGJvb2wgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThTcmMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThEZXN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJMZW5ndGgpKVJPTV9ERVNUQUJMRVszXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0RFU0RhdGFXcml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4U3JjLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90IHVpOExlbmd0aCkpUk9NX0RFU1RBQkxFWzRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fREVTRGF0YVdyaXRlTm9uQmxvY2tpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGJvb2wgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThTcmMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgdWk4TGVuZ3RoKSlST01fREVTVEFCTEVbNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9ERVNETUFEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkZsYWdzKSlST01fREVTVEFCTEVbNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9ERVNETUFFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkZsYWdzKSlST01fREVTVEFCTEVbN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9ERVNJbnRDbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkludEZsYWdzKSlST01fREVTVEFCTEVbOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9ERVNJbnREaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkludEZsYWdzKSlST01fREVTVEFCTEVbOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9ERVNJbnRFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkludEZsYWdzKSlST01fREVTVEFCTEVbMTBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fREVTSW50UmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHZvaWQoKnBmbkhhbmRsZXIpKHZvaWQpKSlST01fREVTVEFCTEVbMTFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fREVTSW50U3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVpbnQzMl90ICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICBib29sIGJNYXNrZWQpKVJPTV9ERVNUQUJMRVsxMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9ERVNJbnRVbnJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9ERVNUQUJMRVsxM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9ERVNJVlNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgoYm9vbCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOElWZGF0YSkpUk9NX0RFU1RBQkxFWzE0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0RFU0tleVNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4S2V5KSlST01fREVTVEFCTEVbMTVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fREVTRGF0YUxlbmd0aFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJMZW5ndGgpKVJPTV9ERVNUQUJMRVsxNl0pCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgY2FsbGluZyBST00gZnVuY3Rpb25zIGluIHRoZSBTSEFNRDUgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TSEFNRDVDb25maWdTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMk1vZGUpKVJPTV9TSEFNRDVUQUJMRVswXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NIQU1ENURhdGFQcm9jZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChib29sICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4RGF0YVNyYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyRGF0YUxlbmd0aCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4SGFzaFJlc3VsdCkpUk9NX1NIQU1ENVRBQkxFWzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0hBTUQ1RGF0YVdyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThTcmMpKVJPTV9TSEFNRDVUQUJMRVsyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NIQU1ENURhdGFXcml0ZU5vbkJsb2NraW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChib29sICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4U3JjKSlST01fU0hBTUQ1VEFCTEVbM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TSEFNRDVETUFEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9TSEFNRDVUQUJMRVs0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NIQU1ENURNQUVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSkpUk9NX1NIQU1ENVRBQkxFWzVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0hBTUQ1RGF0YUxlbmd0aFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJMZW5ndGgpKVJPTV9TSEFNRDVUQUJMRVs2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NIQU1ENUhNQUNLZXlTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWk4U3JjKSlST01fU0hBTUQ1VEFCTEVbN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TSEFNRDVITUFDUFBLZXlHZW5lcmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOEtleSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOFBQS2V5KSlST01fU0hBTUQ1VEFCTEVbOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TSEFNRDVITUFDUFBLZXlTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOFNyYykpUk9NX1NIQU1ENVRBQkxFWzldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0hBTUQ1SE1BQ1Byb2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGJvb2wgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThEYXRhU3JjLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJEYXRhTGVuZ3RoLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1aThIYXNoUmVzdWx0KSlST01fU0hBTUQ1VEFCTEVbMTBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0hBTUQ1SW50Q2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJJbnRGbGFncykpUk9NX1NIQU1ENVRBQkxFWzExXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NIQU1ENUludERpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMySW50RmxhZ3MpKVJPTV9TSEFNRDVUQUJMRVsxMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TSEFNRDVJbnRFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkludEZsYWdzKSlST01fU0hBTUQ1VEFCTEVbMTNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0hBTUQ1SW50UmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVpbnQzMl90IHVpMzJCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHZvaWQoKnBmbkhhbmRsZXIpKHZvaWQpKSlST01fU0hBTUQ1VEFCTEVbMTRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0hBTUQ1SW50U3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVpbnQzMl90ICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICBib29sIGJNYXNrZWQpKVJPTV9TSEFNRDVUQUJMRVsxNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TSEFNRDVJbnRVbnJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9TSEFNRDVUQUJMRVsxNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TSEFNRDVSZXN1bHRSZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVpOERlc3QpKVJPTV9TSEFNRDVUQUJMRVsxN10pCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgY2FsbGluZyBST00gZnVuY3Rpb25zIGluIHRoZSBDUkMgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9DUkNDb25maWdTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkNSQ0NvbmZpZykpUk9NX0NSQ1RBQkxFWzBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ1JDRGF0YVByb2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVpbnQzMl90ICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwdWlEYXRhSW4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyRGF0YUxlbmd0aCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyQ29uZmlnKSlST01fQ1JDVEFCTEVbMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9DUkNEYXRhV3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodWludDMyX3QgdWkzMkJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdWkzMkRhdGEpKVJPTV9DUkNUQUJMRVsyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NSQ1Jlc3VsdFJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1aW50MzJfdCAoKikodWludDMyX3QgdWkzMkJhc2UpKVJPTV9DUkNUQUJMRVszXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NSQ1NlZWRTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1aTMyU2VlZCkpUk9NX0NSQ1RBQkxFWzRdKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgU0RIT1NUIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0RIb3N0Q21kUmVzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fU0RIT1NUVEFCTEVbMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TREhvc3RJbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9TREhPU1RUQUJMRVsxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NESG9zdENtZFNlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKChsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDbWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB1bEFyZykpUk9NX1NESE9TVFRBQkxFWzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0RIb3N0SW50UmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHZvaWQgKCpwZm5IYW5kbGVyKSh2b2lkKSkpUk9NX1NESE9TVFRBQkxFWzNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0RIb3N0SW50VW5yZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fU0RIT1NUVEFCTEVbNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TREhvc3RJbnRFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9TREhPU1RUQUJMRVs1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NESG9zdEludERpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX1NESE9TVFRBQkxFWzZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0RIb3N0SW50U3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fU0RIT1NUVEFCTEVbN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TREhvc3RJbnRDbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpKVJPTV9TREhPU1RUQUJMRVs4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NESG9zdFJlc3BHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsUmVzcG5zZVs0XSkpUk9NX1NESE9TVFRBQkxFWzEwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NESG9zdEJsb2NrU2l6ZVNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bEJsa1NpemUpKVJPTV9TREhPU1RUQUJMRVsxMV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TREhvc3RCbG9ja0NvdW50U2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgdWxCbGtDb3VudCkpUk9NX1NESE9TVFRBQkxFWzEyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1NESG9zdERhdGFOb25CbG9ja2luZ1dyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh0Qm9vbGVhbiAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bERhdGEpKVJPTV9TREhPU1RUQUJMRVsxM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TREhvc3REYXRhTm9uQmxvY2tpbmdSZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodEJvb2xlYW4gKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnB1bERhdGEpKVJPTV9TREhPU1RUQUJMRVsxNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TREhvc3REYXRhV3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bERhdGEpKVJPTV9TREhPU1RUQUJMRVsxNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9TREhvc3REYXRhUmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqdWxEYXRhKSlST01fU0RIT1NUVEFCTEVbMTZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0RIb3N0U2V0RXhwQ2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxTREhvc3RDbGssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDYXJkQ2xrKSlST01fU0RIT1NUVEFCTEVbMTddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0RIb3N0Q2FyZEVycm9yTWFza1NldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxFcnJNYXNrKSlST01fU0RIT1NUVEFCTEVbMThdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fU0RIb3N0Q2FyZEVycm9yTWFza0dldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fU0RIT1NUVEFCTEVbMTldKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgUFJDTSBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01NQ1VSZXNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh0Qm9vbGVhbiBiSW5jbHVkZVN1YnN5c3RlbSkpUk9NX1BSQ01UQUJMRVsxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01TeXNSZXNldENhdXNlR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh2b2lkKSlST01fUFJDTVRBQkxFWzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTVBlcmlwaGVyYWxDbGtFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxQZXJpcGhlcmFsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDbGtGbGFncykpUk9NX1BSQ01UQUJMRVszXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01QZXJpcGhlcmFsQ2xrRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsUGVyaXBoZXJhbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ2xrRmxhZ3MpKVJPTV9QUkNNVEFCTEVbNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNUGVyaXBoZXJhbFJlc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFBlcmlwaGVyYWwpKVJPTV9QUkNNVEFCTEVbNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNUGVyaXBoZXJhbFN0YXR1c0dldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodEJvb2xlYW4gKCopKHVuc2lnbmVkIGxvbmcgdWxQZXJpcGhlcmFsKSlST01fUFJDTVRBQkxFWzZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUkyU0Nsb2NrRnJlcVNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxJMkNDbGtGcmVxKSlST01fUFJDTVRBQkxFWzddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTVBlcmlwaGVyYWxDbG9ja0dldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHVuc2lnbmVkIGxvbmcgdWxQZXJpcGhlcmFsKSlST01fUFJDTVRBQkxFWzhdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTVNsZWVwRW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQpKVJPTV9QUkNNVEFCTEVbOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNU1JBTVJldGVudGlvbkVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFNyYW1Db2xTZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEZsYWdzKSlST01fUFJDTVRBQkxFWzExXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01TUkFNUmV0ZW50aW9uRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsU3JhbUNvbFNlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsRmxhZ3MpKVJPTV9QUkNNVEFCTEVbMTJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUxQRFNFbnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQpKVJPTV9QUkNNVEFCTEVbMTNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUxQRFNJbnRlcnZhbFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxUaWNrcykpUk9NX1BSQ01UQUJMRVsxNF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNTFBEU1dha2V1cFNvdXJjZUVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bExwZHNXYWtldXBTcmMpKVJPTV9QUkNNVEFCTEVbMTVdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUxQRFNXYWtldXBDYXVzZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHZvaWQpKVJPTV9QUkNNVEFCTEVbMTZdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUxQRFNXYWtlVXBHUElPU2VsZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxHUElPUGluLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxUeXBlKSlST01fUFJDTVRBQkxFWzE3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01MUERTV2FrZXVwU291cmNlRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsTHBkc1dha2V1cFNyYykpUk9NX1BSQ01UQUJMRVsxOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNSGliZXJuYXRlRW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCkpUk9NX1BSQ01UQUJMRVsxOV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEhJQldha3VwU3JjKSlST01fUFJDTVRBQkxFWzIwXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01IaWJlcm5hdGVXYWtldXBDYXVzZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh2b2lkKSlST01fUFJDTVRBQkxFWzIxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01IaWJlcm5hdGVXYWtlVXBHUElPU2VsZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsTXVsdGlHUElPQml0TWFwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsVHlwZSkpUk9NX1BSQ01UQUJMRVsyMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEhJQldha3VwU3JjKSlST01fUFJDTVRBQkxFWzIzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01IaWJlcm5hdGVJbnRlcnZhbFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIGxvbmcgdWxsVGlja3MpKVJPTV9QUkNNVEFCTEVbMjRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTVNsb3dDbGtDdHJHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgbG9uZyAoKikodm9pZCkpUk9NX1BSQ01UQUJMRVsyNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNU2xvd0Nsa0N0ck1hdGNoU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyBsb25nIHVsbFRpY2tzKSlST01fUFJDTVRBQkxFWzI2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01TbG93Q2xrQ3RyTWF0Y2hHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nIGxvbmcgKCopKHZvaWQpKVJPTV9QUkNNVEFCTEVbMjddKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTU9DUlJlZ2lzdGVyV3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGNoYXIgdWNJbmRleCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxSZWdWYWx1ZSkpUk9NX1BSQ01UQUJMRVsyOF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNT0NSUmVnaXN0ZXJSZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgY2hhciB1Y0luZGV4KSlST01fUFJDTVRBQkxFWzI5XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01JbnRSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh2b2lkICgqcGZuSGFuZGxlcikodm9pZCkpKVJPTV9QUkNNVEFCTEVbMzBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUludFVucmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQpKVJPTV9QUkNNVEFCTEVbMzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUludEVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX1BSQ01UQUJMRVszMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNSW50RGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fUFJDTVRBQkxFWzMzXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01JbnRTdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh2b2lkKSlST01fUFJDTVRBQkxFWzM0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01SVENJblVzZVNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh2b2lkKSlST01fUFJDTVRBQkxFWzM1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01SVENJblVzZUdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh0Qm9vbGVhbiAoKikodm9pZCkpUk9NX1BSQ01UQUJMRVszNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNUlRDU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bFNlY3MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgdXNNc2VjKSlST01fUFJDTVRBQkxFWzM3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01SVENHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nICp1bFNlY3MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAqdXNNc2VjKSlST01fUFJDTVRBQkxFWzM4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01SVENNYXRjaFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsU2VjcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCB1c01zZWMpKVJPTV9QUkNNVEFCTEVbMzldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTVJUQ01hdGNoR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgKnVsU2VjcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICp1c01zZWMpKVJPTV9QUkNNVEFCTEVbNDBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUxQRFNSZXN0b3JlSW5mb1NldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxSZXN0b3JlU1AsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxSZXN0b3JlUEMpKVJPTV9QUkNNVEFCTEVbNDFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTVNsb3dDbGtDdHJGYXN0R2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgbG9uZyAoKikodm9pZCkpUk9NX1BSQ01UQUJMRVs0Ml0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNQ0MzMjAwTUNVSW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCkpUk9NX1BSQ01UQUJMRVs0M10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNSElCUmVnUmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bFJlZ0FkZHIpKVJPTV9QUkNNVEFCTEVbNDRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUhJQlJlZ1dyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxSZWdBZGRyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxWYWx1ZSkpUk9NX1BSQ01UQUJMRVs0NV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNQ2FtZXJhRnJlcVNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgY2hhciB1bERpdmlkZXIsICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB1bFdpZHRoKSlST01fUFJDTVRBQkxFWzQ2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX1BSQ01JT1JldGVudGlvbkVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsSU9SZXRHcnBGbGFncykpUk9NX1BSQ01UQUJMRVs0N10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9QUkNNSU9SZXRlbnRpb25EaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bElPUmV0R3JwRmxhZ3MpKVJPTV9QUkNNVEFCTEVbNDhdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTURldmljZVR5cGVHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHZvaWQpKVJPTV9QUkNNVEFCTEVbNDldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUxQRFNFbnRlcktlZXBEZWJ1Z0lmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQpKVJPTV9QUkNNVEFCTEVbNTBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fUFJDTUhpYmVybmF0ZUN5Y2xlVHJpZ2dlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHZvaWQpKVJPTV9QUkNNVEFCTEVbNTFdKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgSFdTUElOTE9DSyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0h3U3BpbkxvY2tBY3F1aXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyTG9ja0lEKSlST01fSFdTUElOTE9DS1RBQkxFWzBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSHdTcGluTG9ja1RyeUFjcXVpcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGludDMyX3QgKCopKHVpbnQzMl90IHVpMzJMb2NrSUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVpMzJSZXRyeSkpUk9NX0hXU1BJTkxPQ0tUQUJMRVsxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0h3U3BpbkxvY2tSZWxlYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1aW50MzJfdCB1aTMyTG9ja0lEKSlST01fSFdTUElOTE9DS1RBQkxFWzJdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fSHdTcGluTG9ja1Rlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVpbnQzMl90ICgqKSh1aW50MzJfdCB1aTMyTG9ja0lELCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICBib29sIGJDdXJyZW50U3RhdHVzKSlST01fSFdTUElOTE9DS1RBQkxFWzNdKQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIGNhbGxpbmcgUk9NIGZ1bmN0aW9ucyBpbiB0aGUgQURDIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQURDRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlKSlST01fQURDVEFCTEVbMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRENEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UpKVJPTV9BRENUQUJMRVsxXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FEQ0NoYW5uZWxFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDaGFubmVsKSlST01fQURDVEFCTEVbMl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRENDaGFubmVsRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ2hhbm5lbCkpUk9NX0FEQ1RBQkxFWzNdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQURDSW50UmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDaGFubmVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHZvaWQgKCpwZm5IYW5kbGVyKSh2b2lkKSkpUk9NX0FEQ1RBQkxFWzRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQURDSW50VW5yZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDaGFubmVsKSlST01fQURDVEFCTEVbNV0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRENJbnRFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENoYW5uZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fQURDVEFCTEVbNl0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRENJbnREaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENoYW5uZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKSlST01fQURDVEFCTEVbN10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9BRENJbnRTdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodW5zaWduZWQgbG9uZyB1bEJhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ2hhbm5lbCkpUk9NX0FEQ1RBQkxFWzhdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQURDSW50Q2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDaGFubmVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncykpUk9NX0FEQ1RBQkxFWzldKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQURDRE1BRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDaGFubmVsKSlST01fQURDVEFCTEVbMTBdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQURDRE1BRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDaGFubmVsKSlST01fQURDVEFCTEVbMTFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjAwX1JPTV9EUlZfQVBJKSB8fCBcCisgICAgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQURDVGltZXJDb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxWYWx1ZSkpUk9NX0FEQ1RBQkxFWzE0XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FEQ1RpbWVyRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX0FEQ1RBQkxFWzE1XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FEQ1RpbWVyRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX0FEQ1RBQkxFWzE2XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FEQ1RpbWVyUmVzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX0FEQ1RBQkxFWzE3XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FEQ1RpbWVyVmFsdWVHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSkpUk9NX0FEQ1RBQkxFWzE4XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FEQ0ZJRk9MdmxHZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBjaGFyICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ2hhbm5lbCkpUk9NX0FEQ1RBQkxFWzE5XSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIwMF9ST01fRFJWX0FQSSkgfHwgXAorICAgIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0FEQ0ZJRk9SZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHVsQ2hhbm5lbCkpUk9NX0FEQ1RBQkxFWzIwXSkKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciBjYWxsaW5nIFJPTSBmdW5jdGlvbnMgaW4gdGhlIENQVSBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NQVWNwc2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nICgqKSh2b2lkKSlST01fQ1BVVEFCTEVbMF0pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9DUFVjcHNpZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodm9pZCkpUk9NX0NQVVRBQkxFWzFdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ1BVcHJpbWFzayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVuc2lnbmVkIGxvbmcgKCopKHZvaWQpKVJPTV9DUFVUQUJMRVsyXSkKKyNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0NDMzIyMF9ST01fRFJWX0FQSSkKKyNkZWZpbmUgUk9NX0NQVXdmaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh2b2lkKSlST01fQ1BVVEFCTEVbM10pCisjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIFJPTV9DUFViYXNlcHJpR2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodW5zaWduZWQgbG9uZyAoKikodm9pZCkpUk9NX0NQVVRBQkxFWzRdKQorI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfQ0MzMjIwX1JPTV9EUlZfQVBJKQorI2RlZmluZSBST01fQ1BVYmFzZXByaVNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcgdWxOZXdCYXNlcHJpKSlST01fQ1BVVEFCTEVbNV0pCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgY2FsbGluZyBST00gZnVuY3Rpb25zIERpcmVjdGx5LgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgUk9NX1V0aWxzRGVsYXlEaXJlY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh1bnNpZ25lZCBsb25nIHVsQ291bnQpKVJPTV9VVElMU1RBQkxFWzBdKQorCisjZGVmaW5lIFJPTV9QUkNNTFBEU0VudGVyRGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgodm9pZCAoKikodm9pZCkpUk9NX1BSQ01UQUJMRVsxM10pCisKKyNkZWZpbmUgUk9NX1BSQ01MUERTRW50ZXJLZWVwRGVidWdJZkRpcmVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh2b2lkICgqKSh2b2lkKSlST01fUFJDTVRBQkxFWzUwXSkKKworI2VuZGlmIC8vIF9fUk9NX0hfXwpkaWZmIC0tZ2l0IGEvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL3JvbV9tYXAuaCBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9yb21fbWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZiNjgzOAotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9yb21fbWFwLmgKQEAgLTAsMCArMSwzMzIxIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiAgYXJlIG1ldDoKKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIHJvbV9tYXAuaCAtIE1hY3JvcyB0byBmYWNpbGl0YXRlIGNhbGxpbmcgZnVuY3Rpb25zIGluIHRoZSBST00gd2hlbiB0aGV5IGFyZQorLy8gICAgICAgICAgICAgYXZhaWxhYmxlLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUSElTIElTIEFOIEFVVE8tR0VORVJBVEVEIEZJTEUuICBETyBOT1QgRURJVCBCWSBIQU5ELgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworI2lmbmRlZiBfX1JPTV9NQVBfSF9fCisjZGVmaW5lIF9fUk9NX01BUF9IX18KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gUGF0Y2hlZCBST00gQVBJcworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2luY2x1ZGUgInJvbV9wYXRjaC5oIgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciB0aGUgSW50ZXJydXB0IEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgUk9NX0ludEVuYWJsZQorI2RlZmluZSBNQVBfSW50RW5hYmxlIFwKKyAgICAgICAgUk9NX0ludEVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0ludEVuYWJsZSBcCisgICAgICAgIEludEVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0ludE1hc3RlckVuYWJsZQorI2RlZmluZSBNQVBfSW50TWFzdGVyRW5hYmxlIFwKKyAgICAgICAgUk9NX0ludE1hc3RlckVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0ludE1hc3RlckVuYWJsZSBcCisgICAgICAgIEludE1hc3RlckVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0ludE1hc3RlckRpc2FibGUKKyNkZWZpbmUgTUFQX0ludE1hc3RlckRpc2FibGUgXAorICAgICAgICBST01fSW50TWFzdGVyRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0ludE1hc3RlckRpc2FibGUgXAorICAgICAgICBJbnRNYXN0ZXJEaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fSW50RGlzYWJsZQorI2RlZmluZSBNQVBfSW50RGlzYWJsZSBcCisgICAgICAgIFJPTV9JbnREaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfSW50RGlzYWJsZSBcCisgICAgICAgIEludERpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9JbnRQcmlvcml0eUdyb3VwaW5nU2V0CisjZGVmaW5lIE1BUF9JbnRQcmlvcml0eUdyb3VwaW5nU2V0IFwKKyAgICAgICAgUk9NX0ludFByaW9yaXR5R3JvdXBpbmdTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JbnRQcmlvcml0eUdyb3VwaW5nU2V0IFwKKyAgICAgICAgSW50UHJpb3JpdHlHcm91cGluZ1NldAorI2VuZGlmCisjaWZkZWYgUk9NX0ludFByaW9yaXR5R3JvdXBpbmdHZXQKKyNkZWZpbmUgTUFQX0ludFByaW9yaXR5R3JvdXBpbmdHZXQgXAorICAgICAgICBST01fSW50UHJpb3JpdHlHcm91cGluZ0dldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0ludFByaW9yaXR5R3JvdXBpbmdHZXQgXAorICAgICAgICBJbnRQcmlvcml0eUdyb3VwaW5nR2V0CisjZW5kaWYKKyNpZmRlZiBST01fSW50UHJpb3JpdHlTZXQKKyNkZWZpbmUgTUFQX0ludFByaW9yaXR5U2V0IFwKKyAgICAgICAgUk9NX0ludFByaW9yaXR5U2V0CisjZWxzZQorI2RlZmluZSBNQVBfSW50UHJpb3JpdHlTZXQgXAorICAgICAgICBJbnRQcmlvcml0eVNldAorI2VuZGlmCisjaWZkZWYgUk9NX0ludFByaW9yaXR5R2V0CisjZGVmaW5lIE1BUF9JbnRQcmlvcml0eUdldCBcCisgICAgICAgIFJPTV9JbnRQcmlvcml0eUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0ludFByaW9yaXR5R2V0IFwKKyAgICAgICAgSW50UHJpb3JpdHlHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JbnRQZW5kU2V0CisjZGVmaW5lIE1BUF9JbnRQZW5kU2V0IFwKKyAgICAgICAgUk9NX0ludFBlbmRTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JbnRQZW5kU2V0IFwKKyAgICAgICAgSW50UGVuZFNldAorI2VuZGlmCisjaWZkZWYgUk9NX0ludFBlbmRDbGVhcgorI2RlZmluZSBNQVBfSW50UGVuZENsZWFyIFwKKyAgICAgICAgUk9NX0ludFBlbmRDbGVhcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0ludFBlbmRDbGVhciBcCisgICAgICAgIEludFBlbmRDbGVhcgorI2VuZGlmCisjaWZkZWYgUk9NX0ludFByaW9yaXR5TWFza1NldAorI2RlZmluZSBNQVBfSW50UHJpb3JpdHlNYXNrU2V0IFwKKyAgICAgICAgUk9NX0ludFByaW9yaXR5TWFza1NldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0ludFByaW9yaXR5TWFza1NldCBcCisgICAgICAgIEludFByaW9yaXR5TWFza1NldAorI2VuZGlmCisjaWZkZWYgUk9NX0ludFByaW9yaXR5TWFza0dldAorI2RlZmluZSBNQVBfSW50UHJpb3JpdHlNYXNrR2V0IFwKKyAgICAgICAgUk9NX0ludFByaW9yaXR5TWFza0dldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0ludFByaW9yaXR5TWFza0dldCBcCisgICAgICAgIEludFByaW9yaXR5TWFza0dldAorI2VuZGlmCisjaWZkZWYgUk9NX0ludFJlZ2lzdGVyCisjZGVmaW5lIE1BUF9JbnRSZWdpc3RlciBcCisgICAgICAgIFJPTV9JbnRSZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0ludFJlZ2lzdGVyIFwKKyAgICAgICAgSW50UmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9JbnRVbnJlZ2lzdGVyCisjZGVmaW5lIE1BUF9JbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX0ludFVucmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9JbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgSW50VW5yZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX0ludFZUYWJsZUJhc2VTZXQKKyNkZWZpbmUgTUFQX0ludFZUYWJsZUJhc2VTZXQgXAorICAgICAgICBST01fSW50VlRhYmxlQmFzZVNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0ludFZUYWJsZUJhc2VTZXQgXAorICAgICAgICBJbnRWVGFibGVCYXNlU2V0CisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgdGhlIFRpbWVyIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgUk9NX1RpbWVyRW5hYmxlCisjZGVmaW5lIE1BUF9UaW1lckVuYWJsZSBcCisgICAgICAgIFJPTV9UaW1lckVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVyRW5hYmxlIFwKKyAgICAgICAgVGltZXJFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9UaW1lckRpc2FibGUKKyNkZWZpbmUgTUFQX1RpbWVyRGlzYWJsZSBcCisgICAgICAgIFJPTV9UaW1lckRpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9UaW1lckRpc2FibGUgXAorICAgICAgICBUaW1lckRpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9UaW1lckNvbmZpZ3VyZQorI2RlZmluZSBNQVBfVGltZXJDb25maWd1cmUgXAorICAgICAgICBST01fVGltZXJDb25maWd1cmUKKyNlbHNlCisjZGVmaW5lIE1BUF9UaW1lckNvbmZpZ3VyZSBcCisgICAgICAgIFRpbWVyQ29uZmlndXJlCisjZW5kaWYKKyNpZmRlZiBST01fVGltZXJDb250cm9sTGV2ZWwKKyNkZWZpbmUgTUFQX1RpbWVyQ29udHJvbExldmVsIFwKKyAgICAgICAgUk9NX1RpbWVyQ29udHJvbExldmVsCisjZWxzZQorI2RlZmluZSBNQVBfVGltZXJDb250cm9sTGV2ZWwgXAorICAgICAgICBUaW1lckNvbnRyb2xMZXZlbAorI2VuZGlmCisjaWZkZWYgUk9NX1RpbWVyQ29udHJvbEV2ZW50CisjZGVmaW5lIE1BUF9UaW1lckNvbnRyb2xFdmVudCBcCisgICAgICAgIFJPTV9UaW1lckNvbnRyb2xFdmVudAorI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVyQ29udHJvbEV2ZW50IFwKKyAgICAgICAgVGltZXJDb250cm9sRXZlbnQKKyNlbmRpZgorI2lmZGVmIFJPTV9UaW1lckNvbnRyb2xTdGFsbAorI2RlZmluZSBNQVBfVGltZXJDb250cm9sU3RhbGwgXAorICAgICAgICBST01fVGltZXJDb250cm9sU3RhbGwKKyNlbHNlCisjZGVmaW5lIE1BUF9UaW1lckNvbnRyb2xTdGFsbCBcCisgICAgICAgIFRpbWVyQ29udHJvbFN0YWxsCisjZW5kaWYKKyNpZmRlZiBST01fVGltZXJQcmVzY2FsZVNldAorI2RlZmluZSBNQVBfVGltZXJQcmVzY2FsZVNldCBcCisgICAgICAgIFJPTV9UaW1lclByZXNjYWxlU2V0CisjZWxzZQorI2RlZmluZSBNQVBfVGltZXJQcmVzY2FsZVNldCBcCisgICAgICAgIFRpbWVyUHJlc2NhbGVTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9UaW1lclByZXNjYWxlR2V0CisjZGVmaW5lIE1BUF9UaW1lclByZXNjYWxlR2V0IFwKKyAgICAgICAgUk9NX1RpbWVyUHJlc2NhbGVHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9UaW1lclByZXNjYWxlR2V0IFwKKyAgICAgICAgVGltZXJQcmVzY2FsZUdldAorI2VuZGlmCisjaWZkZWYgUk9NX1RpbWVyUHJlc2NhbGVNYXRjaFNldAorI2RlZmluZSBNQVBfVGltZXJQcmVzY2FsZU1hdGNoU2V0IFwKKyAgICAgICAgUk9NX1RpbWVyUHJlc2NhbGVNYXRjaFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVyUHJlc2NhbGVNYXRjaFNldCBcCisgICAgICAgIFRpbWVyUHJlc2NhbGVNYXRjaFNldAorI2VuZGlmCisjaWZkZWYgUk9NX1RpbWVyUHJlc2NhbGVNYXRjaEdldAorI2RlZmluZSBNQVBfVGltZXJQcmVzY2FsZU1hdGNoR2V0IFwKKyAgICAgICAgUk9NX1RpbWVyUHJlc2NhbGVNYXRjaEdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVyUHJlc2NhbGVNYXRjaEdldCBcCisgICAgICAgIFRpbWVyUHJlc2NhbGVNYXRjaEdldAorI2VuZGlmCisjaWZkZWYgUk9NX1RpbWVyTG9hZFNldAorI2RlZmluZSBNQVBfVGltZXJMb2FkU2V0IFwKKyAgICAgICAgUk9NX1RpbWVyTG9hZFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVyTG9hZFNldCBcCisgICAgICAgIFRpbWVyTG9hZFNldAorI2VuZGlmCisjaWZkZWYgUk9NX1RpbWVyTG9hZEdldAorI2RlZmluZSBNQVBfVGltZXJMb2FkR2V0IFwKKyAgICAgICAgUk9NX1RpbWVyTG9hZEdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVyTG9hZEdldCBcCisgICAgICAgIFRpbWVyTG9hZEdldAorI2VuZGlmCisjaWZkZWYgUk9NX1RpbWVyVmFsdWVHZXQKKyNkZWZpbmUgTUFQX1RpbWVyVmFsdWVHZXQgXAorICAgICAgICBST01fVGltZXJWYWx1ZUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVyVmFsdWVHZXQgXAorICAgICAgICBUaW1lclZhbHVlR2V0CisjZW5kaWYKKyNpZmRlZiBST01fVGltZXJNYXRjaFNldAorI2RlZmluZSBNQVBfVGltZXJNYXRjaFNldCBcCisgICAgICAgIFJPTV9UaW1lck1hdGNoU2V0CisjZWxzZQorI2RlZmluZSBNQVBfVGltZXJNYXRjaFNldCBcCisgICAgICAgIFRpbWVyTWF0Y2hTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9UaW1lck1hdGNoR2V0CisjZGVmaW5lIE1BUF9UaW1lck1hdGNoR2V0IFwKKyAgICAgICAgUk9NX1RpbWVyTWF0Y2hHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9UaW1lck1hdGNoR2V0IFwKKyAgICAgICAgVGltZXJNYXRjaEdldAorI2VuZGlmCisjaWZkZWYgUk9NX1RpbWVySW50UmVnaXN0ZXIKKyNkZWZpbmUgTUFQX1RpbWVySW50UmVnaXN0ZXIgXAorICAgICAgICBST01fVGltZXJJbnRSZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVySW50UmVnaXN0ZXIgXAorICAgICAgICBUaW1lckludFJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fVGltZXJJbnRVbnJlZ2lzdGVyCisjZGVmaW5lIE1BUF9UaW1lckludFVucmVnaXN0ZXIgXAorICAgICAgICBST01fVGltZXJJbnRVbnJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfVGltZXJJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgVGltZXJJbnRVbnJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fVGltZXJJbnRFbmFibGUKKyNkZWZpbmUgTUFQX1RpbWVySW50RW5hYmxlIFwKKyAgICAgICAgUk9NX1RpbWVySW50RW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfVGltZXJJbnRFbmFibGUgXAorICAgICAgICBUaW1lckludEVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1RpbWVySW50RGlzYWJsZQorI2RlZmluZSBNQVBfVGltZXJJbnREaXNhYmxlIFwKKyAgICAgICAgUk9NX1RpbWVySW50RGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVySW50RGlzYWJsZSBcCisgICAgICAgIFRpbWVySW50RGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1RpbWVySW50U3RhdHVzCisjZGVmaW5lIE1BUF9UaW1lckludFN0YXR1cyBcCisgICAgICAgIFJPTV9UaW1lckludFN0YXR1cworI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVySW50U3RhdHVzIFwKKyAgICAgICAgVGltZXJJbnRTdGF0dXMKKyNlbmRpZgorI2lmZGVmIFJPTV9UaW1lckludENsZWFyCisjZGVmaW5lIE1BUF9UaW1lckludENsZWFyIFwKKyAgICAgICAgUk9NX1RpbWVySW50Q2xlYXIKKyNlbHNlCisjZGVmaW5lIE1BUF9UaW1lckludENsZWFyIFwKKyAgICAgICAgVGltZXJJbnRDbGVhcgorI2VuZGlmCisjaWZkZWYgUk9NX1RpbWVyVmFsdWVTZXQKKyNkZWZpbmUgTUFQX1RpbWVyVmFsdWVTZXQgXAorICAgICAgICBST01fVGltZXJWYWx1ZVNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1RpbWVyVmFsdWVTZXQgXAorICAgICAgICBUaW1lclZhbHVlU2V0CisjZW5kaWYKKyNpZmRlZiBST01fVGltZXJETUFFdmVudFNldAorI2RlZmluZSBNQVBfVGltZXJETUFFdmVudFNldCBcCisgICAgICAgIFJPTV9UaW1lckRNQUV2ZW50U2V0CisjZWxzZQorI2RlZmluZSBNQVBfVGltZXJETUFFdmVudFNldCBcCisgICAgICAgIFRpbWVyRE1BRXZlbnRTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9UaW1lckRNQUV2ZW50R2V0CisjZGVmaW5lIE1BUF9UaW1lckRNQUV2ZW50R2V0IFwKKyAgICAgICAgUk9NX1RpbWVyRE1BRXZlbnRHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9UaW1lckRNQUV2ZW50R2V0IFwKKyAgICAgICAgVGltZXJETUFFdmVudEdldAorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIHRoZSBVQVJUIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgUk9NX1VBUlRQYXJpdHlNb2RlU2V0CisjZGVmaW5lIE1BUF9VQVJUUGFyaXR5TW9kZVNldCBcCisgICAgICAgIFJPTV9VQVJUUGFyaXR5TW9kZVNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRQYXJpdHlNb2RlU2V0IFwKKyAgICAgICAgVUFSVFBhcml0eU1vZGVTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJUUGFyaXR5TW9kZUdldAorI2RlZmluZSBNQVBfVUFSVFBhcml0eU1vZGVHZXQgXAorICAgICAgICBST01fVUFSVFBhcml0eU1vZGVHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJUUGFyaXR5TW9kZUdldCBcCisgICAgICAgIFVBUlRQYXJpdHlNb2RlR2V0CisjZW5kaWYKKyNpZmRlZiBST01fVUFSVEZJRk9MZXZlbFNldAorI2RlZmluZSBNQVBfVUFSVEZJRk9MZXZlbFNldCBcCisgICAgICAgIFJPTV9VQVJURklGT0xldmVsU2V0CisjZWxzZQorI2RlZmluZSBNQVBfVUFSVEZJRk9MZXZlbFNldCBcCisgICAgICAgIFVBUlRGSUZPTGV2ZWxTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJURklGT0xldmVsR2V0CisjZGVmaW5lIE1BUF9VQVJURklGT0xldmVsR2V0IFwKKyAgICAgICAgUk9NX1VBUlRGSUZPTGV2ZWxHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJURklGT0xldmVsR2V0IFwKKyAgICAgICAgVUFSVEZJRk9MZXZlbEdldAorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRDb25maWdTZXRFeHBDbGsKKyNkZWZpbmUgTUFQX1VBUlRDb25maWdTZXRFeHBDbGsgXAorICAgICAgICBST01fVUFSVENvbmZpZ1NldEV4cENsaworI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRDb25maWdTZXRFeHBDbGsgXAorICAgICAgICBVQVJUQ29uZmlnU2V0RXhwQ2xrCisjZW5kaWYKKyNpZmRlZiBST01fVUFSVENvbmZpZ0dldEV4cENsaworI2RlZmluZSBNQVBfVUFSVENvbmZpZ0dldEV4cENsayBcCisgICAgICAgIFJPTV9VQVJUQ29uZmlnR2V0RXhwQ2xrCisjZWxzZQorI2RlZmluZSBNQVBfVUFSVENvbmZpZ0dldEV4cENsayBcCisgICAgICAgIFVBUlRDb25maWdHZXRFeHBDbGsKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJURW5hYmxlCisjZGVmaW5lIE1BUF9VQVJURW5hYmxlIFwKKyAgICAgICAgUk9NX1VBUlRFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJURW5hYmxlIFwKKyAgICAgICAgVUFSVEVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlREaXNhYmxlCisjZGVmaW5lIE1BUF9VQVJURGlzYWJsZSBcCisgICAgICAgIFJPTV9VQVJURGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlREaXNhYmxlIFwKKyAgICAgICAgVUFSVERpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJURklGT0VuYWJsZQorI2RlZmluZSBNQVBfVUFSVEZJRk9FbmFibGUgXAorICAgICAgICBST01fVUFSVEZJRk9FbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJURklGT0VuYWJsZSBcCisgICAgICAgIFVBUlRGSUZPRW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fVUFSVEZJRk9EaXNhYmxlCisjZGVmaW5lIE1BUF9VQVJURklGT0Rpc2FibGUgXAorICAgICAgICBST01fVUFSVEZJRk9EaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfVUFSVEZJRk9EaXNhYmxlIFwKKyAgICAgICAgVUFSVEZJRk9EaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fVUFSVENoYXJzQXZhaWwKKyNkZWZpbmUgTUFQX1VBUlRDaGFyc0F2YWlsIFwKKyAgICAgICAgUk9NX1VBUlRDaGFyc0F2YWlsCisjZWxzZQorI2RlZmluZSBNQVBfVUFSVENoYXJzQXZhaWwgXAorICAgICAgICBVQVJUQ2hhcnNBdmFpbAorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRTcGFjZUF2YWlsCisjZGVmaW5lIE1BUF9VQVJUU3BhY2VBdmFpbCBcCisgICAgICAgIFJPTV9VQVJUU3BhY2VBdmFpbAorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRTcGFjZUF2YWlsIFwKKyAgICAgICAgVUFSVFNwYWNlQXZhaWwKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJUQ2hhckdldE5vbkJsb2NraW5nCisjZGVmaW5lIE1BUF9VQVJUQ2hhckdldE5vbkJsb2NraW5nIFwKKyAgICAgICAgUk9NX1VBUlRDaGFyR2V0Tm9uQmxvY2tpbmcKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJUQ2hhckdldE5vbkJsb2NraW5nIFwKKyAgICAgICAgVUFSVENoYXJHZXROb25CbG9ja2luZworI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRDaGFyR2V0CisjZGVmaW5lIE1BUF9VQVJUQ2hhckdldCBcCisgICAgICAgIFJPTV9VQVJUQ2hhckdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRDaGFyR2V0IFwKKyAgICAgICAgVUFSVENoYXJHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJUQ2hhclB1dE5vbkJsb2NraW5nCisjZGVmaW5lIE1BUF9VQVJUQ2hhclB1dE5vbkJsb2NraW5nIFwKKyAgICAgICAgUk9NX1VBUlRDaGFyUHV0Tm9uQmxvY2tpbmcKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJUQ2hhclB1dE5vbkJsb2NraW5nIFwKKyAgICAgICAgVUFSVENoYXJQdXROb25CbG9ja2luZworI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRDaGFyUHV0CisjZGVmaW5lIE1BUF9VQVJUQ2hhclB1dCBcCisgICAgICAgIFJPTV9VQVJUQ2hhclB1dAorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRDaGFyUHV0IFwKKyAgICAgICAgVUFSVENoYXJQdXQKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJUQnJlYWtDdGwKKyNkZWZpbmUgTUFQX1VBUlRCcmVha0N0bCBcCisgICAgICAgIFJPTV9VQVJUQnJlYWtDdGwKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJUQnJlYWtDdGwgXAorICAgICAgICBVQVJUQnJlYWtDdGwKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJUQnVzeQorI2RlZmluZSBNQVBfVUFSVEJ1c3kgXAorICAgICAgICBST01fVUFSVEJ1c3kKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJUQnVzeSBcCisgICAgICAgIFVBUlRCdXN5CisjZW5kaWYKKyNpZmRlZiBST01fVUFSVEludFJlZ2lzdGVyCisjZGVmaW5lIE1BUF9VQVJUSW50UmVnaXN0ZXIgXAorICAgICAgICBST01fVUFSVEludFJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfVUFSVEludFJlZ2lzdGVyIFwKKyAgICAgICAgVUFSVEludFJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fVUFSVEludFVucmVnaXN0ZXIKKyNkZWZpbmUgTUFQX1VBUlRJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX1VBUlRJbnRVbnJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfVUFSVEludFVucmVnaXN0ZXIgXAorICAgICAgICBVQVJUSW50VW5yZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRJbnRFbmFibGUKKyNkZWZpbmUgTUFQX1VBUlRJbnRFbmFibGUgXAorICAgICAgICBST01fVUFSVEludEVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRJbnRFbmFibGUgXAorICAgICAgICBVQVJUSW50RW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fVUFSVEludERpc2FibGUKKyNkZWZpbmUgTUFQX1VBUlRJbnREaXNhYmxlIFwKKyAgICAgICAgUk9NX1VBUlRJbnREaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfVUFSVEludERpc2FibGUgXAorICAgICAgICBVQVJUSW50RGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRJbnRTdGF0dXMKKyNkZWZpbmUgTUFQX1VBUlRJbnRTdGF0dXMgXAorICAgICAgICBST01fVUFSVEludFN0YXR1cworI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRJbnRTdGF0dXMgXAorICAgICAgICBVQVJUSW50U3RhdHVzCisjZW5kaWYKKyNpZmRlZiBST01fVUFSVEludENsZWFyCisjZGVmaW5lIE1BUF9VQVJUSW50Q2xlYXIgXAorICAgICAgICBST01fVUFSVEludENsZWFyCisjZWxzZQorI2RlZmluZSBNQVBfVUFSVEludENsZWFyIFwKKyAgICAgICAgVUFSVEludENsZWFyCisjZW5kaWYKKyNpZmRlZiBST01fVUFSVERNQUVuYWJsZQorI2RlZmluZSBNQVBfVUFSVERNQUVuYWJsZSBcCisgICAgICAgIFJPTV9VQVJURE1BRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfVUFSVERNQUVuYWJsZSBcCisgICAgICAgIFVBUlRETUFFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJURE1BRGlzYWJsZQorI2RlZmluZSBNQVBfVUFSVERNQURpc2FibGUgXAorICAgICAgICBST01fVUFSVERNQURpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJURE1BRGlzYWJsZSBcCisgICAgICAgIFVBUlRETUFEaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fVUFSVFJ4RXJyb3JHZXQKKyNkZWZpbmUgTUFQX1VBUlRSeEVycm9yR2V0IFwKKyAgICAgICAgUk9NX1VBUlRSeEVycm9yR2V0CisjZWxzZQorI2RlZmluZSBNQVBfVUFSVFJ4RXJyb3JHZXQgXAorICAgICAgICBVQVJUUnhFcnJvckdldAorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRSeEVycm9yQ2xlYXIKKyNkZWZpbmUgTUFQX1VBUlRSeEVycm9yQ2xlYXIgXAorICAgICAgICBST01fVUFSVFJ4RXJyb3JDbGVhcgorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRSeEVycm9yQ2xlYXIgXAorICAgICAgICBVQVJUUnhFcnJvckNsZWFyCisjZW5kaWYKKyNpZmRlZiBST01fVUFSVE1vZGVtQ29udHJvbFNldAorI2RlZmluZSBNQVBfVUFSVE1vZGVtQ29udHJvbFNldCBcCisgICAgICAgIFJPTV9VQVJUTW9kZW1Db250cm9sU2V0CisjZWxzZQorI2RlZmluZSBNQVBfVUFSVE1vZGVtQ29udHJvbFNldCBcCisgICAgICAgIFVBUlRNb2RlbUNvbnRyb2xTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJUTW9kZW1Db250cm9sQ2xlYXIKKyNkZWZpbmUgTUFQX1VBUlRNb2RlbUNvbnRyb2xDbGVhciBcCisgICAgICAgIFJPTV9VQVJUTW9kZW1Db250cm9sQ2xlYXIKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJUTW9kZW1Db250cm9sQ2xlYXIgXAorICAgICAgICBVQVJUTW9kZW1Db250cm9sQ2xlYXIKKyNlbmRpZgorI2lmZGVmIFJPTV9VQVJUTW9kZW1Db250cm9sR2V0CisjZGVmaW5lIE1BUF9VQVJUTW9kZW1Db250cm9sR2V0IFwKKyAgICAgICAgUk9NX1VBUlRNb2RlbUNvbnRyb2xHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9VQVJUTW9kZW1Db250cm9sR2V0IFwKKyAgICAgICAgVUFSVE1vZGVtQ29udHJvbEdldAorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRNb2RlbVN0YXR1c0dldAorI2RlZmluZSBNQVBfVUFSVE1vZGVtU3RhdHVzR2V0IFwKKyAgICAgICAgUk9NX1VBUlRNb2RlbVN0YXR1c0dldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRNb2RlbVN0YXR1c0dldCBcCisgICAgICAgIFVBUlRNb2RlbVN0YXR1c0dldAorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRGbG93Q29udHJvbFNldAorI2RlZmluZSBNQVBfVUFSVEZsb3dDb250cm9sU2V0IFwKKyAgICAgICAgUk9NX1VBUlRGbG93Q29udHJvbFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRGbG93Q29udHJvbFNldCBcCisgICAgICAgIFVBUlRGbG93Q29udHJvbFNldAorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRGbG93Q29udHJvbEdldAorI2RlZmluZSBNQVBfVUFSVEZsb3dDb250cm9sR2V0IFwKKyAgICAgICAgUk9NX1VBUlRGbG93Q29udHJvbEdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRGbG93Q29udHJvbEdldCBcCisgICAgICAgIFVBUlRGbG93Q29udHJvbEdldAorI2VuZGlmCisjaWZkZWYgUk9NX1VBUlRUeEludE1vZGVTZXQKKyNkZWZpbmUgTUFQX1VBUlRUeEludE1vZGVTZXQgXAorICAgICAgICBST01fVUFSVFR4SW50TW9kZVNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1VBUlRUeEludE1vZGVTZXQgXAorICAgICAgICBVQVJUVHhJbnRNb2RlU2V0CisjZW5kaWYKKyNpZmRlZiBST01fVUFSVFR4SW50TW9kZUdldAorI2RlZmluZSBNQVBfVUFSVFR4SW50TW9kZUdldCBcCisgICAgICAgIFJPTV9VQVJUVHhJbnRNb2RlR2V0CisjZWxzZQorI2RlZmluZSBNQVBfVUFSVFR4SW50TW9kZUdldCBcCisgICAgICAgIFVBUlRUeEludE1vZGVHZXQKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciB0aGUgdURNQSBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIFJPTV91RE1BQ2hhbm5lbFRyYW5zZmVyU2V0CisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbFRyYW5zZmVyU2V0IFwKKyAgICAgICAgUk9NX3VETUFDaGFubmVsVHJhbnNmZXJTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbFRyYW5zZmVyU2V0IFwKKyAgICAgICAgdURNQUNoYW5uZWxUcmFuc2ZlclNldAorI2VuZGlmCisjaWZkZWYgUk9NX3VETUFFbmFibGUKKyNkZWZpbmUgTUFQX3VETUFFbmFibGUgXAorICAgICAgICBST01fdURNQUVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX3VETUFFbmFibGUgXAorICAgICAgICB1RE1BRW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fdURNQURpc2FibGUKKyNkZWZpbmUgTUFQX3VETUFEaXNhYmxlIFwKKyAgICAgICAgUk9NX3VETUFEaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfdURNQURpc2FibGUgXAorICAgICAgICB1RE1BRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX3VETUFFcnJvclN0YXR1c0dldAorI2RlZmluZSBNQVBfdURNQUVycm9yU3RhdHVzR2V0IFwKKyAgICAgICAgUk9NX3VETUFFcnJvclN0YXR1c0dldAorI2Vsc2UKKyNkZWZpbmUgTUFQX3VETUFFcnJvclN0YXR1c0dldCBcCisgICAgICAgIHVETUFFcnJvclN0YXR1c0dldAorI2VuZGlmCisjaWZkZWYgUk9NX3VETUFFcnJvclN0YXR1c0NsZWFyCisjZGVmaW5lIE1BUF91RE1BRXJyb3JTdGF0dXNDbGVhciBcCisgICAgICAgIFJPTV91RE1BRXJyb3JTdGF0dXNDbGVhcgorI2Vsc2UKKyNkZWZpbmUgTUFQX3VETUFFcnJvclN0YXR1c0NsZWFyIFwKKyAgICAgICAgdURNQUVycm9yU3RhdHVzQ2xlYXIKKyNlbmRpZgorI2lmZGVmIFJPTV91RE1BQ2hhbm5lbEVuYWJsZQorI2RlZmluZSBNQVBfdURNQUNoYW5uZWxFbmFibGUgXAorICAgICAgICBST01fdURNQUNoYW5uZWxFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbEVuYWJsZSBcCisgICAgICAgIHVETUFDaGFubmVsRW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fdURNQUNoYW5uZWxEaXNhYmxlCisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbERpc2FibGUgXAorICAgICAgICBST01fdURNQUNoYW5uZWxEaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfdURNQUNoYW5uZWxEaXNhYmxlIFwKKyAgICAgICAgdURNQUNoYW5uZWxEaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fdURNQUNoYW5uZWxJc0VuYWJsZWQKKyNkZWZpbmUgTUFQX3VETUFDaGFubmVsSXNFbmFibGVkIFwKKyAgICAgICAgUk9NX3VETUFDaGFubmVsSXNFbmFibGVkCisjZWxzZQorI2RlZmluZSBNQVBfdURNQUNoYW5uZWxJc0VuYWJsZWQgXAorICAgICAgICB1RE1BQ2hhbm5lbElzRW5hYmxlZAorI2VuZGlmCisjaWZkZWYgUk9NX3VETUFDb250cm9sQmFzZVNldAorI2RlZmluZSBNQVBfdURNQUNvbnRyb2xCYXNlU2V0IFwKKyAgICAgICAgUk9NX3VETUFDb250cm9sQmFzZVNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX3VETUFDb250cm9sQmFzZVNldCBcCisgICAgICAgIHVETUFDb250cm9sQmFzZVNldAorI2VuZGlmCisjaWZkZWYgUk9NX3VETUFDb250cm9sQmFzZUdldAorI2RlZmluZSBNQVBfdURNQUNvbnRyb2xCYXNlR2V0IFwKKyAgICAgICAgUk9NX3VETUFDb250cm9sQmFzZUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX3VETUFDb250cm9sQmFzZUdldCBcCisgICAgICAgIHVETUFDb250cm9sQmFzZUdldAorI2VuZGlmCisjaWZkZWYgUk9NX3VETUFDaGFubmVsUmVxdWVzdAorI2RlZmluZSBNQVBfdURNQUNoYW5uZWxSZXF1ZXN0IFwKKyAgICAgICAgUk9NX3VETUFDaGFubmVsUmVxdWVzdAorI2Vsc2UKKyNkZWZpbmUgTUFQX3VETUFDaGFubmVsUmVxdWVzdCBcCisgICAgICAgIHVETUFDaGFubmVsUmVxdWVzdAorI2VuZGlmCisjaWZkZWYgUk9NX3VETUFDaGFubmVsQXR0cmlidXRlRW5hYmxlCisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbEF0dHJpYnV0ZUVuYWJsZSBcCisgICAgICAgIFJPTV91RE1BQ2hhbm5lbEF0dHJpYnV0ZUVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX3VETUFDaGFubmVsQXR0cmlidXRlRW5hYmxlIFwKKyAgICAgICAgdURNQUNoYW5uZWxBdHRyaWJ1dGVFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV91RE1BQ2hhbm5lbEF0dHJpYnV0ZURpc2FibGUKKyNkZWZpbmUgTUFQX3VETUFDaGFubmVsQXR0cmlidXRlRGlzYWJsZSBcCisgICAgICAgIFJPTV91RE1BQ2hhbm5lbEF0dHJpYnV0ZURpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbEF0dHJpYnV0ZURpc2FibGUgXAorICAgICAgICB1RE1BQ2hhbm5lbEF0dHJpYnV0ZURpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV91RE1BQ2hhbm5lbEF0dHJpYnV0ZUdldAorI2RlZmluZSBNQVBfdURNQUNoYW5uZWxBdHRyaWJ1dGVHZXQgXAorICAgICAgICBST01fdURNQUNoYW5uZWxBdHRyaWJ1dGVHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbEF0dHJpYnV0ZUdldCBcCisgICAgICAgIHVETUFDaGFubmVsQXR0cmlidXRlR2V0CisjZW5kaWYKKyNpZmRlZiBST01fdURNQUNoYW5uZWxDb250cm9sU2V0CisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbENvbnRyb2xTZXQgXAorICAgICAgICBST01fdURNQUNoYW5uZWxDb250cm9sU2V0CisjZWxzZQorI2RlZmluZSBNQVBfdURNQUNoYW5uZWxDb250cm9sU2V0IFwKKyAgICAgICAgdURNQUNoYW5uZWxDb250cm9sU2V0CisjZW5kaWYKKyNpZmRlZiBST01fdURNQUNoYW5uZWxTaXplR2V0CisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbFNpemVHZXQgXAorICAgICAgICBST01fdURNQUNoYW5uZWxTaXplR2V0CisjZWxzZQorI2RlZmluZSBNQVBfdURNQUNoYW5uZWxTaXplR2V0IFwKKyAgICAgICAgdURNQUNoYW5uZWxTaXplR2V0CisjZW5kaWYKKyNpZmRlZiBST01fdURNQUNoYW5uZWxNb2RlR2V0CisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbE1vZGVHZXQgXAorICAgICAgICBST01fdURNQUNoYW5uZWxNb2RlR2V0CisjZWxzZQorI2RlZmluZSBNQVBfdURNQUNoYW5uZWxNb2RlR2V0IFwKKyAgICAgICAgdURNQUNoYW5uZWxNb2RlR2V0CisjZW5kaWYKKyNpZmRlZiBST01fdURNQUludFN0YXR1cworI2RlZmluZSBNQVBfdURNQUludFN0YXR1cyBcCisgICAgICAgIFJPTV91RE1BSW50U3RhdHVzCisjZWxzZQorI2RlZmluZSBNQVBfdURNQUludFN0YXR1cyBcCisgICAgICAgIHVETUFJbnRTdGF0dXMKKyNlbmRpZgorI2lmZGVmIFJPTV91RE1BSW50Q2xlYXIKKyNkZWZpbmUgTUFQX3VETUFJbnRDbGVhciBcCisgICAgICAgIFJPTV91RE1BSW50Q2xlYXIKKyNlbHNlCisjZGVmaW5lIE1BUF91RE1BSW50Q2xlYXIgXAorICAgICAgICB1RE1BSW50Q2xlYXIKKyNlbmRpZgorI2lmZGVmIFJPTV91RE1BQ29udHJvbEFsdGVybmF0ZUJhc2VHZXQKKyNkZWZpbmUgTUFQX3VETUFDb250cm9sQWx0ZXJuYXRlQmFzZUdldCBcCisgICAgICAgIFJPTV91RE1BQ29udHJvbEFsdGVybmF0ZUJhc2VHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF91RE1BQ29udHJvbEFsdGVybmF0ZUJhc2VHZXQgXAorICAgICAgICB1RE1BQ29udHJvbEFsdGVybmF0ZUJhc2VHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV91RE1BQ2hhbm5lbFNjYXR0ZXJHYXRoZXJTZXQKKyNkZWZpbmUgTUFQX3VETUFDaGFubmVsU2NhdHRlckdhdGhlclNldCBcCisgICAgICAgIFJPTV91RE1BQ2hhbm5lbFNjYXR0ZXJHYXRoZXJTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbFNjYXR0ZXJHYXRoZXJTZXQgXAorICAgICAgICB1RE1BQ2hhbm5lbFNjYXR0ZXJHYXRoZXJTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV91RE1BQ2hhbm5lbEFzc2lnbgorI2RlZmluZSBNQVBfdURNQUNoYW5uZWxBc3NpZ24gXAorICAgICAgICBST01fdURNQUNoYW5uZWxBc3NpZ24KKyNlbHNlCisjZGVmaW5lIE1BUF91RE1BQ2hhbm5lbEFzc2lnbiBcCisgICAgICAgIHVETUFDaGFubmVsQXNzaWduCisjZW5kaWYKKyNpZmRlZiBST01fdURNQUludFJlZ2lzdGVyCisjZGVmaW5lIE1BUF91RE1BSW50UmVnaXN0ZXIgXAorICAgICAgICBST01fdURNQUludFJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfdURNQUludFJlZ2lzdGVyIFwKKyAgICAgICAgdURNQUludFJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fdURNQUludFVucmVnaXN0ZXIKKyNkZWZpbmUgTUFQX3VETUFJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX3VETUFJbnRVbnJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfdURNQUludFVucmVnaXN0ZXIgXAorICAgICAgICB1RE1BSW50VW5yZWdpc3RlcgorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIHRoZSBXYXRjaGRvZyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIFJPTV9XYXRjaGRvZ0ludENsZWFyCisjZGVmaW5lIE1BUF9XYXRjaGRvZ0ludENsZWFyIFwKKyAgICAgICAgUk9NX1dhdGNoZG9nSW50Q2xlYXIKKyNlbHNlCisjZGVmaW5lIE1BUF9XYXRjaGRvZ0ludENsZWFyIFwKKyAgICAgICAgV2F0Y2hkb2dJbnRDbGVhcgorI2VuZGlmCisjaWZkZWYgUk9NX1dhdGNoZG9nUnVubmluZworI2RlZmluZSBNQVBfV2F0Y2hkb2dSdW5uaW5nIFwKKyAgICAgICAgUk9NX1dhdGNoZG9nUnVubmluZworI2Vsc2UKKyNkZWZpbmUgTUFQX1dhdGNoZG9nUnVubmluZyBcCisgICAgICAgIFdhdGNoZG9nUnVubmluZworI2VuZGlmCisjaWZkZWYgUk9NX1dhdGNoZG9nRW5hYmxlCisjZGVmaW5lIE1BUF9XYXRjaGRvZ0VuYWJsZSBcCisgICAgICAgIFJPTV9XYXRjaGRvZ0VuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1dhdGNoZG9nRW5hYmxlIFwKKyAgICAgICAgV2F0Y2hkb2dFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9XYXRjaGRvZ0xvY2sKKyNkZWZpbmUgTUFQX1dhdGNoZG9nTG9jayBcCisgICAgICAgIFJPTV9XYXRjaGRvZ0xvY2sKKyNlbHNlCisjZGVmaW5lIE1BUF9XYXRjaGRvZ0xvY2sgXAorICAgICAgICBXYXRjaGRvZ0xvY2sKKyNlbmRpZgorI2lmZGVmIFJPTV9XYXRjaGRvZ1VubG9jaworI2RlZmluZSBNQVBfV2F0Y2hkb2dVbmxvY2sgXAorICAgICAgICBST01fV2F0Y2hkb2dVbmxvY2sKKyNlbHNlCisjZGVmaW5lIE1BUF9XYXRjaGRvZ1VubG9jayBcCisgICAgICAgIFdhdGNoZG9nVW5sb2NrCisjZW5kaWYKKyNpZmRlZiBST01fV2F0Y2hkb2dMb2NrU3RhdGUKKyNkZWZpbmUgTUFQX1dhdGNoZG9nTG9ja1N0YXRlIFwKKyAgICAgICAgUk9NX1dhdGNoZG9nTG9ja1N0YXRlCisjZWxzZQorI2RlZmluZSBNQVBfV2F0Y2hkb2dMb2NrU3RhdGUgXAorICAgICAgICBXYXRjaGRvZ0xvY2tTdGF0ZQorI2VuZGlmCisjaWZkZWYgUk9NX1dhdGNoZG9nUmVsb2FkU2V0CisjZGVmaW5lIE1BUF9XYXRjaGRvZ1JlbG9hZFNldCBcCisgICAgICAgIFJPTV9XYXRjaGRvZ1JlbG9hZFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1dhdGNoZG9nUmVsb2FkU2V0IFwKKyAgICAgICAgV2F0Y2hkb2dSZWxvYWRTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9XYXRjaGRvZ1JlbG9hZEdldAorI2RlZmluZSBNQVBfV2F0Y2hkb2dSZWxvYWRHZXQgXAorICAgICAgICBST01fV2F0Y2hkb2dSZWxvYWRHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9XYXRjaGRvZ1JlbG9hZEdldCBcCisgICAgICAgIFdhdGNoZG9nUmVsb2FkR2V0CisjZW5kaWYKKyNpZmRlZiBST01fV2F0Y2hkb2dWYWx1ZUdldAorI2RlZmluZSBNQVBfV2F0Y2hkb2dWYWx1ZUdldCBcCisgICAgICAgIFJPTV9XYXRjaGRvZ1ZhbHVlR2V0CisjZWxzZQorI2RlZmluZSBNQVBfV2F0Y2hkb2dWYWx1ZUdldCBcCisgICAgICAgIFdhdGNoZG9nVmFsdWVHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9XYXRjaGRvZ0ludFN0YXR1cworI2RlZmluZSBNQVBfV2F0Y2hkb2dJbnRTdGF0dXMgXAorICAgICAgICBST01fV2F0Y2hkb2dJbnRTdGF0dXMKKyNlbHNlCisjZGVmaW5lIE1BUF9XYXRjaGRvZ0ludFN0YXR1cyBcCisgICAgICAgIFdhdGNoZG9nSW50U3RhdHVzCisjZW5kaWYKKyNpZmRlZiBST01fV2F0Y2hkb2dTdGFsbEVuYWJsZQorI2RlZmluZSBNQVBfV2F0Y2hkb2dTdGFsbEVuYWJsZSBcCisgICAgICAgIFJPTV9XYXRjaGRvZ1N0YWxsRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfV2F0Y2hkb2dTdGFsbEVuYWJsZSBcCisgICAgICAgIFdhdGNoZG9nU3RhbGxFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9XYXRjaGRvZ1N0YWxsRGlzYWJsZQorI2RlZmluZSBNQVBfV2F0Y2hkb2dTdGFsbERpc2FibGUgXAorICAgICAgICBST01fV2F0Y2hkb2dTdGFsbERpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9XYXRjaGRvZ1N0YWxsRGlzYWJsZSBcCisgICAgICAgIFdhdGNoZG9nU3RhbGxEaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fV2F0Y2hkb2dJbnRSZWdpc3RlcgorI2RlZmluZSBNQVBfV2F0Y2hkb2dJbnRSZWdpc3RlciBcCisgICAgICAgIFJPTV9XYXRjaGRvZ0ludFJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfV2F0Y2hkb2dJbnRSZWdpc3RlciBcCisgICAgICAgIFdhdGNoZG9nSW50UmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9XYXRjaGRvZ0ludFVucmVnaXN0ZXIKKyNkZWZpbmUgTUFQX1dhdGNoZG9nSW50VW5yZWdpc3RlciBcCisgICAgICAgIFJPTV9XYXRjaGRvZ0ludFVucmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9XYXRjaGRvZ0ludFVucmVnaXN0ZXIgXAorICAgICAgICBXYXRjaGRvZ0ludFVucmVnaXN0ZXIKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciB0aGUgSTJDIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgUk9NX0kyQ0ludFJlZ2lzdGVyCisjZGVmaW5lIE1BUF9JMkNJbnRSZWdpc3RlciBcCisgICAgICAgIFJPTV9JMkNJbnRSZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ0ludFJlZ2lzdGVyIFwKKyAgICAgICAgSTJDSW50UmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNJbnRVbnJlZ2lzdGVyCisjZGVmaW5lIE1BUF9JMkNJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX0kyQ0ludFVucmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgSTJDSW50VW5yZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ1R4RklGT0NvbmZpZ1NldAorI2RlZmluZSBNQVBfSTJDVHhGSUZPQ29uZmlnU2V0IFwKKyAgICAgICAgUk9NX0kyQ1R4RklGT0NvbmZpZ1NldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ1R4RklGT0NvbmZpZ1NldCBcCisgICAgICAgIEkyQ1R4RklGT0NvbmZpZ1NldAorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ1R4RklGT0ZsdXNoCisjZGVmaW5lIE1BUF9JMkNUeEZJRk9GbHVzaCBcCisgICAgICAgIFJPTV9JMkNUeEZJRk9GbHVzaAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ1R4RklGT0ZsdXNoIFwKKyAgICAgICAgSTJDVHhGSUZPRmx1c2gKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNSeEZJRk9Db25maWdTZXQKKyNkZWZpbmUgTUFQX0kyQ1J4RklGT0NvbmZpZ1NldCBcCisgICAgICAgIFJPTV9JMkNSeEZJRk9Db25maWdTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNSeEZJRk9Db25maWdTZXQgXAorICAgICAgICBJMkNSeEZJRk9Db25maWdTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNSeEZJRk9GbHVzaAorI2RlZmluZSBNQVBfSTJDUnhGSUZPRmx1c2ggXAorICAgICAgICBST01fSTJDUnhGSUZPRmx1c2gKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNSeEZJRk9GbHVzaCBcCisgICAgICAgIEkyQ1J4RklGT0ZsdXNoCisjZW5kaWYKKyNpZmRlZiBST01fSTJDRklGT1N0YXR1cworI2RlZmluZSBNQVBfSTJDRklGT1N0YXR1cyBcCisgICAgICAgIFJPTV9JMkNGSUZPU3RhdHVzCisjZWxzZQorI2RlZmluZSBNQVBfSTJDRklGT1N0YXR1cyBcCisgICAgICAgIEkyQ0ZJRk9TdGF0dXMKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNGSUZPRGF0YVB1dAorI2RlZmluZSBNQVBfSTJDRklGT0RhdGFQdXQgXAorICAgICAgICBST01fSTJDRklGT0RhdGFQdXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNGSUZPRGF0YVB1dCBcCisgICAgICAgIEkyQ0ZJRk9EYXRhUHV0CisjZW5kaWYKKyNpZmRlZiBST01fSTJDRklGT0RhdGFQdXROb25CbG9ja2luZworI2RlZmluZSBNQVBfSTJDRklGT0RhdGFQdXROb25CbG9ja2luZyBcCisgICAgICAgIFJPTV9JMkNGSUZPRGF0YVB1dE5vbkJsb2NraW5nCisjZWxzZQorI2RlZmluZSBNQVBfSTJDRklGT0RhdGFQdXROb25CbG9ja2luZyBcCisgICAgICAgIEkyQ0ZJRk9EYXRhUHV0Tm9uQmxvY2tpbmcKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNGSUZPRGF0YUdldAorI2RlZmluZSBNQVBfSTJDRklGT0RhdGFHZXQgXAorICAgICAgICBST01fSTJDRklGT0RhdGFHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNGSUZPRGF0YUdldCBcCisgICAgICAgIEkyQ0ZJRk9EYXRhR2V0CisjZW5kaWYKKyNpZmRlZiBST01fSTJDRklGT0RhdGFHZXROb25CbG9ja2luZworI2RlZmluZSBNQVBfSTJDRklGT0RhdGFHZXROb25CbG9ja2luZyBcCisgICAgICAgIFJPTV9JMkNGSUZPRGF0YUdldE5vbkJsb2NraW5nCisjZWxzZQorI2RlZmluZSBNQVBfSTJDRklGT0RhdGFHZXROb25CbG9ja2luZyBcCisgICAgICAgIEkyQ0ZJRk9EYXRhR2V0Tm9uQmxvY2tpbmcKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNNYXN0ZXJCdXJzdExlbmd0aFNldAorI2RlZmluZSBNQVBfSTJDTWFzdGVyQnVyc3RMZW5ndGhTZXQgXAorICAgICAgICBST01fSTJDTWFzdGVyQnVyc3RMZW5ndGhTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJCdXJzdExlbmd0aFNldCBcCisgICAgICAgIEkyQ01hc3RlckJ1cnN0TGVuZ3RoU2V0CisjZW5kaWYKKyNpZmRlZiBST01fSTJDTWFzdGVyQnVyc3RDb3VudEdldAorI2RlZmluZSBNQVBfSTJDTWFzdGVyQnVyc3RDb3VudEdldCBcCisgICAgICAgIFJPTV9JMkNNYXN0ZXJCdXJzdENvdW50R2V0CisjZWxzZQorI2RlZmluZSBNQVBfSTJDTWFzdGVyQnVyc3RDb3VudEdldCBcCisgICAgICAgIEkyQ01hc3RlckJ1cnN0Q291bnRHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNNYXN0ZXJHbGl0Y2hGaWx0ZXJDb25maWdTZXQKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckdsaXRjaEZpbHRlckNvbmZpZ1NldCBcCisgICAgICAgIFJPTV9JMkNNYXN0ZXJHbGl0Y2hGaWx0ZXJDb25maWdTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJHbGl0Y2hGaWx0ZXJDb25maWdTZXQgXAorICAgICAgICBJMkNNYXN0ZXJHbGl0Y2hGaWx0ZXJDb25maWdTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNTbGF2ZUZJRk9FbmFibGUKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlRklGT0VuYWJsZSBcCisgICAgICAgIFJPTV9JMkNTbGF2ZUZJRk9FbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZUZJRk9FbmFibGUgXAorICAgICAgICBJMkNTbGF2ZUZJRk9FbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNTbGF2ZUZJRk9EaXNhYmxlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZUZJRk9EaXNhYmxlIFwKKyAgICAgICAgUk9NX0kyQ1NsYXZlRklGT0Rpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZUZJRk9EaXNhYmxlIFwKKyAgICAgICAgSTJDU2xhdmVGSUZPRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlckJ1c0J1c3kKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckJ1c0J1c3kgXAorICAgICAgICBST01fSTJDTWFzdGVyQnVzQnVzeQorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckJ1c0J1c3kgXAorICAgICAgICBJMkNNYXN0ZXJCdXNCdXN5CisjZW5kaWYKKyNpZmRlZiBST01fSTJDTWFzdGVyQnVzeQorI2RlZmluZSBNQVBfSTJDTWFzdGVyQnVzeSBcCisgICAgICAgIFJPTV9JMkNNYXN0ZXJCdXN5CisjZWxzZQorI2RlZmluZSBNQVBfSTJDTWFzdGVyQnVzeSBcCisgICAgICAgIEkyQ01hc3RlckJ1c3kKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNNYXN0ZXJDb250cm9sCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJDb250cm9sIFwKKyAgICAgICAgUk9NX0kyQ01hc3RlckNvbnRyb2wKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJDb250cm9sIFwKKyAgICAgICAgSTJDTWFzdGVyQ29udHJvbAorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlckRhdGFHZXQKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckRhdGFHZXQgXAorICAgICAgICBST01fSTJDTWFzdGVyRGF0YUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckRhdGFHZXQgXAorICAgICAgICBJMkNNYXN0ZXJEYXRhR2V0CisjZW5kaWYKKyNpZmRlZiBST01fSTJDTWFzdGVyRGF0YVB1dAorI2RlZmluZSBNQVBfSTJDTWFzdGVyRGF0YVB1dCBcCisgICAgICAgIFJPTV9JMkNNYXN0ZXJEYXRhUHV0CisjZWxzZQorI2RlZmluZSBNQVBfSTJDTWFzdGVyRGF0YVB1dCBcCisgICAgICAgIEkyQ01hc3RlckRhdGFQdXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNNYXN0ZXJEaXNhYmxlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJEaXNhYmxlIFwKKyAgICAgICAgUk9NX0kyQ01hc3RlckRpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJEaXNhYmxlIFwKKyAgICAgICAgSTJDTWFzdGVyRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlckVuYWJsZQorI2RlZmluZSBNQVBfSTJDTWFzdGVyRW5hYmxlIFwKKyAgICAgICAgUk9NX0kyQ01hc3RlckVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckVuYWJsZSBcCisgICAgICAgIEkyQ01hc3RlckVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlckVycgorI2RlZmluZSBNQVBfSTJDTWFzdGVyRXJyIFwKKyAgICAgICAgUk9NX0kyQ01hc3RlckVycgorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckVyciBcCisgICAgICAgIEkyQ01hc3RlckVycgorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlckludENsZWFyCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJJbnRDbGVhciBcCisgICAgICAgIFJPTV9JMkNNYXN0ZXJJbnRDbGVhcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckludENsZWFyIFwKKyAgICAgICAgSTJDTWFzdGVySW50Q2xlYXIKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNNYXN0ZXJJbnREaXNhYmxlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJJbnREaXNhYmxlIFwKKyAgICAgICAgUk9NX0kyQ01hc3RlckludERpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJJbnREaXNhYmxlIFwKKyAgICAgICAgSTJDTWFzdGVySW50RGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlckludEVuYWJsZQorI2RlZmluZSBNQVBfSTJDTWFzdGVySW50RW5hYmxlIFwKKyAgICAgICAgUk9NX0kyQ01hc3RlckludEVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckludEVuYWJsZSBcCisgICAgICAgIEkyQ01hc3RlckludEVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlckludFN0YXR1cworI2RlZmluZSBNQVBfSTJDTWFzdGVySW50U3RhdHVzIFwKKyAgICAgICAgUk9NX0kyQ01hc3RlckludFN0YXR1cworI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckludFN0YXR1cyBcCisgICAgICAgIEkyQ01hc3RlckludFN0YXR1cworI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlckludEVuYWJsZUV4CisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJJbnRFbmFibGVFeCBcCisgICAgICAgIFJPTV9JMkNNYXN0ZXJJbnRFbmFibGVFeAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckludEVuYWJsZUV4IFwKKyAgICAgICAgSTJDTWFzdGVySW50RW5hYmxlRXgKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNNYXN0ZXJJbnREaXNhYmxlRXgKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckludERpc2FibGVFeCBcCisgICAgICAgIFJPTV9JMkNNYXN0ZXJJbnREaXNhYmxlRXgKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJJbnREaXNhYmxlRXggXAorICAgICAgICBJMkNNYXN0ZXJJbnREaXNhYmxlRXgKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNNYXN0ZXJJbnRTdGF0dXNFeAorI2RlZmluZSBNQVBfSTJDTWFzdGVySW50U3RhdHVzRXggXAorICAgICAgICBST01fSTJDTWFzdGVySW50U3RhdHVzRXgKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJJbnRTdGF0dXNFeCBcCisgICAgICAgIEkyQ01hc3RlckludFN0YXR1c0V4CisjZW5kaWYKKyNpZmRlZiBST01fSTJDTWFzdGVySW50Q2xlYXJFeAorI2RlZmluZSBNQVBfSTJDTWFzdGVySW50Q2xlYXJFeCBcCisgICAgICAgIFJPTV9JMkNNYXN0ZXJJbnRDbGVhckV4CisjZWxzZQorI2RlZmluZSBNQVBfSTJDTWFzdGVySW50Q2xlYXJFeCBcCisgICAgICAgIEkyQ01hc3RlckludENsZWFyRXgKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNNYXN0ZXJUaW1lb3V0U2V0CisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJUaW1lb3V0U2V0IFwKKyAgICAgICAgUk9NX0kyQ01hc3RlclRpbWVvdXRTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJUaW1lb3V0U2V0IFwKKyAgICAgICAgSTJDTWFzdGVyVGltZW91dFNldAorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ1NsYXZlQUNLT3ZlcnJpZGUKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlQUNLT3ZlcnJpZGUgXAorICAgICAgICBST01fSTJDU2xhdmVBQ0tPdmVycmlkZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlQUNLT3ZlcnJpZGUgXAorICAgICAgICBJMkNTbGF2ZUFDS092ZXJyaWRlCisjZW5kaWYKKyNpZmRlZiBST01fSTJDU2xhdmVBQ0tWYWx1ZVNldAorI2RlZmluZSBNQVBfSTJDU2xhdmVBQ0tWYWx1ZVNldCBcCisgICAgICAgIFJPTV9JMkNTbGF2ZUFDS1ZhbHVlU2V0CisjZWxzZQorI2RlZmluZSBNQVBfSTJDU2xhdmVBQ0tWYWx1ZVNldCBcCisgICAgICAgIEkyQ1NsYXZlQUNLVmFsdWVTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNNYXN0ZXJMaW5lU3RhdGVHZXQKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckxpbmVTdGF0ZUdldCBcCisgICAgICAgIFJPTV9JMkNNYXN0ZXJMaW5lU3RhdGVHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJMaW5lU3RhdGVHZXQgXAorICAgICAgICBJMkNNYXN0ZXJMaW5lU3RhdGVHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNNYXN0ZXJTbGF2ZUFkZHJTZXQKKyNkZWZpbmUgTUFQX0kyQ01hc3RlclNsYXZlQWRkclNldCBcCisgICAgICAgIFJPTV9JMkNNYXN0ZXJTbGF2ZUFkZHJTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNNYXN0ZXJTbGF2ZUFkZHJTZXQgXAorICAgICAgICBJMkNNYXN0ZXJTbGF2ZUFkZHJTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNTbGF2ZURhdGFHZXQKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlRGF0YUdldCBcCisgICAgICAgIFJPTV9JMkNTbGF2ZURhdGFHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZURhdGFHZXQgXAorICAgICAgICBJMkNTbGF2ZURhdGFHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNTbGF2ZURhdGFQdXQKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlRGF0YVB1dCBcCisgICAgICAgIFJPTV9JMkNTbGF2ZURhdGFQdXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZURhdGFQdXQgXAorICAgICAgICBJMkNTbGF2ZURhdGFQdXQKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNTbGF2ZURpc2FibGUKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlRGlzYWJsZSBcCisgICAgICAgIFJPTV9JMkNTbGF2ZURpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZURpc2FibGUgXAorICAgICAgICBJMkNTbGF2ZURpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNTbGF2ZUVuYWJsZQorI2RlZmluZSBNQVBfSTJDU2xhdmVFbmFibGUgXAorICAgICAgICBST01fSTJDU2xhdmVFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZUVuYWJsZSBcCisgICAgICAgIEkyQ1NsYXZlRW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fSTJDU2xhdmVJbml0CisjZGVmaW5lIE1BUF9JMkNTbGF2ZUluaXQgXAorICAgICAgICBST01fSTJDU2xhdmVJbml0CisjZWxzZQorI2RlZmluZSBNQVBfSTJDU2xhdmVJbml0IFwKKyAgICAgICAgSTJDU2xhdmVJbml0CisjZW5kaWYKKyNpZmRlZiBST01fSTJDU2xhdmVBZGRyZXNzU2V0CisjZGVmaW5lIE1BUF9JMkNTbGF2ZUFkZHJlc3NTZXQgXAorICAgICAgICBST01fSTJDU2xhdmVBZGRyZXNzU2V0CisjZWxzZQorI2RlZmluZSBNQVBfSTJDU2xhdmVBZGRyZXNzU2V0IFwKKyAgICAgICAgSTJDU2xhdmVBZGRyZXNzU2V0CisjZW5kaWYKKyNpZmRlZiBST01fSTJDU2xhdmVJbnRDbGVhcgorI2RlZmluZSBNQVBfSTJDU2xhdmVJbnRDbGVhciBcCisgICAgICAgIFJPTV9JMkNTbGF2ZUludENsZWFyCisjZWxzZQorI2RlZmluZSBNQVBfSTJDU2xhdmVJbnRDbGVhciBcCisgICAgICAgIEkyQ1NsYXZlSW50Q2xlYXIKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNTbGF2ZUludERpc2FibGUKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlSW50RGlzYWJsZSBcCisgICAgICAgIFJPTV9JMkNTbGF2ZUludERpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZUludERpc2FibGUgXAorICAgICAgICBJMkNTbGF2ZUludERpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9JMkNTbGF2ZUludEVuYWJsZQorI2RlZmluZSBNQVBfSTJDU2xhdmVJbnRFbmFibGUgXAorICAgICAgICBST01fSTJDU2xhdmVJbnRFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9JMkNTbGF2ZUludEVuYWJsZSBcCisgICAgICAgIEkyQ1NsYXZlSW50RW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fSTJDU2xhdmVJbnRDbGVhckV4CisjZGVmaW5lIE1BUF9JMkNTbGF2ZUludENsZWFyRXggXAorICAgICAgICBST01fSTJDU2xhdmVJbnRDbGVhckV4CisjZWxzZQorI2RlZmluZSBNQVBfSTJDU2xhdmVJbnRDbGVhckV4IFwKKyAgICAgICAgSTJDU2xhdmVJbnRDbGVhckV4CisjZW5kaWYKKyNpZmRlZiBST01fSTJDU2xhdmVJbnREaXNhYmxlRXgKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlSW50RGlzYWJsZUV4IFwKKyAgICAgICAgUk9NX0kyQ1NsYXZlSW50RGlzYWJsZUV4CisjZWxzZQorI2RlZmluZSBNQVBfSTJDU2xhdmVJbnREaXNhYmxlRXggXAorICAgICAgICBJMkNTbGF2ZUludERpc2FibGVFeAorI2VuZGlmCisjaWZkZWYgUk9NX0kyQ1NsYXZlSW50RW5hYmxlRXgKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlSW50RW5hYmxlRXggXAorICAgICAgICBST01fSTJDU2xhdmVJbnRFbmFibGVFeAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlSW50RW5hYmxlRXggXAorICAgICAgICBJMkNTbGF2ZUludEVuYWJsZUV4CisjZW5kaWYKKyNpZmRlZiBST01fSTJDU2xhdmVJbnRTdGF0dXMKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlSW50U3RhdHVzIFwKKyAgICAgICAgUk9NX0kyQ1NsYXZlSW50U3RhdHVzCisjZWxzZQorI2RlZmluZSBNQVBfSTJDU2xhdmVJbnRTdGF0dXMgXAorICAgICAgICBJMkNTbGF2ZUludFN0YXR1cworI2VuZGlmCisjaWZkZWYgUk9NX0kyQ1NsYXZlSW50U3RhdHVzRXgKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlSW50U3RhdHVzRXggXAorICAgICAgICBST01fSTJDU2xhdmVJbnRTdGF0dXNFeAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlSW50U3RhdHVzRXggXAorICAgICAgICBJMkNTbGF2ZUludFN0YXR1c0V4CisjZW5kaWYKKyNpZmRlZiBST01fSTJDU2xhdmVTdGF0dXMKKyNkZWZpbmUgTUFQX0kyQ1NsYXZlU3RhdHVzIFwKKyAgICAgICAgUk9NX0kyQ1NsYXZlU3RhdHVzCisjZWxzZQorI2RlZmluZSBNQVBfSTJDU2xhdmVTdGF0dXMgXAorICAgICAgICBJMkNTbGF2ZVN0YXR1cworI2VuZGlmCisjaWZkZWYgUk9NX0kyQ01hc3RlckluaXRFeHBDbGsKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckluaXRFeHBDbGsgXAorICAgICAgICBST01fSTJDTWFzdGVySW5pdEV4cENsaworI2Vsc2UKKyNkZWZpbmUgTUFQX0kyQ01hc3RlckluaXRFeHBDbGsgXAorICAgICAgICBJMkNNYXN0ZXJJbml0RXhwQ2xrCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgdGhlIFNQSSBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIFJPTV9TUElFbmFibGUKKyNkZWZpbmUgTUFQX1NQSUVuYWJsZSBcCisgICAgICAgIFJPTV9TUElFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElFbmFibGUgXAorICAgICAgICBTUElFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElEaXNhYmxlCisjZGVmaW5lIE1BUF9TUElEaXNhYmxlIFwKKyAgICAgICAgUk9NX1NQSURpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElEaXNhYmxlIFwKKyAgICAgICAgU1BJRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1NQSVJlc2V0CisjZGVmaW5lIE1BUF9TUElSZXNldCBcCisgICAgICAgIFJPTV9TUElSZXNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1NQSVJlc2V0IFwKKyAgICAgICAgU1BJUmVzZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElDb25maWdTZXRFeHBDbGsKKyNkZWZpbmUgTUFQX1NQSUNvbmZpZ1NldEV4cENsayBcCisgICAgICAgIFJPTV9TUElDb25maWdTZXRFeHBDbGsKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElDb25maWdTZXRFeHBDbGsgXAorICAgICAgICBTUElDb25maWdTZXRFeHBDbGsKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElEYXRhR2V0Tm9uQmxvY2tpbmcKKyNkZWZpbmUgTUFQX1NQSURhdGFHZXROb25CbG9ja2luZyBcCisgICAgICAgIFJPTV9TUElEYXRhR2V0Tm9uQmxvY2tpbmcKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElEYXRhR2V0Tm9uQmxvY2tpbmcgXAorICAgICAgICBTUElEYXRhR2V0Tm9uQmxvY2tpbmcKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElEYXRhR2V0CisjZGVmaW5lIE1BUF9TUElEYXRhR2V0IFwKKyAgICAgICAgUk9NX1NQSURhdGFHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElEYXRhR2V0IFwKKyAgICAgICAgU1BJRGF0YUdldAorI2VuZGlmCisjaWZkZWYgUk9NX1NQSURhdGFQdXROb25CbG9ja2luZworI2RlZmluZSBNQVBfU1BJRGF0YVB1dE5vbkJsb2NraW5nIFwKKyAgICAgICAgUk9NX1NQSURhdGFQdXROb25CbG9ja2luZworI2Vsc2UKKyNkZWZpbmUgTUFQX1NQSURhdGFQdXROb25CbG9ja2luZyBcCisgICAgICAgIFNQSURhdGFQdXROb25CbG9ja2luZworI2VuZGlmCisjaWZkZWYgUk9NX1NQSURhdGFQdXQKKyNkZWZpbmUgTUFQX1NQSURhdGFQdXQgXAorICAgICAgICBST01fU1BJRGF0YVB1dAorI2Vsc2UKKyNkZWZpbmUgTUFQX1NQSURhdGFQdXQgXAorICAgICAgICBTUElEYXRhUHV0CisjZW5kaWYKKyNpZmRlZiBST01fU1BJRklGT0VuYWJsZQorI2RlZmluZSBNQVBfU1BJRklGT0VuYWJsZSBcCisgICAgICAgIFJPTV9TUElGSUZPRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfU1BJRklGT0VuYWJsZSBcCisgICAgICAgIFNQSUZJRk9FbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElGSUZPRGlzYWJsZQorI2RlZmluZSBNQVBfU1BJRklGT0Rpc2FibGUgXAorICAgICAgICBST01fU1BJRklGT0Rpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElGSUZPRGlzYWJsZSBcCisgICAgICAgIFNQSUZJRk9EaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fU1BJRklGT0xldmVsU2V0CisjZGVmaW5lIE1BUF9TUElGSUZPTGV2ZWxTZXQgXAorICAgICAgICBST01fU1BJRklGT0xldmVsU2V0CisjZWxzZQorI2RlZmluZSBNQVBfU1BJRklGT0xldmVsU2V0IFwKKyAgICAgICAgU1BJRklGT0xldmVsU2V0CisjZW5kaWYKKyNpZmRlZiBST01fU1BJRklGT0xldmVsR2V0CisjZGVmaW5lIE1BUF9TUElGSUZPTGV2ZWxHZXQgXAorICAgICAgICBST01fU1BJRklGT0xldmVsR2V0CisjZWxzZQorI2RlZmluZSBNQVBfU1BJRklGT0xldmVsR2V0IFwKKyAgICAgICAgU1BJRklGT0xldmVsR2V0CisjZW5kaWYKKyNpZmRlZiBST01fU1BJV29yZENvdW50U2V0CisjZGVmaW5lIE1BUF9TUElXb3JkQ291bnRTZXQgXAorICAgICAgICBST01fU1BJV29yZENvdW50U2V0CisjZWxzZQorI2RlZmluZSBNQVBfU1BJV29yZENvdW50U2V0IFwKKyAgICAgICAgU1BJV29yZENvdW50U2V0CisjZW5kaWYKKyNpZmRlZiBST01fU1BJSW50UmVnaXN0ZXIKKyNkZWZpbmUgTUFQX1NQSUludFJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX1NQSUludFJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfU1BJSW50UmVnaXN0ZXIgXAorICAgICAgICBTUElJbnRSZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX1NQSUludFVucmVnaXN0ZXIKKyNkZWZpbmUgTUFQX1NQSUludFVucmVnaXN0ZXIgXAorICAgICAgICBST01fU1BJSW50VW5yZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX1NQSUludFVucmVnaXN0ZXIgXAorICAgICAgICBTUElJbnRVbnJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fU1BJSW50RW5hYmxlCisjZGVmaW5lIE1BUF9TUElJbnRFbmFibGUgXAorICAgICAgICBST01fU1BJSW50RW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfU1BJSW50RW5hYmxlIFwKKyAgICAgICAgU1BJSW50RW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fU1BJSW50RGlzYWJsZQorI2RlZmluZSBNQVBfU1BJSW50RGlzYWJsZSBcCisgICAgICAgIFJPTV9TUElJbnREaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfU1BJSW50RGlzYWJsZSBcCisgICAgICAgIFNQSUludERpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElJbnRTdGF0dXMKKyNkZWZpbmUgTUFQX1NQSUludFN0YXR1cyBcCisgICAgICAgIFJPTV9TUElJbnRTdGF0dXMKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElJbnRTdGF0dXMgXAorICAgICAgICBTUElJbnRTdGF0dXMKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElJbnRDbGVhcgorI2RlZmluZSBNQVBfU1BJSW50Q2xlYXIgXAorICAgICAgICBST01fU1BJSW50Q2xlYXIKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElJbnRDbGVhciBcCisgICAgICAgIFNQSUludENsZWFyCisjZW5kaWYKKyNpZmRlZiBST01fU1BJRG1hRW5hYmxlCisjZGVmaW5lIE1BUF9TUElEbWFFbmFibGUgXAorICAgICAgICBST01fU1BJRG1hRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfU1BJRG1hRW5hYmxlIFwKKyAgICAgICAgU1BJRG1hRW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fU1BJRG1hRGlzYWJsZQorI2RlZmluZSBNQVBfU1BJRG1hRGlzYWJsZSBcCisgICAgICAgIFJPTV9TUElEbWFEaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfU1BJRG1hRGlzYWJsZSBcCisgICAgICAgIFNQSURtYURpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TUElDU0VuYWJsZQorI2RlZmluZSBNQVBfU1BJQ1NFbmFibGUgXAorICAgICAgICBST01fU1BJQ1NFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TUElDU0VuYWJsZSBcCisgICAgICAgIFNQSUNTRW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fU1BJQ1NEaXNhYmxlCisjZGVmaW5lIE1BUF9TUElDU0Rpc2FibGUgXAorICAgICAgICBST01fU1BJQ1NEaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfU1BJQ1NEaXNhYmxlIFwKKyAgICAgICAgU1BJQ1NEaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fU1BJVHJhbnNmZXIKKyNkZWZpbmUgTUFQX1NQSVRyYW5zZmVyIFwKKyAgICAgICAgUk9NX1NQSVRyYW5zZmVyCisjZWxzZQorI2RlZmluZSBNQVBfU1BJVHJhbnNmZXIgXAorICAgICAgICBTUElUcmFuc2ZlcgorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIHRoZSBDQU0gQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBST01fQ2FtZXJhUmVzZXQKKyNkZWZpbmUgTUFQX0NhbWVyYVJlc2V0IFwKKyAgICAgICAgUk9NX0NhbWVyYVJlc2V0CisjZWxzZQorI2RlZmluZSBNQVBfQ2FtZXJhUmVzZXQgXAorICAgICAgICBDYW1lcmFSZXNldAorI2VuZGlmCisjaWZkZWYgUk9NX0NhbWVyYVBhcmFtc0NvbmZpZworI2RlZmluZSBNQVBfQ2FtZXJhUGFyYW1zQ29uZmlnIFwKKyAgICAgICAgUk9NX0NhbWVyYVBhcmFtc0NvbmZpZworI2Vsc2UKKyNkZWZpbmUgTUFQX0NhbWVyYVBhcmFtc0NvbmZpZyBcCisgICAgICAgIENhbWVyYVBhcmFtc0NvbmZpZworI2VuZGlmCisjaWZkZWYgUk9NX0NhbWVyYVhDbGtDb25maWcKKyNkZWZpbmUgTUFQX0NhbWVyYVhDbGtDb25maWcgXAorICAgICAgICBST01fQ2FtZXJhWENsa0NvbmZpZworI2Vsc2UKKyNkZWZpbmUgTUFQX0NhbWVyYVhDbGtDb25maWcgXAorICAgICAgICBDYW1lcmFYQ2xrQ29uZmlnCisjZW5kaWYKKyNpZmRlZiBST01fQ2FtZXJhWENsa1NldAorI2RlZmluZSBNQVBfQ2FtZXJhWENsa1NldCBcCisgICAgICAgIFJPTV9DYW1lcmFYQ2xrU2V0CisjZWxzZQorI2RlZmluZSBNQVBfQ2FtZXJhWENsa1NldCBcCisgICAgICAgIENhbWVyYVhDbGtTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9DYW1lcmFETUFFbmFibGUKKyNkZWZpbmUgTUFQX0NhbWVyYURNQUVuYWJsZSBcCisgICAgICAgIFJPTV9DYW1lcmFETUFFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9DYW1lcmFETUFFbmFibGUgXAorICAgICAgICBDYW1lcmFETUFFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9DYW1lcmFETUFEaXNhYmxlCisjZGVmaW5lIE1BUF9DYW1lcmFETUFEaXNhYmxlIFwKKyAgICAgICAgUk9NX0NhbWVyYURNQURpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9DYW1lcmFETUFEaXNhYmxlIFwKKyAgICAgICAgQ2FtZXJhRE1BRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0NhbWVyYVRocmVzaG9sZFNldAorI2RlZmluZSBNQVBfQ2FtZXJhVGhyZXNob2xkU2V0IFwKKyAgICAgICAgUk9NX0NhbWVyYVRocmVzaG9sZFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0NhbWVyYVRocmVzaG9sZFNldCBcCisgICAgICAgIENhbWVyYVRocmVzaG9sZFNldAorI2VuZGlmCisjaWZkZWYgUk9NX0NhbWVyYUludFJlZ2lzdGVyCisjZGVmaW5lIE1BUF9DYW1lcmFJbnRSZWdpc3RlciBcCisgICAgICAgIFJPTV9DYW1lcmFJbnRSZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0NhbWVyYUludFJlZ2lzdGVyIFwKKyAgICAgICAgQ2FtZXJhSW50UmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9DYW1lcmFJbnRVbnJlZ2lzdGVyCisjZGVmaW5lIE1BUF9DYW1lcmFJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX0NhbWVyYUludFVucmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9DYW1lcmFJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgQ2FtZXJhSW50VW5yZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX0NhbWVyYUludEVuYWJsZQorI2RlZmluZSBNQVBfQ2FtZXJhSW50RW5hYmxlIFwKKyAgICAgICAgUk9NX0NhbWVyYUludEVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0NhbWVyYUludEVuYWJsZSBcCisgICAgICAgIENhbWVyYUludEVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0NhbWVyYUludERpc2FibGUKKyNkZWZpbmUgTUFQX0NhbWVyYUludERpc2FibGUgXAorICAgICAgICBST01fQ2FtZXJhSW50RGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0NhbWVyYUludERpc2FibGUgXAorICAgICAgICBDYW1lcmFJbnREaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fQ2FtZXJhSW50U3RhdHVzCisjZGVmaW5lIE1BUF9DYW1lcmFJbnRTdGF0dXMgXAorICAgICAgICBST01fQ2FtZXJhSW50U3RhdHVzCisjZWxzZQorI2RlZmluZSBNQVBfQ2FtZXJhSW50U3RhdHVzIFwKKyAgICAgICAgQ2FtZXJhSW50U3RhdHVzCisjZW5kaWYKKyNpZmRlZiBST01fQ2FtZXJhSW50Q2xlYXIKKyNkZWZpbmUgTUFQX0NhbWVyYUludENsZWFyIFwKKyAgICAgICAgUk9NX0NhbWVyYUludENsZWFyCisjZWxzZQorI2RlZmluZSBNQVBfQ2FtZXJhSW50Q2xlYXIgXAorICAgICAgICBDYW1lcmFJbnRDbGVhcgorI2VuZGlmCisjaWZkZWYgUk9NX0NhbWVyYUNhcHR1cmVTdG9wCisjZGVmaW5lIE1BUF9DYW1lcmFDYXB0dXJlU3RvcCBcCisgICAgICAgIFJPTV9DYW1lcmFDYXB0dXJlU3RvcAorI2Vsc2UKKyNkZWZpbmUgTUFQX0NhbWVyYUNhcHR1cmVTdG9wIFwKKyAgICAgICAgQ2FtZXJhQ2FwdHVyZVN0b3AKKyNlbmRpZgorI2lmZGVmIFJPTV9DYW1lcmFDYXB0dXJlU3RhcnQKKyNkZWZpbmUgTUFQX0NhbWVyYUNhcHR1cmVTdGFydCBcCisgICAgICAgIFJPTV9DYW1lcmFDYXB0dXJlU3RhcnQKKyNlbHNlCisjZGVmaW5lIE1BUF9DYW1lcmFDYXB0dXJlU3RhcnQgXAorICAgICAgICBDYW1lcmFDYXB0dXJlU3RhcnQKKyNlbmRpZgorI2lmZGVmIFJPTV9DYW1lcmFCdWZmZXJSZWFkCisjZGVmaW5lIE1BUF9DYW1lcmFCdWZmZXJSZWFkIFwKKyAgICAgICAgUk9NX0NhbWVyYUJ1ZmZlclJlYWQKKyNlbHNlCisjZGVmaW5lIE1BUF9DYW1lcmFCdWZmZXJSZWFkIFwKKyAgICAgICAgQ2FtZXJhQnVmZmVyUmVhZAorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIHRoZSBGTEFTSCBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIFJPTV9GbGFzaERpc2FibGUKKyNkZWZpbmUgTUFQX0ZsYXNoRGlzYWJsZSBcCisgICAgICAgIFJPTV9GbGFzaERpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9GbGFzaERpc2FibGUgXAorICAgICAgICBGbGFzaERpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9GbGFzaEVyYXNlCisjZGVmaW5lIE1BUF9GbGFzaEVyYXNlIFwKKyAgICAgICAgUk9NX0ZsYXNoRXJhc2UKKyNlbHNlCisjZGVmaW5lIE1BUF9GbGFzaEVyYXNlIFwKKyAgICAgICAgRmxhc2hFcmFzZQorI2VuZGlmCisjaWZkZWYgUk9NX0ZsYXNoTWFzc0VyYXNlCisjZGVmaW5lIE1BUF9GbGFzaE1hc3NFcmFzZSBcCisgICAgICAgIFJPTV9GbGFzaE1hc3NFcmFzZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0ZsYXNoTWFzc0VyYXNlIFwKKyAgICAgICAgRmxhc2hNYXNzRXJhc2UKKyNlbmRpZgorI2lmZGVmIFJPTV9GbGFzaE1hc3NFcmFzZU5vbkJsb2NraW5nCisjZGVmaW5lIE1BUF9GbGFzaE1hc3NFcmFzZU5vbkJsb2NraW5nIFwKKyAgICAgICAgUk9NX0ZsYXNoTWFzc0VyYXNlTm9uQmxvY2tpbmcKKyNlbHNlCisjZGVmaW5lIE1BUF9GbGFzaE1hc3NFcmFzZU5vbkJsb2NraW5nIFwKKyAgICAgICAgRmxhc2hNYXNzRXJhc2VOb25CbG9ja2luZworI2VuZGlmCisjaWZkZWYgUk9NX0ZsYXNoRXJhc2VOb25CbG9ja2luZworI2RlZmluZSBNQVBfRmxhc2hFcmFzZU5vbkJsb2NraW5nIFwKKyAgICAgICAgUk9NX0ZsYXNoRXJhc2VOb25CbG9ja2luZworI2Vsc2UKKyNkZWZpbmUgTUFQX0ZsYXNoRXJhc2VOb25CbG9ja2luZyBcCisgICAgICAgIEZsYXNoRXJhc2VOb25CbG9ja2luZworI2VuZGlmCisjaWZkZWYgUk9NX0ZsYXNoUHJvZ3JhbQorI2RlZmluZSBNQVBfRmxhc2hQcm9ncmFtIFwKKyAgICAgICAgUk9NX0ZsYXNoUHJvZ3JhbQorI2Vsc2UKKyNkZWZpbmUgTUFQX0ZsYXNoUHJvZ3JhbSBcCisgICAgICAgIEZsYXNoUHJvZ3JhbQorI2VuZGlmCisjaWZkZWYgUk9NX0ZsYXNoUHJvZ3JhbU5vbkJsb2NraW5nCisjZGVmaW5lIE1BUF9GbGFzaFByb2dyYW1Ob25CbG9ja2luZyBcCisgICAgICAgIFJPTV9GbGFzaFByb2dyYW1Ob25CbG9ja2luZworI2Vsc2UKKyNkZWZpbmUgTUFQX0ZsYXNoUHJvZ3JhbU5vbkJsb2NraW5nIFwKKyAgICAgICAgRmxhc2hQcm9ncmFtTm9uQmxvY2tpbmcKKyNlbmRpZgorI2lmZGVmIFJPTV9GbGFzaEludFJlZ2lzdGVyCisjZGVmaW5lIE1BUF9GbGFzaEludFJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX0ZsYXNoSW50UmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9GbGFzaEludFJlZ2lzdGVyIFwKKyAgICAgICAgRmxhc2hJbnRSZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX0ZsYXNoSW50VW5yZWdpc3RlcgorI2RlZmluZSBNQVBfRmxhc2hJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX0ZsYXNoSW50VW5yZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0ZsYXNoSW50VW5yZWdpc3RlciBcCisgICAgICAgIEZsYXNoSW50VW5yZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX0ZsYXNoSW50RW5hYmxlCisjZGVmaW5lIE1BUF9GbGFzaEludEVuYWJsZSBcCisgICAgICAgIFJPTV9GbGFzaEludEVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0ZsYXNoSW50RW5hYmxlIFwKKyAgICAgICAgRmxhc2hJbnRFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9GbGFzaEludERpc2FibGUKKyNkZWZpbmUgTUFQX0ZsYXNoSW50RGlzYWJsZSBcCisgICAgICAgIFJPTV9GbGFzaEludERpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9GbGFzaEludERpc2FibGUgXAorICAgICAgICBGbGFzaEludERpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9GbGFzaEludFN0YXR1cworI2RlZmluZSBNQVBfRmxhc2hJbnRTdGF0dXMgXAorICAgICAgICBST01fRmxhc2hJbnRTdGF0dXMKKyNlbHNlCisjZGVmaW5lIE1BUF9GbGFzaEludFN0YXR1cyBcCisgICAgICAgIEZsYXNoSW50U3RhdHVzCisjZW5kaWYKKyNpZmRlZiBST01fRmxhc2hJbnRDbGVhcgorI2RlZmluZSBNQVBfRmxhc2hJbnRDbGVhciBcCisgICAgICAgIFJPTV9GbGFzaEludENsZWFyCisjZWxzZQorI2RlZmluZSBNQVBfRmxhc2hJbnRDbGVhciBcCisgICAgICAgIEZsYXNoSW50Q2xlYXIKKyNlbmRpZgorI2lmZGVmIFJPTV9GbGFzaFByb3RlY3RHZXQKKyNkZWZpbmUgTUFQX0ZsYXNoUHJvdGVjdEdldCBcCisgICAgICAgIFJPTV9GbGFzaFByb3RlY3RHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9GbGFzaFByb3RlY3RHZXQgXAorICAgICAgICBGbGFzaFByb3RlY3RHZXQKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciB0aGUgUGluIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgUk9NX1Bpbk1vZGVTZXQKKyNkZWZpbmUgTUFQX1Bpbk1vZGVTZXQgXAorICAgICAgICBST01fUGluTW9kZVNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1Bpbk1vZGVTZXQgXAorICAgICAgICBQaW5Nb2RlU2V0CisjZW5kaWYKKyNpZmRlZiBST01fUGluRGlyTW9kZVNldAorI2RlZmluZSBNQVBfUGluRGlyTW9kZVNldCBcCisgICAgICAgIFJPTV9QaW5EaXJNb2RlU2V0CisjZWxzZQorI2RlZmluZSBNQVBfUGluRGlyTW9kZVNldCBcCisgICAgICAgIFBpbkRpck1vZGVTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QaW5EaXJNb2RlR2V0CisjZGVmaW5lIE1BUF9QaW5EaXJNb2RlR2V0IFwKKyAgICAgICAgUk9NX1BpbkRpck1vZGVHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QaW5EaXJNb2RlR2V0IFwKKyAgICAgICAgUGluRGlyTW9kZUdldAorI2VuZGlmCisjaWZkZWYgUk9NX1Bpbk1vZGVHZXQKKyNkZWZpbmUgTUFQX1Bpbk1vZGVHZXQgXAorICAgICAgICBST01fUGluTW9kZUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1Bpbk1vZGVHZXQgXAorICAgICAgICBQaW5Nb2RlR2V0CisjZW5kaWYKKyNpZmRlZiBST01fUGluQ29uZmlnR2V0CisjZGVmaW5lIE1BUF9QaW5Db25maWdHZXQgXAorICAgICAgICBST01fUGluQ29uZmlnR2V0CisjZWxzZQorI2RlZmluZSBNQVBfUGluQ29uZmlnR2V0IFwKKyAgICAgICAgUGluQ29uZmlnR2V0CisjZW5kaWYKKyNpZmRlZiBST01fUGluQ29uZmlnU2V0CisjZGVmaW5lIE1BUF9QaW5Db25maWdTZXQgXAorICAgICAgICBST01fUGluQ29uZmlnU2V0CisjZWxzZQorI2RlZmluZSBNQVBfUGluQ29uZmlnU2V0IFwKKyAgICAgICAgUGluQ29uZmlnU2V0CisjZW5kaWYKKyNpZmRlZiBST01fUGluVHlwZVVBUlQKKyNkZWZpbmUgTUFQX1BpblR5cGVVQVJUIFwKKyAgICAgICAgUk9NX1BpblR5cGVVQVJUCisjZWxzZQorI2RlZmluZSBNQVBfUGluVHlwZVVBUlQgXAorICAgICAgICBQaW5UeXBlVUFSVAorI2VuZGlmCisjaWZkZWYgUk9NX1BpblR5cGVJMkMKKyNkZWZpbmUgTUFQX1BpblR5cGVJMkMgXAorICAgICAgICBST01fUGluVHlwZUkyQworI2Vsc2UKKyNkZWZpbmUgTUFQX1BpblR5cGVJMkMgXAorICAgICAgICBQaW5UeXBlSTJDCisjZW5kaWYKKyNpZmRlZiBST01fUGluVHlwZVNQSQorI2RlZmluZSBNQVBfUGluVHlwZVNQSSBcCisgICAgICAgIFJPTV9QaW5UeXBlU1BJCisjZWxzZQorI2RlZmluZSBNQVBfUGluVHlwZVNQSSBcCisgICAgICAgIFBpblR5cGVTUEkKKyNlbmRpZgorI2lmZGVmIFJPTV9QaW5UeXBlSTJTCisjZGVmaW5lIE1BUF9QaW5UeXBlSTJTIFwKKyAgICAgICAgUk9NX1BpblR5cGVJMlMKKyNlbHNlCisjZGVmaW5lIE1BUF9QaW5UeXBlSTJTIFwKKyAgICAgICAgUGluVHlwZUkyUworI2VuZGlmCisjaWZkZWYgUk9NX1BpblR5cGVUaW1lcgorI2RlZmluZSBNQVBfUGluVHlwZVRpbWVyIFwKKyAgICAgICAgUk9NX1BpblR5cGVUaW1lcgorI2Vsc2UKKyNkZWZpbmUgTUFQX1BpblR5cGVUaW1lciBcCisgICAgICAgIFBpblR5cGVUaW1lcgorI2VuZGlmCisjaWZkZWYgUk9NX1BpblR5cGVDYW1lcmEKKyNkZWZpbmUgTUFQX1BpblR5cGVDYW1lcmEgXAorICAgICAgICBST01fUGluVHlwZUNhbWVyYQorI2Vsc2UKKyNkZWZpbmUgTUFQX1BpblR5cGVDYW1lcmEgXAorICAgICAgICBQaW5UeXBlQ2FtZXJhCisjZW5kaWYKKyNpZmRlZiBST01fUGluVHlwZUdQSU8KKyNkZWZpbmUgTUFQX1BpblR5cGVHUElPIFwKKyAgICAgICAgUk9NX1BpblR5cGVHUElPCisjZWxzZQorI2RlZmluZSBNQVBfUGluVHlwZUdQSU8gXAorICAgICAgICBQaW5UeXBlR1BJTworI2VuZGlmCisjaWZkZWYgUk9NX1BpblR5cGVBREMKKyNkZWZpbmUgTUFQX1BpblR5cGVBREMgXAorICAgICAgICBST01fUGluVHlwZUFEQworI2Vsc2UKKyNkZWZpbmUgTUFQX1BpblR5cGVBREMgXAorICAgICAgICBQaW5UeXBlQURDCisjZW5kaWYKKyNpZmRlZiBST01fUGluVHlwZVNESG9zdAorI2RlZmluZSBNQVBfUGluVHlwZVNESG9zdCBcCisgICAgICAgIFJPTV9QaW5UeXBlU0RIb3N0CisjZWxzZQorI2RlZmluZSBNQVBfUGluVHlwZVNESG9zdCBcCisgICAgICAgIFBpblR5cGVTREhvc3QKKyNlbmRpZgorI2lmZGVmIFJPTV9QaW5IeXN0ZXJlc2lzU2V0CisjZGVmaW5lIE1BUF9QaW5IeXN0ZXJlc2lzU2V0IFwKKyAgICAgICAgUk9NX1Bpbkh5c3RlcmVzaXNTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QaW5IeXN0ZXJlc2lzU2V0IFwKKyAgICAgICAgUGluSHlzdGVyZXNpc1NldAorI2VuZGlmCisjaWZkZWYgUk9NX1BpbkxvY2tMZXZlbFNldAorI2RlZmluZSBNQVBfUGluTG9ja0xldmVsU2V0IFwKKyAgICAgICAgUk9NX1BpbkxvY2tMZXZlbFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BpbkxvY2tMZXZlbFNldCBcCisgICAgICAgIFBpbkxvY2tMZXZlbFNldAorI2VuZGlmCisjaWZkZWYgUk9NX1BpbkxvY2sKKyNkZWZpbmUgTUFQX1BpbkxvY2sgXAorICAgICAgICBST01fUGluTG9jaworI2Vsc2UKKyNkZWZpbmUgTUFQX1BpbkxvY2sgXAorICAgICAgICBQaW5Mb2NrCisjZW5kaWYKKyNpZmRlZiBST01fUGluVW5sb2NrCisjZGVmaW5lIE1BUF9QaW5VbmxvY2sgXAorICAgICAgICBST01fUGluVW5sb2NrCisjZWxzZQorI2RlZmluZSBNQVBfUGluVW5sb2NrIFwKKyAgICAgICAgUGluVW5sb2NrCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgdGhlIFNZU1RJQ0sgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBST01fU3lzVGlja0VuYWJsZQorI2RlZmluZSBNQVBfU3lzVGlja0VuYWJsZSBcCisgICAgICAgIFJPTV9TeXNUaWNrRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfU3lzVGlja0VuYWJsZSBcCisgICAgICAgIFN5c1RpY2tFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TeXNUaWNrRGlzYWJsZQorI2RlZmluZSBNQVBfU3lzVGlja0Rpc2FibGUgXAorICAgICAgICBST01fU3lzVGlja0Rpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TeXNUaWNrRGlzYWJsZSBcCisgICAgICAgIFN5c1RpY2tEaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fU3lzVGlja0ludFJlZ2lzdGVyCisjZGVmaW5lIE1BUF9TeXNUaWNrSW50UmVnaXN0ZXIgXAorICAgICAgICBST01fU3lzVGlja0ludFJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfU3lzVGlja0ludFJlZ2lzdGVyIFwKKyAgICAgICAgU3lzVGlja0ludFJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fU3lzVGlja0ludFVucmVnaXN0ZXIKKyNkZWZpbmUgTUFQX1N5c1RpY2tJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX1N5c1RpY2tJbnRVbnJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfU3lzVGlja0ludFVucmVnaXN0ZXIgXAorICAgICAgICBTeXNUaWNrSW50VW5yZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX1N5c1RpY2tJbnRFbmFibGUKKyNkZWZpbmUgTUFQX1N5c1RpY2tJbnRFbmFibGUgXAorICAgICAgICBST01fU3lzVGlja0ludEVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1N5c1RpY2tJbnRFbmFibGUgXAorICAgICAgICBTeXNUaWNrSW50RW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fU3lzVGlja0ludERpc2FibGUKKyNkZWZpbmUgTUFQX1N5c1RpY2tJbnREaXNhYmxlIFwKKyAgICAgICAgUk9NX1N5c1RpY2tJbnREaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfU3lzVGlja0ludERpc2FibGUgXAorICAgICAgICBTeXNUaWNrSW50RGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1N5c1RpY2tQZXJpb2RTZXQKKyNkZWZpbmUgTUFQX1N5c1RpY2tQZXJpb2RTZXQgXAorICAgICAgICBST01fU3lzVGlja1BlcmlvZFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1N5c1RpY2tQZXJpb2RTZXQgXAorICAgICAgICBTeXNUaWNrUGVyaW9kU2V0CisjZW5kaWYKKyNpZmRlZiBST01fU3lzVGlja1BlcmlvZEdldAorI2RlZmluZSBNQVBfU3lzVGlja1BlcmlvZEdldCBcCisgICAgICAgIFJPTV9TeXNUaWNrUGVyaW9kR2V0CisjZWxzZQorI2RlZmluZSBNQVBfU3lzVGlja1BlcmlvZEdldCBcCisgICAgICAgIFN5c1RpY2tQZXJpb2RHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9TeXNUaWNrVmFsdWVHZXQKKyNkZWZpbmUgTUFQX1N5c1RpY2tWYWx1ZUdldCBcCisgICAgICAgIFJPTV9TeXNUaWNrVmFsdWVHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9TeXNUaWNrVmFsdWVHZXQgXAorICAgICAgICBTeXNUaWNrVmFsdWVHZXQKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciB0aGUgVVRJTFMgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjZGVmaW5lIE1BUF9VdGlsc0RlbGF5IFwKKyAgICAgICAgUk9NX1V0aWxzRGVsYXkKKyNlbHNlCisjZGVmaW5lIE1BUF9VdGlsc0RlbGF5IFwKKyAgICAgICAgVXRpbHNEZWxheQorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIHRoZSBJMlMgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBST01fSTJTRW5hYmxlCisjZGVmaW5lIE1BUF9JMlNFbmFibGUgXAorICAgICAgICBST01fSTJTRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfSTJTRW5hYmxlIFwKKyAgICAgICAgSTJTRW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fSTJTRGlzYWJsZQorI2RlZmluZSBNQVBfSTJTRGlzYWJsZSBcCisgICAgICAgIFJPTV9JMlNEaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfSTJTRGlzYWJsZSBcCisgICAgICAgIEkyU0Rpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9JMlNEYXRhUHV0CisjZGVmaW5lIE1BUF9JMlNEYXRhUHV0IFwKKyAgICAgICAgUk9NX0kyU0RhdGFQdXQKKyNlbHNlCisjZGVmaW5lIE1BUF9JMlNEYXRhUHV0IFwKKyAgICAgICAgSTJTRGF0YVB1dAorI2VuZGlmCisjaWZkZWYgUk9NX0kyU0RhdGFQdXROb25CbG9ja2luZworI2RlZmluZSBNQVBfSTJTRGF0YVB1dE5vbkJsb2NraW5nIFwKKyAgICAgICAgUk9NX0kyU0RhdGFQdXROb25CbG9ja2luZworI2Vsc2UKKyNkZWZpbmUgTUFQX0kyU0RhdGFQdXROb25CbG9ja2luZyBcCisgICAgICAgIEkyU0RhdGFQdXROb25CbG9ja2luZworI2VuZGlmCisjaWZkZWYgUk9NX0kyU0RhdGFHZXQKKyNkZWZpbmUgTUFQX0kyU0RhdGFHZXQgXAorICAgICAgICBST01fSTJTRGF0YUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyU0RhdGFHZXQgXAorICAgICAgICBJMlNEYXRhR2V0CisjZW5kaWYKKyNpZmRlZiBST01fSTJTRGF0YUdldE5vbkJsb2NraW5nCisjZGVmaW5lIE1BUF9JMlNEYXRhR2V0Tm9uQmxvY2tpbmcgXAorICAgICAgICBST01fSTJTRGF0YUdldE5vbkJsb2NraW5nCisjZWxzZQorI2RlZmluZSBNQVBfSTJTRGF0YUdldE5vbkJsb2NraW5nIFwKKyAgICAgICAgSTJTRGF0YUdldE5vbkJsb2NraW5nCisjZW5kaWYKKyNpZmRlZiBST01fSTJTQ29uZmlnU2V0RXhwQ2xrCisjZGVmaW5lIE1BUF9JMlNDb25maWdTZXRFeHBDbGsgXAorICAgICAgICBST01fSTJTQ29uZmlnU2V0RXhwQ2xrCisjZWxzZQorI2RlZmluZSBNQVBfSTJTQ29uZmlnU2V0RXhwQ2xrIFwKKyAgICAgICAgSTJTQ29uZmlnU2V0RXhwQ2xrCisjZW5kaWYKKyNpZmRlZiBST01fSTJTVHhGSUZPRW5hYmxlCisjZGVmaW5lIE1BUF9JMlNUeEZJRk9FbmFibGUgXAorICAgICAgICBST01fSTJTVHhGSUZPRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfSTJTVHhGSUZPRW5hYmxlIFwKKyAgICAgICAgSTJTVHhGSUZPRW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fSTJTVHhGSUZPRGlzYWJsZQorI2RlZmluZSBNQVBfSTJTVHhGSUZPRGlzYWJsZSBcCisgICAgICAgIFJPTV9JMlNUeEZJRk9EaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfSTJTVHhGSUZPRGlzYWJsZSBcCisgICAgICAgIEkyU1R4RklGT0Rpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9JMlNSeEZJRk9FbmFibGUKKyNkZWZpbmUgTUFQX0kyU1J4RklGT0VuYWJsZSBcCisgICAgICAgIFJPTV9JMlNSeEZJRk9FbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9JMlNSeEZJRk9FbmFibGUgXAorICAgICAgICBJMlNSeEZJRk9FbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9JMlNSeEZJRk9EaXNhYmxlCisjZGVmaW5lIE1BUF9JMlNSeEZJRk9EaXNhYmxlIFwKKyAgICAgICAgUk9NX0kyU1J4RklGT0Rpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9JMlNSeEZJRk9EaXNhYmxlIFwKKyAgICAgICAgSTJTUnhGSUZPRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0kyU1R4RklGT1N0YXR1c0dldAorI2RlZmluZSBNQVBfSTJTVHhGSUZPU3RhdHVzR2V0IFwKKyAgICAgICAgUk9NX0kyU1R4RklGT1N0YXR1c0dldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyU1R4RklGT1N0YXR1c0dldCBcCisgICAgICAgIEkyU1R4RklGT1N0YXR1c0dldAorI2VuZGlmCisjaWZkZWYgUk9NX0kyU1J4RklGT1N0YXR1c0dldAorI2RlZmluZSBNQVBfSTJTUnhGSUZPU3RhdHVzR2V0IFwKKyAgICAgICAgUk9NX0kyU1J4RklGT1N0YXR1c0dldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyU1J4RklGT1N0YXR1c0dldCBcCisgICAgICAgIEkyU1J4RklGT1N0YXR1c0dldAorI2VuZGlmCisjaWZkZWYgUk9NX0kyU1NlcmlhbGl6ZXJDb25maWcKKyNkZWZpbmUgTUFQX0kyU1NlcmlhbGl6ZXJDb25maWcgXAorICAgICAgICBST01fSTJTU2VyaWFsaXplckNvbmZpZworI2Vsc2UKKyNkZWZpbmUgTUFQX0kyU1NlcmlhbGl6ZXJDb25maWcgXAorICAgICAgICBJMlNTZXJpYWxpemVyQ29uZmlnCisjZW5kaWYKKyNpZmRlZiBST01fSTJTSW50RW5hYmxlCisjZGVmaW5lIE1BUF9JMlNJbnRFbmFibGUgXAorICAgICAgICBST01fSTJTSW50RW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfSTJTSW50RW5hYmxlIFwKKyAgICAgICAgSTJTSW50RW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fSTJTSW50RGlzYWJsZQorI2RlZmluZSBNQVBfSTJTSW50RGlzYWJsZSBcCisgICAgICAgIFJPTV9JMlNJbnREaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfSTJTSW50RGlzYWJsZSBcCisgICAgICAgIEkyU0ludERpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9JMlNJbnRTdGF0dXMKKyNkZWZpbmUgTUFQX0kyU0ludFN0YXR1cyBcCisgICAgICAgIFJPTV9JMlNJbnRTdGF0dXMKKyNlbHNlCisjZGVmaW5lIE1BUF9JMlNJbnRTdGF0dXMgXAorICAgICAgICBJMlNJbnRTdGF0dXMKKyNlbmRpZgorI2lmZGVmIFJPTV9JMlNJbnRDbGVhcgorI2RlZmluZSBNQVBfSTJTSW50Q2xlYXIgXAorICAgICAgICBST01fSTJTSW50Q2xlYXIKKyNlbHNlCisjZGVmaW5lIE1BUF9JMlNJbnRDbGVhciBcCisgICAgICAgIEkyU0ludENsZWFyCisjZW5kaWYKKyNpZmRlZiBST01fSTJTSW50UmVnaXN0ZXIKKyNkZWZpbmUgTUFQX0kyU0ludFJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX0kyU0ludFJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfSTJTSW50UmVnaXN0ZXIgXAorICAgICAgICBJMlNJbnRSZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX0kyU0ludFVucmVnaXN0ZXIKKyNkZWZpbmUgTUFQX0kyU0ludFVucmVnaXN0ZXIgXAorICAgICAgICBST01fSTJTSW50VW5yZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0kyU0ludFVucmVnaXN0ZXIgXAorICAgICAgICBJMlNJbnRVbnJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fSTJTVHhBY3RpdmVTbG90U2V0CisjZGVmaW5lIE1BUF9JMlNUeEFjdGl2ZVNsb3RTZXQgXAorICAgICAgICBST01fSTJTVHhBY3RpdmVTbG90U2V0CisjZWxzZQorI2RlZmluZSBNQVBfSTJTVHhBY3RpdmVTbG90U2V0IFwKKyAgICAgICAgSTJTVHhBY3RpdmVTbG90U2V0CisjZW5kaWYKKyNpZmRlZiBST01fSTJTUnhBY3RpdmVTbG90U2V0CisjZGVmaW5lIE1BUF9JMlNSeEFjdGl2ZVNsb3RTZXQgXAorICAgICAgICBST01fSTJTUnhBY3RpdmVTbG90U2V0CisjZWxzZQorI2RlZmluZSBNQVBfSTJTUnhBY3RpdmVTbG90U2V0IFwKKyAgICAgICAgSTJTUnhBY3RpdmVTbG90U2V0CisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgdGhlIEdQSU8gQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBST01fR1BJT0Rpck1vZGVTZXQKKyNkZWZpbmUgTUFQX0dQSU9EaXJNb2RlU2V0IFwKKyAgICAgICAgUk9NX0dQSU9EaXJNb2RlU2V0CisjZWxzZQorI2RlZmluZSBNQVBfR1BJT0Rpck1vZGVTZXQgXAorICAgICAgICBHUElPRGlyTW9kZVNldAorI2VuZGlmCisjaWZkZWYgUk9NX0dQSU9EaXJNb2RlR2V0CisjZGVmaW5lIE1BUF9HUElPRGlyTW9kZUdldCBcCisgICAgICAgIFJPTV9HUElPRGlyTW9kZUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0dQSU9EaXJNb2RlR2V0IFwKKyAgICAgICAgR1BJT0Rpck1vZGVHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9HUElPSW50VHlwZVNldAorI2RlZmluZSBNQVBfR1BJT0ludFR5cGVTZXQgXAorICAgICAgICBST01fR1BJT0ludFR5cGVTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9HUElPSW50VHlwZVNldCBcCisgICAgICAgIEdQSU9JbnRUeXBlU2V0CisjZW5kaWYKKyNpZmRlZiBST01fR1BJT0RNQVRyaWdnZXJFbmFibGUKKyNkZWZpbmUgTUFQX0dQSU9ETUFUcmlnZ2VyRW5hYmxlIFwKKyAgICAgICAgUk9NX0dQSU9ETUFUcmlnZ2VyRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfR1BJT0RNQVRyaWdnZXJFbmFibGUgXAorICAgICAgICBHUElPRE1BVHJpZ2dlckVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0dQSU9ETUFUcmlnZ2VyRGlzYWJsZQorI2RlZmluZSBNQVBfR1BJT0RNQVRyaWdnZXJEaXNhYmxlIFwKKyAgICAgICAgUk9NX0dQSU9ETUFUcmlnZ2VyRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0dQSU9ETUFUcmlnZ2VyRGlzYWJsZSBcCisgICAgICAgIEdQSU9ETUFUcmlnZ2VyRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0dQSU9JbnRUeXBlR2V0CisjZGVmaW5lIE1BUF9HUElPSW50VHlwZUdldCBcCisgICAgICAgIFJPTV9HUElPSW50VHlwZUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0dQSU9JbnRUeXBlR2V0IFwKKyAgICAgICAgR1BJT0ludFR5cGVHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9HUElPSW50RW5hYmxlCisjZGVmaW5lIE1BUF9HUElPSW50RW5hYmxlIFwKKyAgICAgICAgUk9NX0dQSU9JbnRFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9HUElPSW50RW5hYmxlIFwKKyAgICAgICAgR1BJT0ludEVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0dQSU9JbnREaXNhYmxlCisjZGVmaW5lIE1BUF9HUElPSW50RGlzYWJsZSBcCisgICAgICAgIFJPTV9HUElPSW50RGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0dQSU9JbnREaXNhYmxlIFwKKyAgICAgICAgR1BJT0ludERpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9HUElPSW50U3RhdHVzCisjZGVmaW5lIE1BUF9HUElPSW50U3RhdHVzIFwKKyAgICAgICAgUk9NX0dQSU9JbnRTdGF0dXMKKyNlbHNlCisjZGVmaW5lIE1BUF9HUElPSW50U3RhdHVzIFwKKyAgICAgICAgR1BJT0ludFN0YXR1cworI2VuZGlmCisjaWZkZWYgUk9NX0dQSU9JbnRDbGVhcgorI2RlZmluZSBNQVBfR1BJT0ludENsZWFyIFwKKyAgICAgICAgUk9NX0dQSU9JbnRDbGVhcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0dQSU9JbnRDbGVhciBcCisgICAgICAgIEdQSU9JbnRDbGVhcgorI2VuZGlmCisjaWZkZWYgUk9NX0dQSU9JbnRSZWdpc3RlcgorI2RlZmluZSBNQVBfR1BJT0ludFJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX0dQSU9JbnRSZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0dQSU9JbnRSZWdpc3RlciBcCisgICAgICAgIEdQSU9JbnRSZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX0dQSU9JbnRVbnJlZ2lzdGVyCisjZGVmaW5lIE1BUF9HUElPSW50VW5yZWdpc3RlciBcCisgICAgICAgIFJPTV9HUElPSW50VW5yZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0dQSU9JbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgR1BJT0ludFVucmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9HUElPUGluUmVhZAorI2RlZmluZSBNQVBfR1BJT1BpblJlYWQgXAorICAgICAgICBST01fR1BJT1BpblJlYWQKKyNlbHNlCisjZGVmaW5lIE1BUF9HUElPUGluUmVhZCBcCisgICAgICAgIEdQSU9QaW5SZWFkCisjZW5kaWYKKyNpZmRlZiBST01fR1BJT1BpbldyaXRlCisjZGVmaW5lIE1BUF9HUElPUGluV3JpdGUgXAorICAgICAgICBST01fR1BJT1BpbldyaXRlCisjZWxzZQorI2RlZmluZSBNQVBfR1BJT1BpbldyaXRlIFwKKyAgICAgICAgR1BJT1BpbldyaXRlCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgdGhlIEFFUyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIFJPTV9BRVNDb25maWdTZXQKKyNkZWZpbmUgTUFQX0FFU0NvbmZpZ1NldCBcCisgICAgICAgIFJPTV9BRVNDb25maWdTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNDb25maWdTZXQgXAorICAgICAgICBBRVNDb25maWdTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9BRVNLZXkxU2V0CisjZGVmaW5lIE1BUF9BRVNLZXkxU2V0IFwKKyAgICAgICAgUk9NX0FFU0tleTFTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNLZXkxU2V0IFwKKyAgICAgICAgQUVTS2V5MVNldAorI2VuZGlmCisjaWZkZWYgUk9NX0FFU0tleTJTZXQKKyNkZWZpbmUgTUFQX0FFU0tleTJTZXQgXAorICAgICAgICBST01fQUVTS2V5MlNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0tleTJTZXQgXAorICAgICAgICBBRVNLZXkyU2V0CisjZW5kaWYKKyNpZmRlZiBST01fQUVTS2V5M1NldAorI2RlZmluZSBNQVBfQUVTS2V5M1NldCBcCisgICAgICAgIFJPTV9BRVNLZXkzU2V0CisjZWxzZQorI2RlZmluZSBNQVBfQUVTS2V5M1NldCBcCisgICAgICAgIEFFU0tleTNTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9BRVNJVlNldAorI2RlZmluZSBNQVBfQUVTSVZTZXQgXAorICAgICAgICBST01fQUVTSVZTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNJVlNldCBcCisgICAgICAgIEFFU0lWU2V0CisjZW5kaWYKKyNpZmRlZiBST01fQUVTVGFnUmVhZAorI2RlZmluZSBNQVBfQUVTVGFnUmVhZCBcCisgICAgICAgIFJPTV9BRVNUYWdSZWFkCisjZWxzZQorI2RlZmluZSBNQVBfQUVTVGFnUmVhZCBcCisgICAgICAgIEFFU1RhZ1JlYWQKKyNlbmRpZgorI2lmZGVmIFJPTV9BRVNEYXRhTGVuZ3RoU2V0CisjZGVmaW5lIE1BUF9BRVNEYXRhTGVuZ3RoU2V0IFwKKyAgICAgICAgUk9NX0FFU0RhdGFMZW5ndGhTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNEYXRhTGVuZ3RoU2V0IFwKKyAgICAgICAgQUVTRGF0YUxlbmd0aFNldAorI2VuZGlmCisjaWZkZWYgUk9NX0FFU0F1dGhEYXRhTGVuZ3RoU2V0CisjZGVmaW5lIE1BUF9BRVNBdXRoRGF0YUxlbmd0aFNldCBcCisgICAgICAgIFJPTV9BRVNBdXRoRGF0YUxlbmd0aFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0F1dGhEYXRhTGVuZ3RoU2V0IFwKKyAgICAgICAgQUVTQXV0aERhdGFMZW5ndGhTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9BRVNEYXRhUmVhZE5vbkJsb2NraW5nCisjZGVmaW5lIE1BUF9BRVNEYXRhUmVhZE5vbkJsb2NraW5nIFwKKyAgICAgICAgUk9NX0FFU0RhdGFSZWFkTm9uQmxvY2tpbmcKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNEYXRhUmVhZE5vbkJsb2NraW5nIFwKKyAgICAgICAgQUVTRGF0YVJlYWROb25CbG9ja2luZworI2VuZGlmCisjaWZkZWYgUk9NX0FFU0RhdGFSZWFkCisjZGVmaW5lIE1BUF9BRVNEYXRhUmVhZCBcCisgICAgICAgIFJPTV9BRVNEYXRhUmVhZAorI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0RhdGFSZWFkIFwKKyAgICAgICAgQUVTRGF0YVJlYWQKKyNlbmRpZgorI2lmZGVmIFJPTV9BRVNEYXRhV3JpdGVOb25CbG9ja2luZworI2RlZmluZSBNQVBfQUVTRGF0YVdyaXRlTm9uQmxvY2tpbmcgXAorICAgICAgICBST01fQUVTRGF0YVdyaXRlTm9uQmxvY2tpbmcKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNEYXRhV3JpdGVOb25CbG9ja2luZyBcCisgICAgICAgIEFFU0RhdGFXcml0ZU5vbkJsb2NraW5nCisjZW5kaWYKKyNpZmRlZiBST01fQUVTRGF0YVdyaXRlCisjZGVmaW5lIE1BUF9BRVNEYXRhV3JpdGUgXAorICAgICAgICBST01fQUVTRGF0YVdyaXRlCisjZWxzZQorI2RlZmluZSBNQVBfQUVTRGF0YVdyaXRlIFwKKyAgICAgICAgQUVTRGF0YVdyaXRlCisjZW5kaWYKKyNpZmRlZiBST01fQUVTRGF0YVByb2Nlc3MKKyNkZWZpbmUgTUFQX0FFU0RhdGFQcm9jZXNzIFwKKyAgICAgICAgUk9NX0FFU0RhdGFQcm9jZXNzCisjZWxzZQorI2RlZmluZSBNQVBfQUVTRGF0YVByb2Nlc3MgXAorICAgICAgICBBRVNEYXRhUHJvY2VzcworI2VuZGlmCisjaWZkZWYgUk9NX0FFU0RhdGFNQUMKKyNkZWZpbmUgTUFQX0FFU0RhdGFNQUMgXAorICAgICAgICBST01fQUVTRGF0YU1BQworI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0RhdGFNQUMgXAorICAgICAgICBBRVNEYXRhTUFDCisjZW5kaWYKKyNpZmRlZiBST01fQUVTRGF0YVByb2Nlc3NBRQorI2RlZmluZSBNQVBfQUVTRGF0YVByb2Nlc3NBRSBcCisgICAgICAgIFJPTV9BRVNEYXRhUHJvY2Vzc0FFCisjZWxzZQorI2RlZmluZSBNQVBfQUVTRGF0YVByb2Nlc3NBRSBcCisgICAgICAgIEFFU0RhdGFQcm9jZXNzQUUKKyNlbmRpZgorI2lmZGVmIFJPTV9BRVNJbnRTdGF0dXMKKyNkZWZpbmUgTUFQX0FFU0ludFN0YXR1cyBcCisgICAgICAgIFJPTV9BRVNJbnRTdGF0dXMKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNJbnRTdGF0dXMgXAorICAgICAgICBBRVNJbnRTdGF0dXMKKyNlbmRpZgorI2lmZGVmIFJPTV9BRVNJbnRFbmFibGUKKyNkZWZpbmUgTUFQX0FFU0ludEVuYWJsZSBcCisgICAgICAgIFJPTV9BRVNJbnRFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNJbnRFbmFibGUgXAorICAgICAgICBBRVNJbnRFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9BRVNJbnREaXNhYmxlCisjZGVmaW5lIE1BUF9BRVNJbnREaXNhYmxlIFwKKyAgICAgICAgUk9NX0FFU0ludERpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNJbnREaXNhYmxlIFwKKyAgICAgICAgQUVTSW50RGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0FFU0ludENsZWFyCisjZGVmaW5lIE1BUF9BRVNJbnRDbGVhciBcCisgICAgICAgIFJPTV9BRVNJbnRDbGVhcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0ludENsZWFyIFwKKyAgICAgICAgQUVTSW50Q2xlYXIKKyNlbmRpZgorI2lmZGVmIFJPTV9BRVNJbnRSZWdpc3RlcgorI2RlZmluZSBNQVBfQUVTSW50UmVnaXN0ZXIgXAorICAgICAgICBST01fQUVTSW50UmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNJbnRSZWdpc3RlciBcCisgICAgICAgIEFFU0ludFJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fQUVTSW50VW5yZWdpc3RlcgorI2RlZmluZSBNQVBfQUVTSW50VW5yZWdpc3RlciBcCisgICAgICAgIFJPTV9BRVNJbnRVbnJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfQUVTSW50VW5yZWdpc3RlciBcCisgICAgICAgIEFFU0ludFVucmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9BRVNETUFFbmFibGUKKyNkZWZpbmUgTUFQX0FFU0RNQUVuYWJsZSBcCisgICAgICAgIFJPTV9BRVNETUFFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNETUFFbmFibGUgXAorICAgICAgICBBRVNETUFFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9BRVNETUFEaXNhYmxlCisjZGVmaW5lIE1BUF9BRVNETUFEaXNhYmxlIFwKKyAgICAgICAgUk9NX0FFU0RNQURpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9BRVNETUFEaXNhYmxlIFwKKyAgICAgICAgQUVTRE1BRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0FFU0lWR2V0CisjZGVmaW5lIE1BUF9BRVNJVkdldCBcCisgICAgICAgIFJPTV9BRVNJVkdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0FFU0lWR2V0IFwKKyAgICAgICAgQUVTSVZHZXQKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciB0aGUgREVTIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgUk9NX0RFU0NvbmZpZ1NldAorI2RlZmluZSBNQVBfREVTQ29uZmlnU2V0IFwKKyAgICAgICAgUk9NX0RFU0NvbmZpZ1NldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0RFU0NvbmZpZ1NldCBcCisgICAgICAgIERFU0NvbmZpZ1NldAorI2VuZGlmCisjaWZkZWYgUk9NX0RFU0RhdGFSZWFkCisjZGVmaW5lIE1BUF9ERVNEYXRhUmVhZCBcCisgICAgICAgIFJPTV9ERVNEYXRhUmVhZAorI2Vsc2UKKyNkZWZpbmUgTUFQX0RFU0RhdGFSZWFkIFwKKyAgICAgICAgREVTRGF0YVJlYWQKKyNlbmRpZgorI2lmZGVmIFJPTV9ERVNEYXRhUmVhZE5vbkJsb2NraW5nCisjZGVmaW5lIE1BUF9ERVNEYXRhUmVhZE5vbkJsb2NraW5nIFwKKyAgICAgICAgUk9NX0RFU0RhdGFSZWFkTm9uQmxvY2tpbmcKKyNlbHNlCisjZGVmaW5lIE1BUF9ERVNEYXRhUmVhZE5vbkJsb2NraW5nIFwKKyAgICAgICAgREVTRGF0YVJlYWROb25CbG9ja2luZworI2VuZGlmCisjaWZkZWYgUk9NX0RFU0RhdGFQcm9jZXNzCisjZGVmaW5lIE1BUF9ERVNEYXRhUHJvY2VzcyBcCisgICAgICAgIFJPTV9ERVNEYXRhUHJvY2VzcworI2Vsc2UKKyNkZWZpbmUgTUFQX0RFU0RhdGFQcm9jZXNzIFwKKyAgICAgICAgREVTRGF0YVByb2Nlc3MKKyNlbmRpZgorI2lmZGVmIFJPTV9ERVNEYXRhV3JpdGUKKyNkZWZpbmUgTUFQX0RFU0RhdGFXcml0ZSBcCisgICAgICAgIFJPTV9ERVNEYXRhV3JpdGUKKyNlbHNlCisjZGVmaW5lIE1BUF9ERVNEYXRhV3JpdGUgXAorICAgICAgICBERVNEYXRhV3JpdGUKKyNlbmRpZgorI2lmZGVmIFJPTV9ERVNEYXRhV3JpdGVOb25CbG9ja2luZworI2RlZmluZSBNQVBfREVTRGF0YVdyaXRlTm9uQmxvY2tpbmcgXAorICAgICAgICBST01fREVTRGF0YVdyaXRlTm9uQmxvY2tpbmcKKyNlbHNlCisjZGVmaW5lIE1BUF9ERVNEYXRhV3JpdGVOb25CbG9ja2luZyBcCisgICAgICAgIERFU0RhdGFXcml0ZU5vbkJsb2NraW5nCisjZW5kaWYKKyNpZmRlZiBST01fREVTRE1BRGlzYWJsZQorI2RlZmluZSBNQVBfREVTRE1BRGlzYWJsZSBcCisgICAgICAgIFJPTV9ERVNETUFEaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfREVTRE1BRGlzYWJsZSBcCisgICAgICAgIERFU0RNQURpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9ERVNETUFFbmFibGUKKyNkZWZpbmUgTUFQX0RFU0RNQUVuYWJsZSBcCisgICAgICAgIFJPTV9ERVNETUFFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9ERVNETUFFbmFibGUgXAorICAgICAgICBERVNETUFFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9ERVNJbnRDbGVhcgorI2RlZmluZSBNQVBfREVTSW50Q2xlYXIgXAorICAgICAgICBST01fREVTSW50Q2xlYXIKKyNlbHNlCisjZGVmaW5lIE1BUF9ERVNJbnRDbGVhciBcCisgICAgICAgIERFU0ludENsZWFyCisjZW5kaWYKKyNpZmRlZiBST01fREVTSW50RGlzYWJsZQorI2RlZmluZSBNQVBfREVTSW50RGlzYWJsZSBcCisgICAgICAgIFJPTV9ERVNJbnREaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfREVTSW50RGlzYWJsZSBcCisgICAgICAgIERFU0ludERpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9ERVNJbnRFbmFibGUKKyNkZWZpbmUgTUFQX0RFU0ludEVuYWJsZSBcCisgICAgICAgIFJPTV9ERVNJbnRFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9ERVNJbnRFbmFibGUgXAorICAgICAgICBERVNJbnRFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9ERVNJbnRSZWdpc3RlcgorI2RlZmluZSBNQVBfREVTSW50UmVnaXN0ZXIgXAorICAgICAgICBST01fREVTSW50UmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9ERVNJbnRSZWdpc3RlciBcCisgICAgICAgIERFU0ludFJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fREVTSW50U3RhdHVzCisjZGVmaW5lIE1BUF9ERVNJbnRTdGF0dXMgXAorICAgICAgICBST01fREVTSW50U3RhdHVzCisjZWxzZQorI2RlZmluZSBNQVBfREVTSW50U3RhdHVzIFwKKyAgICAgICAgREVTSW50U3RhdHVzCisjZW5kaWYKKyNpZmRlZiBST01fREVTSW50VW5yZWdpc3RlcgorI2RlZmluZSBNQVBfREVTSW50VW5yZWdpc3RlciBcCisgICAgICAgIFJPTV9ERVNJbnRVbnJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfREVTSW50VW5yZWdpc3RlciBcCisgICAgICAgIERFU0ludFVucmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9ERVNJVlNldAorI2RlZmluZSBNQVBfREVTSVZTZXQgXAorICAgICAgICBST01fREVTSVZTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9ERVNJVlNldCBcCisgICAgICAgIERFU0lWU2V0CisjZW5kaWYKKyNpZmRlZiBST01fREVTS2V5U2V0CisjZGVmaW5lIE1BUF9ERVNLZXlTZXQgXAorICAgICAgICBST01fREVTS2V5U2V0CisjZWxzZQorI2RlZmluZSBNQVBfREVTS2V5U2V0IFwKKyAgICAgICAgREVTS2V5U2V0CisjZW5kaWYKKyNpZmRlZiBST01fREVTRGF0YUxlbmd0aFNldAorI2RlZmluZSBNQVBfREVTRGF0YUxlbmd0aFNldCBcCisgICAgICAgIFJPTV9ERVNEYXRhTGVuZ3RoU2V0CisjZWxzZQorI2RlZmluZSBNQVBfREVTRGF0YUxlbmd0aFNldCBcCisgICAgICAgIERFU0RhdGFMZW5ndGhTZXQKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciB0aGUgU0hBTUQ1IEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgUk9NX1NIQU1ENUNvbmZpZ1NldAorI2RlZmluZSBNQVBfU0hBTUQ1Q29uZmlnU2V0IFwKKyAgICAgICAgUk9NX1NIQU1ENUNvbmZpZ1NldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1NIQU1ENUNvbmZpZ1NldCBcCisgICAgICAgIFNIQU1ENUNvbmZpZ1NldAorI2VuZGlmCisjaWZkZWYgUk9NX1NIQU1ENURhdGFQcm9jZXNzCisjZGVmaW5lIE1BUF9TSEFNRDVEYXRhUHJvY2VzcyBcCisgICAgICAgIFJPTV9TSEFNRDVEYXRhUHJvY2VzcworI2Vsc2UKKyNkZWZpbmUgTUFQX1NIQU1ENURhdGFQcm9jZXNzIFwKKyAgICAgICAgU0hBTUQ1RGF0YVByb2Nlc3MKKyNlbmRpZgorI2lmZGVmIFJPTV9TSEFNRDVEYXRhV3JpdGUKKyNkZWZpbmUgTUFQX1NIQU1ENURhdGFXcml0ZSBcCisgICAgICAgIFJPTV9TSEFNRDVEYXRhV3JpdGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TSEFNRDVEYXRhV3JpdGUgXAorICAgICAgICBTSEFNRDVEYXRhV3JpdGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TSEFNRDVEYXRhV3JpdGVOb25CbG9ja2luZworI2RlZmluZSBNQVBfU0hBTUQ1RGF0YVdyaXRlTm9uQmxvY2tpbmcgXAorICAgICAgICBST01fU0hBTUQ1RGF0YVdyaXRlTm9uQmxvY2tpbmcKKyNlbHNlCisjZGVmaW5lIE1BUF9TSEFNRDVEYXRhV3JpdGVOb25CbG9ja2luZyBcCisgICAgICAgIFNIQU1ENURhdGFXcml0ZU5vbkJsb2NraW5nCisjZW5kaWYKKyNpZmRlZiBST01fU0hBTUQ1RE1BRGlzYWJsZQorI2RlZmluZSBNQVBfU0hBTUQ1RE1BRGlzYWJsZSBcCisgICAgICAgIFJPTV9TSEFNRDVETUFEaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfU0hBTUQ1RE1BRGlzYWJsZSBcCisgICAgICAgIFNIQU1ENURNQURpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TSEFNRDVETUFFbmFibGUKKyNkZWZpbmUgTUFQX1NIQU1ENURNQUVuYWJsZSBcCisgICAgICAgIFJPTV9TSEFNRDVETUFFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TSEFNRDVETUFFbmFibGUgXAorICAgICAgICBTSEFNRDVETUFFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TSEFNRDVEYXRhTGVuZ3RoU2V0CisjZGVmaW5lIE1BUF9TSEFNRDVEYXRhTGVuZ3RoU2V0IFwKKyAgICAgICAgUk9NX1NIQU1ENURhdGFMZW5ndGhTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9TSEFNRDVEYXRhTGVuZ3RoU2V0IFwKKyAgICAgICAgU0hBTUQ1RGF0YUxlbmd0aFNldAorI2VuZGlmCisjaWZkZWYgUk9NX1NIQU1ENUhNQUNLZXlTZXQKKyNkZWZpbmUgTUFQX1NIQU1ENUhNQUNLZXlTZXQgXAorICAgICAgICBST01fU0hBTUQ1SE1BQ0tleVNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1NIQU1ENUhNQUNLZXlTZXQgXAorICAgICAgICBTSEFNRDVITUFDS2V5U2V0CisjZW5kaWYKKyNpZmRlZiBST01fU0hBTUQ1SE1BQ1BQS2V5R2VuZXJhdGUKKyNkZWZpbmUgTUFQX1NIQU1ENUhNQUNQUEtleUdlbmVyYXRlIFwKKyAgICAgICAgUk9NX1NIQU1ENUhNQUNQUEtleUdlbmVyYXRlCisjZWxzZQorI2RlZmluZSBNQVBfU0hBTUQ1SE1BQ1BQS2V5R2VuZXJhdGUgXAorICAgICAgICBTSEFNRDVITUFDUFBLZXlHZW5lcmF0ZQorI2VuZGlmCisjaWZkZWYgUk9NX1NIQU1ENUhNQUNQUEtleVNldAorI2RlZmluZSBNQVBfU0hBTUQ1SE1BQ1BQS2V5U2V0IFwKKyAgICAgICAgUk9NX1NIQU1ENUhNQUNQUEtleVNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1NIQU1ENUhNQUNQUEtleVNldCBcCisgICAgICAgIFNIQU1ENUhNQUNQUEtleVNldAorI2VuZGlmCisjaWZkZWYgUk9NX1NIQU1ENUhNQUNQcm9jZXNzCisjZGVmaW5lIE1BUF9TSEFNRDVITUFDUHJvY2VzcyBcCisgICAgICAgIFJPTV9TSEFNRDVITUFDUHJvY2VzcworI2Vsc2UKKyNkZWZpbmUgTUFQX1NIQU1ENUhNQUNQcm9jZXNzIFwKKyAgICAgICAgU0hBTUQ1SE1BQ1Byb2Nlc3MKKyNlbmRpZgorI2lmZGVmIFJPTV9TSEFNRDVJbnRDbGVhcgorI2RlZmluZSBNQVBfU0hBTUQ1SW50Q2xlYXIgXAorICAgICAgICBST01fU0hBTUQ1SW50Q2xlYXIKKyNlbHNlCisjZGVmaW5lIE1BUF9TSEFNRDVJbnRDbGVhciBcCisgICAgICAgIFNIQU1ENUludENsZWFyCisjZW5kaWYKKyNpZmRlZiBST01fU0hBTUQ1SW50RGlzYWJsZQorI2RlZmluZSBNQVBfU0hBTUQ1SW50RGlzYWJsZSBcCisgICAgICAgIFJPTV9TSEFNRDVJbnREaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfU0hBTUQ1SW50RGlzYWJsZSBcCisgICAgICAgIFNIQU1ENUludERpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TSEFNRDVJbnRFbmFibGUKKyNkZWZpbmUgTUFQX1NIQU1ENUludEVuYWJsZSBcCisgICAgICAgIFJPTV9TSEFNRDVJbnRFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9TSEFNRDVJbnRFbmFibGUgXAorICAgICAgICBTSEFNRDVJbnRFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TSEFNRDVJbnRSZWdpc3RlcgorI2RlZmluZSBNQVBfU0hBTUQ1SW50UmVnaXN0ZXIgXAorICAgICAgICBST01fU0hBTUQ1SW50UmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9TSEFNRDVJbnRSZWdpc3RlciBcCisgICAgICAgIFNIQU1ENUludFJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fU0hBTUQ1SW50U3RhdHVzCisjZGVmaW5lIE1BUF9TSEFNRDVJbnRTdGF0dXMgXAorICAgICAgICBST01fU0hBTUQ1SW50U3RhdHVzCisjZWxzZQorI2RlZmluZSBNQVBfU0hBTUQ1SW50U3RhdHVzIFwKKyAgICAgICAgU0hBTUQ1SW50U3RhdHVzCisjZW5kaWYKKyNpZmRlZiBST01fU0hBTUQ1SW50VW5yZWdpc3RlcgorI2RlZmluZSBNQVBfU0hBTUQ1SW50VW5yZWdpc3RlciBcCisgICAgICAgIFJPTV9TSEFNRDVJbnRVbnJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfU0hBTUQ1SW50VW5yZWdpc3RlciBcCisgICAgICAgIFNIQU1ENUludFVucmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9TSEFNRDVSZXN1bHRSZWFkCisjZGVmaW5lIE1BUF9TSEFNRDVSZXN1bHRSZWFkIFwKKyAgICAgICAgUk9NX1NIQU1ENVJlc3VsdFJlYWQKKyNlbHNlCisjZGVmaW5lIE1BUF9TSEFNRDVSZXN1bHRSZWFkIFwKKyAgICAgICAgU0hBTUQ1UmVzdWx0UmVhZAorI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBNYWNyb3MgZm9yIHRoZSBDUkMgQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBST01fQ1JDQ29uZmlnU2V0CisjZGVmaW5lIE1BUF9DUkNDb25maWdTZXQgXAorICAgICAgICBST01fQ1JDQ29uZmlnU2V0CisjZWxzZQorI2RlZmluZSBNQVBfQ1JDQ29uZmlnU2V0IFwKKyAgICAgICAgQ1JDQ29uZmlnU2V0CisjZW5kaWYKKyNpZmRlZiBST01fQ1JDRGF0YVByb2Nlc3MKKyNkZWZpbmUgTUFQX0NSQ0RhdGFQcm9jZXNzIFwKKyAgICAgICAgUk9NX0NSQ0RhdGFQcm9jZXNzCisjZWxzZQorI2RlZmluZSBNQVBfQ1JDRGF0YVByb2Nlc3MgXAorICAgICAgICBDUkNEYXRhUHJvY2VzcworI2VuZGlmCisjaWZkZWYgUk9NX0NSQ0RhdGFXcml0ZQorI2RlZmluZSBNQVBfQ1JDRGF0YVdyaXRlIFwKKyAgICAgICAgUk9NX0NSQ0RhdGFXcml0ZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0NSQ0RhdGFXcml0ZSBcCisgICAgICAgIENSQ0RhdGFXcml0ZQorI2VuZGlmCisjaWZkZWYgUk9NX0NSQ1Jlc3VsdFJlYWQKKyNkZWZpbmUgTUFQX0NSQ1Jlc3VsdFJlYWQgXAorICAgICAgICBST01fQ1JDUmVzdWx0UmVhZAorI2Vsc2UKKyNkZWZpbmUgTUFQX0NSQ1Jlc3VsdFJlYWQgXAorICAgICAgICBDUkNSZXN1bHRSZWFkCisjZW5kaWYKKyNpZmRlZiBST01fQ1JDU2VlZFNldAorI2RlZmluZSBNQVBfQ1JDU2VlZFNldCBcCisgICAgICAgIFJPTV9DUkNTZWVkU2V0CisjZWxzZQorI2RlZmluZSBNQVBfQ1JDU2VlZFNldCBcCisgICAgICAgIENSQ1NlZWRTZXQKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciB0aGUgU0RIT1NUIEFQSS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWZkZWYgUk9NX1NESG9zdENtZFJlc2V0CisjZGVmaW5lIE1BUF9TREhvc3RDbWRSZXNldCBcCisgICAgICAgIFJPTV9TREhvc3RDbWRSZXNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1NESG9zdENtZFJlc2V0IFwKKyAgICAgICAgU0RIb3N0Q21kUmVzZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9TREhvc3RJbml0CisjZGVmaW5lIE1BUF9TREhvc3RJbml0IFwKKyAgICAgICAgUk9NX1NESG9zdEluaXQKKyNlbHNlCisjZGVmaW5lIE1BUF9TREhvc3RJbml0IFwKKyAgICAgICAgU0RIb3N0SW5pdAorI2VuZGlmCisjaWZkZWYgUk9NX1NESG9zdENtZFNlbmQKKyNkZWZpbmUgTUFQX1NESG9zdENtZFNlbmQgXAorICAgICAgICBST01fU0RIb3N0Q21kU2VuZAorI2Vsc2UKKyNkZWZpbmUgTUFQX1NESG9zdENtZFNlbmQgXAorICAgICAgICBTREhvc3RDbWRTZW5kCisjZW5kaWYKKyNpZmRlZiBST01fU0RIb3N0SW50UmVnaXN0ZXIKKyNkZWZpbmUgTUFQX1NESG9zdEludFJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX1NESG9zdEludFJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfU0RIb3N0SW50UmVnaXN0ZXIgXAorICAgICAgICBTREhvc3RJbnRSZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX1NESG9zdEludFVucmVnaXN0ZXIKKyNkZWZpbmUgTUFQX1NESG9zdEludFVucmVnaXN0ZXIgXAorICAgICAgICBST01fU0RIb3N0SW50VW5yZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX1NESG9zdEludFVucmVnaXN0ZXIgXAorICAgICAgICBTREhvc3RJbnRVbnJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fU0RIb3N0SW50RW5hYmxlCisjZGVmaW5lIE1BUF9TREhvc3RJbnRFbmFibGUgXAorICAgICAgICBST01fU0RIb3N0SW50RW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfU0RIb3N0SW50RW5hYmxlIFwKKyAgICAgICAgU0RIb3N0SW50RW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fU0RIb3N0SW50RGlzYWJsZQorI2RlZmluZSBNQVBfU0RIb3N0SW50RGlzYWJsZSBcCisgICAgICAgIFJPTV9TREhvc3RJbnREaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfU0RIb3N0SW50RGlzYWJsZSBcCisgICAgICAgIFNESG9zdEludERpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TREhvc3RJbnRTdGF0dXMKKyNkZWZpbmUgTUFQX1NESG9zdEludFN0YXR1cyBcCisgICAgICAgIFJPTV9TREhvc3RJbnRTdGF0dXMKKyNlbHNlCisjZGVmaW5lIE1BUF9TREhvc3RJbnRTdGF0dXMgXAorICAgICAgICBTREhvc3RJbnRTdGF0dXMKKyNlbmRpZgorI2lmZGVmIFJPTV9TREhvc3RJbnRDbGVhcgorI2RlZmluZSBNQVBfU0RIb3N0SW50Q2xlYXIgXAorICAgICAgICBST01fU0RIb3N0SW50Q2xlYXIKKyNlbHNlCisjZGVmaW5lIE1BUF9TREhvc3RJbnRDbGVhciBcCisgICAgICAgIFNESG9zdEludENsZWFyCisjZW5kaWYKKyNpZmRlZiBST01fU0RIb3N0UmVzcEdldAorI2RlZmluZSBNQVBfU0RIb3N0UmVzcEdldCBcCisgICAgICAgIFJPTV9TREhvc3RSZXNwR2V0CisjZWxzZQorI2RlZmluZSBNQVBfU0RIb3N0UmVzcEdldCBcCisgICAgICAgIFNESG9zdFJlc3BHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9TREhvc3RCbG9ja1NpemVTZXQKKyNkZWZpbmUgTUFQX1NESG9zdEJsb2NrU2l6ZVNldCBcCisgICAgICAgIFJPTV9TREhvc3RCbG9ja1NpemVTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9TREhvc3RCbG9ja1NpemVTZXQgXAorICAgICAgICBTREhvc3RCbG9ja1NpemVTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9TREhvc3RCbG9ja0NvdW50U2V0CisjZGVmaW5lIE1BUF9TREhvc3RCbG9ja0NvdW50U2V0IFwKKyAgICAgICAgUk9NX1NESG9zdEJsb2NrQ291bnRTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9TREhvc3RCbG9ja0NvdW50U2V0IFwKKyAgICAgICAgU0RIb3N0QmxvY2tDb3VudFNldAorI2VuZGlmCisjaWZkZWYgUk9NX1NESG9zdERhdGFOb25CbG9ja2luZ1dyaXRlCisjZGVmaW5lIE1BUF9TREhvc3REYXRhTm9uQmxvY2tpbmdXcml0ZSBcCisgICAgICAgIFJPTV9TREhvc3REYXRhTm9uQmxvY2tpbmdXcml0ZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1NESG9zdERhdGFOb25CbG9ja2luZ1dyaXRlIFwKKyAgICAgICAgU0RIb3N0RGF0YU5vbkJsb2NraW5nV3JpdGUKKyNlbmRpZgorI2lmZGVmIFJPTV9TREhvc3REYXRhTm9uQmxvY2tpbmdSZWFkCisjZGVmaW5lIE1BUF9TREhvc3REYXRhTm9uQmxvY2tpbmdSZWFkIFwKKyAgICAgICAgUk9NX1NESG9zdERhdGFOb25CbG9ja2luZ1JlYWQKKyNlbHNlCisjZGVmaW5lIE1BUF9TREhvc3REYXRhTm9uQmxvY2tpbmdSZWFkIFwKKyAgICAgICAgU0RIb3N0RGF0YU5vbkJsb2NraW5nUmVhZAorI2VuZGlmCisjaWZkZWYgUk9NX1NESG9zdERhdGFXcml0ZQorI2RlZmluZSBNQVBfU0RIb3N0RGF0YVdyaXRlIFwKKyAgICAgICAgUk9NX1NESG9zdERhdGFXcml0ZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1NESG9zdERhdGFXcml0ZSBcCisgICAgICAgIFNESG9zdERhdGFXcml0ZQorI2VuZGlmCisjaWZkZWYgUk9NX1NESG9zdERhdGFSZWFkCisjZGVmaW5lIE1BUF9TREhvc3REYXRhUmVhZCBcCisgICAgICAgIFJPTV9TREhvc3REYXRhUmVhZAorI2Vsc2UKKyNkZWZpbmUgTUFQX1NESG9zdERhdGFSZWFkIFwKKyAgICAgICAgU0RIb3N0RGF0YVJlYWQKKyNlbmRpZgorI2lmZGVmIFJPTV9TREhvc3RTZXRFeHBDbGsKKyNkZWZpbmUgTUFQX1NESG9zdFNldEV4cENsayBcCisgICAgICAgIFJPTV9TREhvc3RTZXRFeHBDbGsKKyNlbHNlCisjZGVmaW5lIE1BUF9TREhvc3RTZXRFeHBDbGsgXAorICAgICAgICBTREhvc3RTZXRFeHBDbGsKKyNlbmRpZgorI2lmZGVmIFJPTV9TREhvc3RDYXJkRXJyb3JNYXNrU2V0CisjZGVmaW5lIE1BUF9TREhvc3RDYXJkRXJyb3JNYXNrU2V0IFwKKyAgICAgICAgUk9NX1NESG9zdENhcmRFcnJvck1hc2tTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9TREhvc3RDYXJkRXJyb3JNYXNrU2V0IFwKKyAgICAgICAgU0RIb3N0Q2FyZEVycm9yTWFza1NldAorI2VuZGlmCisjaWZkZWYgUk9NX1NESG9zdENhcmRFcnJvck1hc2tHZXQKKyNkZWZpbmUgTUFQX1NESG9zdENhcmRFcnJvck1hc2tHZXQgXAorICAgICAgICBST01fU0RIb3N0Q2FyZEVycm9yTWFza0dldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1NESG9zdENhcmRFcnJvck1hc2tHZXQgXAorICAgICAgICBTREhvc3RDYXJkRXJyb3JNYXNrR2V0CisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgdGhlIFBSQ00gQVBJLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBST01fUFJDTU1DVVJlc2V0CisjZGVmaW5lIE1BUF9QUkNNTUNVUmVzZXQgXAorICAgICAgICBST01fUFJDTU1DVVJlc2V0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTU1DVVJlc2V0IFwKKyAgICAgICAgUFJDTU1DVVJlc2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTVN5c1Jlc2V0Q2F1c2VHZXQKKyNkZWZpbmUgTUFQX1BSQ01TeXNSZXNldENhdXNlR2V0IFwKKyAgICAgICAgUk9NX1BSQ01TeXNSZXNldENhdXNlR2V0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTVN5c1Jlc2V0Q2F1c2VHZXQgXAorICAgICAgICBQUkNNU3lzUmVzZXRDYXVzZUdldAorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01QZXJpcGhlcmFsQ2xrRW5hYmxlCisjZGVmaW5lIE1BUF9QUkNNUGVyaXBoZXJhbENsa0VuYWJsZSBcCisgICAgICAgIFJPTV9QUkNNUGVyaXBoZXJhbENsa0VuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01QZXJpcGhlcmFsQ2xrRW5hYmxlIFwKKyAgICAgICAgUFJDTVBlcmlwaGVyYWxDbGtFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNUGVyaXBoZXJhbENsa0Rpc2FibGUKKyNkZWZpbmUgTUFQX1BSQ01QZXJpcGhlcmFsQ2xrRGlzYWJsZSBcCisgICAgICAgIFJPTV9QUkNNUGVyaXBoZXJhbENsa0Rpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNUGVyaXBoZXJhbENsa0Rpc2FibGUgXAorICAgICAgICBQUkNNUGVyaXBoZXJhbENsa0Rpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNUGVyaXBoZXJhbFJlc2V0CisjZGVmaW5lIE1BUF9QUkNNUGVyaXBoZXJhbFJlc2V0IFwKKyAgICAgICAgUk9NX1BSQ01QZXJpcGhlcmFsUmVzZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNUGVyaXBoZXJhbFJlc2V0IFwKKyAgICAgICAgUFJDTVBlcmlwaGVyYWxSZXNldAorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01QZXJpcGhlcmFsU3RhdHVzR2V0CisjZGVmaW5lIE1BUF9QUkNNUGVyaXBoZXJhbFN0YXR1c0dldCBcCisgICAgICAgIFJPTV9QUkNNUGVyaXBoZXJhbFN0YXR1c0dldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01QZXJpcGhlcmFsU3RhdHVzR2V0IFwKKyAgICAgICAgUFJDTVBlcmlwaGVyYWxTdGF0dXNHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNSTJTQ2xvY2tGcmVxU2V0CisjZGVmaW5lIE1BUF9QUkNNSTJTQ2xvY2tGcmVxU2V0IFwKKyAgICAgICAgUk9NX1BSQ01JMlNDbG9ja0ZyZXFTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNSTJTQ2xvY2tGcmVxU2V0IFwKKyAgICAgICAgUFJDTUkyU0Nsb2NrRnJlcVNldAorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01QZXJpcGhlcmFsQ2xvY2tHZXQKKyNkZWZpbmUgTUFQX1BSQ01QZXJpcGhlcmFsQ2xvY2tHZXQgXAorICAgICAgICBST01fUFJDTVBlcmlwaGVyYWxDbG9ja0dldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01QZXJpcGhlcmFsQ2xvY2tHZXQgXAorICAgICAgICBQUkNNUGVyaXBoZXJhbENsb2NrR2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTVNsZWVwRW50ZXIKKyNkZWZpbmUgTUFQX1BSQ01TbGVlcEVudGVyIFwKKyAgICAgICAgUk9NX1BSQ01TbGVlcEVudGVyCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTVNsZWVwRW50ZXIgXAorICAgICAgICBQUkNNU2xlZXBFbnRlcgorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01TUkFNUmV0ZW50aW9uRW5hYmxlCisjZGVmaW5lIE1BUF9QUkNNU1JBTVJldGVudGlvbkVuYWJsZSBcCisgICAgICAgIFJPTV9QUkNNU1JBTVJldGVudGlvbkVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01TUkFNUmV0ZW50aW9uRW5hYmxlIFwKKyAgICAgICAgUFJDTVNSQU1SZXRlbnRpb25FbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNU1JBTVJldGVudGlvbkRpc2FibGUKKyNkZWZpbmUgTUFQX1BSQ01TUkFNUmV0ZW50aW9uRGlzYWJsZSBcCisgICAgICAgIFJPTV9QUkNNU1JBTVJldGVudGlvbkRpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNU1JBTVJldGVudGlvbkRpc2FibGUgXAorICAgICAgICBQUkNNU1JBTVJldGVudGlvbkRpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNTFBEU0VudGVyCisjZGVmaW5lIE1BUF9QUkNNTFBEU0VudGVyIFwKKyAgICAgICAgUk9NX1BSQ01MUERTRW50ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNTFBEU0VudGVyIFwKKyAgICAgICAgUFJDTUxQRFNFbnRlcgorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01MUERTSW50ZXJ2YWxTZXQKKyNkZWZpbmUgTUFQX1BSQ01MUERTSW50ZXJ2YWxTZXQgXAorICAgICAgICBST01fUFJDTUxQRFNJbnRlcnZhbFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01MUERTSW50ZXJ2YWxTZXQgXAorICAgICAgICBQUkNNTFBEU0ludGVydmFsU2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUxQRFNXYWtldXBTb3VyY2VFbmFibGUKKyNkZWZpbmUgTUFQX1BSQ01MUERTV2FrZXVwU291cmNlRW5hYmxlIFwKKyAgICAgICAgUk9NX1BSQ01MUERTV2FrZXVwU291cmNlRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUxQRFNXYWtldXBTb3VyY2VFbmFibGUgXAorICAgICAgICBQUkNNTFBEU1dha2V1cFNvdXJjZUVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01MUERTV2FrZXVwQ2F1c2VHZXQKKyNkZWZpbmUgTUFQX1BSQ01MUERTV2FrZXVwQ2F1c2VHZXQgXAorICAgICAgICBST01fUFJDTUxQRFNXYWtldXBDYXVzZUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01MUERTV2FrZXVwQ2F1c2VHZXQgXAorICAgICAgICBQUkNNTFBEU1dha2V1cENhdXNlR2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUxQRFNXYWtlVXBHUElPU2VsZWN0CisjZGVmaW5lIE1BUF9QUkNNTFBEU1dha2VVcEdQSU9TZWxlY3QgXAorICAgICAgICBST01fUFJDTUxQRFNXYWtlVXBHUElPU2VsZWN0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUxQRFNXYWtlVXBHUElPU2VsZWN0IFwKKyAgICAgICAgUFJDTUxQRFNXYWtlVXBHUElPU2VsZWN0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUxQRFNXYWtldXBTb3VyY2VEaXNhYmxlCisjZGVmaW5lIE1BUF9QUkNNTFBEU1dha2V1cFNvdXJjZURpc2FibGUgXAorICAgICAgICBST01fUFJDTUxQRFNXYWtldXBTb3VyY2VEaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUxQRFNXYWtldXBTb3VyY2VEaXNhYmxlIFwKKyAgICAgICAgUFJDTUxQRFNXYWtldXBTb3VyY2VEaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUhpYmVybmF0ZUVudGVyCisjZGVmaW5lIE1BUF9QUkNNSGliZXJuYXRlRW50ZXIgXAorICAgICAgICBST01fUFJDTUhpYmVybmF0ZUVudGVyCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUhpYmVybmF0ZUVudGVyIFwKKyAgICAgICAgUFJDTUhpYmVybmF0ZUVudGVyCisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUhpYmVybmF0ZVdha2V1cFNvdXJjZUVuYWJsZQorI2RlZmluZSBNQVBfUFJDTUhpYmVybmF0ZVdha2V1cFNvdXJjZUVuYWJsZSBcCisgICAgICAgIFJPTV9QUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUhpYmVybmF0ZVdha2V1cFNvdXJjZUVuYWJsZSBcCisgICAgICAgIFBSQ01IaWJlcm5hdGVXYWtldXBTb3VyY2VFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNSGliZXJuYXRlV2FrZXVwQ2F1c2VHZXQKKyNkZWZpbmUgTUFQX1BSQ01IaWJlcm5hdGVXYWtldXBDYXVzZUdldCBcCisgICAgICAgIFJPTV9QUkNNSGliZXJuYXRlV2FrZXVwQ2F1c2VHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNSGliZXJuYXRlV2FrZXVwQ2F1c2VHZXQgXAorICAgICAgICBQUkNNSGliZXJuYXRlV2FrZXVwQ2F1c2VHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNSGliZXJuYXRlV2FrZVVwR1BJT1NlbGVjdAorI2RlZmluZSBNQVBfUFJDTUhpYmVybmF0ZVdha2VVcEdQSU9TZWxlY3QgXAorICAgICAgICBST01fUFJDTUhpYmVybmF0ZVdha2VVcEdQSU9TZWxlY3QKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNSGliZXJuYXRlV2FrZVVwR1BJT1NlbGVjdCBcCisgICAgICAgIFBSQ01IaWJlcm5hdGVXYWtlVXBHUElPU2VsZWN0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUhpYmVybmF0ZVdha2V1cFNvdXJjZURpc2FibGUKKyNkZWZpbmUgTUFQX1BSQ01IaWJlcm5hdGVXYWtldXBTb3VyY2VEaXNhYmxlIFwKKyAgICAgICAgUk9NX1BSQ01IaWJlcm5hdGVXYWtldXBTb3VyY2VEaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUhpYmVybmF0ZVdha2V1cFNvdXJjZURpc2FibGUgXAorICAgICAgICBQUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01IaWJlcm5hdGVJbnRlcnZhbFNldAorI2RlZmluZSBNQVBfUFJDTUhpYmVybmF0ZUludGVydmFsU2V0IFwKKyAgICAgICAgUk9NX1BSQ01IaWJlcm5hdGVJbnRlcnZhbFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01IaWJlcm5hdGVJbnRlcnZhbFNldCBcCisgICAgICAgIFBSQ01IaWJlcm5hdGVJbnRlcnZhbFNldAorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01TbG93Q2xrQ3RyR2V0CisjZGVmaW5lIE1BUF9QUkNNU2xvd0Nsa0N0ckdldCBcCisgICAgICAgIFJPTV9QUkNNU2xvd0Nsa0N0ckdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01TbG93Q2xrQ3RyR2V0IFwKKyAgICAgICAgUFJDTVNsb3dDbGtDdHJHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNU2xvd0Nsa0N0ck1hdGNoU2V0CisjZGVmaW5lIE1BUF9QUkNNU2xvd0Nsa0N0ck1hdGNoU2V0IFwKKyAgICAgICAgUk9NX1BSQ01TbG93Q2xrQ3RyTWF0Y2hTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNU2xvd0Nsa0N0ck1hdGNoU2V0IFwKKyAgICAgICAgUFJDTVNsb3dDbGtDdHJNYXRjaFNldAorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01TbG93Q2xrQ3RyTWF0Y2hHZXQKKyNkZWZpbmUgTUFQX1BSQ01TbG93Q2xrQ3RyTWF0Y2hHZXQgXAorICAgICAgICBST01fUFJDTVNsb3dDbGtDdHJNYXRjaEdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01TbG93Q2xrQ3RyTWF0Y2hHZXQgXAorICAgICAgICBQUkNNU2xvd0Nsa0N0ck1hdGNoR2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTU9DUlJlZ2lzdGVyV3JpdGUKKyNkZWZpbmUgTUFQX1BSQ01PQ1JSZWdpc3RlcldyaXRlIFwKKyAgICAgICAgUk9NX1BSQ01PQ1JSZWdpc3RlcldyaXRlCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTU9DUlJlZ2lzdGVyV3JpdGUgXAorICAgICAgICBQUkNNT0NSUmVnaXN0ZXJXcml0ZQorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01PQ1JSZWdpc3RlclJlYWQKKyNkZWZpbmUgTUFQX1BSQ01PQ1JSZWdpc3RlclJlYWQgXAorICAgICAgICBST01fUFJDTU9DUlJlZ2lzdGVyUmVhZAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01PQ1JSZWdpc3RlclJlYWQgXAorICAgICAgICBQUkNNT0NSUmVnaXN0ZXJSZWFkCisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUludFJlZ2lzdGVyCisjZGVmaW5lIE1BUF9QUkNNSW50UmVnaXN0ZXIgXAorICAgICAgICBST01fUFJDTUludFJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUludFJlZ2lzdGVyIFwKKyAgICAgICAgUFJDTUludFJlZ2lzdGVyCisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUludFVucmVnaXN0ZXIKKyNkZWZpbmUgTUFQX1BSQ01JbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX1BSQ01JbnRVbnJlZ2lzdGVyCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUludFVucmVnaXN0ZXIgXAorICAgICAgICBQUkNNSW50VW5yZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01JbnRFbmFibGUKKyNkZWZpbmUgTUFQX1BSQ01JbnRFbmFibGUgXAorICAgICAgICBST01fUFJDTUludEVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01JbnRFbmFibGUgXAorICAgICAgICBQUkNNSW50RW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUludERpc2FibGUKKyNkZWZpbmUgTUFQX1BSQ01JbnREaXNhYmxlIFwKKyAgICAgICAgUk9NX1BSQ01JbnREaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUludERpc2FibGUgXAorICAgICAgICBQUkNNSW50RGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01JbnRTdGF0dXMKKyNkZWZpbmUgTUFQX1BSQ01JbnRTdGF0dXMgXAorICAgICAgICBST01fUFJDTUludFN0YXR1cworI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01JbnRTdGF0dXMgXAorICAgICAgICBQUkNNSW50U3RhdHVzCisjZW5kaWYKKyNpZmRlZiBST01fUFJDTVJUQ0luVXNlU2V0CisjZGVmaW5lIE1BUF9QUkNNUlRDSW5Vc2VTZXQgXAorICAgICAgICBST01fUFJDTVJUQ0luVXNlU2V0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTVJUQ0luVXNlU2V0IFwKKyAgICAgICAgUFJDTVJUQ0luVXNlU2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTVJUQ0luVXNlR2V0CisjZGVmaW5lIE1BUF9QUkNNUlRDSW5Vc2VHZXQgXAorICAgICAgICBST01fUFJDTVJUQ0luVXNlR2V0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTVJUQ0luVXNlR2V0IFwKKyAgICAgICAgUFJDTVJUQ0luVXNlR2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTVJUQ1NldAorI2RlZmluZSBNQVBfUFJDTVJUQ1NldCBcCisgICAgICAgIFJPTV9QUkNNUlRDU2V0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTVJUQ1NldCBcCisgICAgICAgIFBSQ01SVENTZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNUlRDR2V0CisjZGVmaW5lIE1BUF9QUkNNUlRDR2V0IFwKKyAgICAgICAgUk9NX1BSQ01SVENHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNUlRDR2V0IFwKKyAgICAgICAgUFJDTVJUQ0dldAorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01SVENNYXRjaFNldAorI2RlZmluZSBNQVBfUFJDTVJUQ01hdGNoU2V0IFwKKyAgICAgICAgUk9NX1BSQ01SVENNYXRjaFNldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01SVENNYXRjaFNldCBcCisgICAgICAgIFBSQ01SVENNYXRjaFNldAorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01SVENNYXRjaEdldAorI2RlZmluZSBNQVBfUFJDTVJUQ01hdGNoR2V0IFwKKyAgICAgICAgUk9NX1BSQ01SVENNYXRjaEdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01SVENNYXRjaEdldCBcCisgICAgICAgIFBSQ01SVENNYXRjaEdldAorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01MUERTUmVzdG9yZUluZm9TZXQKKyNkZWZpbmUgTUFQX1BSQ01MUERTUmVzdG9yZUluZm9TZXQgXAorICAgICAgICBST01fUFJDTUxQRFNSZXN0b3JlSW5mb1NldAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01MUERTUmVzdG9yZUluZm9TZXQgXAorICAgICAgICBQUkNNTFBEU1Jlc3RvcmVJbmZvU2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTVNsb3dDbGtDdHJGYXN0R2V0CisjZGVmaW5lIE1BUF9QUkNNU2xvd0Nsa0N0ckZhc3RHZXQgXAorICAgICAgICBST01fUFJDTVNsb3dDbGtDdHJGYXN0R2V0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTVNsb3dDbGtDdHJGYXN0R2V0IFwKKyAgICAgICAgUFJDTVNsb3dDbGtDdHJGYXN0R2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUNDMzIwME1DVUluaXQKKyNkZWZpbmUgTUFQX1BSQ01DQzMyMDBNQ1VJbml0IFwKKyAgICAgICAgUk9NX1BSQ01DQzMyMDBNQ1VJbml0CisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUNDMzIwME1DVUluaXQgXAorICAgICAgICBQUkNNQ0MzMjAwTUNVSW5pdAorI2VuZGlmCisjaWZkZWYgUk9NX1BSQ01ISUJSZWdSZWFkCisjZGVmaW5lIE1BUF9QUkNNSElCUmVnUmVhZCBcCisgICAgICAgIFJPTV9QUkNNSElCUmVnUmVhZAorI2Vsc2UKKyNkZWZpbmUgTUFQX1BSQ01ISUJSZWdSZWFkIFwKKyAgICAgICAgUFJDTUhJQlJlZ1JlYWQKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNSElCUmVnV3JpdGUKKyNkZWZpbmUgTUFQX1BSQ01ISUJSZWdXcml0ZSBcCisgICAgICAgIFJPTV9QUkNNSElCUmVnV3JpdGUKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNSElCUmVnV3JpdGUgXAorICAgICAgICBQUkNNSElCUmVnV3JpdGUKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNQ2FtZXJhRnJlcVNldAorI2RlZmluZSBNQVBfUFJDTUNhbWVyYUZyZXFTZXQgXAorICAgICAgICBST01fUFJDTUNhbWVyYUZyZXFTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNQ2FtZXJhRnJlcVNldCBcCisgICAgICAgIFBSQ01DYW1lcmFGcmVxU2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUlPUmV0ZW50aW9uRW5hYmxlCisjZGVmaW5lIE1BUF9QUkNNSU9SZXRlbnRpb25FbmFibGUgXAorICAgICAgICBST01fUFJDTUlPUmV0ZW50aW9uRW5hYmxlCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUlPUmV0ZW50aW9uRW5hYmxlIFwKKyAgICAgICAgUFJDTUlPUmV0ZW50aW9uRW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUlPUmV0ZW50aW9uRGlzYWJsZQorI2RlZmluZSBNQVBfUFJDTUlPUmV0ZW50aW9uRGlzYWJsZSBcCisgICAgICAgIFJPTV9QUkNNSU9SZXRlbnRpb25EaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUlPUmV0ZW50aW9uRGlzYWJsZSBcCisgICAgICAgIFBSQ01JT1JldGVudGlvbkRpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9QUkNNRGV2aWNlVHlwZUdldAorI2RlZmluZSBNQVBfUFJDTURldmljZVR5cGVHZXQgXAorICAgICAgICBST01fUFJDTURldmljZVR5cGVHZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9QUkNNRGV2aWNlVHlwZUdldCBcCisgICAgICAgIFBSQ01EZXZpY2VUeXBlR2V0CisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUxQRFNFbnRlcktlZXBEZWJ1Z0lmCisjZGVmaW5lIE1BUF9QUkNNTFBEU0VudGVyS2VlcERlYnVnSWYgXAorICAgICAgICBST01fUFJDTUxQRFNFbnRlcktlZXBEZWJ1Z0lmCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUxQRFNFbnRlcktlZXBEZWJ1Z0lmIFwKKyAgICAgICAgUFJDTUxQRFNFbnRlcktlZXBEZWJ1Z0lmCisjZW5kaWYKKyNpZmRlZiBST01fUFJDTUhpYmVybmF0ZUN5Y2xlVHJpZ2dlcgorI2RlZmluZSBNQVBfUFJDTUhpYmVybmF0ZUN5Y2xlVHJpZ2dlciBcCisgICAgICAgIFJPTV9QUkNNSGliZXJuYXRlQ3ljbGVUcmlnZ2VyCisjZWxzZQorI2RlZmluZSBNQVBfUFJDTUhpYmVybmF0ZUN5Y2xlVHJpZ2dlciBcCisgICAgICAgIFBSQ01IaWJlcm5hdGVDeWNsZVRyaWdnZXIKKyNlbmRpZgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFjcm9zIGZvciB0aGUgSFdTUElOTE9DSyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIFJPTV9Id1NwaW5Mb2NrQWNxdWlyZQorI2RlZmluZSBNQVBfSHdTcGluTG9ja0FjcXVpcmUgXAorICAgICAgICBST01fSHdTcGluTG9ja0FjcXVpcmUKKyNlbHNlCisjZGVmaW5lIE1BUF9Id1NwaW5Mb2NrQWNxdWlyZSBcCisgICAgICAgIEh3U3BpbkxvY2tBY3F1aXJlCisjZW5kaWYKKyNpZmRlZiBST01fSHdTcGluTG9ja1RyeUFjcXVpcmUKKyNkZWZpbmUgTUFQX0h3U3BpbkxvY2tUcnlBY3F1aXJlIFwKKyAgICAgICAgUk9NX0h3U3BpbkxvY2tUcnlBY3F1aXJlCisjZWxzZQorI2RlZmluZSBNQVBfSHdTcGluTG9ja1RyeUFjcXVpcmUgXAorICAgICAgICBId1NwaW5Mb2NrVHJ5QWNxdWlyZQorI2VuZGlmCisjaWZkZWYgUk9NX0h3U3BpbkxvY2tSZWxlYXNlCisjZGVmaW5lIE1BUF9Id1NwaW5Mb2NrUmVsZWFzZSBcCisgICAgICAgIFJPTV9Id1NwaW5Mb2NrUmVsZWFzZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0h3U3BpbkxvY2tSZWxlYXNlIFwKKyAgICAgICAgSHdTcGluTG9ja1JlbGVhc2UKKyNlbmRpZgorI2lmZGVmIFJPTV9Id1NwaW5Mb2NrVGVzdAorI2RlZmluZSBNQVBfSHdTcGluTG9ja1Rlc3QgXAorICAgICAgICBST01fSHdTcGluTG9ja1Rlc3QKKyNlbHNlCisjZGVmaW5lIE1BUF9Id1NwaW5Mb2NrVGVzdCBcCisgICAgICAgIEh3U3BpbkxvY2tUZXN0CisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgdGhlIEFEQyBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIFJPTV9BRENFbmFibGUKKyNkZWZpbmUgTUFQX0FEQ0VuYWJsZSBcCisgICAgICAgIFJPTV9BRENFbmFibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9BRENFbmFibGUgXAorICAgICAgICBBRENFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9BRENEaXNhYmxlCisjZGVmaW5lIE1BUF9BRENEaXNhYmxlIFwKKyAgICAgICAgUk9NX0FEQ0Rpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9BRENEaXNhYmxlIFwKKyAgICAgICAgQURDRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0FEQ0NoYW5uZWxFbmFibGUKKyNkZWZpbmUgTUFQX0FEQ0NoYW5uZWxFbmFibGUgXAorICAgICAgICBST01fQURDQ2hhbm5lbEVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0FEQ0NoYW5uZWxFbmFibGUgXAorICAgICAgICBBRENDaGFubmVsRW5hYmxlCisjZW5kaWYKKyNpZmRlZiBST01fQURDQ2hhbm5lbERpc2FibGUKKyNkZWZpbmUgTUFQX0FEQ0NoYW5uZWxEaXNhYmxlIFwKKyAgICAgICAgUk9NX0FEQ0NoYW5uZWxEaXNhYmxlCisjZWxzZQorI2RlZmluZSBNQVBfQURDQ2hhbm5lbERpc2FibGUgXAorICAgICAgICBBRENDaGFubmVsRGlzYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0FEQ0ludFJlZ2lzdGVyCisjZGVmaW5lIE1BUF9BRENJbnRSZWdpc3RlciBcCisgICAgICAgIFJPTV9BRENJbnRSZWdpc3RlcgorI2Vsc2UKKyNkZWZpbmUgTUFQX0FEQ0ludFJlZ2lzdGVyIFwKKyAgICAgICAgQURDSW50UmVnaXN0ZXIKKyNlbmRpZgorI2lmZGVmIFJPTV9BRENJbnRVbnJlZ2lzdGVyCisjZGVmaW5lIE1BUF9BRENJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgUk9NX0FEQ0ludFVucmVnaXN0ZXIKKyNlbHNlCisjZGVmaW5lIE1BUF9BRENJbnRVbnJlZ2lzdGVyIFwKKyAgICAgICAgQURDSW50VW5yZWdpc3RlcgorI2VuZGlmCisjaWZkZWYgUk9NX0FEQ0ludEVuYWJsZQorI2RlZmluZSBNQVBfQURDSW50RW5hYmxlIFwKKyAgICAgICAgUk9NX0FEQ0ludEVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0FEQ0ludEVuYWJsZSBcCisgICAgICAgIEFEQ0ludEVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0FEQ0ludERpc2FibGUKKyNkZWZpbmUgTUFQX0FEQ0ludERpc2FibGUgXAorICAgICAgICBST01fQURDSW50RGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0FEQ0ludERpc2FibGUgXAorICAgICAgICBBRENJbnREaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fQURDSW50U3RhdHVzCisjZGVmaW5lIE1BUF9BRENJbnRTdGF0dXMgXAorICAgICAgICBST01fQURDSW50U3RhdHVzCisjZWxzZQorI2RlZmluZSBNQVBfQURDSW50U3RhdHVzIFwKKyAgICAgICAgQURDSW50U3RhdHVzCisjZW5kaWYKKyNpZmRlZiBST01fQURDSW50Q2xlYXIKKyNkZWZpbmUgTUFQX0FEQ0ludENsZWFyIFwKKyAgICAgICAgUk9NX0FEQ0ludENsZWFyCisjZWxzZQorI2RlZmluZSBNQVBfQURDSW50Q2xlYXIgXAorICAgICAgICBBRENJbnRDbGVhcgorI2VuZGlmCisjaWZkZWYgUk9NX0FEQ0RNQUVuYWJsZQorI2RlZmluZSBNQVBfQURDRE1BRW5hYmxlIFwKKyAgICAgICAgUk9NX0FEQ0RNQUVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0FEQ0RNQUVuYWJsZSBcCisgICAgICAgIEFEQ0RNQUVuYWJsZQorI2VuZGlmCisjaWZkZWYgUk9NX0FEQ0RNQURpc2FibGUKKyNkZWZpbmUgTUFQX0FEQ0RNQURpc2FibGUgXAorICAgICAgICBST01fQURDRE1BRGlzYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0FEQ0RNQURpc2FibGUgXAorICAgICAgICBBRENETUFEaXNhYmxlCisjZW5kaWYKKyNpZmRlZiBST01fQURDVGltZXJDb25maWcKKyNkZWZpbmUgTUFQX0FEQ1RpbWVyQ29uZmlnIFwKKyAgICAgICAgUk9NX0FEQ1RpbWVyQ29uZmlnCisjZWxzZQorI2RlZmluZSBNQVBfQURDVGltZXJDb25maWcgXAorICAgICAgICBBRENUaW1lckNvbmZpZworI2VuZGlmCisjaWZkZWYgUk9NX0FEQ1RpbWVyRW5hYmxlCisjZGVmaW5lIE1BUF9BRENUaW1lckVuYWJsZSBcCisgICAgICAgIFJPTV9BRENUaW1lckVuYWJsZQorI2Vsc2UKKyNkZWZpbmUgTUFQX0FEQ1RpbWVyRW5hYmxlIFwKKyAgICAgICAgQURDVGltZXJFbmFibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9BRENUaW1lckRpc2FibGUKKyNkZWZpbmUgTUFQX0FEQ1RpbWVyRGlzYWJsZSBcCisgICAgICAgIFJPTV9BRENUaW1lckRpc2FibGUKKyNlbHNlCisjZGVmaW5lIE1BUF9BRENUaW1lckRpc2FibGUgXAorICAgICAgICBBRENUaW1lckRpc2FibGUKKyNlbmRpZgorI2lmZGVmIFJPTV9BRENUaW1lclJlc2V0CisjZGVmaW5lIE1BUF9BRENUaW1lclJlc2V0IFwKKyAgICAgICAgUk9NX0FEQ1RpbWVyUmVzZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9BRENUaW1lclJlc2V0IFwKKyAgICAgICAgQURDVGltZXJSZXNldAorI2VuZGlmCisjaWZkZWYgUk9NX0FEQ1RpbWVyVmFsdWVHZXQKKyNkZWZpbmUgTUFQX0FEQ1RpbWVyVmFsdWVHZXQgXAorICAgICAgICBST01fQURDVGltZXJWYWx1ZUdldAorI2Vsc2UKKyNkZWZpbmUgTUFQX0FEQ1RpbWVyVmFsdWVHZXQgXAorICAgICAgICBBRENUaW1lclZhbHVlR2V0CisjZW5kaWYKKyNpZmRlZiBST01fQURDRklGT0x2bEdldAorI2RlZmluZSBNQVBfQURDRklGT0x2bEdldCBcCisgICAgICAgIFJPTV9BRENGSUZPTHZsR2V0CisjZWxzZQorI2RlZmluZSBNQVBfQURDRklGT0x2bEdldCBcCisgICAgICAgIEFEQ0ZJRk9MdmxHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9BRENGSUZPUmVhZAorI2RlZmluZSBNQVBfQURDRklGT1JlYWQgXAorICAgICAgICBST01fQURDRklGT1JlYWQKKyNlbHNlCisjZGVmaW5lIE1BUF9BRENGSUZPUmVhZCBcCisgICAgICAgIEFEQ0ZJRk9SZWFkCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgdGhlIENQVSBBUEkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIFJPTV9DUFVjcHNpZAorI2RlZmluZSBNQVBfQ1BVY3BzaWQgXAorICAgICAgICBST01fQ1BVY3BzaWQKKyNlbHNlCisjZGVmaW5lIE1BUF9DUFVjcHNpZCBcCisgICAgICAgIENQVWNwc2lkCisjZW5kaWYKKyNpZmRlZiBST01fQ1BVY3BzaWUKKyNkZWZpbmUgTUFQX0NQVWNwc2llIFwKKyAgICAgICAgUk9NX0NQVWNwc2llCisjZWxzZQorI2RlZmluZSBNQVBfQ1BVY3BzaWUgXAorICAgICAgICBDUFVjcHNpZQorI2VuZGlmCisjaWZkZWYgUk9NX0NQVXByaW1hc2sKKyNkZWZpbmUgTUFQX0NQVXByaW1hc2sgXAorICAgICAgICBST01fQ1BVcHJpbWFzaworI2Vsc2UKKyNkZWZpbmUgTUFQX0NQVXByaW1hc2sgXAorICAgICAgICBDUFVwcmltYXNrCisjZW5kaWYKKyNpZmRlZiBST01fQ1BVd2ZpCisjZGVmaW5lIE1BUF9DUFV3ZmkgXAorICAgICAgICBST01fQ1BVd2ZpCisjZWxzZQorI2RlZmluZSBNQVBfQ1BVd2ZpIFwKKyAgICAgICAgQ1BVd2ZpCisjZW5kaWYKKyNpZmRlZiBST01fQ1BVYmFzZXByaUdldAorI2RlZmluZSBNQVBfQ1BVYmFzZXByaUdldCBcCisgICAgICAgIFJPTV9DUFViYXNlcHJpR2V0CisjZWxzZQorI2RlZmluZSBNQVBfQ1BVYmFzZXByaUdldCBcCisgICAgICAgIENQVWJhc2VwcmlHZXQKKyNlbmRpZgorI2lmZGVmIFJPTV9DUFViYXNlcHJpU2V0CisjZGVmaW5lIE1BUF9DUFViYXNlcHJpU2V0IFwKKyAgICAgICAgUk9NX0NQVWJhc2VwcmlTZXQKKyNlbHNlCisjZGVmaW5lIE1BUF9DUFViYXNlcHJpU2V0IFwKKyAgICAgICAgQ1BVYmFzZXByaVNldAorI2VuZGlmCisKKyNlbmRpZiAvLyBfX1JPTV9NQVBfSF9fCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvcm9tX3BhdGNoLmggYi9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvcm9tX3BhdGNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjczM2VjNAotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi9yb21fcGF0Y2guaApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCisgKgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKgorICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyAgcm9tX3BhdGNoLmggLSBNYWNyb3MgdG8gZmFjaWxpdGF0ZSBwYXRjaGluZyBkcml2ZXJsaWIgQVBJJ3MgaW4gdGhlIFJPTS4KKy8vCisvLworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTGlzdCBvZiBBUEkncyBpbiB0aGUgUk9NIHRoYXQgbmVlZCB0byBiZSBwYXRjaGVkLgorLy8gRm9yIGUuZy4gdG8gcGF0Y2ggUk9NX1VBUlRDaGFyUHV0IGFkZCB0aGUgbGluZSAjdW5kZWYgUk9NX1VBUlRDaGFyUHV0CisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyNpZm5kZWYgX19ST01fUEFUQ0hfSF9fCisjZGVmaW5lIF9fUk9NX1BBVENIX0hfXworCisjaWYgZGVmaW5lZChUQVJHRVRfSVNfQ0MzMjAwKSB8fCBkZWZpbmVkKFVTRV9DQzMyMDBfUk9NX0RSVl9BUEkpCisjdW5kZWYgUk9NX0FEQ0ludENsZWFyCisjdW5kZWYgUk9NX0ludEVuYWJsZQorI3VuZGVmIFJPTV9JbnREaXNhYmxlCisjdW5kZWYgUk9NX0ludFBlbmRTZXQKKyN1bmRlZiBST01fU0RIb3N0Q2FyZEVycm9yTWFza1NldAorI3VuZGVmIFJPTV9TREhvc3RDYXJkRXJyb3JNYXNrR2V0CisjdW5kZWYgUk9NX1RpbWVyQ29uZmlndXJlCisjdW5kZWYgUk9NX1RpbWVyRE1BRXZlbnRTZXQKKyN1bmRlZiBST01fVGltZXJETUFFdmVudEdldAorI3VuZGVmIFJPTV9TREhvc3REYXRhTm9uQmxvY2tpbmdXcml0ZQorI3VuZGVmIFJPTV9TREhvc3REYXRhV3JpdGUKKyN1bmRlZiBST01fU0RIb3N0RGF0YVJlYWQKKyN1bmRlZiBST01fU0RIb3N0RGF0YU5vbkJsb2NraW5nUmVhZAorI3VuZGVmIFJPTV9QUkNNU3lzUmVzZXRDYXVzZUdldAorI3VuZGVmIFJPTV9QUkNNUGVyaXBoZXJhbENsa0VuYWJsZQorI3VuZGVmIFJPTV9QUkNNTFBEU1dha2VVcEdQSU9TZWxlY3QKKyN1bmRlZiBST01fUFJDTUhpYmVybmF0ZVdha2V1cFNvdXJjZUVuYWJsZQorI3VuZGVmIFJPTV9QUkNNSGliZXJuYXRlV2FrZXVwU291cmNlRGlzYWJsZQorI3VuZGVmIFJPTV9QUkNNSGliZXJuYXRlV2FrZXVwQ2F1c2VHZXQKKyN1bmRlZiBST01fUFJDTUhpYmVybmF0ZUludGVydmFsU2V0CisjdW5kZWYgUk9NX1BSQ01IaWJlcm5hdGVXYWtlVXBHUElPU2VsZWN0CisjdW5kZWYgUk9NX1BSQ01IaWJlcm5hdGVFbnRlcgorI3VuZGVmIFJPTV9QUkNNU2xvd0Nsa0N0ckdldAorI3VuZGVmIFJPTV9QUkNNU2xvd0Nsa0N0ck1hdGNoU2V0CisjdW5kZWYgUk9NX1BSQ01TbG93Q2xrQ3RyTWF0Y2hHZXQKKyN1bmRlZiBST01fUFJDTU9DUlJlZ2lzdGVyV3JpdGUKKyN1bmRlZiBST01fUFJDTU9DUlJlZ2lzdGVyUmVhZAorI3VuZGVmIFJPTV9QUkNNSW50RW5hYmxlCisjdW5kZWYgUk9NX1BSQ01JbnREaXNhYmxlCisjdW5kZWYgUk9NX1BSQ01SVENJblVzZVNldAorI3VuZGVmIFJPTV9QUkNNUlRDSW5Vc2VHZXQKKyN1bmRlZiBST01fUFJDTVJUQ1NldAorI3VuZGVmIFJPTV9QUkNNUlRDR2V0CisjdW5kZWYgUk9NX1BSQ01SVENNYXRjaFNldAorI3VuZGVmIFJPTV9QUkNNUlRDTWF0Y2hHZXQKKyN1bmRlZiBST01fUFJDTVBlcmlwaGVyYWxDbGtEaXNhYmxlCisjdW5kZWYgUk9NX1BSQ01QZXJpcGhlcmFsUmVzZXQKKyN1bmRlZiBST01fUFJDTVBlcmlwaGVyYWxTdGF0dXNHZXQKKyN1bmRlZiBST01fU1BJQ29uZmlnU2V0RXhwQ2xrCisjdW5kZWYgUk9NX0FFU0RhdGFQcm9jZXNzCisjdW5kZWYgUk9NX0RFU0RhdGFQcm9jZXNzCisjdW5kZWYgUk9NX0kyU0VuYWJsZQorI3VuZGVmIFJPTV9JMlNDb25maWdTZXRFeHBDbGsKKyN1bmRlZiBST01fUGluQ29uZmlnU2V0CisjdW5kZWYgUk9NX1BSQ01MUERTRW50ZXIKKyN1bmRlZiBST01fUFJDTUNDMzIwME1DVUluaXQKKyN1bmRlZiBST01fU0RIb3N0SW50U3RhdHVzCisjdW5kZWYgUk9NX1NESG9zdEJsb2NrQ291bnRTZXQKKyN1bmRlZiBST01fVUFSVE1vZGVtQ29udHJvbFNldAorI3VuZGVmIFJPTV9VQVJUTW9kZW1Db250cm9sQ2xlYXIKKyN1bmRlZiBST01fQ2FtZXJhWENsa1NldAorI3VuZGVmIFJPTV9QUkNNTUNVUmVzZXQKKyN1bmRlZiBST01fUFJDTVBlcmlwaGVyYWxDbGtFbmFibGUKKyN1bmRlZiBST01fU1BJRG1hRGlzYWJsZQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFVTRV9DQzMyMjBfUk9NX0RSVl9BUEkpCisjdW5kZWYgUk9NX1BSQ01EZXZpY2VUeXBlR2V0CisjdW5kZWYgUk9NX1NESG9zdERhdGFOb25CbG9ja2luZ1JlYWQKKyN1bmRlZiBST01fUFJDTUlPUmV0ZW50aW9uRW5hYmxlCisjdW5kZWYgUk9NX1BSQ01JT1JldGVudGlvbkRpc2FibGUKKyN1bmRlZiBST01fUFJDTUNDMzIwME1DVUluaXQKKyNlbmRpZgorCisjZW5kaWYgLy8gX19ST01fUEFUQ0hfSF9fCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvdWFydC5oIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL3VhcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDFmMTUwCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL3VhcnQuaApAQCAtMCwwICsxLDIzNSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCisgKgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKgorICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyAgdWFydC5oCisvLworLy8gIERlZmluZXMgYW5kIE1hY3JvcyBmb3IgdGhlIFVBUlQuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisjaWZuZGVmIF9fVUFSVF9IX18KKyNkZWZpbmUgX19VQVJUX0hfXworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gSWYgYnVpbGRpbmcgd2l0aCBhIEMrKyBjb21waWxlciwgbWFrZSBhbGwgb2YgdGhlIGRlZmluaXRpb25zIGluIHRoaXMgaGVhZGVyCisvLyBoYXZlIGEgQyBiaW5kaW5nLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgoreworI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIFVBUlRJbnRFbmFibGUsIFVBUlRJbnREaXNhYmxlLCBhbmQgVUFSVEludENsZWFyCisvLyBhcyB0aGUgdWxJbnRGbGFncyBwYXJhbWV0ZXIsIGFuZCByZXR1cm5lZCBmcm9tIFVBUlRJbnRTdGF0dXMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBVQVJUX0lOVF9ETUFUWCAgICAgICAgICAweDIwMDAwICAgICAvLyBETUEgVHggRG9uZSBpbnRlcnJ1cHQgTWFzaworI2RlZmluZSBVQVJUX0lOVF9ETUFSWCAgICAgICAgICAweDEwMDAwICAgICAvLyBETUEgUnggRG9uZSBpbnRlcnJ1cHQgTWFzaworI2RlZmluZSBVQVJUX0lOVF9FT1QgICAgICAgICAgICAweDgwMCAgICAgICAvLyBFbmQgb2YgdHJhbnNmZXIgaW50ZXJydXB0IE1hc2sKKyNkZWZpbmUgVUFSVF9JTlRfT0UgICAgICAgICAgICAgMHg0MDAgICAgICAgLy8gT3ZlcnJ1biBFcnJvciBJbnRlcnJ1cHQgTWFzaworI2RlZmluZSBVQVJUX0lOVF9CRSAgICAgICAgICAgICAweDIwMCAgICAgICAvLyBCcmVhayBFcnJvciBJbnRlcnJ1cHQgTWFzaworI2RlZmluZSBVQVJUX0lOVF9QRSAgICAgICAgICAgICAweDEwMCAgICAgICAvLyBQYXJpdHkgRXJyb3IgSW50ZXJydXB0IE1hc2sKKyNkZWZpbmUgVUFSVF9JTlRfRkUgICAgICAgICAgICAgMHgwODAgICAgICAgLy8gRnJhbWluZyBFcnJvciBJbnRlcnJ1cHQgTWFzaworI2RlZmluZSBVQVJUX0lOVF9SVCAgICAgICAgICAgICAweDA0MCAgICAgICAvLyBSZWNlaXZlIFRpbWVvdXQgSW50ZXJydXB0IE1hc2sKKyNkZWZpbmUgVUFSVF9JTlRfVFggICAgICAgICAgICAgMHgwMjAgICAgICAgLy8gVHJhbnNtaXQgSW50ZXJydXB0IE1hc2sKKyNkZWZpbmUgVUFSVF9JTlRfUlggICAgICAgICAgICAgMHgwMTAgICAgICAgLy8gUmVjZWl2ZSBJbnRlcnJ1cHQgTWFzaworI2RlZmluZSBVQVJUX0lOVF9DVFMgICAgICAgICAgICAweDAwMiAgICAgICAvLyBDVFMgTW9kZW0gSW50ZXJydXB0IE1hc2sKKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVmFsdWVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBVQVJUQ29uZmlnU2V0RXhwQ2xrIGFzIHRoZSB1bENvbmZpZyBwYXJhbWV0ZXIKKy8vIGFuZCByZXR1cm5lZCBieSBVQVJUQ29uZmlnR2V0RXhwQ2xrIGluIHRoZSBwdWxDb25maWcgcGFyYW1ldGVyLgorLy8gQWRkaXRpb25hbGx5LCB0aGUgVUFSVF9DT05GSUdfUEFSXyogc3Vic2V0IGNhbiBiZSBwYXNzZWQgdG8KKy8vIFVBUlRQYXJpdHlNb2RlU2V0IGFzIHRoZSB1bFBhcml0eSBwYXJhbWV0ZXIsIGFuZCBhcmUgcmV0dXJuZWQgYnkKKy8vIFVBUlRQYXJpdHlNb2RlR2V0LgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgVUFSVF9DT05GSUdfV0xFTl9NQVNLICAgMHgwMDAwMDA2MCAgLy8gTWFzayBmb3IgZXh0cmFjdGluZyB3b3JkIGxlbmd0aAorI2RlZmluZSBVQVJUX0NPTkZJR19XTEVOXzggICAgICAweDAwMDAwMDYwICAvLyA4IGJpdCBkYXRhCisjZGVmaW5lIFVBUlRfQ09ORklHX1dMRU5fNyAgICAgIDB4MDAwMDAwNDAgIC8vIDcgYml0IGRhdGEKKyNkZWZpbmUgVUFSVF9DT05GSUdfV0xFTl82ICAgICAgMHgwMDAwMDAyMCAgLy8gNiBiaXQgZGF0YQorI2RlZmluZSBVQVJUX0NPTkZJR19XTEVOXzUgICAgICAweDAwMDAwMDAwICAvLyA1IGJpdCBkYXRhCisjZGVmaW5lIFVBUlRfQ09ORklHX1NUT1BfTUFTSyAgIDB4MDAwMDAwMDggIC8vIE1hc2sgZm9yIGV4dHJhY3Rpbmcgc3RvcCBiaXRzCisjZGVmaW5lIFVBUlRfQ09ORklHX1NUT1BfT05FICAgIDB4MDAwMDAwMDAgIC8vIE9uZSBzdG9wIGJpdAorI2RlZmluZSBVQVJUX0NPTkZJR19TVE9QX1RXTyAgICAweDAwMDAwMDA4ICAvLyBUd28gc3RvcCBiaXRzCisjZGVmaW5lIFVBUlRfQ09ORklHX1BBUl9NQVNLICAgIDB4MDAwMDAwODYgIC8vIE1hc2sgZm9yIGV4dHJhY3RpbmcgcGFyaXR5CisjZGVmaW5lIFVBUlRfQ09ORklHX1BBUl9OT05FICAgIDB4MDAwMDAwMDAgIC8vIE5vIHBhcml0eQorI2RlZmluZSBVQVJUX0NPTkZJR19QQVJfRVZFTiAgICAweDAwMDAwMDA2ICAvLyBFdmVuIHBhcml0eQorI2RlZmluZSBVQVJUX0NPTkZJR19QQVJfT0REICAgICAweDAwMDAwMDAyICAvLyBPZGQgcGFyaXR5CisjZGVmaW5lIFVBUlRfQ09ORklHX1BBUl9PTkUgICAgIDB4MDAwMDAwODIgIC8vIFBhcml0eSBiaXQgaXMgb25lCisjZGVmaW5lIFVBUlRfQ09ORklHX1BBUl9aRVJPICAgIDB4MDAwMDAwODYgIC8vIFBhcml0eSBiaXQgaXMgemVybworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVmFsdWVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBVQVJURklGT0xldmVsU2V0IGFzIHRoZSB1bFR4TGV2ZWwgcGFyYW1ldGVyIGFuZAorLy8gcmV0dXJuZWQgYnkgVUFSVEZJRk9MZXZlbEdldCBpbiB0aGUgcHVsVHhMZXZlbC4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFVBUlRfRklGT19UWDFfOCAgICAgICAgIDB4MDAwMDAwMDAgIC8vIFRyYW5zbWl0IGludGVycnVwdCBhdCAxLzggRnVsbAorI2RlZmluZSBVQVJUX0ZJRk9fVFgyXzggICAgICAgICAweDAwMDAwMDAxICAvLyBUcmFuc21pdCBpbnRlcnJ1cHQgYXQgMS80IEZ1bGwKKyNkZWZpbmUgVUFSVF9GSUZPX1RYNF84ICAgICAgICAgMHgwMDAwMDAwMiAgLy8gVHJhbnNtaXQgaW50ZXJydXB0IGF0IDEvMiBGdWxsCisjZGVmaW5lIFVBUlRfRklGT19UWDZfOCAgICAgICAgIDB4MDAwMDAwMDMgIC8vIFRyYW5zbWl0IGludGVycnVwdCBhdCAzLzQgRnVsbAorI2RlZmluZSBVQVJUX0ZJRk9fVFg3XzggICAgICAgICAweDAwMDAwMDA0ICAvLyBUcmFuc21pdCBpbnRlcnJ1cHQgYXQgNy84IEZ1bGwKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFZhbHVlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gVUFSVEZJRk9MZXZlbFNldCBhcyB0aGUgdWxSeExldmVsIHBhcmFtZXRlciBhbmQKKy8vIHJldHVybmVkIGJ5IFVBUlRGSUZPTGV2ZWxHZXQgaW4gdGhlIHB1bFJ4TGV2ZWwuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBVQVJUX0ZJRk9fUlgxXzggICAgICAgICAweDAwMDAwMDAwICAvLyBSZWNlaXZlIGludGVycnVwdCBhdCAxLzggRnVsbAorI2RlZmluZSBVQVJUX0ZJRk9fUlgyXzggICAgICAgICAweDAwMDAwMDA4ICAvLyBSZWNlaXZlIGludGVycnVwdCBhdCAxLzQgRnVsbAorI2RlZmluZSBVQVJUX0ZJRk9fUlg0XzggICAgICAgICAweDAwMDAwMDEwICAvLyBSZWNlaXZlIGludGVycnVwdCBhdCAxLzIgRnVsbAorI2RlZmluZSBVQVJUX0ZJRk9fUlg2XzggICAgICAgICAweDAwMDAwMDE4ICAvLyBSZWNlaXZlIGludGVycnVwdCBhdCAzLzQgRnVsbAorI2RlZmluZSBVQVJUX0ZJRk9fUlg3XzggICAgICAgICAweDAwMDAwMDIwICAvLyBSZWNlaXZlIGludGVycnVwdCBhdCA3LzggRnVsbAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVmFsdWVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBVQVJURE1BRW5hYmxlKCkgYW5kIFVBUlRETUFEaXNhYmxlKCkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBVQVJUX0RNQV9FUlJfUlhTVE9QICAgICAweDAwMDAwMDA0ICAvLyBTdG9wIERNQSByZWNlaXZlIGlmIFVBUlQgZXJyb3IKKyNkZWZpbmUgVUFSVF9ETUFfVFggICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gRW5hYmxlIERNQSBmb3IgdHJhbnNtaXQKKyNkZWZpbmUgVUFSVF9ETUFfUlggICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gRW5hYmxlIERNQSBmb3IgcmVjZWl2ZQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVmFsdWVzIHJldHVybmVkIGZyb20gVUFSVFJ4RXJyb3JHZXQoKS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFVBUlRfUlhFUlJPUl9PVkVSUlVOICAgIDB4MDAwMDAwMDgKKyNkZWZpbmUgVUFSVF9SWEVSUk9SX0JSRUFLICAgICAgMHgwMDAwMDAwNAorI2RlZmluZSBVQVJUX1JYRVJST1JfUEFSSVRZICAgICAweDAwMDAwMDAyCisjZGVmaW5lIFVBUlRfUlhFUlJPUl9GUkFNSU5HICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFZhbHVlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gVUFSVE1vZGVtQ29udHJvbFNldCgpYW5kIFVBUlRNb2RlbUNvbnRyb2xDbGVhcigpCisvLyBvciByZXR1cm5lZCBmcm9tIFVBUlRNb2RlbUNvbnRyb2xHZXQoKS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFVBUlRfT1VUUFVUX1JUUyAgICAgICAgIDB4MDAwMDA4MDAKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFZhbHVlcyB0aGF0IGNhbiBiZSByZXR1cm5lZCBmcm9tIFVBUlRNb2RlbVN0YXR1c0dldCgpLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgVUFSVF9JTlBVVF9DVFMgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVmFsdWVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBVQVJURmxvd0NvbnRyb2woKSBvciByZXR1cm5lZCBmcm9tCisvLyBVQVJURmxvd0NvbnRyb2xHZXQoKS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIFVBUlRfRkxPV0NPTlRST0xfVFggICAgIDB4MDAwMDgwMDAKKyNkZWZpbmUgVUFSVF9GTE9XQ09OVFJPTF9SWCAgICAgMHgwMDAwNDAwMAorI2RlZmluZSBVQVJUX0ZMT1dDT05UUk9MX05PTkUgICAweDAwMDAwMDAwCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBWYWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIFVBUlRUeEludE1vZGVTZXQoKSBvciByZXR1cm5lZCBmcm9tCisvLyBVQVJUVHhJbnRNb2RlR2V0KCkuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBVQVJUX1RYSU5UX01PREVfRklGTyAgICAweDAwMDAwMDAwCisjZGVmaW5lIFVBUlRfVFhJTlRfTU9ERV9FT1QgICAgIDB4MDAwMDAwMTAKKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gQVBJIEZ1bmN0aW9uIHByb3RvdHlwZXMKKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitleHRlcm4gdm9pZCBVQVJUUGFyaXR5TW9kZVNldCh1bnNpZ25lZCBsb25nIHVsQmFzZSwgdW5zaWduZWQgbG9uZyB1bFBhcml0eSk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBVQVJUUGFyaXR5TW9kZUdldCh1bnNpZ25lZCBsb25nIHVsQmFzZSk7CitleHRlcm4gdm9pZCBVQVJURklGT0xldmVsU2V0KHVuc2lnbmVkIGxvbmcgdWxCYXNlLCB1bnNpZ25lZCBsb25nIHVsVHhMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bFJ4TGV2ZWwpOworZXh0ZXJuIHZvaWQgVUFSVEZJRk9MZXZlbEdldCh1bnNpZ25lZCBsb25nIHVsQmFzZSwgdW5zaWduZWQgbG9uZyAqcHVsVHhMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqcHVsUnhMZXZlbCk7CitleHRlcm4gdm9pZCBVQVJUQ29uZmlnU2V0RXhwQ2xrKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCB1bnNpZ25lZCBsb25nIHVsVUFSVENsaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bEJhdWQsIHVuc2lnbmVkIGxvbmcgdWxDb25maWcpOworZXh0ZXJuIHZvaWQgVUFSVENvbmZpZ0dldEV4cENsayh1bnNpZ25lZCBsb25nIHVsQmFzZSwgdW5zaWduZWQgbG9uZyB1bFVBUlRDbGssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnB1bEJhdWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnB1bENvbmZpZyk7CitleHRlcm4gdm9pZCBVQVJURW5hYmxlKHVuc2lnbmVkIGxvbmcgdWxCYXNlKTsKK2V4dGVybiB2b2lkIFVBUlREaXNhYmxlKHVuc2lnbmVkIGxvbmcgdWxCYXNlKTsKK2V4dGVybiB2b2lkIFVBUlRGSUZPRW5hYmxlKHVuc2lnbmVkIGxvbmcgdWxCYXNlKTsKK2V4dGVybiB2b2lkIFVBUlRGSUZPRGlzYWJsZSh1bnNpZ25lZCBsb25nIHVsQmFzZSk7CitleHRlcm4gdEJvb2xlYW4gVUFSVENoYXJzQXZhaWwodW5zaWduZWQgbG9uZyB1bEJhc2UpOworZXh0ZXJuIHRCb29sZWFuIFVBUlRTcGFjZUF2YWlsKHVuc2lnbmVkIGxvbmcgdWxCYXNlKTsKK2V4dGVybiBsb25nIFVBUlRDaGFyR2V0Tm9uQmxvY2tpbmcodW5zaWduZWQgbG9uZyB1bEJhc2UpOworZXh0ZXJuIGxvbmcgVUFSVENoYXJHZXQodW5zaWduZWQgbG9uZyB1bEJhc2UpOworZXh0ZXJuIHRCb29sZWFuIFVBUlRDaGFyUHV0Tm9uQmxvY2tpbmcodW5zaWduZWQgbG9uZyB1bEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHVjRGF0YSk7CitleHRlcm4gdm9pZCBVQVJUQ2hhclB1dCh1bnNpZ25lZCBsb25nIHVsQmFzZSwgdW5zaWduZWQgY2hhciB1Y0RhdGEpOworZXh0ZXJuIHZvaWQgVUFSVEJyZWFrQ3RsKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCB0Qm9vbGVhbiBiQnJlYWtTdGF0ZSk7CitleHRlcm4gdEJvb2xlYW4gVUFSVEJ1c3kodW5zaWduZWQgbG9uZyB1bEJhc2UpOworZXh0ZXJuIHZvaWQgVUFSVEludFJlZ2lzdGVyKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCB2b2lkKCpwZm5IYW5kbGVyKSh2b2lkKSk7CitleHRlcm4gdm9pZCBVQVJUSW50VW5yZWdpc3Rlcih1bnNpZ25lZCBsb25nIHVsQmFzZSk7CitleHRlcm4gdm9pZCBVQVJUSW50RW5hYmxlKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCB1bnNpZ25lZCBsb25nIHVsSW50RmxhZ3MpOworZXh0ZXJuIHZvaWQgVUFSVEludERpc2FibGUodW5zaWduZWQgbG9uZyB1bEJhc2UsIHVuc2lnbmVkIGxvbmcgdWxJbnRGbGFncyk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBVQVJUSW50U3RhdHVzKHVuc2lnbmVkIGxvbmcgdWxCYXNlLCB0Qm9vbGVhbiBiTWFza2VkKTsKK2V4dGVybiB2b2lkIFVBUlRJbnRDbGVhcih1bnNpZ25lZCBsb25nIHVsQmFzZSwgdW5zaWduZWQgbG9uZyB1bEludEZsYWdzKTsKK2V4dGVybiB2b2lkIFVBUlRETUFFbmFibGUodW5zaWduZWQgbG9uZyB1bEJhc2UsIHVuc2lnbmVkIGxvbmcgdWxETUFGbGFncyk7CitleHRlcm4gdm9pZCBVQVJURE1BRGlzYWJsZSh1bnNpZ25lZCBsb25nIHVsQmFzZSwgdW5zaWduZWQgbG9uZyB1bERNQUZsYWdzKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIFVBUlRSeEVycm9yR2V0KHVuc2lnbmVkIGxvbmcgdWxCYXNlKTsKK2V4dGVybiB2b2lkIFVBUlRSeEVycm9yQ2xlYXIodW5zaWduZWQgbG9uZyB1bEJhc2UpOworZXh0ZXJuIHZvaWQgVUFSVE1vZGVtQ29udHJvbFNldCh1bnNpZ25lZCBsb25nIHVsQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1bENvbnRyb2wpOworZXh0ZXJuIHZvaWQgVUFSVE1vZGVtQ29udHJvbENsZWFyKHVuc2lnbmVkIGxvbmcgdWxCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWxDb250cm9sKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIFVBUlRNb2RlbUNvbnRyb2xHZXQodW5zaWduZWQgbG9uZyB1bEJhc2UpOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgVUFSVE1vZGVtU3RhdHVzR2V0KHVuc2lnbmVkIGxvbmcgdWxCYXNlKTsKK2V4dGVybiB2b2lkIFVBUlRGbG93Q29udHJvbFNldCh1bnNpZ25lZCBsb25nIHVsQmFzZSwgdW5zaWduZWQgbG9uZyB1bE1vZGUpOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgVUFSVEZsb3dDb250cm9sR2V0KHVuc2lnbmVkIGxvbmcgdWxCYXNlKTsKK2V4dGVybiB2b2lkIFVBUlRUeEludE1vZGVTZXQodW5zaWduZWQgbG9uZyB1bEJhc2UsIHVuc2lnbmVkIGxvbmcgdWxNb2RlKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIFVBUlRUeEludE1vZGVHZXQodW5zaWduZWQgbG9uZyB1bEJhc2UpOworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFyayB0aGUgZW5kIG9mIHRoZSBDIGJpbmRpbmdzIHNlY3Rpb24gZm9yIEMrKyBjb21waWxlcnMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vICBfX1VBUlRfSF9fCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvdXRpbHMuYyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2RyaXZlcmxpYi91dGlscy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5N2NlYTYKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvdXRpbHMuYwpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCisgKgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKgorICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyAgdXRpbHMuYworLy8KKy8vICBVdGlsaXR5IEFQSXMKKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyEgXGFkZHRvZ3JvdXAgVXRpbHNfYXBpCisvLyEgQHsKKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaW5jbHVkZSAidXRpbHMuaCIKKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8hIFByb3ZpZGVzIGEgc21hbGwgZGVsYXkuCisvLyEKKy8vISBccGFyYW0gdWxDb3VudCBpcyB0aGUgbnVtYmVyIG9mIGRlbGF5IGxvb3AgaXRlcmF0aW9ucyB0byBwZXJmb3JtLgorLy8hCisvLyEgVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBhIG1lYW5zIG9mIGdlbmVyYXRpbmcgYSBjb25zdGFudCBsZW5ndGggZGVsYXkuICBJdAorLy8hIGlzIHdyaXR0ZW4gaW4gYXNzZW1ibHkgdG8ga2VlcCB0aGUgZGVsYXkgY29uc2lzdGVudCBhY3Jvc3MgdG9vbCBjaGFpbnMsCisvLyEgYXZvaWRpbmcgdGhlIG5lZWQgdG8gdHVuZSB0aGUgZGVsYXkgYmFzZWQgb24gdGhlIHRvb2wgY2hhaW4gaW4gdXNlLgorLy8hCisvLyEgVGhlIGxvb3AgdGFrZXMgMyBjeWNsZXMvbG9vcC4KKy8vIQorLy8hIFxyZXR1cm4gTm9uZS4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjaWYgZGVmaW5lZChld2FybSkgfHwgZGVmaW5lZChET1hZR0VOKQordm9pZAorVXRpbHNEZWxheSh1bnNpZ25lZCBsb25nIHVsQ291bnQpCit7CisgICAgX19hc20oIiAgICBzdWJzICAgIHIwLCAjMVxuIgorICAgICAgICAgICIgICAgYm5lLm4gICBVdGlsc0RlbGF5XG4iKTsKK30KKyNlbmRpZgorCisjaWYgZGVmaW5lZChnY2MpCit2b2lkIF9fYXR0cmlidXRlX18oKG5ha2VkKSkKK1V0aWxzRGVsYXkodW5zaWduZWQgbG9uZyB1bENvdW50KQoreworICAgIF9fYXNtKCIgICAgc3VicyAgICByMCwgIzFcbiIKKyAgICAgICAgICAiICAgIGJuZSAgICAgVXRpbHNEZWxheVxuIgorICAgICAgICAgICIgICAgYnggICAgICBsciIpOworfQorI2VuZGlmCisKKy8vCisvLyBGb3IgQ0NTIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGluIHB1cmUgYXNzZW1ibHkuICBUaGlzIHByZXZlbnRzIHRoZSBUSQorLy8gY29tcGlsZXIgZnJvbSBkb2luZyBmdW5ueSB0aGluZ3Mgd2l0aCB0aGUgb3B0aW1pemVyLgorLy8KKyNpZiBkZWZpbmVkKGNjcykKKyAgICBfX2FzbSgiICAgIC5zZWN0IFwiLnRleHQ6VXRpbHNEZWxheVwiXG4iCisgICAgICAgICAgIiAgICAuY2xpbmtcbiIKKyAgICAgICAgICAiICAgIC50aHVtYmZ1bmMgVXRpbHNEZWxheVxuIgorICAgICAgICAgICIgICAgLnRodW1iXG4iCisgICAgICAgICAgIiAgICAuZ2xvYmFsIFV0aWxzRGVsYXlcbiIKKyAgICAgICAgICAiVXRpbHNEZWxheTpcbiIKKyAgICAgICAgICAiICAgIHN1YnMgcjAsICMxXG4iCisgICAgICAgICAgIiAgICBibmUubiBVdGlsc0RlbGF5XG4iCisgICAgICAgICAgIiAgICBieCBsclxuIik7CisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIENsb3NlIHRoZSBEb3h5Z2VuIGdyb3VwLgorLy8hIEB9CisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0tZ2l0IGEvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL3V0aWxzLmggYi9leHQvaGFsL3RpL2NjMzIyMHNkay9kcml2ZXJsaWIvdXRpbHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTdlMzliCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvZHJpdmVybGliL3V0aWxzLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCisgKgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKgorICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyAgdXRpbHMuaAorLy8KKy8vICBQcm90b3R5cGVzIGFuZCBtYWNyb3MgZm9yIHV0aWxpdHkgQVBJcworLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworI2lmbmRlZiBfX1VUSUxTX0hfXworI2RlZmluZSBfX1VUSUxTX0hfXworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gSWYgYnVpbGRpbmcgd2l0aCBhIEMrKyBjb21waWxlciwgbWFrZSBhbGwgb2YgdGhlIGRlZmluaXRpb25zIGluIHRoaXMgaGVhZGVyCisvLyBoYXZlIGEgQyBiaW5kaW5nLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgoreworI2VuZGlmCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBBUEkgRnVuY3Rpb24gcHJvdG90eXBlcworLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK2V4dGVybiB2b2lkIFV0aWxzRGVsYXkodW5zaWduZWQgbG9uZyB1bENvdW50KTsKKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gTWFyayB0aGUgZW5kIG9mIHRoZSBDIGJpbmRpbmdzIHNlY3Rpb24gZm9yIEMrKyBjb21waWxlcnMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vX19VVElMU19IX18KZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19hcHBzX3JjbS5oIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X2FwcHNfcmNtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJjNjY2ZgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19hcHBzX3JjbS5oCkBAIC0wLDAgKzEsMTUwNCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCisgKgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKgorICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0hXX0FQUFNfUkNNX0hfXworI2RlZmluZSBfX0hXX0FQUFNfUkNNX0hfXworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIEFQUFNfUkNNIHJlZ2lzdGVyIG9mZnNldHMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9PX0NBTUVSQV9DTEtfR0VOIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMAorCisjZGVmaW5lIEFQUFNfUkNNX09fQ0FNRVJBX0NMS19HQVRJTkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisKKyNkZWZpbmUgQVBQU19SQ01fT19DQU1FUkFfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDgKKworI2RlZmluZSBBUFBTX1JDTV9PX01DQVNQX0NMS19HQVRJTkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDE0CisKKyNkZWZpbmUgQVBQU19SQ01fT19NQ0FTUF9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxOAorCisjZGVmaW5lIEFQUFNfUkNNX09fTU1DSFNfQ0xLX0dFTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKworI2RlZmluZSBBUFBTX1JDTV9PX01NQ0hTX0NMS19HQVRJTkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDI0CisKKyNkZWZpbmUgQVBQU19SQ01fT19NTUNIU19TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyOAorCisjZGVmaW5lIEFQUFNfUkNNX09fTUNTUElfQTFfQ0xLX0dFTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMkMKKworI2RlZmluZSBBUFBTX1JDTV9PX01DU1BJX0ExX0NMS19HQVRJTkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDMwCisKKyNkZWZpbmUgQVBQU19SQ01fT19NQ1NQSV9BMV9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzNAorCisjZGVmaW5lIEFQUFNfUkNNX09fTUNTUElfQTJfQ0xLX0dFTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMzgKKworI2RlZmluZSBBUFBTX1JDTV9PX01DU1BJX0EyX0NMS19HQVRJTkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQwCisKKyNkZWZpbmUgQVBQU19SQ01fT19NQ1NQSV9BMl9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0NAorCisjZGVmaW5lIEFQUFNfUkNNX09fVURNQV9BX0NMS19HQVRJTkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQ4CisKKyNkZWZpbmUgQVBQU19SQ01fT19VRE1BX0FfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNEMKKworI2RlZmluZSBBUFBTX1JDTV9PX0dQSU9fQV9DTEtfR0FUSU5HIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA1MAorCisjZGVmaW5lIEFQUFNfUkNNX09fR1BJT19BX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDU0CisKKyNkZWZpbmUgQVBQU19SQ01fT19HUElPX0JfQ0xLX0dBVElORyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNTgKKworI2RlZmluZSBBUFBTX1JDTV9PX0dQSU9fQl9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA1QworCisjZGVmaW5lIEFQUFNfUkNNX09fR1BJT19DX0NMS19HQVRJTkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDYwCisKKyNkZWZpbmUgQVBQU19SQ01fT19HUElPX0NfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNjQKKworI2RlZmluZSBBUFBTX1JDTV9PX0dQSU9fRF9DTEtfR0FUSU5HIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA2OAorCisjZGVmaW5lIEFQUFNfUkNNX09fR1BJT19EX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDZDCisKKyNkZWZpbmUgQVBQU19SQ01fT19HUElPX0VfQ0xLX0dBVElORyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNzAKKworI2RlZmluZSBBUFBTX1JDTV9PX0dQSU9fRV9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3NAorCisjZGVmaW5lIEFQUFNfUkNNX09fV0RPR19BX0NMS19HQVRJTkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDc4CisKKyNkZWZpbmUgQVBQU19SQ01fT19XRE9HX0FfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwN0MKKworI2RlZmluZSBBUFBTX1JDTV9PX1VBUlRfQTBfQ0xLX0dBVElORyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAKKworI2RlZmluZSBBUFBTX1JDTV9PX1VBUlRfQTBfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODQKKworI2RlZmluZSBBUFBTX1JDTV9PX1VBUlRfQTFfQ0xLX0dBVElORyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODgKKworI2RlZmluZSBBUFBTX1JDTV9PX1VBUlRfQTFfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwOEMKKworI2RlZmluZSBBUFBTX1JDTV9PX0dQVF9BMF9DTEtfR0FUSU5HIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA5MAorCisjZGVmaW5lIEFQUFNfUkNNX09fR1BUX0EwX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDk0CisKKyNkZWZpbmUgQVBQU19SQ01fT19HUFRfQTFfQ0xLX0dBVElORyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwOTgKKworI2RlZmluZSBBUFBTX1JDTV9PX0dQVF9BMV9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA5QworCisjZGVmaW5lIEFQUFNfUkNNX09fR1BUX0EyX0NMS19HQVRJTkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEEwCisKKyNkZWZpbmUgQVBQU19SQ01fT19HUFRfQTJfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQTQKKworI2RlZmluZSBBUFBTX1JDTV9PX0dQVF9BM19DTEtfR0FUSU5HIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBBOAorCisjZGVmaW5lIEFQUFNfUkNNX09fR1BUX0EzX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEFDCisKKyNkZWZpbmUgQVBQU19SQ01fT19NQ0FTUF9GUkFDX0NMS19DT05GSUcwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCMAorCisjZGVmaW5lIEFQUFNfUkNNX09fTUNBU1BfRlJBQ19DTEtfQ09ORklHMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQjQKKworI2RlZmluZSBBUFBTX1JDTV9PX0NSWVBUT19DTEtfR0FUSU5HIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCOAorCisjZGVmaW5lIEFQUFNfUkNNX09fQ1JZUFRPX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEJDCisKKyNkZWZpbmUgQVBQU19SQ01fT19NQ1NQSV9TMF9DTEtfR0FUSU5HIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBDOAorCisjZGVmaW5lIEFQUFNfUkNNX09fTUNTUElfUzBfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQ0MKKworI2RlZmluZSBBUFBTX1JDTV9PX01DU1BJX1MwX0NMS0RJVl9DRkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEQwCisKKyNkZWZpbmUgQVBQU19SQ01fT19JMkNfQ0xLX0dBVElORyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRDgKKworI2RlZmluZSBBUFBTX1JDTV9PX0kyQ19TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBEQworCisjZGVmaW5lIEFQUFNfUkNNX09fQVBQU19MUERTX1JFUSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRTQKKworI2RlZmluZSBBUFBTX1JDTV9PX0FQUFNfVFVSQk9fUkVRIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBFQworCisjZGVmaW5lIEFQUFNfUkNNX09fQVBQU19EU0xQX1dBS0VfQ09ORklHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwOAorCisjZGVmaW5lIEFQUFNfUkNNX09fQVBQU19EU0xQX1dBS0VfVElNRVJfQ0ZHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwQworCisjZGVmaW5lIEFQUFNfUkNNX09fQVBQU19SQ01fU0xQX1dBS0VfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDExMAorCisjZGVmaW5lIEFQUFNfUkNNX09fQVBQU19TTFBfV0FLRVRJTUVSX0NGRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMTQKKworI2RlZmluZSBBUFBTX1JDTV9PX0FQUFNfVE9fTldQX1dBS0VfUkVRVUVTVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMTgKKworI2RlZmluZSBBUFBTX1JDTV9PX0FQUFNfUkNNX0lOVEVSUlVQVF9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTIwCisKKyNkZWZpbmUgQVBQU19SQ01fT19BUFBTX1JDTV9JTlRFUlJVUFRfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEyNAorCisKKworCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0NBTUVSQV9DTEtfR0VOIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0NBTUVSQV9DTEtfR0VOX0NBTUVSQV9QTExDS0RJVl9PRkZfVElNRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDcwMCAgLy8gQ29uZmlndXJhdGlvbiBvZiBPRkYtVElNRSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGl2aWRpbmcgUExMIGNsayAoMjQwIE1IeikgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGlvbiBvZiBDYW1lcmEgZnVuYy1jbGsgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDAwIiAtIDEgIjAwMSIgLSAyICIwMTAiIC0gMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDExIiAtIDQgIjEwMCIgLSA1ICIxMDEiIC0gNgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMTEwIiAtIDcgIjExMSIgLSA4CisKKyNkZWZpbmUgQVBQU19SQ01fQ0FNRVJBX0NMS19HRU5fQ0FNRVJBX1BMTENLRElWX09GRl9USU1FX1MgOAorI2RlZmluZSBBUFBTX1JDTV9DQU1FUkFfQ0xLX0dFTl9OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRjgKKworI2RlZmluZSBBUFBTX1JDTV9DQU1FUkFfQ0xLX0dFTl9OVTFfUyAzCisjZGVmaW5lIEFQUFNfUkNNX0NBTUVSQV9DTEtfR0VOX0NBTUVSQV9QTExDS0RJVl9PTl9USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3ICAvLyBDb25maWd1cmF0aW9uIG9mIE9OLVRJTUUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpdmlkaW5nIFBMTCBjbGsgKDI0MCBNSHopIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdlbmVyYXRpb24gb2YgQ2FtZXJhIGZ1bmMtY2xrIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAwMCIgLSAxICIwMDEiIC0gMiAiMDEwIiAtIDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAxMSIgLSA0ICIxMDAiIC0gNSAiMTAxIiAtIDYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjExMCIgLSA3ICIxMTEiIC0gOAorCisjZGVmaW5lIEFQUFNfUkNNX0NBTUVSQV9DTEtfR0VOX0NBTUVSQV9QTExDS0RJVl9PTl9USU1FX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fQ0FNRVJBX0NMS19HQVRJTkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fQ0FNRVJBX0NMS19HQVRJTkdfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRkUwMDAwCisKKyNkZWZpbmUgQVBQU19SQ01fQ0FNRVJBX0NMS19HQVRJTkdfTlUxX1MgMTcKKyNkZWZpbmUgQVBQU19SQ01fQ0FNRVJBX0NMS19HQVRJTkdfQ0FNRVJBX0RTTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDAgLSBEaXNhYmxlIGNhbWVyYSBjbGsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZXAtc2xlZXAgbW9kZQorCisjZGVmaW5lIEFQUFNfUkNNX0NBTUVSQV9DTEtfR0FUSU5HX05VMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkUwMAorCisjZGVmaW5lIEFQUFNfUkNNX0NBTUVSQV9DTEtfR0FUSU5HX05VMl9TIDkKKyNkZWZpbmUgQVBQU19SQ01fQ0FNRVJBX0NMS19HQVRJTkdfQ0FNRVJBX1NMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gMS0gRW5hYmxlIGNhbWVyYSBjbGsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsZWVwIG1vZGUgOyAwLSBEaXNhYmxlIGNhbWVyYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGsgZHVyaW5nIHNsZWVwIG1vZGUKKworI2RlZmluZSBBUFBTX1JDTV9DQU1FUkFfQ0xLX0dBVElOR19OVTNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkUKKworI2RlZmluZSBBUFBTX1JDTV9DQU1FUkFfQ0xLX0dBVElOR19OVTNfUyAxCisjZGVmaW5lIEFQUFNfUkNNX0NBTUVSQV9DTEtfR0FUSU5HX0NBTUVSQV9SVU5fQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEtIEVuYWJsZSBjYW1lcmEgY2xrIGR1cmluZyBydW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZSA7IDAtIERpc2FibGUgY2FtZXJhIGNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgcnVuIG1vZGUKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fQ0FNRVJBX1NPRlRfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fQ0FNRVJBX1NPRlRfUkVTRVRfQ0FNRVJBX0VOQUJMRURfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIENhbWVyYSBjbG9ja3MvcmVzZXRzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIDsgMCAtIENhbWVyYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbG9ja3MvcmVzZXRzIGFyZSBkaXNhYmxlZAorCisjZGVmaW5lIEFQUFNfUkNNX0NBTUVSQV9TT0ZUX1JFU0VUX0NBTUVSQV9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEFzc2VydCByZXNldCBmb3IgQ2FtZXJhLWNvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOyAwIC0gRGUtYXNzZXJ0IHJlc2V0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYW1lcmEtY29yZQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19NQ0FTUF9DTEtfR0FUSU5HIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX01DQVNQX0NMS19HQVRJTkdfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRkUwMDAwCisKKyNkZWZpbmUgQVBQU19SQ01fTUNBU1BfQ0xLX0dBVElOR19OVTFfUyAxNworI2RlZmluZSBBUFBTX1JDTV9NQ0FTUF9DTEtfR0FUSU5HX01DQVNQX0RTTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDAgLSBEaXNhYmxlIE1DQVNQIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVlcC1zbGVlcCBtb2RlCisKKyNkZWZpbmUgQVBQU19SQ01fTUNBU1BfQ0xLX0dBVElOR19OVTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZFMDAKKworI2RlZmluZSBBUFBTX1JDTV9NQ0FTUF9DTEtfR0FUSU5HX05VMl9TIDkKKyNkZWZpbmUgQVBQU19SQ01fTUNBU1BfQ0xLX0dBVElOR19NQ0FTUF9TTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIDEtIEVuYWJsZSBNQ0FTUCBjbGsgZHVyaW5nIHNsZWVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGUgOyAwLSBEaXNhYmxlIE1DQVNQIGNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgc2xlZXAgbW9kZQorCisjZGVmaW5lIEFQUFNfUkNNX01DQVNQX0NMS19HQVRJTkdfTlUzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZFCisKKyNkZWZpbmUgQVBQU19SQ01fTUNBU1BfQ0xLX0dBVElOR19OVTNfUyAxCisjZGVmaW5lIEFQUFNfUkNNX01DQVNQX0NMS19HQVRJTkdfTUNBU1BfUlVOX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxLSBFbmFibGUgTUNBU1AgY2xrIGR1cmluZyBydW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZSA7IDAtIERpc2FibGUgTUNBU1AgY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBydW4gbW9kZQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19NQ0FTUF9TT0ZUX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX01DQVNQX1NPRlRfUkVTRVRfTUNBU1BfRU5BQkxFRF9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gTUNBU1AgQ2xvY2tzL3Jlc2V0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCA7IDAgLSBNQ0FTUCBDbG9ja3MvcmVzZXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZSBkaXNhYmxlZAorCisjZGVmaW5lIEFQUFNfUkNNX01DQVNQX1NPRlRfUkVTRVRfTUNBU1BfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBBc3NlcnQgcmVzZXQgZm9yIE1DQVNQLWNvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOyAwIC0gRGUtYXNzZXJ0IHJlc2V0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ0FTUC1jb3JlCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX01NQ0hTX0NMS19HRU4gcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fTU1DSFNfQ0xLX0dFTl9NTUNIU19QTExDS0RJVl9PRkZfVElNRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDcwMCAgLy8gQ29uZmlndXJhdGlvbiBvZiBPRkYtVElNRSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGl2aWRpbmcgUExMIGNsayAoMjQwIE1IeikgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGlvbiBvZiBNTUNIUyBmdW5jLWNsayA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMDAiIC0gMSAiMDAxIiAtIDIgIjAxMCIgLSAzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTEiIC0gNCAiMTAwIiAtIDUgIjEwMSIgLSA2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIxMTAiIC0gNyAiMTExIiAtIDgKKworI2RlZmluZSBBUFBTX1JDTV9NTUNIU19DTEtfR0VOX01NQ0hTX1BMTENLRElWX09GRl9USU1FX1MgOAorI2RlZmluZSBBUFBTX1JDTV9NTUNIU19DTEtfR0VOX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGOAorCisjZGVmaW5lIEFQUFNfUkNNX01NQ0hTX0NMS19HRU5fTlUxX1MgMworI2RlZmluZSBBUFBTX1JDTV9NTUNIU19DTEtfR0VOX01NQ0hTX1BMTENLRElWX09OX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcgIC8vIENvbmZpZ3VyYXRpb24gb2YgT04tVElNRSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGl2aWRpbmcgUExMIGNsayAoMjQwIE1IeikgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGlvbiBvZiBNTUNIUyBmdW5jLWNsayA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMDAiIC0gMSAiMDAxIiAtIDIgIjAxMCIgLSAzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTEiIC0gNCAiMTAwIiAtIDUgIjEwMSIgLSA2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIxMTAiIC0gNyAiMTExIiAtIDgKKworI2RlZmluZSBBUFBTX1JDTV9NTUNIU19DTEtfR0VOX01NQ0hTX1BMTENLRElWX09OX1RJTUVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19NTUNIU19DTEtfR0FUSU5HIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX01NQ0hTX0NMS19HQVRJTkdfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRkUwMDAwCisKKyNkZWZpbmUgQVBQU19SQ01fTU1DSFNfQ0xLX0dBVElOR19OVTFfUyAxNworI2RlZmluZSBBUFBTX1JDTV9NTUNIU19DTEtfR0FUSU5HX01NQ0hTX0RTTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDAgLSBEaXNhYmxlIE1NQ0hTIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVlcC1zbGVlcCBtb2RlCisKKyNkZWZpbmUgQVBQU19SQ01fTU1DSFNfQ0xLX0dBVElOR19OVTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZFMDAKKworI2RlZmluZSBBUFBTX1JDTV9NTUNIU19DTEtfR0FUSU5HX05VMl9TIDkKKyNkZWZpbmUgQVBQU19SQ01fTU1DSFNfQ0xLX0dBVElOR19NTUNIU19TTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIDEtIEVuYWJsZSBNTUNIUyBjbGsgZHVyaW5nIHNsZWVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGUgOyAwLSBEaXNhYmxlIE1NQ0hTIGNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgc2xlZXAgbW9kZQorCisjZGVmaW5lIEFQUFNfUkNNX01NQ0hTX0NMS19HQVRJTkdfTlUzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZFCisKKyNkZWZpbmUgQVBQU19SQ01fTU1DSFNfQ0xLX0dBVElOR19OVTNfUyAxCisjZGVmaW5lIEFQUFNfUkNNX01NQ0hTX0NMS19HQVRJTkdfTU1DSFNfUlVOX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxLSBFbmFibGUgTU1DSFMgY2xrIGR1cmluZyBydW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZSA7IDAtIERpc2FibGUgTU1DSFMgY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBydW4gbW9kZQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19NTUNIU19TT0ZUX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX01NQ0hTX1NPRlRfUkVTRVRfTU1DSFNfRU5BQkxFRF9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gTU1DSFMgQ2xvY2tzL3Jlc2V0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCA7IDAgLSBNTUNIUyBDbG9ja3MvcmVzZXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZSBkaXNhYmxlZAorCisjZGVmaW5lIEFQUFNfUkNNX01NQ0hTX1NPRlRfUkVTRVRfTU1DSFNfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBBc3NlcnQgcmVzZXQgZm9yIE1NQ0hTLWNvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOyAwIC0gRGUtYXNzZXJ0IHJlc2V0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNTUNIUy1jb3JlCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX01DU1BJX0ExX0NMS19HRU4gcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTFfQ0xLX0dFTl9NQ1NQSV9BMV9CQVVEX0NMS19TRUwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAwIC0gWFRBTCBjbGsgaXMgdXNlZCBhcyBiYXVkIGNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgTUNTUElfQTEgOyAxIC0gUExMIGRpdmNsayBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGFzIGJhdWQgY2xrIGZvciBNQ1NQSV9BMS4KKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMV9DTEtfR0VOX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRjgwMAorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0ExX0NMS19HRU5fTlUxX1MgMTEKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTFfQ0xLX0dFTl9NQ1NQSV9BMV9QTExDTEtESVZfT0ZGX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA3MDAgIC8vIENvbmZpZ3VyYXRpb24gb2YgT0ZGLVRJTUUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpdmlkaW5nIFBMTCBjbGsgKDI0MCBNSHopIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdlbmVyYXRpb24gb2YgTUNTUElfQTEgZnVuYy1jbGsgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDAwIiAtIDEgIjAwMSIgLSAyICIwMTAiIC0gMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDExIiAtIDQgIjEwMCIgLSA1ICIxMDEiIC0gNgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMTEwIiAtIDcgIjExMSIgLSA4CisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTFfQ0xLX0dFTl9NQ1NQSV9BMV9QTExDTEtESVZfT0ZGX1RJTUVfUyA4CisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0ExX0NMS19HRU5fTlUyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEY4CisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTFfQ0xLX0dFTl9OVTJfUyAzCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0ExX0NMS19HRU5fTUNTUElfQTFfUExMQ0xLRElWX09OX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcgIC8vIENvbmZpZ3VyYXRpb24gb2YgT04tVElNRSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGl2aWRpbmcgUExMIGNsayAoMjQwIE1IeikgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGlvbiBvZiBNQ1NQSV9BMSBmdW5jLWNsayA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMDAiIC0gMSAiMDAxIiAtIDIgIjAxMCIgLSAzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTEiIC0gNCAiMTAwIiAtIDUgIjEwMSIgLSA2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIxMTAiIC0gNyAiMTExIiAtIDgKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMV9DTEtfR0VOX01DU1BJX0ExX1BMTENMS0RJVl9PTl9USU1FX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fTUNTUElfQTFfQ0xLX0dBVElORyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMV9DTEtfR0FUSU5HX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMEZFMDAwMAorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0ExX0NMS19HQVRJTkdfTlUxX1MgMTcKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTFfQ0xLX0dBVElOR19NQ1NQSV9BMV9EU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAwIC0gRGlzYWJsZSBNQ1NQSV9BMSBjbGsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZXAtc2xlZXAgbW9kZQorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0ExX0NMS19HQVRJTkdfTlUyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRTAwCisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTFfQ0xLX0dBVElOR19OVTJfUyA5CisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0ExX0NMS19HQVRJTkdfTUNTUElfQTFfU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyAxLSBFbmFibGUgTUNTUElfQTEgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbGVlcCBtb2RlIDsgMC0gRGlzYWJsZSBNQ1NQSV9BMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGsgZHVyaW5nIHNsZWVwIG1vZGUKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMV9DTEtfR0FUSU5HX05VM19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRQorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0ExX0NMS19HQVRJTkdfTlUzX1MgMQorI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMV9DTEtfR0FUSU5HX01DU1BJX0ExX1JVTl9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMS0gRW5hYmxlIE1DU1BJX0ExIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcnVuIG1vZGUgOyAwLSBEaXNhYmxlIE1DU1BJX0ExCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsayBkdXJpbmcgcnVuIG1vZGUKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fTUNTUElfQTFfU09GVF9SRVNFVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMV9TT0ZUX1JFU0VUX01DU1BJX0ExX0VOQUJMRURfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIE1DU1BJX0ExIENsb2Nrcy9SZXNldHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgOyAwIC0gTUNTUElfQTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvY2tzL1Jlc2V0cyBhcmUgZGlzYWJsZWQKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMV9TT0ZUX1JFU0VUX01DU1BJX0ExX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gQXNzZXJ0IHJlc2V0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ1NQSV9BMS1jb3JlIDsgMCAtIERlLWFzc2VydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNldCBmb3IgTUNTUElfQTEtY29yZQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19NQ1NQSV9BMl9DTEtfR0VOIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0EyX0NMS19HRU5fTUNTUElfQTJfQkFVRF9DTEtfU0VMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAgLy8gMCAtIFhUQUwgY2xrIGlzIHVzZWQgYXMgYmF1ZC1jbGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIE1DU1BJX0EyIDsgMSAtIFBMTCBkaXZjbGsgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBhcyBiYXVkLWNsayBmb3IgTUNTUElfQTIKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMl9DTEtfR0VOX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRjgwMAorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0EyX0NMS19HRU5fTlUxX1MgMTEKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTJfQ0xLX0dFTl9NQ1NQSV9BMl9QTExDS0RJVl9PRkZfVElNRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDcwMCAgLy8gQ29uZmlndXJhdGlvbiBvZiBPRkYtVElNRSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGl2aWRpbmcgUExMIGNsayAoMjQwIE1IeikgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGlvbiBvZiBNQ1NQSV9BMiBmdW5jLWNsayA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMDAiIC0gMSAiMDAxIiAtIDIgIjAxMCIgLSAzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTEiIC0gNCAiMTAwIiAtIDUgIjEwMSIgLSA2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIxMTAiIC0gNyAiMTExIiAtIDgKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMl9DTEtfR0VOX01DU1BJX0EyX1BMTENLRElWX09GRl9USU1FX1MgOAorI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMl9DTEtfR0VOX05VMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGOAorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0EyX0NMS19HRU5fTlUyX1MgMworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMl9DTEtfR0VOX01DU1BJX0EyX1BMTENLRElWX09OX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcgIC8vIENvbmZpZ3VyYXRpb24gb2YgT0ZGLVRJTUUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpdmlkaW5nIFBMTCBjbGsgKDI0MCBNSHopIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdlbmVyYXRpb24gb2YgTUNTUElfQTIgZnVuYy1jbGsgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDAwIiAtIDEgIjAwMSIgLSAyICIwMTAiIC0gMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDExIiAtIDQgIjEwMCIgLSA1ICIxMDEiIC0gNgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMTEwIiAtIDcgIjExMSIgLSA4CisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTJfQ0xLX0dFTl9NQ1NQSV9BMl9QTExDS0RJVl9PTl9USU1FX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fTUNTUElfQTJfQ0xLX0dBVElORyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMl9DTEtfR0FUSU5HX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMEZFMDAwMAorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0EyX0NMS19HQVRJTkdfTlUxX1MgMTcKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTJfQ0xLX0dBVElOR19NQ1NQSV9BMl9EU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAwIC0gRGlzYWJsZSBNQ1NQSV9BMiBjbGsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZXAtc2xlZXAgbW9kZQorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0EyX0NMS19HQVRJTkdfTlUyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRTAwCisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfQTJfQ0xLX0dBVElOR19OVTJfUyA5CisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0EyX0NMS19HQVRJTkdfTUNTUElfQTJfU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyAxLSBFbmFibGUgTUNTUElfQTIgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbGVlcCBtb2RlIDsgMC0gRGlzYWJsZSBNQ1NQSV9BMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGsgZHVyaW5nIHNsZWVwIG1vZGUKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMl9DTEtfR0FUSU5HX05VM19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRQorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX0EyX0NMS19HQVRJTkdfTlUzX1MgMQorI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMl9DTEtfR0FUSU5HX01DU1BJX0EyX1JVTl9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMS0gRW5hYmxlIE1DU1BJX0EyIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcnVuIG1vZGUgOyAwLSBEaXNhYmxlIE1DU1BJX0EyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsayBkdXJpbmcgcnVuIG1vZGUKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fTUNTUElfQTJfU09GVF9SRVNFVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMl9TT0ZUX1JFU0VUX01DU1BJX0EyX0VOQUJMRURfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIE1DU1BJX0EyIENsb2Nrcy9SZXNldHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgOyAwIC0gTUNTUElfQTIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvY2tzL1Jlc2V0cyBhcmUgZGlzYWJsZWQKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9BMl9TT0ZUX1JFU0VUX01DU1BJX0EyX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gQXNzZXJ0IHJlc2V0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ1NQSV9BMi1jb3JlIDsgMCAtIERlLWFzc2VydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNldCBmb3IgTUNTUElfQTItY29yZQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19VRE1BX0FfQ0xLX0dBVElORyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9VRE1BX0FfQ0xLX0dBVElOR19VRE1BX0FfRFNMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAgLy8gMSAtIEVuYWJsZSBVRE1BX0EgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWVwLXNsZWVwIG1vZGUgMCAtIERpc2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVURNQV9BIGNsayBkdXJpbmcgZGVlcC1zbGVlcCBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDsKKworI2RlZmluZSBBUFBTX1JDTV9VRE1BX0FfQ0xLX0dBVElOR19OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZFMDAKKworI2RlZmluZSBBUFBTX1JDTV9VRE1BX0FfQ0xLX0dBVElOR19OVTFfUyA5CisjZGVmaW5lIEFQUFNfUkNNX1VETUFfQV9DTEtfR0FUSU5HX1VETUFfQV9TTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIDEgLSBFbmFibGUgVURNQV9BIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xlZXAgbW9kZSAwIC0gRGlzYWJsZSBVRE1BX0EgY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBzbGVlcCBtb2RlIDsKKworI2RlZmluZSBBUFBTX1JDTV9VRE1BX0FfQ0xLX0dBVElOR19OVTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkUKKworI2RlZmluZSBBUFBTX1JDTV9VRE1BX0FfQ0xLX0dBVElOR19OVTJfUyAxCisjZGVmaW5lIEFQUFNfUkNNX1VETUFfQV9DTEtfR0FUSU5HX1VETUFfQV9SVU5fQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBFbmFibGUgVURNQV9BIGNsayBkdXJpbmcgcnVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGUgMCAtIERpc2FibGUgVURNQV9BIGNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgcnVuIG1vZGUgOworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19VRE1BX0FfU09GVF9SRVNFVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9VRE1BX0FfU09GVF9SRVNFVF9VRE1BX0FfRU5BQkxFRF9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gVURNQV9BIENsb2Nrcy9SZXNldHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgOyAwIC0gVURNQV9BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsb2Nrcy9SZXNldHMgYXJlIGRpc2FibGVkCisKKyNkZWZpbmUgQVBQU19SQ01fVURNQV9BX1NPRlRfUkVTRVRfVURNQV9BX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gQXNzZXJ0IHJlc2V0IGZvciBETUFfQSA7IDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZS1hc3NlcnQgcmVzZXQgZm9yIERNQV9BCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0dQSU9fQV9DTEtfR0FUSU5HIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQV9DTEtfR0FUSU5HX0dQSU9fQV9EU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAxIC0gRW5hYmxlIEdQSU9fQSBjbGsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZXAtc2xlZXAgbW9kZSAwIC0gRGlzYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPX0EgY2xrIGR1cmluZyBkZWVwLXNsZWVwIG1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOworCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQV9DTEtfR0FUSU5HX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkUwMAorCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQV9DTEtfR0FUSU5HX05VMV9TIDkKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19BX0NMS19HQVRJTkdfR1BJT19BX1NMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gMSAtIEVuYWJsZSBHUElPX0EgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbGVlcCBtb2RlIDAgLSBEaXNhYmxlIEdQSU9fQSBjbGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHNsZWVwIG1vZGUgOworCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQV9DTEtfR0FUSU5HX05VMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRQorCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQV9DTEtfR0FUSU5HX05VMl9TIDEKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19BX0NMS19HQVRJTkdfR1BJT19BX1JVTl9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSBHUElPX0EgY2xrIGR1cmluZyBydW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZSAwIC0gRGlzYWJsZSBHUElPX0EgY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBydW4gbW9kZSA7CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0dQSU9fQV9TT0ZUX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQV9TT0ZUX1JFU0VUX0dQSU9fQV9FTkFCTEVEX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEgLSBHUElPX0EgQ2xvY2tzL1Jlc2V0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCA7IDAgLSBHUElPX0EKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvY2tzL1Jlc2V0cyBhcmUgZGlzYWJsZWQKKworI2RlZmluZSBBUFBTX1JDTV9HUElPX0FfU09GVF9SRVNFVF9HUElPX0FfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBBc3NlcnQgcmVzZXQgZm9yIEdQSU9fQSA7IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBEZS1hc3NlcnQgcmVzZXQgZm9yIEdQSU9fQQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19HUElPX0JfQ0xLX0dBVElORyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9HUElPX0JfQ0xLX0dBVElOR19HUElPX0JfRFNMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAgLy8gMSAtIEVuYWJsZSBHUElPX0IgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWVwLXNsZWVwIG1vZGUgMCAtIERpc2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT19CIGNsayBkdXJpbmcgZGVlcC1zbGVlcCBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDsKKworI2RlZmluZSBBUFBTX1JDTV9HUElPX0JfQ0xLX0dBVElOR19OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZFMDAKKworI2RlZmluZSBBUFBTX1JDTV9HUElPX0JfQ0xLX0dBVElOR19OVTFfUyA5CisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQl9DTEtfR0FUSU5HX0dQSU9fQl9TTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIDEgLSBFbmFibGUgR1BJT19CIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xlZXAgbW9kZSAwIC0gRGlzYWJsZSBHUElPX0IgY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBzbGVlcCBtb2RlIDsKKworI2RlZmluZSBBUFBTX1JDTV9HUElPX0JfQ0xLX0dBVElOR19OVTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkUKKworI2RlZmluZSBBUFBTX1JDTV9HUElPX0JfQ0xLX0dBVElOR19OVTJfUyAxCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQl9DTEtfR0FUSU5HX0dQSU9fQl9SVU5fQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBFbmFibGUgR1BJT19CIGNsayBkdXJpbmcgcnVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGUgMCAtIERpc2FibGUgR1BJT19CIGNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgcnVuIG1vZGUgOworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19HUElPX0JfU09GVF9SRVNFVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9HUElPX0JfU09GVF9SRVNFVF9HUElPX0JfRU5BQkxFRF9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gR1BJT19CIENsb2Nrcy9SZXNldHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgOyAwIC0gR1BJT19CCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsb2Nrcy9SZXNldHMgYXJlIGRpc2FibGVkCisKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19CX1NPRlRfUkVTRVRfR1BJT19CX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gQXNzZXJ0IHJlc2V0IGZvciBHUElPX0IgOyAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gRGUtYXNzZXJ0IHJlc2V0IGZvciBHUElPX0IKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fR1BJT19DX0NMS19HQVRJTkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19DX0NMS19HQVRJTkdfR1BJT19DX0RTTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDEgLSBFbmFibGUgR1BJT19DIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVlcC1zbGVlcCBtb2RlIDAgLSBEaXNhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9fQyBjbGsgZHVyaW5nIGRlZXAtc2xlZXAgbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA7CisKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19DX0NMS19HQVRJTkdfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRTAwCisKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19DX0NMS19HQVRJTkdfTlUxX1MgOQorI2RlZmluZSBBUFBTX1JDTV9HUElPX0NfQ0xLX0dBVElOR19HUElPX0NfU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyAxIC0gRW5hYmxlIEdQSU9fQyBjbGsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsZWVwIG1vZGUgMCAtIERpc2FibGUgR1BJT19DIGNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgc2xlZXAgbW9kZSA7CisKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19DX0NMS19HQVRJTkdfTlUyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZFCisKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19DX0NMS19HQVRJTkdfTlUyX1MgMQorI2RlZmluZSBBUFBTX1JDTV9HUElPX0NfQ0xLX0dBVElOR19HUElPX0NfUlVOX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gRW5hYmxlIEdQSU9fQyBjbGsgZHVyaW5nIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlIDAgLSBEaXNhYmxlIEdQSU9fQyBjbGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHJ1biBtb2RlIDsKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fR1BJT19DX1NPRlRfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19DX1NPRlRfUkVTRVRfR1BJT19DX0VOQUJMRURfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIEdQSU9fQyBDbG9ja3MvUmVzZXRzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIDsgMCAtIEdQSU9fQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbG9ja3MvUmVzZXRzIGFyZSBkaXNhYmxlZAorCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fQ19TT0ZUX1JFU0VUX0dQSU9fQ19TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEFzc2VydCByZXNldCBmb3IgR1BJT19DIDsgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtIERlLWFzc2VydCByZXNldCBmb3IgR1BJT19DCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0dQSU9fRF9DTEtfR0FUSU5HIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fRF9DTEtfR0FUSU5HX0dQSU9fRF9EU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAxIC0gRW5hYmxlIEdQSU9fRCBjbGsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZXAtc2xlZXAgbW9kZSAwIC0gRGlzYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPX0QgY2xrIGR1cmluZyBkZWVwLXNsZWVwIG1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOworCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fRF9DTEtfR0FUSU5HX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkUwMAorCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fRF9DTEtfR0FUSU5HX05VMV9TIDkKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19EX0NMS19HQVRJTkdfR1BJT19EX1NMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gMSAtIEVuYWJsZSBHUElPX0QgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbGVlcCBtb2RlIDAgLSBEaXNhYmxlIEdQSU9fRCBjbGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHNsZWVwIG1vZGUgOworCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fRF9DTEtfR0FUSU5HX05VMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRQorCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fRF9DTEtfR0FUSU5HX05VMl9TIDEKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19EX0NMS19HQVRJTkdfR1BJT19EX1JVTl9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSBHUElPX0QgY2xrIGR1cmluZyBydW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZSAwIC0gRGlzYWJsZSBHUElPX0QgY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBydW4gbW9kZSA7CisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0dQSU9fRF9TT0ZUX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fRF9TT0ZUX1JFU0VUX0dQSU9fRF9FTkFCTEVEX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEgLSBHUElPX0QgQ2xvY2tzL1Jlc2V0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCA7IDAgLSBHUElPX0QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvY2tzL1Jlc2V0cyBhcmUgZGlzYWJsZWQKKworI2RlZmluZSBBUFBTX1JDTV9HUElPX0RfU09GVF9SRVNFVF9HUElPX0RfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBBc3NlcnQgcmVzZXQgZm9yIEdQSU9fRCA7IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBEZS1hc3NlcnQgcmVzZXQgZm9yIEdQSU9fRAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19HUElPX0VfQ0xLX0dBVElORyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9HUElPX0VfQ0xLX0dBVElOR19HUElPX0VfRFNMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAgLy8gMSAtIEVuYWJsZSBHUElPX0UgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWVwLXNsZWVwIG1vZGUgMCAtIERpc2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT19FIGNsayBkdXJpbmcgZGVlcC1zbGVlcCBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDsKKworI2RlZmluZSBBUFBTX1JDTV9HUElPX0VfQ0xLX0dBVElOR19OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZFMDAKKworI2RlZmluZSBBUFBTX1JDTV9HUElPX0VfQ0xLX0dBVElOR19OVTFfUyA5CisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fRV9DTEtfR0FUSU5HX0dQSU9fRV9TTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIDEgLSBFbmFibGUgR1BJT19FIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xlZXAgbW9kZSAwIC0gRGlzYWJsZSBHUElPX0UgY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBzbGVlcCBtb2RlIDsKKworI2RlZmluZSBBUFBTX1JDTV9HUElPX0VfQ0xLX0dBVElOR19OVTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkUKKworI2RlZmluZSBBUFBTX1JDTV9HUElPX0VfQ0xLX0dBVElOR19OVTJfUyAxCisjZGVmaW5lIEFQUFNfUkNNX0dQSU9fRV9DTEtfR0FUSU5HX0dQSU9fRV9SVU5fQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBFbmFibGUgR1BJT19FIGNsayBkdXJpbmcgcnVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGUgMCAtIERpc2FibGUgR1BJT19FIGNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgcnVuIG1vZGUgOworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19HUElPX0VfU09GVF9SRVNFVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9HUElPX0VfU09GVF9SRVNFVF9HUElPX0VfRU5BQkxFRF9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gR1BJT19FIENsb2Nrcy9SZXNldHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgOyAwIC0gR1BJT19FCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsb2Nrcy9SZXNldHMgYXJlIGRpc2FibGVkCisKKyNkZWZpbmUgQVBQU19SQ01fR1BJT19FX1NPRlRfUkVTRVRfR1BJT19FX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gQXNzZXJ0IHJlc2V0IGZvciBHUElPX0UgOyAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gRGUtYXNzZXJ0IHJlc2V0IGZvciBHUElPX0UKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fV0RPR19BX0NMS19HQVRJTkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fV0RPR19BX0NMS19HQVRJTkdfV0RPR19BX0JBVURfQ0xLX1NFTF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMzAwMDAwMCAgLy8gIjAwIiAtIFN5c2NsayA7ICIwMSIgLSBSRUZfQ0xLCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICgzOC40IE1IeikgOyAiMTAvMTEiIC0gU2xvd19jbGsKKworI2RlZmluZSBBUFBTX1JDTV9XRE9HX0FfQ0xLX0dBVElOR19XRE9HX0FfQkFVRF9DTEtfU0VMX1MgMjQKKyNkZWZpbmUgQVBQU19SQ01fV0RPR19BX0NMS19HQVRJTkdfV0RPR19BX0RTTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDEgLSBFbmFibGUgV0RPR19BIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVlcC1zbGVlcCBtb2RlIDAgLSBEaXNhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdET0dfQSBjbGsgZHVyaW5nIGRlZXAtc2xlZXAgbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA7CisKKyNkZWZpbmUgQVBQU19SQ01fV0RPR19BX0NMS19HQVRJTkdfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRTAwCisKKyNkZWZpbmUgQVBQU19SQ01fV0RPR19BX0NMS19HQVRJTkdfTlUxX1MgOQorI2RlZmluZSBBUFBTX1JDTV9XRE9HX0FfQ0xLX0dBVElOR19XRE9HX0FfU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyAxIC0gRW5hYmxlIFdET0dfQSBjbGsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsZWVwIG1vZGUgMCAtIERpc2FibGUgV0RPR19BIGNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgc2xlZXAgbW9kZSA7CisKKyNkZWZpbmUgQVBQU19SQ01fV0RPR19BX0NMS19HQVRJTkdfTlUyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZFCisKKyNkZWZpbmUgQVBQU19SQ01fV0RPR19BX0NMS19HQVRJTkdfTlUyX1MgMQorI2RlZmluZSBBUFBTX1JDTV9XRE9HX0FfQ0xLX0dBVElOR19XRE9HX0FfUlVOX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gRW5hYmxlIFdET0dfQSBjbGsgZHVyaW5nIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlIDAgLSBEaXNhYmxlIFdET0dfQSBjbGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHJ1biBtb2RlIDsKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fV0RPR19BX1NPRlRfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fV0RPR19BX1NPRlRfUkVTRVRfV0RPR19BX0VOQUJMRURfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIFdET0dfQSBDbG9ja3MvUmVzZXRzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIDsgMCAtIFdET0dfQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbG9ja3MvUmVzZXRzIGFyZSBkaXNhYmxlZAorCisjZGVmaW5lIEFQUFNfUkNNX1dET0dfQV9TT0ZUX1JFU0VUX1dET0dfQV9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEFzc2VydCByZXNldCBmb3IgV0RPR19BIDsgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtIERlLWFzc2VydCByZXNldCBmb3IgV0RPR19BCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX1VBUlRfQTBfQ0xLX0dBVElORyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9VQVJUX0EwX0NMS19HQVRJTkdfVUFSVF9BMF9EU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAxIC0gRW5hYmxlIFVBUlRfQTAgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWVwLXNsZWVwIG1vZGUgMCAtIERpc2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVUFSVF9BMCBjbGsgZHVyaW5nIGRlZXAtc2xlZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZSA7CisKKyNkZWZpbmUgQVBQU19SQ01fVUFSVF9BMF9DTEtfR0FUSU5HX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkUwMAorCisjZGVmaW5lIEFQUFNfUkNNX1VBUlRfQTBfQ0xLX0dBVElOR19OVTFfUyA5CisjZGVmaW5lIEFQUFNfUkNNX1VBUlRfQTBfQ0xLX0dBVElOR19VQVJUX0EwX1NMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gMSAtIEVuYWJsZSBVQVJUX0EwIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xlZXAgbW9kZSAwIC0gRGlzYWJsZSBVQVJUX0EwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsayBkdXJpbmcgc2xlZXAgbW9kZSA7CisKKyNkZWZpbmUgQVBQU19SQ01fVUFSVF9BMF9DTEtfR0FUSU5HX05VMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRQorCisjZGVmaW5lIEFQUFNfUkNNX1VBUlRfQTBfQ0xLX0dBVElOR19OVTJfUyAxCisjZGVmaW5lIEFQUFNfUkNNX1VBUlRfQTBfQ0xLX0dBVElOR19VQVJUX0EwX1JVTl9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSBVQVJUX0EwIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcnVuIG1vZGUgMCAtIERpc2FibGUgVUFSVF9BMCBjbGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHJ1biBtb2RlIDsKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fVUFSVF9BMF9TT0ZUX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX1VBUlRfQTBfU09GVF9SRVNFVF9VQVJUX0EwX0VOQUJMRURfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIFVBUlRfQTAgQ2xvY2tzL1Jlc2V0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCA7IDAgLSBVQVJUX0EwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsb2Nrcy9SZXNldHMgYXJlIGRpc2FibGVkCisKKyNkZWZpbmUgQVBQU19SQ01fVUFSVF9BMF9TT0ZUX1JFU0VUX1VBUlRfQTBfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBBc3NlcnQgcmVzZXQgZm9yIFVBUlRfQTAgOyAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gRGUtYXNzZXJ0IHJlc2V0IGZvciBVQVJUX0EwCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX1VBUlRfQTFfQ0xLX0dBVElORyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9VQVJUX0ExX0NMS19HQVRJTkdfVUFSVF9BMV9EU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAxIC0gRW5hYmxlIFVBUlRfQTEgY2xrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWVwLXNsZWVwIG1vZGUgMCAtIERpc2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVUFSVF9BMSBjbGsgZHVyaW5nIGRlZXAtc2xlZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZSA7CisKKyNkZWZpbmUgQVBQU19SQ01fVUFSVF9BMV9DTEtfR0FUSU5HX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkUwMAorCisjZGVmaW5lIEFQUFNfUkNNX1VBUlRfQTFfQ0xLX0dBVElOR19OVTFfUyA5CisjZGVmaW5lIEFQUFNfUkNNX1VBUlRfQTFfQ0xLX0dBVElOR19VQVJUX0ExX1NMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gMSAtIEVuYWJsZSBVQVJUX0ExIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xlZXAgbW9kZSAwIC0gRGlzYWJsZSBVQVJUX0ExCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsayBkdXJpbmcgc2xlZXAgbW9kZSA7CisKKyNkZWZpbmUgQVBQU19SQ01fVUFSVF9BMV9DTEtfR0FUSU5HX05VMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRQorCisjZGVmaW5lIEFQUFNfUkNNX1VBUlRfQTFfQ0xLX0dBVElOR19OVTJfUyAxCisjZGVmaW5lIEFQUFNfUkNNX1VBUlRfQTFfQ0xLX0dBVElOR19VQVJUX0ExX1JVTl9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSBVQVJUX0ExIGNsayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcnVuIG1vZGUgMCAtIERpc2FibGUgVUFSVF9BMSBjbGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHJ1biBtb2RlIDsKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fVUFSVF9BMV9TT0ZUX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX1VBUlRfQTFfU09GVF9SRVNFVF9VQVJUX0ExX0VOQUJMRURfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIFVBUlRfQTEgQ2xvY2tzL1Jlc2V0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCA7IDAgLSBVQVJUX0ExCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsb2Nrcy9SZXNldHMgYXJlIGRpc2FibGVkCisKKyNkZWZpbmUgQVBQU19SQ01fVUFSVF9BMV9TT0ZUX1JFU0VUX1VBUlRfQTFfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBBc3NlcnQgdGhlIHNvZnQgcmVzZXQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVBUlRfQTEgOyAwIC0gRGUtYXNzZXJ0IHRoZSBzb2Z0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0IGZvciBVQVJUX0ExCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0dQVF9BMF9DTEtfR0FUSU5HIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMF9DTEtfR0FUSU5HX0dQVF9BMF9EU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAxIC0gRW5hYmxlIHRoZSBHUFRfQTAgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIGRlZXAtc2xlZXAgOyAwIC0gRGlzYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgR1BUX0EwIGNsb2NrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWVwLXNsZWVwCisKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0EwX0NMS19HQVRJTkdfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRTAwCisKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0EwX0NMS19HQVRJTkdfTlUxX1MgOQorI2RlZmluZSBBUFBTX1JDTV9HUFRfQTBfQ0xLX0dBVElOR19HUFRfQTBfU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyAxIC0gRW5hYmxlIHRoZSBHUFRfQTAgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHNsZWVwIDsgMCAtIERpc2FibGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQVF9BMCBjbG9jayBkdXJpbmcgc2xlZXAKKworI2RlZmluZSBBUFBTX1JDTV9HUFRfQTBfQ0xLX0dBVElOR19OVTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkUKKworI2RlZmluZSBBUFBTX1JDTV9HUFRfQTBfQ0xLX0dBVElOR19OVTJfUyAxCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMF9DTEtfR0FUSU5HX0dQVF9BMF9SVU5fQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBFbmFibGUgdGhlIEdQVF9BMCBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgcnVuIDsgMCAtIERpc2FibGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQVF9BMCBjbG9jayBkdXJpbmcgcnVuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0dQVF9BMF9TT0ZUX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMF9TT0ZUX1JFU0VUX0dQVF9BMF9FTkFCTEVEX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEgLSBHUFRfQTAgY2xvY2tzL3Jlc2V0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCA7IDAgLSBHUFRfQTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xvY2tzL3Jlc2V0cyBhcmUgZGlzYWJsZWQKKworI2RlZmluZSBBUFBTX1JDTV9HUFRfQTBfU09GVF9SRVNFVF9HUFRfQTBfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBBc3NlcnQgdGhlIHNvZnQgcmVzZXQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQVF9BMCA7IDAgLSBEZS1hc3NlcnQgdGhlIHNvZnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXQgZm9yIEdQVF9BMAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19HUFRfQTFfQ0xLX0dBVElORyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9HUFRfQTFfQ0xLX0dBVElOR19HUFRfQTFfRFNMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAgLy8gMSAtIEVuYWJsZSB0aGUgR1BUX0ExIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBkZWVwLXNsZWVwIDsgMCAtIERpc2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEdQVF9BMSBjbG9jayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVlcC1zbGVlcAorCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMV9DTEtfR0FUSU5HX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkUwMAorCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMV9DTEtfR0FUSU5HX05VMV9TIDkKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0ExX0NMS19HQVRJTkdfR1BUX0ExX1NMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gMSAtIEVuYWJsZSB0aGUgR1BUX0ExIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBzbGVlcCA7IDAgLSBEaXNhYmxlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUFRfQTEgY2xvY2sgZHVyaW5nIHNsZWVwCisKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0ExX0NMS19HQVRJTkdfTlUyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZFCisKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0ExX0NMS19HQVRJTkdfTlUyX1MgMQorI2RlZmluZSBBUFBTX1JDTV9HUFRfQTFfQ0xLX0dBVElOR19HUFRfQTFfUlVOX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gRW5hYmxlIHRoZSBHUFRfQTEgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHJ1biA7IDAgLSBEaXNhYmxlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUFRfQTEgY2xvY2sgZHVyaW5nIHJ1bgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19HUFRfQTFfU09GVF9SRVNFVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9HUFRfQTFfU09GVF9SRVNFVF9HUFRfQTFfRU5BQkxFRF9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gR1BUX0ExIGNsb2Nrcy9yZXNldHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgOyAwIC0gR1BUX0ExCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsb2Nrcy9yZXNldHMgYXJlIGRpc2FibGVkCisKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0ExX1NPRlRfUkVTRVRfR1BUX0ExX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gQXNzZXJ0IHRoZSBzb2Z0IHJlc2V0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUFRfQTEgOyAwIC0gRGUtYXNzZXJ0IHRoZSBzb2Z0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0IGZvciBHUFRfQTEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fR1BUX0EyX0NMS19HQVRJTkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0EyX0NMS19HQVRJTkdfR1BUX0EyX0RTTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDEgLSBFbmFibGUgdGhlIEdQVF9BMiBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgZGVlcC1zbGVlcCA7IDAgLSBEaXNhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBHUFRfQTIgY2xvY2sgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZXAtc2xlZXAKKworI2RlZmluZSBBUFBTX1JDTV9HUFRfQTJfQ0xLX0dBVElOR19OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZFMDAKKworI2RlZmluZSBBUFBTX1JDTV9HUFRfQTJfQ0xLX0dBVElOR19OVTFfUyA5CisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMl9DTEtfR0FUSU5HX0dQVF9BMl9TTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIDEgLSBFbmFibGUgdGhlIEdQVF9BMiBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgc2xlZXAgOyAwIC0gRGlzYWJsZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BUX0EyIGNsb2NrIGR1cmluZyBzbGVlcAorCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMl9DTEtfR0FUSU5HX05VMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRQorCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMl9DTEtfR0FUSU5HX05VMl9TIDEKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0EyX0NMS19HQVRJTkdfR1BUX0EyX1JVTl9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSB0aGUgR1BUX0EyIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBydW4gOyAwIC0gRGlzYWJsZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BUX0EyIGNsb2NrIGR1cmluZyBydW4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fR1BUX0EyX1NPRlRfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0EyX1NPRlRfUkVTRVRfR1BUX0EyX0VOQUJMRURfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIEdQVF9BMiBjbG9ja3MvcmVzZXRzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIDsgMCAtIEdQVF9BMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbG9ja3MvcmVzZXRzIGFyZSBkaXNhYmxlZAorCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BMl9TT0ZUX1JFU0VUX0dQVF9BMl9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEFzc2VydCB0aGUgc29mdCByZXNldCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BUX0EyIDsgMCAtIERlLWFzc2VydCB0aGUgc29mdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNldCBmb3IgR1BUX0EyCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0dQVF9BM19DTEtfR0FUSU5HIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BM19DTEtfR0FUSU5HX0dQVF9BM19EU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAxIC0gRW5hYmxlIHRoZSBHUFRfQTMgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIGRlZXAtc2xlZXAgOyAwIC0gRGlzYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgR1BUX0EzIGNsb2NrIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWVwLXNsZWVwCisKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0EzX0NMS19HQVRJTkdfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRTAwCisKKyNkZWZpbmUgQVBQU19SQ01fR1BUX0EzX0NMS19HQVRJTkdfTlUxX1MgOQorI2RlZmluZSBBUFBTX1JDTV9HUFRfQTNfQ0xLX0dBVElOR19HUFRfQTNfU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyAxIC0gRW5hYmxlIHRoZSBHUFRfQTMgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHNsZWVwIDsgMCAtIERpc2FibGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQVF9BMyBjbG9jayBkdXJpbmcgc2xlZXAKKworI2RlZmluZSBBUFBTX1JDTV9HUFRfQTNfQ0xLX0dBVElOR19OVTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkUKKworI2RlZmluZSBBUFBTX1JDTV9HUFRfQTNfQ0xLX0dBVElOR19OVTJfUyAxCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BM19DTEtfR0FUSU5HX0dQVF9BM19SVU5fQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBFbmFibGUgdGhlIEdQVF9BMyBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgcnVuIDsgMCAtIERpc2FibGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQVF9BMyBjbG9jayBkdXJpbmcgcnVuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0dQVF9BM19TT0ZUX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0dQVF9BM19TT0ZUX1JFU0VUX0dQVF9BM19FTkFCTEVEX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEgLSBHUFRfQTMgQ2xvY2tzL3Jlc2V0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCA7IDAgLSBHUFRfQTMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvY2tzL3Jlc2V0cyBhcmUgZGlzYWJsZWQKKworI2RlZmluZSBBUFBTX1JDTV9HUFRfQTNfU09GVF9SRVNFVF9HUFRfQTNfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBBc3NlcnQgdGhlIHNvZnQgcmVzZXQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQVF9BMyA7IDAgLSBEZS1hc3NlcnQgdGhlIHNvZnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXQgZm9yIEdQVF9BMworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19NQ0FTUF9GUkFDX0NMS19DT05GSUcwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX01DQVNQX0ZSQUNfQ0xLX0NPTkZJRzBfTUNBU1BfRlJBQ19ESVZfRElWSVNPUl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwM0ZGMDAwMAorCisjZGVmaW5lIEFQUFNfUkNNX01DQVNQX0ZSQUNfQ0xLX0NPTkZJRzBfTUNBU1BfRlJBQ19ESVZfRElWSVNPUl9TIDE2CisjZGVmaW5lIEFQUFNfUkNNX01DQVNQX0ZSQUNfQ0xLX0NPTkZJRzBfTUNBU1BfRlJBQ19ESVZfRlJBQ1RJT05fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYKKworI2RlZmluZSBBUFBTX1JDTV9NQ0FTUF9GUkFDX0NMS19DT05GSUcwX01DQVNQX0ZSQUNfRElWX0ZSQUNUSU9OX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fTUNBU1BfRlJBQ19DTEtfQ09ORklHMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9NQ0FTUF9GUkFDX0NMS19DT05GSUcxX01DQVNQX0ZSQUNfRElWX1NPRlRfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAxIC0gQXNzZXJ0IHRoZSByZXNldCBmb3IgTUNBU1AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRnJhYy1jbGsgZGl2OyAwIC0gRG9ub3QgYXNzZXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSByZXNldCBmb3IgTUNBU1AgZnJhYyBjbGstZGl2CisKKyNkZWZpbmUgQVBQU19SQ01fTUNBU1BfRlJBQ19DTEtfQ09ORklHMV9NQ0FTUF9GUkFDX0RJVl9QRVJJT0RfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAzRkYKKworI2RlZmluZSBBUFBTX1JDTV9NQ0FTUF9GUkFDX0NMS19DT05GSUcxX01DQVNQX0ZSQUNfRElWX1BFUklPRF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0NSWVBUT19DTEtfR0FUSU5HIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0NSWVBUT19DTEtfR0FUSU5HX0NSWVBUT19EU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAwIC0gRGlzYWJsZSB0aGUgQ3J5cHRvIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBkZWVwLXNsZWVwCisKKyNkZWZpbmUgQVBQU19SQ01fQ1JZUFRPX0NMS19HQVRJTkdfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRTAwCisKKyNkZWZpbmUgQVBQU19SQ01fQ1JZUFRPX0NMS19HQVRJTkdfTlUxX1MgOQorI2RlZmluZSBBUFBTX1JDTV9DUllQVE9fQ0xLX0dBVElOR19DUllQVE9fU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyAxIC0gRW5hYmxlIHRoZSBDcnlwdG8gY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHNsZWVwIDsgMCAtIERpc2FibGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENyeXB0byBjbG9jayBkdXJpbmcgc2xlZXAKKworI2RlZmluZSBBUFBTX1JDTV9DUllQVE9fQ0xLX0dBVElOR19OVTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkUKKworI2RlZmluZSBBUFBTX1JDTV9DUllQVE9fQ0xLX0dBVElOR19OVTJfUyAxCisjZGVmaW5lIEFQUFNfUkNNX0NSWVBUT19DTEtfR0FUSU5HX0NSWVBUT19SVU5fQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBFbmFibGUgdGhlIENyeXB0byBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgcnVuIDsgMCAtIERpc2FibGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENyeXB0byBjbG9jayBkdXJpbmcgcnVuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0NSWVBUT19TT0ZUX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0NSWVBUT19TT0ZUX1JFU0VUX0NSWVBUT19FTkFCTEVEX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEgLSBDcnlwdG8gY2xvY2tzL3Jlc2V0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCA7IDAgLSBDcnlwdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xvY2tzL3Jlc2V0cyBhcmUgZGlzYWJsZWQKKworI2RlZmluZSBBUFBTX1JDTV9DUllQVE9fU09GVF9SRVNFVF9DUllQVE9fU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBBc3NlcnQgdGhlIHNvZnQgcmVzZXQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENyeXB0byA7IDAgLSBEZS1hc3NlcnQgdGhlIHNvZnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXQgZm9yIENyeXB0bworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19NQ1NQSV9TMF9DTEtfR0FUSU5HIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX1MwX0NMS19HQVRJTkdfTUNTUElfUzBfRFNMUF9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAgLy8gMCAtIERpc2FibGUgdGhlIE1DU1BJX1MwIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBkZWVwLXNsZWVwCisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfUzBfQ0xLX0dBVElOR19OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZFMDAKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9TMF9DTEtfR0FUSU5HX05VMV9TIDkKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfUzBfQ0xLX0dBVElOR19NQ1NQSV9TMF9TTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIDEgLSBFbmFibGUgdGhlIE1DU1BJX1MwIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBzbGVlcCA7IDAgLSBEaXNhYmxlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ1NQSV9TMCBjbG9jayBkdXJpbmcgc2xlZXAKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9TMF9DTEtfR0FUSU5HX05VMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRQorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX1MwX0NMS19HQVRJTkdfTlUyX1MgMQorI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9TMF9DTEtfR0FUSU5HX01DU1BJX1MwX1JVTl9DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSB0aGUgTUNTUElfUzAgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIHJ1biA7IDAgLSBEaXNhYmxlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ1NQSV9TMCBjbG9jayBkdXJpbmcgcnVuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX01DU1BJX1MwX1NPRlRfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfUzBfU09GVF9SRVNFVF9NQ1NQSV9TMF9FTkFCTEVEX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEgLSBNQ1NQSV9TMCBDbG9ja3MvUmVzZXRzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIDsgMCAtIE1DU1BJX1MwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsb2Nrcy9yZXNldHMgYXJlIGRpc2FibGVkCisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfUzBfU09GVF9SRVNFVF9NQ1NQSV9TMF9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEFzc2VydCB0aGUgc29mdCByZXNldCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUNTUElfUzAgOyAwIC0gRGUtYXNzZXJ0IHRoZSBzb2Z0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0IGZvciBNQ1NQSV9TMAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19NQ1NQSV9TMF9DTEtESVZfQ0ZHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX1MwX0NMS0RJVl9DRkdfTUNTUElfUzBfQkFVRF9DTEtfU0VMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAgLy8gMCAtIFhUQUwgY2xrIGlzIHVzZWQgYXMgYmF1ZC1jbGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIE1DU1BJX1MwIDsgMSAtIFBMTCBkaXZjbGsgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBhcyBidWFkLWNsayBmb3IgTUNTUElfUzAKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9TMF9DTEtESVZfQ0ZHX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRjgwMAorCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX1MwX0NMS0RJVl9DRkdfTlUxX1MgMTEKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfUzBfQ0xLRElWX0NGR19NQ1NQSV9TMF9QTExDTEtESVZfT0ZGX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA3MDAgIC8vIENvbmZpZ3VyYXRpb24gb2YgT0ZGLVRJTUUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpdmlkaW5nIFBMTCBjbGsgKDI0MCBNSHopIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdlbmVyYXRpb24gb2YgTUNTUElfUzAgZnVuYy1jbGsgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDAwIiAtIDEgIjAwMSIgLSAyICIwMTAiIC0gMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDExIiAtIDQgIjEwMCIgLSA1ICIxMDEiIC0gNgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMTEwIiAtIDcgIjExMSIgLSA4CisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfUzBfQ0xLRElWX0NGR19NQ1NQSV9TMF9QTExDTEtESVZfT0ZGX1RJTUVfUyA4CisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX1MwX0NMS0RJVl9DRkdfTlUyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEY4CisKKyNkZWZpbmUgQVBQU19SQ01fTUNTUElfUzBfQ0xLRElWX0NGR19OVTJfUyAzCisjZGVmaW5lIEFQUFNfUkNNX01DU1BJX1MwX0NMS0RJVl9DRkdfTUNTUElfUzBfUExMQ0xLRElWX09OX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcgIC8vIENvbmZpZ3VyYXRpb24gb2YgT04tVElNRSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGl2aWRpbmcgUExMIGNsayAoMjQwIE1IeikgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGlvbiBvZiBNQ1NQSV9TMCBmdW5jLWNsayA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMDAiIC0gMSAiMDAxIiAtIDIgIjAxMCIgLSAzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTEiIC0gNCAiMTAwIiAtIDUgIjEwMSIgLSA2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIxMTAiIC0gNyAiMTExIiAtIDgKKworI2RlZmluZSBBUFBTX1JDTV9NQ1NQSV9TMF9DTEtESVZfQ0ZHX01DU1BJX1MwX1BMTENMS0RJVl9PTl9USU1FX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fSTJDX0NMS19HQVRJTkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fSTJDX0NMS19HQVRJTkdfSTJDX0RTTFBfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDEgLSBFbmFibGUgdGhlIEkyQyBDbG9jayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVlcC1zbGVlcCAwIC0gRGlzYWJsZSB0aGUgSTJDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsb2NrIGR1cmluZyBkZWVwLXNsZWVwCisKKyNkZWZpbmUgQVBQU19SQ01fSTJDX0NMS19HQVRJTkdfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRTAwCisKKyNkZWZpbmUgQVBQU19SQ01fSTJDX0NMS19HQVRJTkdfTlUxX1MgOQorI2RlZmluZSBBUFBTX1JDTV9JMkNfQ0xLX0dBVElOR19JMkNfU0xQX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyAxIC0gRW5hYmxlIHRoZSBJMkMgY2xvY2sgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsZWVwIDsgMCAtIERpc2FibGUgdGhlIEkyQyBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgc2xlZXAKKworI2RlZmluZSBBUFBTX1JDTV9JMkNfQ0xLX0dBVElOR19OVTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkUKKworI2RlZmluZSBBUFBTX1JDTV9JMkNfQ0xLX0dBVElOR19OVTJfUyAxCisjZGVmaW5lIEFQUFNfUkNNX0kyQ19DTEtfR0FUSU5HX0kyQ19SVU5fQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBFbmFibGUgdGhlIEkyQyBjbG9jayBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcnVuIDsgMCAtIERpc2FibGUgdGhlIEkyQyBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgcnVuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0kyQ19TT0ZUX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0kyQ19TT0ZUX1JFU0VUX0kyQ19FTkFCTEVEX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEgLSBJMkMgQ2xvY2tzL1Jlc2V0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCA7IDAgLSBJMkMgY2xvY2tzL3Jlc2V0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmUgZGlzYWJsZWQKKworI2RlZmluZSBBUFBTX1JDTV9JMkNfU09GVF9SRVNFVF9JMkNfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBBc3NlcnQgdGhlIHNvZnQgcmVzZXQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNoYXJlZC1JMkMgOyAwIC0gRGUtYXNzZXJ0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzb2Z0IHJlc2V0IGZvciBTaGFyZWQtSTJDCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0FQUFNfTFBEU19SRVEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fQVBQU19MUERTX1JFUV9BUFBTX0xQRFNfUkVRIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIFJlcXVlc3QgZm9yIExQRFMKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fQVBQU19UVVJCT19SRVEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fQVBQU19UVVJCT19SRVFfQVBQU19UVVJCT19SRVEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gUmVxdWVzdCBmb3IgVFVSQk8KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEFQUFNfUkNNX09fQVBQU19EU0xQX1dBS0VfQ09ORklHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0FQUFNfRFNMUF9XQUtFX0NPTkZJR19EU0xQX1dBS0VfRlJPTV9OV1BfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIEVuYWJsZSB0aGUgTldQIHRvIHdha2UgQVBQUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIGRlZXAtc2xlZXAgOyAwIC0gRGlzYWJsZSBOV1AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gd2FrZSBBUFBTIGZyb20gZGVlcC1zbGVlcAorCisjZGVmaW5lIEFQUFNfUkNNX0FQUFNfRFNMUF9XQUtFX0NPTkZJR19EU0xQX1dBS0VfVElNRVJfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSBkZWVwLXNsZWVwIHdha2UgdGltZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gQVBQUyBSQ00gZm9yIGRlZXAtc2xlZXA7IDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEaXNhYmxlIGRlZXAtc2xlZXAgd2FrZSB0aW1lciBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUFBTIFJDTQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19BUFBTX0RTTFBfV0FLRV9USU1FUl9DRkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fQVBQU19EU0xQX1dBS0VfVElNRVJfQ0ZHX0RTTFBfV0FLRV9USU1FUl9PUFBfQ0ZHX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYwMDAwICAvLyBDb25maWd1cmF0aW9uIChpbiBzbG93X2Nsa3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIHNheXMgd2hlbiB0byByZXF1ZXN0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPUFAgZHVyaW5nIGRlZXAtc2xlZXAgZXhpdAorCisjZGVmaW5lIEFQUFNfUkNNX0FQUFNfRFNMUF9XQUtFX1RJTUVSX0NGR19EU0xQX1dBS0VfVElNRVJfT1BQX0NGR19TIDE2CisjZGVmaW5lIEFQUFNfUkNNX0FQUFNfRFNMUF9XQUtFX1RJTUVSX0NGR19EU0xQX1dBS0VfVElNRVJfV0FLRV9DRkdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYgIC8vIENvbmZpZ3VyYXRpb24gKGluIHNsb3dfY2xrcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggc2F5cyB3aGVuIHRvIHJlcXVlc3QgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdBS0UgZHVyaW5nIGRlZXAtc2xlZXAgZXhpdAorCisjZGVmaW5lIEFQUFNfUkNNX0FQUFNfRFNMUF9XQUtFX1RJTUVSX0NGR19EU0xQX1dBS0VfVElNRVJfV0FLRV9DRkdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19BUFBTX1JDTV9TTFBfV0FLRV9FTkFCTEUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fQVBQU19SQ01fU0xQX1dBS0VfRU5BQkxFX1NMUF9XQUtFX0ZST01fTldQX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEtIEVuYWJsZSB0aGUgc2xlZXAgd2FrZXVwIGR1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBOV1AgcmVxdWVzdC4gMC0gRGlzYWJsZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xlZXAgd2FrZXVwIGR1ZSB0byBOV1AgcmVxdWVzdAorCisjZGVmaW5lIEFQUFNfUkNNX0FQUFNfUkNNX1NMUF9XQUtFX0VOQUJMRV9TTFBfV0FLRV9USU1FUl9FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxLSBFbmFibGUgdGhlIHNsZWVwIHdha2V1cCBkdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gc2xlZXAtdGltZXI7IDAtRGlzYWJsZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xlZXAgd2FrZXVwIGR1ZSB0byBzbGVlcC10aW1lcgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQVBQU19SQ01fT19BUFBTX1NMUF9XQUtFVElNRVJfQ0ZHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEFQUFNfUkNNX0FQUFNfU0xQX1dBS0VUSU1FUl9DRkdfU0xQX1dBS0VfVElNRVJfQ0ZHX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBDb25maWd1cmF0aW9uIChudW1iZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3lzY2xrcy04ME1IeikgZm9yIHRoZSBTbGVlcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3YWtldXAgdGltZXIKKworI2RlZmluZSBBUFBTX1JDTV9BUFBTX1NMUF9XQUtFVElNRVJfQ0ZHX1NMUF9XQUtFX1RJTUVSX0NGR19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0FQUFNfVE9fTldQX1dBS0VfUkVRVUVTVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBBUFBTX1JDTV9BUFBTX1RPX05XUF9XQUtFX1JFUVVFU1RfQVBQU19UT19OV1BfV0FLRVVQX1JFUVVFU1QgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyBXaGVuIDEgPT4gQVBQUyBnZW5lcmF0ZWQgYSB3YWtlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcXVlc3QgdG8gTldQIChXaGVuIE5XUCBpcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgaXRzIGxvdy1wb3dlciBtb2RlcyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNMUC9EU0xQL0xQRFMpCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBBUFBTX1JDTV9PX0FQUFNfUkNNX0lOVEVSUlVQVF9TVEFUVVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQVBQU19SQ01fQVBQU19SQ01fSU5URVJSVVBUX1NUQVRVU19hcHBzX2RlZXBfc2xlZXBfdGltZXJfd2FrZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDggIC8vIDEgLSBJbmRpY2F0ZXMgdGhhdCBkZWVwLXNsZWVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRpbWVyIGV4cGlyeSBoYWQgY2F1c2VkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3YWtldXAgZnJvbSBkZWVwLXNsZWVwCisKKyNkZWZpbmUgQVBQU19SQ01fQVBQU19SQ01fSU5URVJSVVBUX1NUQVRVU19hcHBzX3NsZWVwX3RpbWVyX3dha2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0ICAvLyAxIC0gSW5kaWNhdGVzIHRoYXQgc2xlZXAgdGltZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhwaXJ5IGhhZCBjYXVzZWQgdGhlIHdha2V1cCBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsZWVwCisKKyNkZWZpbmUgQVBQU19SQ01fQVBQU19SQ01fSU5URVJSVVBUX1NUQVRVU19hcHBzX2RlZXBfc2xlZXBfd2FrZV9mcm9tX253cCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEgLSBJbmRpY2F0ZXMgdGhhdCBOV1AgaGFkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhdXNlZCB0aGUgd2FrZXVwIGZyb20gZGVlcC1zbGVlcAorCisjZGVmaW5lIEFQUFNfUkNNX0FQUFNfUkNNX0lOVEVSUlVQVF9TVEFUVVNfYXBwc19zbGVlcF93YWtlX2Zyb21fbndwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEluZGljYXRlcyB0aGF0IE5XUCBoYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2F1c2VkIHRoZSB3YWtldXAgZnJvbSBTbGVlcAorCisKKworCisjZW5kaWYgLy8gX19IV19BUFBTX1JDTV9IX18KZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19jb21tb25fcmVnLmggYi9leHQvaGFsL3RpL2NjMzIyMHNkay9pbmMvaHdfY29tbW9uX3JlZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YmViYzgKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9pbmMvaHdfY29tbW9uX3JlZy5oCkBAIC0wLDAgKzEsMTExNSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCisgKgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKgorICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0hXX0NPTU1PTl9SRUdfSF9fCisjZGVmaW5lIF9fSFdfQ09NTU9OX1JFR19IX18KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBDT01NT05fUkVHIHJlZ2lzdGVyIG9mZnNldHMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX09fSTJDX1Byb3BlcnRpZXNfUmVnaXN0ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwCisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX1NQSV9Qcm9wZXJ0aWVzX1JlZ2lzdGVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBDCisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfc2hfcmVzb3VyY2VfSW50ZXJydXB0X3N0YXR1cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAKKworI2RlZmluZSBDT01NT05fUkVHX09fTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDE0CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX05XUF9zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfc3RhdHVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxOAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19GbGFzaF9jdHJsX3JlZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMUMKKworI2RlZmluZSBDT01NT05fUkVHX09fQnVzX21hdHJpeF9NMF9zZWdtZW50X2FjY2Vzc19jb25maWcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDI0CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0J1c19tYXRyaXhfTTFfc2VnbWVudF9hY2Nlc3NfY29uZmlnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyOAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19CdXNfbWF0cml4X00yX3NlZ21lbnRfYWNjZXNzX2NvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMkMKKworI2RlZmluZSBDT01NT05fUkVHX09fQnVzX21hdHJpeF9NM19zZWdtZW50X2FjY2Vzc19jb25maWcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDMwCisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0J1c19tYXRyaXhfTTRfc2VnbWVudF9hY2Nlc3NfY29uZmlnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzNAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19CdXNfbWF0cml4X001X3NlZ21lbnRfYWNjZXNzX2NvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMzgKKworI2RlZmluZSBDT01NT05fUkVHX09fR1BJT19wcm9wZXJ0aWVzX3JlZ2lzdGVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzQworCisjZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQwCisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDQKKworI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkUzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0OAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDRDCisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFNSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNTAKKworI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkU2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA1NAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDU4CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFOCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNUMKKworI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkU5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA2MAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTEwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA2NAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTExIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA2OAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTEyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA2QworCisjZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX1NFTUFQUEhPUkVfUEVORCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNzAKKworI2RlZmluZSBDT01NT05fUkVHX09fTldfU0VNQVBQSE9SRV9QRU5EIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3NAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19TRU1BUEhPUkVfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3OAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19JRE1FTV9USU1fVXBkYXRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3QworCisjZGVmaW5lIENPTU1PTl9SRUdfT19GUEdBX1JPTV9XUl9FTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAKKworI2RlZmluZSBDT01NT05fUkVHX09fTldfSU5UX01BU0sgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDg0CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX05XX0lOVF9NQVNLX1NFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODgKKworI2RlZmluZSBDT01NT05fUkVHX09fTldfSU5UX01BU0tfQ0xSIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4QworCisjZGVmaW5lIENPTU1PTl9SRUdfT19OV19JTlRfU1RTX0NMUiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwOTAKKworI2RlZmluZSBDT01NT05fUkVHX09fTldfSU5UX0FDSyAweDAwMDAwMDk0CisjZGVmaW5lIENPTU1PTl9SRUdfT19OV19JTlRfVFJJRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwOTgKKworI2RlZmluZSBDT01NT05fUkVHX09fTldfSU5UX1NUU19NQVNLRUQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDlDCisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX05XX0lOVF9TVFNfUkFXIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBBMAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX0lOVF9NQVNLIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBBNAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX0lOVF9NQVNLX1NFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQTgKKworI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19JTlRfTUFTS19DTFIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEFDCisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfSU5UX1NUU19DTFIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEIwCisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfSU5UX0FDSyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQjQKKworI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19JTlRfVFJJRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQjgKKworI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19JTlRfU1RTX01BU0tFRCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQkMKKworI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19JTlRfU1RTX1JBVyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQzAKKworI2RlZmluZSBDT01NT05fUkVHX09fSURNRU1fVElNX1VwZGF0ZWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEM0CisKKyNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfR1BJT19UUklHX0VOIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBDOAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19FTVVfREVCVUdfUkVHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBDQworCisjZGVmaW5lIENPTU1PTl9SRUdfT19TRU1BUEhPUkVfU1RBVFVTMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRDAKKworI2RlZmluZSBDT01NT05fUkVHX09fU0VNQVBIT1JFX1BSRVZfT1dORVIxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBENAorCisjZGVmaW5lIENPTU1PTl9SRUdfT19TRU1BUEhPUkVfUFJFVl9PV05FUjIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEQ4CisKKworCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fSTJDX1Byb3BlcnRpZXNfUmVnaXN0ZXIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19JMkNfUHJvcGVydGllc19SZWdpc3Rlcl9JMkNfUHJvcGVydGllc19SZWdpc3Rlcl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgYml0LiDigKIgV2hlbiB0aGlzIHJlZ2lzdGVyIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzcy4g4oCiIElkZWFsbHkgYm90aCB0aGUgbWFzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDEgb3IgMuKAmWIwMCB0byB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgdGhlIGJpdCBvZiB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBpcyBvbmUgbWFzdGVyIHdpbGwgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuCisKKyNkZWZpbmUgQ09NTU9OX1JFR19JMkNfUHJvcGVydGllc19SZWdpc3Rlcl9JMkNfUHJvcGVydGllc19SZWdpc3Rlcl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fU1BJX1Byb3BlcnRpZXNfUmVnaXN0ZXIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19TUElfUHJvcGVydGllc19SZWdpc3Rlcl9TUElfUHJvcGVydGllc19SZWdpc3Rlcl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgYml0LiDigKIgV2hlbiB0aGlzIHJlZ2lzdGVyIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzcy4g4oCiIElkZWFsbHkgYm90aCB0aGUgbWFzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDEgb3IgMuKAmWIwMCB0byB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgdGhlIGJpdCBvZiB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBpcyBvbmUgbWFzdGVyIHdpbGwgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuCisKKyNkZWZpbmUgQ09NTU9OX1JFR19TUElfUHJvcGVydGllc19SZWdpc3Rlcl9TUElfUHJvcGVydGllc19SZWdpc3Rlcl9TIDAKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfQVBQU19zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfZW5hYmxlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBGICAvLyBJbnRlcnJ1cHQgZW5hYmxlIEFQUFMgYml0IDAgLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiAnMScgZW5hYmxlIEkyQyBpbnRlcnJ1cHQgYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEgLT4gd2hlbiAnMScgZW5hYmxlIFNQSQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQgYml0IDMgLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiAnMScgZW5hYmxlIEdQSU8gaW50ZXJydXB0CisKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfQVBQU19zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfZW5hYmxlX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXNfQVBQU19zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfc3RhdHVzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBGICAvLyBJbnRlcnJ1cHQgZW5hYmxlIEFQUFMgYml0IDAgLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiAnMScgZW5hYmxlIEkyQyBpbnRlcnJ1cHQgYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEgLT4gd2hlbiAnMScgZW5hYmxlIFNQSQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQgYml0IDMgLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiAnMScgZW5hYmxlIEdQSU8gaW50ZXJydXB0CisKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXNfQVBQU19zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfc3RhdHVzX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19OV1Bfc2hfcmVzb3VyY2VfSW50ZXJydXB0X2VuYWJsZSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX05XUF9zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfZW5hYmxlX05XUF9zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfZW5hYmxlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBGICAvLyBJbnRlcnJ1cHQgZW5hYmxlIE5XUCBiaXQgMCAtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuICcxJyBlbmFibGUgSTJDIGludGVycnVwdCBiaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMSAtPiB3aGVuICcxJyBlbmFibGUgU1BJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBiaXQgMyAtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuICcxJyBlbmFibGUgR1BJTyBpbnRlcnJ1cHQKKworI2RlZmluZSBDT01NT05fUkVHX05XUF9zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfZW5hYmxlX05XUF9zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfZW5hYmxlX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19OV1Bfc2hfcmVzb3VyY2VfSW50ZXJydXB0X3N0YXR1cyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX05XUF9zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfc3RhdHVzX05XUF9zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfc3RhdHVzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBGICAvLyBJbnRlcnJ1cHQgZW5hYmxlIE5XUCBiaXQgMCAtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuICcxJyBlbmFibGUgSTJDIGludGVycnVwdCBiaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMSAtPiB3aGVuICcxJyBlbmFibGUgU1BJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBiaXQgMyAtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuICcxJyBlbmFibGUgR1BJTyBpbnRlcnJ1cHQKKworI2RlZmluZSBDT01NT05fUkVHX05XUF9zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfc3RhdHVzX05XUF9zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfc3RhdHVzX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19GbGFzaF9jdHJsX3JlZyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0ZsYXNoX2N0cmxfcmVnX0ZsYXNoX2N0cmxfcmVnX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2FpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4KKworI2RlZmluZSBDT01NT05fUkVHX0ZsYXNoX2N0cmxfcmVnX0ZsYXNoX2N0cmxfcmVnX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19CdXNfbWF0cml4X00wX3NlZ21lbnRfYWNjZXNzX2NvbmZpZyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0J1c19tYXRyaXhfTTBfc2VnbWVudF9hY2Nlc3NfY29uZmlnX0J1c19tYXRyaXhfTTBfc2VnbWVudF9hY2Nlc3NfY29uZmlnX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDNGRkZGICAvLyBNYXN0ZXIgMCBjb250cm9sIHdvcmQgbWF0cml4IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVhY2ggc2VnbWVudC4gVGllb2ZmLiBCaXQgdmFsdWUgMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpY2F0ZXMgc2VnbWVudCBpcyBhY2Nlc2FibGUuCisKKyNkZWZpbmUgQ09NTU9OX1JFR19CdXNfbWF0cml4X00wX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19CdXNfbWF0cml4X00wX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQnVzX21hdHJpeF9NMV9zZWdtZW50X2FjY2Vzc19jb25maWcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19CdXNfbWF0cml4X00xX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19CdXNfbWF0cml4X00xX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAzRkZGRiAgLy8gTWFzdGVyIDEgY29udHJvbCB3b3JkIG1hdHJpeCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlYWNoIHNlZ21lbnQuIFRpZW9mZi4gQml0IHZhbHVlIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5kaWNhdGVzIHNlZ21lbnQgaXMgYWNjZXNhYmxlLgorCisjZGVmaW5lIENPTU1PTl9SRUdfQnVzX21hdHJpeF9NMV9zZWdtZW50X2FjY2Vzc19jb25maWdfQnVzX21hdHJpeF9NMV9zZWdtZW50X2FjY2Vzc19jb25maWdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0J1c19tYXRyaXhfTTJfc2VnbWVudF9hY2Nlc3NfY29uZmlnIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQnVzX21hdHJpeF9NMl9zZWdtZW50X2FjY2Vzc19jb25maWdfQnVzX21hdHJpeF9NMl9zZWdtZW50X2FjY2Vzc19jb25maWdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwM0ZGRkYgIC8vIE1hc3RlciAyIGNvbnRyb2wgd29yZCBtYXRyaXggdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWFjaCBzZWdtZW50LiBUaWVvZmYuIEJpdCB2YWx1ZSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZGljYXRlcyBzZWdtZW50IGlzIGFjY2VzYWJsZS4KKworI2RlZmluZSBDT01NT05fUkVHX0J1c19tYXRyaXhfTTJfc2VnbWVudF9hY2Nlc3NfY29uZmlnX0J1c19tYXRyaXhfTTJfc2VnbWVudF9hY2Nlc3NfY29uZmlnX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19CdXNfbWF0cml4X00zX3NlZ21lbnRfYWNjZXNzX2NvbmZpZyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0J1c19tYXRyaXhfTTNfc2VnbWVudF9hY2Nlc3NfY29uZmlnX0J1c19tYXRyaXhfTTNfc2VnbWVudF9hY2Nlc3NfY29uZmlnX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDNGRkZGICAvLyBNYXN0ZXIgMyBjb250cm9sIHdvcmQgbWF0cml4IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVhY2ggc2VnbWVudC4gVGllb2ZmLiBCaXQgdmFsdWUgMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpY2F0ZXMgc2VnbWVudCBpcyBhY2Nlc2FibGUuCisKKyNkZWZpbmUgQ09NTU9OX1JFR19CdXNfbWF0cml4X00zX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19CdXNfbWF0cml4X00zX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQnVzX21hdHJpeF9NNF9zZWdtZW50X2FjY2Vzc19jb25maWcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19CdXNfbWF0cml4X000X3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19CdXNfbWF0cml4X000X3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAzRkZGRiAgLy8gTWFzdGVyIDQgY29udHJvbCB3b3JkIG1hdHJpeCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlYWNoIHNlZ21lbnQuIFRpZW9mZi4gQml0IHZhbHVlIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5kaWNhdGVzIHNlZ21lbnQgaXMgYWNjZXNhYmxlLgorCisjZGVmaW5lIENPTU1PTl9SRUdfQnVzX21hdHJpeF9NNF9zZWdtZW50X2FjY2Vzc19jb25maWdfQnVzX21hdHJpeF9NNF9zZWdtZW50X2FjY2Vzc19jb25maWdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0J1c19tYXRyaXhfTTVfc2VnbWVudF9hY2Nlc3NfY29uZmlnIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQnVzX21hdHJpeF9NNV9zZWdtZW50X2FjY2Vzc19jb25maWdfQnVzX21hdHJpeF9NNV9zZWdtZW50X2FjY2Vzc19jb25maWdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwM0ZGRkYgIC8vIE1hc3RlciA1IGNvbnRyb2wgd29yZCBtYXRyaXggdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWFjaCBzZWdtZW50LiBUaWVvZmYuIEJpdCB2YWx1ZSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZGljYXRlcyBzZWdtZW50IGlzIGFjY2VzYWJsZS4KKworI2RlZmluZSBDT01NT05fUkVHX0J1c19tYXRyaXhfTTVfc2VnbWVudF9hY2Nlc3NfY29uZmlnX0J1c19tYXRyaXhfTTVfc2VnbWVudF9hY2Nlc3NfY29uZmlnX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19HUElPX3Byb3BlcnRpZXNfcmVnaXN0ZXIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19HUElPX3Byb3BlcnRpZXNfcmVnaXN0ZXJfR1BJT19wcm9wZXJ0aWVzX3JlZ2lzdGVyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwM0ZGICAvLyBTaGFyZWQgR1BJTyBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyLiBCaXQgWzE6MF0gdG8gY29uZmlndXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8wIEJpdCBbMzoyXSB0byBjb25maWd1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTzEgQml0IFs1OjRdIHRvIGNvbmZpZ3VyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPMiBCaXQgWzc6Nl0gdG8gY29uZmlndXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8zIEJpdCBbOTo4XSB0byBjb25maWd1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTzQgZWFjaCBHUElPIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpdmlkdWxseSBzZWxlY3RlZC4gV2hlbiDigJwwMOKAPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIGlzIGZyZWUgcmVzb3VyY2UuIFdoZW4g4oCcMDHigD8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyBpcyBBUFBTIHJlc291cmNlLiBXaGVuIOKAnDEw4oA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gaXMgTldQIHJlc291cmNlLiBXcml0aW5nIDExCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvZXNudCBoYXZlIGFueSBhZmZlY3QsIGkuZS4gSWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25lIHdyaXRlIG9ubHkgcmVsZXZhbnQgZ3BpbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZW1hcGhvcmUgYW5kIG90aGVyIGJpdHMgYXJlIDFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCdsbCBub3QgZGlzdHVyYiB0aGUgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VtYXBob3JlIGJpdHMuIEZvciBleGFtcGxlIDogU2F5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIE5XIHdhbnRzIHRvIHRha2UgY29udHJvbCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBncGlvLTEsIG9uZSBzaG91bGQgd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTAnYjExXzExMTFfMTAxMSBhbmQgaWYgb25lIHdhbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHJlbGVhc2UgaXQgd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTAnYjExXzExMTFfMDAxMS4KKworI2RlZmluZSBDT01NT05fUkVHX0dQSU9fcHJvcGVydGllc19yZWdpc3Rlcl9HUElPX3Byb3BlcnRpZXNfcmVnaXN0ZXJfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFMV9BUFBTX05XX1NFTUFQSE9SRTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2VzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLgorCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUxX0FQUFNfTldfU0VNQVBIT1JFMV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkUyIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUyX0FQUFNfTldfU0VNQVBIT1JFMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgYml0LiDigKIgV2hlbiB0aGlzIHJlZ2lzdGVyIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzcy4g4oCiIElkZWFsbHkgYm90aCB0aGUgbWFzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDEgb3IgMuKAmWIwMCB0byB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgdGhlIGJpdCBvZiB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBpcyBvbmUgbWFzdGVyIHdpbGwgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuCisKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTJfQVBQU19OV19TRU1BUEhPUkUyX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTNfQVBQU19OV19TRU1BUEhPUkUzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2FpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4KKworI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFM19BUFBTX05XX1NFTUFQSE9SRTNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFNCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFNF9BUFBTX05XX1NFTUFQSE9SRTRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2VzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLgorCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkU0X0FQUFNfTldfU0VNQVBIT1JFNF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkU1IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkU1X0FQUFNfTldfU0VNQVBIT1JFNV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgYml0LiDigKIgV2hlbiB0aGlzIHJlZ2lzdGVyIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzcy4g4oCiIElkZWFsbHkgYm90aCB0aGUgbWFzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDEgb3IgMuKAmWIwMCB0byB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgdGhlIGJpdCBvZiB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBpcyBvbmUgbWFzdGVyIHdpbGwgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuCisKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTVfQVBQU19OV19TRU1BUEhPUkU1X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTZfQVBQU19OV19TRU1BUEhPUkU2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2FpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4KKworI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFNl9BUFBTX05XX1NFTUFQSE9SRTZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFNyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFN19BUFBTX05XX1NFTUFQSE9SRTdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2VzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLgorCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkU3X0FQUFNfTldfU0VNQVBIT1JFN19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkU4IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkU4X0FQUFNfTldfU0VNQVBIT1JFOF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgYml0LiDigKIgV2hlbiB0aGlzIHJlZ2lzdGVyIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzcy4g4oCiIElkZWFsbHkgYm90aCB0aGUgbWFzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDEgb3IgMuKAmWIwMCB0byB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgdGhlIGJpdCBvZiB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBpcyBvbmUgbWFzdGVyIHdpbGwgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuCisKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRThfQVBQU19OV19TRU1BUEhPUkU4X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTkgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTlfQVBQU19OV19TRU1BUEhPUkU5X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2FpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4KKworI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFOV9BUFBTX05XX1NFTUFQSE9SRTlfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMTAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTEwX0FQUFNfTldfU0VNQVBIT1JFMTBfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2VzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLgorCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUxMF9BUFBTX05XX1NFTUFQSE9SRTEwX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTExIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUxMV9BUFBTX05XX1NFTUFQSE9SRTExX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2FpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4KKworI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFMTFfQVBQU19OV19TRU1BUEhPUkUxMV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkUxMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFMTJfQVBQU19OV19TRU1BUEhPUkUxMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gQVBQUyBOVyBzZW1hcGhvcmUgcmVnaXN0ZXIgLSBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVmbGVjdGVkIGluIHN0YXR1cy4KKworI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFMTJfQVBQU19OV19TRU1BUEhPUkUxMl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQVBQU19TRU1BUFBIT1JFX1BFTkQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX1NFTUFQUEhPUkVfUEVORF9BUFBTX1NFTUFQUEhPUkVfUEVORF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gQVBQUyBTRU1BUE9IT1JFIFNUQVRVUworCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19TRU1BUFBIT1JFX1BFTkRfQVBQU19TRU1BUFBIT1JFX1BFTkRfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX05XX1NFTUFQUEhPUkVfUEVORCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX05XX1NFTUFQUEhPUkVfUEVORF9OV19TRU1BUFBIT1JFX1BFTkRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIE5XIFNFTUFQSE9SRSBTVEFUVVMKKworI2RlZmluZSBDT01NT05fUkVHX05XX1NFTUFQUEhPUkVfUEVORF9OV19TRU1BUFBIT1JFX1BFTkRfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX1NFTUFQSE9SRV9TVEFUVVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19TRU1BUEhPUkVfU1RBVFVTX1NFTUFQSE9SRV9TVEFUVVNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIFNFTUFQSE9SRSBTVEFUVVMgOTo4IDpzZW1hcGhvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhdHVzIG9mIGZsYXNoX2NvbnRyb2wgNzo2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDpzZW1hcGhvcmUgc3RhdHVzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdwaW9fcHJvcGVydGllcyA1OjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOnNlbWFwaG9yZSBzdGF0dXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BpX3Byb3BlcnRpZSAxOjAgOnNlbWFwaG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0dXMgb2YgaTJjX3Byb3BlcnRpZQorCisjZGVmaW5lIENPTU1PTl9SRUdfU0VNQVBIT1JFX1NUQVRVU19TRU1BUEhPUkVfU1RBVFVTX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19JRE1FTV9USU1fVXBkYXRlIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0ZQR0FfUk9NX1dSX0VOIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfRlBHQV9ST01fV1JfRU5fRlBHQV9ST01fV1JfRU4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyB3aGVuICcxJyBlbmFibGVzIFdyaXRlIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSURNRU0gQ09SRSBST00sIEFQUFMgUk9NLCBOV1AgUk9NCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fTldfSU5UX01BU0sgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfTUFTS19OV19JTlRfTUFTS19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gMT0gZGlzYWJsZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdDswID0gaW50ZXJydXB0IGVuYWJsZWQKKworI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9NQVNLX05XX0lOVF9NQVNLX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19OV19JTlRfTUFTS19TRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfTUFTS19TRVRfTldfSU5UX01BU0tfU0VUX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyB3cml0ZSAxIHRvIHNldCBjb3JyZXNwb25kaW5nIGJpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBOV19JTlRfTUFTSzswID0gbm8gZWZmZWN0CisKKyNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfTUFTS19TRVRfTldfSU5UX01BU0tfU0VUX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19OV19JTlRfTUFTS19DTFIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfTUFTS19DTFJfTldfSU5UX01BU0tfQ0xSX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyB3cml0ZSAxIHRvIGNsZWFyIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IGluIE5XX0lOVF9NQVNLOzAgPSBubyBlZmZlY3QKKworI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9NQVNLX0NMUl9OV19JTlRfTUFTS19DTFJfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX05XX0lOVF9TVFNfQ0xSIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfTldfSU5UX1NUU19DTFJfTldfSU5UX1NUU19DTFJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gY2xlYXIgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQ7IDAgPSBubyBlZmZlY3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBpcyBub3QgbG9zdCBpZiBjb2luY2lkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIHdyaXRlIG9wZXJhdGlvbgorCisjZGVmaW5lIENPTU1PTl9SRUdfTldfSU5UX1NUU19DTFJfTldfSU5UX1NUU19DTFJfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX05XX0lOVF9BQ0sgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfQUNLX05XX0lOVF9BQ0tfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gY2xlYXIgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQ7MCA9IG5vIGVmZmVjdAorCisjZGVmaW5lIENPTU1PTl9SRUdfTldfSU5UX0FDS19OV19JTlRfQUNLX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19OV19JTlRfVFJJRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9UUklHX05XX0lOVF9UUklHX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBXcml0aW5nIGEgMSB0byBhIGJpdCBpbiB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGNhdXNlcyB0aGUgdGhlIEhvc3QgQ1BVCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGVuYWJsZWQgKG5vdCBtYXNrZWQpLiBUaGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGlzIHNlbGYtY2xlYXJpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdyaXRpbmcgMCBoYXMgbm8gZWZmZWN0CisKKyNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfVFJJR19OV19JTlRfVFJJR19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fTldfSU5UX1NUU19NQVNLRUQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfU1RTX01BU0tFRF9OV19JTlRfU1RTX01BU0tFRF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gMT0gY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZlIGFuZCBub3QgbWFza2VkLiByZWFkIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vbi1kZXN0cnVjdGl2ZTswID0gY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQgaXMgaW5hY3RpdmUgb3IgbWFza2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IE5XX0lOVCBtYXNrCisKKyNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfU1RTX01BU0tFRF9OV19JTlRfU1RTX01BU0tFRF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fTldfSU5UX1NUU19SQVcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfU1RTX1JBV19OV19JTlRfU1RTX1JBV19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gMT0gY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZlLiByZWFkIGlzIG5vbi1kZXN0cnVjdGl2ZTswCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vID0gY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5hY3RpdmUKKworI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9TVFNfUkFXX05XX0lOVF9TVFNfUkFXX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19BUFBTX0lOVF9NQVNLIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfTUFTS19BUFBTX0lOVF9NQVNLX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAxPSBkaXNhYmxlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0OzAgPSBpbnRlcnJ1cHQgZW5hYmxlZAorCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfTUFTS19BUFBTX0lOVF9NQVNLX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19BUFBTX0lOVF9NQVNLX1NFVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX01BU0tfU0VUX0FQUFNfSU5UX01BU0tfU0VUX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyB3cml0ZSAxIHRvIHNldCBjb3JyZXNwb25kaW5nIGJpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBBUFBTX0lOVF9NQVNLOzAgPSBubyBlZmZlY3QKKworI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX01BU0tfU0VUX0FQUFNfSU5UX01BU0tfU0VUX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19BUFBTX0lOVF9NQVNLX0NMUiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX01BU0tfQ0xSX0FQUFNfSU5UX01BU0tfQ0xSX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyB3cml0ZSAxIHRvIGNsZWFyIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IGluIEFQUFNfSU5UX01BU0s7MCA9IG5vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVmZmVjdAorCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfTUFTS19DTFJfQVBQU19JTlRfTUFTS19DTFJfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0FQUFNfSU5UX1NUU19DTFIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0lOVF9TVFNfQ0xSX0FQUFNfSU5UX1NUU19DTFJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gY2xlYXIgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQ7IDAgPSBubyBlZmZlY3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBpcyBub3QgbG9zdCBpZiBjb2luY2lkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIHdyaXRlIG9wZXJhdGlvbgorCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfU1RTX0NMUl9BUFBTX0lOVF9TVFNfQ0xSX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19BUFBTX0lOVF9BQ0sgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0lOVF9BQ0tfQVBQU19JTlRfQUNLX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyB3cml0ZSAxIHRvIGNsZWFyIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0OzAgPSBubyBlZmZlY3QKKworI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX0FDS19BUFBTX0lOVF9BQ0tfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0FQUFNfSU5UX1RSSUcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0lOVF9UUklHX0FQUFNfSU5UX1RSSUdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIFdyaXRpbmcgYSAxIHRvIGEgYml0IGluIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgY2F1c2VzIHRoZSB0aGUgSG9zdCBDUFUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgZW5hYmxlZCAobm90IG1hc2tlZCkuIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgaXMgc2VsZi1jbGVhcmluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV3JpdGluZyAwIGhhcyBubyBlZmZlY3QKKworI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX1RSSUdfQVBQU19JTlRfVFJJR19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQVBQU19JTlRfU1RTX01BU0tFRCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX1NUU19NQVNLRURfQVBQU19JTlRfU1RTX01BU0tFRF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gMT0gY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZlIGFuZCBub3QgbWFza2VkLiByZWFkIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vbi1kZXN0cnVjdGl2ZTswID0gY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQgaXMgaW5hY3RpdmUgb3IgbWFza2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IEFQUFNfSU5UIG1hc2sKKworI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX1NUU19NQVNLRURfQVBQU19JTlRfU1RTX01BU0tFRF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fQVBQU19JTlRfU1RTX1JBVyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX1NUU19SQVdfQVBQU19JTlRfU1RTX1JBV19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gMT0gY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZlLiByZWFkIGlzIG5vbi1kZXN0cnVjdGl2ZTswCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vID0gY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5hY3RpdmUKKworI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX1NUU19SQVdfQVBQU19JTlRfU1RTX1JBV19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fSURNRU1fVElNX1VwZGF0ZWQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19JRE1FTV9USU1fVXBkYXRlZF9USU1fVVBEQVRFRCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIHRvZ2dsZSBpbiB0aGlzIHNpZ25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpY2F0ZXNJRE1FTV9USU1fVVBEQVRFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIG1lbnRpb25lZCBhYm92ZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGVkLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX0FQUFNfR1BJT19UUklHX0VOIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfQVBQU19HUElPX1RSSUdfRU5fQVBQU19HUElPX1RSSUdfRU5fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMUYgIC8vIEFQUFMgR1BJTyBUcmlnZ2VyIEVOIGNvbnRyb2wuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJpdCAwOiB3aGVuICcxJyBlbmFibGUgR1BJTyAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIuIFRoaXMgYml0IGVuYWJsZXMgdHJpZ2dlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgYWxsIEdQSU8gMCBwaW5zIChHUElPIDAgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTzcpLiBCaXQgMTogd2hlbiAnMScgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gMSB0cmlnZ2VyLiBUaGlzIGJpdCBlbmFibGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgZm9yIGFsbCBHUElPIDEgcGlucyAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU84IHRvIEdQSU8xNSkuIEJpdCAyOiB3aGVuICcxJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGUgR1BJTyAyIHRyaWdnZXIuIFRoaXMgYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdHJpZ2dlciBmb3IgYWxsIEdQSU8gMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwaW5zIChHUElPMTYgdG8gR1BJTzIzKS4gQml0IDM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gJzEnIGVuYWJsZSBHUElPIDMgdHJpZ2dlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBiaXQgZW5hYmxlcyB0cmlnZ2VyIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyAzIHBpbnMgKEdQSU8yNCB0byBHUElPMzEpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCaXQgNDogd2hlbiAnMScgZW5hYmxlIEdQSU8gNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyLiBUaGlzIGJpdCBlbmFibGVzIHRyaWdnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGFsbCBHUElPIDQgcGlucy4oR1BJTzMyIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8zOSkKKworI2RlZmluZSBDT01NT05fUkVHX0FQUFNfR1BJT19UUklHX0VOX0FQUFNfR1BJT19UUklHX0VOX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19FTVVfREVCVUdfUkVHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfRU1VX0RFQlVHX1JFR19FTVVfREVCVUdfUkVHX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAwIHRoIGJpdCB1c2VkIGZvciBzdGFsbGluZyBBUFBTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERNQSBhbmQgMXN0IGJpdCBpcyB1c2VkIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFsbGluZyBOV1AgRE1BIGZvciBkZWJ1ZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwdXJwb3NlLiBPdGhlciBiaXRzIGFyZSB1bnVzZWQuCisKKyNkZWZpbmUgQ09NTU9OX1JFR19FTVVfREVCVUdfUkVHX0VNVV9ERUJVR19SRUdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gQ09NTU9OX1JFR19PX1NFTUFQSE9SRV9TVEFUVVMyIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfU0VNQVBIT1JFX1NUQVRVUzJfU0VNUEFQSE9SRV9TVEFUVVMyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRkZGRkZGICAvLyBTRU1BUEhPUkUgU1RBVFVTIDIzOjIyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDpzZW1hcGhvcmUgc3RhdHVzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlMTEgMjE6MjAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOnNlbWFwaG9yZSBzdGF0dXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmUxMSAxOToxOAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6c2VtYXBob3JlIHN0YXR1cyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTEwIDE3OjE2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDpzZW1hcGhvcmUgc3RhdHVzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlOSAxNToxNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6c2VtYXBob3JlIHN0YXR1cyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTggMTM6MTIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOnNlbWFwaG9yZSBzdGF0dXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmU3IDExOjEwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDpzZW1hcGhvcmUgc3RhdHVzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlNiA5OjggOnNlbWFwaG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0dXMgb2YgYXBwc19ud19zZW1hcGhvcmU1IDc6NgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6c2VtYXBob3JlIHN0YXR1cyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTQgNTo0IDpzZW1hcGhvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhdHVzIG9mIGFwcHNfbndfc2VtYXBob3JlMyAzOjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOnNlbWFwaG9yZSBzdGF0dXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmUyIDE6MCA6c2VtYXBob3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXR1cyBvZiBhcHBzX253X3NlbWFwaG9yZTEKKworI2RlZmluZSBDT01NT05fUkVHX1NFTUFQSE9SRV9TVEFUVVMyX1NFTVBBUEhPUkVfU1RBVFVTMl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBDT01NT05fUkVHX09fU0VNQVBIT1JFX1BSRVZfT1dORVIxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIENPTU1PTl9SRUdfU0VNQVBIT1JFX1BSRVZfT1dORVIxX1NFTUFQSE9SRV9QUkVWX09XTkVSMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAzRkZGRiAgLy8gMTowIDogcHJ2aW91cyBvd25lciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpMmNfcHJvcGVydGllc19yZWdbMTowXSAzOjIgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcnZpb3VzIG93bmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwaV9wcm9wZXJ0aWVzX3JlZ1sxOjBdIDU6NCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBydmlvdXMgb3duZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3Bpb19wcm9wZXJ0aWVzX3JlZ1sxOjBdIDk6OCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBydmlvdXMgb3duZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3Bpb19wcm9wZXJ0aWVzX3JlZ1szOjJdIDExOjEwIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJ2aW91cyBvd25lciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBncGlvX3Byb3BlcnRpZXNfcmVnWzU6NF0gMTM6MTIgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcnZpb3VzIG93bmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdwaW9fcHJvcGVydGllc19yZWdbNzo2XSAxNToxNCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBydmlvdXMgb3duZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3Bpb19wcm9wZXJ0aWVzX3JlZ1s5OjhdIDE3OjE2IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJ2aW91cyBvd25lciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmbGFzaF9jb250cm9sX3JlZ1sxOjBdCisKKyNkZWZpbmUgQ09NTU9OX1JFR19TRU1BUEhPUkVfUFJFVl9PV05FUjFfU0VNQVBIT1JFX1BSRVZfT1dORVIxX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIENPTU1PTl9SRUdfT19TRU1BUEhPUkVfUFJFVl9PV05FUjIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgQ09NTU9OX1JFR19TRU1BUEhPUkVfUFJFVl9PV05FUjJfU0VNQVBIT1JFX1BSRVZfT1dORVIyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRkZGRkZGICAvLyAxOjAgOiBwcmV2aW91cyBvd25lciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTFfcmVnWzE6MF0gMzoyIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJldmlvdXMgb3duZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmUyX3JlZ1sxOjBdIDU6NCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzIG93bmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlM19yZWdbMTowXSA3OjYgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmV2aW91cyBvd25lciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTRfcmVnWzE6MF0gOTo4IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJldmlvdXMgb3duZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmU1X3JlZ1sxOjBdIDExOjEwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDogcHJldmlvdXMgb3duZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmU2X3JlZ1sxOjBdIDEzOjEyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDogcHJldmlvdXMgb3duZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmU3X3JlZ1sxOjBdIDE1OjE0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDogcHJldmlvdXMgb3duZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmU4X3JlZ1sxOjBdIDE3OjE2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDogcHJldmlvdXMgb3duZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmU5X3JlZ1sxOjBdIDE5OjE4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDogcHJldmlvdXMgb3duZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmUxMF9yZWdbMTowXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyMToyMCA6IHByZXZpb3VzIG93bmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlMTFfcmVnWzE6MF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMjM6MjIgOiBwcmV2aW91cyBvd25lciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTEyX3JlZ1sxOjBdCisKKyNkZWZpbmUgQ09NTU9OX1JFR19TRU1BUEhPUkVfUFJFVl9PV05FUjJfU0VNQVBIT1JFX1BSRVZfT1dORVIyX1MgMAorCisKKworI2VuZGlmIC8vIF9fSFdfQ09NTU9OX1JFR19IX18KZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19ncGlvLmggYi9leHQvaGFsL3RpL2NjMzIyMHNkay9pbmMvaHdfZ3Bpby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxZGRiYjEKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9pbmMvaHdfZ3Bpby5oCkBAIC0wLDAgKzEsMTM0NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCisgKgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKgorICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0hXX0dQSU9fSF9fCisjZGVmaW5lIF9fSFdfR1BJT19IX18KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBHUElPIHJlZ2lzdGVyIG9mZnNldHMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX09fR1BJT19EQVRBICAgICAgICAweDAwMDAwMDAwICAvLyAweDQwMDAgNTAwMCAweDQwMDAgNjAwMCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNzAwMCAweDQwMDIgNDAwMCBHUElPIERhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEdQSU9EQVRBKUBAIG9mZnNldCAweDAwMCBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT0RBVEEgcmVnaXN0ZXIgaXMgdGhlIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIuIEluIHNvZnR3YXJlIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZUBAIHZhbHVlcyB3cml0dGVuIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPREFUQSByZWdpc3RlciBhcmUgdHJhbnNmZXJyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb250byB0aGUgR1BJTyBwb3J0IHBpbnMgaWYgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc3BlY3RpdmUgcGlucyBoYXZlIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlndXJlZCBhcyBvdXRwdXRzIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gRGlyZWN0aW9uIChHUElPRElSKSByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoc2VlIHBhZ2UgNjUzKS4gSW4gb3JkZXIgdG8gd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gR1BJT0RBVEFAQCB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXRzIGluIHRoZSBtYXNrQEAgcmVzdWx0aW5nIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGFkZHJlc3MgYnVzIGJpdHMgWzk6Ml1AQCBtdXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlIHNldC4gT3RoZXJ3aXNlQEAgdGhlIGJpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZXMgcmVtYWluIHVuY2hhbmdlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUuIFNpbWlsYXJseUBAIHRoZSB2YWx1ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhZCBmcm9tIHRoaXMgcmVnaXN0ZXIgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRldGVybWluZWQgZm9yIGVhY2ggYml0IGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXNrIGJpdCBkZXJpdmVkIGZyb20gdGhlIGFkZHJlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCB0byBhY2Nlc3MgdGhlIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXJAQCBiaXRzIFs5OjJdLiBCaXRzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIHNldCBpbiB0aGUgYWRkcmVzcyBtYXNrIGNhdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT0RBVEEgdG8gYmUgcmVhZEBAIGFuZCBiaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgYXJlIGNsZWFyIGluIHRoZSBhZGRyZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hc2sgY2F1c2UgdGhlIGNvcnJlc3BvbmRpbmcgYml0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBHUElPREFUQSB0byBiZSByZWFkIGFzIDBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdhcmRsZXNzIG9mIHRoZWlyIHZhbHVlLiBBIHJlYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSBHUElPREFUQSByZXR1cm5zIHRoZSBsYXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCB2YWx1ZSB3cml0dGVuIGlmIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNwZWN0aXZlIHBpbnMgYXJlIGNvbmZpZ3VyZWQgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0c0BAIG9yIGl0IHJldHVybnMgdGhlIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIHRoZSBjb3JyZXNwb25kaW5nIGlucHV0IHBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHRoZXNlIGFyZSBjb25maWd1cmVkIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0cy4gQWxsIGJpdHMgYXJlIGNsZWFyZWQgYnkgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNldC4KKyNkZWZpbmUgR1BJT19PX0dQSU9fRElSICAgICAgICAgMHgwMDAwMDQwMCAgLy8gMHg0MDAwIDU0MDAgMHg0MDAwIDY0MDAgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDc0MDAgMHg0MDAyIDQ0MDAgR1BJTyBEaXJlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEdQSU9ESVIpQEAgb2Zmc2V0IDB4NDAwIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPRElSIHJlZ2lzdGVyIGlzIHRoZSBkYXRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpcmVjdGlvbiByZWdpc3Rlci4gU2V0dGluZyBhIGJpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiB0aGUgR1BJT0RJUiByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25maWd1cmVzIHRoZSBjb3JyZXNwb25kaW5nIHBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBiZSBhbiBvdXRwdXRAQCB3aGlsZSBjbGVhcmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGJpdCBjb25maWd1cmVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHBpbiB0byBiZSBhbiBpbnB1dC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxsIGJpdHMgYXJlIGNsZWFyZWQgYnkgYSByZXNldEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lYW5pbmcgYWxsIEdQSU8gcGlucyBhcmUgaW5wdXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IGRlZmF1bHQuCisjZGVmaW5lIEdQSU9fT19HUElPX0lTICAgICAgICAgIDB4MDAwMDA0MDQgIC8vIDB4NDAwMCA1NDA0IDB4NDAwMCA2NDA0IDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3NDA0IDB4NDAwMiA0NDA0IEdQSU8gSW50ZXJydXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbnNlIChHUElPSVMpQEAgb2Zmc2V0IDB4NDA0IFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPSVMgcmVnaXN0ZXIgaXMgdGhlIGludGVycnVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZW5zZSByZWdpc3Rlci4gU2V0dGluZyBhIGJpdCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgR1BJT0lTIHJlZ2lzdGVyIGNvbmZpZ3VyZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNvcnJlc3BvbmRpbmcgcGluIHRvIGRldGVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsZXZlbHNAQCB3aGlsZSBjbGVhcmluZyBhIGJpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25maWd1cmVzIHRoZSBjb3JyZXNwb25kaW5nIHBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBkZXRlY3QgZWRnZXMuIEFsbCBiaXRzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGVhcmVkIGJ5IGEgcmVzZXQuCisjZGVmaW5lIEdQSU9fT19HUElPX0lCRSAgICAgICAgIDB4MDAwMDA0MDggIC8vIDB4NDAwMCA1NDA4IDB4NDAwMCA2NDA4IDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3NDA4IDB4NDAwMiA0NDA4IEdQSU8gSW50ZXJydXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdGggRWRnZXMgKEdQSU9JQkUpQEAgb2Zmc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDB4NDA4IFRoZSBHUElPSUJFIHJlZ2lzdGVyIGFsbG93cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBib3RoIGVkZ2VzIHRvIGNhdXNlIGludGVycnVwdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgYml0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIEludGVycnVwdCBTZW5zZSAoR1BJT0lTKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBpcyBzZXQgdG8gZGV0ZWN0IGVkZ2VzQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0dGluZyBhIGJpdCBpbiB0aGUgR1BJT0lCRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBjb25maWd1cmVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHBpbiB0byBkZXRlY3QgYm90aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByaXNpbmcgYW5kIGZhbGxpbmcgZWRnZXNAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdhcmRsZXNzIG9mIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCBpbiB0aGUgR1BJTyBJbnRlcnJ1cHQgRXZlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEdQSU9JRVYpIHJlZ2lzdGVyIC4gQ2xlYXJpbmcgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgY29uZmlndXJlcyB0aGUgcGluIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRyb2xsZWQgYnkgdGhlIEdQSU9JRVYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIuIEFsbCBiaXRzIGFyZSBjbGVhcmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgcmVzZXQuCisjZGVmaW5lIEdQSU9fT19HUElPX0lFViAgICAgICAgIDB4MDAwMDA0MEMgIC8vIDB4NDAwMCA1NDBDIDB4NDAwMCA2NDBDIDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3NDBDIDB4NDAwMiA0NDBDIEdQSU8gSW50ZXJydXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV2ZW50IChHUElPSUVWKUBAIG9mZnNldCAweDQwQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgR1BJT0lFViByZWdpc3RlciBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IGV2ZW50IHJlZ2lzdGVyLiBTZXR0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgYml0IGluIHRoZSBHUElPSUVWIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyZXMgdGhlIGNvcnJlc3BvbmRpbmcgcGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGRldGVjdCByaXNpbmcgZWRnZXMgb3IgaGlnaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsZXZlbHNAQCBkZXBlbmRpbmcgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgYml0IHZhbHVlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIEludGVycnVwdCBTZW5zZSAoR1BJT0lTKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciAuIENsZWFyaW5nIGEgYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyZXMgdGhlIHBpbiB0byBkZXRlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmFsbGluZyBlZGdlcyBvciBsb3cgbGV2ZWxzQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVwZW5kaW5nIG9uIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCB2YWx1ZSBpbiB0aGUgR1BJT0lTIHJlZ2lzdGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBbGwgYml0cyBhcmUgY2xlYXJlZCBieSBhIHJlc2V0LgorI2RlZmluZSBHUElPX09fR1BJT19JTSAgICAgICAgICAweDAwMDAwNDEwICAvLyAweDQwMDAgNTQxMCAweDQwMDAgNjQxMCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNzQxMCAweDQwMDIgNDQxMCBHUElPIEludGVycnVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNYXNrIChHUElPSU0pQEAgb2Zmc2V0IDB4NDEwIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPSU0gcmVnaXN0ZXIgaXMgdGhlIGludGVycnVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXNrIHJlZ2lzdGVyLiBTZXR0aW5nIGEgYml0IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBHUElPSU0gcmVnaXN0ZXIgYWxsb3dzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdHMgdGhhdCBhcmUgZ2VuZXJhdGVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjb3JyZXNwb25kaW5nIHBpbiB0byBiZSBzZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY29tYmluZWQgaW50ZXJydXB0IHNpZ25hbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xlYXJpbmcgYSBiaXQgcHJldmVudHMgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IG9uIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbiBmcm9tIGJlaW5nIHNlbnQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBjb250cm9sbGVyLiBBbGwgYml0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmUgY2xlYXJlZCBieSBhIHJlc2V0LgorI2RlZmluZSBHUElPX09fR1BJT19SSVMgICAgICAgICAweDAwMDAwNDE0ICAvLyAweDQwMDAgNTQxNCAweDQwMDAgNjQxNCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNzQxNCAweDQwMDIgNDQxNCBHUElPIFJhdworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnRlcnJ1cHQgU3RhdHVzIChHUElPUklTKUBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldCAweDQxNCBUaGUgR1BJT1JJUyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyB0aGUgcmF3IGludGVycnVwdCBzdGF0dXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIuIEEgYml0IGluIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0IHdoZW4gYW4gaW50ZXJydXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmRpdGlvbiBvY2N1cnMgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgR1BJTyBwaW4uIElmIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIGJpdCBpbiB0aGUgR1BJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnRlcnJ1cHQgTWFzayAoR1BJT0lNKSByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXRAQCB0aGUgaW50ZXJydXB0IGlzIHNlbnQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGludGVycnVwdCBjb250cm9sbGVyLiBCaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWQgYXMgemVybyBpbmRpY2F0ZSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgaW5wdXQgcGlucyBoYXZlIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbml0aWF0ZWQgYW4gaW50ZXJydXB0LiBBIGJpdCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHJlZ2lzdGVyIGNhbiBiZSBjbGVhcmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRpbmcgYSAxIHRvIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCBpbiB0aGUgR1BJTyBJbnRlcnJ1cHQgQ2xlYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEdQSU9JQ1IpIHJlZ2lzdGVyLgorI2RlZmluZSBHUElPX09fR1BJT19NSVMgICAgICAgICAweDAwMDAwNDE4ICAvLyAweDQwMDAgNTQxOCAweDQwMDAgNjQxOCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNzQxOCAweDQwMDIgNDQxOCBHUElPIE1hc2tlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnRlcnJ1cHQgU3RhdHVzIChHUElPTUlTKUBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldCAweDQxOCBUaGUgR1BJT01JUyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyB0aGUgbWFza2VkIGludGVycnVwdCBzdGF0dXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIuIElmIGEgYml0IGlzIHNldCBpbiB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyQEAgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IGhhcyB0cmlnZ2VyZWQgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IHRvIHRoZSBpbnRlcnJ1cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udHJvbGxlci4gSWYgYSBiaXQgaXMgY2xlYXJAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlaXRoZXIgbm8gaW50ZXJydXB0IGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdlbmVyYXRlZEBAIG9yIHRoZSBpbnRlcnJ1cHQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFza2VkLiBJZiBubyBwb3J0IHBpbkBAIG90aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYW4gdGhlIG9uZSB0aGF0IGlzIGJlaW5nIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgYW4gQURDIHRyaWdnZXJAQCBpcyBiZWluZyB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGdlbmVyYXRlIGludGVycnVwdHNAQCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwcm9wcmlhdGUgSW50ZXJydXB0IFNldCBFbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEVObikgcmVnaXN0ZXIgY2FuIGRpc2FibGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdHMgZm9yIHRoZSBwb3J0QEAgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBREMgaW50ZXJydXB0IGNhbiBiZSB1c2VkIHRvIHJlYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmFjayB0aGUgY29udmVydGVkIGRhdGEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZUBAIHRoZSBwb3J0IGludGVycnVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGVyIG11c3QgaWdub3JlIGFuZCBjbGVhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHRzIG9uIHRoZSBwb3J0IHBpbiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2FpdCBmb3IgdGhlIEFEQyBpbnRlcnJ1cHRAQCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgQURDIGludGVycnVwdCBtdXN0IGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpc2FibGVkIGluIHRoZSBFTjAgcmVnaXN0ZXIgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBwb3J0IGludGVycnVwdCBoYW5kbGVyIG11c3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9sbCB0aGUgQURDIHJlZ2lzdGVycyB1bnRpbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udmVyc2lvbiBpcyBjb21wbGV0ZWQuIElmIG5vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvcnQgcGluQEAgb3RoZXIgdGhhbiB0aGUgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgaXMgYmVpbmcgdXNlZCBhcyBhbiBBREMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlckBAIGlzIGJlaW5nIHVzZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGUgaW50ZXJydXB0c0BAIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHByb3ByaWF0ZSBJbnRlcnJ1cHQgU2V0IEVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoRU5uKSByZWdpc3RlciBjYW4gZGlzYWJsZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0cyBmb3IgdGhlIHBvcnRAQCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFEQyBpbnRlcnJ1cHQgY2FuIGJlIHVzZWQgdG8gcmVhZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYWNrIHRoZSBjb252ZXJ0ZWQgZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlQEAgdGhlIHBvcnQgaW50ZXJydXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZXIgbXVzdCBpZ25vcmUgYW5kIGNsZWFyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdHMgb24gdGhlIHBvcnQgcGluIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3YWl0IGZvciB0aGUgQURDIGludGVycnVwdEBAIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBBREMgaW50ZXJydXB0IG11c3QgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlzYWJsZWQgaW4gdGhlIEVOMCByZWdpc3RlciBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHBvcnQgaW50ZXJydXB0IGhhbmRsZXIgbXVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb2xsIHRoZSBBREMgcmVnaXN0ZXJzIHVudGlsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJzaW9uIGlzIGNvbXBsZXRlZC4gTm90ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGlmIHRoZSBQb3J0IEIgR1BJT0FEQ0NUTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBpcyBjbGVhcmVkQEAgUEI0IGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGlsbCBiZSB1c2VkIGFzIGFuIGV4dGVybmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgZm9yIHRoZSBBREMuIFRoaXMgaXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsZWdhY3kgbW9kZSB3aGljaCBhbGxvd3MgY29kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0dGVuIGZvciBwcmV2aW91cyBTdGVsbGFyaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGV2aWNlcyB0byBvcGVyYXRlIG9uIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWljcm9jb250cm9sbGVyLiBHUElPTUlTIGlzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0ZSBvZiB0aGUgaW50ZXJydXB0IGFmdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hc2tpbmcuCisjZGVmaW5lIEdQSU9fT19HUElPX0lDUiAgICAgICAgIDB4MDAwMDA0MUMgIC8vIDB4NDAwMCA1NDFDIDB4NDAwMCA2NDFDIDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3NDFDIDB4NDAwMiA0NDFDIEdQSU8gSW50ZXJydXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsZWFyIChHUElPSUNSKUBAIG9mZnNldCAweDQxQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgR1BJT0lDUiByZWdpc3RlciBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IGNsZWFyIHJlZ2lzdGVyLiBXcml0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgMSB0byBhIGJpdCBpbiB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFycyB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQgYml0IGluIHRoZSBHUElPUklTIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPTUlTIHJlZ2lzdGVycy4gV3JpdGluZyBhIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzIG5vIGVmZmVjdC4KKyNkZWZpbmUgR1BJT19PX0dQSU9fQUZTRUwgICAgICAgMHgwMDAwMDQyMCAgLy8gMHg0MDAwIDU0MjAgMHg0MDAwIDY0MjAgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDc0MjAgMHg0MDAyIDQ0MjAgR1BJTyBBbHRlcm5hdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRnVuY3Rpb24gU2VsZWN0IChHUElPQUZTRUwpQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IDB4NDIwIFRoZSBHUElPQUZTRUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgaXMgdGhlIG1vZGUgY29udHJvbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZWxlY3QgcmVnaXN0ZXIuIElmIGEgYml0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyQEAgdGhlIHBpbiBpcyB1c2VkIGFzIGEgR1BJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgaXMgY29udHJvbGxlZCBieSB0aGUgR1BJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlcnMuIFNldHRpbmcgYSBiaXQgaW4gdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBjb25maWd1cmVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIEdQSU8gbGluZSB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250cm9sbGVkIGJ5IGFuIGFzc29jaWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGVyaXBoZXJhbC4gU2V2ZXJhbCBwb3NzaWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwZXJpcGhlcmFsIGZ1bmN0aW9ucyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbXVsdGlwbGV4ZWQgb24gZWFjaCBHUElPLiBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyBQb3J0IENvbnRyb2wgKEdQSU9QQ1RMKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBpcyB1c2VkIHRvIHNlbGVjdCBvbmUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHBvc3NpYmxlIGZ1bmN0aW9ucy4KKyNkZWZpbmUgR1BJT19PX0dQSU9fRFIyUiAgICAgICAgMHgwMDAwMDUwMCAgLy8gMHg0MDAwIDU1MDAgMHg0MDAwIDY1MDAgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDc1MDAgMHg0MDAyIDQ1MDAgR1BJTyAyLW1BIERyaXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdCAoR1BJT0RSMlIpQEAgb2Zmc2V0IDB4NTAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBHUElPRFIyUiByZWdpc3RlciBpcyB0aGUgMi1tQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcml2ZSBjb250cm9sIHJlZ2lzdGVyLiBFYWNoIEdQSU8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2lnbmFsIGluIHRoZSBwb3J0IGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpdmlkdWFsbHkgY29uZmlndXJlZCB3aXRob3V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFmZmVjdGluZyB0aGUgb3RoZXIgcGFkcy4gV2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXR0aW5nIHRoZSBEUlYyIGJpdCBmb3IgYSBHUElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpZ25hbEBAIHRoZSBjb3JyZXNwb25kaW5nIERSVjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IGluIHRoZSBHUElPRFI0UiByZWdpc3RlciBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRFJWOCBiaXQgaW4gdGhlIEdQSU9EUjhSIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZSBhdXRvbWF0aWNhbGx5IGNsZWFyZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFyZHdhcmUuIEJ5IGRlZmF1bHRAQCBhbGwgR1BJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwaW5zIGhhdmUgMi1tQSBkcml2ZS4KKyNkZWZpbmUgR1BJT19PX0dQSU9fRFI0UiAgICAgICAgMHgwMDAwMDUwNCAgLy8gMHg0MDAwIDU1MDQgMHg0MDAwIDY1MDQgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDc1MDQgMHg0MDAyIDQ1MDQgR1BJTyA0LW1BIERyaXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdCAoR1BJT0RSNFIpQEAgb2Zmc2V0IDB4NTA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBHUElPRFI0UiByZWdpc3RlciBpcyB0aGUgNC1tQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcml2ZSBjb250cm9sIHJlZ2lzdGVyLiBFYWNoIEdQSU8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2lnbmFsIGluIHRoZSBwb3J0IGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpdmlkdWFsbHkgY29uZmlndXJlZCB3aXRob3V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFmZmVjdGluZyB0aGUgb3RoZXIgcGFkcy4gV2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXR0aW5nIHRoZSBEUlY0IGJpdCBmb3IgYSBHUElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpZ25hbEBAIHRoZSBjb3JyZXNwb25kaW5nIERSVjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IGluIHRoZSBHUElPRFIyUiByZWdpc3RlciBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRFJWOCBiaXQgaW4gdGhlIEdQSU9EUjhSIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZSBhdXRvbWF0aWNhbGx5IGNsZWFyZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFyZHdhcmUuCisjZGVmaW5lIEdQSU9fT19HUElPX0RSOFIgICAgICAgIDB4MDAwMDA1MDggIC8vIDB4NDAwMCA1NTA4IDB4NDAwMCA2NTA4IDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3NTA4IDB4NDAwMiA0NTA4IEdQSU8gOC1tQSBEcml2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWxlY3QgKEdQSU9EUjhSKUBAIG9mZnNldCAweDUwOAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgR1BJT0RSOFIgcmVnaXN0ZXIgaXMgdGhlIDgtbUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJpdmUgY29udHJvbCByZWdpc3Rlci4gRWFjaCBHUElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpZ25hbCBpbiB0aGUgcG9ydCBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5kaXZpZHVhbGx5IGNvbmZpZ3VyZWQgd2l0aG91dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZmZlY3RpbmcgdGhlIG90aGVyIHBhZHMuIFdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0dGluZyB0aGUgRFJWOCBiaXQgZm9yIGEgR1BJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaWduYWxAQCB0aGUgY29ycmVzcG9uZGluZyBEUlYyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCBpbiB0aGUgR1BJT0RSMlIgcmVnaXN0ZXIgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERSVjQgYml0IGluIHRoZSBHUElPRFI0UiByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmUgYXV0b21hdGljYWxseSBjbGVhcmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhcmR3YXJlLiBUaGUgOC1tQSBzZXR0aW5nIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsc28gdXNlZCBmb3IgaGlnaC1jdXJyZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZXJhdGlvbi4gTm90ZTogVGhlcmUgaXMgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlndXJhdGlvbiBkaWZmZXJlbmNlIGJldHdlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOC1tQSBhbmQgaGlnaC1jdXJyZW50IG9wZXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGFkZGl0aW9uYWwgY3VycmVudCBjYXBhY2l0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHRzIGZyb20gYSBzaGlmdCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVk9IL1ZPTCBsZXZlbHMuCisjZGVmaW5lIEdQSU9fT19HUElPX09EUiAgICAgICAgIDB4MDAwMDA1MEMgIC8vIDB4NDAwMCA1NTBDIDB4NDAwMCA2NTBDIDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3NTBDIDB4NDAwMiA0NTBDIEdQSU8gT3BlbiBEcmFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWxlY3QgKEdQSU9PRFIpQEAgb2Zmc2V0IDB4NTBDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBHUElPT0RSIHJlZ2lzdGVyIGlzIHRoZSBvcGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYWluIGNvbnRyb2wgcmVnaXN0ZXIuIFNldHRpbmcgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgaW4gdGhpcyByZWdpc3RlciBlbmFibGVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIGNvbmZpZ3VyYXRpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgR1BJTyBwYWQuIFdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiBtb2RlIGlzIGVuYWJsZWRAQCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBiaXQgc2hvdWxkIGFsc28gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IGluIHRoZSBHUElPIERpZ2l0YWwgSW5wdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW5hYmxlIChHUElPREVOKSByZWdpc3RlciAuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvcnJlc3BvbmRpbmcgYml0cyBpbiB0aGUgZHJpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RyZW5ndGggYW5kIHNsZXcgcmF0ZSBjb250cm9sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVycyAoR1BJT0RSMlJAQCBHUElPRFI0UkBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9EUjhSQEAgYW5kIEdQSU9TTFIpIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gYWNoaWV2ZSB0aGUgZGVzaXJlZCByaXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBmYWxsIHRpbWVzLiBUaGUgR1BJTyBhY3RzIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuIG9wZW4tZHJhaW4gaW5wdXQgaWYgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgYml0IGluIHRoZSBHUElPRElSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGlzIGNsZWFyZWQuIElmIG9wZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhaW4gaXMgc2VsZWN0ZWQgd2hpbGUgdGhlIEdQSU8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgY29uZmlndXJlZCBhcyBhbiBpbnB1dEBAIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIHdpbGwgcmVtYWluIGFuIGlucHV0IGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiBzZWxlY3Rpb24gaGFzIG5vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVmZmVjdCB1bnRpbCB0aGUgR1BJTyBpcyBjaGFuZ2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGFuIG91dHB1dC4gV2hlbiB1c2luZyB0aGUgSTJDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZHVsZUBAIGluIGFkZGl0aW9uIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyaW5nIHRoZSBwaW4gdG8gb3BlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmFpbkBAIHRoZSBHUElPIEFsdGVybmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGdW5jdGlvbiBTZWxlY3QgKEdQSU9BRlNFTCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgYml0cyBmb3IgdGhlIEkyQyBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgZGF0YSBwaW5zIHNob3VsZCBiZSBzZXQKKyNkZWZpbmUgR1BJT19PX0dQSU9fUFVSICAgICAgICAgMHgwMDAwMDUxMCAgLy8gMHg0MDAwIDU1MTAgMHg0MDAwIDY1MTAgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDc1MTAgMHg0MDAyIDQ1MTAgR1BJTyBQdWxsLVVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdCAoR1BJT1BVUilAQCBvZmZzZXQgMHg1MTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIEdQSU9QVVIgcmVnaXN0ZXIgaXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHB1bGwtdXAgY29udHJvbCByZWdpc3Rlci4gV2hlbiBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCBpcyBzZXRAQCBhIHdlYWsgcHVsbC11cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNpc3RvciBvbiB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIHNpZ25hbCBpcyBlbmFibGVkLiBTZXR0aW5nIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IGluIEdQSU9QVVIgYXV0b21hdGljYWxseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGVhcnMgdGhlIGNvcnJlc3BvbmRpbmcgYml0IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBHUElPIFB1bGwtRG93biBTZWxlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEdQSU9QRFIpIHJlZ2lzdGVyIC4gV3JpdGUgYWNjZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoaXMgcmVnaXN0ZXIgaXMgcHJvdGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIEdQSU9DUiByZWdpc3Rlci4gQml0cyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPQ1IgdGhhdCBhcmUgY2xlYXJlZCBwcmV2ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlcyB0byB0aGUgZXF1aXZhbGVudCBiaXQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyByZWdpc3Rlci4KKyNkZWZpbmUgR1BJT19PX0dQSU9fUERSICAgICAgICAgMHgwMDAwMDUxNCAgLy8gMHg0MDAwIDU1MTQgMHg0MDAwIDY1MTQgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDc1MTQgMHg0MDAyIDQ1MTQgR1BJTyBQdWxsLURvd24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VsZWN0IChHUElPUERSKUBAIG9mZnNldCAweDUxNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgR1BJT1BEUiByZWdpc3RlciBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHVsbC1kb3duIGNvbnRyb2wgcmVnaXN0ZXIuIFdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBiaXQgaXMgc2V0QEAgYSB3ZWFrIHB1bGwtZG93bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNpc3RvciBvbiB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIHNpZ25hbCBpcyBlbmFibGVkLiBTZXR0aW5nIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IGluIEdQSU9QRFIgYXV0b21hdGljYWxseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGVhcnMgdGhlIGNvcnJlc3BvbmRpbmcgYml0IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBHUElPIFB1bGwtVXAgU2VsZWN0IChHUElPUFVSKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlcgorI2RlZmluZSBHUElPX09fR1BJT19TTFIgICAgICAgICAweDAwMDAwNTE4ICAvLyAweDQwMDAgNTUxOCAweDQwMDAgNjUxOCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNzUxOCAweDQwMDIgNDUxOCBUaGUgR1BJT1NMUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBpcyB0aGUgc2xldyByYXRlIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIuIFNsZXcgcmF0ZSBjb250cm9sIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgYXZhaWxhYmxlIHdoZW4gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDgtbUEgZHJpdmUgc3RyZW5ndGggb3B0aW9uIHZpYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgR1BJTyA4LW1BIERyaXZlIFNlbGVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT0RSOFIpIHJlZ2lzdGVyCisjZGVmaW5lIEdQSU9fT19HUElPX0RFTiAgICAgICAgIDB4MDAwMDA1MUMgIC8vIDB4NDAwMCA1NTFDIDB4NDAwMCA2NTFDIDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3NTFDIDB4NDAwMiA0NTFDIEdQSU8gRGlnaXRhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbmFibGUgKEdQSU9ERU4pQEAgb2Zmc2V0IDB4NTFDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGU6IFBpbnMgY29uZmlndXJlZCBhcyBkaWdpdGFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0cyBhcmUgU2NobWl0dC10cmlnZ2VyZWQuIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPREVOIHJlZ2lzdGVyIGlzIHRoZSBkaWdpdGFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZSByZWdpc3Rlci4gQnkgZGVmYXVsdEBAIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIHNpZ25hbHMgZXhjZXB0IHRob3NlIGxpc3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZWxvdyBhcmUgY29uZmlndXJlZCBvdXQgb2YgcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYmUgdW5kcml2ZW4gKHRyaXN0YXRlKS4gVGhlaXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlnaXRhbCBmdW5jdGlvbiBpcyBkaXNhYmxlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhleSBkbyBub3QgZHJpdmUgYSBsb2dpYyB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbiB0aGUgcGluIGFuZCB0aGV5IGRvIG5vdCBhbGxvdworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcGluIHZvbHRhZ2UgaW50byB0aGUgR1BJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWNlaXZlci4gVG8gdXNlIHRoZSBwaW4gYXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaWdpdGFsIGlucHV0IG9yIG91dHB1dCAoZWl0aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gb3IgYWx0ZXJuYXRlIGZ1bmN0aW9uKUBAIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIEdQSU9ERU4gYml0IG11c3QgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0LgorI2RlZmluZSBHUElPX09fR1BJT19MT0NLICAgICAgICAweDAwMDAwNTIwICAvLyAweDQwMDAgNTUyMCAweDQwMDAgNjUyMCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNzUyMCAweDQwMDIgNDUyMCBHUElPIExvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEdQSU9MT0NLKUBAIG9mZnNldCAweDUyMCBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT0xPQ0sgcmVnaXN0ZXIgZW5hYmxlcyB3cml0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MgdG8gdGhlIEdQSU9DUiByZWdpc3RlciAuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdyaXRpbmcgMHg0QzRGLjQzNEIgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9MT0NLIHJlZ2lzdGVyIHVubG9ja3MgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9DUiByZWdpc3Rlci4gV3JpdGluZyBhbnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXIgdmFsdWUgdG8gdGhlIEdQSU9MT0NLCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIHJlLWVuYWJsZXMgdGhlIGxvY2tlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0ZS4gUmVhZGluZyB0aGUgR1BJT0xPQ0sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgcmV0dXJucyB0aGUgbG9jayBzdGF0dXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmF0aGVyIHRoYW4gdGhlIDMyLWJpdCB2YWx1ZSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhcyBwcmV2aW91c2x5IHdyaXR0ZW4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXJlZm9yZUBAIHdoZW4gd3JpdGUgYWNjZXNzZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGRpc2FibGVkQEAgb3IgbG9ja2VkQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhZGluZyB0aGUgR1BJT0xPQ0sgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJucyAweDAwMDAuMDAwMS4gV2hlbiB3cml0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3NlcyBhcmUgZW5hYmxlZEBAIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVubG9ja2VkQEAgcmVhZGluZyB0aGUgR1BJT0xPQ0sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgcmV0dXJucyAweDAwMDAuMDAwMC4KKyNkZWZpbmUgR1BJT19PX0dQSU9fQ1IgICAgICAgICAgMHgwMDAwMDUyNCAgLy8gMHg0MDAwIDU1MjQgMHg0MDAwIDY1MjQgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDc1MjQgMHg0MDAyIDQ1MjQgR1BJTyBDb21taXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEdQSU9DUilAQCBvZmZzZXQgMHg1MjQgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9DUiByZWdpc3RlciBpcyB0aGUgY29tbWl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyLiBUaGUgdmFsdWUgb2YgdGhlIEdQSU9DUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBkZXRlcm1pbmVzIHdoaWNoIGJpdHMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEdQSU9BRlNFTEBAIEdQSU9QVVJAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPUERSQEAgYW5kIEdQSU9ERU4gcmVnaXN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZSBjb21taXR0ZWQgd2hlbiBhIHdyaXRlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZXNlIHJlZ2lzdGVycyBpcyBwZXJmb3JtZWQuIElmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgYml0IGluIHRoZSBHUElPQ1IgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXJlZEBAIHRoZSBkYXRhIGJlaW5nIHdyaXR0ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPQUZTRUxAQCBHUElPUFVSQEAgR1BJT1BEUkBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIEdQSU9ERU4gcmVnaXN0ZXJzIGNhbm5vdCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21taXR0ZWQgYW5kIHJldGFpbnMgaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzIHZhbHVlLiBJZiBhIGJpdCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT0NSIHJlZ2lzdGVyIGlzIHNldEBAIHRoZSBkYXRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlaW5nIHdyaXR0ZW4gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgYml0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPQUZTRUxAQCBHUElPUFVSQEAgR1BJT1BEUkBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIEdQSU9ERU4gcmVnaXN0ZXJzIGlzIGNvbW1pdHRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGUgcmVnaXN0ZXIgYW5kIHJlZmxlY3RzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZXcgdmFsdWUuIFRoZSBjb250ZW50cyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT0NSIHJlZ2lzdGVyIGNhbiBvbmx5IGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGlmaWVkIGlmIHRoZSBzdGF0dXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9MT0NLIHJlZ2lzdGVyIGlzIHVubG9ja2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXcml0ZXMgdG8gdGhlIEdQSU9DUiByZWdpc3RlciBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlZCBpZiB0aGUgc3RhdHVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPTE9DSyByZWdpc3RlciBpcyBsb2NrZWQuCisjZGVmaW5lIEdQSU9fT19HUElPX0FNU0VMICAgICAgIDB4MDAwMDA1MjggIC8vIDB4NDAwMCA1NTI4IDB4NDAwMCA2NTI4IDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3NTI4IDB4NDAwMiA0NTI4IFRoZSBHUElPQU1TRUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgY29udHJvbHMgaXNvbGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNpcmN1aXRzIHRvIHRoZSBhbmFsb2cgc2lkZSBvZiBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVuaWZpZWQgSS9PIHBhZC4gQmVjYXVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT3MgbWF5IGJlIGRyaXZlbiBieSBhIDUtVgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzb3VyY2UgYW5kIGFmZmVjdCBhbmFsb2cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3BlcmF0aW9uQEAgYW5hbG9nIGNpcmN1aXRyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXF1aXJlcyBpc29sYXRpb24gZnJvbSB0aGUgcGlucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHRoZXkgYXJlIG5vdCB1c2VkIGluIHRoZWlyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuYWxvZyBmdW5jdGlvbi4gRWFjaCBiaXQgb2YgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBjb250cm9scyB0aGUgaXNvbGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNpcmN1aXRyeSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyBzaWduYWwuCisjZGVmaW5lIEdQSU9fT19HUElPX1BDVEwgICAgICAgIDB4MDAwMDA1MkMgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIGVxdWl2YWxhbnQgcmVnaXN0ZXIgZXhzaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgR1BJTyBJUCAocmVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEFEKl9jb25maWcgcmVnaXN0ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNoYXJlZCBjb21uIHNwYWNlKSAweDQwMDAgNTUyQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAweDQwMDAgNjUyQyAweDQwMDAgNzUyQyAweDQwMDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNDUyQyBHUElPIFBvcnQgQ29udHJvbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoR1BJT1BDVEwpQEAgb2Zmc2V0IDB4NTJDIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPUENUTCByZWdpc3RlciBpcyB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmp1bmN0aW9uIHdpdGggdGhlIEdQSU9BRlNFTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBhbmQgc2VsZWN0cyB0aGUgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGVyaXBoZXJhbCBzaWduYWwgZm9yIGVhY2ggR1BJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwaW4gd2hlbiB1c2luZyB0aGUgYWx0ZXJuYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZ1bmN0aW9uIG1vZGUuIE1vc3QgYml0cyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT0FGU0VMIHJlZ2lzdGVyIGFyZSBjbGVhcmVkIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0QEAgdGhlcmVmb3JlIG1vc3QgR1BJTyBwaW5zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZSBjb25maWd1cmVkIGFzIEdQSU9zIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQuIFdoZW4gYSBiaXQgaXMgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPQUZTRUwgcmVnaXN0ZXJAQCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBHUElPIHNpZ25hbCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250cm9sbGVkIGJ5IGFuIGFzc29jaWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGVyaXBoZXJhbC4gVGhlIEdQSU9QQ1RMIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlbGVjdHMgb25lIG91dCBvZiBhIHNldCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwZXJpcGhlcmFsIGZ1bmN0aW9ucyBmb3IgZWFjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPQEAgcHJvdmlkaW5nIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmxleGliaWxpdHkgaW4gc2lnbmFsIGRlZmluaXRpb24uCisjZGVmaW5lIEdQSU9fT19HUElPX0FEQ0NUTCAgICAgIDB4MDAwMDA1MzAgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIEFEQyB0cmlnZ2VyIHZpYSBHUElPIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdCBzdXBwb3J0ZWQuIDB4NDAwMCA1NTMwIDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA2NTMwIDB4NDAwMCA3NTMwIDB4NDAwMiA0NTMwIEdQSU8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQURDIENvbnRyb2wgKEdQSU9BRENDVEwpQEAgb2Zmc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDB4NTMwIFRoaXMgcmVnaXN0ZXIgaXMgdXNlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25maWd1cmUgYSBHUElPIHBpbiBhcyBhIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgdGhlIEFEQyB0cmlnZ2VyLiBOb3RlIHRoYXQgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIFBvcnQgQiBHUElPQURDQ1RMIHJlZ2lzdGVyIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyZWRAQCBQQjQgY2FuIHN0aWxsIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgYW4gZXh0ZXJuYWwgdHJpZ2dlciBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFEQy4gVGhpcyBpcyBhIGxlZ2FjeSBtb2RlIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93cyBjb2RlIHdyaXR0ZW4gZm9yIHByZXZpb3VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN0ZWxsYXJpcyBkZXZpY2VzIHRvIG9wZXJhdGUgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBtaWNyb2NvbnRyb2xsZXIuCisjZGVmaW5lIEdQSU9fT19HUElPX0RNQUNUTCAgICAgIDB4MDAwMDA1MzQgIC8vIDB4NDAwMCA1NTM0IDB4NDAwMCA2NTM0IDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3NTM0IDB4NDAwMiA0NTM0IEdQSU8gRE1BIENvbnRyb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEdQSU9ETUFDVEwpQEAgb2Zmc2V0IDB4NTM0IFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgaXMgdXNlZCB0byBjb25maWd1cmUgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIHBpbiBhcyBhIHNvdXJjZSBmb3IgdGhlID9ETUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlci4KKyNkZWZpbmUgR1BJT19PX0dQSU9fU0kgICAgICAgICAgMHgwMDAwMDUzOCAgLy8gMHg0MDAwIDU1MzggMHg0MDAwIDY1MzggMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDc1MzggMHg0MDAyIDQ1MzggR1BJTyBTZWxlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW50ZXJydXB0IChHUElPU0kpQEAgb2Zmc2V0IDB4NTM4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgdXNlZCB0byBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5kaXZpZHVhbCBpbnRlcnJ1cHRzIGZvciBlYWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbi4gTm90ZTogVGhpcyByZWdpc3RlciBpcyBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGF2YWlsYWJsZSBvbiBQb3J0IFAgYW5kIFBvcnQgUS4KKyNkZWZpbmUgR1BJT19PX0dQSU9fUEVSSVBISUQ0ICAgMHgwMDAwMEZEMCAgLy8gMHg0MDAwIDVGRDAgMHg0MDAwIDZGRDAgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDdGRDAgMHg0MDAyIDRGRDAgR1BJTyBQZXJpcGhlcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElkZW50aWZpY2F0aW9uIDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEdQSU9QZXJpcGhJRDQpQEAgb2Zmc2V0IDB4RkQwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBHUElPUGVyaXBoSUQ0QEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT1BlcmlwaElENUBAIEdQSU9QZXJpcGhJRDZAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgR1BJT1BlcmlwaElENyByZWdpc3RlcnMgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmNlcHR1YWxseSBiZSB0cmVhdGVkIGFzIG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzMi1iaXQgcmVnaXN0ZXI7IGVhY2ggcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGFpbnMgZWlnaHQgYml0cyBvZiB0aGUgMzItYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyQEAgdXNlZCBieSBzb2Z0d2FyZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZGVudGlmeSB0aGUgcGVyaXBoZXJhbC4KKyNkZWZpbmUgR1BJT19PX0dQSU9fUEVSSVBISUQ1ICAgMHgwMDAwMEZENCAgLy8gMHg0MDAwIDVGRDQgMHg0MDAwIDZGRDQgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDdGRDQgMHg0MDAyIDRGRDQgR1BJTyBQZXJpcGhlcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElkZW50aWZpY2F0aW9uIDUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEdQSU9QZXJpcGhJRDUpQEAgb2Zmc2V0IDB4RkQ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBHUElPUGVyaXBoSUQ0QEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT1BlcmlwaElENUBAIEdQSU9QZXJpcGhJRDZAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgR1BJT1BlcmlwaElENyByZWdpc3RlcnMgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmNlcHR1YWxseSBiZSB0cmVhdGVkIGFzIG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzMi1iaXQgcmVnaXN0ZXI7IGVhY2ggcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGFpbnMgZWlnaHQgYml0cyBvZiB0aGUgMzItYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyQEAgdXNlZCBieSBzb2Z0d2FyZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZGVudGlmeSB0aGUgcGVyaXBoZXJhbC4KKyNkZWZpbmUgR1BJT19PX0dQSU9fUEVSSVBISUQ2ICAgMHgwMDAwMEZEOCAgLy8gMHg0MDAwIDVGRDggMHg0MDAwIDZGRDggMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDdGRDggMHg0MDAyIDRGRDggR1BJTyBQZXJpcGhlcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElkZW50aWZpY2F0aW9uIDYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEdQSU9QZXJpcGhJRDYpQEAgb2Zmc2V0IDB4RkQ4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBHUElPUGVyaXBoSUQ0QEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT1BlcmlwaElENUBAIEdQSU9QZXJpcGhJRDZAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgR1BJT1BlcmlwaElENyByZWdpc3RlcnMgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmNlcHR1YWxseSBiZSB0cmVhdGVkIGFzIG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzMi1iaXQgcmVnaXN0ZXI7IGVhY2ggcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGFpbnMgZWlnaHQgYml0cyBvZiB0aGUgMzItYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyQEAgdXNlZCBieSBzb2Z0d2FyZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZGVudGlmeSB0aGUgcGVyaXBoZXJhbC4KKyNkZWZpbmUgR1BJT19PX0dQSU9fUEVSSVBISUQ3ICAgMHgwMDAwMEZEQyAgLy8gMHg0MDAwIDVGREMgMHg0MDAwIDZGREMgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDdGREMgMHg0MDAyIDRGREMgR1BJTyBQZXJpcGhlcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElkZW50aWZpY2F0aW9uIDcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEdQSU9QZXJpcGhJRDcpQEAgb2Zmc2V0IDB4RkRDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBHUElPUGVyaXBoSUQ0QEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT1BlcmlwaElENUBAIEdQSU9QZXJpcGhJRDZAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgR1BJT1BlcmlwaElENyByZWdpc3RlcnMgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmNlcHR1YWxseSBiZSB0cmVhdGVkIGFzIG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzMi1iaXQgcmVnaXN0ZXI7IGVhY2ggcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGFpbnMgZWlnaHQgYml0cyBvZiB0aGUgMzItYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyQEAgdXNlZCBieSBzb2Z0d2FyZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZGVudGlmeSB0aGUgcGVyaXBoZXJhbC4KKyNkZWZpbmUgR1BJT19PX0dQSU9fUEVSSVBISUQwICAgMHgwMDAwMEZFMCAgLy8gMHg0MDAwIDVGRTAgMHg0MDAwIDZGRTAgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDdGRTAgMHg0MDAyIDRGRTAgR1BJTyBQZXJpcGhlcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElkZW50aWZpY2F0aW9uIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEdQSU9QZXJpcGhJRDApQEAgb2Zmc2V0IDB4RkUwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBHUElPUGVyaXBoSUQwQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT1BlcmlwaElEMUBAIEdQSU9QZXJpcGhJRDJAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgR1BJT1BlcmlwaElEMyByZWdpc3RlcnMgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmNlcHR1YWxseSBiZSB0cmVhdGVkIGFzIG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzMi1iaXQgcmVnaXN0ZXI7IGVhY2ggcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGFpbnMgZWlnaHQgYml0cyBvZiB0aGUgMzItYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyQEAgdXNlZCBieSBzb2Z0d2FyZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZGVudGlmeSB0aGUgcGVyaXBoZXJhbC4KKyNkZWZpbmUgR1BJT19PX0dQSU9fUEVSSVBISUQxICAgMHgwMDAwMEZFNCAgLy8gMHg0MDAwIDVGRTQgMHg0MDAwIDZGRTQgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDdGRTQgMHg0MDAyIDRGRTQgR1BJTyBQZXJpcGhlcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElkZW50aWZpY2F0aW9uIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEdQSU9QZXJpcGhJRDEpQEAgb2Zmc2V0IDB4RkU0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBHUElPUGVyaXBoSUQwQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT1BlcmlwaElEMUBAIEdQSU9QZXJpcGhJRDJAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgR1BJT1BlcmlwaElEMyByZWdpc3RlcnMgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmNlcHR1YWxseSBiZSB0cmVhdGVkIGFzIG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzMi1iaXQgcmVnaXN0ZXI7IGVhY2ggcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGFpbnMgZWlnaHQgYml0cyBvZiB0aGUgMzItYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyQEAgdXNlZCBieSBzb2Z0d2FyZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZGVudGlmeSB0aGUgcGVyaXBoZXJhbC4KKyNkZWZpbmUgR1BJT19PX0dQSU9fUEVSSVBISUQyICAgMHgwMDAwMEZFOCAgLy8gMHg0MDAwIDVGRTggMHg0MDAwIDZGRTggMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDdGRTggMHg0MDAyIDRGRTggR1BJTyBQZXJpcGhlcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElkZW50aWZpY2F0aW9uIDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEdQSU9QZXJpcGhJRDIpQEAgb2Zmc2V0IDB4RkU4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBHUElPUGVyaXBoSUQwQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT1BlcmlwaElEMUBAIEdQSU9QZXJpcGhJRDJAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgR1BJT1BlcmlwaElEMyByZWdpc3RlcnMgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmNlcHR1YWxseSBiZSB0cmVhdGVkIGFzIG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzMi1iaXQgcmVnaXN0ZXI7IGVhY2ggcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGFpbnMgZWlnaHQgYml0cyBvZiB0aGUgMzItYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyQEAgdXNlZCBieSBzb2Z0d2FyZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZGVudGlmeSB0aGUgcGVyaXBoZXJhbC4KKyNkZWZpbmUgR1BJT19PX0dQSU9fUEVSSVBISUQzICAgMHgwMDAwMEZFQyAgLy8gMHg0MDAwIDVGRUMgMHg0MDAwIDZGRUMgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDdGRUMgMHg0MDAyIDRGRUMgR1BJTyBQZXJpcGhlcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElkZW50aWZpY2F0aW9uIDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEdQSU9QZXJpcGhJRDMpQEAgb2Zmc2V0IDB4RkVDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBHUElPUGVyaXBoSUQwQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT1BlcmlwaElEMUBAIEdQSU9QZXJpcGhJRDJAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgR1BJT1BlcmlwaElEMyByZWdpc3RlcnMgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmNlcHR1YWxseSBiZSB0cmVhdGVkIGFzIG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzMi1iaXQgcmVnaXN0ZXI7IGVhY2ggcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGFpbnMgZWlnaHQgYml0cyBvZiB0aGUgMzItYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyQEAgdXNlZCBieSBzb2Z0d2FyZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZGVudGlmeSB0aGUgcGVyaXBoZXJhbC4KKyNkZWZpbmUgR1BJT19PX0dQSU9fUENFTExJRDAgICAgMHgwMDAwMEZGMCAgLy8gMHg0MDAwIDVGRjAgMHg0MDAwIDZGRjAgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDdGRjAgMHg0MDAyIDRGRjAgR1BJTyBQcmltZUNlbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWRlbnRpZmljYXRpb24gMCAoR1BJT1BDZWxsSUQwKUBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldCAweEZGMCBUaGUgR1BJT1BDZWxsSUQwQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT1BDZWxsSUQxQEAgR1BJT1BDZWxsSUQyQEAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9QQ2VsbElEMyByZWdpc3RlcnMgYXJlIGZvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOC1iaXQgd2lkZSByZWdpc3RlcnNAQCB0aGF0IGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25jZXB0dWFsbHkgYmUgdHJlYXRlZCBhcyBvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMzItYml0IHJlZ2lzdGVyLiBUaGUgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBhcyBhIHN0YW5kYXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNyb3NzLXBlcmlwaGVyYWwgaWRlbnRpZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3lzdGVtLgorI2RlZmluZSBHUElPX09fR1BJT19QQ0VMTElEMSAgICAweDAwMDAwRkY0ICAvLyAweDQwMDAgNUZGNCAweDQwMDAgNkZGNCAweDQwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gN0ZGNCAweDQwMDIgNEZGNCBHUElPIFByaW1lQ2VsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZGVudGlmaWNhdGlvbiAxIChHUElPUENlbGxJRDEpQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IDB4RkY0IFRoZSBHUElPUENlbGxJRDBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPUENlbGxJRDFAQCBHUElPUENlbGxJRDJAQCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT1BDZWxsSUQzIHJlZ2lzdGVycyBhcmUgZm91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA4LWJpdCB3aWRlIHJlZ2lzdGVyc0BAIHRoYXQgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmNlcHR1YWxseSBiZSB0cmVhdGVkIGFzIG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzMi1iaXQgcmVnaXN0ZXIuIFRoZSByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGFzIGEgc3RhbmRhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3Jvc3MtcGVyaXBoZXJhbCBpZGVudGlmaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzeXN0ZW0uCisjZGVmaW5lIEdQSU9fT19HUElPX1BDRUxMSUQyICAgIDB4MDAwMDBGRjggIC8vIDB4NDAwMCA1RkY4IDB4NDAwMCA2RkY4IDB4NDAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3RkY4IDB4NDAwMiA0RkY4IEdQSU8gUHJpbWVDZWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElkZW50aWZpY2F0aW9uIDIgKEdQSU9QQ2VsbElEMilAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXQgMHhGRjggVGhlIEdQSU9QQ2VsbElEMEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9QQ2VsbElEMUBAIEdQSU9QQ2VsbElEMkBAIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPUENlbGxJRDMgcmVnaXN0ZXJzIGFyZSBmb3VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDgtYml0IHdpZGUgcmVnaXN0ZXJzQEAgdGhhdCBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uY2VwdHVhbGx5IGJlIHRyZWF0ZWQgYXMgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMyLWJpdCByZWdpc3Rlci4gVGhlIHJlZ2lzdGVyIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgYXMgYSBzdGFuZGFyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjcm9zcy1wZXJpcGhlcmFsIGlkZW50aWZpY2F0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN5c3RlbS4KKyNkZWZpbmUgR1BJT19PX0dQSU9fUENFTExJRDMgICAgMHgwMDAwMEZGQyAgLy8gMHg0MDAwIDVGRkMgMHg0MDAwIDZGRkMgMHg0MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDdGRkMgMHg0MDAyIDRGRkMgR1BJTyBQcmltZUNlbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWRlbnRpZmljYXRpb24gMyAoR1BJT1BDZWxsSUQzKUBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldCAweEZGQyBUaGUgR1BJT1BDZWxsSUQwQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT1BDZWxsSUQxQEAgR1BJT1BDZWxsSUQyQEAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9QQ2VsbElEMyByZWdpc3RlcnMgYXJlIGZvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOC1iaXQgd2lkZSByZWdpc3RlcnNAQCB0aGF0IGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25jZXB0dWFsbHkgYmUgdHJlYXRlZCBhcyBvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMzItYml0IHJlZ2lzdGVyLiBUaGUgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBhcyBhIHN0YW5kYXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNyb3NzLXBlcmlwaGVyYWwgaWRlbnRpZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3lzdGVtLjB4YjEKKworCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlIEdQSU9fT19HUElPX0RBVEEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX0RBVEFfREFUQV9NICAgMHgwMDAwMDBGRiAgLy8gR1BJTyBEYXRhIFRoaXMgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmlydHVhbGx5IG1hcHBlZCB0byAyNTYgbG9jYXRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIHRoZSBhZGRyZXNzIHNwYWNlLiBUbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmYWNpbGl0YXRlIHRoZSByZWFkaW5nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0aW5nIG9mIGRhdGEgdG8gdGhlc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXJzIGJ5IGluZGVwZW5kZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyaXZlcnNAQCB0aGUgZGF0YSByZWFkIGZyb20gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXR0ZW4gdG8gdGhlIHJlZ2lzdGVycyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFza2VkIGJ5IHRoZSBlaWdodCBhZGRyZXNzIGxpbmVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFs5OjJdLiBSZWFkcyBmcm9tIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIGl0cyBjdXJyZW50IHN0YXRlLiBXcml0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhpcyByZWdpc3RlciBvbmx5IGFmZmVjdCBiaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgYXJlIG5vdCBtYXNrZWQgYnkgQUREUls5OjJdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBhcmUgY29uZmlndXJlZCBhcyBvdXRwdXRzLgorI2RlZmluZSBHUElPX0dQSU9fREFUQV9EQVRBX1MgICAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBHUElPX09fR1BJT19ESVIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX0RJUl9ESVJfTSAgICAgMHgwMDAwMDBGRiAgLy8gR1BJTyBEYXRhIERpcmVjdGlvbiBWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZXNjcmlwdGlvbiAwIENvcnJlc3BvbmRpbmcgcGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGFuIGlucHV0LiAxIENvcnJlc3BvbmRpbmcgcGlucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBhbiBvdXRwdXQuCisjZGVmaW5lIEdQSU9fR1BJT19ESVJfRElSX1MgICAgIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlIEdQSU9fT19HUElPX0lTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19JU19JU19NICAgICAgIDB4MDAwMDAwRkYgIC8vIEdQSU8gSW50ZXJydXB0IFNlbnNlIFZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlc2NyaXB0aW9uIDAgVGhlIGVkZ2Ugb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgcGluIGlzIGRldGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChlZGdlLXNlbnNpdGl2ZSkuIDEgVGhlIGxldmVsIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjb3JyZXNwb25kaW5nIHBpbiBpcyBkZXRlY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAobGV2ZWwtc2Vuc2l0aXZlKS4KKyNkZWZpbmUgR1BJT19HUElPX0lTX0lTX1MgICAgICAgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BJT19PX0dQSU9fSUJFIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19JQkVfSUJFX00gICAgIDB4MDAwMDAwRkYgIC8vIEdQSU8gSW50ZXJydXB0IEJvdGggRWRnZXMgVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVzY3JpcHRpb24gMCBJbnRlcnJ1cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGlvbiBpcyBjb250cm9sbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIEludGVycnVwdCBFdmVudCAoR1BJT0lFVikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIuIDEgQm90aCBlZGdlcyBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBwaW4gdHJpZ2dlciBhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQuCisjZGVmaW5lIEdQSU9fR1BJT19JQkVfSUJFX1MgICAgIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlIEdQSU9fT19HUElPX0lFViByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fSUVWX0lFVl9NICAgICAweDAwMDAwMEZGICAvLyBHUElPIEludGVycnVwdCBFdmVudCBWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZXNjcmlwdGlvbiAxIEEgZmFsbGluZyBlZGdlIG9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTG93IGxldmVsIG9uIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbiB0cmlnZ2VycyBhbiBpbnRlcnJ1cHQuIDAgQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByaXNpbmcgZWRnZSBvciBhIEhpZ2ggbGV2ZWwgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNvcnJlc3BvbmRpbmcgcGluIHRyaWdnZXJzIGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdC4KKyNkZWZpbmUgR1BJT19HUElPX0lFVl9JRVZfUyAgICAgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BJT19PX0dQSU9fSU0gcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX0lNX0lNRV9NICAgICAgMHgwMDAwMDBGRiAgLy8gR1BJTyBJbnRlcnJ1cHQgTWFzayBFbmFibGUgVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVzY3JpcHRpb24gMCBUaGUgaW50ZXJydXB0IGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNvcnJlc3BvbmRpbmcgcGluIGlzIG1hc2tlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMSBUaGUgaW50ZXJydXB0IGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgcGluIGlzIHNlbnQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBjb250cm9sbGVyLgorI2RlZmluZSBHUElPX0dQSU9fSU1fSU1FX1MgICAgICAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBHUElPX09fR1BJT19SSVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX1JJU19SSVNfTSAgICAgMHgwMDAwMDBGRiAgLy8gR1BJTyBJbnRlcnJ1cHQgUmF3IFN0YXR1cyBWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZXNjcmlwdGlvbiAxIEFuIGludGVycnVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25kaXRpb24gaGFzIG9jY3VycmVkIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHBpbi4gMCBpbnRlcnJ1cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZGl0aW9uIGhhcyBub3Qgb2NjdXJyZWQgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgcGluLiBBIGJpdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGVhcmVkIGJ5IHdyaXRpbmcgYSAxIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIGJpdCBpbiB0aGUgR1BJT0lDUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3Rlci4KKyNkZWZpbmUgR1BJT19HUElPX1JJU19SSVNfUyAgICAgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BJT19PX0dQSU9fTUlTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19NSVNfTUlTX00gICAgIDB4MDAwMDAwRkYgIC8vIEdQSU8gTWFza2VkIEludGVycnVwdCBTdGF0dXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmFsdWUgRGVzY3JpcHRpb24gMSBBbiBpbnRlcnJ1cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZGl0aW9uIG9uIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbiBoYXMgdHJpZ2dlcmVkIGFuIGludGVycnVwdCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIuIDAgQW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IGNvbmRpdGlvbiBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBwaW4gaXMgbWFza2VkIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhcyBub3Qgb2NjdXJyZWQuIEEgYml0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyZWQgYnkgd3JpdGluZyBhIDEgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgYml0IGluIHRoZSBHUElPSUNSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyLgorI2RlZmluZSBHUElPX0dQSU9fTUlTX01JU19TICAgICAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBHUElPX09fR1BJT19JQ1IgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX0lDUl9JQ19NICAgICAgMHgwMDAwMDBGRiAgLy8gR1BJTyBJbnRlcnJ1cHQgQ2xlYXIgVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVzY3JpcHRpb24gMSBUaGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQgaXMgY2xlYXJlZC4gMCBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5hZmZlY3RlZC4KKyNkZWZpbmUgR1BJT19HUElPX0lDUl9JQ19TICAgICAgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BJT19PX0dQSU9fQUZTRUwgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlIEdQSU9fT19HUElPX0RSMlIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX0RSMlJfRFJWMl9NICAgMHgwMDAwMDBGRiAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYzN4eC4gZXF1aXZhbGFudCByZWdpc3RlciBleHNpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0c2lkZSBHUElPIElQIChyZWZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQQUQqX2NvbmZpZyByZWdpc3RlciBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hhcmVkIGNvbW4gc3BhY2UpIE91dHB1dCBQYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMi1tQSBEcml2ZSBFbmFibGUgVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVzY3JpcHRpb24gMSBUaGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIHBpbiBoYXMgMi1tQSBkcml2ZS4gVGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyaXZlIGZvciB0aGUgY29ycmVzcG9uZGluZyBHUElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbiBpcyBjb250cm9sbGVkIGJ5IHRoZSBHUElPRFI0UgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciBHUElPRFI4UiByZWdpc3Rlci4gMCBTZXR0aW5nIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IGluIGVpdGhlciB0aGUgR1BJT0RSNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBvciB0aGUgR1BJT0RSOCByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGVhcnMgdGhlIGNvcnJlc3BvbmRpbmcgMi1tQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGUgYml0LiBUaGUgY2hhbmdlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVmZmVjdGl2ZSBvbiB0aGUgc2Vjb25kIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGN5Y2xlIGFmdGVyIHRoZSB3cml0ZSBpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3NpbmcgR1BJTyB2aWEgdGhlIEFQQiBtZW1vcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBlcnR1cmUuIElmIHVzaW5nIEFIQiBhY2Nlc3NAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY2hhbmdlIGlzIGVmZmVjdGl2ZSBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBjbG9jayBjeWNsZS4KKyNkZWZpbmUgR1BJT19HUElPX0RSMlJfRFJWMl9TICAgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BJT19PX0dQSU9fRFI0UiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fRFI0Ul9EUlY0X00gICAweDAwMDAwMEZGICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNjM3h4LiBlcXVpdmFsYW50IHJlZ2lzdGVyIGV4c2lzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRzaWRlIEdQSU8gSVAgKHJlZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBBRCpfY29uZmlnIHJlZ2lzdGVyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaGFyZWQgY29tbiBzcGFjZSkgT3V0cHV0IFBhZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0LW1BIERyaXZlIEVuYWJsZSBWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZXNjcmlwdGlvbiAxIFRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gcGluIGhhcyA0LW1BIGRyaXZlLiBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJpdmUgZm9yIHRoZSBjb3JyZXNwb25kaW5nIEdQSU8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGluIGlzIGNvbnRyb2xsZWQgYnkgdGhlIEdQSU9EUjJSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIEdQSU9EUjhSIHJlZ2lzdGVyLiAwIFNldHRpbmcgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgaW4gZWl0aGVyIHRoZSBHUElPRFIyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIG9yIHRoZSBHUElPRFI4IHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFycyB0aGUgY29ycmVzcG9uZGluZyA0LW1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZSBiaXQuIFRoZSBjaGFuZ2UgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWZmZWN0aXZlIG9uIHRoZSBzZWNvbmQgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3ljbGUgYWZ0ZXIgdGhlIHdyaXRlIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzc2luZyBHUElPIHZpYSB0aGUgQVBCIG1lbW9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcGVydHVyZS4gSWYgdXNpbmcgQUhCIGFjY2Vzc0BACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjaGFuZ2UgaXMgZWZmZWN0aXZlIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGNsb2NrIGN5Y2xlLgorI2RlZmluZSBHUElPX0dQSU9fRFI0Ul9EUlY0X1MgICAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBHUElPX09fR1BJT19EUjhSIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19EUjhSX0RSVjhfTSAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIGVxdWl2YWxhbnQgcmVnaXN0ZXIgZXhzaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgR1BJTyBJUCAocmVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEFEKl9jb25maWcgcmVnaXN0ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNoYXJlZCBjb21uIHNwYWNlKSBPdXRwdXQgUGFkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDgtbUEgRHJpdmUgRW5hYmxlIFZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlc2NyaXB0aW9uIDEgVGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyBwaW4gaGFzIDgtbUEgZHJpdmUuIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcml2ZSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgR1BJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwaW4gaXMgY29udHJvbGxlZCBieSB0aGUgR1BJT0RSMlIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3IgR1BJT0RSNFIgcmVnaXN0ZXIuIDAgU2V0dGluZyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCBpbiBlaXRoZXIgdGhlIEdQSU9EUjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgb3IgdGhlIEdQSU9EUjQgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXJzIHRoZSBjb3JyZXNwb25kaW5nIDgtbUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlIGJpdC4gVGhlIGNoYW5nZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlZmZlY3RpdmUgb24gdGhlIHNlY29uZCBjbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjeWNsZSBhZnRlciB0aGUgd3JpdGUgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzaW5nIEdQSU8gdmlhIHRoZSBBUEIgbWVtb3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwZXJ0dXJlLiBJZiB1c2luZyBBSEIgYWNjZXNzQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNoYW5nZSBpcyBlZmZlY3RpdmUgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5leHQgY2xvY2sgY3ljbGUuCisjZGVmaW5lIEdQSU9fR1BJT19EUjhSX0RSVjhfUyAgIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlIEdQSU9fT19HUElPX09EUiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fT0RSX09ERV9NICAgICAweDAwMDAwMEZGICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNjM3h4LiBlcXVpdmFsYW50IHJlZ2lzdGVyIGV4c2lzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRzaWRlIEdQSU8gSVAgKHJlZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBBRCpfY29uZmlnIHJlZ2lzdGVyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaGFyZWQgY29tbiBzcGFjZSkgT3V0cHV0IFBhZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPcGVuIERyYWluIEVuYWJsZSBWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZXNjcmlwdGlvbiAxIFRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbiBpcyBjb25maWd1cmVkIGFzIG9wZW4gZHJhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAgVGhlIGNvcnJlc3BvbmRpbmcgcGluIGlzIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25maWd1cmVkIGFzIG9wZW4gZHJhaW4uCisjZGVmaW5lIEdQSU9fR1BJT19PRFJfT0RFX1MgICAgIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlIEdQSU9fT19HUElPX1BVUiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fUFVSX1BVRV9NICAgICAweDAwMDAwMEZGICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNjM3h4LiBlcXVpdmFsYW50IHJlZ2lzdGVyIGV4c2lzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRzaWRlIEdQSU8gSVAgKHJlZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBBRCpfY29uZmlnIHJlZ2lzdGVyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaGFyZWQgY29tbiBzcGFjZSkgUGFkIFdlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHVsbC1VcCBFbmFibGUgVmFsdWUgRGVzY3JpcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMSBUaGUgY29ycmVzcG9uZGluZyBwaW4gaGFzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2VhayBwdWxsLXVwIHJlc2lzdG9yLiAwIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHBpbiBpcyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWZmZWN0ZWQuIFNldHRpbmcgYSBiaXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9QRFIgcmVnaXN0ZXIgY2xlYXJzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIGJpdCBpbiB0aGUgR1BJT1BVUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3Rlci4gVGhlIGNoYW5nZSBpcyBlZmZlY3RpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb24gdGhlIHNlY29uZCBjbG9jayBjeWNsZSBhZnRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgd3JpdGUgaWYgYWNjZXNzaW5nIEdQSU8gdmlhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBBUEIgbWVtb3J5IGFwZXJ0dXJlLiBJZiB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBSEIgYWNjZXNzQEAgdGhlIGNoYW5nZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlZmZlY3RpdmUgb24gdGhlIG5leHQgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3ljbGUuCisjZGVmaW5lIEdQSU9fR1BJT19QVVJfUFVFX1MgICAgIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlIEdQSU9fT19HUElPX1BEUiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fUERSX1BERV9NICAgICAweDAwMDAwMEZGICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNjM3h4LiBlcXVpdmFsYW50IHJlZ2lzdGVyIGV4c2lzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRzaWRlIEdQSU8gSVAgKHJlZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBBRCpfY29uZmlnIHJlZ2lzdGVyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaGFyZWQgY29tbiBzcGFjZSkgUGFkIFdlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHVsbC1Eb3duIEVuYWJsZSBWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZXNjcmlwdGlvbiAxIFRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbiBoYXMgYSB3ZWFrIHB1bGwtZG93bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNpc3Rvci4gMCBUaGUgY29ycmVzcG9uZGluZyBwaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGFmZmVjdGVkLiBTZXR0aW5nIGEgYml0IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBHUElPUFVSIHJlZ2lzdGVyIGNsZWFycyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBiaXQgaW4gdGhlIEdQSU9QRFIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIuIFRoZSBjaGFuZ2UgaXMgZWZmZWN0aXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIHRoZSBzZWNvbmQgY2xvY2sgY3ljbGUgYWZ0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHdyaXRlIGlmIGFjY2Vzc2luZyBHUElPIHZpYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgQVBCIG1lbW9yeSBhcGVydHVyZS4gSWYgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQUhCIGFjY2Vzc0BAIHRoZSBjaGFuZ2UgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWZmZWN0aXZlIG9uIHRoZSBuZXh0IGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGN5Y2xlLgorI2RlZmluZSBHUElPX0dQSU9fUERSX1BERV9TICAgICAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBHUElPX09fR1BJT19TTFIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX1NMUl9TUkxfTSAgICAgMHgwMDAwMDBGRiAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYzN4eC4gZXF1aXZhbGFudCByZWdpc3RlciBleHNpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0c2lkZSBHUElPIElQIChyZWZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQQUQqX2NvbmZpZyByZWdpc3RlciBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hhcmVkIGNvbW4gc3BhY2UpIFNsZXcgUmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMaW1pdCBFbmFibGUgKDgtbUEgZHJpdmUgb25seSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmFsdWUgRGVzY3JpcHRpb24gMSBTbGV3IHJhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udHJvbCBpcyBlbmFibGVkIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBwaW4uIDAgU2xldyByYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHBpbi4KKyNkZWZpbmUgR1BJT19HUElPX1NMUl9TUkxfUyAgICAgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BJT19PX0dQSU9fREVOIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19ERU5fREVOX00gICAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIGVxdWl2YWxhbnQgcmVnaXN0ZXIgZXhzaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgR1BJTyBJUCAocmVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEFEKl9jb25maWcgcmVnaXN0ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNoYXJlZCBjb21uIHNwYWNlKSBEaWdpdGFsIEVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWYWx1ZSBEZXNjcmlwdGlvbiAwIFRoZSBkaWdpdGFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZ1bmN0aW9ucyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGluIGFyZSBkaXNhYmxlZC4gMSBUaGUgZGlnaXRhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmdW5jdGlvbnMgZm9yIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbiBhcmUgZW5hYmxlZC4KKyNkZWZpbmUgR1BJT19HUElPX0RFTl9ERU5fUyAgICAgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BJT19PX0dQSU9fTE9DSyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fTE9DS19MT0NLX00gICAweEZGRkZGRkZGICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNjM3h4LiBHUElPIExvY2sgQSB3cml0ZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUgMHg0QzRGLjQzNEIgdW5sb2NrcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyBDb21taXQgKEdQSU9DUikgcmVnaXN0ZXIgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIGFjY2Vzcy5BIHdyaXRlIG9mIGFueSBvdGhlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZSBvciBhIHdyaXRlIHRvIHRoZSBHUElPQ1IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgcmVhcHBsaWVzIHRoZSBsb2NrQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJldmVudGluZyBhbnkgcmVnaXN0ZXIgdXBkYXRlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSByZWFkIG9mIHRoaXMgcmVnaXN0ZXIgcmV0dXJucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZm9sbG93aW5nIHZhbHVlczogVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVzY3JpcHRpb24gMHgxIFRoZSBHUElPQ1IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgaXMgbG9ja2VkIGFuZCBtYXkgbm90IGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGlmaWVkLiAweDAgVGhlIEdQSU9DUiByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyB1bmxvY2tlZCBhbmQgbWF5IGJlIG1vZGlmaWVkLgorI2RlZmluZSBHUElPX0dQSU9fTE9DS19MT0NLX1MgICAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBHUElPX09fR1BJT19DUiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fQ1JfQ1JfTSAgICAgICAweDAwMDAwMEZGICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNjM3h4LiBlcXVpdmFsYW50IHJlZ2lzdGVyIGV4c2lzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRzaWRlIEdQSU8gSVAgKHJlZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBBRCpfY29uZmlnIHJlZ2lzdGVyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaGFyZWQgY29tbiBzcGFjZSkgR1BJTyBDb21taXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmFsdWUgRGVzY3JpcHRpb24gVGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgR1BJT0FGU0VMQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT1BVUkBAIEdQSU9QRFJAQCBvciBHUElPREVOCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdHMgY2FuIGJlIHdyaXR0ZW4uIDEgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgR1BJT0FGU0VMQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJT1BVUkBAIEdQSU9QRFJAQCBvciBHUElPREVOCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdHMgY2Fubm90IGJlIHdyaXR0ZW4uIDAgTm90ZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGRlZmF1bHQgcmVnaXN0ZXIgdHlwZSBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU9DUiByZWdpc3RlciBpcyBSTyBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gcGlucyB3aXRoIHRoZSBleGNlcHRpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIE5NSSBwaW4gYW5kIHRoZSBmb3VyIEpUQUcvU1dECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbnMgKFBEN0BAIFBGMEBAIGFuZCBQQ1szOjBdKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2Ugc2l4IHBpbnMgYXJlIHRoZSBvbmx5IEdQSU9zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgYXJlIHByb3RlY3RlZCBieSB0aGUgR1BJT0NSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyLiBCZWNhdXNlIG9mIHRoaXNAQCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgdHlwZSBmb3IgR1BJTyBQb3J0IEQ3QEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyBQb3J0IEYwQEAgYW5kIEdQSU8gUG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDWzM6MF0gaXMgUi9XLiBUaGUgZGVmYXVsdCByZXNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZSBmb3IgdGhlIEdQSU9DUiByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAweDAwMDAuMDBGRiBmb3IgYWxsIEdQSU8gcGluc0BACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgTk1JIHBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgdGhlIGZvdXIgSlRBRy9TV0QgcGlucyAoUEQ3QEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEYwQEAgYW5kIFBDWzM6MF0pLiBUbyBlbnN1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCB0aGUgSlRBRyBwb3J0IGlzIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2NpZGVudGFsbHkgcHJvZ3JhbW1lZCBhcyBHUElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbnNAQCB0aGUgUENbMzowXSBwaW5zIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gbm9uLWNvbW1pdHRhYmxlLiBTaW1pbGFybHlAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBlbnN1cmUgdGhhdCB0aGUgTk1JIHBpbiBpcyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjaWRlbnRhbGx5IHByb2dyYW1tZWQgYXMgYSBHUElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbkBAIHRoZSBQRDcgYW5kIFBGMCBwaW5zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQgdG8gbm9uLWNvbW1pdHRhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIG9mIHRoaXNAQCB0aGUgZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNldCB2YWx1ZSBvZiBHUElPQ1IgZm9yIEdQSU8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUG9ydCBDIGlzIDB4MDAwMC4wMEYwQEAgZm9yIEdQSU8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUG9ydCBEIGlzIDB4MDAwMC4wMDdGQEAgYW5kIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIFBvcnQgRiBpcyAweDAwMDAuMDBGRS4KKyNkZWZpbmUgR1BJT19HUElPX0NSX0NSX1MgICAgICAgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BJT19PX0dQSU9fQU1TRUwgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX0FNU0VMX0dQSU9fQU1TRUxfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIGVxdWl2YWxhbnQgcmVnaXN0ZXIgZXhzaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgR1BJTyBJUCAocmVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEFEKl9jb25maWcgcmVnaXN0ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNoYXJlZCBjb21uIHNwYWNlKSBHUElPIEFuYWxvZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNb2RlIFNlbGVjdCBWYWx1ZSBEZXNjcmlwdGlvbiAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBhbmFsb2cgZnVuY3Rpb24gb2YgdGhlIHBpbiBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkQEAgdGhlIGlzb2xhdGlvbiBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXNhYmxlZEBAIGFuZCB0aGUgcGluIGlzIGNhcGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgYW5hbG9nIGZ1bmN0aW9ucy4gMCBUaGUgYW5hbG9nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZ1bmN0aW9uIG9mIHRoZSBwaW4gaXMgZGlzYWJsZWRAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgaXNvbGF0aW9uIGlzIGVuYWJsZWRAQCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHBpbiBpcyBjYXBhYmxlIG9mIGRpZ2l0YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnVuY3Rpb25zIGFzIHNwZWNpZmllZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXIgR1BJTyBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVycy4gTm90ZTogVGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgYml0cyBhcmUgb25seSB2YWxpZCBmb3IgR1BJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaWduYWxzIHRoYXQgc2hhcmUgYW5hbG9nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZ1bmN0aW9uIHRocm91Z2ggYSB1bmlmaWVkIEkvTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYWQuIFRoZSByZXNldCBzdGF0ZSBvZiB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGlzIDAgZm9yIGFsbCBzaWduYWxzLgorCisjZGVmaW5lIEdQSU9fR1BJT19BTVNFTF9HUElPX0FNU0VMX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BJT19PX0dQSU9fUENUTCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fUENUTF9QTUM3X00gICAweEYwMDAwMDAwICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNjM3h4LiBlcXVpdmFsYW50IHJlZ2lzdGVyIGV4c2lzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRzaWRlIEdQSU8gSVAgKHJlZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBBRCpfY29uZmlnIHJlZ2lzdGVyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaGFyZWQgY29tbiBzcGFjZSkgUG9ydCBNdXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udHJvbCA3IFRoaXMgZmllbGQgY29udHJvbHMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyYXRpb24gZm9yIEdQSU8gcGluIDcuCisjZGVmaW5lIEdQSU9fR1BJT19QQ1RMX1BNQzdfUyAgIDI4CisjZGVmaW5lIEdQSU9fR1BJT19QQ1RMX1BNQzZfTSAgIDB4MEYwMDAwMDAgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIGVxdWl2YWxhbnQgcmVnaXN0ZXIgZXhzaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgR1BJTyBJUCAocmVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEFEKl9jb25maWcgcmVnaXN0ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNoYXJlZCBjb21uIHNwYWNlKSBQb3J0IE11eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250cm9sIDYgVGhpcyBmaWVsZCBjb250cm9scyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlndXJhdGlvbiBmb3IgR1BJTyBwaW4gNi4KKyNkZWZpbmUgR1BJT19HUElPX1BDVExfUE1DNl9TICAgMjQKKyNkZWZpbmUgR1BJT19HUElPX1BDVExfUE1DNV9NICAgMHgwMEYwMDAwMCAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYzN4eC4gZXF1aXZhbGFudCByZWdpc3RlciBleHNpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0c2lkZSBHUElPIElQIChyZWZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQQUQqX2NvbmZpZyByZWdpc3RlciBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hhcmVkIGNvbW4gc3BhY2UpIFBvcnQgTXV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnRyb2wgNSBUaGlzIGZpZWxkIGNvbnRyb2xzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25maWd1cmF0aW9uIGZvciBHUElPIHBpbiA1LgorI2RlZmluZSBHUElPX0dQSU9fUENUTF9QTUM1X1MgICAyMAorI2RlZmluZSBHUElPX0dQSU9fUENUTF9QTUM0X00gICAweDAwMEYwMDAwICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNjM3h4LiBlcXVpdmFsYW50IHJlZ2lzdGVyIGV4c2lzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRzaWRlIEdQSU8gSVAgKHJlZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBBRCpfY29uZmlnIHJlZ2lzdGVyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaGFyZWQgY29tbiBzcGFjZSkgUG9ydCBNdXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udHJvbCA0IFRoaXMgZmllbGQgY29udHJvbHMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyYXRpb24gZm9yIEdQSU8gcGluIDQuCisjZGVmaW5lIEdQSU9fR1BJT19QQ1RMX1BNQzRfUyAgIDE2CisjZGVmaW5lIEdQSU9fR1BJT19QQ1RMX1BNQzNfTSAgIDB4MDAwMEYwMDAgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIGVxdWl2YWxhbnQgcmVnaXN0ZXIgZXhzaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgR1BJTyBJUCAocmVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEFEKl9jb25maWcgcmVnaXN0ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNoYXJlZCBjb21uIHNwYWNlKSBQb3J0IE11eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250cm9sIDQzIFRoaXMgZmllbGQgY29udHJvbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNvbmZpZ3VyYXRpb24gZm9yIEdQSU8gcGluIDMuCisjZGVmaW5lIEdQSU9fR1BJT19QQ1RMX1BNQzNfUyAgIDEyCisjZGVmaW5lIEdQSU9fR1BJT19QQ1RMX1BNQzFfTSAgIDB4MDAwMDBGMDAgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIGVxdWl2YWxhbnQgcmVnaXN0ZXIgZXhzaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgR1BJTyBJUCAocmVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUEFEKl9jb25maWcgcmVnaXN0ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNoYXJlZCBjb21uIHNwYWNlKSBQb3J0IE11eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250cm9sIDEgVGhpcyBmaWVsZCBjb250cm9scyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlndXJhdGlvbiBmb3IgR1BJTyBwaW4gMS4KKyNkZWZpbmUgR1BJT19HUElPX1BDVExfUE1DMV9TICAgOAorI2RlZmluZSBHUElPX0dQSU9fUENUTF9QTUMyX00gICAweDAwMDAwMEYwICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNjM3h4LiBlcXVpdmFsYW50IHJlZ2lzdGVyIGV4c2lzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRzaWRlIEdQSU8gSVAgKHJlZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBBRCpfY29uZmlnIHJlZ2lzdGVyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaGFyZWQgY29tbiBzcGFjZSkgUG9ydCBNdXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udHJvbCAyIFRoaXMgZmllbGQgY29udHJvbHMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyYXRpb24gZm9yIEdQSU8gcGluIDIuCisjZGVmaW5lIEdQSU9fR1BJT19QQ1RMX1BNQzJfUyAgIDQKKyNkZWZpbmUgR1BJT19HUElPX1BDVExfUE1DMF9NICAgMHgwMDAwMDAwRiAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYzN4eC4gZXF1aXZhbGFudCByZWdpc3RlciBleHNpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0c2lkZSBHUElPIElQIChyZWZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQQUQqX2NvbmZpZyByZWdpc3RlciBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hhcmVkIGNvbW4gc3BhY2UpIFBvcnQgTXV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnRyb2wgMCBUaGlzIGZpZWxkIGNvbnRyb2xzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25maWd1cmF0aW9uIGZvciBHUElPIHBpbiAwLgorI2RlZmluZSBHUElPX0dQSU9fUENUTF9QTUMwX1MgICAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BJT19PX0dQSU9fQURDQ1RMIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19BRENDVExfQURDRU5fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2MzeHguIEFEQyB0cmlnZ2VyIHZpYSBHUElPIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdCBzdXBwb3J0ZWQuIEFEQyBUcmlnZ2VyIEVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWYWx1ZSBEZXNjcmlwdGlvbiAxIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHBpbiBpcyB1c2VkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgdGhlIEFEQy4gMCBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBwaW4gaXMgbm90IHVzZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlciB0aGUgQURDLgorCisjZGVmaW5lIEdQSU9fR1BJT19BRENDVExfQURDRU5fUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BJT19PX0dQSU9fRE1BQ1RMIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19ETUFDVExfRE1BRU5fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNjM3h4LiBBbHRlcm5hdGUgcmVnaXN0ZXIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3VwcG9ydCB0aGlzIGZlYXR1cmUgaXMgY29kZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEFQUFNfTldQX0NNTiBzcGFjZS4gcmVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgYXMgb2Zmc2V0IDB4NDAwRjcwRDgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gP0RNQSBUcmlnZ2VyIEVuYWJsZSBWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZXNjcmlwdGlvbiAxIFRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbiBpcyB1c2VkIHRvIHRyaWdnZXIgdGhlID9ETUEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAgVGhlIGNvcnJlc3BvbmRpbmcgcGluIGlzIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIHRvIHRyaWdnZXIgdGhlID9ETUEuCisKKyNkZWZpbmUgR1BJT19HUElPX0RNQUNUTF9ETUFFTl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlIEdQSU9fT19HUElPX1NJIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQSU9fR1BJT19TSV9TVU0gICAgICAgIDB4MDAwMDAwMDEgIC8vIFN1bW1hcnkgSW50ZXJydXB0IFZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlc2NyaXB0aW9uIDEgRWFjaCBwaW4gaGFzIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvd24gaW50ZXJydXB0IHZlY3Rvci4gMCBBbGwgcG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwaW4gaW50ZXJydXB0cyBhcmUgT1InZWQgdG9nZXRoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gcHJvZHVjZSBhIHN1bW1hcnkgaW50ZXJydXB0LgorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQSU9fT19HUElPX1BFUklQSElENCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fUEVSSVBISUQ0X1BJRDRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0MzWFguIEdQSU8gUGVyaXBoZXJhbCBJRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWdpc3RlciBbNzowXQorCisjZGVmaW5lIEdQSU9fR1BJT19QRVJJUEhJRDRfUElENF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUElPX09fR1BJT19QRVJJUEhJRDUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX1BFUklQSElENV9QSUQ1X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENDM1hYLiBHUElPIFBlcmlwaGVyYWwgSUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVnaXN0ZXIgWzE1OjhdCisKKyNkZWZpbmUgR1BJT19HUElPX1BFUklQSElENV9QSUQ1X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQSU9fT19HUElPX1BFUklQSElENiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fUEVSSVBISUQ2X1BJRDZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0MzWFguIEdQSU8gUGVyaXBoZXJhbCBJRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWdpc3RlciBbMjM6MTZdCisKKyNkZWZpbmUgR1BJT19HUElPX1BFUklQSElENl9QSUQ2X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQSU9fT19HUElPX1BFUklQSElENyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fUEVSSVBISUQ3X1BJRDdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0MzWFguIEdQSU8gUGVyaXBoZXJhbCBJRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWdpc3RlciBbMzE6MjRdCisKKyNkZWZpbmUgR1BJT19HUElPX1BFUklQSElEN19QSUQ3X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQSU9fT19HUElPX1BFUklQSElEMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fUEVSSVBISUQwX1BJRDBfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0MzWFguIEdQSU8gUGVyaXBoZXJhbCBJRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWdpc3RlciBbNzowXSBDYW4gYmUgdXNlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzb2Z0d2FyZSB0byBpZGVudGlmeSB0aGUgcHJlc2VuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgdGhpcyBwZXJpcGhlcmFsLgorCisjZGVmaW5lIEdQSU9fR1BJT19QRVJJUEhJRDBfUElEMF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUElPX09fR1BJT19QRVJJUEhJRDEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX1BFUklQSElEMV9QSUQxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGICAvLyBHUElPIFBlcmlwaGVyYWwgSUQgUmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzE1OjhdIENhbiBiZSB1c2VkIGJ5IHNvZnR3YXJlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlkZW50aWZ5IHRoZSBwcmVzZW5jZSBvZiB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBlcmlwaGVyYWwuCisKKyNkZWZpbmUgR1BJT19HUElPX1BFUklQSElEMV9QSUQxX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQSU9fT19HUElPX1BFUklQSElEMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fUEVSSVBISUQyX1BJRDJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0MzWFgudiBHUElPIFBlcmlwaGVyYWwgSUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVnaXN0ZXIgWzIzOjE2XSBDYW4gYmUgdXNlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzb2Z0d2FyZSB0byBpZGVudGlmeSB0aGUgcHJlc2VuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgdGhpcyBwZXJpcGhlcmFsLgorCisjZGVmaW5lIEdQSU9fR1BJT19QRVJJUEhJRDJfUElEMl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUElPX09fR1BJT19QRVJJUEhJRDMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX1BFUklQSElEM19QSUQzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGICAvLyBUaGlzIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENDM1hYLiBHUElPIFBlcmlwaGVyYWwgSUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVnaXN0ZXIgWzMxOjI0XSBDYW4gYmUgdXNlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzb2Z0d2FyZSB0byBpZGVudGlmeSB0aGUgcHJlc2VuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgdGhpcyBwZXJpcGhlcmFsLgorCisjZGVmaW5lIEdQSU9fR1BJT19QRVJJUEhJRDNfUElEM19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUElPX09fR1BJT19QQ0VMTElEMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fUENFTExJRDBfQ0lEMF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRiAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDQzNYWC4gR1BJTyBQcmltZUNlbGwgSUQgUmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzc6MF0gUHJvdmlkZXMgc29mdHdhcmUgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFuZGFyZCBjcm9zcy1wZXJpcGhlcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlkZW50aWZpY2F0aW9uIHN5c3RlbS4KKworI2RlZmluZSBHUElPX0dQSU9fUENFTExJRDBfQ0lEMF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUElPX09fR1BJT19QQ0VMTElEMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fUENFTExJRDFfQ0lEMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRiAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDQzNYWC4gR1BJTyBQcmltZUNlbGwgSUQgUmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzE1OjhdIFByb3ZpZGVzIHNvZnR3YXJlIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhbmRhcmQgY3Jvc3MtcGVyaXBoZXJhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZGVudGlmaWNhdGlvbiBzeXN0ZW0uCisKKyNkZWZpbmUgR1BJT19HUElPX1BDRUxMSUQxX0NJRDFfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BJT19PX0dQSU9fUENFTExJRDIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BJT19HUElPX1BDRUxMSUQyX0NJRDJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0MzWFguIEdQSU8gUHJpbWVDZWxsIElEIFJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsyMzoxNl0gUHJvdmlkZXMgc29mdHdhcmUgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFuZGFyZCBjcm9zcy1wZXJpcGhlcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlkZW50aWZpY2F0aW9uIHN5c3RlbS4KKworI2RlZmluZSBHUElPX0dQSU9fUENFTExJRDJfQ0lEMl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUElPX09fR1BJT19QQ0VMTElEMyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUElPX0dQSU9fUENFTExJRDNfQ0lEM19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRiAgLy8gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDQzNYWC4gR1BJTyBQcmltZUNlbGwgSUQgUmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzMxOjI0XSBQcm92aWRlcyBzb2Z0d2FyZSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YW5kYXJkIGNyb3NzLXBlcmlwaGVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWRlbnRpZmljYXRpb24gc3lzdGVtLgorCisjZGVmaW5lIEdQSU9fR1BJT19QQ0VMTElEM19DSUQzX1MgMAorCisKKworI2VuZGlmIC8vIF9fSFdfR1BJT19IX18KZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19ncHJjbS5oIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X2dwcmNtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY4M2UzOAotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19ncHJjbS5oCkBAIC0wLDAgKzEsMzMyMCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCisgKgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKgorICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0hXX0dQUkNNX0hfXworI2RlZmluZSBfX0hXX0dQUkNNX0hfXworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIEdQUkNNIHJlZ2lzdGVyIG9mZnNldHMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9PX0FQUFNfU09GVF9SRVNFVCAweDAwMDAwMDAwCisjZGVmaW5lIEdQUkNNX09fQVBQU19MUERTX1dBS0VVUF9DRkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisKKyNkZWZpbmUgR1BSQ01fT19BUFBTX0xQRFNfV0FLRVVQX1NSQyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDgKKworI2RlZmluZSBHUFJDTV9PX0FQUFNfUkVTRVRfQ0FVU0UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBDCisKKyNkZWZpbmUgR1BSQ01fT19BUFBTX0xQRFNfV0FLRVRJTUVfT1BQX0NGRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAKKworI2RlZmluZSBHUFJDTV9PX0FQUFNfU1JBTV9EU0xQX0NGRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTgKKworI2RlZmluZSBHUFJDTV9PX0FQUFNfU1JBTV9MUERTX0NGRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMUMKKworI2RlZmluZSBHUFJDTV9PX0FQUFNfTFBEU19XQUtFVElNRV9XQUtFX0NGRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKworI2RlZmluZSBHUFJDTV9PX1RPUF9ESUVfRU5BQkxFICAweDAwMDAwMTAwCisjZGVmaW5lIEdQUkNNX09fVE9QX0RJRV9FTkFCTEVfUEFSQU1FVEVSUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDQKKworI2RlZmluZSBHUFJDTV9PX01DVV9HTE9CQUxfU09GVF9SRVNFVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDgKKworI2RlZmluZSBHUFJDTV9PX0FEQ19DTEtfQ09ORklHICAweDAwMDAwMTBDCisjZGVmaW5lIEdQUkNNX09fQVBQU19HUElPX1dBS0VfQ09ORiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMTAKKworI2RlZmluZSBHUFJDTV9PX0VOX05XUF9CT09UX1dPX0RFVklOSVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTE0CisKKyNkZWZpbmUgR1BSQ01fT19NRU1fSENMS19ESVZfQ0ZHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDExOAorCisjZGVmaW5lIEdQUkNNX09fTUVNX1NZU0NMS19ESVZfQ0ZHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDExQworCisjZGVmaW5lIEdQUkNNX09fQVBMTE1DU19MT0NLX1RJTUVfQ09ORiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMjAKKworI2RlZmluZSBHUFJDTV9PX05XUF9TT0ZUX1JFU0VUICAweDAwMDAwNDAwCisjZGVmaW5lIEdQUkNNX09fTldQX0xQRFNfV0FLRVVQX0NGRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MDQKKworI2RlZmluZSBHUFJDTV9PX05XUF9MUERTX1dBS0VVUF9TUkMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDA4CisKKyNkZWZpbmUgR1BSQ01fT19OV1BfUkVTRVRfQ0FVU0UgMHgwMDAwMDQwQworI2RlZmluZSBHUFJDTV9PX05XUF9MUERTX1dBS0VUSU1FX09QUF9DRkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDEwCisKKyNkZWZpbmUgR1BSQ01fT19OV1BfU1JBTV9EU0xQX0NGRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MTgKKworI2RlZmluZSBHUFJDTV9PX05XUF9TUkFNX0xQRFNfQ0ZHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQxQworCisjZGVmaW5lIEdQUkNNX09fTldQX0xQRFNfV0FLRVRJTUVfV0FLRV9DRkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDIwCisKKyNkZWZpbmUgR1BSQ01fT19OV1BfQVVUT05NU19TUElfTUFTVEVSX1NFTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MjQKKworI2RlZmluZSBHUFJDTV9PX05XUF9BVVRPTk1TX1NQSV9JRExFX1JFUSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MjgKKworI2RlZmluZSBHUFJDTV9PX1dMQU5fVE9fTldQX1dBS0VfUkVRVUVTVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MkMKKworI2RlZmluZSBHUFJDTV9PX05XUF9UT19XTEFOX1dBS0VfUkVRVUVTVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MzAKKworI2RlZmluZSBHUFJDTV9PX05XUF9HUElPX1dBS0VfQ09ORiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MzQKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHMTIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDM4CisKKyNkZWZpbmUgR1BSQ01fT19HUFJDTV9ESUVJRF9SRUFEX1JFRzUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDQ4CisKKyNkZWZpbmUgR1BSQ01fT19HUFJDTV9ESUVJRF9SRUFEX1JFRzYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDRDCisKKyNkZWZpbmUgR1BSQ01fT19SRUZfRlNNX0NGRzAgICAgMHgwMDAwMDgwMAorI2RlZmluZSBHUFJDTV9PX1JFRl9GU01fQ0ZHMSAgICAweDAwMDAwODA0CisjZGVmaW5lIEdQUkNNX09fQVBMTE1DU19XTEFOX0NPTkZJRzBfNDAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODA4CisKKyNkZWZpbmUgR1BSQ01fT19BUExMTUNTX1dMQU5fQ09ORklHMV80MCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4MEMKKworI2RlZmluZSBHUFJDTV9PX0FQTExNQ1NfV0xBTl9DT05GSUcwXzI2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgxMAorCisjZGVmaW5lIEdQUkNNX09fQVBMTE1DU19XTEFOX0NPTkZJRzFfMjYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODE0CisKKyNkZWZpbmUgR1BSQ01fT19BUExMTUNTX1dMQU5fT1ZFUlJJREVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgxOAorCisjZGVmaW5lIEdQUkNNX09fQVBMTE1DU19NQ1VfUlVOX0NPTkZJRzBfMzhQNCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4MUMKKworI2RlZmluZSBHUFJDTV9PX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcxXzM4UDQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODIwCisKKyNkZWZpbmUgR1BSQ01fT19BUExMTUNTX01DVV9SVU5fQ09ORklHMF8yNiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4MjQKKworI2RlZmluZSBHUFJDTV9PX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcxXzI2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgyOAorCisjZGVmaW5lIEdQUkNNX09fU1BBUkVfUlcwICAgICAgIDB4MDAwMDA4MkMKKyNkZWZpbmUgR1BSQ01fT19TUEFSRV9SVzEgICAgICAgMHgwMDAwMDgzMAorI2RlZmluZSBHUFJDTV9PX0FQTExNQ1NfTUNVX09WRVJSSURFUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4MzQKKworI2RlZmluZSBHUFJDTV9PX1NZU0NMS19TV0lUQ0hfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgzOAorCisjZGVmaW5lIEdQUkNNX09fUkVGX0xET19DT05UUk9MUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4M0MKKworI2RlZmluZSBHUFJDTV9PX1JFRl9SVFJJTV9DT05UUk9MIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDg0MAorCisjZGVmaW5lIEdQUkNNX09fUkVGX1NMSUNFUl9DT05UUk9MUzAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODQ0CisKKyNkZWZpbmUgR1BSQ01fT19SRUZfU0xJQ0VSX0NPTlRST0xTMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4NDgKKworI2RlZmluZSBHUFJDTV9PX1JFRl9BTkFfQkdBUF9DT05UUk9MUzAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODRDCisKKyNkZWZpbmUgR1BSQ01fT19SRUZfQU5BX0JHQVBfQ09OVFJPTFMxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDg1MAorCisjZGVmaW5lIEdQUkNNX09fUkVGX0FOQV9TUEFSRV9DT05UUk9MUzAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODU0CisKKyNkZWZpbmUgR1BSQ01fT19SRUZfQU5BX1NQQVJFX0NPTlRST0xTMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4NTgKKworI2RlZmluZSBHUFJDTV9PX01FTVNTX1BTQ09OX09WRVJSSURFUzAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODVDCisKKyNkZWZpbmUgR1BSQ01fT19NRU1TU19QU0NPTl9PVkVSUklERVMxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDg2MAorCisjZGVmaW5lIEdQUkNNX09fUExMX1JFRl9MT0NLX09WRVJSSURFUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4NjQKKworI2RlZmluZSBHUFJDTV9PX01DVV9QU0NPTl9ERUJVRyAweDAwMDAwODY4CisjZGVmaW5lIEdQUkNNX09fTUVNU1NfUFdSX1BTICAgIDB4MDAwMDA4NkMKKyNkZWZpbmUgR1BSQ01fT19SRUZfRlNNX0RFQlVHICAgMHgwMDAwMDg3MAorI2RlZmluZSBHUFJDTV9PX01FTV9TWVNfT1BQX1JFUV9PVkVSUklERSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4NzQKKworI2RlZmluZSBHUFJDTV9PX01FTV9URVNUQ1RSTF9QRF9PUFBfQ09ORklHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDg3OAorCisjZGVmaW5lIEdQUkNNX09fTUVNX1dMX0ZBU1RfQ0xLX1JFUV9PVkVSUklERVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODdDCisKKyNkZWZpbmUgR1BSQ01fT19NRU1fTUNVX1BEX01PREVfUkVRX09WRVJSSURFUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4ODAKKworI2RlZmluZSBHUFJDTV9PX01FTV9NQ1NQSV9TUkFNX09GRl9SRVFfT1ZFUlJJREVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDg4NAorCisjZGVmaW5lIEdQUkNNX09fTUVNX1dMQU5fQVBMTE1DU19PVkVSUklERVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODg4CisKKyNkZWZpbmUgR1BSQ01fT19NRU1fUkVGX0ZTTV9DRkcyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDg4QworCisjZGVmaW5lIEdQUkNNX09fVEVTVENUUkxfUE9XRVJfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDMTAKKworI2RlZmluZSBHUFJDTV9PX1NTRElPX1BPV0VSX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzE0CisKKyNkZWZpbmUgR1BSQ01fT19NQ1NQSV9OMV9QT1dFUl9DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEMxOAorCisjZGVmaW5lIEdQUkNNX09fV0VMUF9QT1dFUl9DVFJMIDB4MDAwMDBDMUMKKyNkZWZpbmUgR1BSQ01fT19XTF9TRElPX1BPV0VSX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzIwCisKKyNkZWZpbmUgR1BSQ01fT19XTEFOX1NSQU1fQUNUSVZFX1BXUl9DRkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzI0CisKKyNkZWZpbmUgR1BSQ01fT19XTEFOX1NSQU1fU0xFRVBfUFdSX0NGRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDMjgKKworI2RlZmluZSBHUFJDTV9PX0FQUFNfU0VDVVJFX0lOSVRfRE9ORSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDMzAKKworI2RlZmluZSBHUFJDTV9PX0FQUFNfREVWX01PREVfSU5JVF9ET05FIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEMzNAorCisjZGVmaW5lIEdQUkNNX09fRU5fQVBQU19SRUJPT1QgIDB4MDAwMDBDMzgKKyNkZWZpbmUgR1BSQ01fT19NRU1fQVBQU19QRVJJUEhfUFJFU0VOVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDM0MKKworI2RlZmluZSBHUFJDTV9PX01FTV9OV1BfUEVSSVBIX1BSRVNFTlQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzQwCisKKyNkZWZpbmUgR1BSQ01fT19NRU1fU0hBUkVEX1BFUklQSF9QUkVTRU5UIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEM0NAorCisjZGVmaW5lIEdQUkNNX09fTldQX1BXUl9TVEFURSAgIDB4MDAwMDBDNDgKKyNkZWZpbmUgR1BSQ01fT19BUFBTX1BXUl9TVEFURSAgMHgwMDAwMEM0QworI2RlZmluZSBHUFJDTV9PX01DVV9QV1JfU1RBVEUgICAweDAwMDAwQzUwCisjZGVmaW5lIEdQUkNNX09fV1RPUF9QTV9QUyAgICAgIDB4MDAwMDBDNTQKKyNkZWZpbmUgR1BSQ01fT19XVE9QX1BEX1JFU0VUWl9PVkVSUklERV9SRUcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzU4CisKKyNkZWZpbmUgR1BSQ01fT19XRUxQX1BEX1JFU0VUWl9PVkVSUklERV9SRUcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzVDCisKKyNkZWZpbmUgR1BSQ01fT19XTF9TRElPX1BEX1JFU0VUWl9PVkVSUklERV9SRUcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzYwCisKKyNkZWZpbmUgR1BSQ01fT19TU0RJT19QRF9SRVNFVFpfT1ZFUlJJREVfUkVHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEM2NAorCisjZGVmaW5lIEdQUkNNX09fTUNTUElfTjFfUERfUkVTRVRaX09WRVJSSURFX1JFRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDNjgKKworI2RlZmluZSBHUFJDTV9PX1RFU1RDVFJMX1BEX1JFU0VUWl9PVkVSUklERV9SRUcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzZDCisKKyNkZWZpbmUgR1BSQ01fT19NQ1VfUERfUkVTRVRaX09WRVJSSURFX1JFRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDNzAKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDNzgKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDN0MKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDODAKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHMyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDODQKKworI2RlZmluZSBHUFJDTV9PX1dUT1BfTUVNX1JFVF9DRkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzg4CisKKyNkZWZpbmUgR1BSQ01fT19DT0VYX0NMS19TV0FMTE9XX0NGRzAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzhDCisKKyNkZWZpbmUgR1BSQ01fT19DT0VYX0NMS19TV0FMTE9XX0NGRzEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzkwCisKKyNkZWZpbmUgR1BSQ01fT19DT0VYX0NMS19TV0FMTE9XX0NGRzIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzk0CisKKyNkZWZpbmUgR1BSQ01fT19DT0VYX0NMS19TV0FMTE9XX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDOTgKKworI2RlZmluZSBHUFJDTV9PX0RDRENfQ0xLX0dFTl9DT05GSUcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzlDCisKKyNkZWZpbmUgR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQ0EwCisKKyNkZWZpbmUgR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQ0E0CisKKyNkZWZpbmUgR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQ0E4CisKKyNkZWZpbmUgR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQ0FDCisKKyNkZWZpbmUgR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQ0IwCisKKyNkZWZpbmUgR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQ0I0CisKKyNkZWZpbmUgR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzEwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMENCOAorCisjZGVmaW5lIEdQUkNNX09fR1BSQ01fRUZVU0VfUkVBRF9SRUcxMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDQkMKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0RJRUlEX1JFQURfUkVHMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDQzAKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0RJRUlEX1JFQURfUkVHMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDQzQKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0RJRUlEX1JFQURfUkVHMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDQzgKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0RJRUlEX1JFQURfUkVHMyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDQ0MKKworI2RlZmluZSBHUFJDTV9PX0dQUkNNX0RJRUlEX1JFQURfUkVHNCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDRDAKKworI2RlZmluZSBHUFJDTV9PX0FQUFNfU1NfT1ZFUlJJREVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMENENAorCisjZGVmaW5lIEdQUkNNX09fTldQX1NTX09WRVJSSURFUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDRDgKKworI2RlZmluZSBHUFJDTV9PX1NIQVJFRF9TU19PVkVSUklERVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQ0RDCisKKyNkZWZpbmUgR1BSQ01fT19JRE1FTV9DT1JFX1JTVF9PVkVSUklERVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQ0UwCisKKyNkZWZpbmUgR1BSQ01fT19UT1BfRElFX0ZTTV9PVkVSUklERVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQ0U0CisKKyNkZWZpbmUgR1BSQ01fT19NQ1VfUFNDT05fT1ZFUlJJREVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMENFOAorCisjZGVmaW5lIEdQUkNNX09fV1RPUF9QU0NPTl9PVkVSUklERVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQ0VDCisKKyNkZWZpbmUgR1BSQ01fT19XRUxQX1BTQ09OX09WRVJSSURFUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDRjAKKworI2RlZmluZSBHUFJDTV9PX1dMX1NESU9fUFNDT05fT1ZFUlJJREVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMENGNAorCisjZGVmaW5lIEdQUkNNX09fTUNTUElfUFNDT05fT1ZFUlJJREVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMENGOAorCisjZGVmaW5lIEdQUkNNX09fU1NESU9fUFNDT05fT1ZFUlJJREVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMENGQworCisKKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19BUFBTX1NPRlRfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fQVBQU19TT0ZUX1JFU0VUX0FQUFNfU09GVF9SRVNFVDEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyBTb2Z0LXJlc2V0MSBmb3IgQVBQUyA6IENvcnRleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzeXNyc3RuIGlzIGFzc2VydGVkIGFuZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGRpdGlvbiB0byB0aGF0IHRoZSBhc3NvY2lhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFMgUGVyaXBoZXJhbHMgYXJlIGFsc28gcmVzZXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gYXV0by1jbGVhciBiaXQuCisKKyNkZWZpbmUgR1BSQ01fQVBQU19TT0ZUX1JFU0VUX0FQUFNfU09GVF9SRVNFVDAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyBTb2Z0LXJlc2V0MCBmb3IgQVBQUyA6IE9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3lzLXJlc2V0biBmb3IgQ29ydGV4IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzZXJ0ZWQuIFRoaXMgaXMgYW4gYXV0by1jbGVhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQUFNfTFBEU19XQUtFVVBfQ0ZHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQUFNfTFBEU19XQUtFVVBfQ0ZHX0FQUFNfTFBEU19XQUtFVVBfQ0ZHX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGICAvLyBNYXNrIGZvciBMUERTIFdha2V1cCBpbnRlcnJ1cHQgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbN10gLSBIb3N0IElSUSBmcm9tIE5XUCBbNl0gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOV1BfTFBEU19XYWtlX2lycSAoVFJVRV9MUERTKSBbNV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBOV1AgV2FrZS1yZXF1ZXN0IHRvIEFQUFMgWzRdIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyBbMzoxXSAtIFJlc2VydmVkIFswXSAtIExQRFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2FrZXVwLXRpbWVyCisKKyNkZWZpbmUgR1BSQ01fQVBQU19MUERTX1dBS0VVUF9DRkdfQVBQU19MUERTX1dBS0VVUF9DRkdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19BUFBTX0xQRFNfV0FLRVVQX1NSQyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUFBTX0xQRFNfV0FLRVVQX1NSQ19BUFBTX0xQRFNfV0FLRVVQX1NSQ19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRiAgLy8gSW5kaWNhdGVzIHRoZSBjYXVzZSBmb3Igd2FrZXVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gTFBEUyA6IFs3XSAtIEhvc3QgSVJRIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTldQIFs2XSAtIE5XUF9MUERTX1dha2VfaXJxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChUUlVFX0xQRFMpIFs1XSAtIE5XUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXYWtlLXJlcXVlc3QgdG8gQVBQUyBbNF0gLSBHUElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFszOjFdIC0gUmVzZXJ2ZWQgWzBdIC0gTFBEUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXYWtldXAtdGltZXIKKworI2RlZmluZSBHUFJDTV9BUFBTX0xQRFNfV0FLRVVQX1NSQ19BUFBTX0xQRFNfV0FLRVVQX1NSQ19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQUFNfUkVTRVRfQ0FVU0UgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fQVBQU19SRVNFVF9DQVVTRV9BUFBTX1JFU0VUX0NBVVNFX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGICAvLyBJbmRpY2F0ZXMgdGhlIHJlc2V0IGNhdXNlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUFBTIDogIjAwMDAiIC0gV2FrZSBmcm9tIEhJQi9PRkYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZTsgIjAwMDEiIC0gV2FrZSBmcm9tIExQRFMgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDAxMCIgLSBSZXNlcnZlZCA7ICIwMDExIiAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNvZnQtcmVzZXQwIChPbmx5IEFQUFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29ydGV4LXN5c3JzdG4gaXMgYXNzZXJ0ZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDEwMCIgLSBTb2Z0LXJlc2V0MSAoQVBQUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb3J0ZXgtc3lzcnN0biBhbmQgQVBQUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwZXJpcGhlcmFscyBhcmUgcmVzZXQpOyAiMDEwMSIgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXRE9HMCAoQVBQUyBDb3J0ZXgtc3lzcnN0biBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBQUyBwZXJpcGhlcmFscyBhcmUgcmVzZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDExMCIgLSBNQ1UgU29mdC1yZXNldCAoQVBQUyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5XUCBDb3J0ZXgtc3lzcnN0biArIFBlcmlwaGVyYWxzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZSByZXNldCk7ICIwMTExIiAtIFNlY3VyZSBJbml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbmUgKEluZGljYXRpb24gdGhhdCByZXNldCBoYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFwcGVuZWQgYWZ0ZXIgRGV2SW5pdCk7ICIxMDAwIiAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERldiBNb2RlIFBhdGNoIEluaXQgZG9uZSAoRHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRldmVsb3BtZW50IG1vZGUsIHBhdGNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd25sb2FkaW5nIGFuZCBDb3J0ZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmUtdmVjdG9yaW5nIGlzIGNvbXBsZXRlZCkKKworI2RlZmluZSBHUFJDTV9BUFBTX1JFU0VUX0NBVVNFX0FQUFNfUkVTRVRfQ0FVU0VfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19BUFBTX0xQRFNfV0FLRVRJTUVfT1BQX0NGRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUFBTX0xQRFNfV0FLRVRJTUVfT1BQX0NGR19BUFBTX0xQRFNfV0FLRVRJTUVfT1BQX0NGR19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gT1BQIFJlcXVlc3QgQ29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoTnVtYmVyIG9mIHNsb3ctY2xrIGN5Y2xlcykgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExQRFMgV2FrZS10aW1lciA6IFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlndXJhdGlvbiBpbXBsaWVzIHRoZSBSVEMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGltZS1zdGFtcCwgd2hpY2ggbXVzdCBiZSBmZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2xvdy1jbGtzIHByaW9yIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFNfTFBEU19XQUtFVElNRV9XQUtFX0NGRywgc3VjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGJ5IHRoZSB0aW1lIGFjdHVhbCB3YWtldXAgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2l2ZW4sIE9QUCBpcyBhbHJlYWR5IHN3aXRjaGVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFDVElWRSAoUlVOKS4KKworI2RlZmluZSBHUFJDTV9BUFBTX0xQRFNfV0FLRVRJTUVfT1BQX0NGR19BUFBTX0xQRFNfV0FLRVRJTUVfT1BQX0NGR19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQUFNfU1JBTV9EU0xQX0NGRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUFBTX1NSQU1fRFNMUF9DRkdfQVBQU19TUkFNX0RTTFBfQ0ZHX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMEZGRkZGICAvLyBDb25maWd1cmF0aW9uIG9mIEFQUFMgTWVtb3JpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIERlZXAtc2xlZXAgOiAwIC0gU1JBTXMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9GRiA7IDEgLSBTUkFNcyBhcmUgUmV0YWluZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFMgU1JBTSBDbHVzdGVyIGluZm9ybWF0aW9uIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzBdIC0gMXN0IGNvbHVtbiBpbiBNRU1TUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoQXBwbGljYWJsZSBvbmx5IHdoZW4gb3duZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBQUyk7IFsxXSAtIDJuZCBjb2x1bW4gaW4gTUVNU1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEFwcGxpY2FibGUgb25seSB3aGVuIG93bmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFMpOyBbMl0gLSAzcmQgY29sdW1uIGluIE1FTVNTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChBcHBsaWNhYmxlIG9ubHkgd2hlbiBvd25lZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUFBTKSA7IFszXSAtIDR0aCBjb2x1bW4gaW4gTUVNU1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEFwcGxpY2FibGUgb25seSB3aGVuIG93bmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFMpIDsgWzE2XSAtIE1DVS1QRCAtIEFwcHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2x1c3RlciAwIChUQkQpOyBbMTk6MThdIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXJ2ZWQuCisKKyNkZWZpbmUgR1BSQ01fQVBQU19TUkFNX0RTTFBfQ0ZHX0FQUFNfU1JBTV9EU0xQX0NGR19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQUFNfU1JBTV9MUERTX0NGRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUFBTX1NSQU1fTFBEU19DRkdfQVBQU19TUkFNX0xQRFNfQ0ZHX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMEZGRkZGICAvLyBDb25maWd1cmF0aW9uIG9mIEFQUFMgTWVtb3JpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIExQRFMgOiAwIC0gU1JBTXMgYXJlIE9GRiA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEgLSBTUkFNcyBhcmUgUmV0YWluZWQuIEFQUFMgU1JBTQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbHVzdGVyIGluZm9ybWF0aW9uIDogWzBdIC0gMXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgQVBQUyk7IFsxXSAtIDJuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IEFQUFMpOyBbMl0gLSAzcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIGluIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBBUFBTKSA7IFszXSAtIDR0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IEFQUFMpIDsgWzE2XSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1DVS1QRCAtIEFwcHMgY2x1c3RlciAwIChUQkQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMTk6MThdIC0gUmVzZXJ2ZWQuCisKKyNkZWZpbmUgR1BSQ01fQVBQU19TUkFNX0xQRFNfQ0ZHX0FQUFNfU1JBTV9MUERTX0NGR19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQUFNfTFBEU19XQUtFVElNRV9XQUtFX0NGRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUFBTX0xQRFNfV0FLRVRJTUVfV0FLRV9DRkdfQVBQU19MUERTX1dBS0VUSU1FX1dBS0VfQ0ZHX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBDb25maWd1cmF0aW9uIChpbiBubyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbG93X2Nsa3MpIHdoaWNoIHNheXMgd2hlbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0dWFsIHdha2V1cCByZXF1ZXN0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmluZyB0aGUgUEQtcmVzZXQgYmUgZ2l2ZW4uCisKKyNkZWZpbmUgR1BSQ01fQVBQU19MUERTX1dBS0VUSU1FX1dBS0VfQ0ZHX0FQUFNfTFBEU19XQUtFVElNRV9XQUtFX0NGR19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1RPUF9ESUVfRU5BQkxFIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1RPUF9ESUVfRU5BQkxFX0ZMQVNIX0JVU1kgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAxMDAwCisKKyNkZWZpbmUgR1BSQ01fVE9QX0RJRV9FTkFCTEVfVE9QX0RJRV9QV1JfUFNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGMDAKKworI2RlZmluZSBHUFJDTV9UT1BfRElFX0VOQUJMRV9UT1BfRElFX1BXUl9QU19TIDgKKyNkZWZpbmUgR1BSQ01fVE9QX0RJRV9FTkFCTEVfVE9QX0RJRV9FTkFCTEVfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIFRvcC1kaWUgaXMgZW5hYmxlZCA7CisKKyNkZWZpbmUgR1BSQ01fVE9QX0RJRV9FTkFCTEVfVE9QX0RJRV9FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gRW5hYmxlIHRoZSB0b3AtZGllIDsgMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERpc2FibGUgdGhlIHRvcC1kaWUKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fVE9QX0RJRV9FTkFCTEVfUEFSQU1FVEVSUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9UT1BfRElFX0VOQUJMRV9QQVJBTUVURVJTX0ZMQVNIXzNQM19SU1ROMkQyRF9QT1JfUlNUTl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGMDAwMDAwMCAgLy8gQ29uZmlndXJhdGlvbiAoaW4gc2xvd19jbGtzKSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbnVtYmVyIG9mIGNsa3MgYmV0d2VlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGbGFzaC0zcDMtcnN0biB0byBEMkQgUE9SIFJlc2V0bi4KKworI2RlZmluZSBHUFJDTV9UT1BfRElFX0VOQUJMRV9QQVJBTUVURVJTX0ZMQVNIXzNQM19SU1ROMkQyRF9QT1JfUlNUTl9TIDI4CisjZGVmaW5lIEdQUkNNX1RPUF9ESUVfRU5BQkxFX1BBUkFNRVRFUlNfVE9QX0RJRV9TV19FTjJUT1BfRElFX0ZMQVNIXzNQM19SU1ROX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRkYwMDAwICAvLyBDb25maWd1cmF0aW9uIChpbiBzbG93X2Nsa3MpIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBudW1iZXIgb2YgY2xrcyBiZXR3ZWVuIFRvcC1kaWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dpdGNoLUVuYWJsZSBhbmQgVG9wLWRpZSBGbGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzcDMgUmVzZXQgcmVtb3ZhbAorCisjZGVmaW5lIEdQUkNNX1RPUF9ESUVfRU5BQkxFX1BBUkFNRVRFUlNfVE9QX0RJRV9TV19FTjJUT1BfRElFX0ZMQVNIXzNQM19SU1ROX1MgMTYKKyNkZWZpbmUgR1BSQ01fVE9QX0RJRV9FTkFCTEVfUEFSQU1FVEVSU19UT1BfRElFX1BPUl9SU1ROMkJPVFRfRElFX0ZNQ19SU1ROX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGICAvLyBDb25maWd1cmF0aW9uIChpbiBzbG93X2Nsa3MpIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBudW1iZXIgb2YgY2xrcyBiZXR3ZWVuIEQyRCBQT1IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXQgcmVtb3ZhbCBhbmQgYm90dG9tIGRpZSBGTUMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXQgcmVtb3ZhbAorCisjZGVmaW5lIEdQUkNNX1RPUF9ESUVfRU5BQkxFX1BBUkFNRVRFUlNfVE9QX0RJRV9QT1JfUlNUTjJCT1RUX0RJRV9GTUNfUlNUTl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX01DVV9HTE9CQUxfU09GVF9SRVNFVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9NQ1VfR0xPQkFMX1NPRlRfUkVTRVRfTUNVX0dMT0JBTF9TT0ZUX1JFU0VUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEFzc2VydCB0aGUgZ2xvYmFsIHJlc2V0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ1UgKEFQUFMgKyBOV1ApIDsgQXNzZXJ0cyBib3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvcnRleCBzeXNyc3RuIGFuZCBpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGVyaXBoZXJhbHMgMCAtIERlYXNzZXJ0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnbG9iYWwgcmVzZXQgZm9yIE1DVSAoQVBQUyArIE5XUCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOyBBc3NlcnRzIGJvdGggQ29ydGV4IHN5c3JzdG4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0cyBwZXJpcGhlcmFscyBOb3RlIDogUmVzZXQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNoYXJlZCBwZXJpcGhlcmFscyBpcyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWZmZWN0ZWQgaGVyZS4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQURDX0NMS19DT05GSUcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fQURDX0NMS19DT05GSUdfQURDX0NMS0dFTl9PRkZfVElNRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDdDMCAgLy8gQ29uZmlndXJhdGlvbiAoaW4gbnVtYmVyIG9mIDM4LjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUh6IGNsa3MpIGZvciB0aGUgT0ZGLVRpbWUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGlvbiBvZiBBRENfQ0xLCisKKyNkZWZpbmUgR1BSQ01fQURDX0NMS19DT05GSUdfQURDX0NMS0dFTl9PRkZfVElNRV9TIDYKKyNkZWZpbmUgR1BSQ01fQURDX0NMS19DT05GSUdfQURDX0NMS0dFTl9PTl9USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDNFICAvLyBDb25maWd1cmF0aW9uIChpbiBudW1iZXIgb2YgMzguNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNSHogY2xrcykgZm9yIHRoZSBPTi1UaW1lIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdlbmVyYXRpb24gb2YgQURDX0NMSworCisjZGVmaW5lIEdQUkNNX0FEQ19DTEtfQ09ORklHX0FEQ19DTEtHRU5fT05fVElNRV9TIDEKKyNkZWZpbmUgR1BSQ01fQURDX0NMS19DT05GSUdfQURDX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gRW5hYmxlIHRoZSBBRENfQ0xLIDsgMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERpc2FibGUgdGhlIEFEQ19DTEsKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQVBQU19HUElPX1dBS0VfQ09ORiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUFBTX0dQSU9fV0FLRV9DT05GX0FQUFNfR1BJT19XQUtFX0NPTkZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDMgIC8vICIwMCIgLSBXYWtlIG9uIExldmVsMCBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZWxlY3RlZCBHUElPIHBpbiAoR1BJTyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZWxlY3RlZCBpbnNpZGUgdGhlIEhJQjNwMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2R1bGUpOyAiMDEiIC0gV2FrZXVwIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZhbGwtZWRnZSBvZiBHUElPIHBpbi4KKworI2RlZmluZSBHUFJDTV9BUFBTX0dQSU9fV0FLRV9DT05GX0FQUFNfR1BJT19XQUtFX0NPTkZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19FTl9OV1BfQk9PVF9XT19ERVZJTklUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0VOX05XUF9CT09UX1dPX0RFVklOSVRfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkUKKworI2RlZmluZSBHUFJDTV9FTl9OV1BfQk9PVF9XT19ERVZJTklUX3Jlc2VydmVkX1MgMQorI2RlZmluZSBHUFJDTV9FTl9OV1BfQk9PVF9XT19ERVZJTklUX21lbV9lbl9ud3BfYm9vdF93b19kZXZpbml0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIE92ZXJyaWRlIHRoZSBzZWN1cmUtbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb25lIGZvciBib290aW5nIHVwIE5XUCAoV2FrZXVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5XUCBvbiBpdHMgZXZlbnQgaW5kZXBlbmRlbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ000IHN0YXRlKSA7IDAgLSBEb25vdCBvdmVycmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgc2VjdXJlLW1vZGUgZG9uZSBmb3IgTldQIGJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKE5XUCBtdXN0IGJlIGVuYWJsZWQgYnkgQ000IG9ubHkpCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX01FTV9IQ0xLX0RJVl9DRkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTUVNX0hDTEtfRElWX0NGR19tZW1faGNsa19kaXZfY2ZnX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3ICAvLyBEaXZpc2lvbiBjb25maWd1cmF0aW9uIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIQ0xLRElWT1VUIDogIjAwMCIgLSBEaXZpZGUgYnkgMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA7ICIwMDEiIC0gRGl2aWRlIGJ5IDIgOyAiMDEwIiAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERpdmlkZSBieSAzIDsgIjAxMSIgLSBEaXZpZGUgYnkgNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA7ICIxMDAiIC0gRGl2aWRlIGJ5IDUgOyAiMTAxIiAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERpdmlkZSBieSA2IDsgIjExMCIgLSBEaXZpZGUgYnkgNworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA7ICIxMTEiIC0gRGl2aWRlIGJ5IDgKKworI2RlZmluZSBHUFJDTV9NRU1fSENMS19ESVZfQ0ZHX21lbV9oY2xrX2Rpdl9jZmdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19NRU1fU1lTQ0xLX0RJVl9DRkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTUVNX1NZU0NMS19ESVZfQ0ZHX21lbV9zeXNjbGtfZGl2X29mZl90aW1lX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDM4CisKKyNkZWZpbmUgR1BSQ01fTUVNX1NZU0NMS19ESVZfQ0ZHX21lbV9zeXNjbGtfZGl2X29mZl90aW1lX1MgMworI2RlZmluZSBHUFJDTV9NRU1fU1lTQ0xLX0RJVl9DRkdfbWVtX3N5c2Nsa19kaXZfb25fdGltZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNworCisjZGVmaW5lIEdQUkNNX01FTV9TWVNDTEtfRElWX0NGR19tZW1fc3lzY2xrX2Rpdl9vbl90aW1lX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQVBMTE1DU19MT0NLX1RJTUVfQ09ORiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUExMTUNTX0xPQ0tfVElNRV9DT05GX21lbV9hcGxsbWNzX3dsYW5fbG9ja190aW1lX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRjAwCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19MT0NLX1RJTUVfQ09ORl9tZW1fYXBsbG1jc193bGFuX2xvY2tfdGltZV9TIDgKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19MT0NLX1RJTUVfQ09ORl9tZW1fYXBsbG1jc19tY3VfbG9ja190aW1lX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19MT0NLX1RJTUVfQ09ORl9tZW1fYXBsbG1jc19tY3VfbG9ja190aW1lX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTldQX1NPRlRfUkVTRVQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTldQX1NPRlRfUkVTRVRfTldQX1NPRlRfUkVTRVQxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gU29mdC1yZXNldDEgZm9yIE5XUCAtIENvcnRleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzeXNyc3RuIGFuZCBOV1AgYXNzb2NpYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwZXJpcGhlcmFscyBhcmUgLSBUaGlzIGlzIGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGF1dG8tY2xyIGJpdC4KKworI2RlZmluZSBHUFJDTV9OV1BfU09GVF9SRVNFVF9OV1BfU09GVF9SRVNFVDAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyBTb2Z0LXJlc2V0MCBmb3IgTldQIC0gT25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb3J0ZXgtc3lzcnN0biBpcyBhc3NlcnRlZCAtIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgYW4gYXV0by1jbGVhciBiaXQuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX05XUF9MUERTX1dBS0VVUF9DRkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTldQX0xQRFNfV0FLRVVQX0NGR19OV1BfTFBEU19XQUtFVVBfQ0ZHX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGICAvLyBNYXNrIGZvciBMUERTIFdha2V1cCBpbnRlcnJ1cHQgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA3IC0gV0xBTiBIb3N0IEludGVycnVwdCA7IDYgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXTEFOIHRvIE5XUCBXYWtlIHJlcXVlc3QgOyA1IC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBQUyB0byBOV1AgV2FrZSByZXF1ZXN0OyA0IC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyBXYWtldXAgOyAzIC0gQXV0b25vbW91cyBVQVJUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdha2V1cCA7IDIgLSBTU0RJTyBXYWtldXAgOyAxIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXV0b25vbW91cyBTUEkgV2FrZXVwIDsgMCAtIExQRFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2FrZXVwLXRpbWVyCisKKyNkZWZpbmUgR1BSQ01fTldQX0xQRFNfV0FLRVVQX0NGR19OV1BfTFBEU19XQUtFVVBfQ0ZHX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTldQX0xQRFNfV0FLRVVQX1NSQyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9OV1BfTFBEU19XQUtFVVBfU1JDX05XUF9MUERTX1dBS0VVUF9TUkNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIEluZGljYXRlcyB0aGUgY2F1c2UgZm9yIE5XUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMUERTLVdha2V1cCA6IDcgLSBXTEFOIEhvc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW50ZXJydXB0IDsgNiAtIFdMQU4gdG8gTldQIFdha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVxdWVzdCA7IDUgLSBBUFBTIHRvIE5XUCBXYWtlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcXVlc3Q7IDQgLSBHUElPIFdha2V1cCA7IDMgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBdXRvbm9tb3VzIFVBUlQgV2FrZXVwIDsgMiAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNTRElPIFdha2V1cCA7IDEgLSBBdXRvbm9tb3VzIFNQSQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXYWtldXAgOyAwIC0gTFBEUyBXYWtldXAtdGltZXIKKworI2RlZmluZSBHUFJDTV9OV1BfTFBEU19XQUtFVVBfU1JDX05XUF9MUERTX1dBS0VVUF9TUkNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19OV1BfUkVTRVRfQ0FVU0UgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTldQX1JFU0VUX0NBVVNFX05XUF9SRVNFVF9DQVVTRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRiAgLy8gSW5kaWNhdGVzIHRoZSByZXNldCBjYXVzZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTldQIDogIjAwMDAiIC0gV2FrZSBmcm9tIEhJQi9PRkYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZTsgIjAwMDEiIC0gV2FrZSBmcm9tIExQRFMgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDAxMCIgLSBSZXNlcnZlZCA7ICIwMDExIiAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNvZnQtcmVzZXQwIChPbmx5IE5XUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb3J0ZXgtc3lzcnN0biBpcyBhc3NlcnRlZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTAwIiAtIFNvZnQtcmVzZXQxIChOV1AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29ydGV4LXN5c3JzdG4gYW5kIE5XUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwZXJpcGhlcmFscyBhcmUgcmVzZXQpOyAiMDEwMSIgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXRE9HMCAoTldQIENvcnRleC1zeXNyc3RuIGFuZCBOV1AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGVyaXBoZXJhbHMgYXJlIHJlc2V0KTsgIjAxMTAiIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUNVIFNvZnQtcmVzZXQgKEFQUFMgKyBOV1AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29ydGV4LXN5c3JzdG4gKyBQZXJpcGhlcmFscyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXQpOyAiMDExMSIgLSBTU0RJTyBGdW5jdGlvbjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXQgKE9ubHkgQ29ydGV4LXN5c3JzdG4gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzZXJ0ZWQpIDsgIjEwMDAiIC0gUmVzZXQgZHVlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdET0cgb2YgQVBQUyAoTldQIENvcnRleC1zeXNyc3RuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBOV1AgcGVyaXBoZXJhbHMgYXJlIHJlc2V0KTsKKworI2RlZmluZSBHUFJDTV9OV1BfUkVTRVRfQ0FVU0VfTldQX1JFU0VUX0NBVVNFX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTldQX0xQRFNfV0FLRVRJTUVfT1BQX0NGRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9OV1BfTFBEU19XQUtFVElNRV9PUFBfQ0ZHX05XUF9MUERTX1dBS0VUSU1FX09QUF9DRkdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIE9QUCBSZXF1ZXN0IENvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKE51bWJlciBvZiBzbG93LWNsayBjeWNsZXMpIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMUERTIFdha2UtdGltZXIKKworI2RlZmluZSBHUFJDTV9OV1BfTFBEU19XQUtFVElNRV9PUFBfQ0ZHX05XUF9MUERTX1dBS0VUSU1FX09QUF9DRkdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19OV1BfU1JBTV9EU0xQX0NGRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9OV1BfU1JBTV9EU0xQX0NGR19OV1BfU1JBTV9EU0xQX0NGR19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDBGRkZGRiAgLy8gQ29uZmlndXJhdGlvbiBvZiBOV1AgTWVtb3JpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIERTTFAgOiAwIC0gU1JBTXMgYXJlIE9GRiA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEgLSBTUkFNcyBhcmUgUmV0YWluZWQuIE5XUCBTUkFNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsdXN0ZXIgaW5mb3JtYXRpb24gOiBbMl0gLSAzcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIGluIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBOV1ApIDsgWzNdIC0gNHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFs0XSAtIDV0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbNV0gLSA2dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIGluIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBOV1ApIDsgWzZdIC0gN3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFs3XSAtIDh0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbOF0gLSA5dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIGluIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBOV1ApIDsgWzldIC0gMTB0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbMTBdIC0gMTF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbMTFdIC0gMTJ0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbMTJdIC0gMTN0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbMTNdIC0gMTR0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbMTRdIC0gMTV0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbMTk6MThdIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXJ2ZWQuCisKKyNkZWZpbmUgR1BSQ01fTldQX1NSQU1fRFNMUF9DRkdfTldQX1NSQU1fRFNMUF9DRkdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19OV1BfU1JBTV9MUERTX0NGRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9OV1BfU1JBTV9MUERTX0NGR19OV1BfU1JBTV9MUERTX0NGR19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDBGRkZGRiAgLy8gQ29uZmlndXJhdGlvbiBvZiBOV1AgTWVtb3JpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIExQRFMgOiAwIC0gU1JBTXMgYXJlIE9GRiA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEgLSBTUkFNcyBhcmUgUmV0YWluZWQuIE5XUCBTUkFNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsdXN0ZXIgaW5mb3JtYXRpb24gOiBbMl0gLSAzcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIGluIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBOV1ApIDsgWzNdIC0gNHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFs0XSAtIDV0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbNV0gLSA2dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIGluIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBOV1ApIDsgWzZdIC0gN3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBpbiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gb3duZWQgYnkgTldQKSA7IFs3XSAtIDh0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbOF0gLSA5dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIGluIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBOV1ApIDsgWzldIC0gMTB0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbMTBdIC0gMTF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbMTFdIC0gMTJ0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbMTJdIC0gMTN0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbMTNdIC0gMTR0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbMTRdIC0gMTV0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaW4gTUVNU1MgKEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG93bmVkIGJ5IE5XUCkgOyBbMTk6MThdIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXJ2ZWQuCisKKyNkZWZpbmUgR1BSQ01fTldQX1NSQU1fTFBEU19DRkdfTldQX1NSQU1fTFBEU19DRkdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19OV1BfTFBEU19XQUtFVElNRV9XQUtFX0NGRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9OV1BfTFBEU19XQUtFVElNRV9XQUtFX0NGR19OV1BfTFBEU19XQUtFVElNRV9XQUtFX0NGR19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gV2FrZSB0aW1lIGNvbmZpZ3VyYXRpb24gKG5vIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsb3cgY2xrcykgZm9yIE5XUCB3YWtlIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTFBEUy4KKworI2RlZmluZSBHUFJDTV9OV1BfTFBEU19XQUtFVElNRV9XQUtFX0NGR19OV1BfTFBEU19XQUtFVElNRV9XQUtFX0NGR19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX05XUF9BVVRPTk1TX1NQSV9NQVNURVJfU0VMIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX05XUF9BVVRPTk1TX1NQSV9NQVNURVJfU0VMX0ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRTAwMDAKKworI2RlZmluZSBHUFJDTV9OV1BfQVVUT05NU19TUElfTUFTVEVSX1NFTF9GX1MgMTcKKyNkZWZpbmUgR1BSQ01fTldQX0FVVE9OTVNfU1BJX01BU1RFUl9TRUxfTUVNX0FVVE9OTVNfU1BJX01BU1RFUl9TRUwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAwIC0gQVBQUyBpcyBzZWxlY3RlZCBhcyBob3N0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBdXRvbm1zIFNQSSA7IDEgLSBFeHRlcm5hbCBob3N0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNlbGVjdGVkIGFzIGhvc3QgZm9yIEF1dG9ubXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU1BJCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX05XUF9BVVRPTk1TX1NQSV9JRExFX1JFUSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9OV1BfQVVUT05NU19TUElfSURMRV9SRVFfTldQX0FVVE9OTVNfU1BJX0lETEVfV0FLRVVQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMAorCisjZGVmaW5lIEdQUkNNX05XUF9BVVRPTk1TX1NQSV9JRExFX1JFUV9OV1BfQVVUT05NU19TUElfSURMRV9BQ0sgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyBXaGVuIDEgPT4gSURMRS1tb2RlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFja25vd2xlZGdlZCBieSB0aGUgU1BJLUlQLiAoVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBmb3IgTUNTUElfTjEpCisKKyNkZWZpbmUgR1BSQ01fTldQX0FVVE9OTVNfU1BJX0lETEVfUkVRX05XUF9BVVRPTk1TX1NQSV9JRExFX1JFUSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIFdoZW4gMSA9PiBSZXF1ZXN0IGZvciBJRExFLW1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGF1dG9ub21vdXMgU1BJLiAoVGhpcyBpcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUNTUElfTjEpCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1dMQU5fVE9fTldQX1dBS0VfUkVRVUVTVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9XTEFOX1RPX05XUF9XQUtFX1JFUVVFU1RfV0xBTl9UT19OV1BfV0FLRV9SRVFVRVNUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIFJlcXVlc3QgZm9yIHdha2luZyB1cCBOV1AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSBhbnkgb2YgaXRzIGxvdy1wb3dlciBtb2RlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoU0xQL0RTTFAvTFBEUykKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTldQX1RPX1dMQU5fV0FLRV9SRVFVRVNUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX05XUF9UT19XTEFOX1dBS0VfUkVRVUVTVF9OV1BfVE9fV0xBTl9XQUtFX1JFUVVFU1QgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gUmVxdWVzdCBmb3Igd2FraW5wIHVwIFdMQU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSBpdHMgRUxQIE1vZGUgKFRoaXMgZ2V0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyZWQgdG8gRUxQLWxvZ2ljIG9mIFdMQU4pCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX05XUF9HUElPX1dBS0VfQ09ORiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9OV1BfR1BJT19XQUtFX0NPTkZfTldQX0dQSU9fV0FLRV9DT05GX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyAiMDAiIC0gV2FrZXVwIG9uIGxldmVsMCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VsZWN0ZWQgR1BJTyAoR1BJTyBnZXRzIHNlbGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluc2lkZSBISUIzUDMtbW9kdWxlKTsgIjAxIiAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdha2V1cCBvbiBmYWxsLWVkZ2Ugb2Ygc2VsZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTy4KKworI2RlZmluZSBHUFJDTV9OV1BfR1BJT19XQUtFX0NPTkZfTldQX0dQSU9fV0FLRV9DT05GX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fR1BSQ01fRUZVU0VfUkVBRF9SRUcxMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzEyX0ZVU0VGQVJNX1JPV18zMl9NU1dfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYgIC8vIFRoaXMgY29ycnNwb25kcyB0byBST1dfMzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzMxOjE2XSBvZiB0aGUgRlVTRUZBUk0uIFNQQVJFCisKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRUZVU0VfUkVBRF9SRUcxMl9GVVNFRkFSTV9ST1dfMzJfTVNXX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fR1BSQ01fRElFSURfUkVBRF9SRUc1IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0dQUkNNX0RJRUlEX1JFQURfUkVHNV9GVVNFRkFSTV9ST1dfMTBfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIENvcnJlc3BvbmRzIHRvIFJPVzEwIG9mIEZVU0VGQVJNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDogWzU6MF0gLSBBREMgT0ZGU0VUIDsgWzEzOjZdIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVEVNUF9TRU5TRSA7IFsxNDoxNF0gLSBERlRfR1NHIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzE1OjE1XSAtIEZNQ19ESVNBQkxFIDsgWzMxOjE2XSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdMQU5fTUFDIElECisKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRElFSURfUkVBRF9SRUc1X0ZVU0VGQVJNX1JPV18xMF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0dQUkNNX0RJRUlEX1JFQURfUkVHNiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9HUFJDTV9ESUVJRF9SRUFEX1JFRzZfRlVTRUZBUk1fUk9XXzExX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBDb3JyZXNwb25kcyB0byBST1cxMSBvZiBGVVNFRkFSTQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6IFszMTowXSA6IFdMQU4gTUFDIElECisKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRElFSURfUkVBRF9SRUc2X0ZVU0VGQVJNX1JPV18xMV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1JFRl9GU01fQ0ZHMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9SRUZfRlNNX0NGRzBfQkdBUF9TRVRUTElOR19USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRkYwMDAwICAvLyBBTkEtQkdBUCBTZXR0bGluZyB0aW1lIChJbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBudW1iZXIgb2Ygc2xvd19jbGtzKQorCisjZGVmaW5lIEdQUkNNX1JFRl9GU01fQ0ZHMF9CR0FQX1NFVFRMSU5HX1RJTUVfUyAxNgorI2RlZmluZSBHUFJDTV9SRUZfRlNNX0NGRzBfRlJFRl9MRE9fU0VUVExJTkdfVElNRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkYwMCAgLy8gU2xpY2VyIExETyBzZXR0bGluZyB0aW1lIChJbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBudW1iZXIgb2Ygc2xvdyBjbGtzKQorCisjZGVmaW5lIEdQUkNNX1JFRl9GU01fQ0ZHMF9GUkVGX0xET19TRVRUTElOR19USU1FX1MgOAorI2RlZmluZSBHUFJDTV9SRUZfRlNNX0NGRzBfRElHX0JVRl9TRVRUTElOR19USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGICAvLyBEaWctYnVmZmVyIHNldHRsaW5nIHRpbWUgKEluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG51bWJlciBvZiBzbG93IGNsa3MpCisKKyNkZWZpbmUgR1BSQ01fUkVGX0ZTTV9DRkcwX0RJR19CVUZfU0VUVExJTkdfVElNRV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1JFRl9GU01fQ0ZHMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9SRUZfRlNNX0NGRzFfWFRBTF9TRVRUTElOR19USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGMDAwMDAwICAvLyBYVEFMIHNldHRsaW5nIHRpbWUgKEluIG51bWJlciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbG93IGNsa3MpCisKKyNkZWZpbmUgR1BSQ01fUkVGX0ZTTV9DRkcxX1hUQUxfU0VUVExJTkdfVElNRV9TIDI0CisjZGVmaW5lIEdQUkNNX1JFRl9GU01fQ0ZHMV9TTElDRVJfTFZfU0VUVExJTkdfVElNRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMEZGMDAwMCAgLy8gTFYgU2xpY2VyIHNldHRsaW5nIHRpbWUKKworI2RlZmluZSBHUFJDTV9SRUZfRlNNX0NGRzFfU0xJQ0VSX0xWX1NFVFRMSU5HX1RJTUVfUyAxNgorI2RlZmluZSBHUFJDTV9SRUZfRlNNX0NGRzFfU0xJQ0VSX0hWX1BEX1NFVFRMSU5HX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGMDAgIC8vIEhWIFNsaWNlciBQdWxsLWRvd24gc2V0dGxpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGltZQorCisjZGVmaW5lIEdQUkNNX1JFRl9GU01fQ0ZHMV9TTElDRVJfSFZfUERfU0VUVExJTkdfVElNRV9TIDgKKyNkZWZpbmUgR1BSQ01fUkVGX0ZTTV9DRkcxX1NMSUNFUl9IVl9TRVRUTElOR19USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGICAvLyBIViBTbGljZXIgc2V0dGxpbmcgdGltZQorCisjZGVmaW5lIEdQUkNNX1JFRl9GU01fQ0ZHMV9TTElDRVJfSFZfU0VUVExJTkdfVElNRV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQTExNQ1NfV0xBTl9DT05GSUcwXzQwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9DT05GSUcwXzQwX0FQTExNQ1NfV0xBTl9OXzQwX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA3RjAwICAvLyBDb25maWd1cmF0aW9uIGZvciBXTEFOIEFQTExNQ1MgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOWzY6MF0sIGlmIHRoZSBYVEFMIGZyZXF1ZW5jeSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0MCBNSHogKFNlbGVjdGVkIGJ5IGVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9DT05GSUcwXzQwX0FQTExNQ1NfV0xBTl9OXzQwX1MgOAorI2RlZmluZSBHUFJDTV9BUExMTUNTX1dMQU5fQ09ORklHMF80MF9BUExMTUNTX1dMQU5fTV80MF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRiAgLy8gQ29uZmlndXJhdGlvbiBmb3IgV0xBTiBBUExMTUNTIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTVs3OjBdLCBpZiB0aGUgWFRBTCBmcmVxdWVuY3kgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNDAgTUh6IChTZWxlY3RlZCBieSBlZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX1dMQU5fQ09ORklHMF80MF9BUExMTUNTX1dMQU5fTV80MF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQTExNQ1NfV0xBTl9DT05GSUcxXzQwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9DT05GSUcxXzQwX0FQTExNQ1NfSElTUEVFRF80MCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAgIC8vIENvbmZpZ3VyYXRpb24gZm9yIFdMQU4gQVBMTE1DUyAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBYVEFMIGZyZXF1ZW5jeSBpZiA0MCBNSHoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKFNlbGVjdGVkIGJ5IEVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9DT05GSUcxXzQwX0FQTExNQ1NfU0VMOTZfNDAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4ICAvLyBDb25maWd1cmF0aW9uIGZvciBXTEFOIEFQTExNQ1MgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWw5NiwgaWYgdGhlIFhUQUwgZnJlcXVlbmN5IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDQwIE1IeiAoU2VsZWN0ZWQgYnkgRWZ1c2UpCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19XTEFOX0NPTkZJRzFfNDBfQVBMTE1DU19TRUxJTlBGUkVRXzQwX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3ICAvLyBDb25maWd1cmF0aW9uIGZvciBXTEFOIEFQTExNQ1MgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWxpbnBmcmVxLCBpZiB0aGUgWFRBTCBmcmVxdWVuY3kKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgNDAgTUh6IChTZWxlY3RlZCBieSBFZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX1dMQU5fQ09ORklHMV80MF9BUExMTUNTX1NFTElOUEZSRVFfNDBfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19BUExMTUNTX1dMQU5fQ09ORklHMF8yNiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUExMTUNTX1dMQU5fQ09ORklHMF8yNl9BUExMTUNTX1dMQU5fTl8yNl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwN0YwMCAgLy8gQ29uZmlndXJhdGlvbiBmb3IgV0xBTiBBUExMTUNTIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTls2OjBdLCBpZiB0aGUgWFRBTCBmcmVxdWVuY3kgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMjYgTUh6IChTZWxlY3RlZCBieSBlZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX1dMQU5fQ09ORklHMF8yNl9BUExMTUNTX1dMQU5fTl8yNl9TIDgKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19XTEFOX0NPTkZJRzBfMjZfQVBMTE1DU19XTEFOX01fMjZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYgIC8vIENvbmZpZ3VyYXRpb24gZm9yIFdMQU4gQVBMTE1DUyAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1bNzowXSwgaWYgdGhlIFhUQUwgZnJlcXVlbmN5IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDI2IE1IeiAoU2VsZWN0ZWQgYnkgZWZ1c2UpCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19XTEFOX0NPTkZJRzBfMjZfQVBMTE1DU19XTEFOX01fMjZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19BUExMTUNTX1dMQU5fQ09ORklHMV8yNiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUExMTUNTX1dMQU5fQ09ORklHMV8yNl9BUExMTUNTX0hJU1BFRURfMjYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwICAvLyBDb25maWd1cmF0aW9uIGZvciBXTEFOIEFQTExNQ1MgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgWFRBTCBmcmVxdWVuY3kgaWYgMjYgTUh6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChTZWxlY3RlZCBieSBFZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX1dMQU5fQ09ORklHMV8yNl9BUExMTUNTX1NFTDk2XzI2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOCAgLy8gQ29uZmlndXJhdGlvbiBmb3IgV0xBTiBBUExMTUNTIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VsOTYsIGlmIHRoZSBYVEFMIGZyZXF1ZW5jeSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyNiBNSHogKFNlbGVjdGVkIGJ5IEVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9DT05GSUcxXzI2X0FQTExNQ1NfU0VMSU5QRlJFUV8yNl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNyAgLy8gQ29uZmlndXJhdGlvbiBmb3IgV0xBTiBBUExMTUNTIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VsaW5wZnJlcSwgaWYgdGhlIFhUQUwgZnJlcXVlbmN5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIDI2IE1IeiAoU2VsZWN0ZWQgYnkgRWZ1c2UpCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19XTEFOX0NPTkZJRzFfMjZfQVBMTE1DU19TRUxJTlBGUkVRXzI2X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQVBMTE1DU19XTEFOX09WRVJSSURFUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUExMTUNTX1dMQU5fT1ZFUlJJREVTX0FQTExNQ1NfV0xBTl9QT1NURElWX09WRVJSSURFX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDgwMDAwCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19XTEFOX09WRVJSSURFU19BUExMTUNTX1dMQU5fUE9TVERJVl9PVkVSUklERV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA3MDAwMAorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9PVkVSUklERVNfQVBMTE1DU19XTEFOX1BPU1RESVZfT1ZFUlJJREVfUyAxNgorI2RlZmluZSBHUFJDTV9BUExMTUNTX1dMQU5fT1ZFUlJJREVTX0FQTExNQ1NfV0xBTl9TUEFSRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDcwMAorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9PVkVSUklERVNfQVBMTE1DU19XTEFOX1NQQVJFX1MgOAorI2RlZmluZSBHUFJDTV9BUExMTUNTX1dMQU5fT1ZFUlJJREVTX0FQTExNQ1NfV0xBTl9NXzhfT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAgIC8vIE92ZXJyaWRlIGNvbnRyb2wgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdMQU5fQVBMTE1DU19NWzhdLiBXaGVuIHNldCB0bzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1bOF0gd2lsbCBiZSBzZWxlY3RlZCBieSBiaXQgWzNdLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoRWxzZSBjb250cm9sbGVkIGZyb20gV1RPUCkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX1dMQU5fT1ZFUlJJREVTX0FQTExNQ1NfV0xBTl9NXzhfT1ZFUlJJREUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwICAvLyBPdmVycmlkZSBmb3IgV0xBTl9BUExMTUNTX01bOF0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgb25seSB3aGVuIGJpdCBbNF0gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDEuIChFbHNlIGNvbnRyb2xsZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXVE9QKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9PVkVSUklERVNfQVBMTE1DU19XTEFOX05fN184X09WRVJSSURFX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0ICAvLyBPdmVycmlkZSBjb250cm9sIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXTEFOX0FQTExNQ1NfTls4OjddLiBXaGVuIHNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0bzEsIE5bODo3XSB3aWxsIGJlIHNlbGVjdGVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdHMgWzI6MV0uIChFbHNlIGNvbnRyb2xsZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXVE9QKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfV0xBTl9PVkVSUklERVNfQVBMTE1DU19XTEFOX05fN184X09WRVJSSURFX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyBPdmVycmlkZSB2YWx1ZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV0xBTl9BUExMTUNTX05bODo3XSBiaXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIG9ubHkgd2hlbiBiaXQgWzFdIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAxLiAoRWxzZSBjb250cm9sbGVkIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV1RPUCkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX1dMQU5fT1ZFUlJJREVTX0FQTExNQ1NfV0xBTl9OXzdfOF9PVkVSUklERV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzM4UDQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19NQ1VfUlVOX0NPTkZJRzBfMzhQNF9BUExMTUNTX01DVV9QT1NURElWX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4MDAwMDAwCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19NQ1VfUlVOX0NPTkZJRzBfMzhQNF9BUExMTUNTX01DVV9QT1NURElWX1MgMjcKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19NQ1VfUlVOX0NPTkZJRzBfMzhQNF9BUExMTUNTX01DVV9TUEFSRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNzAwMDAwMAorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzM4UDRfQVBMTE1DU19NQ1VfU1BBUkVfUyAyNAorI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMF8zOFA0X0FQTExNQ1NfTUNVX1JVTl9OXzM4UDRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA3RjAwMDAgIC8vIENvbmZpZ3VyYXRpb24gZm9yIE1DVS1BUExMTUNTIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTiBkdXJpbmcgUlVOIG1vZGUuIFNlbGVjdGVkIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBYVEFMIGZyZXF1ZW5jeSBpcyAzOC40IE1IegorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoZnJvbSBFZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMF8zOFA0X0FQTExNQ1NfTUNVX1JVTl9OXzM4UDRfUyAxNgorI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMF8zOFA0X0FQTExNQ1NfTUNVX1JVTl9NXzM4UDRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGMDAgIC8vIENvbmZpZ3VyYXRpb24gZm9yIE1DVS1BUExMTUNTIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTSBkdXJpbmcgUlVOIG1vZGUuIFNlbGVjdGVkIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBYVEFMIGZyZXF1ZW5jeSBpcyAzOC40IE1IegorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoZnJvbSBFZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMF8zOFA0X0FQTExNQ1NfTUNVX1JVTl9NXzM4UDRfUyA4CisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzM4UDRfQVBMTE1DU19NQ1VfUlVOX01fOF8zOFA0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMCAgLy8gQ29uZmlndXJhdGlvbiBmb3IgTUNVLUFQTExNQ1MgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNWzhdIGR1cmluZyBSVU4gbW9kZS4gU2VsZWN0ZWQgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIFhUQUwgZnJlcXVlbmN5IGlzIDM4LjQgTUh6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChGcm9tIEVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzM4UDRfQVBMTE1DU19NQ1VfUlVOX05fN184XzM4UDRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDMgIC8vIENvbmZpZ3VyYXRpb24gZm9yIE1DVS1BUExMTUNTIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTls4OjddIGR1cmluZyBSVU4gbW9kZS4gU2VsZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIFhUQUwgZnJlcXVlbmN5IGlzIDM4LjQgTUh6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChGcm9tIEVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzM4UDRfQVBMTE1DU19NQ1VfUlVOX05fN184XzM4UDRfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19BUExMTUNTX01DVV9SVU5fQ09ORklHMV8zOFA0IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcxXzM4UDRfQVBMTE1DU19NQ1VfUlVOX0hJU1BFRURfMzhQNCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAgIC8vIENvbmZpZ3VyYXRpb24gZm9yIE1DVS1BUExMTUNTIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSElTUEVFRCBkdXJpbmcgUlVOIG1vZGUuIFNlbGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBYVEFMIGZyZXF1ZW5jeSBpcyAzOC40IE1IegorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoZnJvbSBFZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMV8zOFA0X0FQTExNQ1NfTUNVX1JVTl9TRUw5Nl8zOFA0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOCAgLy8gQ29uZmlndXJhdGlvbiBmb3IgTUNVLUFQTExNQ1MgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTRUw5NiBkdXJpbmcgUlVOIG1vZGUuIFNlbGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBYVEFMIGZyZXF1ZW5jeSBpcyAzOC40IE1IegorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoZnJvbSBFZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMV8zOFA0X0FQTExNQ1NfTUNVX1JVTl9TRUxJTlBGUkVRXzM4UDRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcgIC8vIENvbmZpZ3VyYXRpb24gZm9yIE1DVS1BUExMTUNTIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU0VMSU5QRlJFUSBkdXJpbmcgUlVOIG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdGVkIGlmIHRoZSBYVEFMIGZyZXF1ZW5jeSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzOC40IE1IeiAoZnJvbSBFZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMV8zOFA0X0FQTExNQ1NfTUNVX1JVTl9TRUxJTlBGUkVRXzM4UDRfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19BUExMTUNTX01DVV9SVU5fQ09ORklHMF8yNiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMF8yNl9BUExMTUNTX01DVV9SVU5fTl8yNl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDdGMDAwMCAgLy8gQ29uZmlndXJhdGlvbiBmb3IgTUNVLUFQTExNQ1MgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOIGR1cmluZyBSVU4gbW9kZS4gU2VsZWN0ZWQgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIFhUQUwgZnJlcXVlbmN5IGlzIDI2IE1IegorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoZnJvbSBFZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMF8yNl9BUExMTUNTX01DVV9SVU5fTl8yNl9TIDE2CisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzI2X0FQTExNQ1NfTUNVX1JVTl9NXzI2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRjAwICAvLyBDb25maWd1cmF0aW9uIGZvciBNQ1UtQVBMTE1DUyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE0gZHVyaW5nIFJVTiBtb2RlLiBTZWxlY3RlZCBpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgWFRBTCBmcmVxdWVuY3kgaXMgMjYgTUh6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChmcm9tIEVmdXNlKQorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX1JVTl9DT05GSUcwXzI2X0FQTExNQ1NfTUNVX1JVTl9NXzI2X1MgOAorI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMF8yNl9BUExMTUNTX01DVV9SVU5fTV84XzI2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMCAgLy8gQ29uZmlndXJhdGlvbiBmb3IgTUNVLUFQTExNQ1MgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNWzhdIGR1cmluZyBSVU4gbW9kZS4gU2VsZWN0ZWQgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIFhUQUwgZnJlcXVlbmN5IGlzIDI2IE1IegorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoRnJvbSBFZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMF8yNl9BUExMTUNTX01DVV9SVU5fTl83XzhfMjZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDMgIC8vIENvbmZpZ3VyYXRpb24gZm9yIE1DVS1BUExMTUNTIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTls4OjddIGR1cmluZyBSVU4gbW9kZS4gU2VsZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIFhUQUwgZnJlcXVlbmN5IGlzIDI2IE1IegorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoRnJvbSBFZnVzZSkKKworI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMF8yNl9BUExMTUNTX01DVV9SVU5fTl83XzhfMjZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19BUExMTUNTX01DVV9SVU5fQ09ORklHMV8yNiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9SVU5fQ09ORklHMV8yNl9BUExMTUNTX01DVV9SVU5fSElTUEVFRF8yNiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAgIC8vIENvbmZpZ3VyYXRpb24gZm9yIE1DVS1BUExMTUNTIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSElTUEVFRCBkdXJpbmcgUlVOIG1vZGUuIFNlbGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBYVEFMIGZyZXF1ZW5jeSBpcyAyNiBNSHoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGZyb20gRWZ1c2UpCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19NQ1VfUlVOX0NPTkZJRzFfMjZfQVBMTE1DU19NQ1VfUlVOX1NFTDk2XzI2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOCAgLy8gQ29uZmlndXJhdGlvbiBmb3IgTUNVLUFQTExNQ1MgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTRUw5NiBkdXJpbmcgUlVOIG1vZGUuIFNlbGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBYVEFMIGZyZXF1ZW5jeSBpcyAyNiBNSHoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGZyb20gRWZ1c2UpCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19NQ1VfUlVOX0NPTkZJRzFfMjZfQVBMTE1DU19NQ1VfUlVOX1NFTElOUEZSRVFfMjZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcgIC8vIENvbmZpZ3VyYXRpb24gZm9yIE1DVS1BUExMTUNTIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU0VMSU5QRlJFUSBkdXJpbmcgUlVOIG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdGVkIGlmIHRoZSBYVEFMIGZyZXF1ZW5jeSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyNiBNSHogKGZyb20gRWZ1c2UpCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19NQ1VfUlVOX0NPTkZJRzFfMjZfQVBMTE1DU19NQ1VfUlVOX1NFTElOUEZSRVFfMjZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBHUFJDTV9PX1NQQVJFX1JXMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUgR1BSQ01fT19TUEFSRV9SVzEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0FQTExNQ1NfTUNVX09WRVJSSURFUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9PVkVSUklERVNfQVBMTE1DU19NQ1VfTE9DSyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MDAgIC8vIDEgLSBBUExMTUNTX01DVSBpcyBsb2NrZWQgOyAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBMTE1DU19NQ1UgaXMgbm90IGxvY2tlZAorCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX09WRVJSSURFU19BUExMTUNTX01DVV9FTkFCTEVfT1ZFUlJJREUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMjAwICAvLyBPdmVycmlkZSBmb3IgQVBMTE1DU19NQ1UgRW5hYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIGlmIGJpdCBbOF0gaXMgc2V0CisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19NQ1VfT1ZFUlJJREVTX0FQTExNQ1NfTUNVX0VOQUJMRV9PVkVSUklERV9DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gMSAtIEVuYWJsZSBmb3IgQVBMTE1DU19NQ1UgY29tZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSBiaXQgWzldLiAwIC0gRW5hYmxlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUExMTUNTX01DVSBjb21lcyBmcm9tIEZTTS4KKworI2RlZmluZSBHUFJDTV9BUExMTUNTX01DVV9PVkVSUklERVNfU1lTQ0xLX1NSQ19PVkVSUklERV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNiAgLy8gT3ZlcnJpZGUgZm9yIHN5c2NsayBzcmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGFwcGxpY2FibGUgb25seSBpZiBiaXQgWzBdIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAxLiAiMDAiLSBTTE9XX0NMSyAiMDEiLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBYVEFMX0NMSyAiMTAiLSBQTExfQ0xLCisKKyNkZWZpbmUgR1BSQ01fQVBMTE1DU19NQ1VfT1ZFUlJJREVTX1NZU0NMS19TUkNfT1ZFUlJJREVfUyAxCisjZGVmaW5lIEdQUkNNX0FQTExNQ1NfTUNVX09WRVJSSURFU19TWVNDTEtfU1JDX09WRVJSSURFX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gU3lzY2xrIHNyYyBpcyBzZWxlY3RlZCBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdHMgWzI6MV0gb2YgdGhpcyByZWdpc3Rlci4gMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN5c2NsayBzcmMgaXMgc2VsZWN0ZWQgZnJvbSBGU00KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fU1lTQ0xLX1NXSVRDSF9TVEFUVVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fU1lTQ0xLX1NXSVRDSF9TVEFUVVNfU1lTQ0xLX1NXSVRDSF9TVEFUVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gU3lzY2xrIHN3aXRjaGluZyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21wbGV0ZS4gMCAtIFN5c2NsayBzd2l0Y2hpbmcgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gcHJvZ3Jlc3MuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1JFRl9MRE9fQ09OVFJPTFMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fUkVGX0xET19DT05UUk9MU19SRUZfTERPX0VOQUJMRV9PVkVSUklERV9DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCAgLy8gMSAtIEVuYWJsZSBmb3IgUkVGX0xETyBjb21lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIGJpdCBbMF0gb2YgdGhpcyByZWdpc3RlciA7IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBFbmFibGUgZm9yIFJFRl9MRE8gY29tZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgRlNNLiBOb3RlIDogRmluYWwgUkVGX0xET19FTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFjaGVzIG9uIHRoZSBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9QTV9SRUcyWzBdIG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9MRE9fQ09OVFJPTFNfUkVGX1NQQVJFX0NPTlRST0xfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEMwMDAgIC8vIFNwYXJlIGJpdHMgZm9yIFJFRl9DVFJMX0ZTTS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVhY2hlcyBkaXJlY3RseSBvbiBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9QTV9SRUcyWzE1OjE0XSBvZiBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfTERPX0NPTlRST0xTX1JFRl9TUEFSRV9DT05UUk9MX1MgMTQKKyNkZWZpbmUgR1BSQ01fUkVGX0xET19DT05UUk9MU19SRUZfVExPQURfRU5BQkxFX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAzODAwICAvLyBSRUYgVExPQUQgRW5hYmxlLiBSZWFjaGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpcmVjdGx5IG9uIHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX1BNX1JFRzJbMTM6MTFdIG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9MRE9fQ09OVFJPTFNfUkVGX1RMT0FEX0VOQUJMRV9TIDExCisjZGVmaW5lIEdQUkNNX1JFRl9MRE9fQ09OVFJPTFNfUkVGX0xET19UTVVYX0NPTlRST0xfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA3MDAgIC8vIFJFRl9MRE8gVGVzdC1tdXggY29udHJvbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVhY2hlcyBkaXJlY3RseSBvbiBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9QTV9SRUcyWzEwOjhdIG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9MRE9fQ09OVFJPTFNfUkVGX0xET19UTVVYX0NPTlRST0xfUyA4CisjZGVmaW5lIEdQUkNNX1JFRl9MRE9fQ09OVFJPTFNfUkVGX0JXX0NPTlRST0xfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQzAgIC8vIFJFRiBCVyBDb250cm9sLiBSZWFjaGVzIGRpcmVjdGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIHBvcnQgVE9QX1BNX1JFRzJbNzo2XSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfTERPX0NPTlRST0xTX1JFRl9CV19DT05UUk9MX1MgNgorI2RlZmluZSBHUFJDTV9SRUZfTERPX0NPTlRST0xTX1JFRl9WVFJJTV9DT05UUk9MX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDNDICAvLyBSRUYgVlRSSU0gQ29udHJvbC4gUmVhY2hlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXJlY3RseSBvbiBwb3J0IFRPUF9QTV9SRUcyWzU6Ml0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX0xET19DT05UUk9MU19SRUZfVlRSSU1fQ09OVFJPTF9TIDIKKyNkZWZpbmUgR1BSQ01fUkVGX0xET19DT05UUk9MU19SRUZfTERPX0JZUEFTU19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyBSRUYgTERPIEJ5cGFzcyBFbmFibGUuIFJlYWNoZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlyZWN0bHkgb24gcG9ydCBUT1BfUE1fUkVHMlsxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfTERPX0NPTlRST0xTX1JFRl9MRE9fRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gT3ZlcnJpZGUgZm9yIFJFRl9MRE8gRW5hYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIG9ubHkgaWYgYml0IFsxNl0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyByZWdpc3RlciBpcyBzZXQuIE5vdGUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaW5hbCBSRUZfTERPX0VOIHJlYWNoZXMgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvcnQgVE9QX1BNX1JFRzJbMF0gb2YgZ3ByY20uCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1JFRl9SVFJJTV9DT05UUk9MIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1JFRl9SVFJJTV9DT05UUk9MX1RPUF9QTV9SRUcwXzVfNF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxODAwMDAwMCAgLy8gVGhpcyBpcyBbNTo0XSBiaXRzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9QTV9SRUcwCisKKyNkZWZpbmUgR1BSQ01fUkVGX1JUUklNX0NPTlRST0xfVE9QX1BNX1JFRzBfNV80X1MgMjcKKyNkZWZpbmUgR1BSQ01fUkVGX1JUUklNX0NPTlRST0xfVE9QX0NMS01fUkVHMF8xNV81X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA3RkYwMDAwICAvLyBUaGlzIGlzIFsxNTo1XSBiaXRzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9DTEtNX1JFRzAKKworI2RlZmluZSBHUFJDTV9SRUZfUlRSSU1fQ09OVFJPTF9UT1BfQ0xLTV9SRUcwXzE1XzVfUyAxNgorI2RlZmluZSBHUFJDTV9SRUZfUlRSSU1fQ09OVFJPTF9SRUZfQ0xLTV9SVFJJTV9PVkVSUklERV9DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gMSAtIENMS01fUlRSSU0gY29tZXMgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdHNbNDowXSBvZiB0aGlzIHJlZ2lzdGVyLiAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0xLTV9SVFJJTSBjb21lcyBmcm9tIEVmdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChhZnRlciBlZnVzZV9kb25lID0gMSkuCisKKyNkZWZpbmUgR1BSQ01fUkVGX1JUUklNX0NPTlRST0xfUkVGX0NMS01fUlRSSU1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMUYgIC8vIENMS01fVFJJTSBPdmVycmlkZS4gQXBwbGljYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIGVmdXNlX2RvbmUgPSAwIG9yIGJpdFs4XSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMS4KKworI2RlZmluZSBHUFJDTV9SRUZfUlRSSU1fQ09OVFJPTF9SRUZfQ0xLTV9SVFJJTV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1JFRl9TTElDRVJfQ09OVFJPTFMwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMwX0NMS19FTl9XTEFOX0xPV1ZfT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAyMDAwMDAgIC8vIDEgLSBFTl9ESUdfQlVGX1RPUCBjb21lcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCBbMTRdIG9mIHRoaXMgcmVnaXN0ZXIuIDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFTl9ESUdfQlVGX1RPUCBjb21lcyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGU00uIE5vdGUgOiBGaW5hbCBFTl9ESUdfQlVGX1dMQU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhY2hlcyBvbiBUT1BfQ0xLTV9SRUcxX0lOWzE0XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3J0IG9mIGdwcmNtCisKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzBfQ0xLX0VOX1RPUF9MT1dWX09WRVJSSURFX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMTAwMDAwICAvLyAxIC0gRU5fRElHX0JVRl9UT1AgY29tZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgWzE1XSBvZiB0aGlzIHJlZ2lzdGVyLiAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRU5fRElHX0JVRl9UT1AgY29tZXMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRlNNLiBOb3RlIDogRmluYWwgRU5fRElHX0JVRl9UT1AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhY2hlcyBvbiBUT1BfQ0xLTV9SRUcxX0lOWzE1XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3J0IG9mIGdwcmNtCisKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzBfRU5fWFRBTF9PVkVSUklERV9DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA4MDAwMCAgLy8gMSAtIEVOX1hUQUwgY29tZXMgZnJvbSBiaXQgWzNdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIHRoaXMgcmVnaXN0ZXIuIDAgLSBFTl9YVEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbWVzIGZyb20gRlNNLiBOb3RlIDogRmluYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWFRBTF9FTiByZWFjaGVzIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9DTEtNX1JFRzFfSU5bM10gb2YgZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzBfRU5fU0xJX0hWX09WRVJSSURFX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDQwMDAwICAvLyAxIC0gRW5hYmxlIEhWIFNsaWNlciBjb21lcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCBbMl0gb2YgdGhpcyByZWdpc3Rlci4gMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVuYWJsZSBIViBTbGljZXIgY29tZXMgZnJvbSBGU00uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGUgOiBGaW5hbCBIVl9TTElDRVJfRU4gcmVhY2hlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbiBwb3J0IFRPUF9DTEtNX1JFRzFfSU5bMV0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzBfRU5fU0xJX0xWX09WRVJSSURFX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDIwMDAwICAvLyAxIC0gRW5hYmxlIExWIFNsaWNlciBjb21lcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdFsxXSBvZiB0aGlzIHJlZ2lzdGVyLiAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW5hYmxlIExWIFNsaWNlciBjb21lcyBmcm9tIEZTTS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZSA6IGZpbmFsIExWX1NMSUNFUl9FTiByZWFjaGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIHBvcnQgVE9QX0NMS01fUkVHMV9JTlsyXSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfU0xJQ0VSX0NPTlRST0xTMF9FTl9TTElfSFZfUEROX09WRVJSSURFX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAxIC0gRW5hYmxlIEhWIFB1bGwtZG93biBjb21lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIGJpdFswXSBvZiB0aGlzIHJlZ2lzdGVyLiAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW5hYmxlIEhWIFB1bGwtZG93biBjb21lcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZTTS4gTm90ZSA6IEZpbmFsIEhWX1BVTExfRE9XTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFjaGVzIG9uIHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX0NMS01fUkVHMV9JTlswXSBvZiBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfU0xJQ0VSX0NPTlRST0xTMF9DTEtfRU5fVE9QX0xPV1YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA4MDAwICAvLyBPdmVycmlkZSBmb3IgRU5fRElHX0JVRl9UT1AuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgaWYgYml0WzIwXSBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMS4gTm90ZSA6IEZpbmFsIEVOX0RJR19CVUZfVE9QCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWNoZXMgb24gVE9QX0NMS01fUkVHMV9JTlsxNV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9ydCBvZiBncHJjbQorCisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMwX0NMS19FTl9XTEFOX0xPV1YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA0MDAwICAvLyBPdmVycmlkZSBmb3IgRU5fRElHX0JVRl9XTEFOLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIGlmIGJpdFsxOV0gaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEuIE5vdGUgOiBGaW5hbCBFTl9ESUdfQlVGX1dMQU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhY2hlcyBvbiBUT1BfQ0xLTV9SRUcxX0lOWzE0XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3J0IG9mIGdwcmNtCisKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzBfQ0xLT1VUX0ZMSVBfRU4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAyMDAwICAvLyBDTEtPVVQgRmxpcCBFbmFibGUuIFJlYWNoZXMgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0WzEzXSBvZiBUT1BfQ0xLTV9SRUcxX0lOWzEzXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3J0IG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMwX0VOX0RJVjJfV0xBTl9DTEsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAxMDAwICAvLyBFbmFibGUgZGl2aWRlMiBpbiBXTEFOIENsay1wYXRoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWFjaGVzIG9uIFRPUF9DTEtNX1JFRzFfSU5bMTJdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvcnQgb2YgZ3ByY20KKworI2RlZmluZSBHUFJDTV9SRUZfU0xJQ0VSX0NPTlRST0xTMF9FTl9ESVYzX1dMQU5fQ0xLIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgwMCAgLy8gRW5hYmxlIGRpdmlkZTMgaW4gV0xBTiBDbGstcGF0aC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVhY2hlcyBvbiBUT1BfQ0xLTV9SRUcxX0lOWzExXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3J0IG9mIGdwcmNtCisKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzBfRU5fRElWNF9XTEFOX0NMSyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MDAgIC8vIEVuYWJsZSBkaXZpZGU0IGluIFdMQU4gQ2xrLXBhdGguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlYWNoZXMgb24gVE9QX0NMS01fUkVHMV9JTlsxMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9ydCBvZiBncHJjbQorCisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMwX0NNX1RNVVhfU0VMX0xPV1ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAzQzAgIC8vIENNIFRlc3QtbXV4IHNlbGVjdC4gUmVhY2hlcyBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT1BfQ0xNTV9SRUcxX0lOWzk6Nl0gcG9ydCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBncHJjbQorCisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMwX0NNX1RNVVhfU0VMX0xPV1ZfUyA2CisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMwX1NMSUNFUl9TUEFSRTBfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMzAgIC8vIFNsaWNlciBzcGFyZTAgY29udHJvbC4gUmVhY2hlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbiBUT1BfQ0xLTV9SRUcxX0lOWzU6NF0gcG9ydCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBncHJjbQorCisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMwX1NMSUNFUl9TUEFSRTBfUyA0CisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMwX0VOX1hUQUwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4ICAvLyBFbmFibGUgWFRBTCBvdmVycmlkZS4gUmVhY2hlcyBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT1BfQ0xLTV9SRUcxX0lOWzNdIHBvcnQgb2YgZ3ByY20KKworI2RlZmluZSBHUFJDTV9SRUZfU0xJQ0VSX0NPTlRST0xTMF9FTl9TTElDRVJfSFYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0ICAvLyBFbmFibGUgSFYgU2xpY2VyIG92ZXJyaWRlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWFjaGVzIG9uIFRPUF9DTEtNX1JFRzFfSU5bMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9ydCBvZiBncHJjbQorCisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMwX0VOX1NMSUNFUl9MViBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIEVuYWJsZSBMViBTbGljZXIgb3ZlcnJpZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlYWNoZXMgb24gVE9QX0NMS01fUkVHMV9JTlsyXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3J0IG9mIGdwcmNtCisKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzBfRU5fU0xJQ0VSX0hWX1BETiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIEVuYWJsZSBIViBQdWxsLWRvd24gb3ZlcnJpZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlYWNoZXMgb24gVE9QX0NMS01fUkVHMV9JTlswXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3J0IG9mIGdwcmNtCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1JFRl9TTElDRVJfQ09OVFJPTFMxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMxX1NMSUNFUl9TUEFSRTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZDMDAgIC8vIFNsaWNlciBzcGFyZTEuIFJlYWNoZXMgb24gcG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT1BfQ0xLTV9SRUcyX0lOWzE1OjEwXSBvZiBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfU0xJQ0VSX0NPTlRST0xTMV9TTElDRVJfU1BBUkUxX1MgMTAKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzFfWE9TQ19UUklNX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwM0YwICAvLyBYT1NDIFRyaW0uIFJlYWNoZXMgb24gcG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT1BfQ0xLTV9SRUcyX0lOWzk6NF0gb2YgZ3ByY20KKworI2RlZmluZSBHUFJDTV9SRUZfU0xJQ0VSX0NPTlRST0xTMV9YT1NDX1RSSU1fUyA0CisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMxX1NMSUNFUl9JVFJJTV9DSEFOR0VfVE9HR0xFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOCAgLy8gU2xpY2VyIElUUklNIFRvZ2dsZS4gUmVhY2hlcyBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3J0IFRPUF9DTEtNX1JFRzJfSU5bM10gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX1NMSUNFUl9DT05UUk9MUzFfU0xJQ0VSX0xWX1RSSU1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcgIC8vIExWIFNsaWNlciB0cmltLiBSZWFjaGVzIG9uIHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX0NMS01fUkVHMl9JTlsyOjBdIG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9TTElDRVJfQ09OVFJPTFMxX1NMSUNFUl9MVl9UUklNX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fUkVGX0FOQV9CR0FQX0NPTlRST0xTMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMwX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGODAwMDAwCisKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMF9yZXNlcnZlZF9TIDIzCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzBfbWVtX3JlZl9tYWdfdHJpbV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDQwMDAwMCAgLy8gMSAtIFJFRl9NQUdfVFJJTSBjb21lcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdFs0OjBdIG9mIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFRl9BTkFfQkdBUF9DT05UUk9MUzEgW0FkZHIgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAweDA4NTBdOyAwIC0gUkVGX01BR19UUklNIGNvbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gZWZ1c2UgKEFmdGVyIGVmY19kb25lID0gMSkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGUgOiBGaW5hbCBSRUZfTUFHX1RSSU0gcmVhY2hlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbiBwb3J0IFRPUF9QTV9SRUcxWzQ6MF0gb2YgZ3ByY20KKworI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMwX21lbV9yZWZfdjJpX3RyaW1fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAyMDAwMDAgIC8vIDEgLSBSRUZfVjJJX1RSSU0gY29tZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXRbOTo2XSBvZiB0aGlzIHJlZ2lzdGVyIDsgMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFRl9WMklfVFJJTSBjb21lcyBmcm9tIGVmdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChBZnRlciBlZmNfZG9uZSA9IDEpLiBOb3RlIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmluYWwgUkVGX1YySV9UUklNIHJlYWNoZXMgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9ydCBUT1BfUE1fUkVHMFs5OjZdIG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzBfbWVtX3JlZl90ZW1wX3RyaW1fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAxMDAwMDAgIC8vIDEgLSBSRUZfVEVNUF9UUklNIGNvbWVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0WzE1OjEwXSBvZiB0aGlzIHJlZ2lzdGVyIDsgMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFRl9URU1QX1RSSU0gY29tZXMgZnJvbSBlZnVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoQWZ0ZXIgZWZjX2RvbmUgPSAxKS4gTm90ZSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbmFsIFJFRl9URU1QX1RSSU0gcmVhY2hlcyBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3J0IFRPUF9QTV9SRUcwWzE1OjEwXSBvZiBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMwX21lbV9yZWZfc3RhcnR1cF9lbl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA4MDAwMCAgLy8gMSAtIFJFRl9TVEFSVFVQX0VOIGNvbWVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IFszXSBvZiB0aGlzIHJlZ2lzdGVyIDsgMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFRl9TVEFSVFVQX0VOIGNvbWVzIGZyb20gRlNNLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlIDogRmluYWwgUkVGX1NUQVJUVVBfRU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhY2hlcyBvbiBwb3J0IFRPUF9QTV9SRUcwWzNdIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdwcmNtCisKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMF9tZW1fcmVmX3YyaV9lbl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA0MDAwMCAgLy8gMSAtIFJFRl9WMklfRU4gY29tZXMgZnJvbSBiaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzJdIG9mIHRoaXMgcmVnaXN0ZXIgOyAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVGX1YySV9FTiBjb21lcyBmcm9tIEZTTS4gTm90ZSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbmFsIFJFRl9WMklfRU4gcmVhY2hlcyBvbiBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9QTV9SRUcwWzJdIG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzBfbWVtX3JlZl9mY19lbl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAyMDAwMCAgLy8gMSAtIFJFRl9GQ19FTiBjb21lcyBmcm9tIGJpdCBbMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgdGhpcyByZWdpc3RlciA7IDAgLSBSRUZfRkNfRU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29tZXMgZnJvbSBGU00uIE5vdGUgOiBGaW5hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRUZfRkNfRU4gcmVhY2hlcyBvbiBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9QTV9SRUcwWzFdIG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzBfbWVtX3JlZl9iZ2FwX2VuX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwICAvLyAxIC0gUkVGX0JHQVBfRU4gY29tZXMgZnJvbSBiaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzBdIG9mIHRoaXMgcmVnaXN0ZXIgOyAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVGX0JHQVBfRU4gY29tZXMgZnJvbSBGU00uIE5vdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOiBGaW5hbCBSRUZfQkdBUF9FTiByZWFjaGVzIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvcnQgVE9QX1BNX1JFRzBbMF0gb2YgZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMF9tZW1fcmVmX3RlbXBfdHJpbV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkMwMCAgLy8gUkVGX1RFTVBfVFJJTSBvdmVycmlkZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbGljYWJsZSB3aGVuIGJpdCBbMjBdIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgc2V0IHRvIDEuIChvciBlZmNfZG9uZSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDApIE5vdGUgOiBGaW5hbCBSRUZfVEVNUF9UUklNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWNoZXMgb24gcG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT1BfUE1fUkVHMFsxNToxMF0gb2YgZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMF9tZW1fcmVmX3RlbXBfdHJpbV9TIDEwCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzBfbWVtX3JlZl92MmlfdHJpbV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDNDMCAgLy8gUkVGX1YySV9UUklNIE92ZXJyaWRlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIHdoZW4gYml0IFsyMV0gb2YgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBzZXQgdG8gMSAuIChvZiBlZmNfZG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA9IDApIE5vdGUgOiBGaW5hbCBSRUZfVjJJX1RSSU0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhY2hlcyBvbiBwb3J0IFRPUF9QTV9SRUcwWzk6Nl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMF9tZW1fcmVmX3YyaV90cmltX1MgNgorI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMwX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzMAorCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzBfTlUxX1MgNAorI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMwX21lbV9yZWZfc3RhcnR1cF9lbiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDggIC8vIFJFRl9TVEFSVFVQX0VOIG92ZXJyaWRlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIHdoZW4gYml0IFsxOV0gb2YgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBpcyBzZXQgdG8gMS4gTm90ZSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbmFsIFJFRl9TVEFSVFVQX0VOIHJlYWNoZXMgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9ydCBUT1BfUE1fUkVHMFszXSBvZiBncHJjbQorCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzBfbWVtX3JlZl92MmlfZW4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0ICAvLyBSRUZfVjJJX0VOIG92ZXJyaWRlLiBBcHBsaWNhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gYml0IFsyMV0gb2YgdGhpcyByZWdpc3RlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMS4gTm90ZSA6IEZpbmFsIFJFRl9WMklfRU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhY2hlcyBvbiBwb3J0IFRPUF9QTV9SRUcwWzJdIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzBfbWVtX3JlZl9mY19lbiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIFJFRl9GQ19FTiBvdmVycmlkZS4gQXBwbGljYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIGJpdCBbMTddIG9mIHRoaXMgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDEuIE5vdGUgOiBGaW5hbCBSRUZfRkNfRU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhY2hlcyBvbiBwb3J0IFRPUF9QTV9SRUcwWzFdIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzBfbWVtX3JlZl9iZ2FwX2VuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gUkVGX0JHQVBfRU4gb3ZlcnJpZGUuIEFwcGxpY2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBiaXQgWzE2XSBvZiB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAxLiBOb3RlIDogRmluYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVGX0JHQVBfRU4gcmVhY2hlcyBvbiBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9QTV9SRUcwWzBdIG9mIGdwcmNtLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19SRUZfQU5BX0JHQVBfQ09OVFJPTFMxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzFfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRjAwMDAKKworI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMxX3Jlc2VydmVkX1MgMTYKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMV9tZW1fcmVmX2JnX3NwYXJlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBDMDAwICAvLyBSRUZfQkdBUF9TUEFSRS4gUmVhY2hlcyBvbiBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9QTV9SRUcxWzE1OjE0XSBvZiBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMxX21lbV9yZWZfYmdfc3BhcmVfUyAxNAorI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMxX21lbV9yZWZfYmdhcF90bXV4X2N0cmxfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDNFMDAgIC8vIFJFRl9CR0FQX1RNVVhfQ1RSTC4gUmVhY2hlcyBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3J0IFRPUF9QTV9SRUcxWzEzOjldIG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfQkdBUF9DT05UUk9MUzFfbWVtX3JlZl9iZ2FwX3RtdXhfY3RybF9TIDkKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMV9tZW1fcmVmX2ZpbHRfdHJpbV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDFFMCAgLy8gUkVGX0ZJTFRfVFJJTS4gUmVhY2hlcyBvbiBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9QTV9SRUcxWzg6NV0gb2YgZ3ByY20uCisKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMV9tZW1fcmVmX2ZpbHRfdHJpbV9TIDUKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9CR0FQX0NPTlRST0xTMV9tZW1fcmVmX21hZ190cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDFGICAvLyBSRUZfTUFHX1RSSU0gT3ZlcnJpZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgd2hlbiBiaXRbMjJdIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFRl9BTkFfQkdBUF9DT05UUk9MUzAgWzB4MDg0Q10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDEgKG9mIGVmY19kb25lID0gMCkuIE5vdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOiBGaW5hbCBSRUZfTUFHX1RSSU0gcmVhY2hlcyBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3J0IFRPUF9QTV9SRUcxWzQ6MF0gb2YgZ3ByY20KKworI2RlZmluZSBHUFJDTV9SRUZfQU5BX0JHQVBfQ09OVFJPTFMxX21lbV9yZWZfbWFnX3RyaW1fUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19SRUZfQU5BX1NQQVJFX0NPTlRST0xTMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9SRUZfQU5BX1NQQVJFX0NPTlRST0xTMF9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGMDAwMAorCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfU1BBUkVfQ09OVFJPTFMwX3Jlc2VydmVkX1MgMTYKKyNkZWZpbmUgR1BSQ01fUkVGX0FOQV9TUEFSRV9DT05UUk9MUzBfbWVtX3RvcF9wbV9yZWczX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGICAvLyBTcGFyZSBjb250cm9sLiBSZWFjaGVzIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9QTV9SRUczIFsxNTowXSBvZiBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfQU5BX1NQQVJFX0NPTlRST0xTMF9tZW1fdG9wX3BtX3JlZzNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19SRUZfQU5BX1NQQVJFX0NPTlRST0xTMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9SRUZfQU5BX1NQQVJFX0NPTlRST0xTMV9tZW1fdG9wX2Nsa21fcmVnM19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGMDAwMCAgLy8gU3BhcmUgY29udHJvbC4gUmVhY2hlcyBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT1BfQ0xLTV9SRUczIFsxNTowXSBvZiBncHJjbS4KKworI2RlZmluZSBHUFJDTV9SRUZfQU5BX1NQQVJFX0NPTlRST0xTMV9tZW1fdG9wX2Nsa21fcmVnM19TIDE2CisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfU1BBUkVfQ09OVFJPTFMxX21lbV90b3BfY2xrbV9yZWc0X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGICAvLyBTcGFyZSBjb250cm9sLiBSZWFjaGVzIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9DTEtNX1JFRzQgWzE1OjBdIG9mIGdwcmNtLgorCisjZGVmaW5lIEdQUkNNX1JFRl9BTkFfU1BBUkVfQ09OVFJPTFMxX21lbV90b3BfY2xrbV9yZWc0X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTUVNU1NfUFNDT05fT1ZFUlJJREVTMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9NRU1TU19QU0NPTl9PVkVSUklERVMwX21lbV9tZW1zc19wc2Nvbl9tZW1fb2ZmX292ZXJyaWRlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYwMDAwCisKKyNkZWZpbmUgR1BSQ01fTUVNU1NfUFNDT05fT1ZFUlJJREVTMF9tZW1fbWVtc3NfcHNjb25fbWVtX29mZl9vdmVycmlkZV9TIDE2CisjZGVmaW5lIEdQUkNNX01FTVNTX1BTQ09OX09WRVJSSURFUzBfbWVtX21lbXNzX3BzY29uX21lbV9yZXRhaW5fb3ZlcnJpZGVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYKKworI2RlZmluZSBHUFJDTV9NRU1TU19QU0NPTl9PVkVSUklERVMwX21lbV9tZW1zc19wc2Nvbl9tZW1fcmV0YWluX292ZXJyaWRlX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTUVNU1NfUFNDT05fT1ZFUlJJREVTMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9NRU1TU19QU0NPTl9PVkVSUklERVMxX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkMwCisKKyNkZWZpbmUgR1BSQ01fTUVNU1NfUFNDT05fT1ZFUlJJREVTMV9yZXNlcnZlZF9TIDYKKyNkZWZpbmUgR1BSQ01fTUVNU1NfUFNDT05fT1ZFUlJJREVTMV9tZW1fbWVtc3NfcHNjb25fbWVtX3VwZGF0ZV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMAorCisjZGVmaW5lIEdQUkNNX01FTVNTX1BTQ09OX09WRVJSSURFUzFfbWVtX21lbXNzX3BzY29uX21lbV91cGRhdGVfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCisKKyNkZWZpbmUgR1BSQ01fTUVNU1NfUFNDT05fT1ZFUlJJREVTMV9tZW1fbWVtc3NfcHNjb25fc2xlZXBfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDgKKworI2RlZmluZSBHUFJDTV9NRU1TU19QU0NPTl9PVkVSUklERVMxX21lbV9tZW1zc19wc2Nvbl9zbGVlcF9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBHUFJDTV9NRU1TU19QU0NPTl9PVkVSUklERVMxX21lbV9tZW1zc19wc2Nvbl9tZW1fb2ZmX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgR1BSQ01fTUVNU1NfUFNDT05fT1ZFUlJJREVTMV9tZW1fbWVtbXNfcHNjb25fbWVtX3JldGFpbl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19QTExfUkVGX0xPQ0tfT1ZFUlJJREVTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1BMTF9SRUZfTE9DS19PVkVSUklERVNfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRjgKKworI2RlZmluZSBHUFJDTV9QTExfUkVGX0xPQ0tfT1ZFUlJJREVTX3Jlc2VydmVkX1MgMworI2RlZmluZSBHUFJDTV9QTExfUkVGX0xPQ0tfT1ZFUlJJREVTX21lbV9tY3VfYXBsbG1jc19sb2NrX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNAorCisjZGVmaW5lIEdQUkNNX1BMTF9SRUZfTE9DS19PVkVSUklERVNfbWVtX3dsYW5fYXBsbG1jc19sb2NrX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEdQUkNNX1BMTF9SRUZfTE9DS19PVkVSUklERVNfbWVtX3JlZl9jbGtfdmFsaWRfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX01DVV9QU0NPTl9ERUJVRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9NQ1VfUFNDT05fREVCVUdfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGQzAKKworI2RlZmluZSBHUFJDTV9NQ1VfUFNDT05fREVCVUdfcmVzZXJ2ZWRfUyA2CisjZGVmaW5lIEdQUkNNX01DVV9QU0NPTl9ERUJVR19tY3VfcHNjb25fcnRjX3BzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDM4ICAvLyBNQ1VfUFNDT05fUlRDX09OID0gIjAwMDAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ1VfUFNDT05fUlRDX09GRiA9ICIwMDAxIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUNVX1BTQ09OX1JUQ19SRVQgPSAiMDAxMCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1DVV9QU0NPTl9SVENfT0ZGX1RPX09OID0gIjAwMTEiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ1VfUFNDT05fUlRDX1JFVF9UT19PTiA9ICIwMTAwIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUNVX1BTQ09OX1JUQ19PTl9UT19SRVQgPSAiMDEwMSI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1DVV9QU0NPTl9SVENfT05fVE9fT0ZGID0gIjAxMTAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ1VfUFNDT05fUlRDX1JFVF9UT19PTl9XQUlUX09QUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA9ICIwMTExIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUNVX1BTQ09OX1JUQ19PRkZfVE9fT05fV0FJVF9PUFAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPSAiMTAwMCI7CisKKyNkZWZpbmUgR1BSQ01fTUNVX1BTQ09OX0RFQlVHX21jdV9wc2Nvbl9ydGNfcHNfUyAzCisjZGVmaW5lIEdQUkNNX01DVV9QU0NPTl9ERUJVR19tY3VfcHNjb25fc3lzX3BzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3CisKKyNkZWZpbmUgR1BSQ01fTUNVX1BTQ09OX0RFQlVHX21jdV9wc2Nvbl9zeXNfcHNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19NRU1TU19QV1JfUFMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTUVNU1NfUFdSX1BTX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkY4CisKKyNkZWZpbmUgR1BSQ01fTUVNU1NfUFdSX1BTX3Jlc2VydmVkX1MgMworI2RlZmluZSBHUFJDTV9NRU1TU19QV1JfUFNfcHdyX3BzX21lbXNzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3ICAvLyBNRU1TU19QTV9TTEVFUCA9ICIwMDAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNRU1TU19QTV9XQUlUX09QUCA9ICIwMTAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNRU1TU19QTV9BQ1RJVkUgPSAiMDExIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNU1NfUE1fU0xFRVBfVE9fQUNUSVZFID0gIjEwMCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1FTVNTX1BNX0FDVElWRV9UT19TTEVFUCA9ICIxMDEiOworCisjZGVmaW5lIEdQUkNNX01FTVNTX1BXUl9QU19wd3JfcHNfbWVtc3NfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19SRUZfRlNNX0RFQlVHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1JFRl9GU01fREVCVUdfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGQzAKKworI2RlZmluZSBHUFJDTV9SRUZfRlNNX0RFQlVHX3Jlc2VydmVkX1MgNgorI2RlZmluZSBHUFJDTV9SRUZfRlNNX0RFQlVHX2ZyZWZfbW9kZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzMCAgLy8gMDEgLSBIViBNb2RlIDsgMTAgLSBMViBNb2RlIDsgMTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBYVEFMIE1vZGUKKworI2RlZmluZSBHUFJDTV9SRUZfRlNNX0RFQlVHX2ZyZWZfbW9kZV9TIDQKKyNkZWZpbmUgR1BSQ01fUkVGX0ZTTV9ERUJVR19yZWZfZnNtX3BzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBGICAvLyBjb25zdGFudCBGUkVGX0NMS19PRkYgPSAiMDAwMDAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdGFudCBGUkVGX0VOX0JHQVAgPSAiMDAwMDEiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdGFudCBGUkVGX0VOX0xETyA9ICIwMDAxMCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0YW50IEZSRUZfRU5fU0xJX0hWID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAwMDExIjsgY29uc3RhbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRlJFRl9FTl9TTElfSFZfUEQgPSAiMDAxMDAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdGFudCBGUkVGX0VOX0RJR19CVUYgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDAxMDEiOyBjb25zdGFudCBGUkVGX0VOX09TQyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMDExMCI7IGNvbnN0YW50IEZSRUZfRU5fU0xJX0xWCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vID0gIjAwMTExIjsgY29uc3RhbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRlJFRl9FTl9DTEtfUkVRID0gIjAxMDAwIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RhbnQgRlJFRl9DTEtfVkFMSUQgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDEwMDEiOyBjb25zdGFudCBGUkVGX01PREVfREVUMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA9ICIwMTAxMCI7IGNvbnN0YW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZSRUZfTU9ERV9ERVQxID0gIjAxMDExIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RhbnQgRlJFRl9NT0RFX0RFVDIgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMTAwMTAiOyBjb25zdGFudCBGUkVGX01PREVfREVUMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA9ICIxMDAxMSI7IGNvbnN0YW50IEZSRUZfVkFMSUQgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDExMDAiOyBjb25zdGFudCBGUkVGX1ZBTElEMCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTEwMSI7IGNvbnN0YW50IEZSRUZfVkFMSUQxID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAxMTEwIjsgY29uc3RhbnQgRlJFRl9WQUxJRDIgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDExMTEiOyBjb25zdGFudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGUkVGX1dBSVRfRVhUX1RDWE8wID0gIjEwMDAwIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RhbnQgRlJFRl9XQUlUX0VYVF9UQ1hPMSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIxMDAwMSI7CisKKyNkZWZpbmUgR1BSQ01fUkVGX0ZTTV9ERUJVR19yZWZfZnNtX3BzX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTUVNX1NZU19PUFBfUkVRX09WRVJSSURFIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX01FTV9TWVNfT1BQX1JFUV9PVkVSUklERV9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZFMAorCisjZGVmaW5lIEdQUkNNX01FTV9TWVNfT1BQX1JFUV9PVkVSUklERV9yZXNlcnZlZF9TIDUKKyNkZWZpbmUgR1BSQ01fTUVNX1NZU19PUFBfUkVRX09WRVJSSURFX21lbV9zeXNfb3BwX3JlcV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMCAgLy8gMSAtIE92ZXJyaWRlIHRoZSBzeXRlbS1vcHAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVxdWVzdCB0byBBTkFUT1AgdXNpbmcgYml0MCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHJlZ2lzdGVyCisKKyNkZWZpbmUgR1BSQ01fTUVNX1NZU19PUFBfUkVRX09WRVJSSURFX21lbV9zeXNfb3BwX3JlcV9vdmVycmlkZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwRiAgLy8gIjAwMDEiIC0gUlVOIDsgIjAwMTAiIC0gRFNMUCA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTAwIiAtIExQRFMgOyBPdGhlcnMgLSBOQQorCisjZGVmaW5lIEdQUkNNX01FTV9TWVNfT1BQX1JFUV9PVkVSUklERV9tZW1fc3lzX29wcF9yZXFfb3ZlcnJpZGVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19NRU1fVEVTVENUUkxfUERfT1BQX0NPTkZJRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9NRU1fVEVTVENUUkxfUERfT1BQX0NPTkZJR19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRQorCisjZGVmaW5lIEdQUkNNX01FTV9URVNUQ1RSTF9QRF9PUFBfQ09ORklHX3Jlc2VydmVkX1MgMQorI2RlZmluZSBHUFJDTV9NRU1fVEVTVENUUkxfUERfT1BQX0NPTkZJR19tZW1fc2xlZXBfb3BwX2VudGVyX3dpdGhfdGVzdHBkX29uIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSBzbGVlcC1vcHAgKERTTFAvTFBEUykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW50cnkgZXZlbiBpZiBUZXN0LVBkIGlzIGtlcHQgT04KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOyAwIC0gRG9ub3QgZW5hYmxlIHNsZWVwLW9wcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoRFNMUC9MUERTKSBlbnRyeSB3aXRoIFRlc3QtUGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT04uCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX01FTV9XTF9GQVNUX0NMS19SRVFfT1ZFUlJJREVTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX01FTV9XTF9GQVNUX0NMS19SRVFfT1ZFUlJJREVTX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkY4CisKKyNkZWZpbmUgR1BSQ01fTUVNX1dMX0ZBU1RfQ0xLX1JFUV9PVkVSUklERVNfcmVzZXJ2ZWRfUyAzCisjZGVmaW5lIEdQUkNNX01FTV9XTF9GQVNUX0NMS19SRVFfT1ZFUlJJREVTX21lbV93bF9mYXN0X2Nsa19yZXFfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQgIC8vIE5BCisKKyNkZWZpbmUgR1BSQ01fTUVNX1dMX0ZBU1RfQ0xLX1JFUV9PVkVSUklERVNfbWVtX3dsX2Zhc3RfY2xrX3JlcV9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIE5BCisKKyNkZWZpbmUgR1BSQ01fTUVNX1dMX0ZBU1RfQ0xLX1JFUV9PVkVSUklERVNfbWVtX3dsX3NsZWVwX3dpdGhfY2xrX3JlcV9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIE5BCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX01FTV9NQ1VfUERfTU9ERV9SRVFfT1ZFUlJJREVTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX01FTV9NQ1VfUERfTU9ERV9SRVFfT1ZFUlJJREVTX21lbV9tY3VfcGRfbW9kZV9yZXFfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQgIC8vIDEgLSBPdmVycmlkZSB0aGUgTUNVLVBEIHBvd2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGVzIHVzaW5nIGJpdHMgWzFdICYgWzBdIDsKKworI2RlZmluZSBHUFJDTV9NRU1fTUNVX1BEX01PREVfUkVRX09WRVJSSURFU19tZW1fbWN1X3BkX3B3cmRuX3JlcV9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEgLSBSZXF1ZXN0IGZvciBwb3dlci1kb3duIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1DVS1QRCA7CisKKyNkZWZpbmUgR1BSQ01fTUVNX01DVV9QRF9NT0RFX1JFUV9PVkVSUklERVNfbWVtX21jdV9wZF9yZXRfcmVxX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIFJlcXVlc3QgZm9yIHJldGVudGlvbiBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIE1DVS1QRC4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTUVNX01DU1BJX1NSQU1fT0ZGX1JFUV9PVkVSUklERVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTUVNX01DU1BJX1NSQU1fT0ZGX1JFUV9PVkVSUklERVNfbWVtX21jc3BpX3NyYW1fb2ZmX3JlcV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMS0gT3ZlcnJpZGUgdGhlIE1DU1BJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChBdXRvbm9tb3VzIFNQSSkgbWVtb3J5IHN0YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzaW5nIGJpdCBbMF0KKworI2RlZmluZSBHUFJDTV9NRU1fTUNTUElfU1JBTV9PRkZfUkVRX09WRVJSSURFU19tZW1fbWNzcGlfc3JhbV9vZmZfcmVxX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIFJlcXVlc3QgZm9yIHBvd2VyLWRvd24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXV0b25vbW91cyBTUEkgOGsgbWVtb3J5IDsgMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvbm90IHJlcXVlc3QgcG93ZXItZG93biBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBdXRvbm9tb3VzIFNQSSA4ayBNZW1vcnkKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTUVNX1dMQU5fQVBMTE1DU19PVkVSUklERVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTUVNX1dMQU5fQVBMTE1DU19PVkVSUklERVNfd2xhbl9hcGxsbWNzX2xvY2sgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisKKyNkZWZpbmUgR1BSQ01fTUVNX1dMQU5fQVBMTE1DU19PVkVSUklERVNfbWVtX3dsYW5fYXBsbG1jc19lbmFibGVfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgR1BSQ01fTUVNX1dMQU5fQVBMTE1DU19PVkVSUklERVNfbWVtX3dsYW5fYXBsbG1jc19lbmFibGVfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTUVNX1JFRl9GU01fQ0ZHMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9NRU1fUkVGX0ZTTV9DRkcyX01FTV9GQ19ERUFTU0VSVF9ERUxBWV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDM4MDAwMCAgLy8gTnVtYmVyIG9mIFJUQyBjbG9ja3MgZm9yIGtlZXBpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEZDX0VOIGFzc2VydGVkIGhpZ2gKKworI2RlZmluZSBHUFJDTV9NRU1fUkVGX0ZTTV9DRkcyX01FTV9GQ19ERUFTU0VSVF9ERUxBWV9TIDE5CisjZGVmaW5lIEdQUkNNX01FTV9SRUZfRlNNX0NGRzJfTUVNX1NUQVJUVVBfREVBU1NFUlRfREVMQVlfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNzAwMDAgIC8vIE51bWJlciBvZiBSVEMgY2xvY2tzIGZvciBrZWVwaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBTVEFSVFVQX0VOIGFzc2VydGVkIGhpZ2gKKworI2RlZmluZSBHUFJDTV9NRU1fUkVGX0ZTTV9DRkcyX01FTV9TVEFSVFVQX0RFQVNTRVJUX0RFTEFZX1MgMTYKKyNkZWZpbmUgR1BSQ01fTUVNX1JFRl9GU01fQ0ZHMl9NRU1fRVhUX1RDWE9fU0VUVExJTkdfVElNRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkZGRiAgLy8gTnVtYmVyIG9mIFJUQyBjbG9ja3MgZm9yIHdhaXRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGNsb2NrIHRvIHNldHRsZS4KKworI2RlZmluZSBHUFJDTV9NRU1fUkVGX0ZTTV9DRkcyX01FTV9FWFRfVENYT19TRVRUTElOR19USU1FX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fVEVTVENUUkxfUE9XRVJfQ1RSTCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9URVNUQ1RSTF9QT1dFUl9DVFJMX1RFU1RDVFJMX1BEX1NUQVRVU19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNgorCisjZGVmaW5lIEdQUkNNX1RFU1RDVFJMX1BPV0VSX0NUUkxfVEVTVENUUkxfUERfU1RBVFVTX1MgMQorI2RlZmluZSBHUFJDTV9URVNUQ1RSTF9QT1dFUl9DVFJMX1RFU1RDVFJMX1BEX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDAgLSBEaXNhYmxlIHRoZSBUZXN0Q3RybC1wZCA7IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBFbmFibGUgdGhlIFRlc3RDdHJsLXBkLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19TU0RJT19QT1dFUl9DVFJMIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1NTRElPX1BPV0VSX0NUUkxfU1NESU9fUERfU1RBVFVTX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA2ICAvLyAxIC0gU1NESU8tUEQgaXMgT04gOyAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU1NESU8tUEQgaXMgT0ZGCisKKyNkZWZpbmUgR1BSQ01fU1NESU9fUE9XRVJfQ1RSTF9TU0RJT19QRF9TVEFUVVNfUyAxCisjZGVmaW5lIEdQUkNNX1NTRElPX1BPV0VSX0NUUkxfU1NESU9fUERfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMCAtIERpc2FibGUgdGhlIFNTRElPLXBkIDsgMSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVuYWJsZSB0aGUgU1NESU8tcGQuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX01DU1BJX04xX1BPV0VSX0NUUkwgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTUNTUElfTjFfUE9XRVJfQ1RSTF9NQ1NQSV9OMV9QRF9TVEFUVVNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDYgIC8vIDEgLSBNQ1NQSV9OMS1QRCBpcyBPTiA7IDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ1NQSV9OMS1QRCBpZiBPRkYKKworI2RlZmluZSBHUFJDTV9NQ1NQSV9OMV9QT1dFUl9DVFJMX01DU1BJX04xX1BEX1NUQVRVU19TIDEKKyNkZWZpbmUgR1BSQ01fTUNTUElfTjFfUE9XRVJfQ1RSTF9NQ1NQSV9OMV9QRF9FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAwIC0gRGlzYWJsZSB0aGUgTUNTUElfTjEtcGQgOyAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gRW5hYmxlIHRoZSBNQ1NQSV9OMS1wZC4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fV0VMUF9QT1dFUl9DVFJMIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1dFTFBfUE9XRVJfQ1RSTF9XVE9QX1BEX1NUQVRVU19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMUMwMAorCisjZGVmaW5lIEdQUkNNX1dFTFBfUE9XRVJfQ1RSTF9XVE9QX1BEX1NUQVRVU19TIDEwCisjZGVmaW5lIEdQUkNNX1dFTFBfUE9XRVJfQ1RSTF9XVE9QX1BEX1JFUV9PVkVSUklERSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAyMDAKKworI2RlZmluZSBHUFJDTV9XRUxQX1BPV0VSX0NUUkxfV1RPUF9QRF9SRVFfT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAKKworI2RlZmluZSBHUFJDTV9XRUxQX1BPV0VSX0NUUkxfV0VMUF9QRF9TVEFUVVNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDYKKworI2RlZmluZSBHUFJDTV9XRUxQX1BPV0VSX0NUUkxfV0VMUF9QRF9TVEFUVVNfUyAxCisjZGVmaW5lIEdQUkNNX1dFTFBfUE9XRVJfQ1RSTF9XRUxQX1BEX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDAgLSBEaXNhYmxlIHRoZSBXRUxQLXBkIDsgMSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVuYWJsZSB0aGUgV0VMUC1wZC4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fV0xfU0RJT19QT1dFUl9DVFJMIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1dMX1NESU9fUE9XRVJfQ1RSTF9XTF9TRElPX1BEX1NUQVRVU19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNgorCisjZGVmaW5lIEdQUkNNX1dMX1NESU9fUE9XRVJfQ1RSTF9XTF9TRElPX1BEX1NUQVRVU19TIDEKKyNkZWZpbmUgR1BSQ01fV0xfU0RJT19QT1dFUl9DVFJMX1dMX1NESU9fUERfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMCAtIERpc2FibGUgdGhlIFdMX1NESU8tcGQgOyAxIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW5hYmxlIHRoZSBXTF9TRElPLXBkLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19XTEFOX1NSQU1fQUNUSVZFX1BXUl9DRkcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fV0xBTl9TUkFNX0FDVElWRV9QV1JfQ0ZHX1dMQU5fU1JBTV9BQ1RJVkVfUFdSX0NGR19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMEZGRkZGRiAgLy8gU1JBTSAoV1RPUCtEUlApIHN0YXRlIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBY3RpdmUtbW9kZSA6IDEgLSBTUkFNcyBhcmUgT04gOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIC0gU1JBTXMgYXJlIE9GRi4gQ2x1c3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmZvcm1hdGlvbiA6IFswXSAtIDFzdCBjb2x1bW4gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNU1MgKEFwcGxpY2FibGUgb25seSB3aGVuIG93bmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IFdUT1AvUEhZKSBbMV0gLSAybmQgY29sdW1uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkgd2hlbiBvd25lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieSBXVE9QL1BIWSkgOyBbMl0gLSAzcmQgY29sdW1uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvd25lZCBieSBXVE9QL1BIWSkgOyBbM10gLSA0dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIG9mIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBXVE9QL1BIWSkgOyBbNF0gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA1dGggY29sdW1uIG9mIE1FTVNTIChBcHBsaWNhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgd2hlbiBvd25lZCBieSBXVE9QL1BIWSkgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbNV0gLSA2dGggY29sdW1uIG9mIE1FTVNTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChBcHBsaWNhYmxlIG9ubHkgd2hlbiBvd25lZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXVE9QL1BIWSkgOyBbNl0gLSA3dGggY29sdW1uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkgd2hlbiBvd25lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieSBXVE9QL1BIWSkgOyBbN10gLSA4dGggY29sdW1uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvd25lZCBieSBXVE9QL1BIWSkgOyBbOF0gLSA5dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIG9mIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBXVE9QL1BIWSkgOyBbOV0gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMHRoIGNvbHVtbiBvZiBNRU1TUyAoQXBwbGljYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IHdoZW4gb3duZWQgYnkgV1RPUC9QSFkpIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzEwXSAtIDExdGggY29sdW1uIG9mIE1FTVNTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChBcHBsaWNhYmxlIG9ubHkgd2hlbiBvd25lZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXVE9QL1BIWSkgOyBbMTFdIC0gMTJ0aCBjb2x1bW4gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNU1MgKEFwcGxpY2FibGUgb25seSB3aGVuIG93bmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IFdUT1AvUEhZKSA7IFsxMl0gLSAxM3RoIGNvbHVtbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3duZWQgYnkgV1RPUC9QSFkpIDsgWzEzXSAtIDE0dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIG9mIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBXVE9QL1BIWSkgOyBbMTRdIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTV0aCBjb2x1bW4gb2YgTUVNU1MgKEFwcGxpY2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSB3aGVuIG93bmVkIGJ5IFdUT1AvUEhZKSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsxNV0gLSAxNnRoIGNvbHVtbiBvZiBNRU1TUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoQXBwbGljYWJsZSBvbmx5IHdoZW4gb3duZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV1RPUC9QSFkpIDsgWzIzOjE2XSAtIEludGVybmFsIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdUT1AgQ2x1c3RlcgorCisjZGVmaW5lIEdQUkNNX1dMQU5fU1JBTV9BQ1RJVkVfUFdSX0NGR19XTEFOX1NSQU1fQUNUSVZFX1BXUl9DRkdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19XTEFOX1NSQU1fU0xFRVBfUFdSX0NGRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9XTEFOX1NSQU1fU0xFRVBfUFdSX0NGR19XTEFOX1NSQU1fU0xFRVBfUFdSX0NGR19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMEZGRkZGRiAgLy8gU1JBTSAoV1RPUCtEUlApIHN0YXRlIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTbGVlcC1tb2RlIDogMSAtIFNSQU1zIGFyZSBSRVQgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIC0gU1JBTXMgYXJlIE9GRi4gQ2x1c3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmZvcm1hdGlvbiA6IFswXSAtIDFzdCBjb2x1bW4gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNU1MgKEFwcGxpY2FibGUgb25seSB3aGVuIG93bmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IFdUT1AvUEhZKSBbMV0gLSAybmQgY29sdW1uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkgd2hlbiBvd25lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieSBXVE9QL1BIWSkgOyBbMl0gLSAzcmQgY29sdW1uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvd25lZCBieSBXVE9QL1BIWSkgOyBbM10gLSA0dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIG9mIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBXVE9QL1BIWSkgOyBbNF0gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA1dGggY29sdW1uIG9mIE1FTVNTIChBcHBsaWNhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgd2hlbiBvd25lZCBieSBXVE9QL1BIWSkgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbNV0gLSA2dGggY29sdW1uIG9mIE1FTVNTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChBcHBsaWNhYmxlIG9ubHkgd2hlbiBvd25lZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXVE9QL1BIWSkgOyBbNl0gLSA3dGggY29sdW1uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkgd2hlbiBvd25lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieSBXVE9QL1BIWSkgOyBbN10gLSA4dGggY29sdW1uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvd25lZCBieSBXVE9QL1BIWSkgOyBbOF0gLSA5dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIG9mIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBXVE9QL1BIWSkgOyBbOV0gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMHRoIGNvbHVtbiBvZiBNRU1TUyAoQXBwbGljYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IHdoZW4gb3duZWQgYnkgV1RPUC9QSFkpIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzEwXSAtIDExdGggY29sdW1uIG9mIE1FTVNTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChBcHBsaWNhYmxlIG9ubHkgd2hlbiBvd25lZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXVE9QL1BIWSkgOyBbMTFdIC0gMTJ0aCBjb2x1bW4gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNU1MgKEFwcGxpY2FibGUgb25seSB3aGVuIG93bmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IFdUT1AvUEhZKSA7IFsxMl0gLSAxM3RoIGNvbHVtbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBNRU1TUyAoQXBwbGljYWJsZSBvbmx5IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3duZWQgYnkgV1RPUC9QSFkpIDsgWzEzXSAtIDE0dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIG9mIE1FTVNTIChBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBvd25lZCBieSBXVE9QL1BIWSkgOyBbMTRdIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTV0aCBjb2x1bW4gb2YgTUVNU1MgKEFwcGxpY2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSB3aGVuIG93bmVkIGJ5IFdUT1AvUEhZKSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsxNV0gLSAxNnRoIGNvbHVtbiBvZiBNRU1TUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoQXBwbGljYWJsZSBvbmx5IHdoZW4gb3duZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV1RPUC9QSFkpIDsgWzIzOjE2XSAtIEludGVybmFsIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdUT1AgQ2x1c3RlcgorCisjZGVmaW5lIEdQUkNNX1dMQU5fU1JBTV9TTEVFUF9QV1JfQ0ZHX1dMQU5fU1JBTV9TTEVFUF9QV1JfQ0ZHX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQVBQU19TRUNVUkVfSU5JVF9ET05FIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0FQUFNfU0VDVVJFX0lOSVRfRE9ORV9TRUNVUkVfSU5JVF9ET05FX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIDEtU2VjdXJlIG1vZGUgaW5pdCBpcyBkb25lIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMC1TZWN1cmUgbW9kZSBpbml0IGlzIG5vdCBkb25lCisKKyNkZWZpbmUgR1BSQ01fQVBQU19TRUNVUkVfSU5JVF9ET05FX0FQUFNfU0VDVVJFX0lOSVRfRE9ORSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIE11c3QgYmUgcHJvZ3JhbW1lZCAxIGluIG9yZGVyIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNheSB0aGF0IHNlY3VyZS1tb2RlIGRldmljZSBpbml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGRvbmUKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQVBQU19ERVZfTU9ERV9JTklUX0RPTkUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fQVBQU19ERVZfTU9ERV9JTklUX0RPTkVfQVBQU19ERVZfTU9ERV9JTklUX0RPTkUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gUGF0Y2ggZG93bmxvYWQgYW5kIG90aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluaXRpYWxpemF0aW9ucyBhcmUgZG9uZSAoYmVmb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92aW5nIEFQUFMgcmVzZXRuKSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGV2ZWxvcG1lbnQgbW9kZSAoIzMpIC4gMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERldmVsb3BtZW50IG1vZGUgKCMzKSBpbml0IGlzIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb25lIHlldAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19FTl9BUFBTX1JFQk9PVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9FTl9BUFBTX1JFQk9PVF9FTl9BUFBTX1JFQk9PVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBXaGVuIDEsIGRpc2FibGUgdGhlIHJlYm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBBUFBTIGFmdGVyIERldkluaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29tcGxldGVkLiBJbiB0aGlzIGNhc2UsIEFQUFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBwZXJtYW5hbnRseSBoZWxwIGluIHJlc2V0LiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gV2hlbiAwLCBlbmFibGUgdGhlIHJlYm9vdCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUFBTIGFmdGVyIERldkluaXQgaXMgY29tcGxldGVkLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19NRU1fQVBQU19QRVJJUEhfUFJFU0VOVCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9NRU1fQVBQU19QRVJJUEhfUFJFU0VOVF9XTEFOX0dFTV9QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDEgLSBFbmFibGUgOyAwIC0gRGlzYWJsZQorCisjZGVmaW5lIEdQUkNNX01FTV9BUFBTX1BFUklQSF9QUkVTRU5UX0FQUFNfQUVTX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwODAwMAorCisjZGVmaW5lIEdQUkNNX01FTV9BUFBTX1BFUklQSF9QUkVTRU5UX0FQUFNfREVTX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwNDAwMAorCisjZGVmaW5lIEdQUkNNX01FTV9BUFBTX1BFUklQSF9QUkVTRU5UX0FQUFNfU0hBX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMjAwMAorCisjZGVmaW5lIEdQUkNNX01FTV9BUFBTX1BFUklQSF9QUkVTRU5UX0FQUFNfQ0FNRVJBX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMTAwMAorCisjZGVmaW5lIEdQUkNNX01FTV9BUFBTX1BFUklQSF9QUkVTRU5UX0FQUFNfTU1DSFNfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODAwCisKKyNkZWZpbmUgR1BSQ01fTUVNX0FQUFNfUEVSSVBIX1BSRVNFTlRfQVBQU19NQ0FTUF9QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MDAKKworI2RlZmluZSBHUFJDTV9NRU1fQVBQU19QRVJJUEhfUFJFU0VOVF9BUFBTX01DU1BJX0ExX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDIwMAorCisjZGVmaW5lIEdQUkNNX01FTV9BUFBTX1BFUklQSF9QUkVTRU5UX0FQUFNfTUNTUElfQTJfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisKKyNkZWZpbmUgR1BSQ01fTUVNX0FQUFNfUEVSSVBIX1BSRVNFTlRfQVBQU19VRE1BX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4MAorCisjZGVmaW5lIEdQUkNNX01FTV9BUFBTX1BFUklQSF9QUkVTRU5UX0FQUFNfV0RPR19QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDAKKworI2RlZmluZSBHUFJDTV9NRU1fQVBQU19QRVJJUEhfUFJFU0VOVF9BUFBTX1VBUlRfQTBfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisKKyNkZWZpbmUgR1BSQ01fTUVNX0FQUFNfUEVSSVBIX1BSRVNFTlRfQVBQU19VQVJUX0ExX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMAorCisjZGVmaW5lIEdQUkNNX01FTV9BUFBTX1BFUklQSF9QUkVTRU5UX0FQUFNfR1BUX0EwX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOAorCisjZGVmaW5lIEdQUkNNX01FTV9BUFBTX1BFUklQSF9QUkVTRU5UX0FQUFNfR1BUX0ExX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNAorCisjZGVmaW5lIEdQUkNNX01FTV9BUFBTX1BFUklQSF9QUkVTRU5UX0FQUFNfR1BUX0EyX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEdQUkNNX01FTV9BUFBTX1BFUklQSF9QUkVTRU5UX0FQUFNfR1BUX0EzX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19NRU1fTldQX1BFUklQSF9QUkVTRU5UIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX01FTV9OV1BfUEVSSVBIX1BSRVNFTlRfTldQX0FTWU5DX0JSSURHRV9QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAyMDAKKworI2RlZmluZSBHUFJDTV9NRU1fTldQX1BFUklQSF9QUkVTRU5UX05XUF9NQ1NQSV9OMl9QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAKKworI2RlZmluZSBHUFJDTV9NRU1fTldQX1BFUklQSF9QUkVTRU5UX05XUF9HUFRfTjBfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDgwCisKKyNkZWZpbmUgR1BSQ01fTUVNX05XUF9QRVJJUEhfUFJFU0VOVF9OV1BfR1BUX04xX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0MAorCisjZGVmaW5lIEdQUkNNX01FTV9OV1BfUEVSSVBIX1BSRVNFTlRfTldQX1dET0dfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisKKyNkZWZpbmUgR1BSQ01fTUVNX05XUF9QRVJJUEhfUFJFU0VOVF9OV1BfVURNQV9QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAKKworI2RlZmluZSBHUFJDTV9NRU1fTldQX1BFUklQSF9QUkVTRU5UX05XUF9VQVJUX04wX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOAorCisjZGVmaW5lIEdQUkNNX01FTV9OV1BfUEVSSVBIX1BSRVNFTlRfTldQX1VBUlRfTjFfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisKKyNkZWZpbmUgR1BSQ01fTUVNX05XUF9QRVJJUEhfUFJFU0VOVF9OV1BfU1NESU9fUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgR1BSQ01fTUVNX05XUF9QRVJJUEhfUFJFU0VOVF9OV1BfTUNTUElfTjFfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX01FTV9TSEFSRURfUEVSSVBIX1BSRVNFTlQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworI2RlZmluZSBHUFJDTV9NRU1fU0hBUkVEX1BFUklQSF9QUkVTRU5UX1NIQVJFRF9NQ1NQSV9QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDAKKworI2RlZmluZSBHUFJDTV9NRU1fU0hBUkVEX1BFUklQSF9QUkVTRU5UX1NIQVJFRF9JMkNfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisKKyNkZWZpbmUgR1BSQ01fTUVNX1NIQVJFRF9QRVJJUEhfUFJFU0VOVF9TSEFSRURfR1BJT19BX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMAorCisjZGVmaW5lIEdQUkNNX01FTV9TSEFSRURfUEVSSVBIX1BSRVNFTlRfU0hBUkVEX0dQSU9fQl9QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDgKKworI2RlZmluZSBHUFJDTV9NRU1fU0hBUkVEX1BFUklQSF9QUkVTRU5UX1NIQVJFRF9HUElPX0NfUFAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisKKyNkZWZpbmUgR1BSQ01fTUVNX1NIQVJFRF9QRVJJUEhfUFJFU0VOVF9TSEFSRURfR1BJT19EX1BQIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEdQUkNNX01FTV9TSEFSRURfUEVSSVBIX1BSRVNFTlRfU0hBUkVEX0dQSU9fRV9QUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTldQX1BXUl9TVEFURSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9OV1BfUFdSX1NUQVRFX05XUF9QV1JfU1RBVEVfUFNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGMDAgIC8vICIwMDAwIi0gUE9SWiA6LSBOV1AgaXMgeWV0IHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgYnkgQVBQUyBkdXJpbmcgcG93ZXJ1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoZnJvbSBISUIvT0ZGKSA7ICIwMDExIi0gQUNUSVZFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDotIE5XUCBpcyBlbmFibGVkLCBjbG9ja3MgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0cyB0byBOV1AtU3ViU3lzdGVtIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIDsgIjAwMTAiLSBMUERTIDotIE5XUCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBMUERTLW1vZGUgOyBDbG9ja3MgYW5kIHJlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIE5XUC1TdWJTeXN0ZW0gYXJlIGdhdGVkIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAxMDEiLSBXQUlUX0ZPUl9PUFAgOi0gTldQIGlzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyYW5zaXRpb24gZnJvbSBMUERTIHRvIEFDVElWRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlcmUgaXQgaXMgd2FpdGluZyBmb3IgT1BQIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWJsZSA7ICIxMDAwIi0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV0FLRV9USU1FUl9PUFBfUkVRIDotIE5XUCBpcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmFuc2l0aW9uIGZyb20gTFBEUywgd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdha2V1cCBjYXVzZSBpcyBMUERTX1dha2UgdGltZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT1RIRVJTIDogTkEKKworI2RlZmluZSBHUFJDTV9OV1BfUFdSX1NUQVRFX05XUF9QV1JfU1RBVEVfUFNfUyA4CisjZGVmaW5lIEdQUkNNX05XUF9QV1JfU1RBVEVfTldQX1JDTV9QU19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNyAgLy8gIjAwMCIgLSBOV1BfUlVOIDogTldQIGlzIGluIFJVTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0ZSAoZGVmYXVsdCkgLSBBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBOV1BfUFdSX1NUQVRFX1BTID0gQUNUSVZFIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAwMSIgLSBOV1BfU0xQIDogTldQIGlzIGluIFNMRUVQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXRlIChkZWZhdWx0KSAtIEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIE5XUF9QV1JfU1RBVEVfUFMgPSBBQ1RJVkUgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDEwIiAtIE5XUF9EU0xQIDogTldQIGlzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZXAtU2xlZXAgc3RhdGUgKGRlZmF1bHQpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbGljYWJsZSBvbmx5IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTldQX1BXUl9TVEFURV9QUyA9IEFDVElWRSA7ICIwMTEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gV0FJVF9GT1JfQUNUSVZFIDogTldQIGlzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyYW5zaXRpb24gZnJvbSBEZWVwLXNsZWVwIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJ1biwgd2hlcmUgaXQgaXMgd2FpdGluZyBmb3IgT1BQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGJlIHN0YWJsZSA7ICIxMDAiIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV0FJVF9GT1JfRFNMUF9USU1FUl9XQUtFX1JFUSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5XUCBpcyBpbiB0cmFuc2l0aW9uIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVlcC1zbGVlcCB0byBSdW4sIHdoZXJlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3YWtldXAgY2F1c2UgaXMgZGVlcC1zbGVlcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3YWtlLXRpbWVyCisKKyNkZWZpbmUgR1BSQ01fTldQX1BXUl9TVEFURV9OV1BfUkNNX1BTX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQVBQU19QV1JfU1RBVEUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fQVBQU19QV1JfU1RBVEVfQVBQU19QV1JfU1RBVEVfUFNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGMDAgIC8vICIwMDAwIi0gUE9SWiA6LSBBUFBTIGlzIHdhaXRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIFBMTF9jbG9jayBkdXJpbmcgcG93ZXJ1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoZnJvbSBISUIvT0ZGKSA7ICIwMDExIi0gQUNUSVZFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDotIEFQUFMgaXMgZW5hYmxlZCwgY2xvY2tzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNldHMgdG8gQVBQUy1TdWJTeXN0ZW0gYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgOyBBUFBTIG1pZ2h0IGJlIGVpdGhlciBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWN1cmUgb3IgVW4tc2VjdXJlIG1vZGUgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgc3RhdGUuICIxMDAxIiAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNFQ1VSRV9NT0RFX0xQRFMgOi0gV2hpbGUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQUNUSVZFIChTZWN1cmUtbW9kZSksIEFQUFMgaGFkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb2dyYW0gdGhlIERldkluaXRfZG9uZSBiaXQgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGVuZCwgYWZ0ZXIgd2hpY2ggaXQgZW50ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludG8gdGhpcyBzdGF0ZSwgd2hlcmUgdGhlIHJlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIEFQUFMgd2lsbCBiZSBhc3NlcnRlZC4gRnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHN0YXRlIEFQUFMgbWlnaHQgZWl0aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlLWJvb3QgaXRzZWxmIG9yIGVudGVyIGludG8gTFBEUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZXBlbmRpbmcgdXBvbiB3aGV0aGVyIHRoZSBkZXZpY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgMzIwMCBvciAzMTAwLiAiMDAxMCItIExQRFMgOi0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBQUyBpcyBpbiBMUERTLW1vZGUgOyBDbG9ja3MgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0IHRvIEFQUFMtU3ViU3lzdGVtIGFyZSBnYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA7ICIwMTAxIi0gV0FJVF9GT1JfT1BQIDotIEFQUFMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gdHJhbnNpdGlvbiBmcm9tIExQRFMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQUNUSVZFLCB3aGVyZSBpdCBpcyB3YWl0aW5nIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPUFAgdG8gYmUgc3RhYmxlIDsgIjEwMDAiIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV0FLRV9USU1FUl9PUFBfUkVRIDogQVBQUyBpcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmFuc2l0aW9uIGZyb20gTFBEUywgd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdha2V1cCBjYXVzZSBpcyBMUERTX1dha2UgdGltZXIgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMTAxMCIgLSBXQUlUX0ZPUl9QQVRDSF9JTklUIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBQUyBlbnRlcnMgaW50byB0aGlzIHN0YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBkZXZlbG9wbWVudC1tb2RlICMzIChTT1AgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzKSwgd2hlcmUgaXQgaXMgd2FpdGluZyBmb3IgcGF0Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93bmxvYWQgdG8gY29tcGxldGUgYW5kIDB4NCBoYWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHByb2dyYW1tZWQuIE9USEVSUyA6IE5BCisKKyNkZWZpbmUgR1BSQ01fQVBQU19QV1JfU1RBVEVfQVBQU19QV1JfU1RBVEVfUFNfUyA4CisjZGVmaW5lIEdQUkNNX0FQUFNfUFdSX1NUQVRFX0FQUFNfUkNNX1BTX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3ICAvLyAiMDAwIiAtIEFQUFNfUlVOIDogQVBQUyBpcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSVU4gc3RhdGUgKGRlZmF1bHQpIC0gQXBwbGljYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IHdoZW4gQVBQU19QV1JfU1RBVEVfUFMgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBQ1RJVkUgOyAiMDAxIiAtIEFQUFNfU0xQIDogQVBQUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBpbiBTTEVFUCBzdGF0ZSAoZGVmYXVsdCkgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIG9ubHkgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUFBTX1BXUl9TVEFURV9QUyA9IEFDVElWRSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIwMTAiIC0gQVBQU19EU0xQIDogQVBQUyBpcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWVwLVNsZWVwIHN0YXRlIChkZWZhdWx0KSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgb25seSB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFNfUFdSX1NUQVRFX1BTID0gQUNUSVZFIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIjAxMSIgLSBXQUlUX0ZPUl9BQ1RJVkUgOiBBUFBTIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIHRyYW5zaXRpb24gZnJvbSBEZWVwLXNsZWVwIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJ1biwgd2hlcmUgaXQgaXMgd2FpdGluZyBmb3IgT1BQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGJlIHN0YWJsZSA7ICIxMDAiIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV0FJVF9GT1JfRFNMUF9USU1FUl9XQUtFX1JFUSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFMgaXMgaW4gdHJhbnNpdGlvbiBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZXAtc2xlZXAgdG8gUnVuLCB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2FrZXVwIGNhdXNlIGlzIGRlZXAtc2xlZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2FrZS10aW1lcgorCisjZGVmaW5lIEdQUkNNX0FQUFNfUFdSX1NUQVRFX0FQUFNfUkNNX1BTX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTUNVX1BXUl9TVEFURSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9NQ1VfUFdSX1NUQVRFX01DVV9PUFBfUFNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMUYgIC8vIFRCRAorCisjZGVmaW5lIEdQUkNNX01DVV9QV1JfU1RBVEVfTUNVX09QUF9QU19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1dUT1BfUE1fUFMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fV1RPUF9QTV9QU19XVE9QX1BNX1BTX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3ICAvLyAiMDExIiAtIFdUT1BfUE1fQUNUSVZFIChEZWZhdWx0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6LSBXVE9QX1BkIGlzIGluIEFDVElWRSBtb2RlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMTAwIiAtIFdUT1BfUE1fQUNUSVZFX1RPX1NMRUVQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDotIFdUT1BfUGQgaXMgaW4gdHJhbnNpdGlvbiBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFDVElWRSB0byBTTEVFUCA7ICIwMDAiIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV1RPUF9QTV9TTEVFUCA6IFdUT1AtUGQgaXMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2xlZXAtc3RhdGUgOyAiMTAwIiAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdUT1BfUE1fU0xFRVBfVE9fQUNUSVZFIDogV1RPUF9QZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBpbiB0cmFuc2l0aW9uIGZyb20gU0xFRVAgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQUNUSVZFIDsgIjAwMCIgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXVE9QX1BNX1dBSVRfRk9SX09QUCA6IFdhaXQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9QUCB0byBiZSBzdGFibGUgOworCisjZGVmaW5lIEdQUkNNX1dUT1BfUE1fUFNfV1RPUF9QTV9QU19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1dUT1BfUERfUkVTRVRaX09WRVJSSURFX1JFRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9XVE9QX1BEX1JFU0VUWl9PVkVSUklERV9SRUdfV1RPUF9QRF9SRVNFVFpfT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIE92ZXJyaWRlIGNvbnRyb2wgZm9yIFdUT1AgUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXR6LiBXaGVuIHNldCB0byAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXVE9QX1Jlc2V0eiB3aWxsIGJlIGNvbnRyb2xsZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IFswXQorCisjZGVmaW5lIEdQUkNNX1dUT1BfUERfUkVTRVRaX09WRVJSSURFX1JFR19XVE9QX1BEX1JFU0VUWl9PVkVSUklERSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIE92ZXJyaWRlIGZvciBXVE9QIFBEIFJlc2V0ei4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbGljYWJsZSBvbmx5IHdoZW4gYml0WzhdIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1dFTFBfUERfUkVTRVRaX09WRVJSSURFX1JFRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9XRUxQX1BEX1JFU0VUWl9PVkVSUklERV9SRUdfV0VMUF9QRF9SRVNFVFpfT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIE92ZXJyaWRlIGNvbnRyb2wgZm9yIFdFTFAgUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXR6LiBXaGVuIHNldCB0byAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXRUxQX1Jlc2V0eiB3aWxsIGJlIGNvbnRyb2xsZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IFswXQorCisjZGVmaW5lIEdQUkNNX1dFTFBfUERfUkVTRVRaX09WRVJSSURFX1JFR19XRUxQX1BEX1JFU0VUWl9PVkVSUklERSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIE92ZXJyaWRlIGZvciBXRUxQIFBEIFJlc2V0ei4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbGljYWJsZSBvbmx5IHdoZW4gYml0WzhdIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1dMX1NESU9fUERfUkVTRVRaX09WRVJSSURFX1JFRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9XTF9TRElPX1BEX1JFU0VUWl9PVkVSUklERV9SRUdfV0xfU0RJT19QRF9SRVNFVFpfT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIE92ZXJyaWRlIGNvbnRyb2wgZm9yIFdMX1NESU8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXR6LiBXaGVuIHNldCB0byAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXTF9TRElPX1Jlc2V0eiB3aWxsIGJlIGNvbnRyb2xsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnkgYml0IFswXQorCisjZGVmaW5lIEdQUkNNX1dMX1NESU9fUERfUkVTRVRaX09WRVJSSURFX1JFR19XTF9TRElPX1BEX1JFU0VUWl9PVkVSUklERSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIE92ZXJyaWRlIGZvciBXTF9TRElPIFJlc2V0ei4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbGljYWJsZSBvbmx5IHdoZW4gYml0WzhdIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1NTRElPX1BEX1JFU0VUWl9PVkVSUklERV9SRUcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fU1NESU9fUERfUkVTRVRaX09WRVJSSURFX1JFR19TU0RJT19QRF9SRVNFVFpfT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIE92ZXJyaWRlIGNvbnRyb2wgZm9yIFNTRElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0ei4gV2hlbiBzZXQgdG8gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU1NESU9fUmVzZXR6IHdpbGwgYmUgY29udHJvbGxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieSBiaXQgWzBdCisKKyNkZWZpbmUgR1BSQ01fU1NESU9fUERfUkVTRVRaX09WRVJSSURFX1JFR19TU0RJT19QRF9SRVNFVFpfT1ZFUlJJREUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyBPdmVycmlkZSBmb3IgU1NESU8gUmVzZXR6LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIG9ubHkgd2hlbiBiaXRbOF0gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTUNTUElfTjFfUERfUkVTRVRaX09WRVJSSURFX1JFRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9NQ1NQSV9OMV9QRF9SRVNFVFpfT1ZFUlJJREVfUkVHX01DU1BJX04xX1BEX1JFU0VUWl9PVkVSUklERV9DVFJMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gT3ZlcnJpZGUgY29udHJvbCBmb3IgTUNTUElfTjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXR6LiBXaGVuIHNldCB0byAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNQ1NQSV9OMV9SZXNldHogd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250cm9sbGVkIGJ5IGJpdCBbMF0KKworI2RlZmluZSBHUFJDTV9NQ1NQSV9OMV9QRF9SRVNFVFpfT1ZFUlJJREVfUkVHX01DU1BJX04xX1BEX1JFU0VUWl9PVkVSUklERSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIE92ZXJyaWRlIGZvciBNQ1NQSV9OMSBSZXNldHouCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgb25seSB3aGVuIGJpdFs4XSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19URVNUQ1RSTF9QRF9SRVNFVFpfT1ZFUlJJREVfUkVHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1RFU1RDVFJMX1BEX1JFU0VUWl9PVkVSUklERV9SRUdfVEVTVENUUkxfUERfUkVTRVRaX09WRVJSSURFX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyBPdmVycmlkZSBjb250cm9sIGZvciBURVNUQ1RSTC1QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNldHouIFdoZW4gc2V0IHRvIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRFU1RDVFJMX1Jlc2V0eiB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRyb2xsZWQgYnkgYml0IFswXQorCisjZGVmaW5lIEdQUkNNX1RFU1RDVFJMX1BEX1JFU0VUWl9PVkVSUklERV9SRUdfVEVTVENUUkxfUERfUkVTRVRaX09WRVJSSURFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gT3ZlcnJpZGUgZm9yIFRFU1RDVFJMIFJlc2V0ei4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbGljYWJsZSBvbmx5IHdoZW4gYml0WzhdIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX01DVV9QRF9SRVNFVFpfT1ZFUlJJREVfUkVHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX01DVV9QRF9SRVNFVFpfT1ZFUlJJREVfUkVHX01DVV9QRF9SRVNFVFpfT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIE92ZXJyaWRlIGNvbnRyb2wgZm9yIE1DVS1QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNldHouIFdoZW4gc2V0IHRvIDEsIE1DVV9SZXNldHoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBjb250cm9sbGVkIGJ5IGJpdCBbMF0KKworI2RlZmluZSBHUFJDTV9NQ1VfUERfUkVTRVRaX09WRVJSSURFX1JFR19NQ1VfUERfUkVTRVRaX09WRVJSSURFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gT3ZlcnJpZGUgZm9yIE1DVSBSZXNldHouCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgb25seSB3aGVuIGJpdFs4XSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRUZVU0VfUkVBRF9SRUcwX0ZVU0VGQVJNX1JPV18xNF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gVGhpcyBpcyBST1dfMTQgWzMxOjBdIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZVU0VGQVJNLiBbMDowXSA6IFhUQUxfSVNfMjZNSFoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzU6MV0gOiBUT1BfQ0xLTV9SVFJJTVs0OjBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsxMDo2XSA6IEFOQV9CR0FQX01BR19UUklNWzQ6MF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzE2OjExXSA6IEFOQV9CR0FQX1RFTVBfVFJJTVs1OjBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsyMDoxN10gOiBBTkFfQkdBUF9WMklfVFJJTVszOjBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsyNToyMl0gOiBQUk9DRVNTIElORElDQVRPUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMjY6MjZdIDogUmVzZXJ2ZWQgWzMxOjI3XSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZVU0VST00gVmVyc2lvbgorCisjZGVmaW5lIEdQUkNNX0dQUkNNX0VGVVNFX1JFQURfUkVHMF9GVVNFRkFSTV9ST1dfMTRfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRUZVU0VfUkVBRF9SRUcxX0ZVU0VGQVJNX1JPV18xNV9MU1dfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYgIC8vIFRoaXMgaXMgUk9XXzE1WzE1OjBdIG9mIEZVU0VGQVJNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEuIE5XUCBQZXJpcGhlcmFsIFByZXNlbnQgYml0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMTU6OF0gTldQX0dQVF9OMF9QUCBbMTU6MTVdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5XUF9HUFRfTjFfUFAgWzE0OjE0XSBOV1BfV0RPR19QUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMTM6MTNdIE5XUF9VRE1BX1BQIFsxMjoxMl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTldQX1VBUlRfTjBfUFAgWzExOjExXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOV1BfVUFSVF9OMV9QUCBbMTA6MTBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5XUF9TU0RJT19QUCBbOTo5XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOV1BfTUNTUElfTjFfUFAgWzg6OF0gMi4gU2hhcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBlcmlwaGVyYWwgUHJlc2VudCBiaXRzIFs3OjBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNIQVJFRCBTUEkgUFAgWzY6Nl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU0hBUkVEIEkyQyBQUCBbNTo1XSBTSEFSRUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTy1BIFBQIFs0OjRdIFNIQVJFRCBHUElPLUIgUFAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzM6M10gU0hBUkVEIEdQSU8tQyBQUCBbMjoyXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTSEFSRUQgR1BJTy1EIFBQIFsxOjFdIFNIQVJFRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPLUUgUFAgWzA6MF0KKworI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzFfRlVTRUZBUk1fUk9XXzE1X0xTV19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzJfRlVTRUZBUk1fUk9XXzE2X0xTV19ST1dfMTVfTVNXX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBUaGlzIGlzIFJPV18xNlsxNTowXSAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJPV18xNVszMToxNl0gb2YgRlVTRUZBUk0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFszMToyMV0gLSBSZXNlcnZlZCBbMjA6MTZdIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0hJUF9JRCBbMTU6MTVdIC0gU1NCRCBTT1AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udHJvbCBbMTQ6MTRdIC0gU1NCRCBUQVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udHJvbCBbMTM6Ml0gLSBBUFBTIFBlcmlwaGVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJlc2VudCBiaXRzIDogQVBQU19DQU1FUkFfUFAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzEzOjEzXSBBUFBTX01NQ0hTX1BQIFsxMjoxMl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQVBQU19NQ0FTUF9QUCBbMTE6MTFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFNfTUNTUElfQTFfUFAgWzEwOjEwXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUFBTX01DU1BJX0EyX1BQIFs5OjldCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFNfVURNQV9QUCBbODo4XSBBUFBTX1dET0dfUFAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzc6N10gQVBQU19VQVJUX0EwX1BQIFs2OjZdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFNfVUFSVF9BMV9QUCBbNTo1XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUFBTX0dQVF9BMF9QUCBbNDo0XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUFBTX0dQVF9BMV9QUCBbMzozXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUFBTX0dQVF9BMl9QUCBbMjoyXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBUFBTX0dQVF9BM19QUCBbMToxXSBbMDowXSAtIE5XUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQZXJpcGhlcmFsIHByZXNlbnQgYml0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOV1BfQUNTUElfUFAgWzA6MF0KKworI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzJfRlVTRUZBUk1fUk9XXzE2X0xTV19ST1dfMTVfTVNXX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fR1BSQ01fRUZVU0VfUkVBRF9SRUczIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0dQUkNNX0VGVVNFX1JFQURfUkVHM19GVVNFRkFSTV9ST1dfMTdfTFNXX1JPV18xNl9NU1dfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIFRoaXMgaXMgUk9XXzE3WzE1OjBdICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUk9XXzE2WzMxOjE2XSBvZiBGVVNFRkFSTSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFszMToxNl0gLSBURVNUX1RBUF9LRVkoMTU6MCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzE1OjBdIC0gUmVzZXJ2ZWQKKworI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzNfRlVTRUZBUk1fUk9XXzE3X0xTV19ST1dfMTZfTVNXX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fV1RPUF9NRU1fUkVUX0NGRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9XVE9QX01FTV9SRVRfQ0ZHX1dUT1BfTUVNX1JFVF9DRkcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gU29mdC1jb21waWxlIG1lbW9yaWVzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdUT1AgY2FuIGJlIHR1cm5lZC1vZmYgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdUT1Atc2xlZXAgbW9kZSA7IDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTb2Z0LWNvbXBpbGUgbWVtb3JpZXMgaW4gV1RPUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtdXN0IGJlIGtlcHQgb24gZHVyaW5nIFdUT1Atc2xlZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZS4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQ09FWF9DTEtfU1dBTExPV19DRkcwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0NPRVhfQ0xLX1NXQUxMT1dfQ0ZHMF9RX0ZBQ1RPUl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDdGRkZGRiAgLy8gVEJECisKKyNkZWZpbmUgR1BSQ01fQ09FWF9DTEtfU1dBTExPV19DRkcwX1FfRkFDVE9SX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQ09FWF9DTEtfU1dBTExPV19DRkcxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0NPRVhfQ0xLX1NXQUxMT1dfQ0ZHMV9QX0ZBQ1RPUl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDBGRkZGRiAgLy8gVEJECisKKyNkZWZpbmUgR1BSQ01fQ09FWF9DTEtfU1dBTExPV19DRkcxX1BfRkFDVE9SX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fQ09FWF9DTEtfU1dBTExPV19DRkcyIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0NPRVhfQ0xLX1NXQUxMT1dfQ0ZHMl9DT05TRUNVVElWRV9TV0FMTE9XX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDE4CisKKyNkZWZpbmUgR1BSQ01fQ09FWF9DTEtfU1dBTExPV19DRkcyX0NPTlNFQ1VUSVZFX1NXQUxMT1dfUyAzCisjZGVmaW5lIEdQUkNNX0NPRVhfQ0xLX1NXQUxMT1dfQ0ZHMl9QUkJTX0dBSU4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisKKyNkZWZpbmUgR1BSQ01fQ09FWF9DTEtfU1dBTExPV19DRkcyX1BSQlNfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEdQUkNNX0NPRVhfQ0xLX1NXQUxMT1dfQ0ZHMl9TV0FMTE9XX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIFRCRAorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19DT0VYX0NMS19TV0FMTE9XX0VOQUJMRSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9DT0VYX0NMS19TV0FMTE9XX0VOQUJMRV9DT0VYX0NMS19TV0FMTE9XX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBFbmFibGUgc3dpdGNoaW5nIG9mIHN5c2NsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBDb2V4LWNsayBwYXRoIDsgMCAtIERpc2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3dpdGNoaW5nIG9mIHN5c2NsayB0byBDb2V4LWNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXRoLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19EQ0RDX0NMS19HRU5fQ09ORklHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0RDRENfQ0xLX0dFTl9DT05GSUdfRENEQ19DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSB0aGUgY2xvY2sgZm9yIERDREMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKFBXTS1tb2RlKSA7IDAgLSBEaXNhYmxlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbG9jayBmb3IgRENEQyAoUFdNLW1vZGUpCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHNCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzRfRlVTRUZBUk1fUk9XXzE3X01TV19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkZGRiAgLy8gVGhpcyBjb3JyZXNwb25kcyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBST1dfMTdbMzE6MTZdIG9mIHRoZSBGVVNFRkFSTSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsxNTowXSA6IFRFU1RfVEFQX0tFWSgzMToxNikKKworI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzRfRlVTRUZBUk1fUk9XXzE3X01TV19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0dQUkNNX0VGVVNFX1JFQURfUkVHNSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzVfRlVTRUZBUk1fUk9XXzE4X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBDb3JyZXNwb25kcyB0byBST1dfMTggb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRlVTRUZBUk0uIFsyOTowXSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1FTVNTX0NPTFVNTl9TRUxfTFNXIDsgWzMwOjMwXSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdMQU4gR0VNIERJU0FCTEUgOyBbMzE6MzFdIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU0VSSUFMIFdJUkUgSlRBRyBTRUxFQ1QKKworI2RlZmluZSBHUFJDTV9HUFJDTV9FRlVTRV9SRUFEX1JFRzVfRlVTRUZBUk1fUk9XXzE4X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fR1BSQ01fRUZVU0VfUkVBRF9SRUc2IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0dQUkNNX0VGVVNFX1JFQURfUkVHNl9GVVNFRkFSTV9ST1dfMTlfTFNXX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGICAvLyBDb3JyZXNwb25kcyB0byBST1dfMTlbMTU6MF0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRlVTRUZBUk0uIFsxNTowXSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1FTVNTX0NPTFVNTl9TRUxfTVNXCisKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRUZVU0VfUkVBRF9SRUc2X0ZVU0VGQVJNX1JPV18xOV9MU1dfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRUZVU0VfUkVBRF9SRUc3X0ZVU0VGQVJNX1JPV18yMF9MU1dfUk9XXzE5X01TV19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gQ29ycmVzcG9uZHMgdG8gUk9XXzIwWzE1OjBdICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUk9XXzE5WzMxOjE2XSBvZiBGVVNFRkFSTS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRkxBU0hfUkVHSU9OMAorCisjZGVmaW5lIEdQUkNNX0dQUkNNX0VGVVNFX1JFQURfUkVHN19GVVNFRkFSTV9ST1dfMjBfTFNXX1JPV18xOV9NU1dfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzggcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRUZVU0VfUkVBRF9SRUc4X0ZVU0VGQVJNX1JPV18yMV9MU1dfUk9XXzIwX01TV19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gQ29ycmVzcG9uZHMgdG8gUk9XXzIxWzE1OjBdICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUk9XXzIwWzMxOjE2XSBvZiBGVVNFRkFSTS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRkxBU0hfUkVHSU9OMQorCisjZGVmaW5lIEdQUkNNX0dQUkNNX0VGVVNFX1JFQURfUkVHOF9GVVNFRkFSTV9ST1dfMjFfTFNXX1JPV18yMF9NU1dfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzkgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRUZVU0VfUkVBRF9SRUc5X0ZVU0VGQVJNX1JPV18yMl9MU1dfUk9XXzIxX01TV19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gQ29ycmVzcG9uZHMgdG8gUk9XXzIyWzE1OjBdICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUk9XXzIxWzMxOjE2XSBvZiBGVVNFRkFSTS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRkxBU0hfUkVHSU9OMgorCisjZGVmaW5lIEdQUkNNX0dQUkNNX0VGVVNFX1JFQURfUkVHOV9GVVNFRkFSTV9ST1dfMjJfTFNXX1JPV18yMV9NU1dfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzEwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0dQUkNNX0VGVVNFX1JFQURfUkVHMTBfRlVTRUZBUk1fUk9XXzIzX0xTV19ST1dfMjJfTVNXX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBDb3JyZXNwb25kcyB0byBST1dfMjNbMTU6MF0gJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBST1dfMjJbMzE6MTZdIG9mIEZVU0VGQVJNLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGTEFTSF9SRUdJT04zCisKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRUZVU0VfUkVBRF9SRUcxMF9GVVNFRkFSTV9ST1dfMjNfTFNXX1JPV18yMl9NU1dfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19HUFJDTV9FRlVTRV9SRUFEX1JFRzExIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0dQUkNNX0VGVVNFX1JFQURfUkVHMTFfRlVTRUZBUk1fUk9XXzI0X0xTV19ST1dfMjNfTVNXX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBDb3JyZXNwb25kcyB0byBST1dfMjRbMTU6MF0gJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBST1dfMjNbMzE6MTZdIG9mIEZVU0VGQVJNLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGTEFTSF9ERVNDUklQVE9SCisKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRUZVU0VfUkVBRF9SRUcxMV9GVVNFRkFSTV9ST1dfMjRfTFNXX1JPV18yM19NU1dfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19HUFJDTV9ESUVJRF9SRUFEX1JFRzAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRElFSURfUkVBRF9SRUcwX0ZVU0VGQVJNXzE5MV8xNjBfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIENvcnJlc3BvbmRzIHRvIGJpdHMgWzE5MToxNjBdIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBGVVNFRkFSTS4gVGhpcyBpcyBST1dfNSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGVVNFRkFSTSBbMTkxOjE2MF0gOiBbMzE6MF0gOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBESUVfSUQwIFszMTowXSA6IERFVlggWzExOjBdIERFVlkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzIzOjEyXSBERVZXQUYgWzI5OjI0XSBERVZfU1BBUkUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzMxOjMwXQorCisjZGVmaW5lIEdQUkNNX0dQUkNNX0RJRUlEX1JFQURfUkVHMF9GVVNFRkFSTV8xOTFfMTYwX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fR1BSQ01fRElFSURfUkVBRF9SRUcxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX0dQUkNNX0RJRUlEX1JFQURfUkVHMV9GVVNFRkFSTV8yMjNfMTkyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBDb3JyZXNwb25kcyB0byBiaXRzIFsyMjM6MTkyXSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgRlVTRUZBUk0uIFRoaXMgaXMgUk9XXzYgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRlVTRUZBUk0gOi0gREVWTE9UIFsyMzowXSBERVZGQUIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzI4OjI0XSBERVZGQUJCRSBbMzE6MjldCisKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRElFSURfUkVBRF9SRUcxX0ZVU0VGQVJNXzIyM18xOTJfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19HUFJDTV9ESUVJRF9SRUFEX1JFRzIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRElFSURfUkVBRF9SRUcyX0ZVU0VGQVJNXzI1NV8yMjRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIENvcnJlc3BvbmRzIHRvIGJpdHMgWzI1NToyMjRdIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBGVVNFRkFSTS4gVGhpcyBpcyBST1dfNyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGVVNFRkFSTTotIERFVkRFU1JFVls0OjBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1lbXJlcGFpcls1OjVdIE1ha2VEZWZpbmVkWzE2OjZdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENIRUNLU1VNWzMwOjE3XSBSZXNlcnZlZCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFszMTozMV0KKworI2RlZmluZSBHUFJDTV9HUFJDTV9ESUVJRF9SRUFEX1JFRzJfRlVTRUZBUk1fMjU1XzIyNF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0dQUkNNX0RJRUlEX1JFQURfUkVHMyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9HUFJDTV9ESUVJRF9SRUFEX1JFRzNfRlVTRUZBUk1fMjg3XzI1Nl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gQ29ycmVzcG9uZHMgdG8gYml0cyBbMjg3OjI1Nl0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEZVU0VGQVJNLiBUaGlzIGlzIFJPV184IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZVU0VGQVJNIDotIERJRUlEMCAtIERFVlJFRworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMzE6MF0KKworI2RlZmluZSBHUFJDTV9HUFJDTV9ESUVJRF9SRUFEX1JFRzNfRlVTRUZBUk1fMjg3XzI1Nl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX0dQUkNNX0RJRUlEX1JFQURfUkVHNCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9HUFJDTV9ESUVJRF9SRUFEX1JFRzRfRlVTRUZBUk1fMzE5XzI4OF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gQ29ycmVzcG9uZHMgdG8gYml0cyBbMzE5OjI4OF0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEZVU0VGQVJNLiBUaGlzIGlzIFJPV185IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZVU0VGQVJNIDotIFs3OjBdIC0gVkJBVE1PTiA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsxMzo4XSAtIEJVRkZfT0ZGU0VUIDsgWzE1OjE1XSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERGVF9HWEcgOyBbMTQ6MTRdIC0gREZUX0dMWCA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsxOToxNl0gLSBQSFkgUk9NIFZlcnNpb24gOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMjM6MjBdIC0gTUFDIFJPTSBWZXJzaW9uIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzI3OjI0XSAtIE5XUCBST00gVmVyc2lvbiA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFszMToyOF0gLSBBUFBTIFJPTSBWZXJzaW9uCisKKyNkZWZpbmUgR1BSQ01fR1BSQ01fRElFSURfUkVBRF9SRUc0X0ZVU0VGQVJNXzMxOV8yODhfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19BUFBTX1NTX09WRVJSSURFUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9BUFBTX1NTX09WRVJSSURFU19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkMwMAorCisjZGVmaW5lIEdQUkNNX0FQUFNfU1NfT1ZFUlJJREVTX3Jlc2VydmVkX1MgMTAKKyNkZWZpbmUgR1BSQ01fQVBQU19TU19PVkVSUklERVNfbWVtX2FwcHNfcmVmY2xrX2dhdGluZ19vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAyMDAKKworI2RlZmluZSBHUFJDTV9BUFBTX1NTX09WRVJSSURFU19tZW1fYXBwc19yZWZjbGtfZ2F0aW5nX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisKKyNkZWZpbmUgR1BSQ01fQVBQU19TU19PVkVSUklERVNfbWVtX2FwcHNfcGxsY2xrX2dhdGluZ19vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAKKworI2RlZmluZSBHUFJDTV9BUFBTX1NTX09WRVJSSURFU19tZW1fYXBwc19wbGxjbGtfZ2F0aW5nX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQwCisKKyNkZWZpbmUgR1BSQ01fQVBQU19TU19PVkVSUklERVNfbWVtX2FwcHNfcG9yX3JzdG5fb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisKKyNkZWZpbmUgR1BSQ01fQVBQU19TU19PVkVSUklERVNfbWVtX2FwcHNfc3lzcnN0bl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAKKworI2RlZmluZSBHUFJDTV9BUFBTX1NTX09WRVJSSURFU19tZW1fYXBwc19zeXNjbGtfZ2F0aW5nX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOAorCisjZGVmaW5lIEdQUkNNX0FQUFNfU1NfT1ZFUlJJREVTX21lbV9hcHBzX3Bvcl9yc3RuX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisKKyNkZWZpbmUgR1BSQ01fQVBQU19TU19PVkVSUklERVNfbWVtX2FwcHNfc3lzcnN0bl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEdQUkNNX0FQUFNfU1NfT1ZFUlJJREVTX21lbV9hcHBzX3N5c2Nsa19nYXRpbmdfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fTldQX1NTX09WRVJSSURFUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9OV1BfU1NfT1ZFUlJJREVTX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGQzAwCisKKyNkZWZpbmUgR1BSQ01fTldQX1NTX09WRVJSSURFU19yZXNlcnZlZF9TIDEwCisjZGVmaW5lIEdQUkNNX05XUF9TU19PVkVSUklERVNfbWVtX253cF9yZWZjbGtfZ2F0aW5nX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDIwMAorCisjZGVmaW5lIEdQUkNNX05XUF9TU19PVkVSUklERVNfbWVtX253cF9yZWZjbGtfZ2F0aW5nX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisKKyNkZWZpbmUgR1BSQ01fTldQX1NTX09WRVJSSURFU19tZW1fbndwX3BsbGNsa19nYXRpbmdfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDgwCisKKyNkZWZpbmUgR1BSQ01fTldQX1NTX09WRVJSSURFU19tZW1fbndwX3BsbGNsa19nYXRpbmdfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDAKKworI2RlZmluZSBHUFJDTV9OV1BfU1NfT1ZFUlJJREVTX21lbV9ud3BfcG9yX3JzdG5fb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisKKyNkZWZpbmUgR1BSQ01fTldQX1NTX09WRVJSSURFU19tZW1fbndwX3N5c3JzdG5fb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCisKKyNkZWZpbmUgR1BSQ01fTldQX1NTX09WRVJSSURFU19tZW1fbndwX3N5c2Nsa19nYXRpbmdfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4CisKKyNkZWZpbmUgR1BSQ01fTldQX1NTX09WRVJSSURFU19tZW1fbndwX3Bvcl9yc3RuX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisKKyNkZWZpbmUgR1BSQ01fTldQX1NTX09WRVJSSURFU19tZW1fbndwX3N5c3JzdG5fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKworI2RlZmluZSBHUFJDTV9OV1BfU1NfT1ZFUlJJREVTX21lbV9ud3Bfc3lzY2xrX2dhdGluZ19vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19TSEFSRURfU1NfT1ZFUlJJREVTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1NIQVJFRF9TU19PVkVSUklERVNfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGMDAKKworI2RlZmluZSBHUFJDTV9TSEFSRURfU1NfT1ZFUlJJREVTX3Jlc2VydmVkX1MgOAorI2RlZmluZSBHUFJDTV9TSEFSRURfU1NfT1ZFUlJJREVTX21lbV9zaGFyZWRfcGxsY2xrX2dhdGluZ19vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4MAorCisjZGVmaW5lIEdQUkNNX1NIQVJFRF9TU19PVkVSUklERVNfbWVtX3NoYXJlZF9wbGxjbGtfZ2F0aW5nX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0MAorCisjZGVmaW5lIEdQUkNNX1NIQVJFRF9TU19PVkVSUklERVNfbWVtX3NoYXJlZF9yZWZjbGtfZ2F0aW5nX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisKKyNkZWZpbmUgR1BSQ01fU0hBUkVEX1NTX09WRVJSSURFU19tZW1fc2hhcmVkX3JlZmNsa19nYXRpbmdfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCisKKyNkZWZpbmUgR1BSQ01fU0hBUkVEX1NTX09WRVJSSURFU19tZW1fc2hhcmVkX3JzdG5fb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4CisKKyNkZWZpbmUgR1BSQ01fU0hBUkVEX1NTX09WRVJSSURFU19tZW1fc2hhcmVkX3N5c2Nsa19nYXRpbmdfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisKKyNkZWZpbmUgR1BSQ01fU0hBUkVEX1NTX09WRVJSSURFU19tZW1fc2hhcmVkX3JzdG5fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKworI2RlZmluZSBHUFJDTV9TSEFSRURfU1NfT1ZFUlJJREVTX21lbV9zaGFyZWRfc3lzY2xrX2dhdGluZ19vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19JRE1FTV9DT1JFX1JTVF9PVkVSUklERVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fSURNRU1fQ09SRV9SU1RfT1ZFUlJJREVTX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRjAwCisKKyNkZWZpbmUgR1BSQ01fSURNRU1fQ09SRV9SU1RfT1ZFUlJJREVTX3Jlc2VydmVkX1MgOAorI2RlZmluZSBHUFJDTV9JRE1FTV9DT1JFX1JTVF9PVkVSUklERVNfbWVtX2lkbWVtX2NvcmVfc3lzcnN0bl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAKKworI2RlZmluZSBHUFJDTV9JRE1FTV9DT1JFX1JTVF9PVkVSUklERVNfbWVtX2lkbWVtX2NvcmVfZm1jX3JzdG5fb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQwCisKKyNkZWZpbmUgR1BSQ01fSURNRU1fQ09SRV9SU1RfT1ZFUlJJREVTX1NQQVJFX1JXMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKworI2RlZmluZSBHUFJDTV9JRE1FTV9DT1JFX1JTVF9PVkVSUklERVNfbWVtX2lkbWVtX2NvcmVfcGlvc2NfZ2F0aW5nX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMAorCisjZGVmaW5lIEdQUkNNX0lETUVNX0NPUkVfUlNUX09WRVJSSURFU19tZW1faWRtZW1fY29yZV9zeXNyc3RuX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4CisKKyNkZWZpbmUgR1BSQ01fSURNRU1fQ09SRV9SU1RfT1ZFUlJJREVTX21lbV9pZG1lbV9jb3JlX2ZtY19yc3RuX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisKKyNkZWZpbmUgR1BSQ01fSURNRU1fQ09SRV9SU1RfT1ZFUlJJREVTX1NQQVJFX1JXMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKworI2RlZmluZSBHUFJDTV9JRE1FTV9DT1JFX1JTVF9PVkVSUklERVNfbWVtX2lkbWVtX2NvcmVfcGlvc2NfZ2F0aW5nX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX1RPUF9ESUVfRlNNX09WRVJSSURFUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9UT1BfRElFX0ZTTV9PVkVSUklERVNfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkYwMDAKKworI2RlZmluZSBHUFJDTV9UT1BfRElFX0ZTTV9PVkVSUklERVNfcmVzZXJ2ZWRfUyAxMgorI2RlZmluZSBHUFJDTV9UT1BfRElFX0ZTTV9PVkVSUklERVNfbWVtX2QyZF9wd3Jfc3dpdGNoX3Bnb29kaW5fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4MDAKKworI2RlZmluZSBHUFJDTV9UT1BfRElFX0ZTTV9PVkVSUklERVNfbWVtX2QyZF9wd3Jfc3dpdGNoX3Bnb29kaW5fb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDAwCisKKyNkZWZpbmUgR1BSQ01fVE9QX0RJRV9GU01fT1ZFUlJJREVTX21lbV9kMmRfaGNsa19nYXRpbmdfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMjAwCisKKyNkZWZpbmUgR1BSQ01fVE9QX0RJRV9GU01fT1ZFUlJJREVTX21lbV9kMmRfcGlvc2NfZ2F0aW5nX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAorCisjZGVmaW5lIEdQUkNNX1RPUF9ESUVfRlNNX09WRVJSSURFU19tZW1fZDJkX3JzdG5fb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDgwCisKKyNkZWZpbmUgR1BSQ01fVE9QX0RJRV9GU01fT1ZFUlJJREVTX21lbV9kMmRfcHdyX3N3aXRjaF9wb25pbl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDAKKworI2RlZmluZSBHUFJDTV9UT1BfRElFX0ZTTV9PVkVSUklERVNfbWVtX2ZsYXNoX3JlYWR5X292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMAorCisjZGVmaW5lIEdQUkNNX1RPUF9ESUVfRlNNX09WRVJSSURFU19tZW1fZDJkX2hjbGtfZ2F0aW5nX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCisKKyNkZWZpbmUgR1BSQ01fVE9QX0RJRV9GU01fT1ZFUlJJREVTX21lbV9kMmRfcGlvc2NfZ2F0aW5nX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4CisKKyNkZWZpbmUgR1BSQ01fVE9QX0RJRV9GU01fT1ZFUlJJREVTX21lbV9kMmRfcnN0bl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNAorCisjZGVmaW5lIEdQUkNNX1RPUF9ESUVfRlNNX09WRVJSSURFU19tZW1fZDJkX3B3cl9zd2l0Y2hfcG9uaW5fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKworI2RlZmluZSBHUFJDTV9UT1BfRElFX0ZTTV9PVkVSUklERVNfbWVtX2ZsYXNoX3JlYWR5X292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBHUFJDTV9PX01DVV9QU0NPTl9PVkVSUklERVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTUNVX1BTQ09OX09WRVJSSURFU19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkYwMDAwMAorCisjZGVmaW5lIEdQUkNNX01DVV9QU0NPTl9PVkVSUklERVNfcmVzZXJ2ZWRfUyAyMAorI2RlZmluZSBHUFJDTV9NQ1VfUFNDT05fT1ZFUlJJREVTX21lbV9tY3VfcHNjb25fbWVtX3NsZWVwX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDgwMDAwCisKKyNkZWZpbmUgR1BSQ01fTUNVX1BTQ09OX09WRVJSSURFU19tZW1fbWN1X3BzY29uX21lbV91cGRhdGVfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNDAwMDAKKworI2RlZmluZSBHUFJDTV9NQ1VfUFNDT05fT1ZFUlJJREVTX21lbV9tY3VfcHNjb25fbWVtX29mZl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAyMDAwMAorCisjZGVmaW5lIEdQUkNNX01DVV9QU0NPTl9PVkVSUklERVNfbWVtX21jdV9wc2Nvbl9tZW1fcmV0YWluX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwCisKKyNkZWZpbmUgR1BSQ01fTUNVX1BTQ09OX09WRVJSSURFU19OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZDMDAKKworI2RlZmluZSBHUFJDTV9NQ1VfUFNDT05fT1ZFUlJJREVTX05VMV9TIDEwCisjZGVmaW5lIEdQUkNNX01DVV9QU0NPTl9PVkVSUklERVNfbWVtX21jdV9wc2Nvbl9zbGVlcF9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAyMDAKKworI2RlZmluZSBHUFJDTV9NQ1VfUFNDT05fT1ZFUlJJREVTX21lbV9tY3VfcHNjb25fbWVtX3VwZGF0ZV9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAKKworI2RlZmluZSBHUFJDTV9NQ1VfUFNDT05fT1ZFUlJJREVTX21lbV9tY3VfcHNjb25fbWVtX29mZl9vdmVycmlkZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGMAorCisjZGVmaW5lIEdQUkNNX01DVV9QU0NPTl9PVkVSUklERVNfbWVtX21jdV9wc2Nvbl9tZW1fb2ZmX292ZXJyaWRlX1MgNAorI2RlZmluZSBHUFJDTV9NQ1VfUFNDT05fT1ZFUlJJREVTX21lbV9tY3VfcHNjb25fbWVtX3JldGFpbl9vdmVycmlkZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwRgorCisjZGVmaW5lIEdQUkNNX01DVV9QU0NPTl9PVkVSUklERVNfbWVtX21jdV9wc2Nvbl9tZW1fcmV0YWluX292ZXJyaWRlX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fV1RPUF9QU0NPTl9PVkVSUklERVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fV1RPUF9QU0NPTl9PVkVSUklERVNfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZDMDAwMDAKKworI2RlZmluZSBHUFJDTV9XVE9QX1BTQ09OX09WRVJSSURFU19yZXNlcnZlZF9TIDIyCisjZGVmaW5lIEdQUkNNX1dUT1BfUFNDT05fT1ZFUlJJREVTX21lbV93dG9wX3BzY29uX3NsZWVwX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMjAwMDAwCisKKyNkZWZpbmUgR1BSQ01fV1RPUF9QU0NPTl9PVkVSUklERVNfbWVtX3d0b3BfcHNjb25fbWVtX3VwZGF0ZV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDEwMDAwMAorCisjZGVmaW5lIEdQUkNNX1dUT1BfUFNDT05fT1ZFUlJJREVTX21lbV93dG9wX3BzY29uX21lbV9vZmZfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwODAwMDAKKworI2RlZmluZSBHUFJDTV9XVE9QX1BTQ09OX09WRVJSSURFU19tZW1fd3RvcF9wc2Nvbl9tZW1fcmV0YWluX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDQwMDAwCisKKyNkZWZpbmUgR1BSQ01fV1RPUF9QU0NPTl9PVkVSUklERVNfbWVtX3d0b3BfcHNjb25fc2xlZXBfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDIwMDAwCisKKyNkZWZpbmUgR1BSQ01fV1RPUF9QU0NPTl9PVkVSUklERVNfbWVtX3d0b3BfcHNjb25fbWVtX3VwZGF0ZV9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAKKworI2RlZmluZSBHUFJDTV9XVE9QX1BTQ09OX09WRVJSSURFU19tZW1fd3RvcF9wc2Nvbl9tZW1fb2ZmX292ZXJyaWRlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRjAwCisKKyNkZWZpbmUgR1BSQ01fV1RPUF9QU0NPTl9PVkVSUklERVNfbWVtX3d0b3BfcHNjb25fbWVtX29mZl9vdmVycmlkZV9TIDgKKyNkZWZpbmUgR1BSQ01fV1RPUF9QU0NPTl9PVkVSUklERVNfbWVtX3d0b3BfcHNjb25fbWVtX3JldGFpbl9vdmVycmlkZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRgorCisjZGVmaW5lIEdQUkNNX1dUT1BfUFNDT05fT1ZFUlJJREVTX21lbV93dG9wX3BzY29uX21lbV9yZXRhaW5fb3ZlcnJpZGVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19XRUxQX1BTQ09OX09WRVJSSURFUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9XRUxQX1BTQ09OX09WRVJSSURFU19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGQworCisjZGVmaW5lIEdQUkNNX1dFTFBfUFNDT05fT1ZFUlJJREVTX3Jlc2VydmVkX1MgMgorI2RlZmluZSBHUFJDTV9XRUxQX1BTQ09OX09WRVJSSURFU19tZW1fd2VscF9wc2Nvbl9zbGVlcF9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEdQUkNNX1dFTFBfUFNDT05fT1ZFUlJJREVTX21lbV93ZWxwX3BzY29uX3NsZWVwX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19XTF9TRElPX1BTQ09OX09WRVJSSURFUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBHUFJDTV9XTF9TRElPX1BTQ09OX09WRVJSSURFU19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGQworCisjZGVmaW5lIEdQUkNNX1dMX1NESU9fUFNDT05fT1ZFUlJJREVTX3Jlc2VydmVkX1MgMgorI2RlZmluZSBHUFJDTV9XTF9TRElPX1BTQ09OX09WRVJSSURFU19tZW1fd2xfc2Rpb19wc2Nvbl9zbGVlcF9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEdQUkNNX1dMX1NESU9fUFNDT05fT1ZFUlJJREVTX21lbV93bF9zZGlvX3BzY29uX3NsZWVwX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gR1BSQ01fT19NQ1NQSV9QU0NPTl9PVkVSUklERVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgR1BSQ01fTUNTUElfUFNDT05fT1ZFUlJJREVTX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRjAwCisKKyNkZWZpbmUgR1BSQ01fTUNTUElfUFNDT05fT1ZFUlJJREVTX3Jlc2VydmVkX1MgOAorI2RlZmluZSBHUFJDTV9NQ1NQSV9QU0NPTl9PVkVSUklERVNfbWVtX21jc3BpX3BzY29uX21lbV9yZXRhaW5fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAKKworI2RlZmluZSBHUFJDTV9NQ1NQSV9QU0NPTl9PVkVSUklERVNfbWVtX21jc3BpX3BzY29uX21lbV9vZmZfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDAKKworI2RlZmluZSBHUFJDTV9NQ1NQSV9QU0NPTl9PVkVSUklERVNfbWVtX21jc3BpX3BzY29uX21lbV9yZXRhaW5fb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisKKyNkZWZpbmUgR1BSQ01fTUNTUElfUFNDT05fT1ZFUlJJREVTX21lbV9tY3NwaV9wc2Nvbl9tZW1fb2ZmX292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMAorCisjZGVmaW5lIEdQUkNNX01DU1BJX1BTQ09OX09WRVJSSURFU19tZW1fbWNzcGlfcHNjb25fbWVtX3VwZGF0ZV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOAorCisjZGVmaW5lIEdQUkNNX01DU1BJX1BTQ09OX09WRVJSSURFU19tZW1fbWNzcGlfcHNjb25fbWVtX3VwZGF0ZV9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBHUFJDTV9NQ1NQSV9QU0NPTl9PVkVSUklERVNfbWVtX21jc3BpX3BzY29uX3NsZWVwX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgR1BSQ01fTUNTUElfUFNDT05fT1ZFUlJJREVTX21lbV9tY3NwaV9wc2Nvbl9zbGVlcF9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEdQUkNNX09fU1NESU9fUFNDT05fT1ZFUlJJREVTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEdQUkNNX1NTRElPX1BTQ09OX09WRVJSSURFU19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGQworCisjZGVmaW5lIEdQUkNNX1NTRElPX1BTQ09OX09WRVJSSURFU19yZXNlcnZlZF9TIDIKKyNkZWZpbmUgR1BSQ01fU1NESU9fUFNDT05fT1ZFUlJJREVTX21lbV9zc2Rpb19wc2Nvbl9zbGVlcF9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEdQUkNNX1NTRElPX1BTQ09OX09WRVJSSURFU19tZW1fc3NkaW9fcHNjb25fc2xlZXBfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKworCisKKyNlbmRpZiAvLyBfX0hXX0dQUkNNX0hfXwpkaWZmIC0tZ2l0IGEvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X2hpYjFwMi5oIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X2hpYjFwMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiNWU4ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9pbmMvaHdfaGliMXAyLmgKQEAgLTAsMCArMSwxNzQ4IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiAgYXJlIG1ldDoKKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIF9fSFdfSElCMVAyX0hfXworI2RlZmluZSBfX0hXX0hJQjFQMl9IX18KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBISUIxUDIgcmVnaXN0ZXIgb2Zmc2V0cy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9PX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfT19TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisKKyNkZWZpbmUgSElCMVAyX09fRElHX0RDRENfUEFSQU1FVEVSUzAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4CisKKyNkZWZpbmUgSElCMVAyX09fRElHX0RDRENfUEFSQU1FVEVSUzEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBDCisKKyNkZWZpbmUgSElCMVAyX09fRElHX0RDRENfUEFSQU1FVEVSUzIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCisKKyNkZWZpbmUgSElCMVAyX09fRElHX0RDRENfUEFSQU1FVEVSUzMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDE0CisKKyNkZWZpbmUgSElCMVAyX09fRElHX0RDRENfUEFSQU1FVEVSUzQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDE4CisKKyNkZWZpbmUgSElCMVAyX09fRElHX0RDRENfUEFSQU1FVEVSUzUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDFDCisKKyNkZWZpbmUgSElCMVAyX09fRElHX0RDRENfUEFSQU1FVEVSUzYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisKKyNkZWZpbmUgSElCMVAyX09fQU5BX0RDRENfUEFSQU1FVEVSUzAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDI0CisKKyNkZWZpbmUgSElCMVAyX09fQU5BX0RDRENfUEFSQU1FVEVSUzEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDI4CisKKyNkZWZpbmUgSElCMVAyX09fQU5BX0RDRENfUEFSQU1FVEVSUzE2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA2NAorCisjZGVmaW5lIEhJQjFQMl9PX0FOQV9EQ0RDX1BBUkFNRVRFUlMxNyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNjgKKworI2RlZmluZSBISUIxUDJfT19BTkFfRENEQ19QQVJBTUVURVJTMTggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDZDCisKKyNkZWZpbmUgSElCMVAyX09fQU5BX0RDRENfUEFSQU1FVEVSUzE5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3MAorCisjZGVmaW5lIEhJQjFQMl9PX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDc0CisKKyNkZWZpbmUgSElCMVAyX09fRkxBU0hfRENEQ19QQVJBTUVURVJTMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNzgKKworI2RlZmluZSBISUIxUDJfT19GTEFTSF9EQ0RDX1BBUkFNRVRFUlMyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3QworCisjZGVmaW5lIEhJQjFQMl9PX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDgwCisKKyNkZWZpbmUgSElCMVAyX09fRkxBU0hfRENEQ19QQVJBTUVURVJTNCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODQKKworI2RlZmluZSBISUIxUDJfT19GTEFTSF9EQ0RDX1BBUkFNRVRFUlM1IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4OAorCisjZGVmaW5lIEhJQjFQMl9PX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDhDCisKKyNkZWZpbmUgSElCMVAyX09fUE1CSVNUX1BBUkFNRVRFUlMwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA5NAorCisjZGVmaW5lIEhJQjFQMl9PX1BNQklTVF9QQVJBTUVURVJTMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwOTgKKworI2RlZmluZSBISUIxUDJfT19QTUJJU1RfUEFSQU1FVEVSUzIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDlDCisKKyNkZWZpbmUgSElCMVAyX09fUE1CSVNUX1BBUkFNRVRFUlMzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBBMAorCisjZGVmaW5lIEhJQjFQMl9PX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEE0CisKKyNkZWZpbmUgSElCMVAyX09fQU5BX0RDRENfUEFSQU1FVEVSU19PVkVSUklERSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQTgKKworI2RlZmluZSBISUIxUDJfT19GTEFTSF9EQ0RDX1BBUkFNRVRFUlNfT1ZFUlJJREUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEFDCisKKyNkZWZpbmUgSElCMVAyX09fRElHX0RDRENfVlRSSU1fQ0ZHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCMAorCisjZGVmaW5lIEhJQjFQMl9PX0RJR19EQ0RDX0ZTTV9QQVJBTUVURVJTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCNAorCisjZGVmaW5lIEhJQjFQMl9PX0FOQV9EQ0RDX0ZTTV9QQVJBTUVURVJTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCOAorCisjZGVmaW5lIEhJQjFQMl9PX1NSQU1fU0tBX0xET19GU01fUEFSQU1FVEVSUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQkMKKworI2RlZmluZSBISUIxUDJfT19CR0FQX0RVVFlfQ1lDTElOR19FWElUX0NGRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQzAKKworI2RlZmluZSBISUIxUDJfT19DTV9PU0NfMTZNX0NPTkZJRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQzQKKworI2RlZmluZSBISUIxUDJfT19TT1BfU0VOU0VfVkFMVUUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEM4CisKKyNkZWZpbmUgSElCMVAyX09fSElCX1JUQ19USU1FUl9MU1dfMVAyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBDQworCisjZGVmaW5lIEhJQjFQMl9PX0hJQl9SVENfVElNRVJfTVNXXzFQMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRDAKKworI2RlZmluZSBISUIxUDJfT19ISUIxUDJfQkdBUF9UUklNX09WRVJSSURFUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRDQKKworI2RlZmluZSBISUIxUDJfT19ISUIxUDJfRUZVU0VfUkVBRF9SRUcwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBEOAorCisjZGVmaW5lIEhJQjFQMl9PX0hJQjFQMl9FRlVTRV9SRUFEX1JFRzEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMERDCisKKyNkZWZpbmUgSElCMVAyX09fSElCMVAyX1BPUl9URVNUX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEUwCisKKyNkZWZpbmUgSElCMVAyX09fSElCX1RJTUVSX1NZTkNfQ0FMSUJfQ0ZHMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRTQKKworI2RlZmluZSBISUIxUDJfT19ISUJfVElNRVJfU1lOQ19DQUxJQl9DRkcxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBFOAorCisjZGVmaW5lIEhJQjFQMl9PX0hJQl9USU1FUl9TWU5DX0NGRzIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEVDCisKKyNkZWZpbmUgSElCMVAyX09fSElCX1RJTUVSX1NZTkNfVFNGX0FESl9WQUwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEYwCisKKyNkZWZpbmUgSElCMVAyX09fSElCX1RJTUVSX1JUQ19HVFNfVElNRVNUQU1QX0xTVyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRjQKKworI2RlZmluZSBISUIxUDJfT19ISUJfVElNRVJfUlRDX0dUU19USU1FU1RBTVBfTVNXIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGOAorCisjZGVmaW5lIEhJQjFQMl9PX0hJQl9USU1FUl9SVENfV1VQX1RJTUVTVEFNUF9MU1cgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZDCisKKyNkZWZpbmUgSElCMVAyX09fSElCX1RJTUVSX1JUQ19XVVBfVElNRVNUQU1QX01TVyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAKKworI2RlZmluZSBISUIxUDJfT19ISUJfVElNRVJfU1lOQ19XQUtFX09GRlNFVF9FUlIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTA0CisKKyNkZWZpbmUgSElCMVAyX09fSElCX1RJTUVSX1NZTkNfVFNGX0NVUlJfVkFMX0xTVyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDgKKworI2RlZmluZSBISUIxUDJfT19ISUJfVElNRVJfU1lOQ19UU0ZfQ1VSUl9WQUxfTVNXIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwQworCisjZGVmaW5lIEhJQjFQMl9PX0NNX1NQQVJFICAgICAgIDB4MDAwMDAxMTAKKyNkZWZpbmUgSElCMVAyX09fUE9SUE9MX1NQQVJFICAgMHgwMDAwMDExNAorI2RlZmluZSBISUIxUDJfT19NRU1fRElHX0RDRENfQ0xLX0NPTkZJRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMTgKKworI2RlZmluZSBISUIxUDJfT19NRU1fQU5BX0RDRENfQ0xLX0NPTkZJRyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMUMKKworI2RlZmluZSBISUIxUDJfT19NRU1fRkxBU0hfRENEQ19DTEtfQ09ORklHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEyMAorCisjZGVmaW5lIEhJQjFQMl9PX01FTV9QQV9EQ0RDX0NMS19DT05GSUcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTI0CisKKyNkZWZpbmUgSElCMVAyX09fTUVNX1NMRE9fVk5XQV9PVkVSUklERSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMjgKKworI2RlZmluZSBISUIxUDJfT19NRU1fQkdBUF9EVVRZX0NZQ0xJTkdfRU5BQkxFX09WRVJSSURFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEyQworCisjZGVmaW5lIEhJQjFQMl9PX01FTV9ISUJfRlNNX0RFQlVHIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEzMAorCisjZGVmaW5lIEhJQjFQMl9PX01FTV9TTERPX1ZOV0FfU1dfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMzQKKworI2RlZmluZSBISUIxUDJfT19NRU1fU0xET19XRUFLX1BST0NFU1MgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTM4CisKKyNkZWZpbmUgSElCMVAyX09fTUVNX1BBX0RDRENfT1ZfVVZfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEzQworCisjZGVmaW5lIEhJQjFQMl9PX01FTV9DTV9URVNUX01PREUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTQwCisKKworCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMF9tZW1fc2xkb19lbl9zY19pdHJpbV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEMwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMF9tZW1fc2xkb19lbl9zY19pdHJpbV9sb3d2X1MgMzAKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMF9tZW1fc2xkb19lbl9pcV90cmltX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMwX21lbV9zbGRvX2VuX2lxX3RyaW1fbG93dl9TIDI4CisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzBfbWVtX3NsZG9fZW5fc2NfcHJvdF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwODAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzBfbWVtX3NsZG9fZW5fbG93dl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQwMDAwMDAgIC8vIEZTTSBPdmVycmlkZSB2YWx1ZSBmb3IgU0xET19FTiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgb25seSB3aGVuIGJpdCBbNF0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyByZWdpc3RlciBpcyBzZXQgdG8gMS4KKworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMwX21lbV9zbGRvX2VuX2xvd19wd3JfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwMDAwMDAKKworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMwX21lbV9zbGRvX2ludF9jYXBfc2VsX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMF9tZW1fc2xkb192dHJpbV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRkMwMDAwCisKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMF9tZW1fc2xkb192dHJpbV9sb3d2X1MgMTgKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMF9tZW1fc2xkb19zcGFyZV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDNGRjAwCisKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMF9tZW1fc2xkb19zcGFyZV9sb3d2X1MgOAorI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMwX21lbV9za2FsZG9fZW5fbG93dl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAgIC8vIEZTTSBPdmVycmlkZSB2YWx1ZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU0tBX0xET19FTiA6IEFwcGxpY2FibGUgb25seSB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCBbM10gb2YgdGhpcyByZWdpc3RlciBpcyBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gMS4KKworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMwX21lbV9za2FsZG9fZW5fY2FwX3JlZl9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0MAorCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzBfbWVtX3NrYWxkb19lbl9yZXNkaXZfcmVmX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMF9tZW1fc2xkb19lbl9sb3d2X2ZzbV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMCAgLy8gV2hlbiAxLCBiaXRbMjZdIG9mIHRoaXMgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSB1c2VkIGFzIFNMRE9fRU4KKworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMwX21lbV9za2FsZG9fZW5fbG93dl9mc21fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDggIC8vIFdoZW4gMSwgYml0WzI2XSBvZiB0aGlzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgdXNlZCBhcyBTS0FfTERPX0VOCisKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMF9OQTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcKKworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMwX05BMV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMV9tZW1fc2thbGRvX2N0cmxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkMwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzFfbWVtX3NrYWxkb19jdHJsX2xvd3ZfUyAyMgorI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMxX21lbV9za2FsZG9fdnRyaW1fbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDNGMDAwMAorCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzFfbWVtX3NrYWxkb192dHJpbV9sb3d2X1MgMTYKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMV9tZW1fc2xkb19lbl90bG9hZF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwODAwMAorCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzFfbWVtX3NrYWxkb19lbl90bG9hZF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwNDAwMAorCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fUEFSQU1FVEVSUzFfbWVtX3NrYWxkb19jYXBfc3dfZW5fbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDIwMDAKKworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMxX21lbV9za2FsZG9fZW5faGliX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAxMDAwCisKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMV9tZW1fc2thbGRvX2VuX3ZyZWZfYnVmX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODAwCisKKyNkZWZpbmUgSElCMVAyX1NSQU1fU0tBX0xET19QQVJBTUVURVJTMV9OQTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA3RkYKKworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX1BBUkFNRVRFUlMxX05BMl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19ESUdfRENEQ19QQVJBTUVURVJTMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZGlnX2VuX2xvd3Zfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwMDAwMDAwICAvLyBPdmVycmlkZSB2YWx1ZSBmb3IgRENEQ19ESUdfRU4gOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIG9ubHkgd2hlbiBiaXQgWzMxXSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBESUdfRENEQ19QQVJBTUVURVJTMSBbMHgwMDBDXSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMS4gRWxzZSBmcm9tIEZTTQorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19kaWdfZGVsYXllZF9lbl9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19kaWdfZW5fc3VicmVnXzFwOHZfbG93dl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAwMDAwMDAgIC8vIE92ZXJyaWRlIHZhbHVlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEQ0RDX0RJR19FTl9TVUJSRUdfMVA4ViA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgb25seSB3aGVuIGJpdCBbMzBdIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERJR19EQ0RDX1BBUkFNRVRFUlMxIFsweDAwMENdIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAxLiBFbHNlIGZyb20gRlNNCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2RpZ19lbl9zdWJyZWdfMXAydl9sb3d2X292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMDAwMDAwMCAgLy8gT3ZlcnJpZGUgdmFsdWUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERDRENfRElHX0VOX1NVQlJFR18xUDJWIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbGljYWJsZSBvbmx5IHdoZW4gYml0IFsyOV0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRElHX0RDRENfUEFSQU1FVEVSUzEgWzB4MDAwQ10gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDEuIEVsc2UgZnJvbSBGU00KKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZGlnX2VuX3NscF9tb2RlX2xvd3Zfb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA4MDAwMDAwICAvLyBPdmVycmlkZSB2YWx1ZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRENEQ19ESUdfU0xQX0VOIDogQXBwbGljYWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gYml0IFsyOF0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRElHX0RDRENfUEFSQU1FVEVSUzEgWzB4MDAwQ10gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDEuIEVsc2UgZnJvbSBGU00KKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZGlnX2VuX2xkb19tb2RlX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA0MDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2RpZ19lbl9uZmV0X3Jkc19tb2RlX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2RpZ19lbl9wZmV0X3Jkc19tb2RlX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2RpZ19leHRfc21wc19vdmVycmlkZV9tb2RlX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwODAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2RpZ19jbGtfaW5fbG93dl9lbmFibGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2RpZ192dHJpbV9sb3d2X292ZXJyaWRlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwM0YwMDAwICAvLyBPdmVycmlkZSB2YWx1ZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRENEQ19ESUdfVlRSSU0gOiBBcHBsaWNhYmxlIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBiaXQgWzI3XSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBESUdfRENEQ19QQVJBTUVURVJTMSBbMHgwMDBDXSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMS4KKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZGlnX3Z0cmltX2xvd3Zfb3ZlcnJpZGVfUyAxNgorI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZGlnX3BmbV9yaXBwbGVfdHJpbV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBDMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2RpZ19wZm1fcmlwcGxlX3RyaW1fbG93dl9TIDE0CisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19kaWdfaXFfY3RybF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAzMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2RpZ19pcV9jdHJsX2xvd3ZfUyAxMgorI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZGlnX2VuX2NsX25vbl9vdl9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19kaWdfbm9uX292X2N0cmxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDc4MAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19kaWdfbm9uX292X2N0cmxfbG93dl9TIDcKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2RpZ19zbHBfZHJ2X2RseV9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3OAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19kaWdfc2xwX2Rydl9kbHlfc2VsX2xvd3ZfUyAzCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMF9OQTNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzBfTkEzX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0RJR19EQ0RDX1BBUkFNRVRFUlMxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19kaWdfZW5fbG93dl9mc21fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfZGlnX2VuX3N1YnJlZ18xcDh2X2ZzbV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19kaWdfZW5fc3VicmVnXzFwMnZfZnNtX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2RpZ19lbl9zbHBfbW9kZV9sb3d2X2ZzbV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19kaWdfdnRyaW1fZnNtX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA4MDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2RpZ19jb3RfbW9kZV9lbl9sb3d2X2ZzbV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19kaWdfaWxpbV90cmltX2xvd3ZfZWZjX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMxX05BNF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMUZGRkZGRgorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMV9OQTRfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fRElHX0RDRENfUEFSQU1FVEVSUzIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2RpZ19wZmV0X3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEYwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2RpZ19wZmV0X3NlbF9sb3d2X1MgMjgKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2RpZ19uZmV0X3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBGMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2RpZ19uZmV0X3NlbF9sb3d2X1MgMjQKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2RpZ19wZHJ2X3N0YWdnZXJfY3RybF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwQzAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2RpZ19wZHJ2X3N0YWdnZXJfY3RybF9sb3d2X1MgMjIKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2RpZ19uZHJ2X3N0YWdnZXJfY3RybF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMzAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2RpZ19uZHJ2X3N0YWdnZXJfY3RybF9sb3d2X1MgMjAKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2RpZ19wZHJ2X3N0cl9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDBGMDAwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMl9tZW1fZGNkY19kaWdfcGRydl9zdHJfc2VsX2xvd3ZfUyAxNgorI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzJfTkE1IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwODAwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMl9tZW1fZGNkY19kaWdfbmRydl9zdHJfc2VsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDc4MDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZGlnX25kcnZfc3RyX3NlbF9sb3d2X1MgMTEKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2RpZ19lbl9zaG9vdHRocnVfY3RybF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMl9tZW1fZGNkY19kaWdfdG9uX3RyaW1fbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDNGQworCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTMl9tZW1fZGNkY19kaWdfdG9uX3RyaW1fbG93dl9TIDIKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2RpZ19zd2NhcF9yZXNfaGZfY2xrX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2RpZ19jb3RfbW9kZV9lbl9sb3d2X292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gT3ZlcnJpZGUgdmFsdWUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERDRENfRElHX0NPVF9FTiA6IEFwcGxpY2FibGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIGJpdFsyNl0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRElHX0RDRENfUEFSQU1FVEVSUzEgWzB4MDAwQ10gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDEuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19ESUdfRENEQ19QQVJBTUVURVJTMyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzNfTkE2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19kaWdfY290X2N0cmxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3RjgwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19kaWdfY290X2N0cmxfbG93dl9TIDIzCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19kaWdfZW5faWxpbV9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDQwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19kaWdfZW5faWxpbV9oaWJfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAyMDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZGlnX2lsaW1fdHJpbV9sb3d2X292ZXJyaWRlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMUZFMDAwICAvLyBPdmVycmlkZSB2YWx1ZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRENEQ19ESUdfSUxJTV9UUklNIDogQXBwbGljYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IHdoZW4gYml0IFsyNV0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRElHX0RDRENfUEFSQU1FVEVSUzEgWzB4MDAwQ10gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDEKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZGlnX2lsaW1fdHJpbV9sb3d2X292ZXJyaWRlX1MgMTMKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2RpZ19pbGltX21hc2tfZGx5X3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAxODAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2RpZ19pbGltX21hc2tfZGx5X3NlbF9sb3d2X1MgMTEKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2RpZ19lbl9uY29tcF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19kaWdfZW5fbmNvbXBfaGliX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMjAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2RpZ19uY29tcF90cmltX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxRjAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZGlnX25jb21wX3RyaW1fbG93dl9TIDQKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2RpZ19uY29tcF9tYXNrX2RseV9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwQworCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19kaWdfbmNvbXBfbWFza19kbHlfc2VsX2xvd3ZfUyAyCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19kaWdfZW5fdXZfcHJvdF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19kaWdfZW5fb3ZfcHJvdF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fRElHX0RDRENfUEFSQU1FVEVSUzQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlM0X2RjZGNfZGlnX3V2X3Byb3Rfb3V0X2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlM0X2RjZGNfZGlnX292X3Byb3Rfb3V0X2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlM0X21lbV9kY2RjX2RpZ19lbl90bXV4X2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlM0X05BN19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxRkZGRkZGRgorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTNF9OQTdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fRElHX0RDRENfUEFSQU1FVEVSUzUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlM1X21lbV9kY2RjX2RpZ190bXV4X2N0cmxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRgorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19QQVJBTUVURVJTNV9tZW1fZGNkY19kaWdfdG11eF9jdHJsX2xvd3ZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fRElHX0RDRENfUEFSQU1FVEVSUzYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlM2X21lbV9kY2RjX2RpZ19zcGFyZV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1BBUkFNRVRFUlM2X21lbV9kY2RjX2RpZ19zcGFyZV9sb3d2X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0FOQV9EQ0RDX1BBUkFNRVRFUlMwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19hbmFfZW5fbG93dl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMDAwMDAgIC8vIE92ZXJyaWRlIGZvciBBTkEgRENEQyBFTgorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19hbmFfZGVsYXllZF9lbl9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19hbmFfZW5fc3VicmVnXzFwOHZfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfYW5hX2VuX3N1YnJlZ18xcDJ2X2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2FuYV9lbl9wd21fbW9kZV9sb3d2X292ZXJyaWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwODAwMDAwMCAgLy8gT3ZlcnJpZGUgZm9yIEFOQSBEQ0RDIFBXTQorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19hbmFfZW5fc2xwX21vZGVfbG93dl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQwMDAwMDAgIC8vIE92ZXJyaWRlIGZvciBBTkEgRENEQyBTTFAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfYW5hX2VuX2xkb19tb2RlX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2FuYV9lbl9wZmV0X3Jkc19tb2RlX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2FuYV9lbl9uZmV0X3Jkc19tb2RlX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwODAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2FuYV9leHRfc21wc19vdmVycmlkZV9tb2RlX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2FuYV9jbGtfaW5fbG93dl9lbmFibGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMjAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2FuYV92dHJpbV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMUUwMDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2FuYV92dHJpbV9sb3d2X1MgMTcKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2FuYV9wZm1fcmlwcGxlX3RyaW1fbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxODAwMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19hbmFfcGZtX3JpcHBsZV90cmltX2xvd3ZfUyAxNQorI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfYW5hX2lxX2N0cmxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwNjAwMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19hbmFfaXFfY3RybF9sb3d2X1MgMTMKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2FuYV9lbl9jbF9ub25fb3ZfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDEwMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfYW5hX25vbl9vdl9jdHJsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfYW5hX25vbl9vdl9jdHJsX2xvd3ZfUyA4CisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19hbmFfc2xwX2Rydl9kbHlfc2VsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRjAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfYW5hX3NscF9kcnZfZGx5X3NlbF9sb3d2X1MgNAorI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfYW5hX3BmZXRfc2VsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfYW5hX3BmZXRfc2VsX2xvd3ZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fQU5BX0RDRENfUEFSQU1FVEVSUzEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2FuYV9uZmV0X3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEYwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2FuYV9uZmV0X3NlbF9sb3d2X1MgMjgKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2FuYV9wZHJ2X3N0YWdnZXJfY3RybF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBDMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2FuYV9wZHJ2X3N0YWdnZXJfY3RybF9sb3d2X1MgMjYKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2FuYV9uZHJ2X3N0YWdnZXJfY3RybF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAzMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2FuYV9uZHJ2X3N0YWdnZXJfY3RybF9sb3d2X1MgMjQKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2FuYV9wZHJ2X3N0cl9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMEYwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19hbmFfcGRydl9zdHJfc2VsX2xvd3ZfUyAyMAorI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfYW5hX25kcnZfc3RyX3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMEYwMDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2FuYV9uZHJ2X3N0cl9zZWxfbG93dl9TIDE2CisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19hbmFfZW5fcnRyaW1fbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDgwMDAgIC8vIChFYXJsaWVyIFNIT09UVEhSVSBDVFJMKQorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19hbmFfYXB3bV9lbl9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwNDAwMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19hbmFfcmFtcF9oZ3RfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwM0UwMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19hbmFfcmFtcF9oZ3RfbG93dl9TIDkKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2FuYV9lbl9hbnRpX2dsaXRjaF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19hbmFfZW5faGlfY2xhbXBfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfYW5hX2hpX2NsYW1wX3RyaW1fbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA2MAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19hbmFfaGlfY2xhbXBfdHJpbV9sb3d2X1MgNQorI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfYW5hX2VuX2xvX2NsYW1wX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2FuYV9sb19jbGFtcF90cmltX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEMKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfYW5hX2xvX2NsYW1wX3RyaW1fbG93dl9TIDIKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxX05BOF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMworCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMV9OQThfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fQU5BX0RDRENfUEFSQU1FVEVSUzE2IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMTZfbWVtX2RjZGNfYW5hX2VuX2lsaW1fbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAyMDAwMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzE2X21lbV9kY2RjX2FuYV9lbl9pbGltX2hpYl9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDEwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMTZfbWVtX2RjZGNfYW5hX2lsaW1fdHJpbV9sb3d2X292ZXJyaWRlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMEZGMDAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxNl9tZW1fZGNkY19hbmFfaWxpbV90cmltX2xvd3Zfb3ZlcnJpZGVfUyAxMgorI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzE2X21lbV9kY2RjX2FuYV9pbGltX21hc2tfZGx5X3NlbF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwQzAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxNl9tZW1fZGNkY19hbmFfaWxpbV9tYXNrX2RseV9zZWxfbG93dl9TIDEwCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMTZfbWVtX2RjZGNfYW5hX2VuX25jb21wX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMjAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxNl9tZW1fZGNkY19hbmFfZW5fbmNvbXBfaGliX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxNl9tZW1fZGNkY19hbmFfbmNvbXBfdHJpbV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEY4CisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxNl9tZW1fZGNkY19hbmFfbmNvbXBfdHJpbV9sb3d2X1MgMworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzE2X21lbV9kY2RjX2FuYV9uY29tcF9tYXNrX2RseV9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNgorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMTZfbWVtX2RjZGNfYW5hX25jb21wX21hc2tfZGx5X3NlbF9sb3d2X1MgMQorI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzE2X21lbV9kY2RjX2FuYV9lbl9vdl9wcm90X2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19BTkFfRENEQ19QQVJBTUVURVJTMTcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxN19kY2RjX2FuYV9vdl9wcm90X291dF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMTdfbWVtX2RjZGNfYW5hX2VuX3RtdXhfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzE3X05BMTdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M0ZGRkZGRkYKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzE3X05BMTdfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fQU5BX0RDRENfUEFSQU1FVEVSUzE4IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMThfbWVtX2RjZGNfYW5hX3RtdXhfY3RybF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGCisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlMxOF9tZW1fZGNkY19hbmFfdG11eF9jdHJsX2xvd3ZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fQU5BX0RDRENfUEFSQU1FVEVSUzE5IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTMTlfbWVtX2RjZGNfYW5hX3NwYXJlX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSUzE5X21lbV9kY2RjX2FuYV9zcGFyZV9sb3d2X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZmxhc2hfZW5fbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19mbGFzaF9kZWxheWVkX2VuX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZmxhc2hfY2xrX2luX2xvd3ZfZW5hYmxlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX2lxX2N0cmxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxODAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX2lxX2N0cmxfbG93dl9TIDI3CisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX2VuX2J1Y2tfbW9kZV9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX2VuX2Jvb3N0X21vZGVfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19mbGFzaF9lbl9idWNrX2Jvb3N0X21vZGVfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19mbGFzaF9lbl9iYl9hbHRfY3ljbGVzX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwODAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZmxhc2hfZW5fY2xfbm9uX292X2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZmxhc2hfbm9uX292X2N0cmxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDNDMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX25vbl9vdl9jdHJsX2xvd3ZfUyAxOAorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19mbGFzaF9lbl9kcnZfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMjAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19mbGFzaF9lbl9wd21fbW9kZV9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX2VuX3BmbV9jb21wX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA4MDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZmxhc2hfZW5fc2xwX21vZGVfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDQwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19mbGFzaF9lbl9uMWZldF9yZHNfbW9kZV9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMjAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX2VuX24yZmV0X3Jkc19tb2RlX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAxMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzBfbWVtX2RjZGNfZmxhc2hfZW5fcDFmZXRfcmRzX21vZGVfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4MDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19mbGFzaF9lbl9wMmZldF9yZHNfbW9kZV9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX2V4dF9zbXBzX21vZGVfb3ZlcnJpZGVfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAyMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19mbGFzaF9wMWZldF9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDFFMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX3AxZmV0X3NlbF9sb3d2X1MgNQorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMF9tZW1fZGNkY19mbGFzaF9uMWZldF9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxRQorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMwX21lbV9kY2RjX2ZsYXNoX24xZmV0X3NlbF9sb3d2X1MgMQorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMF9OQTE4IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fRkxBU0hfRENEQ19QQVJBTUVURVJTMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19mbGFzaF9wMmZldF9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGMDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2ZsYXNoX3AyZmV0X3NlbF9sb3d2X1MgMjgKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfZmxhc2hfbjJmZXRfc2VsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEYwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19mbGFzaF9uMmZldF9zZWxfbG93dl9TIDI0CisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2ZsYXNoX3AxZHJ2X3N0cl9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMEYwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2ZsYXNoX3AxZHJ2X3N0cl9zZWxfbG93dl9TIDIwCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2ZsYXNoX24xZHJ2X3N0cl9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDBGMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2ZsYXNoX24xZHJ2X3N0cl9zZWxfbG93dl9TIDE2CisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2ZsYXNoX3AyZHJ2X3N0cl9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRjAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2ZsYXNoX3AyZHJ2X3N0cl9zZWxfbG93dl9TIDEyCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2ZsYXNoX24yZHJ2X3N0cl9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEYwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMxX21lbV9kY2RjX2ZsYXNoX24yZHJ2X3N0cl9zZWxfbG93dl9TIDgKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfZmxhc2hfcDFmZXRfbm9uX292X2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQzAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19mbGFzaF9wMWZldF9ub25fb3ZfbG93dl9TIDYKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfZmxhc2hfbjFmZXRfbm9uX292X2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMzAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19mbGFzaF9uMWZldF9ub25fb3ZfbG93dl9TIDQKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfZmxhc2hfcDJmZXRfbm9uX292X2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEMKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19mbGFzaF9wMmZldF9ub25fb3ZfbG93dl9TIDIKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzFfbWVtX2RjZGNfZmxhc2hfbjJmZXRfbm9uX292X2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDMKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMV9tZW1fZGNkY19mbGFzaF9uMmZldF9ub25fb3ZfbG93dl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19GTEFTSF9EQ0RDX1BBUkFNRVRFUlMyIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2ZsYXNoX3AxZmV0X3N0YWdnZXJfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhDMDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2ZsYXNoX3AxZmV0X3N0YWdnZXJfbG93dl9TIDMwCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2ZsYXNoX24xZmV0X3N0YWdnZXJfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2ZsYXNoX24xZmV0X3N0YWdnZXJfbG93dl9TIDI4CisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2ZsYXNoX3AyZmV0X3N0YWdnZXJfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQzAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2ZsYXNoX3AyZmV0X3N0YWdnZXJfbG93dl9TIDI2CisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2ZsYXNoX24yZmV0X3N0YWdnZXJfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMzAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2ZsYXNoX24yZmV0X3N0YWdnZXJfbG93dl9TIDI0CisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2ZsYXNoX3Nob290X3RocnVfY3RybF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDgwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2ZsYXNoX2VuX25jb21wX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfZW5fbmNvbXBfaGliX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMjAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfbmNvbXBfdHJpbV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMUYwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfbmNvbXBfdHJpbV9sb3d2X1MgMTYKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfbmNvbXBfbWFza19kbHlfdHJpbV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfbmNvbXBfbWFza19kbHlfdHJpbV9sb3d2X1MgMTIKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfZW5faWxpbV9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2ZsYXNoX2VuX2lsaW1faGliX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfaWxpbV90cmltX2xvd3Zfb3ZlcnJpZGVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAzRkMKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTMl9tZW1fZGNkY19mbGFzaF9pbGltX3RyaW1fbG93dl9vdmVycmlkZV9TIDIKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzJfbWVtX2RjZGNfZmxhc2hfaWxpbV9tYXNrX2RseV9zZWxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMworCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMyX21lbV9kY2RjX2ZsYXNoX2lsaW1fbWFza19kbHlfc2VsX2xvd3ZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fRkxBU0hfRENEQ19QQVJBTUVURVJTMyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19mbGFzaF9lbl9hbnRpX2dsaXRjaF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2ZsYXNoX2VuX2hpX2NsYW1wX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZmxhc2hfZW5fbG9fY2xhbXBfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19mbGFzaF9yYW1wX2hndF9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFGMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZmxhc2hfcmFtcF9oZ3RfbG93dl9TIDI0CisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2ZsYXNoX3ZjbGFtcGhfdHJpbV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRTAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZmxhc2hfdmNsYW1waF90cmltX2xvd3ZfUyAyMQorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19mbGFzaF92Y2xhbXBsX3RyaW1fbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDFDMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2ZsYXNoX3ZjbGFtcGxfdHJpbV9sb3d2X1MgMTgKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZmxhc2hfdnRyaW1fbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAzQzAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2ZsYXNoX3Z0cmltX2xvd3ZfUyAxNAorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19mbGFzaF9wZm1fcmlwcGxlX3RyaW1fbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwM0MwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2ZsYXNoX3BmbV9yaXBwbGVfdHJpbV9sb3d2X1MgMTAKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZmxhc2hfc2xwX2Rydl9kbHlfc2VsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAzMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19mbGFzaF9zbHBfZHJ2X2RseV9zZWxfbG93dl9TIDgKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzNfbWVtX2RjZGNfZmxhc2hfZW5fb3ZfcHJvdF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4MAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMzX21lbV9kY2RjX2ZsYXNoX2VuX3V2X3Byb3RfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTM19tZW1fZGNkY19mbGFzaF9lbl90bXV4X2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzNfTkExOV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxRgorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlMzX05BMTlfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fRkxBU0hfRENEQ19QQVJBTUVURVJTNCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTNF9tZW1fZGNkY19mbGFzaF90bXV4X2N0cmxfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRgorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlM0X21lbV9kY2RjX2ZsYXNoX3RtdXhfY3RybF9sb3d2X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzVfbWVtX2RjZGNfZmxhc2hfc3BhcmVfbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRgorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlM1X21lbV9kY2RjX2ZsYXNoX3NwYXJlX2xvd3ZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fRkxBU0hfRENEQ19QQVJBTUVURVJTNiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTNl9kY2RjX2ZsYXNoX292X3Byb3Rfb3V0X2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzZfZGNkY19mbGFzaF91dl9wcm90X291dF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlM2X05BMjBfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M0ZGRkZGRkYKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTNl9OQTIwX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX1BNQklTVF9QQVJBTUVURVJTMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfUE1CSVNUX1BBUkFNRVRFUlMwX21lbV9wbV9iaXN0X2VuX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX1BNQklTVF9QQVJBTUVURVJTMF9tZW1fcG1fYmlzdF9jdHJsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N0ZGRkY4MDAKKworI2RlZmluZSBISUIxUDJfUE1CSVNUX1BBUkFNRVRFUlMwX21lbV9wbV9iaXN0X2N0cmxfbG93dl9TIDExCisjZGVmaW5lIEhJQjFQMl9QTUJJU1RfUEFSQU1FVEVSUzBfTkEyMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDdGRgorCisjZGVmaW5lIEhJQjFQMl9QTUJJU1RfUEFSQU1FVEVSUzBfTkEyMV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19QTUJJU1RfUEFSQU1FVEVSUzEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX1BNQklTVF9QQVJBTUVURVJTMV9tZW1fcG1fYmlzdF9zcGFyZV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYwMDAwCisKKyNkZWZpbmUgSElCMVAyX1BNQklTVF9QQVJBTUVURVJTMV9tZW1fcG1fYmlzdF9zcGFyZV9sb3d2X1MgMTYKKyNkZWZpbmUgSElCMVAyX1BNQklTVF9QQVJBTUVURVJTMV9tZW1fcG10ZXN0X2VuX2xvd3YgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA4MDAwCisKKyNkZWZpbmUgSElCMVAyX1BNQklTVF9QQVJBTUVURVJTMV9OQTIyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA3RkZGCisKKyNkZWZpbmUgSElCMVAyX1BNQklTVF9QQVJBTUVURVJTMV9OQTIyX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX1BNQklTVF9QQVJBTUVURVJTMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfUE1CSVNUX1BBUkFNRVRFUlMyX21lbV9wbXRlc3RfdG11eF9jdHJsX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYKKworI2RlZmluZSBISUIxUDJfUE1CSVNUX1BBUkFNRVRFUlMyX21lbV9wbXRlc3RfdG11eF9jdHJsX2xvd3ZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fUE1CSVNUX1BBUkFNRVRFUlMzIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9QTUJJU1RfUEFSQU1FVEVSUzNfbWVtX3BtdGVzdF9zcGFyZV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYwMDAwCisKKyNkZWZpbmUgSElCMVAyX1BNQklTVF9QQVJBTUVURVJTM19tZW1fcG10ZXN0X3NwYXJlX2xvd3ZfUyAxNgorI2RlZmluZSBISUIxUDJfUE1CSVNUX1BBUkFNRVRFUlMzX21lbV9wbXRlc3RfbG9hZF90cmltX2xvd3ZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEUwMDAKKworI2RlZmluZSBISUIxUDJfUE1CSVNUX1BBUkFNRVRFUlMzX21lbV9wbXRlc3RfbG9hZF90cmltX2xvd3ZfUyAxMworI2RlZmluZSBISUIxUDJfUE1CSVNUX1BBUkFNRVRFUlMzX21lbV9ybndlbGxfY2FsaWJfZW5fbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDEwMDAKKworI2RlZmluZSBISUIxUDJfUE1CSVNUX1BBUkFNRVRFUlMzX05BMjNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYKKworI2RlZmluZSBISUIxUDJfUE1CSVNUX1BBUkFNRVRFUlMzX05BMjNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fRkxBU0hfRENEQ19QQVJBTUVURVJTOCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTOF9tZW1fZW5fZmxhc2hfc3VwX2NvbXBfbG93diBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTOF9tZW1fZmxhc2hfaGlnaF9zdXBfdHJpbV9sb3d2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdDMDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSUzhfbWVtX2ZsYXNoX2hpZ2hfc3VwX3RyaW1fbG93dl9TIDI2CisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlM4X21lbV9mbGFzaF9sb3dfc3VwX3RyaW1fbG93dl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwM0UwMDAwMAorCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlM4X21lbV9mbGFzaF9sb3dfc3VwX3RyaW1fbG93dl9TIDIxCisjZGVmaW5lIEhJQjFQMl9GTEFTSF9EQ0RDX1BBUkFNRVRFUlM4X05BMjRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAxRkZGRkYKKworI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTOF9OQTI0X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0FOQV9EQ0RDX1BBUkFNRVRFUlNfT1ZFUlJJREUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlNfT1ZFUlJJREVfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGQzAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSU19PVkVSUklERV9yZXNlcnZlZF9TIDYKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX1BBUkFNRVRFUlNfT1ZFUlJJREVfbWVtX2RjZGNfYW5hX2VuX3N1YnJlZ18xcDJ2X2xvd3Zfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSU19PVkVSUklERV9tZW1fZGNkY19hbmFfZW5fc3VicmVnXzFwOHZfbG93dl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMAorCisjZGVmaW5lIEhJQjFQMl9BTkFfRENEQ19QQVJBTUVURVJTX09WRVJSSURFX21lbV9kY2RjX2FuYV9pbGltX3RyaW1fbG93dl9lZmNfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDgKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSU19PVkVSUklERV9tZW1fZGNkY19hbmFfZW5fc2xwX21vZGVfbG93dl9mc21fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSU19PVkVSUklERV9tZW1fZGNkY19hbmFfZW5fcHdtX21vZGVfbG93dl9mc21fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfUEFSQU1FVEVSU19PVkVSUklERV9tZW1fZGNkY19hbmFfZW5fbG93dl9mc21fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0ZMQVNIX0RDRENfUEFSQU1FVEVSU19PVkVSUklERSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfRkxBU0hfRENEQ19QQVJBTUVURVJTX09WRVJSSURFX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZDCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSU19PVkVSUklERV9yZXNlcnZlZF9TIDIKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSU19PVkVSUklERV9tZW1fZGNkY19mbGFzaF9lbl9sb3d2X292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgSElCMVAyX0ZMQVNIX0RDRENfUEFSQU1FVEVSU19PVkVSUklERV9tZW1fZGNkY19mbGFzaF9pbGltX3RyaW1fbG93dl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fRElHX0RDRENfVlRSSU1fQ0ZHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19WVFJJTV9DRkdfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkYwMDAwMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfVlRSSU1fQ0ZHX3Jlc2VydmVkX1MgMjQKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1ZUUklNX0NGR19tZW1fZGNkY19kaWdfcnVuX3Z0cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRkMwMDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1ZUUklNX0NGR19tZW1fZGNkY19kaWdfcnVuX3Z0cmltX1MgMTgKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1ZUUklNX0NGR19tZW1fZGNkY19kaWdfZHNscF92dHJpbV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAzRjAwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19WVFJJTV9DRkdfbWVtX2RjZGNfZGlnX2RzbHBfdnRyaW1fUyAxMgorI2RlZmluZSBISUIxUDJfRElHX0RDRENfVlRSSU1fQ0ZHX21lbV9kY2RjX2RpZ19scGRzX3Z0cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkMwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1ZUUklNX0NGR19tZW1fZGNkY19kaWdfbHBkc192dHJpbV9TIDYKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX1ZUUklNX0NGR19TcGFyZV9SV19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzRgorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19WVFJJTV9DRkdfU3BhcmVfUldfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fRElHX0RDRENfRlNNX1BBUkFNRVRFUlMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX0ZTTV9QQVJBTUVURVJTX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkY4MDAwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX0ZTTV9QQVJBTUVURVJTX3Jlc2VydmVkX1MgMTUKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX0ZTTV9QQVJBTUVURVJTX21lbV9kY2RjX2RpZ19kc2xwX2VudGVyX2NvdF90b192dHJpbV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwNzAwMAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19GU01fUEFSQU1FVEVSU19tZW1fZGNkY19kaWdfZHNscF9lbnRlcl9jb3RfdG9fdnRyaW1fUyAxMgorI2RlZmluZSBISUIxUDJfRElHX0RDRENfRlNNX1BBUkFNRVRFUlNfbWVtX2RjZGNfZGlnX2RzbHBfZW50ZXJfdnRyaW1fdG9fc2xlZXBfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBFMDAKKworI2RlZmluZSBISUIxUDJfRElHX0RDRENfRlNNX1BBUkFNRVRFUlNfbWVtX2RjZGNfZGlnX2RzbHBfZW50ZXJfdnRyaW1fdG9fc2xlZXBfUyA5CisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19GU01fUEFSQU1FVEVSU19tZW1fZGNkY19kaWdfZHNscF9leGl0X3NsZWVwX3RvX3Z0cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMUMwCisKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX0ZTTV9QQVJBTUVURVJTX21lbV9kY2RjX2RpZ19kc2xwX2V4aXRfc2xlZXBfdG9fdnRyaW1fUyA2CisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19GU01fUEFSQU1FVEVSU19tZW1fZGNkY19kaWdfZHNscF9leGl0X3Z0cmltX3RvX2NvdF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzOAorCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19GU01fUEFSQU1FVEVSU19tZW1fZGNkY19kaWdfZHNscF9leGl0X3Z0cmltX3RvX2NvdF9TIDMKKyNkZWZpbmUgSElCMVAyX0RJR19EQ0RDX0ZTTV9QQVJBTUVURVJTX21lbV9kY2RjX2RpZ19kc2xwX2V4aXRfY290X3RvX3J1bl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNworCisjZGVmaW5lIEhJQjFQMl9ESUdfRENEQ19GU01fUEFSQU1FVEVSU19tZW1fZGNkY19kaWdfZHNscF9leGl0X2NvdF90b19ydW5fUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fQU5BX0RDRENfRlNNX1BBUkFNRVRFUlMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX0ZTTV9QQVJBTUVURVJTX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkY4CisKKyNkZWZpbmUgSElCMVAyX0FOQV9EQ0RDX0ZTTV9QQVJBTUVURVJTX3Jlc2VydmVkX1MgMworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfRlNNX1BBUkFNRVRFUlNfbWVtX2RjZGNfYW5hX2RzbHBfZXhpdF9zbGVlcF90b19ydW5fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcKKworI2RlZmluZSBISUIxUDJfQU5BX0RDRENfRlNNX1BBUkFNRVRFUlNfbWVtX2RjZGNfYW5hX2RzbHBfZXhpdF9zbGVlcF90b19ydW5fUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fU1JBTV9TS0FfTERPX0ZTTV9QQVJBTUVURVJTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fRlNNX1BBUkFNRVRFUlNfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGQzAKKworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX0ZTTV9QQVJBTUVURVJTX3Jlc2VydmVkX1MgNgorI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX0ZTTV9QQVJBTUVURVJTX21lbV9za2FfbGRvX2VuX3RvX3NyYW1fbGRvX2Rpc19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzOAorCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fRlNNX1BBUkFNRVRFUlNfbWVtX3NrYV9sZG9fZW5fdG9fc3JhbV9sZG9fZGlzX1MgMworI2RlZmluZSBISUIxUDJfU1JBTV9TS0FfTERPX0ZTTV9QQVJBTUVURVJTX21lbV9zcmFtX2xkb19lbl90b19za2FfbGRvX2Rpc19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNworCisjZGVmaW5lIEhJQjFQMl9TUkFNX1NLQV9MRE9fRlNNX1BBUkFNRVRFUlNfbWVtX3NyYW1fbGRvX2VuX3RvX3NrYV9sZG9fZGlzX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0JHQVBfRFVUWV9DWUNMSU5HX0VYSVRfQ0ZHIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9CR0FQX0RVVFlfQ1lDTElOR19FWElUX0NGR19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGOAorCisjZGVmaW5lIEhJQjFQMl9CR0FQX0RVVFlfQ1lDTElOR19FWElUX0NGR19yZXNlcnZlZF9TIDMKKyNkZWZpbmUgSElCMVAyX0JHQVBfRFVUWV9DWUNMSU5HX0VYSVRfQ0ZHX21lbV9iZ2FwX2R1dHlfY3ljbGluZ19leGl0X3RpbWVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcKKworI2RlZmluZSBISUIxUDJfQkdBUF9EVVRZX0NZQ0xJTkdfRVhJVF9DRkdfbWVtX2JnYXBfZHV0eV9jeWNsaW5nX2V4aXRfdGltZV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19DTV9PU0NfMTZNX0NPTkZJRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfQ01fT1NDXzE2TV9DT05GSUdfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGQzAwMDAKKworI2RlZmluZSBISUIxUDJfQ01fT1NDXzE2TV9DT05GSUdfcmVzZXJ2ZWRfUyAxOAorI2RlZmluZSBISUIxUDJfQ01fT1NDXzE2TV9DT05GSUdfY21fY2xrX2dvb2RfMTZtIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAyMDAwMAorCisjZGVmaW5lIEhJQjFQMl9DTV9PU0NfMTZNX0NPTkZJR19tZW1fY21fZW5fb3NjXzE2bSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAKKworI2RlZmluZSBISUIxUDJfQ01fT1NDXzE2TV9DT05GSUdfbWVtX2NtX29zY18xNm1fdHJpbV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkMwMAorCisjZGVmaW5lIEhJQjFQMl9DTV9PU0NfMTZNX0NPTkZJR19tZW1fY21fb3NjXzE2bV90cmltX1MgMTAKKyNkZWZpbmUgSElCMVAyX0NNX09TQ18xNk1fQ09ORklHX21lbV9jbV9vc2NfMTZtX3NwYXJlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwM0YwCisKKyNkZWZpbmUgSElCMVAyX0NNX09TQ18xNk1fQ09ORklHX21lbV9jbV9vc2NfMTZtX3NwYXJlX1MgNAorI2RlZmluZSBISUIxUDJfQ01fT1NDXzE2TV9DT05GSUdfbWVtX2NtX29zY19lbl9zbGlfMTZtIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOAorCisjZGVmaW5lIEhJQjFQMl9DTV9PU0NfMTZNX0NPTkZJR19tZW1fY21fc2xpXzE2bV90cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3CisKKyNkZWZpbmUgSElCMVAyX0NNX09TQ18xNk1fQ09ORklHX21lbV9jbV9zbGlfMTZtX3RyaW1fUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fU09QX1NFTlNFX1ZBTFVFIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9TT1BfU0VOU0VfVkFMVUVfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGMDAKKworI2RlZmluZSBISUIxUDJfU09QX1NFTlNFX1ZBTFVFX3Jlc2VydmVkX1MgOAorI2RlZmluZSBISUIxUDJfU09QX1NFTlNFX1ZBTFVFX3NvcF9zZW5zZV92YWx1ZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRgorCisjZGVmaW5lIEhJQjFQMl9TT1BfU0VOU0VfVkFMVUVfc29wX3NlbnNlX3ZhbHVlX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0hJQl9SVENfVElNRVJfTFNXXzFQMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfSElCX1JUQ19USU1FUl9MU1dfMVAyX2hpYl9ydGNfdGltZXJfbHN3X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGCisKKyNkZWZpbmUgSElCMVAyX0hJQl9SVENfVElNRVJfTFNXXzFQMl9oaWJfcnRjX3RpbWVyX2xzd19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19ISUJfUlRDX1RJTUVSX01TV18xUDIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0hJQl9SVENfVElNRVJfTVNXXzFQMl9oaWJfcnRjX3RpbWVyX21zd19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkZGRgorCisjZGVmaW5lIEhJQjFQMl9ISUJfUlRDX1RJTUVSX01TV18xUDJfaGliX3J0Y190aW1lcl9tc3dfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fSElCMVAyX0JHQVBfVFJJTV9PVkVSUklERVMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0hJQjFQMl9CR0FQX1RSSU1fT1ZFUlJJREVTX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGODAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0hJQjFQMl9CR0FQX1RSSU1fT1ZFUlJJREVTX3Jlc2VydmVkX1MgMjMKKyNkZWZpbmUgSElCMVAyX0hJQjFQMl9CR0FQX1RSSU1fT1ZFUlJJREVTX21lbV9iZ2FwX21hZ190cmltX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNDAwMDAwCisKKyNkZWZpbmUgSElCMVAyX0hJQjFQMl9CR0FQX1RSSU1fT1ZFUlJJREVTX21lbV9iZ2FwX21hZ190cmltX292ZXJyaWRlX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwM0ZDMDAwCisKKyNkZWZpbmUgSElCMVAyX0hJQjFQMl9CR0FQX1RSSU1fT1ZFUlJJREVTX21lbV9iZ2FwX21hZ190cmltX292ZXJyaWRlX1MgMTQKKyNkZWZpbmUgSElCMVAyX0hJQjFQMl9CR0FQX1RSSU1fT1ZFUlJJREVTX21lbV9iZ2FwX3RlbXBfdHJpbV9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMjAwMAorCisjZGVmaW5lIEhJQjFQMl9ISUIxUDJfQkdBUF9UUklNX09WRVJSSURFU19tZW1fYmdhcF90ZW1wX3RyaW1fb3ZlcnJpZGVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDFGQzAKKworI2RlZmluZSBISUIxUDJfSElCMVAyX0JHQVBfVFJJTV9PVkVSUklERVNfbWVtX2JnYXBfdGVtcF90cmltX292ZXJyaWRlX1MgNgorI2RlZmluZSBISUIxUDJfSElCMVAyX0JHQVBfVFJJTV9PVkVSUklERVNfbWVtX2JnYXBfcnRyaW1fb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKworI2RlZmluZSBISUIxUDJfSElCMVAyX0JHQVBfVFJJTV9PVkVSUklERVNfbWVtX2JnYXBfcnRyaW1fb3ZlcnJpZGVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMUYKKworI2RlZmluZSBISUIxUDJfSElCMVAyX0JHQVBfVFJJTV9PVkVSUklERVNfbWVtX2JnYXBfcnRyaW1fb3ZlcnJpZGVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fSElCMVAyX0VGVVNFX1JFQURfUkVHMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfSElCMVAyX0VGVVNFX1JFQURfUkVHMF9GVVNFRkFSTV9ST1dfMTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIENvcnJlc3BvbmRzIHRvIFJPV18xMiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGVVNFRkFSTS4gWzc6MF0gOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEQ0RDX0RJR19JTElNX1RSSU1fTE9XVig3OjApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsxNTo4XSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERDRENfQU5BX0lMSU1fVFJJTV9MT1dWKDc6MCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzIzOjE2XSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERDRENfRkxBU0hfSUxJTV9UUklNX0xPV1YoNzowKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMjQ6MjRdIDogRFRIRSBTSEEgRElTQUJMRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMjU6MjVdIDogRFRIRSBERVMgRElTQUJMRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMjY6MjZdIDogRFRIRSBBRVMgRElTQUJMRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMzE6MjddIDogSERfQkdfUlRSSU0gKDQ6MCkKKworI2RlZmluZSBISUIxUDJfSElCMVAyX0VGVVNFX1JFQURfUkVHMF9GVVNFRkFSTV9ST1dfMTJfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fSElCMVAyX0VGVVNFX1JFQURfUkVHMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfSElCMVAyX0VGVVNFX1JFQURfUkVHMV9GVVNFRkFSTV9ST1dfMTNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIENvcnJlc3BvbmRzIHRvIFJPV18xMyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRlVTRUZBUk0uIFs3OjBdIDogSERfQkdfTUFHX1RSSU0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKDc6MCkgWzE0OjhdIDogSERfQkdfVEVNUF9UUklNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICg2OjApIFsxNToxNV0gOiBHUkVZT1VUIEVOQUJMRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEVVRZIENZQ0xJTkcgWzMxOjE2XSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc2VydmVkL0NoZWNrc3VtCisKKyNkZWZpbmUgSElCMVAyX0hJQjFQMl9FRlVTRV9SRUFEX1JFRzFfRlVTRUZBUk1fUk9XXzEzX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0hJQjFQMl9QT1JfVEVTVF9DVFJMIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9ISUIxUDJfUE9SX1RFU1RfQ1RSTF9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkYwMAorCisjZGVmaW5lIEhJQjFQMl9ISUIxUDJfUE9SX1RFU1RfQ1RSTF9yZXNlcnZlZF9TIDgKKyNkZWZpbmUgSElCMVAyX0hJQjFQMl9QT1JfVEVTVF9DVFJMX21lbV9wcmNtX3Bvcl90ZXN0X2N0cmxfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkYKKworI2RlZmluZSBISUIxUDJfSElCMVAyX1BPUl9URVNUX0NUUkxfbWVtX3ByY21fcG9yX3Rlc3RfY3RybF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19ISUJfVElNRVJfU1lOQ19DQUxJQl9DRkcwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19DQUxJQl9DRkcwX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYwMDAwCisKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX0NBTElCX0NGRzBfcmVzZXJ2ZWRfUyAxNgorI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfQ0FMSUJfQ0ZHMF9tZW1fY2ZnX2NhbGliX3RpbWVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGMDAKKworI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfQ0FMSUJfQ0ZHMF9tZW1fY2ZnX2NhbGliX3RpbWVfUyA4CisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19DQUxJQl9DRkcwX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRQorCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19DQUxJQl9DRkcwX05VMV9TIDEKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX0NBTElCX0NGRzBfbWVtX2NmZ19jYWxpYl9zdGFydCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0hJQl9USU1FUl9TWU5DX0NBTElCX0NGRzEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX0NBTElCX0NGRzFfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGMDAwMDAKKworI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfQ0FMSUJfQ0ZHMV9yZXNlcnZlZF9TIDIwCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19DQUxJQl9DRkcxX2Zhc3RfY2FsaWJfY291bnRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwRkZGRkYKKworI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfQ0FMSUJfQ0ZHMV9mYXN0X2NhbGliX2NvdW50X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0hJQl9USU1FUl9TWU5DX0NGRzIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX0NGRzJfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZFMDAKKworI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfQ0ZHMl9yZXNlcnZlZF9TIDkKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX0NGRzJfbWVtX2NmZ19oaWJfdW5sb2FkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAorCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19DRkcyX05VMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGQworCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19DRkcyX05VMV9TIDIKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX0NGRzJfbWVtX2NmZ190c2ZfYWRqIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19DRkcyX21lbV9jZmdfdXBkYXRlX3RzZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0hJQl9USU1FUl9TWU5DX1RTRl9BREpfVkFMIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19UU0ZfQURKX1ZBTF9tZW1fdHNmX2Fkal92YWxfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYKKworI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfVFNGX0FESl9WQUxfbWVtX3RzZl9hZGpfdmFsX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0hJQl9USU1FUl9SVENfR1RTX1RJTUVTVEFNUF9MU1cgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9SVENfR1RTX1RJTUVTVEFNUF9MU1dfcnRjX2d0c190aW1lc3RhbXBfbHN3X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGCisKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9SVENfR1RTX1RJTUVTVEFNUF9MU1dfcnRjX2d0c190aW1lc3RhbXBfbHN3X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0hJQl9USU1FUl9SVENfR1RTX1RJTUVTVEFNUF9NU1cgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9SVENfR1RTX1RJTUVTVEFNUF9NU1dfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRjAwMDAKKworI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1JUQ19HVFNfVElNRVNUQU1QX01TV19yZXNlcnZlZF9TIDE2CisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfUlRDX0dUU19USU1FU1RBTVBfTVNXX3J0Y19ndHNfdGltZXN0YW1wX21zd19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkZGRgorCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfUlRDX0dUU19USU1FU1RBTVBfTVNXX3J0Y19ndHNfdGltZXN0YW1wX21zd19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19ISUJfVElNRVJfUlRDX1dVUF9USU1FU1RBTVBfTFNXIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfUlRDX1dVUF9USU1FU1RBTVBfTFNXX3J0Y193dXBfdGltZXN0YW1wX2xzd19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRgorCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfUlRDX1dVUF9USU1FU1RBTVBfTFNXX3J0Y193dXBfdGltZXN0YW1wX2xzd19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19ISUJfVElNRVJfUlRDX1dVUF9USU1FU1RBTVBfTVNXIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfUlRDX1dVUF9USU1FU1RBTVBfTVNXX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYwMDAwCisKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9SVENfV1VQX1RJTUVTVEFNUF9NU1dfcmVzZXJ2ZWRfUyAxNgorI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1JUQ19XVVBfVElNRVNUQU1QX01TV19ydGNfd3VwX3RpbWVzdGFtcF9tc3dfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYKKworI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1JUQ19XVVBfVElNRVNUQU1QX01TV19ydGNfd3VwX3RpbWVzdGFtcF9tc3dfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fSElCX1RJTUVSX1NZTkNfV0FLRV9PRkZTRVRfRVJSIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19XQUtFX09GRlNFVF9FUlJfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkYwMDAKKworI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfV0FLRV9PRkZTRVRfRVJSX3Jlc2VydmVkX1MgMTIKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX1dBS0VfT0ZGU0VUX0VSUl93dXBfb2Zmc2V0X2Vycm9yX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGCisKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX1dBS0VfT0ZGU0VUX0VSUl93dXBfb2Zmc2V0X2Vycm9yX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX0hJQl9USU1FUl9TWU5DX1RTRl9DVVJSX1ZBTF9MU1cgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX1RTRl9DVVJSX1ZBTF9MU1dfdHNmX2N1cnJfdmFsX2xzd19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRgorCisjZGVmaW5lIEhJQjFQMl9ISUJfVElNRVJfU1lOQ19UU0ZfQ1VSUl9WQUxfTFNXX3RzZl9jdXJyX3ZhbF9sc3dfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fSElCX1RJTUVSX1NZTkNfVFNGX0NVUlJfVkFMX01TVyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfSElCX1RJTUVSX1NZTkNfVFNGX0NVUlJfVkFMX01TV190c2ZfY3Vycl92YWxfbXN3X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGCisKKyNkZWZpbmUgSElCMVAyX0hJQl9USU1FUl9TWU5DX1RTRl9DVVJSX1ZBTF9NU1dfdHNmX2N1cnJfdmFsX21zd19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlIEhJQjFQMl9PX0NNX1NQQVJFIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9DTV9TUEFSRV9DTV9TUEFSRV9PVVRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkYwMDAwMDAKKworI2RlZmluZSBISUIxUDJfQ01fU1BBUkVfQ01fU1BBUkVfT1VUX1MgMjQKKyNkZWZpbmUgSElCMVAyX0NNX1NQQVJFX01FTV9DTV9URVNUX0NUUkxfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBGRjAwMDAKKworI2RlZmluZSBISUIxUDJfQ01fU1BBUkVfTUVNX0NNX1RFU1RfQ1RSTF9TIDE2CisjZGVmaW5lIEhJQjFQMl9DTV9TUEFSRV9NRU1fQ01fU1BBUkVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYKKworI2RlZmluZSBISUIxUDJfQ01fU1BBUkVfTUVNX0NNX1NQQVJFX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX1BPUlBPTF9TUEFSRSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfUE9SUE9MX1NQQVJFX01FTV9QT1JQT0xfU1BBUkVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYKKworI2RlZmluZSBISUIxUDJfUE9SUE9MX1NQQVJFX01FTV9QT1JQT0xfU1BBUkVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fTUVNX0RJR19EQ0RDX0NMS19DT05GSUcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX01FTV9ESUdfRENEQ19DTEtfQ09ORklHX01FTV9ESUdfRENEQ19DTEtfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAorCisjZGVmaW5lIEhJQjFQMl9NRU1fRElHX0RDRENfQ0xLX0NPTkZJR19NRU1fRElHX0RDRENfQ0xLX1BMTEdFTl9PRkZfVElNRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGMAorCisjZGVmaW5lIEhJQjFQMl9NRU1fRElHX0RDRENfQ0xLX0NPTkZJR19NRU1fRElHX0RDRENfQ0xLX1BMTEdFTl9PRkZfVElNRV9TIDQKKyNkZWZpbmUgSElCMVAyX01FTV9ESUdfRENEQ19DTEtfQ09ORklHX01FTV9ESUdfRENEQ19DTEtfUExMR0VOX09OX1RJTUVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYKKworI2RlZmluZSBISUIxUDJfTUVNX0RJR19EQ0RDX0NMS19DT05GSUdfTUVNX0RJR19EQ0RDX0NMS19QTExHRU5fT05fVElNRV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIxUDJfT19NRU1fQU5BX0RDRENfQ0xLX0NPTkZJRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfTUVNX0FOQV9EQ0RDX0NMS19DT05GSUdfTUVNX0FOQV9EQ0RDX0NMS19FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisKKyNkZWZpbmUgSElCMVAyX01FTV9BTkFfRENEQ19DTEtfQ09ORklHX01FTV9BTkFfRENEQ19DTEtfUExMR0VOX09GRl9USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEYwCisKKyNkZWZpbmUgSElCMVAyX01FTV9BTkFfRENEQ19DTEtfQ09ORklHX01FTV9BTkFfRENEQ19DTEtfUExMR0VOX09GRl9USU1FX1MgNAorI2RlZmluZSBISUIxUDJfTUVNX0FOQV9EQ0RDX0NMS19DT05GSUdfTUVNX0FOQV9EQ0RDX0NMS19QTExHRU5fT05fVElNRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwRgorCisjZGVmaW5lIEhJQjFQMl9NRU1fQU5BX0RDRENfQ0xLX0NPTkZJR19NRU1fQU5BX0RDRENfQ0xLX1BMTEdFTl9PTl9USU1FX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX01FTV9GTEFTSF9EQ0RDX0NMS19DT05GSUcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX01FTV9GTEFTSF9EQ0RDX0NMS19DT05GSUdfTUVNX0ZMQVNIX0RDRENfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAKKworI2RlZmluZSBISUIxUDJfTUVNX0ZMQVNIX0RDRENfQ0xLX0NPTkZJR19NRU1fRkxBU0hfRENEQ19DTEtfUExMR0VOX09GRl9USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEYwCisKKyNkZWZpbmUgSElCMVAyX01FTV9GTEFTSF9EQ0RDX0NMS19DT05GSUdfTUVNX0ZMQVNIX0RDRENfQ0xLX1BMTEdFTl9PRkZfVElNRV9TIDQKKyNkZWZpbmUgSElCMVAyX01FTV9GTEFTSF9EQ0RDX0NMS19DT05GSUdfTUVNX0ZMQVNIX0RDRENfQ0xLX1BMTEdFTl9PTl9USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBGCisKKyNkZWZpbmUgSElCMVAyX01FTV9GTEFTSF9EQ0RDX0NMS19DT05GSUdfTUVNX0ZMQVNIX0RDRENfQ0xLX1BMTEdFTl9PTl9USU1FX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX01FTV9QQV9EQ0RDX0NMS19DT05GSUcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX01FTV9QQV9EQ0RDX0NMS19DT05GSUdfTUVNX1BBX0RDRENfQ0xLX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAKKworI2RlZmluZSBISUIxUDJfTUVNX1BBX0RDRENfQ0xLX0NPTkZJR19NRU1fUEFfRENEQ19DTEtfUExMR0VOX09GRl9USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEYwCisKKyNkZWZpbmUgSElCMVAyX01FTV9QQV9EQ0RDX0NMS19DT05GSUdfTUVNX1BBX0RDRENfQ0xLX1BMTEdFTl9PRkZfVElNRV9TIDQKKyNkZWZpbmUgSElCMVAyX01FTV9QQV9EQ0RDX0NMS19DT05GSUdfTUVNX1BBX0RDRENfQ0xLX1BMTEdFTl9PTl9USU1FX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBGCisKKyNkZWZpbmUgSElCMVAyX01FTV9QQV9EQ0RDX0NMS19DT05GSUdfTUVNX1BBX0RDRENfQ0xLX1BMTEdFTl9PTl9USU1FX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX01FTV9TTERPX1ZOV0FfT1ZFUlJJREUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX01FTV9TTERPX1ZOV0FfT1ZFUlJJREVfTUVNX1NMRE9fRU5fVE9QX1ZOV0FfT1ZFUlJJREVfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKworI2RlZmluZSBISUIxUDJfTUVNX1NMRE9fVk5XQV9PVkVSUklERV9NRU1fU0xET19FTl9UT1BfVk5XQV9PVkVSUklERSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjFQMl9PX01FTV9CR0FQX0RVVFlfQ1lDTElOR19FTkFCTEVfT1ZFUlJJREUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX01FTV9CR0FQX0RVVFlfQ1lDTElOR19FTkFCTEVfT1ZFUlJJREVfTUVNX0JHQVBfRFVUWV9DWUNMSU5HX09WRVJSSURFX0NUUkwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgSElCMVAyX01FTV9CR0FQX0RVVFlfQ1lDTElOR19FTkFCTEVfT1ZFUlJJREVfTUVNX0JHQVBfRFVUWV9DWUNMSU5HX09WRVJSSURFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fTUVNX0hJQl9GU01fREVCVUcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCMVAyX01FTV9ISUJfRlNNX0RFQlVHX1NSQU1fUFNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA3MDAKKworI2RlZmluZSBISUIxUDJfTUVNX0hJQl9GU01fREVCVUdfU1JBTV9QU19TIDgKKyNkZWZpbmUgSElCMVAyX01FTV9ISUJfRlNNX0RFQlVHX0FOQV9EQ0RDX1BTX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEYwCisKKyNkZWZpbmUgSElCMVAyX01FTV9ISUJfRlNNX0RFQlVHX0FOQV9EQ0RDX1BTX1MgNAorI2RlZmluZSBISUIxUDJfTUVNX0hJQl9GU01fREVCVUdfRElHX0RDRENfUFNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYKKworI2RlZmluZSBISUIxUDJfTUVNX0hJQl9GU01fREVCVUdfRElHX0RDRENfUFNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fTUVNX1NMRE9fVk5XQV9TV19DVFJMIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9NRU1fU0xET19WTldBX1NXX0NUUkxfTUVNX1NMRE9fVk5XQV9TV19DVFJMX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMEZGRkZGCisKKyNkZWZpbmUgSElCMVAyX01FTV9TTERPX1ZOV0FfU1dfQ1RSTF9NRU1fU0xET19WTldBX1NXX0NUUkxfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fTUVNX1NMRE9fV0VBS19QUk9DRVNTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9NRU1fU0xET19XRUFLX1BST0NFU1NfTUVNX1NMRE9fV0VBS19QUk9DRVNTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fTUVNX1BBX0RDRENfT1ZfVVZfU1RBVFVTIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjFQMl9NRU1fUEFfRENEQ19PVl9VVl9TVEFUVVNfZGNkY19wYV9vdl9wcm90X291dF9sb3d2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCMVAyX09fTUVNX0NNX1RFU1RfTU9ERSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIxUDJfTUVNX0NNX1RFU1RfTU9ERV9tZW1fY21fdGVzdF9tb2RlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisKKworCisjZW5kaWYgLy8gX19IV19ISUIxUDJfSF9fCmRpZmYgLS1naXQgYS9leHQvaGFsL3RpL2NjMzIyMHNkay9pbmMvaHdfaGliM3AzLmggYi9leHQvaGFsL3RpL2NjMzIyMHNkay9pbmMvaHdfaGliM3AzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJjZGU1YgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19oaWIzcDMuaApAQCAtMCwwICsxLDExMzYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLworICoKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqICBhcmUgbWV0OgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqICAgIE5laXRoZXIgdGhlIG5hbWUgb2YgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgX19IV19ISUIzUDNfSF9fCisjZGVmaW5lIF9fSFdfSElCM1AzX0hfXworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIEhJQjNQMyByZWdpc3RlciBvZmZzZXRzLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9SRVEgICAgMHgwMDAwMDAwMAorI2RlZmluZSBISUIzUDNfT19NRU1fSElCX1JUQ19USU1FUl9FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9SVENfVElNRVJfUkVTRVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4CisKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9SVENfVElNRVJfUkVBRCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEMKKworI2RlZmluZSBISUIzUDNfT19NRU1fSElCX1JUQ19USU1FUl9MU1cgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCisKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9SVENfVElNRVJfTVNXIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxNAorCisjZGVmaW5lIEhJQjNQM19PX01FTV9ISUJfUlRDX1dBS0VfRU4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDE4CisKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9SVENfV0FLRV9MU1dfQ09ORiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMUMKKworI2RlZmluZSBISUIzUDNfT19NRU1fSElCX1JUQ19XQUtFX01TV19DT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMAorCisjZGVmaW5lIEhJQjNQM19PX01FTV9JTlRfT1NDX0NPTkYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDJDCisKKyNkZWZpbmUgSElCM1AzX09fTUVNX1hUQUxfT1NDX0NPTkYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDM0CisKKyNkZWZpbmUgSElCM1AzX09fTUVNX0JHQVBfUEFSQU1FVEVSUzAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDM4CisKKyNkZWZpbmUgSElCM1AzX09fTUVNX0JHQVBfUEFSQU1FVEVSUzEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDNDCisKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9ERVRFQ1RJT05fU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0MAorCisjZGVmaW5lIEhJQjNQM19PX01FTV9ISUJfTUlTQ19DT05UUk9MUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDQKKworI2RlZmluZSBISUIzUDNfT19NRU1fSElCX0NPTkZJRyAweDAwMDAwMDUwCisjZGVmaW5lIEhJQjNQM19PX01FTV9ISUJfUlRDX0lSUV9FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDU0CisKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9SVENfSVJRX0xTV19DT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA1OAorCisjZGVmaW5lIEhJQjNQM19PX01FTV9ISUJfUlRDX0lSUV9NU1dfQ09ORiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNUMKKworI2RlZmluZSBISUIzUDNfT19NRU1fSElCX1VBUlRfQ09ORiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MDAKKworI2RlZmluZSBISUIzUDNfT19NRU1fR1BJT19XQUtFX0VOIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQwNAorCisjZGVmaW5lIEhJQjNQM19PX01FTV9HUElPX1dBS0VfQ09ORiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MDgKKworI2RlZmluZSBISUIzUDNfT19NRU1fUEFEX09FTl9SRVQzM19DT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQwQworCisjZGVmaW5lIEhJQjNQM19PX01FTV9VQVJUX1JUU19PRU5fUkVUMzNfQ09ORiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MTAKKworI2RlZmluZSBISUIzUDNfT19NRU1fSlRBR19DT05GICAweDAwMDAwNDE0CisjZGVmaW5lIEhJQjNQM19PX01FTV9ISUJfUkVHMCAgIDB4MDAwMDA0MTgKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9SRUcxICAgMHgwMDAwMDQxQworI2RlZmluZSBISUIzUDNfT19NRU1fSElCX1JFRzIgICAweDAwMDAwNDIwCisjZGVmaW5lIEhJQjNQM19PX01FTV9ISUJfUkVHMyAgIDB4MDAwMDA0MjQKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0NUMKKworI2RlZmluZSBISUIzUDNfT19NRU1fSElCX1NFUVVFTkNFUl9DRkcxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQ2MAorCisjZGVmaW5lIEhJQjNQM19PX01FTV9ISUJfTUlTQ19DT05GSUcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDY0CisKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9XQUtFX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0NjgKKworI2RlZmluZSBISUIzUDNfT19NRU1fSElCX0xQRFNfR1BJT19TRUwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDZDCisKKyNkZWZpbmUgSElCM1AzX09fTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0NzAKKworI2RlZmluZSBISUIzUDNfT19ISUJBTkFfU1BBUkVfTE9XViBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0NzQKKworI2RlZmluZSBISUIzUDNfT19ISUJfVE1VWF9DVFJMICAweDAwMDAwNDc4CisjZGVmaW5lIEhJQjNQM19PX0hJQl8xUDJfMVA4X0xET19UUklNIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQ3QworCisjZGVmaW5lIEhJQjNQM19PX0hJQl9DT01QX1RSSU0gIDB4MDAwMDA0ODAKKyNkZWZpbmUgSElCM1AzX09fSElCX0VOX1RTICAgICAgMHgwMDAwMDQ4NAorI2RlZmluZSBISUIzUDNfT19ISUJfMVA4Vl9ERVRfRU4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDg4CisKKyNkZWZpbmUgSElCM1AzX09fSElCX1ZCQVRfTU9OX0VOIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQ4QworCisjZGVmaW5lIEhJQjNQM19PX0hJQl9OSElCX0VOQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0OTAKKworI2RlZmluZSBISUIzUDNfT19ISUJfVUFSVF9SVFNfU1dfRU5BQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQ5NAorCisKKworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9SRVEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUkVRX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRTAwCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUkVRX3Jlc2VydmVkX1MgOQorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SRVFfTlUxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMUZDCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUkVRX05VMV9TIDIKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUkVRX21lbV9oaWJfY2xrX2Rpc2FibGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyAxIC0gU3BlY2lmaWVzIHRoYXQgdGhlIEhpYmVyYW50ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlIGlzIHdpdGhvdXQgY2xvY2tzIDsgMCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNwZWNpZmllZCB0aGF0IHRoZSBIaWJlcm5hdGUgbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyB3aXRoIGNsb2NrcyBUaGlzIHJlZ2lzdGVyIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmUgcmVzZXQgZHVyaW5nIEhpYmVybmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtV08tQ2xrcyBtb2RlIChidXQgbm90IGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIaWJlcm5hdGUtVy1DbGtzIG1vZGUpLgorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JFUV9tZW1faGliX3JlcSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBSZXF1ZXN0IGZvciBoaWJlcm5hdGUgbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoVGhpcyBpcyBhbiBhdXRvLWNsZWFyIGJpdCkgOyAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG9ub3QgcmVxdWVzdCBmb3IgaGliZXJuYXRlIG1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyByZWdpc3RlciB3aWxsIGJlIHJlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBIaWJlcm5hdGUgLVdPLUNsa3MgbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoYnV0IG5vdCBkdXJpbmcgSGliZXJuYXRlLVctQ2xrcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlKS4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9ISUJfUlRDX1RJTUVSX0VOQUJMRSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfVElNRVJfRU5BQkxFX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZFCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX1RJTUVSX0VOQUJMRV9yZXNlcnZlZF9TIDEKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX1RJTUVSX0VOQUJMRV9tZW1faGliX3J0Y190aW1lcl9lbmFibGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gRW5hYmxlIHRoZSBSVEMgdGltZXIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhcnQgcnVubmluZyA7IDAgLSBLZWVwIHRoZSBSVEMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGltZXIgZGlzYWJsZWQgVGhpcyByZWdpc3RlciB3aWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlIHJlc2V0IGR1cmluZyBIaWJlcm5hdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLVdPLUNsa3MgbW9kZSAoYnV0IG5vdCBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGliZXJuYXRlLVctQ2xrcyBtb2RlKS4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9ISUJfUlRDX1RJTUVSX1JFU0VUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JUQ19USU1FUl9SRVNFVF9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRQorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JUQ19USU1FUl9SRVNFVF9yZXNlcnZlZF9TIDEKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX1RJTUVSX1JFU0VUX21lbV9oaWJfcnRjX3RpbWVyX3Jlc2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIFJlc2V0IHRoZSBSVEMgdGltZXIgOyAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG9ub3QgcmVzZXQgdGhlIFJUQyB0aW1lci4gVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBhbiBhdXRvLWNsZWFyIGJpdC4gVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciB3aWxsIGJlIHJlc2V0IGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIaWJlcm5hdGUgLVdPLUNsa3MgbW9kZSAoYnV0IG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgSGliZXJuYXRlLVctQ2xrcyBtb2RlKS4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9ISUJfUlRDX1RJTUVSX1JFQUQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX1RJTUVSX1JFQURfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkUKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfVElNRVJfUkVBRF9yZXNlcnZlZF9TIDEKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX1RJTUVSX1JFQURfbWVtX2hpYl9ydGNfdGltZXJfcmVhZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBMYXRjaCB0aGUgcnVubmluZyBSVEMgdGltZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50byBsb2NhbCByZWdpc3RlcnMuIEFmdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb2dyYW1taW5nIHRoaXMgYml0IHRvIDEsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGL3cgY2FuIHJlYWQgdGhlIGxhdGNoZWQgUlRDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRpbWVyIHZhbHVlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1FTV9ISUJfUlRDX1RJTUVSX0xTVyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNX0hJQl9SVENfVElNRVJfTVNXLiBCZWZvcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEYvdyAoQVBQUyBvciBOV1ApIHdhbnRzIHRvIHJlYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIFJUQy1UaW1lciwgaXQgaGFzIHRvIHByb2dyYW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBiaXQgdG8gMSwgdGhlbiBvbmx5IHJlYWQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1TVyBhbmQgTFNXIHZhbHVlcy4gVGhpcyBpcyBhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhdXRvLWNsZWFyIGJpdC4gVGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIHJlc2V0IGR1cmluZyBIaWJlcm5hdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLVdPLUNsa3MgbW9kZSAoYnV0IG5vdCBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGliZXJuYXRlLVctQ2xrcyBtb2RlKS4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9ISUJfUlRDX1RJTUVSX0xTVyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfVElNRVJfTFNXX2hpYl9ydGNfdGltZXJfbHN3X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBMb3dlciAzMmIgdmFsdWUgb2YgdGhlIGxhdGNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUlRDLVRpbWVyLgorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JUQ19USU1FUl9MU1dfaGliX3J0Y190aW1lcl9sc3dfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9SVENfVElNRVJfTVNXIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JUQ19USU1FUl9NU1dfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRjAwMDAKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfVElNRVJfTVNXX3Jlc2VydmVkX1MgMTYKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX1RJTUVSX01TV19oaWJfcnRjX3RpbWVyX21zd19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkZGRiAgLy8gVXBwZXIgMzJiIHZhbHVlIG9mIHRoZSBsYXRjaGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJUQy1UaW1lci4KKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfVElNRVJfTVNXX2hpYl9ydGNfdGltZXJfbXN3X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9ISUJfUlRDX1dBS0VfRU4gcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX1dBS0VfRU5fcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkUKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfV0FLRV9FTl9yZXNlcnZlZF9TIDEKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX1dBS0VfRU5fbWVtX2hpYl9ydGNfd2FrZV9lbiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBFbmFibGUgdGhlIFJUQyB0aW1lciBiYXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3YWtldXAgZHVyaW5nIEhpYmVybmF0ZSBtb2RlIDsgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtIERpc2FibGUgdGhlIFJUQyB0aW1lciBiYXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3YWtldXAgZHVyaW5nIEhpYmVybmF0ZSBtb2RlIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgd2lsbCBiZSByZXNldCBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGliZXJuYXRlLVdPLUNsa3MgbW9kZSAoYnV0IG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJpbmcgSGliZXJuYXRlLVctQ2xrcyBtb2RlKS4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9ISUJfUlRDX1dBS0VfTFNXX0NPTkYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX1dBS0VfTFNXX0NPTkZfbWVtX2hpYl9ydGNfd2FrZV9sc3dfY29uZl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gQ29uZmlndXJhdGlvbiBmb3IgUlRDLVRpbWVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdha2V1cCAoTG93ZXIgMzJiIHdvcmQpCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX1dBS0VfTFNXX0NPTkZfbWVtX2hpYl9ydGNfd2FrZV9sc3dfY29uZl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fSElCX1JUQ19XQUtFX01TV19DT05GIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JUQ19XQUtFX01TV19DT05GX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYwMDAwCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX1dBS0VfTVNXX0NPTkZfcmVzZXJ2ZWRfUyAxNgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfV0FLRV9NU1dfQ09ORl9tZW1faGliX3J0Y193YWtlX21zd19jb25mX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGICAvLyBDb25maWd1cmF0aW9uIGZvciBSVEMtVGltZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2FrZXVwIChVcHBlciAxNmIgd29yZCkKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfV0FLRV9NU1dfQ09ORl9tZW1faGliX3J0Y193YWtlX21zd19jb25mX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9JTlRfT1NDX0NPTkYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9JTlRfT1NDX0NPTkZfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRjAwMDAKKworI2RlZmluZSBISUIzUDNfTUVNX0lOVF9PU0NfQ09ORl9yZXNlcnZlZF9TIDE2CisjZGVmaW5lIEhJQjNQM19NRU1fSU5UX09TQ19DT05GX2NtX2Nsa19nb29kXzMya19pbnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA4MDAwICAvLyAxIC0gSW50ZXJuYWwgMzJrSHogT3NjaWxsYXRvciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWxpZCA7IDAgLSBJbnRlcm5hbCAzMmsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3NjaWxsYXRvciBjbGsgaXMgbm90IHZhbGlkCisKKyNkZWZpbmUgSElCM1AzX01FTV9JTlRfT1NDX0NPTkZfbWVtX2NtX2ludG9zY18zMmtfc3BhcmVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDdFMDAKKworI2RlZmluZSBISUIzUDNfTUVNX0lOVF9PU0NfQ09ORl9tZW1fY21faW50b3NjXzMya19zcGFyZV9TIDkKKyNkZWZpbmUgSElCM1AzX01FTV9JTlRfT1NDX0NPTkZfbWVtX2NtX2VuX2ludG9zY18zMmtfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIFdoZW4gMSwgdGhlIElOVF8zMktfT1NDX0VOIGNvbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gYml0IFswXSBvZiB0aGlzIHJlZ2lzdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbHNlIGNvbWVzIGZyb20gdGhlIEZTTS4gVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciB3aWxsIGJlIHJlc2V0IGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIaWJlcm5hdGUtV08tQ2xrcyBtb2RlIChidXQgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBIaWJlcm5hdGUtVy1DbGtzIG1vZGUpCisKKyNkZWZpbmUgSElCM1AzX01FTV9JTlRfT1NDX0NPTkZfTlUxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4MAorCisjZGVmaW5lIEhJQjNQM19NRU1fSU5UX09TQ19DT05GX21lbV9jbV9pbnRvc2NfMzJrX3RyaW1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwN0UKKworI2RlZmluZSBISUIzUDNfTUVNX0lOVF9PU0NfQ09ORl9tZW1fY21faW50b3NjXzMya190cmltX1MgMQorI2RlZmluZSBISUIzUDNfTUVNX0lOVF9PU0NfQ09ORl9tZW1fY21fZW5faW50b3NjXzMyayBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIE92ZXJyaWRlIHZhbHVlIGZvciBJTlRfT1NDX0VOLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIG9ubHkgd2hlbiBiaXQgWzNdIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgcmVnaXN0ZXIgaXMgc2V0IHRvIDEuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fWFRBTF9PU0NfQ09ORiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX1hUQUxfT1NDX0NPTkZfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGMDAwMDAKKworI2RlZmluZSBISUIzUDNfTUVNX1hUQUxfT1NDX0NPTkZfcmVzZXJ2ZWRfUyAyMAorI2RlZmluZSBISUIzUDNfTUVNX1hUQUxfT1NDX0NPTkZfbWVtX2NtX2VuX3NsaV8zMmtfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwODAwMDAgIC8vIFdoZW4gMSwgdGhlIFNMSUNFUl9FTiBjb21lcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCBbMTBdIG9mIHRoaXMgcmVnaXN0ZXIsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29tZXMgZnJvbSB0aGUgRlNNLgorCisjZGVmaW5lIEhJQjNQM19NRU1fWFRBTF9PU0NfQ09ORl9tZW1fY21fZW5feHRhbF8zMmtfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNDAwMDAgIC8vIFdoZW4gMSwgdGhlIFhUQUxfRU4gY29tZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgWzBdIG9mIHRoaXMgcmVnaXN0ZXIsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29tZXMgZnJvbSB0aGUgRlNNLgorCisjZGVmaW5lIEhJQjNQM19NRU1fWFRBTF9PU0NfQ09ORl9jbV9jbGtfZ29vZF94dGFsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAyMDAwMCAgLy8gMSAtIFhUQUwgQ2xrIGlzIGdvb2QgOyAwIC0gWFRBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbGsgaXMgeWV0IHRvIGJlIHZhbGlkLgorCisjZGVmaW5lIEhJQjNQM19NRU1fWFRBTF9PU0NfQ09ORl9tZW1fY21feHRhbF90cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDFGODAwCisKKyNkZWZpbmUgSElCM1AzX01FTV9YVEFMX09TQ19DT05GX21lbV9jbV94dGFsX3RyaW1fUyAxMQorI2RlZmluZSBISUIzUDNfTUVNX1hUQUxfT1NDX0NPTkZfbWVtX2NtX2VuX3NsaV8zMmsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDAwICAvLyBTTElDRVJfRU4gT3ZlcnJpZGUgdmFsdWUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhYmxlIG9ubHkgd2hlbiBiaXQgWzE5XSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHJlZ2lzdGVyIGlzIHNldCB0byAxLgorCisjZGVmaW5lIEhJQjNQM19NRU1fWFRBTF9PU0NfQ09ORl9tZW1fY21fc2xpXzMya190cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMzgwCisKKyNkZWZpbmUgSElCM1AzX01FTV9YVEFMX09TQ19DT05GX21lbV9jbV9zbGlfMzJrX3RyaW1fUyA3CisjZGVmaW5lIEhJQjNQM19NRU1fWFRBTF9PU0NfQ09ORl9tZW1fY21fZnJlZl8zMmtfc2xpY2VyX2l0cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDcwCisKKyNkZWZpbmUgSElCM1AzX01FTV9YVEFMX09TQ19DT05GX21lbV9jbV9mcmVmXzMya19zbGljZXJfaXRyaW1fUyA0CisjZGVmaW5lIEhJQjNQM19NRU1fWFRBTF9PU0NfQ09ORl9tZW1fY21fZW5fZnJlZl8zMmtfc2xpY2VyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOAorCisjZGVmaW5lIEhJQjNQM19NRU1fWFRBTF9PU0NfQ09ORl9tZW1fY21fZW5faW5wdXRfc2Vuc2VfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDYKKworI2RlZmluZSBISUIzUDNfTUVNX1hUQUxfT1NDX0NPTkZfbWVtX2NtX2VuX2lucHV0X3NlbnNlX1MgMQorI2RlZmluZSBISUIzUDNfTUVNX1hUQUxfT1NDX0NPTkZfbWVtX2NtX2VuX3h0YWxfMzJrIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gWFRBTF9FTiBPdmVycmlkZSB2YWx1ZSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGxpY2FibGUgb25seSB3aGVuIGJpdCBbMThdIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgcmVnaXN0ZXIgaXMgc2V0IHRvIDEuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fQkdBUF9QQVJBTUVURVJTMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0JHQVBfUEFSQU1FVEVSUzBfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGODAwMDAKKworI2RlZmluZSBISUIzUDNfTUVNX0JHQVBfUEFSQU1FVEVSUzBfcmVzZXJ2ZWRfUyAxOQorI2RlZmluZSBISUIzUDNfTUVNX0JHQVBfUEFSQU1FVEVSUzBfbWVtX2VuX3NlcSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNDAwMDAKKworI2RlZmluZSBISUIzUDNfTUVNX0JHQVBfUEFSQU1FVEVSUzBfbWVtX3Zib2s0YmdfY29tcF90cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDFDMDAwCisKKyNkZWZpbmUgSElCM1AzX01FTV9CR0FQX1BBUkFNRVRFUlMwX21lbV92Ym9rNGJnX2NvbXBfdHJpbV9TIDE0CisjZGVmaW5lIEhJQjNQM19NRU1fQkdBUF9QQVJBTUVURVJTMF9tZW1fYmdhcF9lbl92YmF0X29rXzRiZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDEwMDAKKworI2RlZmluZSBISUIzUDNfTUVNX0JHQVBfUEFSQU1FVEVSUzBfbWVtX2JnYXBfZW5fdmJvazRiZ19jb21wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fQkdBUF9QQVJBTUVURVJTMF9tZW1fYmdhcF9lbl92Ym9rNGJnX2NvbXBfcmVmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fQkdBUF9QQVJBTUVURVJTMF9tZW1fYmdhcF9zcGFyZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDNGRgorCisjZGVmaW5lIEhJQjNQM19NRU1fQkdBUF9QQVJBTUVURVJTMF9tZW1fYmdhcF9zcGFyZV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fQkdBUF9QQVJBTUVURVJTMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0JHQVBfUEFSQU1FVEVSUzFfcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RTAwMDAwMDAKKworI2RlZmluZSBISUIzUDNfTUVNX0JHQVBfUEFSQU1FVEVSUzFfcmVzZXJ2ZWRfUyAyOQorI2RlZmluZSBISUIzUDNfTUVNX0JHQVBfUEFSQU1FVEVSUzFfbWVtX2JnYXBfYWN0X2lyZWZfaXRyaW1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUYwMDAwMDAKKworI2RlZmluZSBISUIzUDNfTUVNX0JHQVBfUEFSQU1FVEVSUzFfbWVtX2JnYXBfYWN0X2lyZWZfaXRyaW1fUyAyNAorI2RlZmluZSBISUIzUDNfTUVNX0JHQVBfUEFSQU1FVEVSUzFfbWVtX2JnYXBfZW5fYWN0X2lyZWYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4CisKKyNkZWZpbmUgSElCM1AzX01FTV9CR0FQX1BBUkFNRVRFUlMxX21lbV9iZ2FwX2VuX3YyaSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBISUIzUDNfTUVNX0JHQVBfUEFSQU1FVEVSUzFfbWVtX2JnYXBfZW5fY2FwX3N3IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEhJQjNQM19NRU1fQkdBUF9QQVJBTUVURVJTMV9tZW1fYmdhcF9lbiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9ISUJfREVURUNUSU9OX1NUQVRVUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9ERVRFQ1RJT05fU1RBVFVTX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRjgwCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfREVURUNUSU9OX1NUQVRVU19yZXNlcnZlZF9TIDcKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfREVURUNUSU9OX1NUQVRVU19oaWJfZm9yY2VkX2FuYV9zdGF0dXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQwICAvLyAxIC0gMS44IFYgc3VwcGx5IGZvcmNlZCBtb2RlLgorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX0RFVEVDVElPTl9TVEFUVVNfaGliX2ZvcmNlZF9mbGFzaF9zdGF0dXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0ICAvLyAxIC0gMy4zIFYgc3VwcGx5IGZvcmNlZCBtb2RlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGbGFzaCBzdXBwbHkKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9ERVRFQ1RJT05fU1RBVFVTX2hpYl9leHRfY2xrX2RldF9vdXRfc3RhdHVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIEZvcmNlZCBjbG9jayBtb2RlCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfREVURUNUSU9OX1NUQVRVU19oaWJfeHRhbF9kZXRfb3V0X3N0YXR1cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIDEgLSBYVEFMIGNsb2NrIG1vZGUKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9ISUJfTUlTQ19DT05UUk9MUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9NSVNDX0NPTlRST0xTX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGODAwCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfTUlTQ19DT05UUk9MU19yZXNlcnZlZF9TIDExCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX01JU0NfQ09OVFJPTFNfbWVtX2hpYl9lbl9wb2tfcG9yX2NvbXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDAwCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfTUlTQ19DT05UUk9MU19tZW1faGliX2VuX3Bva19wb3JfY29tcF9yZWYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMjAwCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfTUlTQ19DT05UUk9MU19tZW1faGliX3Bva19wb3JfY29tcF90cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMUMwCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfTUlTQ19DT05UUk9MU19tZW1faGliX3Bva19wb3JfY29tcF90cmltX1MgNgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9NSVNDX0NPTlRST0xTX05VMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9NSVNDX0NPTlRST0xTX21lbV9oaWJfZmxhc2hfZGV0X2VuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMAorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX01JU0NfQ09OVFJPTFNfbWVtX2hpYl9lbl90bXV4IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9DT05GSUcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfQ09ORklHX1RPUF9NVVhfQ1RSTF9TT1BfU1BJT19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRjAwMDAwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX0NPTkZJR19UT1BfTVVYX0NUUkxfU09QX1NQSU9fUyAyNAorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9DT05GSUdfRU5fQU5BX0RJR19TSEFSRUQzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA4MDAwMCAgLy8gMSAtIEVuYWJsZSBWRERfRkxBU0hfSU5EUF9QQUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGRpZ2l0YWwgcGF0aCAoU0hBUkVENCkgOyAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGlzYWJsZSBWRERfRkxBU0hfSU5EUF9QQUQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpZ2l0YWwgcGF0aCAoU0hBUkVENCkgOyBCZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJvZ3JhbW1pbmcgdGhpcyBiaXQgdG8gMSwgZW5zdXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgdGhlIGRldmljZSBpcyBpbiBGT1JDRUQgMy4zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN1cHBseSBNb2RlLCB3aGljaCBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5mZXJyZWQgZnJvbSB0aGUgcmVnaXN0ZXIgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNRU1fSElCX0RFVEVDVElPTl9TVEFUVVMgOiAweDAwNDAKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9DT05GSUdfRU5fQU5BX0RJR19TSEFSRUQyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA0MDAwMCAgLy8gMSAtIEVuYWJsZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVkREX0ZCX0dQSU9fTVVYX1BBRCBmb3IgZGlnaXRhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXRoIChTSEFSRUQzKSA7IDAgLSBEaXNhYmxlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWRERfRkJfR1BJT19NVVhfUEFEIGZvciBkaWdpdGFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhdGggKFNIQVJFRDMpIDsgVGhpcyBwaW4gY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgb25seSBpbiBtb2RlcyBvdGhlciB0aGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNPUCgiMTExIikKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9DT05GSUdfRU5fQU5BX0RJR19TSEFSRUQxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAyMDAwMCAgLy8gMSAtIEVuYWJsZSB0aGUgUE1fVEVTVF9QQUQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpZ2l0YWwgR1BJTyBwYXRoIChTSEFSRUQyKSA7IDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEaXNhYmxlIHRoZSBQTV9URVNUX1BBRCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlnaXRhbCBHUElPIHBhdGggKFNIQVJFRDIpIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGluIGNhbiBiZSB1c2VkIGZvciBkaWdpdGFsIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gbW9kZXMgb3RoZXIgdGhlbiBTT1AtMTExCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfQ09ORklHX0VOX0FOQV9ESUdfU0hBUkVEMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAgIC8vIDEgLSBFbmFibGUgdGhlIFhUQUxfTiBwaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlnaXRhbCBHUElPIHBhdGggKFNIQVJFRDEpOyAwIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGlzYWJsZSB0aGUgWFRBTF9OIHBpbiBkaWdpdGFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gcGF0aCAoU0hBUkVEMSkuIEJlZm9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm9ncmFtbWluZyB0aGlzIGJpdCB0byAxLCBlbnN1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCB0aGUgZGV2aWNlIGlzIGluIEZPUkNFRCBDTEsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTW9kZSwgd2hpY2ggY2FuIGluZmVycmVkIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNX0hJQl9ERVRFQ1RJT05fU1RBVFVTIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMHgwMDQwLgorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX0NPTkZJR19tZW1faGliX3h0YWxfZW5hYmxlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCAgLy8gMSAtIEVuYWJsZSB0aGUgWFRBTCBDbG9jayA7IDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb25vdCBlbmFibGUgdGhlIFhUQUwgQ2xvY2suIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYml0IGhhcyB0byBiZSBwcm9ncmFtbWVkIHRvIDEgKGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFQUFMgRGV2aW5pdCBGL3cpLCBkdXJpbmcgZXhpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIE9GRiBvciBIaWJfd29fY2xrcyBtb2RlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgY2hlY2tpbmcgaWYgdGhlIHNsb3dfY2xrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGUgaXMgWFRBTF9DTEsgbW9kZS4gT25jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIHRoZSBYVEFMIHdpbGwgYmUgZGlzYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBhZnRlciBlbnRlcmluZyBISUJfV09fQ0xLUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlLiBUaGlzIHJlZ2lzdGVyIHdpbGwgYmUgcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVyaW5nIEhpYmVybmF0ZSAtV08tQ2xrcyBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChidXQgbm90IGR1cmluZyBIaWJlcm5hdGUtVy1DbGtzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGUpLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9SVENfSVJRX0VOQUJMRSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfSVJRX0VOQUJMRV9ISUJfUlRDX0lSUV9FTkFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gRW5hYmxlIHRoZSBISUIgUlRDIC0gSVJRIDsgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtIERpc2FibGUgdGhlIEhJQiBSVEMgLSBJUlEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9ISUJfUlRDX0lSUV9MU1dfQ09ORiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfSVJRX0xTV19DT05GX0hJQl9SVENfSVJRX0xTV19DT05GX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBDb25maWd1cmF0aW9uIGZvciBMU1cgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJUQy1UaW1lc3RhbXAgYXQgd2hpY2ggaW50ZXJydXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gYmUgZ2VuZXJhdGVkCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX0lSUV9MU1dfQ09ORl9ISUJfUlRDX0lSUV9MU1dfQ09ORl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fSElCX1JUQ19JUlFfTVNXX0NPTkYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUlRDX0lSUV9NU1dfQ09ORl9ISUJfUlRDX0lSUV9NU1dfQ09ORl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkZGRiAgLy8gQ29uZmlndXJhdGlvbiBmb3IgTVNXIG9mIHRocgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSVEMtVGltZXN0YW1wIGF0IHdoaWNoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQgbmVlZCB0byBiZSBnZW5lcmF0ZWQKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9SVENfSVJRX01TV19DT05GX0hJQl9SVENfSVJRX01TV19DT05GX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9ISUJfVUFSVF9DT05GIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1VBUlRfQ09ORl9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRQorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1VBUlRfQ09ORl9yZXNlcnZlZF9TIDEKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfVUFSVF9DT05GX21lbV9oaWJfdWFydF93YWtlX2VuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gMSAtIEVuYWJsZSB0aGUgVUFSVC1BdXRvbm9tb3VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGUgd2FrZXVwIGR1cmluZyBIaWJlcm5hdGUgbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA7IFRoaXMgaXMgYW4gYXV0by1jbGVhciBiaXQsIG9uY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJvZ3JhbW1lZCB0byAxLCBpdCB3aWxsIGxhdGNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50byBhbiBpbnRlcm5hbCByZWdpc3RlciB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1haW4gYXNzZXJ0ZWQgdW50aWwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhpYi13YWtldXAgaXMgaW5pdGlhdGVkLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0dQSU9fV0FLRV9FTiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0dQSU9fV0FLRV9FTl9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkYwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fR1BJT19XQUtFX0VOX3Jlc2VydmVkX1MgOAorI2RlZmluZSBISUIzUDNfTUVNX0dQSU9fV0FLRV9FTl9tZW1fZ3Bpb193YWtlX2VuX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEZGICAvLyAxIC0gRW5hYmxlIHRoZSBHUElPLUF1dG9ub21vdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kZSB3YWtldXAgZHVyaW5nIEhpYmVybmF0ZSBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDsgVGhpcyBpcyBhbiBhdXRvLWNsZWFyIGJpdCwgb25jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm9ncmFtbWVkIHRvIDEsIGl0IHdpbGwgbGF0Y2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRvIGFuIGludGVybmFsIHJlZ2lzdGVyIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbWFpbiBhc3NlcnRlZCB1bnRpbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGliLXdha2V1cCBpcyBpbml0aWF0ZWQuCisKKyNkZWZpbmUgSElCM1AzX01FTV9HUElPX1dBS0VfRU5fbWVtX2dwaW9fd2FrZV9lbl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fR1BJT19XQUtFX0NPTkYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9HUElPX1dBS0VfQ09ORl9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGMDAwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fR1BJT19XQUtFX0NPTkZfcmVzZXJ2ZWRfUyAxNgorI2RlZmluZSBISUIzUDNfTUVNX0dQSU9fV0FLRV9DT05GX21lbV9ncGlvX3dha2VfY29uZl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkZGRiAgLy8gQ29uZmlndXJhdGlvbiB0byBzYXkgd2hldGhlciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyB3YWtldXAgaGFzIHRvIGhhcHBlbiBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXZlbDAgb3IgZmFsbGluZy1lZGdlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2l2ZW4gZ3JvdXAuIOKAnDAw4oA/IOKAkyBMZXZlbDAg4oCcMDHigD8g4oCTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldmVsMSDigJwxMOKAPy0gRmFsbC1lZGdlIOKAnDEx4oA/LQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSaXNlLWVkZ2UgWzE6MF0g4oCTIENvbmYgZm9yIEdQSU8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFszOjJdIOKAkyBDb25mIGZvciBHUElPMSBbNTo0XSDigJMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29uZiBmb3IgR1BJTzIgWzc6Nl0g4oCTIENvbmYgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8zIFs5OjhdIOKAkyBDb25mIGZvciBHUElPNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMTE6MTBdIOKAkyBDb25mIGZvciBHUElPNSBbMTM6MTJdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOKAkyBDb25mIGZvciBHUElPNgorCisjZGVmaW5lIEhJQjNQM19NRU1fR1BJT19XQUtFX0NPTkZfbWVtX2dwaW9fd2FrZV9jb25mX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX01FTV9QQURfT0VOX1JFVDMzX0NPTkYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9QQURfT0VOX1JFVDMzX0NPTkZfbWVtX3BhZF9vZW5fcmV0MzNfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQgIC8vIDEgLSBPdmVycmlkZSB0aGUgT0VOMzMgYW5kIFJFVDMzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRyb2xzIG9mIEdQSU9zIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTT1AtQm9vdGRlYnVnIG1vZGUgOyAwIC0gRG9ub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcnJpZGUgdGhlIE9FTjMzIGFuZCBSRVQzMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250cm9scyBvZiBHUElPcyBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU09QLUJvb3RkZWJ1ZyBtb2RlCisKKyNkZWZpbmUgSElCM1AzX01FTV9QQURfT0VOX1JFVDMzX0NPTkZfUEFEX09FTjMzX0NPTkYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgSElCM1AzX01FTV9QQURfT0VOX1JFVDMzX0NPTkZfUEFEX1JFVDMzX0NPTkYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fVUFSVF9SVFNfT0VOX1JFVDMzX0NPTkYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9VQVJUX1JUU19PRU5fUkVUMzNfQ09ORl9tZW1fdWFydF9ucnRzX29lbl9yZXQzM19vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNCAgLy8gMSAtIE92ZXJyaWRlIHRoZSBPRU4zMyBhbmQgUkVUMzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udHJvbHMgb2YgVUFSVCBOUlRTIEdQSU8gZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNPUC1Cb290ZGVidWcgbW9kZSA7IDAgLSBEb25vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVycmlkZSB0aGUgT0VOMzMgYW5kIFJFVDMzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRyb2xzIG9mIFVBUlQgTlJUUyBHUElPIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTT1AtQm9vdGRlYnVnIG1vZGUKKworI2RlZmluZSBISUIzUDNfTUVNX1VBUlRfUlRTX09FTl9SRVQzM19DT05GX1BBRF9VQVJUX1JUU19PRU4zM19DT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorCisjZGVmaW5lIEhJQjNQM19NRU1fVUFSVF9SVFNfT0VOX1JFVDMzX0NPTkZfUEFEX1VBUlRfUlRTX1JFVDMzX0NPTkYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fSlRBR19DT05GIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSlRBR19DT05GX21lbV9qdGFnMV9vZW5fcmV0MzNfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAyMDAKKworI2RlZmluZSBISUIzUDNfTUVNX0pUQUdfQ09ORl9tZW1fanRhZzBfb2VuX3JldDMzX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisKKyNkZWZpbmUgSElCM1AzX01FTV9KVEFHX0NPTkZfUEFEX0pUQUcxX1JUU19PRU4zM19DT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOAorCisjZGVmaW5lIEhJQjNQM19NRU1fSlRBR19DT05GX1BBRF9KVEFHMV9SVFNfUkVUMzNfQ09ORiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQKKworI2RlZmluZSBISUIzUDNfTUVNX0pUQUdfQ09ORl9QQURfSlRBRzBfUlRTX09FTjMzX0NPTkYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgSElCM1AzX01FTV9KVEFHX0NPTkZfUEFEX0pUQUcwX1JUU19SRVQzM19DT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9SRUcwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JFRzBfbWVtX2hpYl9yZWcwX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUkVHMF9tZW1faGliX3JlZzBfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9SRUcxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JFRzFfbWVtX2hpYl9yZWcxX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUkVHMV9tZW1faGliX3JlZzFfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9SRUcyIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JFRzJfbWVtX2hpYl9yZWcyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUkVHMl9tZW1faGliX3JlZzJfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9SRUczIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1JFRzNfbWVtX2hpYl9yZWczX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfUkVHM19tZW1faGliX3JlZzNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMF9tZW1fYmRjX2V2MF90b19ldjFfdGltZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGMDAwMCAgLy8gQ29uZmlndXJhdGlvbiBmb3IgdGhlIG51bWJlciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbG93LWNsa3MgYmV0d2VlbiBkZS1hc3NlcnRpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRU5fQkdfM1AzViB0byBhc3NlcnRpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRU5fQkdfM1AzVgorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcwX21lbV9iZGNfZXYwX3RvX2V2MV90aW1lX1MgMTYKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzBfTlUxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwODAwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcwX21lbV9iZGNfZXYzX3RvX2V2NF90aW1lX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA2MDAwICAvLyBDb25maWd1cmF0aW9uIGZvciB0aGUgbnVtYmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsb3ctY2xrcyBiZXR3ZWVuIGFzc2VydGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFTl9DT01QXzNQM1YgYW5kIGFzc2VydGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFTl9DT01QX0xBVENIXzNQM1YKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMF9tZW1fYmRjX2V2M190b19ldjRfdGltZV9TIDEzCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcwX21lbV9iZGNfZXYyX3RvX2V2M190aW1lX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAxODAwICAvLyBDb25maWd1cmF0aW9uIGZvciB0aGUgbnVtYmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsb3ctY2xrcyBiZXR3ZWVuIGFzc2VydGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoRU5fQ0FQX1NXXzNQM1YsRU5fQ09NUF9SRUYpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3NlcnRpb24gb2YgKEVOX0NPTVBfM1AzVikKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMF9tZW1fYmRjX2V2Ml90b19ldjNfdGltZV9TIDExCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcwX21lbV9iZGNfZXYxX3RvX2V2Ml90aW1lX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNjAwICAvLyBDb25maWd1cmF0aW9uIGZvciB0aGUgbnVtYmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsb3ctY2xrcyBiZXR3ZWVuIGFzc2VydGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoRU5fQkdfM1AzVikgYW5kIGFzc2VydGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoRU5fQ0FQX1NXXzNQM1YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVOX0NPTVBfUkVGXzNQM1YpCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzBfbWVtX2JkY19ldjFfdG9fZXYyX3RpbWVfUyA5CisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcwX21lbV9lbl9jcnVkZV9yZWZfY29tcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMF9tZW1fZW5fdmJvazRiZ19yZWZfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAgIC8vIDEgLSBFTl9WQk9LNEJHX1JFRiBjb21lcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdFsxMF0gb2YgdGhlIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1FTV9CR0FQX1BBUkFNRVRFUlMwIFsweDAwMzhdLiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gRU5fVkJPSzRCR19SRUYgY29tZXMgZGlyZWN0bHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSB0aGUgSGliLVNlcXVlbmNlci4KKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMF9tZW1fZW5fdmJvazRiZ19jb21wX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQwICAvLyAxIC0gRU5fVkJPSzRCRyBjb21lcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdFsxMV0gb2YgdGhlIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1FTV9CR0FQX1BBUkFNRVRFUlMwIFsweDAwMzhdLiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gRU5fVkJPSzRCRyBjb21lcyBkaXJlY3RseSBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBIaWItU2VxdWVuY2VyLgorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcwX21lbV9lbl92Mmlfb3ZlcnJpZGVfY3RybCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAgIC8vIDEgLSBFTl9WMkkgY29tZXMgZnJvbSBiaXRbMl0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJlZ2lzdGVyIE1FTV9CR0FQX1BBUkFNRVRFUlMxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsweDAwM0NdLiAwIC0gRU5fVjJJIGNvbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpcmVjdGx5IGZyb20gdGhlIEhpYi1TZXF1ZW5jZXIuCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzBfbWVtX3Bvcl9jb21wX3JlZl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMCAgLy8gMSAtIEVOX1BPUl9DT01QX1JFRiBjb21lcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdFs5XSBvZiB0aGUgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNX0hJQl9NSVNDX0NPTlRST0xTIFsweDAwNDRdLiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gRU5fUE9SX0NPTVBfUkVGIGNvbWVzIGRpcmVjdGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gdGhlIEhpYi1TZXF1ZW5jZXIuCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzBfbWVtX2VuX3Bvcl9jb21wX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4ICAvLyAxIC0gRU5fUE9SX0NPTVAgY29tZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXRbMTBdIG9mIHRoZSByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNRU1fSElCX01JU0NfQ09OVFJPTFMgWzB4MDQ0XS4gMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtIEVOX1BPUl9DT01QIGNvbWVzIGRpcmVjdGx5IGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEhpYi1TZXF1ZW5jZXIuCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzBfbWVtX2NhcF9zd19vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNCAgLy8gMSAtIEVOX0NBUF9TVyBjb21lcyBmcm9tIGJpdFsxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGUgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUVNX0JHQVBfUEFSQU1FVEVSUzEgWzB4MDAzQ10uIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBFTl9DQVBfU1cgY29tZXMgZGlyZWN0bHkgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIaWItU2VxdWVuY2VyLgorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcwX21lbV9iZ19vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMSAtIEVOX0JHQVAgY29tZXMgZnJvbSBiaXRbMF0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJlZ2lzdGVyIE1FTV9CR0FQX1BBUkFNRVRFUlMxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsweDAwM0NdLiAwIC0gRU5fQkdBUCBjb21lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXJlY3RseSBmcm9tIEhpYi1TZXF1ZW5jZXIuCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzBfbWVtX2FjdF9pcmVmX292ZXJyaWRlX2N0cmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fSElCX1NFUVVFTkNFUl9DRkcxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcxX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYwMDAwCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzFfcmVzZXJ2ZWRfUyAxNgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMV9tZW1fYmRjX2V2NV90b19ldjZfdGltZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwQzAwMCAgLy8gQ29uZmlndXJhdGlvbiBmb3IgbnVtYmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsb3ctY2xrcyBiZXR3ZWVuIGRlLWFzc2VydGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFTl9DT01QX0xBVENIIGFuZCBhc3NlcnRpb24gb2YKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMV9tZW1fYmRjX2V2NV90b19ldjZfdGltZV9TIDE0CisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcxX21lbV9iZGNfdG9fYWN0aXZlX2V2MV90b19ldjJfdGltZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMzAwMCAgLy8gQ29uZmlndXJhdGlvbiBmb3IgbnVtYmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsb3ctY2xrcyBiZXR3ZWVuIGFzc2VydGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFTl9DT01QX1JFRiB0byBhc3NlcnRpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRU5fQ09NUCBkdXJpbmcgSElCLUV4aXQKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMV9tZW1fYmRjX3RvX2FjdGl2ZV9ldjFfdG9fZXYyX3RpbWVfUyAxMgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMV9tZW1fYmRjX3RvX2FjdGl2ZV9ldjBfdG9fZXYxX3RpbWVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBDMDAgIC8vIFRCRAorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcxX21lbV9iZGNfdG9fYWN0aXZlX2V2MF90b19ldjFfdGltZV9TIDEwCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcxX21lbV9iZGNfdG9fYWN0aXZlX2V2MF90b19hY3RpdmVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAzMDAgIC8vIENvbmZpZ3VyYXRpb24gaW4gbnVtYmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNsb3ctY2xrcyBiZXR3ZWVuIGFzc2VydGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoRU5fQkdBUF8zUDNWLCBFTl9DQVBfU1dfM1AzViwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRU5fQUNUX0lSRUZfM1AzViwgRU5fQ09NUF9SRUYpIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc2VydGlvbiBvZiBFTl9DT01QXzNQM1YKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMV9tZW1fYmRjX3RvX2FjdGl2ZV9ldjBfdG9fYWN0aXZlX1MgOAorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMV9tZW1fYWN0aXZlX3RvX2JkY19ldjFfdG9fYmRjX2V2MF90aW1lX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEMwICAvLyBDb25maWd1cmF0aW9uIGluIG51bWJlciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbG93LWNsa3MgYmV0d2VlbiBkZS1hc3NlcnRpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEVOX0NPTVBfM1AzViwgRU5fQ09NUF9SRUZfM1AzViwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRU5fQUNUX0lSRUZfM1AzViwgRU5fQ0FQX1NXXzNQM1YpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGRlYXNzZXJ0aW9uIG9mIEVOX0JHQVBfM1AzVi4KKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMV9tZW1fYWN0aXZlX3RvX2JkY19ldjFfdG9fYmRjX2V2MF90aW1lX1MgNgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMV9OVTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwM0YKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMV9OVTFfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9NSVNDX0NPTkZJRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9NSVNDX0NPTkZJR19tZW1fZW5fcGxsX3VudHJpbV9jdXJyZW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9XQUtFX1NUQVRVUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9XQUtFX1NUQVRVU19oaWJfd2FrZV9zcmNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMUUgIC8vICIwMTAwIiAtIEdQSU8gOyAiMDAxMCIgLSBSVEMgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiMDAwMSIgLSBVQVJUIE90aGVycyAtIFJlc2VydmVkCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfV0FLRV9TVEFUVVNfaGliX3dha2Vfc3JjX1MgMQorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9XQUtFX1NUQVRVU19oaWJfd2FrZV9zdGF0dXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAxIC0gV2FrZSBmcm9tIEhpYmVybmF0ZSA7IDAgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXYWtlIGZyb20gT0ZGCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19NRU1fSElCX0xQRFNfR1BJT19TRUwgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfTFBEU19HUElPX1NFTF9ISUJfTFBEU19HUElPX1NFTF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNworCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX0xQRFNfR1BJT19TRUxfSElCX0xQRFNfR1BJT19TRUxfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMl9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRjgwMAorCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcyX3Jlc2VydmVkX1MgMTEKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzJfbWVtX2FjdGl2ZV90b19iZGNfZXYwX3RvX2FjdGl2ZV90b19iZGNfZXYxX3RpbWVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA2MDAgIC8vIERlYXNzZXJ0aW9uIG9mIEVOX0NPTVBfTEFUQ0hfM1AzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGRlYXNzZXJ0aW9uIG9mIChFTl9DT01QXzNQMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRU5fQ09NUF9SRUZfM1AzLCBFTl9BQ1RfSVJFRl8zUDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVOX0NBUF9TV18zUDMpCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzJfbWVtX2FjdGl2ZV90b19iZGNfZXYwX3RvX2FjdGl2ZV90b19iZGNfZXYxX3RpbWVfUyA5CisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcyX21lbV9iZGNfZXY0X3RvX2V2NV90aW1lX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMUMwICAvLyBBc3NlcnRpb24gb2YgRU5fQ09NUF9MQVRDSF8zUDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gZGVhc3NlcnRpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRU5fQ09NUF9MQVRDSF8zUDMKKworI2RlZmluZSBISUIzUDNfTUVNX0hJQl9TRVFVRU5DRVJfQ0ZHMl9tZW1fYmRjX2V2NF90b19ldjVfdGltZV9TIDYKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzJfbWVtX2JkY19ldjZfdG9fZXY3X3RpbWVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMzAgIC8vIERlYXNzZXJ0aW9uIG9mIChFTl9DQVBfU1dfM1AzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFTl9DT01QX1JFRl8zUDMsIEVOX0NPTVBfM1AzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFTl9DT01QX09VVF9MQVRDSF8zUDMpIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlYXNzZXJ0aW9uIG9mIEVOX0JHQVBfM1AzCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzJfbWVtX2JkY19ldjZfdG9fZXY3X3RpbWVfUyA0CisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcyX21lbV9iZGNfdG9fYWN0aXZlX2V2MV90b19ldjJfdGltZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwQyAgLy8gQXNzZXJ0aW9uIG9mIEVOX0NPTVBfM1AzIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc2VydGlvbiBvZiBFTl9DT01QT1VUX0xBVENIXzNQMworCisjZGVmaW5lIEhJQjNQM19NRU1fSElCX1NFUVVFTkNFUl9DRkcyX21lbV9iZGNfdG9fYWN0aXZlX2V2MV90b19ldjJfdGltZV9TIDIKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzJfbWVtX2hpYl90b19hY3RpdmVfZXYyX3RvX2V2M190aW1lX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyBBc3NlcnRpb24gb2YgRU5fQ09NUF8zUDMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzZXJ0aW9uIG9mIEVOX0NPTVBPVVRfTEFUQ0hfM1AzCisKKyNkZWZpbmUgSElCM1AzX01FTV9ISUJfU0VRVUVOQ0VSX0NGRzJfbWVtX2hpYl90b19hY3RpdmVfZXYyX3RvX2V2M190aW1lX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX0hJQkFOQV9TUEFSRV9MT1dWIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19ISUJBTkFfU1BBUkVfTE9XVl9tZW1faGliYW5hX3NwYXJlMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkMwMDAwMAorCisjZGVmaW5lIEhJQjNQM19ISUJBTkFfU1BBUkVfTE9XVl9tZW1faGliYW5hX3NwYXJlMV9TIDIyCisjZGVmaW5lIEhJQjNQM19ISUJBTkFfU1BBUkVfTE9XVl9tZW1faGliYW5hX3NwYXJlMF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxRkZGRgorCisjZGVmaW5lIEhJQjNQM19ISUJBTkFfU1BBUkVfTE9XVl9tZW1faGliYW5hX3NwYXJlMF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19ISUJfVE1VWF9DVFJMIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19ISUJfVE1VWF9DVFJMX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGQzAwCisKKyNkZWZpbmUgSElCM1AzX0hJQl9UTVVYX0NUUkxfcmVzZXJ2ZWRfUyAxMAorI2RlZmluZSBISUIzUDNfSElCX1RNVVhfQ1RSTF9tZW1faGRfdG11eF9jbnRybF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDNGRgorCisjZGVmaW5lIEhJQjNQM19ISUJfVE1VWF9DVFJMX21lbV9oZF90bXV4X2NudHJsX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX0hJQl8xUDJfMVA4X0xET19UUklNIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19ISUJfMVAyXzFQOF9MRE9fVFJJTV9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRjAwMAorCisjZGVmaW5lIEhJQjNQM19ISUJfMVAyXzFQOF9MRE9fVFJJTV9yZXNlcnZlZF9TIDEyCisjZGVmaW5lIEhJQjNQM19ISUJfMVAyXzFQOF9MRE9fVFJJTV9tZW1faGRfMXAyX2xkb19lbl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgwMAorCisjZGVmaW5lIEhJQjNQM19ISUJfMVAyXzFQOF9MRE9fVFJJTV9tZW1faGRfMXA4X2xkb19lbl9vdmVycmlkZV9jdHJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQwMAorCisjZGVmaW5lIEhJQjNQM19ISUJfMVAyXzFQOF9MRE9fVFJJTV9tZW1faGRfMXAyX2xkb19lbl9vdmVycmlkZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAyMDAKKworI2RlZmluZSBISUIzUDNfSElCXzFQMl8xUDhfTERPX1RSSU1fbWVtX2hkXzFwOF9sZG9fZW5fb3ZlcnJpZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisKKyNkZWZpbmUgSElCM1AzX0hJQl8xUDJfMVA4X0xET19UUklNX21lbV9oZF8xcDJfbGRvX3Z0cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEYwCisKKyNkZWZpbmUgSElCM1AzX0hJQl8xUDJfMVA4X0xET19UUklNX21lbV9oZF8xcDJfbGRvX3Z0cmltX1MgNAorI2RlZmluZSBISUIzUDNfSElCXzFQMl8xUDhfTERPX1RSSU1fbWVtX2hkXzFwOF9sZG9fdnRyaW1fTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYKKworI2RlZmluZSBISUIzUDNfSElCXzFQMl8xUDhfTERPX1RSSU1fbWVtX2hkXzFwOF9sZG9fdnRyaW1fUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fSElCX0NPTVBfVFJJTSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBISUIzUDNfSElCX0NPTVBfVFJJTV9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGOAorCisjZGVmaW5lIEhJQjNQM19ISUJfQ09NUF9UUklNX3Jlc2VydmVkX1MgMworI2RlZmluZSBISUIzUDNfSElCX0NPTVBfVFJJTV9tZW1faGRfY29tcF90cmltX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3CisKKyNkZWZpbmUgSElCM1AzX0hJQl9DT01QX1RSSU1fbWVtX2hkX2NvbXBfdHJpbV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19ISUJfRU5fVFMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX0hJQl9FTl9UU19yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRQorCisjZGVmaW5lIEhJQjNQM19ISUJfRU5fVFNfcmVzZXJ2ZWRfUyAxCisjZGVmaW5lIEhJQjNQM19ISUJfRU5fVFNfbWVtX2hkX2VuX3RzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fSElCXzFQOFZfREVUX0VOIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19ISUJfMVA4Vl9ERVRfRU5fcmVzZXJ2ZWRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkUKKworI2RlZmluZSBISUIzUDNfSElCXzFQOFZfREVUX0VOX3Jlc2VydmVkX1MgMQorI2RlZmluZSBISUIzUDNfSElCXzFQOFZfREVUX0VOX21lbV9oaWJfMXA4dl9kZXRfZW4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBISUIzUDNfT19ISUJfVkJBVF9NT05fRU4gcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX0hJQl9WQkFUX01PTl9FTl9yZXNlcnZlZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGQworCisjZGVmaW5lIEhJQjNQM19ISUJfVkJBVF9NT05fRU5fcmVzZXJ2ZWRfUyAyCisjZGVmaW5lIEhJQjNQM19ISUJfVkJBVF9NT05fRU5fbWVtX2hpYl92YmF0X21vbl9kZWxfZW4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisKKyNkZWZpbmUgSElCM1AzX0hJQl9WQkFUX01PTl9FTl9tZW1faGliX3ZiYXRfbW9uX2VuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gSElCM1AzX09fSElCX05ISUJfRU5BQkxFIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIEhJQjNQM19ISUJfTkhJQl9FTkFCTEVfbWVtX2hpYl9uaGliX2VuYWJsZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIEhJQjNQM19PX0hJQl9VQVJUX1JUU19TV19FTkFCTEUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgSElCM1AzX0hJQl9VQVJUX1JUU19TV19FTkFCTEVfbWVtX2hpYl91YXJ0X3J0c19zd19lbmFibGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisKKworCisKKyNlbmRpZiAvLyBfX0hXX0hJQjNQM19IX18KZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19pbnRzLmggYi9leHQvaGFsL3RpL2NjMzIyMHNkay9pbmMvaHdfaW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMmMwMmYKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvaGFsL3RpL2NjMzIyMHNkay9pbmMvaHdfaW50cy5oCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiAgYXJlIG1ldDoKKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gaHdfaW50cy5oIC0gTWFjcm9zIHRoYXQgZGVmaW5lIHRoZSBpbnRlcnJ1cHQgYXNzaWdubWVudCBvbiBDQzMyMDAuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisjaWZuZGVmIF9fSFdfSU5UU19IX18KKyNkZWZpbmUgX19IV19JTlRTX0hfXworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGZhdWx0IGFzc2lnbm1lbnRzLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgRkFVTFRfTk1JICAgICAgICAgICAgICAgMiAgICAgICAgICAgLy8gTk1JIGZhdWx0CisjZGVmaW5lIEZBVUxUX0hBUkQgICAgICAgICAgICAgIDMgICAgICAgICAgIC8vIEhhcmQgZmF1bHQKKyNkZWZpbmUgRkFVTFRfTVBVICAgICAgICAgICAgICAgNCAgICAgICAgICAgLy8gTVBVIGZhdWx0CisjZGVmaW5lIEZBVUxUX0JVUyAgICAgICAgICAgICAgIDUgICAgICAgICAgIC8vIEJ1cyBmYXVsdAorI2RlZmluZSBGQVVMVF9VU0FHRSAgICAgICAgICAgICA2ICAgICAgICAgICAvLyBVc2FnZSBmYXVsdAorI2RlZmluZSBGQVVMVF9TVkNBTEwgICAgICAgICAgICAxMSAgICAgICAgICAvLyBTVkNhbGwKKyNkZWZpbmUgRkFVTFRfREVCVUcgICAgICAgICAgICAgMTIgICAgICAgICAgLy8gRGVidWcgbW9uaXRvcgorI2RlZmluZSBGQVVMVF9QRU5EU1YgICAgICAgICAgICAxNCAgICAgICAgICAvLyBQZW5kU1YKKyNkZWZpbmUgRkFVTFRfU1lTVElDSyAgICAgICAgICAgMTUgICAgICAgICAgLy8gU3lzdGVtIFRpY2sKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBpbnRlcnJ1cHQgYXNzaWdubWVudHMuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBJTlRfR1BJT0EwICAgICAgICAgICAgICAxNiAgICAgICAgICAvLyBHUElPIFBvcnQgUzAKKyNkZWZpbmUgSU5UX0dQSU9BMSAgICAgICAgICAgICAgMTcgICAgICAgICAgLy8gR1BJTyBQb3J0IFMxCisjZGVmaW5lIElOVF9HUElPQTIgICAgICAgICAgICAgIDE4ICAgICAgICAgIC8vIEdQSU8gUG9ydCBTMgorI2RlZmluZSBJTlRfR1BJT0EzICAgICAgICAgICAgICAxOSAgICAgICAgICAvLyBHUElPIFBvcnQgUzMKKyNkZWZpbmUgSU5UX1VBUlRBMCAgICAgICAgICAgICAgMjEgICAgICAgICAgLy8gVUFSVDAgUnggYW5kIFR4CisjZGVmaW5lIElOVF9VQVJUQTEgICAgICAgICAgICAgIDIyICAgICAgICAgIC8vIFVBUlQxIFJ4IGFuZCBUeAorI2RlZmluZSBJTlRfSTJDQTAgICAgICAgICAgICAgICAyNCAgICAgICAgICAvLyBJMkMgY29udHJvbGxlcgorI2RlZmluZSBJTlRfQURDQ0gwICAgICAgICAgICAgICAzMCAgICAgICAgICAvLyBBREMgU2VxdWVuY2UgMAorI2RlZmluZSBJTlRfQURDQ0gxICAgICAgICAgICAgICAzMSAgICAgICAgICAvLyBBREMgU2VxdWVuY2UgMQorI2RlZmluZSBJTlRfQURDQ0gyICAgICAgICAgICAgICAzMiAgICAgICAgICAvLyBBREMgU2VxdWVuY2UgMgorI2RlZmluZSBJTlRfQURDQ0gzICAgICAgICAgICAgICAzMyAgICAgICAgICAvLyBBREMgU2VxdWVuY2UgMworI2RlZmluZSBJTlRfV0RUICAgICAgICAgICAgICAgICAzNCAgICAgICAgICAvLyBXYXRjaGRvZyBUaW1lcjAKKyNkZWZpbmUgSU5UX1RJTUVSQTBBICAgICAgICAgICAgMzUgICAgICAgICAgLy8gVGltZXIgMCBzdWJ0aW1lciBBCisjZGVmaW5lIElOVF9USU1FUkEwQiAgICAgICAgICAgIDM2ICAgICAgICAgIC8vIFRpbWVyIDAgc3VidGltZXIgQgorI2RlZmluZSBJTlRfVElNRVJBMUEgICAgICAgICAgICAzNyAgICAgICAgICAvLyBUaW1lciAxIHN1YnRpbWVyIEEKKyNkZWZpbmUgSU5UX1RJTUVSQTFCICAgICAgICAgICAgMzggICAgICAgICAgLy8gVGltZXIgMSBzdWJ0aW1lciBCCisjZGVmaW5lIElOVF9USU1FUkEyQSAgICAgICAgICAgIDM5ICAgICAgICAgIC8vIFRpbWVyIDIgc3VidGltZXIgQQorI2RlZmluZSBJTlRfVElNRVJBMkIgICAgICAgICAgICA0MCAgICAgICAgICAvLyBUaW1lciAyIHN1YnRpbWVyIEIKKyNkZWZpbmUgSU5UX0ZMQVNIICAgICAgICAgICAgICAgNDUgICAgICAgICAgLy8gRkxBU0ggQ29udHJvbAorI2RlZmluZSBJTlRfVElNRVJBM0EgICAgICAgICAgICA1MSAgICAgICAgICAvLyBUaW1lciAzIHN1YnRpbWVyIEEKKyNkZWZpbmUgSU5UX1RJTUVSQTNCICAgICAgICAgICAgNTIgICAgICAgICAgLy8gVGltZXIgMyBzdWJ0aW1lciBCCisjZGVmaW5lIElOVF9VRE1BICAgICAgICAgICAgICAgIDYyICAgICAgICAgIC8vIHVETUEgY29udHJvbGxlcgorI2RlZmluZSBJTlRfVURNQUVSUiAgICAgICAgICAgICA2MyAgICAgICAgICAvLyB1RE1BIEVycm9yCisjZGVmaW5lIElOVF9TSEEgICAgICAgICAgICAgICAgIDE2NCAgICAgICAgIC8vIFNIQQorI2RlZmluZSBJTlRfQUVTICAgICAgICAgICAgICAgICAxNjcgICAgICAgICAvLyBBRVMKKyNkZWZpbmUgSU5UX0RFUyAgICAgICAgICAgICAgICAgMTY5ICAgICAgICAgLy8gREVTCisjZGVmaW5lIElOVF9NTUNIUyAgICAgICAgICAgICAgIDE3NSAgICAgICAgIC8vIFNESU8KKyNkZWZpbmUgSU5UX0kyUyAgICAgICAgICAgICAgICAgMTc3ICAgICAgICAgLy8gTWNBUFMKKyNkZWZpbmUgSU5UX0NBTUVSQSAgICAgICAgICAgICAgMTc5ICAgICAgICAgLy8gQ2FtZXJhCisjZGVmaW5lIElOVF9OV1BJQyAgICAgICAgICAgICAgIDE4NyAgICAgICAgIC8vIEludGVycHJvY2Vzc29yIGNvbW11bmljYXRpb24KKyNkZWZpbmUgSU5UX1BSQ00gICAgICAgICAgICAgICAgMTg4ICAgICAgICAgLy8gUG93ZXIsIFJlc2V0IGFuZCBDbG9jayBNb2R1bGUKKyNkZWZpbmUgSU5UX1NTUEkgICAgICAgICAgICAgICAgMTkxICAgICAgICAgLy8gU2hhcmVkIFNQSQorI2RlZmluZSBJTlRfR1NQSSAgICAgICAgICAgICAgICAxOTIgICAgICAgICAvLyBHZW5lcmljIFNQSQorI2RlZmluZSBJTlRfTFNQSSAgICAgICAgICAgICAgICAxOTMgICAgICAgICAvLyBMaW5rIFNQSQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIHRvdGFsIG51bWJlciBvZiBpbnRlcnJ1cHRzLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgTlVNX0lOVEVSUlVQVFMgICAgICAgICAgMTk1IC8vVGhlIGFib3ZlIG51bWJlciBwbHVzIDI/CisKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSB0b3RhbCBudW1iZXIgb2YgcHJpb3JpdHkgbGV2ZWxzLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgTlVNX1BSSU9SSVRZICAgICAgICAgICAgOAorI2RlZmluZSBOVU1fUFJJT1JJVFlfQklUUyAgICAgICAzCisKKworI2VuZGlmIC8vIF9fSFdfSU5UU19IX18KZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19tZW1tYXAuaCBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19tZW1tYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTI2Nzc0Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X21lbW1hcC5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLworICoKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqICBhcmUgbWV0OgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqICAgIE5laXRoZXIgdGhlIG5hbWUgb2YgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgX19IV19NRU1NQVBfSF9fCisjZGVmaW5lIF9fSFdfTUVNTUFQX0hfXworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgbWVtb3JpZXMgYW5kCisvLyBwZXJpcGhlcmFscyBvbiB0aGUgc2xhdmVfMSBpbnRlcmZhY2UuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBGTEFTSF9CQVNFICAgICAgICAgICAgICAweDAxMDAwMDAwCisjZGVmaW5lIFNSQU1fQkFTRSAgICAgICAgICAgICAgIDB4MjAwMDAwMDAKKyNkZWZpbmUgV0RUX0JBU0UgICAgICAgICAgICAgICAgMHg0MDAwMDAwMAorI2RlZmluZSBHUElPQTBfQkFTRSAgICAgICAgICAgICAweDQwMDA0MDAwCisjZGVmaW5lIEdQSU9BMV9CQVNFICAgICAgICAgICAgIDB4NDAwMDUwMDAKKyNkZWZpbmUgR1BJT0EyX0JBU0UgICAgICAgICAgICAgMHg0MDAwNjAwMAorI2RlZmluZSBHUElPQTNfQkFTRSAgICAgICAgICAgICAweDQwMDA3MDAwCisjZGVmaW5lIEdQSU9BNF9CQVNFICAgICAgICAgICAgIDB4NDAwMjQwMDAKKyNkZWZpbmUgVUFSVEEwX0JBU0UgICAgICAgICAgICAgMHg0MDAwQzAwMAorI2RlZmluZSBVQVJUQTFfQkFTRSAgICAgICAgICAgICAweDQwMDBEMDAwCisjZGVmaW5lIEkyQ0EwX0JBU0UgICAgICAgICAgICAgIDB4NDAwMjAwMDAKKyNkZWZpbmUgVElNRVJBMF9CQVNFICAgICAgICAgICAgMHg0MDAzMDAwMAorI2RlZmluZSBUSU1FUkExX0JBU0UgICAgICAgICAgICAweDQwMDMxMDAwCisjZGVmaW5lIFRJTUVSQTJfQkFTRSAgICAgICAgICAgIDB4NDAwMzIwMDAKKyNkZWZpbmUgVElNRVJBM19CQVNFICAgICAgICAgICAgMHg0MDAzMzAwMAorI2RlZmluZSBTVEFDS0RJRV9DVFJMX0JBU0UgICAgICAweDQwMEY1MDAwCisjZGVmaW5lIENPTU1PTl9SRUdfQkFTRSAgICAgICAgIDB4NDAwRjcwMDAKKyNkZWZpbmUgRkxBU0hfQ09OVFJPTF9CQVNFICAgICAgMHg0MDBGRDAwMAorI2RlZmluZSBTWVNURU1fQ09OVFJPTF9CQVNFICAgICAweDQwMEZFMDAwCisjZGVmaW5lIFVETUFfQkFTRSAgICAgICAgICAgICAgIDB4NDAwRkYwMDAKKyNkZWZpbmUgU0RIT1NUX0JBU0UgICAgICAgICAgICAgMHg0NDAxMDAwMAorI2RlZmluZSBDQU1FUkFfQkFTRSAgICAgICAgICAgICAweDQ0MDE4MDAwCisjZGVmaW5lIEkyU19CQVNFICAgICAgICAgICAgICAgIDB4NDQwMUMwMDAKKyNkZWZpbmUgU1NQSV9CQVNFICAgICAgICAgICAgICAgMHg0NDAyMDAwMAorI2RlZmluZSBHU1BJX0JBU0UgICAgICAgICAgICAgICAweDQ0MDIxMDAwCisjZGVmaW5lIExTUElfQkFTRSAgICAgICAgICAgICAgIDB4NDQwMjIwMDAKKyNkZWZpbmUgQVJDTV9CQVNFICAgICAgICAgICAgICAgMHg0NDAyNTAwMAorI2RlZmluZSBBUFBTX0NPTkZJR19CQVNFICAgICAgICAweDQ0MDI2MDAwCisjZGVmaW5lIEdQUkNNX0JBU0UgICAgICAgICAgICAgIDB4NDQwMkQwMDAKKyNkZWZpbmUgT0NQX1NIQVJFRF9CQVNFICAgICAgICAgMHg0NDAyRTAwMAorI2RlZmluZSBBRENfQkFTRSAgICAgICAgICAgICAgICAweDQ0MDJFODAwCisjZGVmaW5lIEhJQjFQMl9CQVNFICAgICAgICAgICAgIDB4NDQwMkYwMDAKKyNkZWZpbmUgSElCM1AzX0JBU0UgICAgICAgICAgICAgMHg0NDAyRjgwMAorI2RlZmluZSBEVEhFX0JBU0UgICAgICAgICAgICAgICAweDQ0MDMwMDAwCisjZGVmaW5lIFNIQU1ENV9CQVNFICAgICAgICAgICAgIDB4NDQwMzUwMDAKKyNkZWZpbmUgQUVTX0JBU0UgICAgICAgICAgICAgICAgMHg0NDAzNzAwMAorI2RlZmluZSBERVNfQkFTRSAgICAgICAgICAgICAgICAweDQ0MDM5MDAwCisKKworI2VuZGlmIC8vIF9fSFdfTUVNTUFQX0hfXwpkaWZmIC0tZ2l0IGEvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X29jcF9zaGFyZWQuaCBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19vY3Bfc2hhcmVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzliNWY3NgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od19vY3Bfc2hhcmVkLmgKQEAgLTAsMCArMSwzNDQzIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiAgYXJlIG1ldDoKKyAqCisgKiAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIF9fSFdfT0NQX1NIQVJFRF9IX18KKyNkZWZpbmUgX19IV19PQ1BfU0hBUkVEX0hfXworCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIE9DUF9TSEFSRUQgcmVnaXN0ZXIgb2Zmc2V0cy4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfT19TRU1BUEhPUkUxIDB4MDAwMDAwMDAKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTIgMHgwMDAwMDAwNAorI2RlZmluZSBPQ1BfU0hBUkVEX09fU0VNQVBIT1JFMyAweDAwMDAwMDA4CisjZGVmaW5lIE9DUF9TSEFSRURfT19TRU1BUEhPUkU0IDB4MDAwMDAwMEMKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTUgMHgwMDAwMDAxMAorI2RlZmluZSBPQ1BfU0hBUkVEX09fU0VNQVBIT1JFNiAweDAwMDAwMDE0CisjZGVmaW5lIE9DUF9TSEFSRURfT19TRU1BUEhPUkU3IDB4MDAwMDAwMTgKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTggMHgwMDAwMDAxQworI2RlZmluZSBPQ1BfU0hBUkVEX09fU0VNQVBIT1JFOSAweDAwMDAwMDIwCisjZGVmaW5lIE9DUF9TSEFSRURfT19TRU1BUEhPUkUxMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjQKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fU0VNQVBIT1JFMTEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDI4CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTEyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyQworCisjZGVmaW5lIE9DUF9TSEFSRURfT19JQ19MT0NLRVJfSUQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDMwCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX01DVV9TRU1BUEhPUkVfUEVORCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMzQKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fV0xfU0VNQVBIT1JFX1BFTkQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDM4CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1BMQVRGT1JNX0RFVEVDVElPTl9SRF9PTkxZIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzQworCisjZGVmaW5lIE9DUF9TSEFSRURfT19TRU1BUEhPUkVTX1NUQVRVU19SRF9PTkxZIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0MAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19DQzNYWF9DT05GSUdfQ1RSTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDQKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fQ0MzWFhfU0hBUkVEX01FTV9TRUxfTFNCIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0OAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19DQzNYWF9TSEFSRURfTUVNX1NFTF9NU0IgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDRDCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1dMQU5fRUxQX1dBS0VfRU4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDUwCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0RFVklOSVRfUk9NX1NUQVJUX0FERFIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDU0CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0RFVklOSVRfUk9NX0VORF9BRERSIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA1OAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19TU0JEX1NFRUQgIDB4MDAwMDAwNUMKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1NTQkRfQ0hLICAgMHgwMDAwMDA2MAorI2RlZmluZSBPQ1BfU0hBUkVEX09fU1NCRF9QT0xZX1NFTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNjQKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fU1BBUkVfUkVHXzAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDY4CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1NQQVJFX1JFR18xIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA2QworCisjZGVmaW5lIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNzAKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fU1BBUkVfUkVHXzMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDc0CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBBMAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQTQKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEE4CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18zIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBBQworCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfNCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQjAKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEI0CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR182IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCOAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfNyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQkMKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEMwCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR185IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBDNAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMTAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEM4CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18xMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQ0MKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzEyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBEMAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMTMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEQ0CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18xNCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRDgKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzE1IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBEQworCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMTYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEUwCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18xNyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRTQKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzE4IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBFOAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMTkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEVDCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18yMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRjAKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzIxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGNAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMjIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEY4CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18yMyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRkMKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzI0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMjUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTA0CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18yNiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDgKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzI3IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwQworCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMjggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTEwCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18yOSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMTQKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzMwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDExOAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMzEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTFDCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18zMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMjAKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzMzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEyNAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMzQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTI4CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18zNSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMkMKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzM2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEzMAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMzcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTM0CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18zOCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMzgKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzM5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEzQworCisjZGVmaW5lIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfNDAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTQwCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NNTl9DT05GSUcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTQ0ICAvLyBUaGlzIHJlZ2lzdGVyIHByb3ZpZGUgY29udHJvbCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPX0NDM1hYVjEgSU8gUEFELiBDb21tb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udHJvbCBzaWduYWxzIHRvIGFsbCBib3R0b20gRGllCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MgYXJlIGNvbnRyb2xsZWQgdmlhIHRoaXMuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0QyRF9ERVZfUEFEX0NNTl9DT05GSUcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTQ4CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0QyRF9UT1NUQUNLX1BBRF9DT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDE0QworCisjZGVmaW5lIE9DUF9TSEFSRURfT19EMkRfTUlTQ19QQURfQ09ORiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxNTAKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fU09QX0NPTkZfT1ZFUlJJREUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTU0CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0NDM1hYX0RFQlVHU1NfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDE1OAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19DQzNYWF9ERUJVR01VWF9TRUwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTVDCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0FMVF9QQ19WQUxfTlcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTYwCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0FMVF9QQ19WQUxfQVBQUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxNjQKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fU1BBUkVfUkVHXzQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTY4CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1NQQVJFX1JFR181IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDE2QworCisjZGVmaW5lIE9DUF9TSEFSRURfT19TSF9TUElfQ1NfTUFTSyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxNzAKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fQ0MzWFhfREVWSUNFX1RZUEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTc0CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX01FTV9UT1BNVVhDVFJMX0lGT1JDRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxNzgKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fQ0MzWFhfREVWX1BBQ0tBR0VfREVURUNUIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDE3QworCisjZGVmaW5lIE9DUF9TSEFSRURfT19BVVRPTk1TX1NQSUNMS19TRUwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTgwCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0NDM1hYX0RFVl9QQURDT05GIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDE4NAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfOCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxODgKKworI2RlZmluZSBPQ1BfU0hBUkVEX09fU1BBUkVfUkVHXzYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMThDCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX1NQQVJFX1JFR183IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDE5MAorCisjZGVmaW5lIE9DUF9TSEFSRURfT19BUFBTX1dMQU5fT1JCSVQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTk0CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9PX0FQUFNfV0xBTl9TQ1JBVENIX1BBRCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxOTgKKworCisKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TRU1BUEhPUkUxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU0VNQVBIT1JFMV9NRU1fU0VNQVBIT1JFMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyAgLy8gR2VuZXJhbCBQdXJwb3NlIFNlbWFwaG9yZSBmb3IgU1cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNhZ2UuIElmIGFueSBvZiB0aGUgMiBiaXRzIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2l2ZW4gcmVnaXN0ZXIgaXMgc2V0IHRvIDEsIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoYXQgdGhlIHNlbWFwaG9yZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NrZWQgYnkgb25lIG9mIHRoZSBtYXN0ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFYWNoIGJpdCByZXByZXNlbnRzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIGZvbGxvd3M6IHtXTEFOLE5XUH0uIFRoZSBKVEFHCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbm5vdCBjYXB0dXJlIHRoZSBzZW1hcGhvcmUgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGNhbiByZWxlYXNlIGl0LiBBcyBhIG1hc3RlciBJUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkcyB0aGUgc2VtYXBob3JlLCBpdCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhcHV0ZWQgYW5kIHRoZSBtYXN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlbGF0aW5nIGJpdCB3aWxsIGJlIHNldCB0byAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChzZXQgdXBvbiByZWFkKS4gQXMgYW55IElQIHdyaXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGlzIGFkZHJlc3MgKGluZGVwZW5kZW50IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB3cml0dGVuIGRhdGEpIHRoZSBzZW1hcGhvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBzZXQgdG8gMidiMDAuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkUxX01FTV9TRU1BUEhPUkUxX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TRU1BUEhPUkUyIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU0VNQVBIT1JFMl9NRU1fU0VNQVBIT1JFMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyAgLy8gR2VuZXJhbCBQdXJwb3NlIFNlbWFwaG9yZSBmb3IgU1cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNhZ2UuIElmIGFueSBvZiB0aGUgMiBiaXRzIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2l2ZW4gcmVnaXN0ZXIgaXMgc2V0IHRvIDEsIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoYXQgdGhlIHNlbWFwaG9yZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NrZWQgYnkgb25lIG9mIHRoZSBtYXN0ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFYWNoIGJpdCByZXByZXNlbnRzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIGZvbGxvd3M6IHtXTEFOLE5XUH0uIFRoZSBKVEFHCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbm5vdCBjYXB0dXJlIHRoZSBzZW1hcGhvcmUgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGNhbiByZWxlYXNlIGl0LiBBcyBhIG1hc3RlciBJUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkcyB0aGUgc2VtYXBob3JlLCBpdCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhcHV0ZWQgYW5kIHRoZSBtYXN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlbGF0aW5nIGJpdCB3aWxsIGJlIHNldCB0byAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChzZXQgdXBvbiByZWFkKS4gQXMgYW55IElQIHdyaXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGlzIGFkZHJlc3MgKGluZGVwZW5kZW50IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB3cml0dGVuIGRhdGEpIHRoZSBzZW1hcGhvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBzZXQgdG8gMidiMDAuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkUyX01FTV9TRU1BUEhPUkUyX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TRU1BUEhPUkUzIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU0VNQVBIT1JFM19NRU1fU0VNQVBIT1JFM19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyAgLy8gR2VuZXJhbCBQdXJwb3NlIFNlbWFwaG9yZSBmb3IgU1cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNhZ2UuIElmIGFueSBvZiB0aGUgMiBiaXRzIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2l2ZW4gcmVnaXN0ZXIgaXMgc2V0IHRvIDEsIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoYXQgdGhlIHNlbWFwaG9yZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NrZWQgYnkgb25lIG9mIHRoZSBtYXN0ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFYWNoIGJpdCByZXByZXNlbnRzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIGZvbGxvd3M6IHtXTEFOLE5XUH0uIFRoZSBKVEFHCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbm5vdCBjYXB0dXJlIHRoZSBzZW1hcGhvcmUgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGNhbiByZWxlYXNlIGl0LiBBcyBhIG1hc3RlciBJUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkcyB0aGUgc2VtYXBob3JlLCBpdCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhcHV0ZWQgYW5kIHRoZSBtYXN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlbGF0aW5nIGJpdCB3aWxsIGJlIHNldCB0byAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChzZXQgdXBvbiByZWFkKS4gQXMgYW55IElQIHdyaXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGlzIGFkZHJlc3MgKGluZGVwZW5kZW50IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB3cml0dGVuIGRhdGEpIHRoZSBzZW1hcGhvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBzZXQgdG8gMidiMDAuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkUzX01FTV9TRU1BUEhPUkUzX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TRU1BUEhPUkU0IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU0VNQVBIT1JFNF9NRU1fU0VNQVBIT1JFNF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyAgLy8gR2VuZXJhbCBQdXJwb3NlIFNlbWFwaG9yZSBmb3IgU1cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNhZ2UuIElmIGFueSBvZiB0aGUgMiBiaXRzIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2l2ZW4gcmVnaXN0ZXIgaXMgc2V0IHRvIDEsIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoYXQgdGhlIHNlbWFwaG9yZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NrZWQgYnkgb25lIG9mIHRoZSBtYXN0ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFYWNoIGJpdCByZXByZXNlbnRzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIGZvbGxvd3M6IHtXTEFOLE5XUH0uIFRoZSBKVEFHCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbm5vdCBjYXB0dXJlIHRoZSBzZW1hcGhvcmUgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGNhbiByZWxlYXNlIGl0LiBBcyBhIG1hc3RlciBJUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkcyB0aGUgc2VtYXBob3JlLCBpdCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhcHV0ZWQgYW5kIHRoZSBtYXN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlbGF0aW5nIGJpdCB3aWxsIGJlIHNldCB0byAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChzZXQgdXBvbiByZWFkKS4gQXMgYW55IElQIHdyaXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGlzIGFkZHJlc3MgKGluZGVwZW5kZW50IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB3cml0dGVuIGRhdGEpIHRoZSBzZW1hcGhvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBzZXQgdG8gMidiMDAuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkU0X01FTV9TRU1BUEhPUkU0X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TRU1BUEhPUkU1IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU0VNQVBIT1JFNV9NRU1fU0VNQVBIT1JFNV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyAgLy8gR2VuZXJhbCBQdXJwb3NlIFNlbWFwaG9yZSBmb3IgU1cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNhZ2UuIElmIGFueSBvZiB0aGUgMiBiaXRzIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2l2ZW4gcmVnaXN0ZXIgaXMgc2V0IHRvIDEsIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoYXQgdGhlIHNlbWFwaG9yZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NrZWQgYnkgb25lIG9mIHRoZSBtYXN0ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFYWNoIGJpdCByZXByZXNlbnRzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIGZvbGxvd3M6IHtXTEFOLE5XUH0uIFRoZSBKVEFHCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbm5vdCBjYXB0dXJlIHRoZSBzZW1hcGhvcmUgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGNhbiByZWxlYXNlIGl0LiBBcyBhIG1hc3RlciBJUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkcyB0aGUgc2VtYXBob3JlLCBpdCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhcHV0ZWQgYW5kIHRoZSBtYXN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlbGF0aW5nIGJpdCB3aWxsIGJlIHNldCB0byAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChzZXQgdXBvbiByZWFkKS4gQXMgYW55IElQIHdyaXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGlzIGFkZHJlc3MgKGluZGVwZW5kZW50IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB3cml0dGVuIGRhdGEpIHRoZSBzZW1hcGhvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBzZXQgdG8gMidiMDAuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkU1X01FTV9TRU1BUEhPUkU1X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TRU1BUEhPUkU2IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU0VNQVBIT1JFNl9NRU1fU0VNQVBIT1JFNl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyAgLy8gR2VuZXJhbCBQdXJwb3NlIFNlbWFwaG9yZSBmb3IgU1cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNhZ2UuIElmIGFueSBvZiB0aGUgMiBiaXRzIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2l2ZW4gcmVnaXN0ZXIgaXMgc2V0IHRvIDEsIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoYXQgdGhlIHNlbWFwaG9yZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NrZWQgYnkgb25lIG9mIHRoZSBtYXN0ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFYWNoIGJpdCByZXByZXNlbnRzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIGZvbGxvd3M6IHtXTEFOLE5XUH0uIFRoZSBKVEFHCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbm5vdCBjYXB0dXJlIHRoZSBzZW1hcGhvcmUgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGNhbiByZWxlYXNlIGl0LiBBcyBhIG1hc3RlciBJUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkcyB0aGUgc2VtYXBob3JlLCBpdCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhcHV0ZWQgYW5kIHRoZSBtYXN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlbGF0aW5nIGJpdCB3aWxsIGJlIHNldCB0byAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChzZXQgdXBvbiByZWFkKS4gQXMgYW55IElQIHdyaXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGlzIGFkZHJlc3MgKGluZGVwZW5kZW50IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB3cml0dGVuIGRhdGEpIHRoZSBzZW1hcGhvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBzZXQgdG8gMidiMDAuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkU2X01FTV9TRU1BUEhPUkU2X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TRU1BUEhPUkU3IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU0VNQVBIT1JFN19NRU1fU0VNQVBIT1JFN19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyAgLy8gR2VuZXJhbCBQdXJwb3NlIFNlbWFwaG9yZSBmb3IgU1cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNhZ2UuIElmIGFueSBvZiB0aGUgMiBiaXRzIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2l2ZW4gcmVnaXN0ZXIgaXMgc2V0IHRvIDEsIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoYXQgdGhlIHNlbWFwaG9yZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NrZWQgYnkgb25lIG9mIHRoZSBtYXN0ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFYWNoIGJpdCByZXByZXNlbnRzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIGZvbGxvd3M6IHtXTEFOLE5XUH0uIFRoZSBKVEFHCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbm5vdCBjYXB0dXJlIHRoZSBzZW1hcGhvcmUgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGNhbiByZWxlYXNlIGl0LiBBcyBhIG1hc3RlciBJUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkcyB0aGUgc2VtYXBob3JlLCBpdCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhcHV0ZWQgYW5kIHRoZSBtYXN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlbGF0aW5nIGJpdCB3aWxsIGJlIHNldCB0byAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChzZXQgdXBvbiByZWFkKS4gQXMgYW55IElQIHdyaXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGlzIGFkZHJlc3MgKGluZGVwZW5kZW50IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB3cml0dGVuIGRhdGEpIHRoZSBzZW1hcGhvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBzZXQgdG8gMidiMDAuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkU3X01FTV9TRU1BUEhPUkU3X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TRU1BUEhPUkU4IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU0VNQVBIT1JFOF9NRU1fU0VNQVBIT1JFOF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyAgLy8gR2VuZXJhbCBQdXJwb3NlIFNlbWFwaG9yZSBmb3IgU1cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNhZ2UuIElmIGFueSBvZiB0aGUgMiBiaXRzIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2l2ZW4gcmVnaXN0ZXIgaXMgc2V0IHRvIDEsIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoYXQgdGhlIHNlbWFwaG9yZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NrZWQgYnkgb25lIG9mIHRoZSBtYXN0ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFYWNoIGJpdCByZXByZXNlbnRzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIGZvbGxvd3M6IHtXTEFOLE5XUH0uIFRoZSBKVEFHCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbm5vdCBjYXB0dXJlIHRoZSBzZW1hcGhvcmUgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGNhbiByZWxlYXNlIGl0LiBBcyBhIG1hc3RlciBJUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkcyB0aGUgc2VtYXBob3JlLCBpdCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhcHV0ZWQgYW5kIHRoZSBtYXN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlbGF0aW5nIGJpdCB3aWxsIGJlIHNldCB0byAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChzZXQgdXBvbiByZWFkKS4gQXMgYW55IElQIHdyaXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGlzIGFkZHJlc3MgKGluZGVwZW5kZW50IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB3cml0dGVuIGRhdGEpIHRoZSBzZW1hcGhvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBzZXQgdG8gMidiMDAuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkU4X01FTV9TRU1BUEhPUkU4X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TRU1BUEhPUkU5IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU0VNQVBIT1JFOV9NRU1fU0VNQVBIT1JFOV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyAgLy8gR2VuZXJhbCBQdXJwb3NlIFNlbWFwaG9yZSBmb3IgU1cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNhZ2UuIElmIGFueSBvZiB0aGUgMiBiaXRzIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2l2ZW4gcmVnaXN0ZXIgaXMgc2V0IHRvIDEsIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoYXQgdGhlIHNlbWFwaG9yZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NrZWQgYnkgb25lIG9mIHRoZSBtYXN0ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFYWNoIGJpdCByZXByZXNlbnRzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIGZvbGxvd3M6IHtXTEFOLE5XUH0uIFRoZSBKVEFHCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbm5vdCBjYXB0dXJlIHRoZSBzZW1hcGhvcmUgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGNhbiByZWxlYXNlIGl0LiBBcyBhIG1hc3RlciBJUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkcyB0aGUgc2VtYXBob3JlLCBpdCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhcHV0ZWQgYW5kIHRoZSBtYXN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlbGF0aW5nIGJpdCB3aWxsIGJlIHNldCB0byAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChzZXQgdXBvbiByZWFkKS4gQXMgYW55IElQIHdyaXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGlzIGFkZHJlc3MgKGluZGVwZW5kZW50IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB3cml0dGVuIGRhdGEpIHRoZSBzZW1hcGhvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBzZXQgdG8gMidiMDAuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkU5X01FTV9TRU1BUEhPUkU5X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TRU1BUEhPUkUxMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX1NFTUFQSE9SRTEwX01FTV9TRU1BUEhPUkUxMF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyAgLy8gR2VuZXJhbCBQdXJwb3NlIFNlbWFwaG9yZSBmb3IgU1cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNhZ2UuIElmIGFueSBvZiB0aGUgMiBiaXRzIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2l2ZW4gcmVnaXN0ZXIgaXMgc2V0IHRvIDEsIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoYXQgdGhlIHNlbWFwaG9yZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NrZWQgYnkgb25lIG9mIHRoZSBtYXN0ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFYWNoIGJpdCByZXByZXNlbnRzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIGZvbGxvd3M6IHtXTEFOLE5XUH0uIFRoZSBKVEFHCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbm5vdCBjYXB0dXJlIHRoZSBzZW1hcGhvcmUgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGNhbiByZWxlYXNlIGl0LiBBcyBhIG1hc3RlciBJUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkcyB0aGUgc2VtYXBob3JlLCBpdCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhcHV0ZWQgYW5kIHRoZSBtYXN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlbGF0aW5nIGJpdCB3aWxsIGJlIHNldCB0byAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChzZXQgdXBvbiByZWFkKS4gQXMgYW55IElQIHdyaXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGlzIGFkZHJlc3MgKGluZGVwZW5kZW50IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB3cml0dGVuIGRhdGEpIHRoZSBzZW1hcGhvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBzZXQgdG8gMidiMDAuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkUxMF9NRU1fU0VNQVBIT1JFMTBfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NFTUFQSE9SRTExIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU0VNQVBIT1JFMTFfTUVNX1NFTUFQSE9SRTExX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyBHZW5lcmFsIFB1cnBvc2UgU2VtYXBob3JlIGZvciBTVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2FnZS4gSWYgYW55IG9mIHRoZSAyIGJpdHMgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnaXZlbiByZWdpc3RlciBpcyBzZXQgdG8gMSwgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVhbnMgdGhhdCB0aGUgc2VtYXBob3JlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2tlZCBieSBvbmUgb2YgdGhlIG1hc3RlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVhY2ggYml0IHJlcHJlc2VudHMgYSBtYXN0ZXIgSVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgZm9sbG93czoge1dMQU4sTldQfS4gVGhlIEpUQUcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Fubm90IGNhcHR1cmUgdGhlIHNlbWFwaG9yZSBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgY2FuIHJlbGVhc2UgaXQuIEFzIGEgbWFzdGVyIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWRzIHRoZSBzZW1hcGhvcmUsIGl0IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FwdXRlZCBhbmQgdGhlIG1hc3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVsYXRpbmcgYml0IHdpbGwgYmUgc2V0IHRvIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHNldCB1cG9uIHJlYWQpLiBBcyBhbnkgSVAgd3JpdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoaXMgYWRkcmVzcyAoaW5kZXBlbmRlbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHdyaXR0ZW4gZGF0YSkgdGhlIHNlbWFwaG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIHNldCB0byAyJ2IwMC4KKworI2RlZmluZSBPQ1BfU0hBUkVEX1NFTUFQSE9SRTExX01FTV9TRU1BUEhPUkUxMV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fU0VNQVBIT1JFMTIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TRU1BUEhPUkUxMl9NRU1fU0VNQVBIT1JFMTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDMgIC8vIEdlbmVyYWwgUHVycG9zZSBTZW1hcGhvcmUgZm9yIFNXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVzYWdlLiBJZiBhbnkgb2YgdGhlIDIgYml0cyBvZiBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdpdmVuIHJlZ2lzdGVyIGlzIHNldCB0byAxLCBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtZWFucyB0aGF0IHRoZSBzZW1hcGhvcmUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9ja2VkIGJ5IG9uZSBvZiB0aGUgbWFzdGVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRWFjaCBiaXQgcmVwcmVzZW50cyBhIG1hc3RlciBJUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyBmb2xsb3dzOiB7V0xBTixOV1B9LiBUaGUgSlRBRworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW5ub3QgY2FwdHVyZSB0aGUgc2VtYXBob3JlIGJ1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCBjYW4gcmVsZWFzZSBpdC4gQXMgYSBtYXN0ZXIgSVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhZHMgdGhlIHNlbWFwaG9yZSwgaXQgd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXB1dGVkIGFuZCB0aGUgbWFzdGVycworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZWxhdGluZyBiaXQgd2lsbCBiZSBzZXQgdG8gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoc2V0IHVwb24gcmVhZCkuIEFzIGFueSBJUCB3cml0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhpcyBhZGRyZXNzIChpbmRlcGVuZGVudCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgd3JpdHRlbiBkYXRhKSB0aGUgc2VtYXBob3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgc2V0IHRvIDInYjAwLgorCisjZGVmaW5lIE9DUF9TSEFSRURfU0VNQVBIT1JFMTJfTUVNX1NFTUFQSE9SRTEyX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19JQ19MT0NLRVJfSUQgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9JQ19MT0NLRVJfSURfTUVNX0lDX0xPQ0tFUl9JRF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNyAgLy8gVGhpcyByZWdpc3RlciBpcyB1c2VkIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2luZyBvbmx5IG9uZSBtYXN0ZXIgT0NQIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBlcmZvcm0gd3JpdGUgdHJhbnNhY3Rpb25zIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPQ1Agc2xhdmVzLiBFYWNoIGJpdCByZXByZXNlbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuIElQIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEpUQUcsV0xBTiwgTldQIG1jdX0uIEFzIGFueSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgYml0cyBpcyBzZXQgdG8gb25lLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVsYXRpbmcgSVAgaXMgcHJldmVudGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXIgSVAncyBmcm9tIHBlcmZvcm1pbmcgd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJhbnNhY3Rpb25zIHRvIHRoZSBzbGF2ZXMuIEFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBJbnRlciBDb25uZWN0IGlzIGxvY2tlZCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgdGhlIGxvY2tpbmcgSVAgY2FuIHdyaXRlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSByZWdpc3RlciBhbmQgYnkgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWxlYXNpbmcgdGhlIGxvY2suIDMnYjAwMCA9PiBJQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBub3QgbG9ja2VkLiAzJ2IwMDEgPT4gSUMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9ja2VkIGJ5IE5XUCBtY3UuIDMnYjAxMCA9PiBJQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBsb2NrZWQgYnkgV0xBTi4gMydiMTAwID0+IElDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGxvY2tlZCBieSBKVEFHLgorCisjZGVmaW5lIE9DUF9TSEFSRURfSUNfTE9DS0VSX0lEX01FTV9JQ19MT0NLRVJfSURfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX01DVV9TRU1BUEhPUkVfUEVORCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX01DVV9TRU1BUEhPUkVfUEVORF9NRU1fTUNVX1NFTUFQSE9SRV9QRU5EX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGICAvLyBUaGlzIHJlZ2lzdGVyIHNwZWNpZmllcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VtYXBob3JlIGZvciB3aGljaCB0aGUgTldQIG1jdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyB3YWl0aW5nIHRvIGJlIHJlbGVhc2VkLiBJdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gdGhlIHNlcmlhbCBudW1iZXIgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnaXZlbiBsb2NrZWQgc2VtYXBob3JlIGFmdGVyIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhcyByZWFkIGJ5IHRoZSBOV1AgbWN1LiBPbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFsxMTowXSBpcyB1c2VkLgorCisjZGVmaW5lIE9DUF9TSEFSRURfTUNVX1NFTUFQSE9SRV9QRU5EX01FTV9NQ1VfU0VNQVBIT1JFX1BFTkRfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1dMX1NFTUFQSE9SRV9QRU5EIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfV0xfU0VNQVBIT1JFX1BFTkRfTUVNX1dMX1NFTUFQSE9SRV9QRU5EX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGICAvLyBUaGlzIHJlZ2lzdGVyIHNwZWNpZmllcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VtYXBob3JlIGZvciB3aGljaCB0aGUgV0xBTiBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3YWl0aW5nIHRvIGJlIHJlbGVhc2VkLiBJdCBpcyBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhlIHNlcmlhbCBudW1iZXIgb2YgYSBnaXZlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NrZWQgc2VtYXBob3JlIGFmdGVyIGl0IHdhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkIGJ5IHRoZSBXTEFOLiBPbmx5IFsxMTowXSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkLgorCisjZGVmaW5lIE9DUF9TSEFSRURfV0xfU0VNQVBIT1JFX1BFTkRfTUVNX1dMX1NFTUFQSE9SRV9QRU5EX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19QTEFURk9STV9ERVRFQ1RJT05fUkRfT05MWSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX1BMQVRGT1JNX0RFVEVDVElPTl9SRF9PTkxZX1BMQVRGT1JNX0RFVEVDVElPTl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwRkZGRiAgLy8gVGhpcyBpbmZvcm1hdGlvbiBzZXJ2ZXMgdGhlIElQcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3Iga25vd2luZyBpbiB3aGljaCBwbGF0Zm9ybSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhleSBpbnRlZ3JhdGVkIGF0OiAwID0gQ0MzMVhYLgorCisjZGVmaW5lIE9DUF9TSEFSRURfUExBVEZPUk1fREVURUNUSU9OX1JEX09OTFlfUExBVEZPUk1fREVURUNUSU9OX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TRU1BUEhPUkVTX1NUQVRVU19SRF9PTkxZIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU0VNQVBIT1JFU19TVEFUVVNfUkRfT05MWV9TRU1BUEhPUkVTX1NUQVRVU19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gQ2FwdHVyZWQvcmVsZWFzZWQgc2VtYXBob3JlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0dXMgZm9yIHRoZSAxMiBzZW1hcGhvcmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFYWNoIGJpdCBvZiB0aGUgMTIgYml0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXByZXNlbnRzIGEgc2VtYXBob3JlLiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbWFwaG9yZSBGcmVlLiAxID0+IFNlbWFwaG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYXB0dXJlZC4KKworI2RlZmluZSBPQ1BfU0hBUkVEX1NFTUFQSE9SRVNfU1RBVFVTX1JEX09OTFlfU0VNQVBIT1JFU19TVEFUVVNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0NDM1hYX0NPTkZJR19DVFJMIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfQ0MzWFhfQ09ORklHX0NUUkxfTUVNX0lDX1RPX0VOIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMCAgLy8gVGhpcyBiaXQgaXMgdXNlZCB0byBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGltZW91dCBtZWNoYW5pc20gZm9yIHRvcF9vY3BfaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGZvciBkZWJ1ZyBwdXJvcHNlKS4gV2hlbiAxIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICwgaW4gY2FzZSBhbnkgb2NwIHNsYXZlIGRvZXNuJ3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2l2ZSBzcmVzcG9uc2Ugd2l0aGluIDE2IGN5bGNsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG9wX2ljIHdpbGwgZ2l2ZSBlcnJvciByZXNwb25zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpdHNlbGYgdG8gYXZvaWQgYnVzIGhhbmdlLgorCisjZGVmaW5lIE9DUF9TSEFSRURfQ0MzWFhfQ09ORklHX0NUUkxfTUVNX0FMVF9QQ19FTl9BUFBTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOCAgLy8gMSBiaXQgc2hvdWxkIGJlIGFjY2Vzc2libGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBkZXZpbml0LiBUaGlzIHdpbGwgZW5hYmxlIDB4NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYWNrIGZvciBhcHBzIHByb2Nlc3NvcgorCisjZGVmaW5lIE9DUF9TSEFSRURfQ0MzWFhfQ09ORklHX0NUUkxfTUVNX0FMVF9QQ19FTl9OVyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQgIC8vIDEgYml0LCBzaG91bGQgYmUgYWNjZXNzaWJsZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIGRldmluaXQuIFRoaXMgd2lsbCBlbmFibGUgMHg0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhY2sgZm9yIG53IHByb2Nlc3NvcgorCisjZGVmaW5lIE9DUF9TSEFSRURfQ0MzWFhfQ09ORklHX0NUUkxfTUVNX0VYVEVORF9OV19ST00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyBXaGVuIHNldCBOVyBjYW4gdGFrZSBvdmVyIGFwcHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm9tIGFuZCBmbGFzaCB2aWEgSURDT0RFIGJ1cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwcyB3aWxsIGFibGUgdG8gYWNjZXNzIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgb25seSBkdXJpbmcgZGV2aW5pdCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXQgdmFsdWUgc2hvdWxkIGJlIDAuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9DT05GSUdfQ1RSTF9NRU1fV0xBTl9IT1NUX0lOVEZfU0VMIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gV2hlbiB0aGlzIGJpdCBpcyBzZXQgdG8gMCBXUFNJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvc3QgaW50ZXJmYWNlIHdpbCBiZSBzZWxlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB0aGlzIGJpdCBpcyBzZXQgdG8gMSAsIFdMQU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9zdCBhc3luYyBicmlkZ2Ugd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZWxlY3RlZC4KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19DQzNYWF9TSEFSRURfTUVNX1NFTF9MU0IgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9TSEFSRURfTUVNX1NFTF9MU0JfTUVNX1NIQVJFRF9NRU1fU0VMX0xTQl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzRkZGRkZGRiAgLy8gVGhpcyByZWdpc3RlciBwcm92aWRlcyBtZW1zcyBSQU0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uIGNvbmZpZ3VyYXRpb24gZm9yIGNvbHVtbiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIDkuIDMgYml0cyBhcmUgYWxsb2NhdGVkIHBlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4uIFRoaXMgcmVnaXN0ZXIgaXMgcmVxdWlyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYmUgY29uZmlndXJlZCBiZWZvcmUgc3RhcnRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkFNIGFjY2Vzcy4gQ2hhbmdpbmcgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0dGluZyB3aGlsZSBjb2RlIGlzIHJ1bm5pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCByZXN1bHQgaW50byB1bnByZWRpY3RhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lbW9yeSBiZWhhdmlvdXIuIFJlZ2lzdGVyIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN1cHBvcnRlZCB0byBjb25maWd1cmVkIG9uZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgY29yZSBpcyBib290ZWQgdXAuIDMgYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuY29kaW5nIHBlciBjb2x1bW4gaXMgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9sbG93czogd2hlbiAwMDAgOiBXTEFOLCAwMDE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5XUCwgMDEwOiBBUFBTLCAwMTE6IFBIWSwgMTAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPQ0xBIGNvbHVtbiAwIHNlbGVjdDogYml0IFsyOjBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDp3aGVuIDAwMCAtPiBXTEFOLDAwMSAtPiBOV1AsMDEwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0+IEFQUFMsIDAxMSAtPiBQSFksIDEwMCAtPiBPQ0xBCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiAxIHNlbGVjdDogYml0IFs1OjNdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDpjb2x1bW4gMiBzZWxlY3Q6IGJpdCBbOCA6IDZdOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gMyBzZWxlY3QgOiBiaXQgWzExOiA5XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gNCBzZWxlY3QgOiBiaXQgWzE0OjEyXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gNSBzZWxlY3QgOiBiaXQgWzE3OjE1XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gNiBzZWxlY3QgOiBiaXQgWzIwOjE4XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gNyBzZWxlY3QgOiBiaXQgWzIzOjIxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gOCBzZWxlY3QgOiBiaXQgWzI2OjI0XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gOSBzZWxlY3QgOiBiaXQgWzI5OjI3XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gMTAgc2VsZWN0CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9TSEFSRURfTUVNX1NFTF9MU0JfTUVNX1NIQVJFRF9NRU1fU0VMX0xTQl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fQ0MzWFhfU0hBUkVEX01FTV9TRUxfTVNCIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfQ0MzWFhfU0hBUkVEX01FTV9TRUxfTVNCX01FTV9TSEFSRURfTUVNX1NFTF9NU0JfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYgIC8vIFRoaXMgcmVnaXN0ZXIgcHJvdmlkZXMgbWVtc3MgUkFNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbiBjb25maWd1cmF0aW9uIGZvciBjb2x1bW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTAgdG8gMTUuIDMgYml0cyBhcmUgYWxsb2NhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBlciBjb2x1bW4uIFRoaXMgcmVnaXN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVxdWlyZWQgdG8gYmUgY29uZmlndXJlZCBiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhcnRpbmcgUkFNIGFjY2Vzcy4gQ2hhbmdpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgc2V0dGluZyB3aGlsZSBjb2RlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJ1bm5pbmcgd2lsbCByZXN1bHQgaW50bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1bnByZWRpY3RhYmxlIG1lbW9yeSBiZWhhdmlvdXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlZ2lzdGVyIGlzIHN1cHBvcnRlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25maWd1cmVkIG9uZXMgYWZ0ZXIgY29yZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBib290ZWQgdXAuIDMgYml0IGVuY29kaW5nIHBlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4gaXMgYXMgZm9sbG93czogd2hlbiAwMDAgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXTEFOLCAwMDE6IE5XUCwgMDEwOiBBUFBTLCAwMTE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBIWSwgMTAwOiBPQ0xBIGNvbHVtbiAxMSBzZWxlY3QgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgWzI6MF0gY29sdW1uIDEyIHNlbGVjdCA6IGJpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbNTozXSBjb2x1bW4gMTMgc2VsZWN0IDogYml0IFs4IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNl0gY29sdW1uIDE0IHNlbGVjdCA6CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9TSEFSRURfTUVNX1NFTF9NU0JfTUVNX1NIQVJFRF9NRU1fU0VMX01TQl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fV0xBTl9FTFBfV0FLRV9FTiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX1dMQU5fRUxQX1dBS0VfRU5fTUVNX1dMQU5fRUxQX1dBS0VfRU4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyB3aGVuICcxJyA6IHNpZ25hbCB3aWxsIGVuYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRUxQIHBvd2VyIGRvYW1pbiB3aGVuICcwJzogRUxQIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdCBwb3dlcmVkIHVwLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0RFVklOSVRfUk9NX1NUQVJUX0FERFIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9ERVZJTklUX1JPTV9TVEFSVF9BRERSX01FTV9ERVZJTklUX1JPTV9TVEFSVF9BRERSX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAzMiBiaXQsIFdyaXRhYmxlIG9ubHkgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRldmluaXQsIGFuZCB3aG9sZSAzMiBiaXQgc2hvdWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlIG91dHB1dCBvZiB0aGUgY29uZmlnIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZHVsZS4gVGhpcyByZWdpc3RlciBpcyBub3QgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAsIHNpbWlsYXIgcmVnaXN0ZXIgYXZhaWxibGUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BSQ00gc3BhY2UuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9ERVZJTklUX1JPTV9TVEFSVF9BRERSX01FTV9ERVZJTklUX1JPTV9TVEFSVF9BRERSX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19ERVZJTklUX1JPTV9FTkRfQUREUiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0RFVklOSVRfUk9NX0VORF9BRERSX01FTV9ERVZJTklUX1JPTV9FTkRfQUREUl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gMzIgYml0LCBXcml0YWJsZSBvbmx5IGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZXZpbml0LCBhbmQgd2hvbGUgMzIgYml0IHNob3VsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZSBvdXRwdXQgb2YgdGhlIGNvbmZpZyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2R1bGUuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9ERVZJTklUX1JPTV9FTkRfQUREUl9NRU1fREVWSU5JVF9ST01fRU5EX0FERFJfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NTQkRfU0VFRCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX1NTQkRfU0VFRF9NRU1fU1NCRF9TRUVEX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAzMiBiaXQsIFdyaXRhYmxlIG9ubHkgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRldmluaXQsIGFuZCB3aG9sZSAzMiBiaXQgc2hvdWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlIG91dHB1dCBvZiB0aGUgY29uZmlnIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZHVsZS4KKworI2RlZmluZSBPQ1BfU0hBUkVEX1NTQkRfU0VFRF9NRU1fU1NCRF9TRUVEX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TU0JEX0NISyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX1NTQkRfQ0hLX01FTV9TU0JEX0NIS19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gMzIgYml0LCBXcml0YWJsZSBvbmx5IGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZXZpbml0LCBhbmQgd2hvbGUgMzIgYml0IHNob3VsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZSBvdXRwdXQgb2YgdGhlIGNvbmZpZyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2R1bGUuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TU0JEX0NIS19NRU1fU1NCRF9DSEtfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NTQkRfUE9MWV9TRUwgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TU0JEX1BPTFlfU0VMX01FTV9TU0JEX1BPTFlfU0VMX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyAyIGJpdCwgV3JpdGFibGUgb25seSBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGV2aW5pdCwgYW5kIHdob2xlIDIgYml0IHNob3VsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZSBvdXRwdXQgb2YgdGhlIGNvbmZpZyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2R1bGUuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TU0JEX1BPTFlfU0VMX01FTV9TU0JEX1BPTFlfU0VMX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX1NQQVJFX1JFR18wX01FTV9TUEFSRV9SRUdfMF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gRGV2aW5pdCBjb2RlIHNob3VsZCBsb29rIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGV0aGVyIGNvcnJlc3BvbmRpbmcgZnVzZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBibG93biBhbmQgaWYgYmxvd24gd3JpdGUgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDExdGggYml0IG9mIHRoaXMgcmVnaXN0ZXIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlzYWJsZSBmbHNodHN0IGludGVyZmFjZQorCisjZGVmaW5lIE9DUF9TSEFSRURfU1BBUkVfUkVHXzBfTUVNX1NQQVJFX1JFR18wX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX1NQQVJFX1JFR18xX01FTV9TUEFSRV9SRUdfMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gTldQIFNvZnR3YXJlIHJlZ2lzdGVyCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TUEFSRV9SRUdfMV9NRU1fU1BBUkVfUkVHXzFfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NQQVJFX1JFR18yIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU1BBUkVfUkVHXzJfTUVNX1NQQVJFX1JFR18yX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBOV1AgU29mdHdhcmUgcmVnaXN0ZXIKKworI2RlZmluZSBPQ1BfU0hBUkVEX1NQQVJFX1JFR18yX01FTV9TUEFSRV9SRUdfMl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fU1BBUkVfUkVHXzMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TUEFSRV9SRUdfM19NRU1fU1BBUkVfUkVHXzNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIEFQUFMgU29mdHdhcmUgcmVnaXN0ZXIKKworI2RlZmluZSBPQ1BfU0hBUkVEX1NQQVJFX1JFR18zX01FTV9TUEFSRV9SRUdfM19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMF9NRU1fR1BJT19QQURfQ09ORklHXzBfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPREVOIiIiIiAtLT4gV2hlbiBsZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzYWJsZXMgdGhlIFBNT1MgeHRvcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBzdGFnZXMgbWFraW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiB0eXBlLiIgIkZvciBleGFtcGxlIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2Ugb2YgSTJDIFZhbHVlIGdldHMgbGF0Y2hlZCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByaXNpbmcgZWRnZSBvZiBSRVQzMy4iIiIgIiIiIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzBfTUVNX0dQSU9fUEFEX0NPTkZJR18wX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18xX01FTV9HUElPX1BBRF9DT05GSUdfMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzFfTUVNX0dQSU9fUEFEX0NPTkZJR18xX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18yX01FTV9HUElPX1BBRF9DT05GSUdfMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzJfTUVNX0dQSU9fUEFEX0NPTkZJR18yX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18zX01FTV9HUElPX1BBRF9DT05GSUdfM19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzNfTUVNX0dQSU9fUEFEX0NPTkZJR18zX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfNCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR180X01FTV9HUElPX1BBRF9DT05GSUdfNF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzRfTUVNX0dQSU9fUEFEX0NPTkZJR180X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfNSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR181X01FTV9HUElPX1BBRF9DT05GSUdfNV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzVfTUVNX0dQSU9fUEFEX0NPTkZJR181X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfNiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR182X01FTV9HUElPX1BBRF9DT05GSUdfNl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzZfTUVNX0dQSU9fUEFEX0NPTkZJR182X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfNyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR183X01FTV9HUElPX1BBRF9DT05GSUdfN19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzdfTUVNX0dQSU9fUEFEX0NPTkZJR183X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfOCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR184X01FTV9HUElPX1BBRF9DT05GSUdfOF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzhfTUVNX0dQSU9fUEFEX0NPTkZJR184X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfOSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR185X01FTV9HUElPX1BBRF9DT05GSUdfOV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzlfTUVNX0dQSU9fUEFEX0NPTkZJR185X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMTAgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMTBfTUVNX0dQSU9fUEFEX0NPTkZJR18xMF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzEwX01FTV9HUElPX1BBRF9DT05GSUdfMTBfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18xMSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18xMV9NRU1fR1BJT19QQURfQ09ORklHXzExX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMTFfTUVNX0dQSU9fUEFEX0NPTkZJR18xMV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzEyIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzEyX01FTV9HUElPX1BBRF9DT05GSUdfMTJfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPREVOIiIiIiAtLT4gV2hlbiBsZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzYWJsZXMgdGhlIFBNT1MgeHRvcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBzdGFnZXMgbWFraW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiB0eXBlLiIgaXQgY2FuIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIEkyQyB0eXBlIG9mIHBlcmlwaGVyYWxzLiA1ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJMk1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCAybUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlIiIiICIiIiA2ID0+ICIiIiJJNE1BRU4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0tPiBMZXZlbCDigJgx4oCZIGVuYWJsZXMgdGhlIGFwcHJveAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgb3V0cHV0IHN0YWdlIiIiICIiIiA3ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJOE1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCA4bUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlLiBOb3RlOiBhbnkgZHJpdmUgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmV0d2VlbiAybUEgYW5kIDE0bUEgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9idGFpbmVkIHdpdGggY29tYmluYXRpb24gb2YgMm1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBhbmQgOG1BLiIiIiAiIiIgOCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUFVFTiIiIiIgLS0+IDEwdUEgcHVsbCB1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDkgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BERU4iIiIiIC0tPiAxMHVBIHB1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93biAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDEwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0VfTiIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGxldmVsIOKAmDDigJkgZW5hYmxlcyB0aGUgSURPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIFBBRCBwYXRoLiBFbHNlIFBBRCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlzdGF0ZWQgKGV4Y2VwdCBmb3IgdGhlIFBVL1BECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFyZSBpbmRlcGVuZGVudCkuIiAiVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0cyBsYXRjaGVkIGF0IHJpc2luZyBlZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFVDMzIiIiICIiIiAxMSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18xMl9NRU1fR1BJT19QQURfQ09ORklHXzEyX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMTMgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMTNfTUVNX0dQSU9fUEFEX0NPTkZJR18xM19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzEzX01FTV9HUElPX1BBRF9DT05GSUdfMTNfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18xNCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18xNF9NRU1fR1BJT19QQURfQ09ORklHXzE0X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMTRfTUVNX0dQSU9fUEFEX0NPTkZJR18xNF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzE1IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzE1X01FTV9HUElPX1BBRF9DT05GSUdfMTVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPREVOIiIiIiAtLT4gV2hlbiBsZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzYWJsZXMgdGhlIFBNT1MgeHRvcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBzdGFnZXMgbWFraW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiB0eXBlLiIgaXQgY2FuIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIEkyQyB0eXBlIG9mIHBlcmlwaGVyYWxzLiA1ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJMk1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCAybUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlIiIiICIiIiA2ID0+ICIiIiJJNE1BRU4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0tPiBMZXZlbCDigJgx4oCZIGVuYWJsZXMgdGhlIGFwcHJveAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgb3V0cHV0IHN0YWdlIiIiICIiIiA3ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJOE1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCA4bUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlLiBOb3RlOiBhbnkgZHJpdmUgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmV0d2VlbiAybUEgYW5kIDE0bUEgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9idGFpbmVkIHdpdGggY29tYmluYXRpb24gb2YgMm1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBhbmQgOG1BLiIiIiAiIiIgOCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUFVFTiIiIiIgLS0+IDEwdUEgcHVsbCB1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDkgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BERU4iIiIiIC0tPiAxMHVBIHB1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93biAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDEwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0VfTiIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGxldmVsIOKAmDDigJkgZW5hYmxlcyB0aGUgSURPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIFBBRCBwYXRoLiBFbHNlIFBBRCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlzdGF0ZWQgKGV4Y2VwdCBmb3IgdGhlIFBVL1BECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFyZSBpbmRlcGVuZGVudCkuIiAiVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0cyBsYXRjaGVkIGF0IHJpc2luZyBlZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFVDMzIiIiICIiIiAxMSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18xNV9NRU1fR1BJT19QQURfQ09ORklHXzE1X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMTYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMTZfTUVNX0dQSU9fUEFEX0NPTkZJR18xNl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzE2X01FTV9HUElPX1BBRF9DT05GSUdfMTZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18xNyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18xN19NRU1fR1BJT19QQURfQ09ORklHXzE3X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMTdfTUVNX0dQSU9fUEFEX0NPTkZJR18xN19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzE4IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzE4X01FTV9HUElPX1BBRF9DT05GSUdfMThfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPREVOIiIiIiAtLT4gV2hlbiBsZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzYWJsZXMgdGhlIFBNT1MgeHRvcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBzdGFnZXMgbWFraW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiB0eXBlLiIgaXQgY2FuIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIEkyQyB0eXBlIG9mIHBlcmlwaGVyYWxzLiA1ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJMk1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCAybUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlIiIiICIiIiA2ID0+ICIiIiJJNE1BRU4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0tPiBMZXZlbCDigJgx4oCZIGVuYWJsZXMgdGhlIGFwcHJveAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgb3V0cHV0IHN0YWdlIiIiICIiIiA3ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJOE1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCA4bUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlLiBOb3RlOiBhbnkgZHJpdmUgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmV0d2VlbiAybUEgYW5kIDE0bUEgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9idGFpbmVkIHdpdGggY29tYmluYXRpb24gb2YgMm1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBhbmQgOG1BLiIiIiAiIiIgOCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUFVFTiIiIiIgLS0+IDEwdUEgcHVsbCB1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDkgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BERU4iIiIiIC0tPiAxMHVBIHB1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93biAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDEwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0VfTiIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGxldmVsIOKAmDDigJkgZW5hYmxlcyB0aGUgSURPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIFBBRCBwYXRoLiBFbHNlIFBBRCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlzdGF0ZWQgKGV4Y2VwdCBmb3IgdGhlIFBVL1BECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFyZSBpbmRlcGVuZGVudCkuIiAiVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0cyBsYXRjaGVkIGF0IHJpc2luZyBlZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFVDMzIiIiICIiIiAxMSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18xOF9NRU1fR1BJT19QQURfQ09ORklHXzE4X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMTkgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMTlfTUVNX0dQSU9fUEFEX0NPTkZJR18xOV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzE5X01FTV9HUElPX1BBRF9DT05GSUdfMTlfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18yMCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18yMF9NRU1fR1BJT19QQURfQ09ORklHXzIwX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMjBfTUVNX0dQSU9fUEFEX0NPTkZJR18yMF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzIxIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzIxX01FTV9HUElPX1BBRF9DT05GSUdfMjFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPREVOIiIiIiAtLT4gV2hlbiBsZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzYWJsZXMgdGhlIFBNT1MgeHRvcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBzdGFnZXMgbWFraW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiB0eXBlLiIgaXQgY2FuIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIEkyQyB0eXBlIG9mIHBlcmlwaGVyYWxzLiA1ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJMk1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCAybUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlIiIiICIiIiA2ID0+ICIiIiJJNE1BRU4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0tPiBMZXZlbCDigJgx4oCZIGVuYWJsZXMgdGhlIGFwcHJveAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgb3V0cHV0IHN0YWdlIiIiICIiIiA3ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJOE1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCA4bUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlLiBOb3RlOiBhbnkgZHJpdmUgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmV0d2VlbiAybUEgYW5kIDE0bUEgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9idGFpbmVkIHdpdGggY29tYmluYXRpb24gb2YgMm1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBhbmQgOG1BLiIiIiAiIiIgOCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUFVFTiIiIiIgLS0+IDEwdUEgcHVsbCB1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDkgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BERU4iIiIiIC0tPiAxMHVBIHB1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93biAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDEwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0VfTiIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGxldmVsIOKAmDDigJkgZW5hYmxlcyB0aGUgSURPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIFBBRCBwYXRoLiBFbHNlIFBBRCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlzdGF0ZWQgKGV4Y2VwdCBmb3IgdGhlIFBVL1BECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFyZSBpbmRlcGVuZGVudCkuIiAiVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0cyBsYXRjaGVkIGF0IHJpc2luZyBlZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFVDMzIiIiICIiIiAxMSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18yMV9NRU1fR1BJT19QQURfQ09ORklHXzIxX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMjIgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMjJfTUVNX0dQSU9fUEFEX0NPTkZJR18yMl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzIyX01FTV9HUElPX1BBRF9DT05GSUdfMjJfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18yMyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18yM19NRU1fR1BJT19QQURfQ09ORklHXzIzX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMjNfTUVNX0dQSU9fUEFEX0NPTkZJR18yM19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzI0IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzI0X01FTV9HUElPX1BBRF9DT05GSUdfMjRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPREVOIiIiIiAtLT4gV2hlbiBsZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzYWJsZXMgdGhlIFBNT1MgeHRvcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBzdGFnZXMgbWFraW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiB0eXBlLiIgaXQgY2FuIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIEkyQyB0eXBlIG9mIHBlcmlwaGVyYWxzLiA1ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJMk1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCAybUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlIiIiICIiIiA2ID0+ICIiIiJJNE1BRU4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0tPiBMZXZlbCDigJgx4oCZIGVuYWJsZXMgdGhlIGFwcHJveAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgb3V0cHV0IHN0YWdlIiIiICIiIiA3ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJOE1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCA4bUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlLiBOb3RlOiBhbnkgZHJpdmUgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmV0d2VlbiAybUEgYW5kIDE0bUEgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9idGFpbmVkIHdpdGggY29tYmluYXRpb24gb2YgMm1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBhbmQgOG1BLiIiIiAiIiIgOCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUFVFTiIiIiIgLS0+IDEwdUEgcHVsbCB1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDkgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BERU4iIiIiIC0tPiAxMHVBIHB1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93biAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDEwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0VfTiIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGxldmVsIOKAmDDigJkgZW5hYmxlcyB0aGUgSURPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIFBBRCBwYXRoLiBFbHNlIFBBRCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlzdGF0ZWQgKGV4Y2VwdCBmb3IgdGhlIFBVL1BECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFyZSBpbmRlcGVuZGVudCkuIiAiVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0cyBsYXRjaGVkIGF0IHJpc2luZyBlZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFVDMzIiIiICIiIiAxMSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18yNF9NRU1fR1BJT19QQURfQ09ORklHXzI0X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMjUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMjVfTUVNX0dQSU9fUEFEX0NPTkZJR18yNV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzI1X01FTV9HUElPX1BBRF9DT05GSUdfMjVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18yNiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18yNl9NRU1fR1BJT19QQURfQ09ORklHXzI2X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMjZfTUVNX0dQSU9fUEFEX0NPTkZJR18yNl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzI3IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzI3X01FTV9HUElPX1BBRF9DT05GSUdfMjdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPREVOIiIiIiAtLT4gV2hlbiBsZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzYWJsZXMgdGhlIFBNT1MgeHRvcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBzdGFnZXMgbWFraW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiB0eXBlLiIgaXQgY2FuIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIEkyQyB0eXBlIG9mIHBlcmlwaGVyYWxzLiA1ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJMk1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCAybUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlIiIiICIiIiA2ID0+ICIiIiJJNE1BRU4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0tPiBMZXZlbCDigJgx4oCZIGVuYWJsZXMgdGhlIGFwcHJveAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgb3V0cHV0IHN0YWdlIiIiICIiIiA3ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJOE1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCA4bUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlLiBOb3RlOiBhbnkgZHJpdmUgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmV0d2VlbiAybUEgYW5kIDE0bUEgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9idGFpbmVkIHdpdGggY29tYmluYXRpb24gb2YgMm1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBhbmQgOG1BLiIiIiAiIiIgOCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUFVFTiIiIiIgLS0+IDEwdUEgcHVsbCB1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDkgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BERU4iIiIiIC0tPiAxMHVBIHB1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93biAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDEwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0VfTiIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGxldmVsIOKAmDDigJkgZW5hYmxlcyB0aGUgSURPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIFBBRCBwYXRoLiBFbHNlIFBBRCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlzdGF0ZWQgKGV4Y2VwdCBmb3IgdGhlIFBVL1BECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFyZSBpbmRlcGVuZGVudCkuIiAiVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0cyBsYXRjaGVkIGF0IHJpc2luZyBlZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFVDMzIiIiICIiIiAxMSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18yN19NRU1fR1BJT19QQURfQ09ORklHXzI3X1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMjggcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMjhfTUVNX0dQSU9fUEFEX0NPTkZJR18yOF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzI4X01FTV9HUElPX1BBRF9DT05GSUdfMjhfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18yOSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18yOV9NRU1fR1BJT19QQURfQ09ORklHXzI5X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMjlfTUVNX0dQSU9fUEFEX0NPTkZJR18yOV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzMwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzMwX01FTV9HUElPX1BBRF9DT05GSUdfMzBfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDBGRkYgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPREVOIiIiIiAtLT4gV2hlbiBsZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzYWJsZXMgdGhlIFBNT1MgeHRvcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBzdGFnZXMgbWFraW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiB0eXBlLiIgaXQgY2FuIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIEkyQyB0eXBlIG9mIHBlcmlwaGVyYWxzLiA1ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJMk1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCAybUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlIiIiICIiIiA2ID0+ICIiIiJJNE1BRU4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0tPiBMZXZlbCDigJgx4oCZIGVuYWJsZXMgdGhlIGFwcHJveAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgb3V0cHV0IHN0YWdlIiIiICIiIiA3ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJOE1BRU4iIiIiIC0tPiBMZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZXMgdGhlIGFwcHJveCA4bUEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWdlLiBOb3RlOiBhbnkgZHJpdmUgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmV0d2VlbiAybUEgYW5kIDE0bUEgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9idGFpbmVkIHdpdGggY29tYmluYXRpb24gb2YgMm1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBhbmQgOG1BLiIiIiAiIiIgOCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUFVFTiIiIiIgLS0+IDEwdUEgcHVsbCB1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDkgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BERU4iIiIiIC0tPiAxMHVBIHB1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93biAod2VhayBzdHJlbmd0aCkiIiIgIiIiIDEwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0VfTiIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGxldmVsIOKAmDDigJkgZW5hYmxlcyB0aGUgSURPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIFBBRCBwYXRoLiBFbHNlIFBBRCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlzdGF0ZWQgKGV4Y2VwdCBmb3IgdGhlIFBVL1BECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFyZSBpbmRlcGVuZGVudCkuIiAiVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0cyBsYXRjaGVkIGF0IHJpc2luZyBlZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJFVDMzIiIiICIiIiAxMSA9PiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX05fT1YiIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJpcmRlLiB3aGVuIGJpdCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgJzEnIElPRV9OIChiaXQgNCkgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb250cm9sIElPIElPRV9OIHNpZ25hbCBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OIGlzIGNvbnRyb2wgdmlhIHNlbGVjdGVkIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljLiBzdHJvbmcgUFVMTCBVUCBhbmQgUFVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duIGNvbnRyb2wgaXMgZGlzYWJsZWQgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJTydzLiBib3RoIGNvbnRyb2xzIGFyZSB0aWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljIGxldmVsICcwJy4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18zMF9NRU1fR1BJT19QQURfQ09ORklHXzMwX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19HUElPX1BBRF9DT05GSUdfMzEgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzFfTUVNX0dQSU9fUEFEX0NPTkZJR18zMV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMEZGRiAgLy8gR1BJTyAwIHJlZ2lzdGVyOiAiQml0IDAgLSAzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIFBBRCBJTyBtb2RlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW9fcmVnaXN0ZXI9eyAiIiAwID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVswXSIiIiIiIiAiIiAxID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsxXSIiIiIiIiAiIiAyID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVsyXSIiIiIiIiAiIiAzID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJDT05GTU9ERVszXSIiIiIgNCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9ERU4iIiIiIC0tPiBXaGVuIGxldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNhYmxlcyB0aGUgUE1PUyB4dG9ycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHN0YWdlcyBtYWtpbmcgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVuLWRyYWluIHR5cGUuIiBpdCBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgSTJDIHR5cGUgb2YgcGVyaXBoZXJhbHMuIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzMxX01FTV9HUElPX1BBRF9DT05GSUdfMzFfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NPTkZJR18zMiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NPTkZJR18zMl9NRU1fR1BJT19QQURfQ09ORklHXzMyX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwRkZGICAvLyBHUElPIDAgcmVnaXN0ZXI6ICJCaXQgMCAtIDMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBmb3IgUEFEIElPIG1vZGUgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpb19yZWdpc3Rlcj17ICIiIDAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzBdIiIiIiIiICIiIDEgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzFdIiIiIiIiICIiIDIgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzJdIiIiIiIiICIiIDMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkNPTkZNT0RFWzNdIiIiIiA0ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJT0RFTiIiIiIgLS0+IFdoZW4gbGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGRpc2FibGVzIHRoZSBQTU9TIHh0b3JzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgc3RhZ2VzIG1ha2luZyB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW4tZHJhaW4gdHlwZS4iIGl0IGNhbiBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBJMkMgdHlwZSBvZiBwZXJpcGhlcmFscy4gNSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSTJNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggMm1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZSIiIiAiIiIgNiA9PiAiIiIiSTRNQUVOIiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtLT4gTGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBhcHByb3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIG91dHB1dCBzdGFnZSIiIiAiIiIgNyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSThNQUVOIiIiIiAtLT4gTGV2ZWwg4oCYMeKAmQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRoZSBhcHByb3ggOG1BIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFnZS4gTm90ZTogYW55IGRyaXZlIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gMm1BIGFuZCAxNG1BIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYnRhaW5lZCB3aXRoIGNvbWJpbmF0aW9uIG9mIDJtQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0bUEgYW5kIDhtQS4iIiIgIiIiIDggPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklXS1BVRU4iIiIiIC0tPiAxMHVBIHB1bGwgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiA5ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQREVOIiIiIiAtLT4gMTB1QSBwdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd24gKHdlYWsgc3RyZW5ndGgpIiIiICIiIiAxMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSU9FX04iIiIiIC0tPiBvdXRwdXQgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBsZXZlbCDigJgw4oCZIGVuYWJsZXMgdGhlIElETworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBQQUQgcGF0aC4gRWxzZSBQQUQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpc3RhdGVkIChleGNlcHQgZm9yIHRoZSBQVS9QRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhcmUgaW5kZXBlbmRlbnQpLiIgIlZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcgZWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVQzMyIiIiAiIiIgMTEgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzJfTUVNX0dQSU9fUEFEX0NPTkZJR18zMl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzMzIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzMzX01FTV9HUElPX1BBRF9DT05GSUdfMzNfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwM0YgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDUgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuIElPREVOIGFuZCBJOE1BRU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgZGllc2FibGVkIGZvciBhbGwgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gVGhlc2Ugc2lnbmFscyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuIGNvbW1vbiBjb250cm9sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGltcGxlbWVudGVkIGZvciBJMk1BRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEk0TUFFTiwgV0tQVSwgV0tQRCBjb250cm9sIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVmZXIgZGV2X3BhZF9jbW5fY29uZmlnIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdHMuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzNfTUVNX0dQSU9fUEFEX0NPTkZJR18zM19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzM0IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzM0X01FTV9HUElPX1BBRF9DT05GSUdfMzRfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwM0YgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDUgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuIElPREVOIGFuZCBJOE1BRU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgZGllc2FibGVkIGZvciBhbGwgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gVGhlc2Ugc2lnbmFscyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuIGNvbW1vbiBjb250cm9sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGltcGxlbWVudGVkIGZvciBJMk1BRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEk0TUFFTiwgV0tQVSwgV0tQRCBjb250cm9sIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVmZXIgZGV2X3BhZF9jbW5fY29uZmlnIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdHMuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzRfTUVNX0dQSU9fUEFEX0NPTkZJR18zNF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzM1IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzM1X01FTV9HUElPX1BBRF9DT05GSUdfMzVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwM0YgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDUgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuIElPREVOIGFuZCBJOE1BRU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgZGllc2FibGVkIGZvciBhbGwgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gVGhlc2Ugc2lnbmFscyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuIGNvbW1vbiBjb250cm9sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGltcGxlbWVudGVkIGZvciBJMk1BRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEk0TUFFTiwgV0tQVSwgV0tQRCBjb250cm9sIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVmZXIgZGV2X3BhZF9jbW5fY29uZmlnIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdHMuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzVfTUVNX0dQSU9fUEFEX0NPTkZJR18zNV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzM2IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzM2X01FTV9HUElPX1BBRF9DT05GSUdfMzZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwM0YgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDUgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuIElPREVOIGFuZCBJOE1BRU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgZGllc2FibGVkIGZvciBhbGwgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gVGhlc2Ugc2lnbmFscyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuIGNvbW1vbiBjb250cm9sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGltcGxlbWVudGVkIGZvciBJMk1BRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEk0TUFFTiwgV0tQVSwgV0tQRCBjb250cm9sIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVmZXIgZGV2X3BhZF9jbW5fY29uZmlnIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdHMuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzZfTUVNX0dQSU9fUEFEX0NPTkZJR18zNl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzM3IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzM3X01FTV9HUElPX1BBRF9DT05GSUdfMzdfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwM0YgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDUgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuIElPREVOIGFuZCBJOE1BRU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgZGllc2FibGVkIGZvciBhbGwgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gVGhlc2Ugc2lnbmFscyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuIGNvbW1vbiBjb250cm9sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGltcGxlbWVudGVkIGZvciBJMk1BRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEk0TUFFTiwgV0tQVSwgV0tQRCBjb250cm9sIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVmZXIgZGV2X3BhZF9jbW5fY29uZmlnIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdHMuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzdfTUVNX0dQSU9fUEFEX0NPTkZJR18zN19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzM4IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzM4X01FTV9HUElPX1BBRF9DT05GSUdfMzhfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwM0YgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDUgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuIElPREVOIGFuZCBJOE1BRU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgZGllc2FibGVkIGZvciBhbGwgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gVGhlc2Ugc2lnbmFscyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuIGNvbW1vbiBjb250cm9sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGltcGxlbWVudGVkIGZvciBJMk1BRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEk0TUFFTiwgV0tQVSwgV0tQRCBjb250cm9sIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVmZXIgZGV2X3BhZF9jbW5fY29uZmlnIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdHMuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzhfTUVNX0dQSU9fUEFEX0NPTkZJR18zOF9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzM5IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzM5X01FTV9HUElPX1BBRF9DT05GSUdfMzlfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwM0YgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDUgPT4iIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPRV9OX09WIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyaXJkZS4gd2hlbiBiaXQgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljICcxJyBJT0VfTiAoYml0IDQpIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udHJvbCBJTyBJT0VfTiBzaWduYWwgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTiBpcyBjb250cm9sIHZpYSBzZWxlY3RlZCBIVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYy4gc3Ryb25nIFBVTEwgVVAgYW5kIFBVTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93biBjb250cm9sIGlzIGRpc2FibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gYm90aCBjb250cm9scyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuIElPREVOIGFuZCBJOE1BRU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgZGllc2FibGVkIGZvciBhbGwgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8ncy4gVGhlc2Ugc2lnbmFscyBhcmUgdGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyBsZXZlbCAnMCcuIGNvbW1vbiBjb250cm9sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGltcGxlbWVudGVkIGZvciBJMk1BRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEk0TUFFTiwgV0tQVSwgV0tQRCBjb250cm9sIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVmZXIgZGV2X3BhZF9jbW5fY29uZmlnIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdHMuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DT05GSUdfMzlfTUVNX0dQSU9fUEFEX0NPTkZJR18zOV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fR1BJT19QQURfQ09ORklHXzQwIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzQwX01FTV9HUElPX1BBRF9DT05GSUdfNDBfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwN0ZGRkYgIC8vIEdQSU8gMCByZWdpc3RlcjogIkJpdCAwIC0gMyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGZvciBQQUQgSU8gbW9kZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlvX3JlZ2lzdGVyPXsgIiIgMCA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMF0iIiIiIiIgIiIgMSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMV0iIiIiIiIgIiIgMiA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbMl0iIiIiIiIgIiIgMyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiQ09ORk1PREVbM10iIiIiIDQgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPREVOIiIiIiAtLT4gV2hlbiBsZXZlbCDigJgx4oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzYWJsZXMgdGhlIFBNT1MgeHRvcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBzdGFnZXMgbWFraW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Blbi1kcmFpbiB0eXBlLiIgIkZvciBleGFtcGxlIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2Ugb2YgSTJDIFZhbHVlIGdldHMgbGF0Y2hlZCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByaXNpbmcgZWRnZSBvZiBSRVQzMy4iIiIgIiIiIDUgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkkyTUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDJtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UiIiIgIiIiIDYgPT4gIiIiIkk0TUFFTiIiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLS0+IExldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgYXBwcm94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDRtQSBvdXRwdXQgc3RhZ2UiIiIgIiIiIDcgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIkk4TUFFTiIiIiIgLS0+IExldmVsIOKAmDHigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0aGUgYXBwcm94IDhtQSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhZ2UuIE5vdGU6IGFueSBkcml2ZSBzdHJlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIDJtQSBhbmQgMTRtQSBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2J0YWluZWQgd2l0aCBjb21iaW5hdGlvbiBvZiAybUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNG1BIGFuZCA4bUEuIiIiICIiIiA4ID0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIiIiJJV0tQVUVOIiIiIiAtLT4gMTB1QSBwdWxsIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgOSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiIiIiSVdLUERFTiIiIiIgLS0+IDEwdUEgcHVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duICh3ZWFrIHN0cmVuZ3RoKSIiIiAiIiIgMTAgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiIiIklPRV9OIiIiIiAtLT4gb3V0cHV0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gbGV2ZWwg4oCYMOKAmSBlbmFibGVzIHRoZSBJRE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gUEFEIHBhdGguIEVsc2UgUEFEIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaXN0YXRlZCAoZXhjZXB0IGZvciB0aGUgUFUvUEQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIGluZGVwZW5kZW50KS4iICJWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nIGVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVUMzMiIiIgIiIiIDExID0+IiIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJT0VfTl9PViIiIiIgLS0+IG91dHB1dCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmlyZGUuIHdoZW4gYml0IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpYyAnMScgSU9FX04gKGJpdCA0KSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnRyb2wgSU8gSU9FX04gc2lnbmFsIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU9FX04gaXMgY29udHJvbCB2aWEgc2VsZWN0ZWQgSFcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMuIHN0cm9uZyBQVUxMIFVQIGFuZCBQVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd24gY29udHJvbCBpcyBkaXNhYmxlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElPJ3MuIGJvdGggY29udHJvbHMgYXJlIHRpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9naWMgbGV2ZWwgJzAnLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ09ORklHXzQwX01FTV9HUElPX1BBRF9DT05GSUdfNDBfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0dQSU9fUEFEX0NNTl9DT05GSUcgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DTU5fQ09ORklHX01FTV9EMkRfSVNPX0FfRU4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDgwICAvLyB3aGVuICcxJyBlbmFibGUgSVNPIEEgY29udHJvbCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEMkQgUGFkcyBlbHNlIElTTyBpcyBkaXNhYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIHRoZXNlIFBBRFMgdG8gYmUgZnVuY3Rpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHNpZ25hbHMgc2hvdWxkIGJlIHNldCAwLgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ01OX0NPTkZJR19NRU1fRDJEX0lTT19ZX0VOIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0MCAgLy8gd2hlbiAnMScgZW5hYmxlIElTTyBZIGNvbnRyb2wgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRDJEIFBhZHMgZWxzZSBJU08gaXMgZGlzYWJsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciB0aGVzZSBQQURTIHRvIGJlIGZ1bmN0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBzaWduYWxzIHNob3VsZCBiZSBzZXQgMC4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NNTl9DT05GSUdfTUVNX1BBRF9KVEFHX0lESUVOIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMCAgLy8gSWYgbGV2ZWwg4oCYMeKAmSBlbmFibGVzIHRoZSBQQUQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT0RJIHBhdGggZm9yIEpUQUcgUEFEUyBbUEFEIDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyNCwgMjgsIDI5XS4gRWxzZSBPREkgaXMgcHVsbGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOKAmExvd+KAmSByZWdhcmRsZXNzIG9mIFBBRCBsZXZlbC4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICJWYWx1ZSBnZXRzIGxhdGNoZWQgYXQgcmlzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVkZ2Ugb2YgUkVUMzMuIiIiICIiIgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ01OX0NPTkZJR19NRU1fUEFEX0hZU1RWQUxfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTggIC8vIDAw4oCZOiBoeXN0ZXJpcmlzID0gMTAlIG9mIFZERFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGRpZmZlcmVuY2UgYmV0d2VlbiB1cHBlciBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG93ZXIgdGhyZXNob2xkIG9mIHRoZSBzY2htaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlcikg4oCYMDHigJk6IGh5c3RlcmlyaXMgPSAyMCUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgVkREUyAoZGlmZmVyZW5jZSBiZXR3ZWVuIHVwcGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBsb3dlciB0aHJlc2hvbGQgb2YgdGhlIHNjaG1pdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyKSDigJgxMOKAmTogaHlzdGVyaXJpcyA9IDMwJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBWRERTIChkaWZmZXJlbmNlIGJldHdlZW4gdXBwZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGxvd2VyIHRocmVzaG9sZCBvZiB0aGUgc2NobWl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIpIOKAmDEx4oCZOiBoeXN0ZXJpcmlzID0gNDAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIFZERFMgKGRpZmZlcmVuY2UgYmV0d2VlbiB1cHBlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbG93ZXIgdGhyZXNob2xkIG9mIHRoZSBzY2htaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlcikiICIiIgorCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ01OX0NPTkZJR19NRU1fUEFEX0hZU1RWQUxfUyAzCisjZGVmaW5lIE9DUF9TSEFSRURfR1BJT19QQURfQ01OX0NPTkZJR19NRU1fUEFEX0hZU1RFTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQgIC8vIElmIGxvZ2ljIOKAmDDigJkgdGhlcmUgaXMgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHlzdGVyZXNpcy4gU2V0IHRvIOKAmDHigJkgdG8gZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh5c3RlcmVzaXMuIExlYXZlIHRoZSBjaG9pY2UgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3VzdG9tZXJzIiIiCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9HUElPX1BBRF9DTU5fQ09ORklHX01FTV9QQURfSUJJQVNFTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgIC8vIE5vcm1hbCBmdW5jdGlvbmFsIG9wZXJhdGlvbiBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyB0byBsb2dpYyDigJgx4oCZIHRvIGluY3JlYXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGVlZCBvZiB0aGUgby9wIGJ1ZmZlciBhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29zdCBvZiAwLjJ1QSBzdGF0aWMgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdW1wdGlvbiBwZXIgSU8uIER1cmluZyBJRERRCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRlc3QgYW5kIGR1cmluZyBIaWJlcm5hdGUgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3b3VsZCBiZSBmb3JjZWQgdG8gbG9naWMg4oCYMOKAmS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmFsdWUgaXMgbm90IGxhdGNoZWQgYXQgcmlzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVkZ2Ugb2YgUkVUMzMuIiIKKworI2RlZmluZSBPQ1BfU0hBUkVEX0dQSU9fUEFEX0NNTl9DT05GSUdfTUVNX1BBRF9JRElFTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIElmIGxldmVsIOKAmDHigJkgZW5hYmxlcyB0aGUgUEFEIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9ESSBwYXRoLiBFbHNlIE9ESSBpcyBwdWxsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g4oCYTG934oCZIHJlZ2FyZGxlc3Mgb2YgUEFEIGxldmVsLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIlZhbHVlIGdldHMgbGF0Y2hlZCBhdCByaXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWRnZSBvZiBSRVQzMy4iIiIgIiIiCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fRDJEX0RFVl9QQURfQ01OX0NPTkZJRyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0QyRF9ERVZfUEFEX0NNTl9DT05GSUdfTUVNX0RFVl9QQURfQ01OX0NPTkZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwM0YgIC8vIHRoaXMgcmVnaXN0ZXIgaW1wbGVtZW50cyBjb21tb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU8gY29udHJvbCB0byBhbGwgZGV2ZW1lbnQgbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQQURzOyB0aGVzZSBQQURzIGFyZSBERVZfUEFEMzMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gREVWX1BBRDM5LiBCaXQgWzE6MF0gOiBEcml2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJlbmd0aCBjb250cm9sLiBUaGVzZSAyIGJpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGNvbm5lY3RlZCB0byBERVYgUEFEIGRyaXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cmVuZ3RoIGNvbnRyb2wuIHBvc3NpYmxlIGRyaXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cmVnbnRocyBhcmUgMk1BLCA0TUEgYW5kIDYgTUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHRoZSB0aGVzZSBJTydzLiBiaXQgMDogd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gbG9naWMgdmFsdWUgJzEnIGVuYWJsZSAyTUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJpdmUgc3RyZW5ndGggZm9yIERFVlBBRDAxIHRvIDA3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCAxOiB3aGVuIHNldCB0byBsb2dpYyB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAnMScgZW5hYmxlIDRNQSBkcml2ZSBzdHJlbmd0aCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gREVWUEFEMDEgdG8gMDcuIGJpdFszOjJdIDogV0sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUFVMTCBVUCBhbmQgUFVMTCBkb3duIGNvbnRyb2wuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXNlIDIgYml0cyBwcm92aWRlIElXS1BVRU4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElXS1BERU4gY29udHJvbCBmb3IgYWxsIERFViBJTydzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgMjogd2hlbiBzZXQgdG8gbG9naWMgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEnIGVuYWJsZSBXS1BVIHRvIERFVlBBRDAxIHRvIDA3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCAzOiB3aGVuIHNldCB0byBsb2dpYyB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAnMScgZW5hYmxlIFdLUEQgdG8gREVWUEFEMDEgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDcuIGJpdCA0OiBXSyBQVUxMIGNvbnRyb2wgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERFVl9QS0dfREVURUNUIHBpbi4gd2hlbiAnMScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHVsbHVwIGVuYWJsZWQgZWxzZSBpdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXNhYmxlLiBiaXQgNTogd2hlbiBzZXQgdG8gbG9naWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUgJzEnIGVuYWJsZSA4TUEgZHJpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RyZW5ndGggZm9yIERFVlBBRDAxIHRvIDA3LgorCisjZGVmaW5lIE9DUF9TSEFSRURfRDJEX0RFVl9QQURfQ01OX0NPTkZJR19NRU1fREVWX1BBRF9DTU5fQ09ORl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fRDJEX1RPU1RBQ0tfUEFEX0NPTkYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9EMkRfVE9TVEFDS19QQURfQ09ORl9NRU1fRDJEX1RPU1RBQ0tfUEFEX0NPTkZfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUZGRkZGRkYgIC8vIE9FTi9PRU4yWCBjb250cm9sLiBXaGVuIDAgOiBBY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgaW5wdXQgYnVmZmVyIGVsc2Ugb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1ZmZlciB3aXRoIGRyaXZlIHN0cmVuZ3RoIDIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgcmVnaXN0ZXIgY29udHJvbCBPRU4yWCBwaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgRDJEIFRPU1RBQ0sgUEFEOiBPRU4xWCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT0VOMlggZGVjb2RpbmcgaXMgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIndoZW4gIiIwMCIiIDoiICJ3aGVuICIiMDEiIiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpcnZlIHN0cmVuZ3RoIGlzICcxJyBhbmQgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1ZmZlciBlbmFibGVkLiIgIndoZW4gIiIxMCIiIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJpdmUgc3RyZW5ndGggaXMgMiBhbmQgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1ZmZlciBpcyBkaXNhYmxlZC4iICJ3aGVuICIiMTEiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6IGRpcnZlIHN0cmVuZ3RoIGlzICczJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0IGJ1ZmZlciBlbmFibGVkLiIKKworI2RlZmluZSBPQ1BfU0hBUkVEX0QyRF9UT1NUQUNLX1BBRF9DT05GX01FTV9EMkRfVE9TVEFDS19QQURfQ09ORl9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fRDJEX01JU0NfUEFEX0NPTkYgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9EMkRfTUlTQ19QQURfQ09ORl9NRU1fRDJEX1BPUl9SRVNFVF9OIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDIwMCAgLy8gVGhpcyByZWdpc3RlciBwcm92aWRlIE9FTjJYCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRyb2wgdG8gRDJEIFBBRFMgT0VOL09FTjJYCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRyb2wuIFdoZW4gMCA6IEFjdCBhcyBpbnB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidWZmZXIgZWxzZSBvdXRwdXQgYnVmZmVyIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJpdmUgc3RyZW5ndGggMi4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0QyRF9NSVNDX1BBRF9DT05GX01FTV9EMkRfUkVTRVRfTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8vIE9FTi9PRU4yWCBjb250cm9sLiBXaGVuIDAgOiBBY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgaW5wdXQgYnVmZmVyIGVsc2Ugb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1ZmZlciB3aXRoIGRyaXZlIHN0cmVuZ3RoIDIuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9EMkRfTUlTQ19QQURfQ09ORl9NRU1fRDJEX0hDTEsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDgwICAvLyBPRU4vT0VOMlggY29udHJvbC4gV2hlbiAwIDogQWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIGlucHV0IGJ1ZmZlciBlbHNlIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidWZmZXIgd2l0aCBkcml2ZSBzdHJlbmd0aCAyLgorCisjZGVmaW5lIE9DUF9TSEFSRURfRDJEX01JU0NfUEFEX0NPTkZfTUVNX0QyRF9KVEFHX1RDSyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDAgIC8vIE9FTi9PRU4yWCBjb250cm9sLiBXaGVuIDAgOiBBY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgaW5wdXQgYnVmZmVyIGVsc2Ugb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1ZmZlciB3aXRoIGRyaXZlIHN0cmVuZ3RoIDIuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9EMkRfTUlTQ19QQURfQ09ORl9NRU1fRDJEX0pUQUdfVE1TIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMCAgLy8gT0VOL09FTjJYIGNvbnRyb2wuIFdoZW4gMCA6IEFjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyBpbnB1dCBidWZmZXIgZWxzZSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIHdpdGggZHJpdmUgc3RyZW5ndGggMi4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0QyRF9NSVNDX1BBRF9DT05GX01FTV9EMkRfSlRBR19UREkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwICAvLyBPRU4vT0VOMlggY29udHJvbC4gV2hlbiAwIDogQWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIGlucHV0IGJ1ZmZlciBlbHNlIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidWZmZXIgd2l0aCBkcml2ZSBzdHJlbmd0aCAyLgorCisjZGVmaW5lIE9DUF9TSEFSRURfRDJEX01JU0NfUEFEX0NPTkZfTUVNX0QyRF9QSU9TQyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDggIC8vIE9FTi9PRU4yWCBjb250cm9sLiBXaGVuIDAgOiBBY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgaW5wdXQgYnVmZmVyIGVsc2Ugb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1ZmZlciB3aXRoIGRyaXZlIHN0cmVuZ3RoIDIuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9EMkRfTUlTQ19QQURfQ09ORl9NRU1fRDJEX1NQQVJFX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA3ICAvLyBEMkQgU1BBUkUgUEFEIE9FTi9PRU4yWCBjb250cm9sLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIDA6IEFjdCBhcyBpbnB1dCBidWZmZXIgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXQgYnVmZmVyIHdpdGggZHJpdmUgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMi4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0QyRF9NSVNDX1BBRF9DT05GX01FTV9EMkRfU1BBUkVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NPUF9DT05GX09WRVJSSURFIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU09QX0NPTkZfT1ZFUlJJREVfTUVNX1NPUF9DT05GX09WRVJSSURFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gd2hlbiAnMScgOiBzaWduYWwgd2lsbCBvdmJlcnJpZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU29QIHNldHRpbmcgb2YgSlRBRyBQQURTLiB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwJzogU29QIHNldHRpbmcgd2lsbCBjb250cm9sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEpUQUcgUEFEcyBbIFRESSwgVERPLCBUTVMsIFRDS10KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19DQzNYWF9ERUJVR1NTX1NUQVRVUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0NDM1hYX0RFQlVHU1NfU1RBVFVTX0FQUFNfTUNVX0pUQUdOU1cgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwICAvLyBUaGlzIHJlZ2lzdGVyIGNvbnRhaW5zIGRlYnVnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN1YnN5c3RlbSBzdGF0dXMgYml0cyBGcm9tIEFQUFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUNVIHN0YXR1cyBiaXQgdG8gaW5kaWNhdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZXRoZXIgc2VyaWFsIHdpcmUgb3IgNCBwaW5zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGp0YWcgc2VsZWN0LgorCisjZGVmaW5lIE9DUF9TSEFSRURfQ0MzWFhfREVCVUdTU19TVEFUVVNfQ0pUQUdfQllQQVNTX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAgIC8vIGNqdGFnIGJ5cGFzcyBiaXQgc2VsZWN0CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9ERUJVR1NTX1NUQVRVU19TV19JTlRFUkZBQ0VfU0VMX1NUQVRVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDggIC8vIHNlcmlhbCB3aXJlIGludGVyZmFjZSBiaXQgc2VsZWN0CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9ERUJVR1NTX1NUQVRVU19BUFBTX1RBUF9FTkFCTEVfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNCAgLy8gYXBwcyB0YXAgZW5hYmxlIHN0YXR1cworCisjZGVmaW5lIE9DUF9TSEFSRURfQ0MzWFhfREVCVUdTU19TVEFUVVNfVEFQU19FTkFCTEVfU1RBVFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gdGFwIGVuYWJsZSBzdGF0dXMKKworI2RlZmluZSBPQ1BfU0hBUkVEX0NDM1hYX0RFQlVHU1NfU1RBVFVTX1NTQkRfVU5MT0NLIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gc3NiZCB1bmxvY2sgc3RhdHVzCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fQ0MzWFhfREVCVUdNVVhfU0VMIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfQ0MzWFhfREVCVUdNVVhfU0VMX01FTV9DQzNYWF9ERUJVR01VWF9TRUxfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGRkYgIC8vIGRlYnVnIG11eCBzZWxlY3QgcmVnaXN0ZXIuIFVwcGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDggYml0cyBhcmUgdXNlZCBmb3IgZGVidWcgbW9kdWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlbGVjdGlvbi4gTG93ZXIgOCBiaXQgWzc6MF0gdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnNpZGUgZGVidWcgbW9kdWxlIGZvciBzZWxlY3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kdWxlIHNwZWNpZmljIHNpZ25hbHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJpdHNbMTU6ODogd2hlbiBzZXQgeCIwMCIgOiBHUFJDTQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWJ1ZyBidXMuIFdoZW4gIm8xIiA6IFNESU8gZGVidWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVidWcgYnVzIHdoZW4geCIwMiIgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhdXRvbm91bW91cyBTUEkgd2hlbiB4IjAzIiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUElDIHdoZW4geCIwNCI6IG1lbXNzIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8geCIyNSI6IG1jdSBkZWJ1ZyBidXMgOiBBUFBTIGRlYnVnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4geCI0NSI6IG1jdSBkZWJ1ZyBidXMgOiBOV1AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVidWcgd2hlbiB4IjY1IjogbWN1IGRlYnVnIGJ1cyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFIQjJWQlVTIGRlYnVnIHdoZW4geCI4NSI6IG1jdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWJ1ZyBidXMgOiBWQlVTMkhBQiBkZWJ1ZyB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHgiOTUiOiBtY3UgZGVidWcgYnVzIDogUkNNIGRlYnVnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4geCJBNSI6IG1jdSBkZWJ1ZyBidXMgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjcnlwdG8gZGVidWcgd2hlbiB4IjA2IjogV0xBTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWJ1ZyBidXMgd2hlbiB4IjA3IjogZGVidWdzcyBidXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB4IjA4IjogQURDIGRlYnVnIHdoZW4geCIwOSI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNESU8gUEhZIGRlYnVnIGJ1cyB0aGVuICJvdGhlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDogbm8gZGVidWcgaXMgc2VsZWN0ZWQKKworI2RlZmluZSBPQ1BfU0hBUkVEX0NDM1hYX0RFQlVHTVVYX1NFTF9NRU1fQ0MzWFhfREVCVUdNVVhfU0VMX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19BTFRfUENfVkFMX05XIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfQUxUX1BDX1ZBTF9OV19NRU1fQUxUX1BDX1ZBTF9OV19NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gMzIgYml0LiBQcm9ncmFtIGNvdW50ZXIgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIDB4NCBhZGRyZXNzIHdoZW4gQWx0X3BjX2VuX253CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldC4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0FMVF9QQ19WQUxfTldfTUVNX0FMVF9QQ19WQUxfTldfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0FMVF9QQ19WQUxfQVBQUyByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0FMVF9QQ19WQUxfQVBQU19NRU1fQUxUX1BDX1ZBTF9BUFBTX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAzMiBiaXQuIFByb2dyYW0gY291bnRlciB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgMHg0IGFkZHJlc3Mgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBbHRfcGNfZW5fYXBwcyBpcyBzZXQKKworI2RlZmluZSBPQ1BfU0hBUkVEX0FMVF9QQ19WQUxfQVBQU19NRU1fQUxUX1BDX1ZBTF9BUFBTX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfNCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX1NQQVJFX1JFR180X01FTV9TUEFSRV9SRUdfNF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRSAgLy8gSFcgcmVnaXN0ZXIKKworI2RlZmluZSBPQ1BfU0hBUkVEX1NQQVJFX1JFR180X01FTV9TUEFSRV9SRUdfNF9TIDEKKyNkZWZpbmUgT0NQX1NIQVJFRF9TUEFSRV9SRUdfNF9JTlZFUlRfRDJEX0lOVEVSRkFDRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIERhdGEgdG8gdGhlIHRvcCBkaWUgbGF1bmNoZWQgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmVnYXRpdmUgZWRnZSBpbnN0ZWFkIG9mIHBvc2l0aXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVkZ2UuCisKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fU1BBUkVfUkVHXzUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9TUEFSRV9SRUdfNV9NRU1fU1BBUkVfUkVHXzVfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIEhXIHJlZ2lzdGVyCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TUEFSRV9SRUdfNV9NRU1fU1BBUkVfUkVHXzVfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NIX1NQSV9DU19NQVNLIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU0hfU1BJX0NTX01BU0tfTUVNX1NIX1NQSV9DU19NQVNLX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBGICAvLyAoIGNoaXAgc2VsZWN0IDAgaXMgdW5tYXNrZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgcmVzZXQuIFdoZW4g4oCYMeKAmSA6IENTIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVubWFza2VkIG9yIGVsc2UgbWFza2VkLiBWYWxpZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25maWd1cmF0aW9ucyBhcmUgMTAwMCwgMDEwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDAxMCBvciAwMDAxLiBBbnkgb3RoZXIgc2V0dGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbGVhZCB0byB1bnByZWRpY3RhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlaGF2aW9yLgorCisjZGVmaW5lIE9DUF9TSEFSRURfU0hfU1BJX0NTX01BU0tfTUVNX1NIX1NQSV9DU19NQVNLX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19DQzNYWF9ERVZJQ0VfVFlQRSByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0NDM1hYX0RFVklDRV9UWVBFX0RFVklDRV9UWVBFX3Jlc2VydmVkX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDYwICAvLyByZXNlcnZlZCBiaXRzIHRpZWQgb2ZmICIwMCIuCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9ERVZJQ0VfVFlQRV9ERVZJQ0VfVFlQRV9yZXNlcnZlZF9TIDUKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9ERVZJQ0VfVFlQRV9ERVZJQ0VfVFlQRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxRiAgLy8gQ0MzWFggRGV2aWNlIHR5cGUgaW5mb3JtYXRpb24uCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9ERVZJQ0VfVFlQRV9ERVZJQ0VfVFlQRV9TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fTUVNX1RPUE1VWENUUkxfSUZPUkNFIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfTUVNX1RPUE1VWENUUkxfSUZPUkNFX01FTV9UT1BNVVhDVFJMX0lGT1JDRTFfTSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRjAgIC8vIFs0XSAxOiBzd2l0Y2ggYmV0d2VlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXTEFOX0kyQ19TQ0wgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9HUElPX1BPUlQ0X0kyQyBjbG9zZXMgMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3dpdGNoIG9wZW5zIFs1XSAxOiBzd2l0Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmV0d2VlbiBXTEFOX0kyQ19TQ0wgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPUF9WU0VOU0VfUE9SVCBjbG9zZXMgMDogc3dpdGNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZW5zIFs2XSAxOiBzd2l0Y2ggYmV0d2VlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXTEFOX0kyQ19TQ0wgYW5kIFdMQU5fQU5BX1RQNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbG9zZXMgMDogc3dpdGNoIG9wZW5zIFs3XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNlcnZlZAorCisjZGVmaW5lIE9DUF9TSEFSRURfTUVNX1RPUE1VWENUUkxfSUZPUkNFX01FTV9UT1BNVVhDVFJMX0lGT1JDRTFfUyA0CisjZGVmaW5lIE9DUF9TSEFSRURfTUVNX1RPUE1VWENUUkxfSUZPUkNFX01FTV9UT1BNVVhDVFJMX0lGT1JDRV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwRiAgLy8gWzBdIDE6IHN3aXRjaCBiZXR3ZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdMQU5fSTJDX1NEQSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX0dQSU9fUE9SVDNfSTJDIGNsb3NlcyAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzd2l0Y2ggb3BlbnMgWzFdIDE6IHN3aXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIFdMQU5fSTJDX1NEQSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9QX0lGT1JDRV9QT1JUIGNsb3NlcyAwOiBzd2l0Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3BlbnMgWzJdIDE6IHN3aXRjaCBiZXR3ZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdMQU5fSTJDX1NEQSBhbmQgV0xBTl9BTkFfVFAzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsb3NlcyAwOiBzd2l0Y2ggb3BlbnMgWzNdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc2VydmVkCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9NRU1fVE9QTVVYQ1RSTF9JRk9SQ0VfTUVNX1RPUE1VWENUUkxfSUZPUkNFX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19DQzNYWF9ERVZfUEFDS0FHRV9ERVRFQ1QgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9ERVZfUEFDS0FHRV9ERVRFQ1RfREVWX1BLR19ERVRFQ1QgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyB3aGVuICcwJyBpbmRpY2F0ZXMgcGFja2FnZSB0eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGRldmVsb3BtZW50LgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0FVVE9OTVNfU1BJQ0xLX1NFTCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0FVVE9OTVNfU1BJQ0xLX1NFTF9NRU1fQVVUT05PTU9VU19CWVBBU1MgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyBUaGlzIGJpdCBpcyB1c2VkIHRvIGJ5cGFzcyBNQ1BTSQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhdXRvbm9tb3VzIG1vZGUgLmlmIHRoaXMgYml0IGlzIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXV0b25vbW91cyBNQ1NQSSBsb2dpYyB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5cGFzc2VkIGFuZCBpdCB3aWxsIGFjdCBhcyBsaW5rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNQSQorCisjZGVmaW5lIE9DUF9TSEFSRURfQVVUT05NU19TUElDTEtfU0VMX01FTV9BVVRPTk1TX1NQSUNMS19TRUwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyBUaGlzIGJpdCBpcyB1c2VkIGluIFNQSQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBdXRvbm9tb3VzIG1vZGUgdG8gc3dpdGNoIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gc3lzdGVtIGNsb2NrIHRvIFNQSSBjbGsgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBjb21pbmcgZnJvbSBQQUQuIFdoZW4gdmFsdWUgMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQQUQgU1BJIGNsayBpcyB1c2VkIGFzIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbG9jayBpbiBMUERTIG1vZGUgYnkgU1BJIGFzIHdlbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgYXV0b25vbW91cyB3cmFwcGVyIGxvZ2ljLgorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0NDM1hYX0RFVl9QQURDT05GIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfQ0MzWFhfREVWX1BBRENPTkZfTUVNX0NDM1hYX0RFVl9QQURDT05GX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9DQzNYWF9ERVZfUEFEQ09ORl9NRU1fQ0MzWFhfREVWX1BBRENPTkZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0lETUVNX1RJTV9VUERBVEUgcmVnaXN0ZXIuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNkZWZpbmUgT0NQX1NIQVJFRF9JRE1FTV9USU1fVVBEQVRFX01FTV9JRE1FTV9USU1fVVBEQVRFX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9JRE1FTV9USU1fVVBEQVRFX01FTV9JRE1FTV9USU1fVVBEQVRFX1MgMAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKKy8vIE9DUF9TSEFSRURfT19TUEFSRV9SRUdfNiByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX1NQQVJFX1JFR182X01FTV9TUEFSRV9SRUdfNl9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gTldQIFNvZnR3YXJlIHJlZ2lzdGVyCisKKyNkZWZpbmUgT0NQX1NIQVJFRF9TUEFSRV9SRUdfNl9NRU1fU1BBUkVfUkVHXzZfUyAwCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX1NQQVJFX1JFR183IHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfU1BBUkVfUkVHXzdfTUVNX1NQQVJFX1JFR183X00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBOV1AgU29mdHdhcmUgcmVnaXN0ZXIKKworI2RlZmluZSBPQ1BfU0hBUkVEX1NQQVJFX1JFR183X01FTV9TUEFSRV9SRUdfN19TIDAKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCisvLyBPQ1BfU0hBUkVEX09fQVBQU19XTEFOX09SQklUIHJlZ2lzdGVyLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjZGVmaW5lIE9DUF9TSEFSRURfQVBQU19XTEFOX09SQklUX21lbV9vcmJpdF9zcGFyZV9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkMwMCAgLy8gU3BhcmUgYml0CisKKyNkZWZpbmUgT0NQX1NIQVJFRF9BUFBTX1dMQU5fT1JCSVRfbWVtX29yYml0X3NwYXJlX1MgMTAKKyNkZWZpbmUgT0NQX1NIQVJFRF9BUFBTX1dMQU5fT1JCSVRfbWVtX29yYml0X3Rlc3Rfc3RhdHVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDIwMCAgLy8gQSByaXNpbmcgZWRnZSBvbiB0aGlzIGJpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpY2F0ZXMgdGhhdCB0aGUgdGVzdCBjYXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhc3Nlcy4gVGhpcyBiaXQgd291bGQgYmUgYnJvdWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXQgb24gdGhlIHBpbiBpbnRlcmZhY2UgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9SQklULgorCisjZGVmaW5lIE9DUF9TSEFSRURfQVBQU19XTEFOX09SQklUX21lbV9vcmJpdF90ZXN0X2V4ZWMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwICAvLyBUaGlzIHJlZ2lzdGVyIGJpdCBpcyB3cml0YWJsZSBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgRlcgYW5kIHdoZW4gc2V0IHRvIDEgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5kaWNhdGVzIHRoZSBzdGFydCBvZiBhIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhlY3V0aW9uLiBBIGZhaWxpbmcgZWRnZSBvbiB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgdGVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleGVjdXRpb24gaXMgY29tcGxldGUuIFRoaXMgYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdvdWxkIGJlIGJyb3VnaHQgb3V0IG9uIHRoZSBwaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJmYWNlIGR1cmluZyBPUkJJVC4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0FQUFNfV0xBTl9PUkJJVF9tZW1fb3JiaXRfdGVzdF9pZF9NIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGQyAgLy8gSW1wbGllcyB0aGUgdGVzdCBjYXNlIElEIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmVlZHMgdG8gcnVuLgorCisjZGVmaW5lIE9DUF9TSEFSRURfQVBQU19XTEFOX09SQklUX21lbV9vcmJpdF90ZXN0X2lkX1MgMgorI2RlZmluZSBPQ1BfU0hBUkVEX0FQUFNfV0xBTl9PUkJJVF9tZW1fb3JiaXRfaGFsdF9wcm9jIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gVGhpcyBiaXQgaXMgdXNlZCB0byB0cmlnZ2VyIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleGVjdXRpb24gb2YgdGVzdCBjYXNlcyB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIChST00gYmFzZWQpIElQLgorCisjZGVmaW5lIE9DUF9TSEFSRURfQVBQU19XTEFOX09SQklUX21lbV9vcmJpdF90ZXN0X21vZGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyBXaGVuIHRoaXMgYml0IGlzIDEgaXQgaW1wbGllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPUkJJVCBtb2RlIG9mIG9wZXJhdGlvbiBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChST00gYmFzZWQpIElQIHN0YXJ0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleGVjdXRpb24gZnJvbSBhIHRlc3QgY2FzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwZXJzcGVjdGl2ZQorCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQorLy8gT0NQX1NIQVJFRF9PX0FQUFNfV0xBTl9TQ1JBVENIX1BBRCByZWdpc3Rlci4KKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBPQ1BfU0hBUkVEX0FQUFNfV0xBTl9TQ1JBVENIX1BBRF9NRU1fQVBQU19XTEFOX1NDUkFUQ0hfUEFEX00gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBzY3JhdGNoIHBhZCByZWdpc3Rlci4KKworI2RlZmluZSBPQ1BfU0hBUkVEX0FQUFNfV0xBTl9TQ1JBVENIX1BBRF9NRU1fQVBQU19XTEFOX1NDUkFUQ0hfUEFEX1MgMAorCisKKworI2VuZGlmIC8vIF9fSFdfT0NQX1NIQVJFRF9IX18KZGlmZiAtLWdpdCBhL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od190eXBlcy5oIGIvZXh0L2hhbC90aS9jYzMyMjBzZGsvaW5jL2h3X3R5cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVmZjRlNAotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9oYWwvdGkvY2MzMjIwc2RrL2luYy9od190eXBlcy5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLworICoKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqICBhcmUgbWV0OgorICoKKyAqICAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqICAgIE5laXRoZXIgdGhlIG5hbWUgb2YgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgX19IV19UWVBFU19IX18KKyNkZWZpbmUgX19IV19UWVBFU19IX18KKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIERlZmluZSBhIGJvb2xlYW4gdHlwZSwgYW5kIHZhbHVlcyBmb3IgdHJ1ZSBhbmQgZmFsc2UuCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHRCb29sZWFuOworCisjaWZuZGVmIHRydWUKKyNkZWZpbmUgdHJ1ZSAxCisjZW5kaWYKKworI2lmbmRlZiBmYWxzZQorI2RlZmluZSBmYWxzZSAwCisjZW5kaWYKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIE1hY3JvcyBmb3IgaGFyZHdhcmUgYWNjZXNzLCBib3RoIGRpcmVjdCBhbmQgdmlhIHRoZSBiaXQtYmFuZCByZWdpb24uCisvLworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2RlZmluZSBIV1JFRyh4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKigodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKSh4KSkpCisjZGVmaW5lIEhXUkVHSCh4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgqKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSh4KSkpCisjZGVmaW5lIEhXUkVHQih4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgqKCh2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopKHgpKSkKKyNkZWZpbmUgSFdSRUdCSVRXKHgsIGIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSFdSRUcoKCh1bnNpZ25lZCBsb25nKSh4KSAmIDB4RjAwMDAwMDApIHwgMHgwMjAwMDAwMCB8ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgKCgodW5zaWduZWQgbG9uZykoeCkgJiAweDAwMEZGRkZGKSA8PCA1KSB8ICgoYikgPDwgMikpCisjZGVmaW5lIEhXUkVHQklUSCh4LCBiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEhXUkVHSCgoKHVuc2lnbmVkIGxvbmcpKHgpICYgMHhGMDAwMDAwMCkgfCAweDAyMDAwMDAwIHwgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAoKCh1bnNpZ25lZCBsb25nKSh4KSAmIDB4MDAwRkZGRkYpIDw8IDUpIHwgKChiKSA8PCAyKSkKKyNkZWZpbmUgSFdSRUdCSVRCKHgsIGIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSFdSRUdCKCgodW5zaWduZWQgbG9uZykoeCkgJiAweEYwMDAwMDAwKSB8IDB4MDIwMDAwMDAgfCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICgoKHVuc2lnbmVkIGxvbmcpKHgpICYgMHgwMDBGRkZGRikgPDwgNSkgfCAoKGIpIDw8IDIpKQorCisKKyNlbmRpZiAvLyBfX0hXX1RZUEVTX0hfXwo=