LyoNCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAqICAgIENDMzIyMCBTREsgLSB2MC4xMC4wMC4wMCANCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAqDQogKiAgQ29weXJpZ2h0IChDKSAyMDE1IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLyANCiAqICANCiAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgDQogKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIA0KICogIGFyZSBtZXQ6DQogKg0KICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgDQogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQogKg0KICogICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgDQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgICANCiAqICAgIGRpc3RyaWJ1dGlvbi4NCiAqDQogKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mDQogKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQogKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQogKg0KICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgDQogKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgDQogKiAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQogKiAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgDQogKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIA0KICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgDQogKiAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQogKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQogKiAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCANCiAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgDQogKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCiAqICANCiAqLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQojaWZuZGVmIF9fSFdfRFRIRV9IX18NCiNkZWZpbmUgX19IV19EVEhFX0hfXw0KDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIERUSEUgcmVnaXN0ZXIgb2Zmc2V0cy4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIERUSEVfT19TSEFfSU0gICAgMHgwMDAwMDgxMA0KI2RlZmluZSBEVEhFX09fU0hBX1JJUyAgICAweDAwMDAwODE0DQojZGVmaW5lIERUSEVfT19TSEFfTUlTICAgIDB4MDAwMDA4MTgNCiNkZWZpbmUgRFRIRV9PX1NIQV9JQyAgICAweDAwMDAwODFDDQojZGVmaW5lIERUSEVfT19BRVNfSU0gICAgMHgwMDAwMDgyMA0KI2RlZmluZSBEVEhFX09fQUVTX1JJUyAgICAweDAwMDAwODI0DQojZGVmaW5lIERUSEVfT19BRVNfTUlTICAgIDB4MDAwMDA4MjgNCiNkZWZpbmUgRFRIRV9PX0FFU19JQyAgICAweDAwMDAwODJDDQojZGVmaW5lIERUSEVfT19ERVNfSU0gICAgMHgwMDAwMDgzMA0KI2RlZmluZSBEVEhFX09fREVTX1JJUyAgICAweDAwMDAwODM0DQojZGVmaW5lIERUSEVfT19ERVNfTUlTICAgIDB4MDAwMDA4MzgNCiNkZWZpbmUgRFRIRV9PX0RFU19JQyAgICAweDAwMDAwODNDDQojZGVmaW5lIERUSEVfT19FSVBfQ0dDRkcgICAgICAweDAwMDAwQTAwDQojZGVmaW5lIERUSEVfT19FSVBfQ0dSRVEgICAgICAweDAwMDAwQTA0DQojZGVmaW5lIERUSEVfT19DUkNfQ1RSTCAgICAgICAweDAwMDAwQzAwDQojZGVmaW5lIERUSEVfT19DUkNfU0VFRCAgICAgICAweDAwMDAwQzEwDQojZGVmaW5lIERUSEVfT19DUkNfRElOICAgICAgICAweDAwMDAwQzE0DQojZGVmaW5lIERUSEVfT19DUkNfUlNMVF9QUCAgICAweDAwMDAwQzE4DQojZGVmaW5lIERUSEVfT19SQU5EX0tFWTAgICAgICAweDAwMDAwRjAwDQojZGVmaW5lIERUSEVfT19SQU5EX0tFWTEgICAgICAweDAwMDAwRjA0DQojZGVmaW5lIERUSEVfT19SQU5EX0tFWTIgICAgICAweDAwMDAwRjA4DQojZGVmaW5lIERUSEVfT19SQU5EX0tFWTMgICAgICAweDAwMDAwRjBDDQoNCg0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIERUSEVfT19TSEFNRDVfSU1TVCByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBEVEhFX1NIQU1ENV9JTVNUX0RJTiAgMHgwMDAwMDAwNCAgLy8gRGF0YSBpbjogdGhpcyBpbnRlcnJ1cHQgaXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmFpc2VkIHdoZW4gRE1BIHdyaXRlcyBsYXN0IHdvcmQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgaW5wdXQgZGF0YSB0byBpbnRlcm5hbCBGSUZPIG9mDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBlbmdpbmUNCiNkZWZpbmUgRFRIRV9TSEFNRDVfSU1TVF9DT1VUIDB4MDAwMDAwMDIgIC8vIENvbnRleHQgb3V0OiB0aGlzIGludGVycnVwdCBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByYWlzZWQgd2hlbiBETUEgY29tcGxldHMgdGhlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dCBjb250ZXh0IG1vdmVtZW50IGZyb20NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJuYWwgcmVnaXN0ZXINCiNkZWZpbmUgRFRIRV9TSEFNRDVfSU1TVF9DSU4gIDB4MDAwMDAwMDEgIC8vIGNvbnRleHQgaW46IHRoaXMgaW50ZXJydXB0IGlzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJhaXNlZCB3aGVuIERNQSBjb21wbGV0cyBDb250ZXh0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIHRvIGludGVybmFsIHJlZ2lzdGVyDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gRFRIRV9PX1NIQU1ENV9JUklTIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIERUSEVfU0hBTUQ1X0lSSVNfRElOICAweDAwMDAwMDA0ICAvLyBpbnB1dCBEYXRhIG1vdmVtZW50IGlzIGRvbmUNCiNkZWZpbmUgRFRIRV9TSEFNRDVfSVJJU19DT1VUIDB4MDAwMDAwMDIgIC8vIENvbnRleHQgb3V0cHV0IGlzIGRvbmUNCiNkZWZpbmUgRFRIRV9TSEFNRDVfSVJJU19DSU4gIDB4MDAwMDAwMDEgIC8vIGNvbnRleHQgaW5wdXQgaXMgZG9uZQ0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIERUSEVfT19TSEFNRDVfSU1JUyByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBEVEhFX1NIQU1ENV9JTUlTX0RJTiAgMHgwMDAwMDAwNCAgLy8gaW5wdXQgRGF0YSBtb3ZlbWVudCBpcyBkb25lDQojZGVmaW5lIERUSEVfU0hBTUQ1X0lNSVNfQ09VVCAweDAwMDAwMDAyICAvLyBDb250ZXh0IG91dHB1dCBpcyBkb25lDQojZGVmaW5lIERUSEVfU0hBTUQ1X0lNSVNfQ0lOICAweDAwMDAwMDAxICAvLyBjb250ZXh0IGlucHV0IGlzIGRvbmUNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBEVEhFX09fU0hBTUQ1X0lDSVMgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgRFRIRV9TSEFNRDVfSUNJU19ESU4gIDB4MDAwMDAwMDQgIC8vIENsZWFyIOKAnGlucHV0IERhdGEgbW92ZW1lbnQgZG9uZeKAPw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmbGFnDQojZGVmaW5lIERUSEVfU0hBTUQ1X0lDSVNfQ09VVCAweDAwMDAwMDAyICAvLyBDbGVhciDigJxDb250ZXh0IG91dHB1dCBkb25l4oA/IGZsYWcNCiNkZWZpbmUgRFRIRV9TSEFNRDVfSUNJU19DSU4gIDB4MDAwMDAwMDEgIC8vIENsZWFyIOKAnGNvbnRleHQgaW5wdXQgZG9uZeKAPyBmbGFnDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gRFRIRV9PX0FFU19JTVNUIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIERUSEVfQUVTX0lNU1RfRE9VVCAweDAwMDAwMDA4ICAvLyBEYXRhIG91dDogdGhpcyBpbnRlcnJ1cHQgaXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmFpc2VkIHdoZW4gRE1BIGZpbmlzaGVzIHdyaXRpbmcNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGFzdCB3b3JkIG9mIHRoZSBwcm9jZXNzIHJlc3VsdA0KI2RlZmluZSBEVEhFX0FFU19JTVNUX0RJTiAgMHgwMDAwMDAwNCAgLy8gRGF0YSBpbjogdGhpcyBpbnRlcnJ1cHQgaXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmFpc2VkIHdoZW4gRE1BIHdyaXRlcyBsYXN0IHdvcmQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgaW5wdXQgZGF0YSB0byBpbnRlcm5hbCBGSUZPIG9mDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBlbmdpbmUNCiNkZWZpbmUgRFRIRV9BRVNfSU1TVF9DT1VUIDB4MDAwMDAwMDIgIC8vIENvbnRleHQgb3V0OiB0aGlzIGludGVycnVwdCBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByYWlzZWQgd2hlbiBETUEgY29tcGxldHMgdGhlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dCBjb250ZXh0IG1vdmVtZW50IGZyb20NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJuYWwgcmVnaXN0ZXINCiNkZWZpbmUgRFRIRV9BRVNfSU1TVF9DSU4gIDB4MDAwMDAwMDEgIC8vIGNvbnRleHQgaW46IHRoaXMgaW50ZXJydXB0IGlzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJhaXNlZCB3aGVuIERNQSBjb21wbGV0cyBDb250ZXh0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIHRvIGludGVybmFsIHJlZ2lzdGVyDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gRFRIRV9PX0FFU19JUklTIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIERUSEVfQUVTX0lSSVNfRE9VVCAweDAwMDAwMDA4ICAvLyBPdXRwdXQgRGF0YSBtb3ZlbWVudCBpcyBkb25lDQojZGVmaW5lIERUSEVfQUVTX0lSSVNfRElOICAweDAwMDAwMDA0ICAvLyBpbnB1dCBEYXRhIG1vdmVtZW50IGlzIGRvbmUNCiNkZWZpbmUgRFRIRV9BRVNfSVJJU19DT1VUIDB4MDAwMDAwMDIgIC8vIENvbnRleHQgb3V0cHV0IGlzIGRvbmUNCiNkZWZpbmUgRFRIRV9BRVNfSVJJU19DSU4gIDB4MDAwMDAwMDEgIC8vIGNvbnRleHQgaW5wdXQgaXMgZG9uZQ0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIERUSEVfT19BRVNfSU1JUyByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBEVEhFX0FFU19JTUlTX0RPVVQgMHgwMDAwMDAwOCAgLy8gT3V0cHV0IERhdGEgbW92ZW1lbnQgaXMgZG9uZQ0KI2RlZmluZSBEVEhFX0FFU19JTUlTX0RJTiAgMHgwMDAwMDAwNCAgLy8gaW5wdXQgRGF0YSBtb3ZlbWVudCBpcyBkb25lDQojZGVmaW5lIERUSEVfQUVTX0lNSVNfQ09VVCAweDAwMDAwMDAyICAvLyBDb250ZXh0IG91dHB1dCBpcyBkb25lDQojZGVmaW5lIERUSEVfQUVTX0lNSVNfQ0lOICAweDAwMDAwMDAxICAvLyBjb250ZXh0IGlucHV0IGlzIGRvbmUNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBEVEhFX09fQUVTX0lDSVMgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgRFRIRV9BRVNfSUNJU19ET1VUIDB4MDAwMDAwMDggIC8vIENsZWFyIOKAnG91dHB1dCBEYXRhIG1vdmVtZW50DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbmXigD8gZmxhZw0KI2RlZmluZSBEVEhFX0FFU19JQ0lTX0RJTiAgMHgwMDAwMDAwNCAgLy8gQ2xlYXIg4oCcaW5wdXQgRGF0YSBtb3ZlbWVudCBkb25l4oA/DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZsYWcNCiNkZWZpbmUgRFRIRV9BRVNfSUNJU19DT1VUIDB4MDAwMDAwMDIgIC8vIENsZWFyIOKAnENvbnRleHQgb3V0cHV0IGRvbmXigD8gZmxhZw0KI2RlZmluZSBEVEhFX0FFU19JQ0lTX0NJTiAgMHgwMDAwMDAwMSAgLy8gQ2xlYXIg4oCcY29udGV4dCBpbnB1dCBkb25l4oA/IGZsYWcNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBEVEhFX09fREVTX0lNU1QgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgRFRIRV9ERVNfSU1TVF9ET1VUIDB4MDAwMDAwMDggIC8vIERhdGEgb3V0OiB0aGlzIGludGVycnVwdCBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByYWlzZWQgd2hlbiBETUEgZmluaXNoZXMgd3JpdGluZw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsYXN0IHdvcmQgb2YgdGhlIHByb2Nlc3MgcmVzdWx0DQojZGVmaW5lIERUSEVfREVTX0lNU1RfRElOICAweDAwMDAwMDA0ICAvLyBEYXRhIGluOiB0aGlzIGludGVycnVwdCBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByYWlzZWQgd2hlbiBETUEgd3JpdGVzIGxhc3Qgd29yZA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBpbnB1dCBkYXRhIHRvIGludGVybmFsIEZJRk8gb2YNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGVuZ2luZQ0KI2RlZmluZSBEVEhFX0RFU19JTVNUX0NJTiAgMHgwMDAwMDAwMSAgLy8gY29udGV4dCBpbjogdGhpcyBpbnRlcnJ1cHQgaXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmFpc2VkIHdoZW4gRE1BIGNvbXBsZXRzIENvbnRleHQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgdG8gaW50ZXJuYWwgcmVnaXN0ZXINCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBEVEhFX09fREVTX0lSSVMgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgRFRIRV9ERVNfSVJJU19ET1VUIDB4MDAwMDAwMDggIC8vIE91dHB1dCBEYXRhIG1vdmVtZW50IGlzIGRvbmUNCiNkZWZpbmUgRFRIRV9ERVNfSVJJU19ESU4gIDB4MDAwMDAwMDQgIC8vIGlucHV0IERhdGEgbW92ZW1lbnQgaXMgZG9uZQ0KI2RlZmluZSBEVEhFX0RFU19JUklTX0NJTiAgMHgwMDAwMDAwMSAgLy8gY29udGV4dCBpbnB1dCBpcyBkb25lDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gRFRIRV9PX0RFU19JTUlTIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIERUSEVfREVTX0lNSVNfRE9VVCAweDAwMDAwMDA4ICAvLyBPdXRwdXQgRGF0YSBtb3ZlbWVudCBpcyBkb25lDQojZGVmaW5lIERUSEVfREVTX0lNSVNfRElOICAweDAwMDAwMDA0ICAvLyBpbnB1dCBEYXRhIG1vdmVtZW50IGlzIGRvbmUNCiNkZWZpbmUgRFRIRV9ERVNfSU1JU19DSU4gIDB4MDAwMDAwMDEgIC8vIGNvbnRleHQgaW5wdXQgaXMgZG9uZQ0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIERUSEVfT19ERVNfSUNJUyByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBEVEhFX0RFU19JQ0lTX0RPVVQgMHgwMDAwMDAwOCAgLy8gQ2xlYXIg4oCcb3V0cHV0IERhdGEgbW92ZW1lbnQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9uZeKAPyBmbGFnDQojZGVmaW5lIERUSEVfREVTX0lDSVNfRElOICAweDAwMDAwMDA0ICAvLyBDbGVhciDigJxpbnB1dCBEYXRhIG1vdmVtZW50IGRvbmXigD8NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmxhZw0KI2RlZmluZSBEVEhFX0RFU19JQ0lTX0NJTiAgMHgwMDAwMDAwMSAgLy8gQ2xlYXIgImNvbnRleHQgaW5wdXQgZG9uZeKAPyBmbGFnDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gRFRIRV9PX0VJUF9DR0NGRyByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBEVEhFX0VJUF9DR0NGR19FSVAyOV9DRkcgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwICAvLyBDbG9jayBnYXRpbmcgcHJvdG9jb2wgc2V0dGluZw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgRUlQMjlULiAwIOKAkyBGb2xsb3cgZGlyZWN0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb3RvY29sIDEg4oCTIEZvbGxvdyBpZGxlX3JlcS9hY2sNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJvdG9jb2wuDQoNCiNkZWZpbmUgRFRIRV9FSVBfQ0dDRkdfRUlQNzVfQ0ZHIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOCAgLy8gQ2xvY2sgZ2F0aW5nIHByb3RvY29sIHNldHRpbmcNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIEVJUDc1VC4gMCDigJMgRm9sbG93IGRpcmVjdA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm90b2NvbCAxIOKAkyBGb2xsb3cgaWRsZV9yZXEvYWNrDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb3RvY29sLg0KDQojZGVmaW5lIERUSEVfRUlQX0NHQ0ZHX0VJUDE2X0NGRyBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQgIC8vIENsb2NrIGdhdGluZyBwcm90b2NvbCBzZXR0aW5nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBERVMuIDAg4oCTIEZvbGxvdyBkaXJlY3QNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJvdG9jb2wgMSDigJMgRm9sbG93IGlkbGVfcmVxL2Fjaw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm90b2NvbC4NCg0KI2RlZmluZSBEVEhFX0VJUF9DR0NGR19FSVAzNl9DRkcgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyICAvLyBDbG9jayBnYXRpbmcgcHJvdG9jb2wgc2V0dGluZw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgQUVTLiAwIOKAkyBGb2xsb3cgZGlyZWN0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb3RvY29sIDEg4oCTIEZvbGxvdyBpZGxlX3JlcS9hY2sNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJvdG9jb2wuDQoNCiNkZWZpbmUgRFRIRV9FSVBfQ0dDRkdfRUlQNTdfQ0ZHIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gQ2xvY2sgZ2F0aW5nIHByb3RvY29sIHNldHRpbmcNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIFNIQU1ENS4gMCDigJMgRm9sbG93IGRpcmVjdA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm90b2NvbCAxIOKAkyBGb2xsb3cgaWRsZV9yZXEvYWNrDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb3RvY29sLg0KDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gRFRIRV9PX0VJUF9DR1JFUSByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBEVEhFX0VJUF9DR1JFUV9LZXlfTSAgMHhGMDAwMDAwMCAgLy8gV2hlbiDigJwweDXigD8gd3JpdGUg4oCcMeKAPyB0byBsb3dlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXRzIFs0OjBdIHdpbGwgc2V0IHRoZSBiaXQuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdyaXRlIOKAnDDigD8gd2lsbCBiZSBpZ25vcmVkIFdoZW4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g4oCcMHgy4oA/IHdyaXRlIOKAnDHigD8gdG8gbG93ZXIgYml0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFs0OjBdIHdpbGwgY2xlYXIgdGhlIGJpdC4gV3JpdGUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g4oCcMOKAPyB3aWxsIGJlIGlnbm9yZWQgZm9yIG90aGVyIGtleQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZSwgcmVndWxhciByZWFkIHdyaXRlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZXJhdGlvbg0KI2RlZmluZSBEVEhFX0VJUF9DR1JFUV9LZXlfUyAgMjgNCiNkZWZpbmUgRFRIRV9FSVBfQ0dSRVFfRUlQMjlfUkVRIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMCAgLy8gMCDigJMgcmVxdWVzdCBjbG9jayBnYXRpbmcgMSDigJMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVxdWVzdCB0byB1bi1nYXRlIHRoZSBjbG9jay4NCg0KI2RlZmluZSBEVEhFX0VJUF9DR1JFUV9FSVA3NV9SRVEgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4ICAvLyAwIOKAkyByZXF1ZXN0IGNsb2NrIGdhdGluZyAxIOKAkw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXF1ZXN0IHRvIHVuLWdhdGUgdGhlIGNsb2NrLg0KDQojZGVmaW5lIERUSEVfRUlQX0NHUkVRX0VJUDE2X1JFUSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQgIC8vIDAg4oCTIHJlcXVlc3QgY2xvY2sgZ2F0aW5nIDEg4oCTDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcXVlc3QgdG8gdW4tZ2F0ZSB0aGUgY2xvY2suDQoNCiNkZWZpbmUgRFRIRV9FSVBfQ0dSRVFfRUlQMzZfUkVRIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiAgLy8gMCDigJMgcmVxdWVzdCBjbG9jayBnYXRpbmcgMSDigJMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVxdWVzdCB0byB1bi1nYXRlIHRoZSBjbG9jay4NCg0KI2RlZmluZSBEVEhFX0VJUF9DR1JFUV9FSVA1N19SRVEgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyAwIOKAkyByZXF1ZXN0IGNsb2NrIGdhdGluZyAxIOKAkw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXF1ZXN0IHRvIHVuLWdhdGUgdGhlIGNsb2NrLg0KDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBEVEhFX09fQ1JDX0NUUkwgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgRFRIRV9DUkNfQ1RSTF9JTklUX00gIDB4MDAwMDYwMDAgIC8vIEluaXRpYWxpemUgdGhlIENSQyAwMCDigJMgdXNlIFNFRUQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgY29udGV4dCBhcyBzdGFydGluZw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZSAxMCDigJMgYWxsIOKAnHplcm/igD8gMTEg4oCTIGFsbA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDigJxvbmXigD8gVGhpcyBpcyBzZWxmIGNsZWFyaW5nLiBXaXRoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpcnN0IHdyaXRlIHRvIGRhdGEgcmVnaXN0ZXIgdGhpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZSBjbGVhcnMgdG8gemVybyBhbmQgcmVtYWluDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHplcm8gZm9yIHJlc3Qgb2YgdGhlIG9wZXJhdGlvbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1bmxlc3Mgd3JpdHRlbiBhZ2Fpbg0KI2RlZmluZSBEVEhFX0NSQ19DVFJMX0lOSVRfUyAgMTMNCiNkZWZpbmUgRFRIRV9DUkNfQ1RSTF9TSVpFICAgIDB4MDAwMDEwMDAgIC8vIElucHV0IGRhdGEgc2l6ZSAwIOKAkyAzMiBiaXQgMSDigJMgOA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQNCiNkZWZpbmUgRFRIRV9DUkNfQ1RSTF9PSU5WICAgIDB4MDAwMDAyMDAgIC8vIEludmVyc2UgdGhlIGJpdHMgb2YgcmVzdWx0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlZm9yZSBzdG9yaW5nIHRvIENSQ19SU0xUX1BQMA0KI2RlZmluZSBEVEhFX0NSQ19DVFJMX09CUiAgICAgMHgwMDAwMDEwMCAgLy8gQml0IHJldmVyc2UgdGhlIG91dHB1dCByZXN1bHQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnl0ZSBiZWZvcmUgc3RvcmluZyB0bw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDUkNfUlNMVF9QUDAuIGFwcGxpY2FibGUgZm9yIGFsbA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieXRlcyBpbiB3b3JkDQojZGVmaW5lIERUSEVfQ1JDX0NUUkxfSUJSICAgICAweDAwMDAwMDgwICAvLyBCaXQgcmV2ZXJzZSB0aGUgaW5wdXQgYnl0ZS4gRm9yDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbCBieXRlcyBpbiB3b3JkDQojZGVmaW5lIERUSEVfQ1JDX0NUUkxfRU5ESUFOX00gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDMwICAvLyBFbmRpYW4gY29udHJvbCBbMF0g4oCTIHN3YXAgYnl0ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBoYWxmLXdvcmQgWzFdIOKAkyBzd2FwIGhhbGYgd29yZA0KDQojZGVmaW5lIERUSEVfQ1JDX0NUUkxfRU5ESUFOX1MgNA0KI2RlZmluZSBEVEhFX0NSQ19DVFJMX1RZUEVfTSAgMHgwMDAwMDAwRiAgLy8gVHlwZSBvZiBvcGVyYXRpb24gMDAwMCDigJMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9seW5vbWlhbCAweDgwMDUgMDAwMSDigJMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9seW5vbWlhbCAweDEwMjEgMDAxMCDigJMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9seW5vbWlhbCAweDRDMTFEQjcgMDAxMSDigJMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9seW5vbWlhbCAweDFFREM2RjQxIDEwMDAg4oCTIFRDUA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVja3N1bSBUWVBFIGluIERUSEVfU19DUkNfQ1RSTA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAmIERUSEVfU19DUkNfQ1RSTCBzaG91bGQgYmUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhjbHVzaXZlDQojZGVmaW5lIERUSEVfQ1JDX0NUUkxfVFlQRV9TICAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBEVEhFX09fQ1JDX1NFRUQgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgRFRIRV9DUkNfU0VFRF9TRUVEX00gIDB4RkZGRkZGRkYgIC8vIFN0YXJ0aW5nIHNlZWQgb2YgQ1JDIGFuZA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVja3N1bSBvcGVyYXRpb24uIFBsZWFzZSBzZWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ1RSTCByZWdpc3RlciBmb3IgbW9yZSBkZXRhaWwuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgcmVzaXN0ZXIgYWxzbyBob2xkcyB0aGUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGF0ZXN0IHJlc3VsdCBvZiBDUkMgb3IgY2hlY2tzdW0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3BlcmF0aW9uDQojZGVmaW5lIERUSEVfQ1JDX1NFRURfU0VFRF9TICAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZSBEVEhFX09fQ1JDX0RJTiByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBEVEhFX0NSQ19ESU5fREFUQV9JTl9NIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gSW5wdXQgZGF0YSBmb3IgQ1JDIG9yIGNoZWNrc3VtDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZXJhdGlvbg0KDQojZGVmaW5lIERUSEVfQ1JDX0RJTl9EQVRBX0lOX1MgMA0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIERUSEVfT19DUkNfUlNMVF9QUCByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBEVEhFX0NSQ19SU0xUX1BQX1JTTFRfUFBfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIElucHV0IGRhdGEgZm9yIENSQyBvciBjaGVja3N1bQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcGVyYXRpb24NCg0KI2RlZmluZSBEVEhFX0NSQ19SU0xUX1BQX1JTTFRfUFBfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gRFRIRV9PX1JBTkRfS0VZMCByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBEVEhFX1JBTkRfS0VZMF9LRVlfTSAgMHhGRkZGRkZGRiAgLy8gRGV2aWNlIFNwZWNpZmljIFJhbmRvbiBrZXkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzMxOjBdDQojZGVmaW5lIERUSEVfUkFORF9LRVkwX0tFWV9TICAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gRFRIRV9PX1JBTkRfS0VZMSByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBEVEhFX1JBTkRfS0VZMV9LRVlfTSAgMHhGRkZGRkZGRiAgLy8gRGV2aWNlIFNwZWNpZmljIFJhbmRvbiBrZXkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzYzOjMyXQ0KI2RlZmluZSBEVEhFX1JBTkRfS0VZMV9LRVlfUyAgMA0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIERUSEVfT19SQU5EX0tFWTIgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgRFRIRV9SQU5EX0tFWTJfS0VZX00gIDB4RkZGRkZGRkYgIC8vIERldmljZSBTcGVjaWZpYyBSYW5kb24ga2V5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFs5NTozNF0NCiNkZWZpbmUgRFRIRV9SQU5EX0tFWTJfS0VZX1MgIDANCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBEVEhFX09fUkFORF9LRVkzIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIERUSEVfUkFORF9LRVkzX0tFWV9NICAweEZGRkZGRkZGICAvLyBEZXZpY2UgU3BlY2lmaWMgUmFuZG9uIGtleQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMTI3Ojk2XQ0KI2RlZmluZSBEVEhFX1JBTkRfS0VZM19LRVlfUyAgMA0KDQoNCg0KI2VuZGlmIC8vIF9fSFdfRFRIRV9IX18NCg==