LyoKICogIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KICoKICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAqICBhcmUgbWV0OgogKgogKiAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqCiAqICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCiAqICAgIGRpc3RyaWJ1dGlvbi4KICoKICogICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZgogKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCiAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICoKICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICogICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKICogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCiAqICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKICogIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAogKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCiAqICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICogIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAqCiAqLwoKI2lmbmRlZiBfX0hXX0NPTU1PTl9SRUdfSF9fCiNkZWZpbmUgX19IV19DT01NT05fUkVHX0hfXwoKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgQ09NTU9OX1JFRyByZWdpc3RlciBvZmZzZXRzLgovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19PX0kyQ19Qcm9wZXJ0aWVzX1JlZ2lzdGVyIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwCgojZGVmaW5lIENPTU1PTl9SRUdfT19TUElfUHJvcGVydGllc19SZWdpc3RlciBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNAoKI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfZW5hYmxlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBDCgojZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXMgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAKCiNkZWZpbmUgQ09NTU9OX1JFR19PX05XUF9zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfZW5hYmxlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDE0CgojZGVmaW5lIENPTU1PTl9SRUdfT19OV1Bfc2hfcmVzb3VyY2VfSW50ZXJydXB0X3N0YXR1cyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxOAoKI2RlZmluZSBDT01NT05fUkVHX09fRmxhc2hfY3RybF9yZWcgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMUMKCiNkZWZpbmUgQ09NTU9OX1JFR19PX0J1c19tYXRyaXhfTTBfc2VnbWVudF9hY2Nlc3NfY29uZmlnIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDI0CgojZGVmaW5lIENPTU1PTl9SRUdfT19CdXNfbWF0cml4X00xX3NlZ21lbnRfYWNjZXNzX2NvbmZpZyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyOAoKI2RlZmluZSBDT01NT05fUkVHX09fQnVzX21hdHJpeF9NMl9zZWdtZW50X2FjY2Vzc19jb25maWcgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMkMKCiNkZWZpbmUgQ09NTU9OX1JFR19PX0J1c19tYXRyaXhfTTNfc2VnbWVudF9hY2Nlc3NfY29uZmlnIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDMwCgojZGVmaW5lIENPTU1PTl9SRUdfT19CdXNfbWF0cml4X000X3NlZ21lbnRfYWNjZXNzX2NvbmZpZyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzNAoKI2RlZmluZSBDT01NT05fUkVHX09fQnVzX21hdHJpeF9NNV9zZWdtZW50X2FjY2Vzc19jb25maWcgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMzgKCiNkZWZpbmUgQ09NTU9OX1JFR19PX0dQSU9fcHJvcGVydGllc19yZWdpc3RlciBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzQwoKI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkUxIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQwCgojZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDQKCiNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0OAoKI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkU0IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDRDCgojZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNTAKCiNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFNiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA1NAoKI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkU3IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDU4CgojZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTggXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNUMKCiNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFOSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA2MAoKI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkUxMCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA2NAoKI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkUxMSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA2OAoKI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkUxMiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA2QwoKI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19TRU1BUFBIT1JFX1BFTkQgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNzAKCiNkZWZpbmUgQ09NTU9OX1JFR19PX05XX1NFTUFQUEhPUkVfUEVORCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3NAoKI2RlZmluZSBDT01NT05fUkVHX09fU0VNQVBIT1JFX1NUQVRVUyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3OAoKI2RlZmluZSBDT01NT05fUkVHX09fSURNRU1fVElNX1VwZGF0ZSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3QwoKI2RlZmluZSBDT01NT05fUkVHX09fRlBHQV9ST01fV1JfRU4gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAKCiNkZWZpbmUgQ09NTU9OX1JFR19PX05XX0lOVF9NQVNLIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDg0CgojZGVmaW5lIENPTU1PTl9SRUdfT19OV19JTlRfTUFTS19TRVQgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODgKCiNkZWZpbmUgQ09NTU9OX1JFR19PX05XX0lOVF9NQVNLX0NMUiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4QwoKI2RlZmluZSBDT01NT05fUkVHX09fTldfSU5UX1NUU19DTFIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwOTAKCiNkZWZpbmUgQ09NTU9OX1JFR19PX05XX0lOVF9BQ0sgMHgwMDAwMDA5NAojZGVmaW5lIENPTU1PTl9SRUdfT19OV19JTlRfVFJJRyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA5OAoKI2RlZmluZSBDT01NT05fUkVHX09fTldfSU5UX1NUU19NQVNLRUQgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwOUMKCiNkZWZpbmUgQ09NTU9OX1JFR19PX05XX0lOVF9TVFNfUkFXIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEEwCgojZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX0lOVF9NQVNLIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEE0CgojZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX0lOVF9NQVNLX1NFVCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBBOAoKI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19JTlRfTUFTS19DTFIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQUMKCiNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfSU5UX1NUU19DTFIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQjAKCiNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfSU5UX0FDSyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCNAoKI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19JTlRfVFJJRyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCOAoKI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19JTlRfU1RTX01BU0tFRCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCQwoKI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19JTlRfU1RTX1JBVyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBDMAoKI2RlZmluZSBDT01NT05fUkVHX09fSURNRU1fVElNX1VwZGF0ZWQgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQzQKCiNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfR1BJT19UUklHX0VOIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEM4CgojZGVmaW5lIENPTU1PTl9SRUdfT19FTVVfREVCVUdfUkVHIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMENDCgojZGVmaW5lIENPTU1PTl9SRUdfT19TRU1BUEhPUkVfU1RBVFVTMiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBEMAoKI2RlZmluZSBDT01NT05fUkVHX09fU0VNQVBIT1JFX1BSRVZfT1dORVIxIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEQ0CgojZGVmaW5lIENPTU1PTl9SRUdfT19TRU1BUEhPUkVfUFJFVl9PV05FUjIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRDgKCgoKCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQovLyBDT01NT05fUkVHX09fSTJDX1Byb3BlcnRpZXNfUmVnaXN0ZXIgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19JMkNfUHJvcGVydGllc19SZWdpc3Rlcl9JMkNfUHJvcGVydGllc19SZWdpc3Rlcl9NIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2FpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4KCiNkZWZpbmUgQ09NTU9OX1JFR19JMkNfUHJvcGVydGllc19SZWdpc3Rlcl9JMkNfUHJvcGVydGllc19SZWdpc3Rlcl9TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19TUElfUHJvcGVydGllc19SZWdpc3RlciByZWdpc3Rlci4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKI2RlZmluZSBDT01NT05fUkVHX1NQSV9Qcm9wZXJ0aWVzX1JlZ2lzdGVyX1NQSV9Qcm9wZXJ0aWVzX1JlZ2lzdGVyX00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDMgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgYml0LiDigKIgV2hlbiB0aGlzIHJlZ2lzdGVyIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzcy4g4oCiIElkZWFsbHkgYm90aCB0aGUgbWFzdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDEgb3IgMuKAmWIwMCB0byB0aGlzIHJlZ2lzdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgdGhlIGJpdCBvZiB0aGlzIHJlZ2lzdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBpcyBvbmUgbWFzdGVyIHdpbGwgbm90CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLgoKI2RlZmluZSBDT01NT05fUkVHX1NQSV9Qcm9wZXJ0aWVzX1JlZ2lzdGVyX1NQSV9Qcm9wZXJ0aWVzX1JlZ2lzdGVyX1MgMAoKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGUgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfQVBQU19zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfZW5hYmxlX00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYgIC8vIEludGVycnVwdCBlbmFibGUgQVBQUyBiaXQgMCAtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gJzEnIGVuYWJsZSBJMkMgaW50ZXJydXB0IGJpdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEgLT4gd2hlbiAnMScgZW5hYmxlIFNQSQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBiaXQgMyAtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gJzEnIGVuYWJsZSBHUElPIGludGVycnVwdAoKI2RlZmluZSBDT01NT05fUkVHX0FQUFNfc2hfcmVzb3VyY2VfSW50ZXJydXB0X2VuYWJsZV9BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfUyAwCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQovLyBDT01NT05fUkVHX09fQVBQU19zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfc3RhdHVzIHJlZ2lzdGVyLgovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfc3RhdHVzX0FQUFNfc2hfcmVzb3VyY2VfSW50ZXJydXB0X3N0YXR1c19NIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDBGICAvLyBJbnRlcnJ1cHQgZW5hYmxlIEFQUFMgYml0IDAgLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuICcxJyBlbmFibGUgSTJDIGludGVycnVwdCBiaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxIC0+IHdoZW4gJzEnIGVuYWJsZSBTUEkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQgYml0IDMgLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuICcxJyBlbmFibGUgR1BJTyBpbnRlcnJ1cHQKCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXNfQVBQU19zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfc3RhdHVzX1MgMAovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKLy8gQ09NTU9OX1JFR19PX05XUF9zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfZW5hYmxlIHJlZ2lzdGVyLgovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojZGVmaW5lIENPTU1PTl9SRUdfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfTSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwRiAgLy8gSW50ZXJydXB0IGVuYWJsZSBOV1AgYml0IDAgLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuICcxJyBlbmFibGUgSTJDIGludGVycnVwdCBiaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxIC0+IHdoZW4gJzEnIGVuYWJsZSBTUEkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQgYml0IDMgLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuICcxJyBlbmFibGUgR1BJTyBpbnRlcnJ1cHQKCiNkZWZpbmUgQ09NTU9OX1JFR19OV1Bfc2hfcmVzb3VyY2VfSW50ZXJydXB0X2VuYWJsZV9OV1Bfc2hfcmVzb3VyY2VfSW50ZXJydXB0X2VuYWJsZV9TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19OV1Bfc2hfcmVzb3VyY2VfSW50ZXJydXB0X3N0YXR1cyByZWdpc3Rlci4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKI2RlZmluZSBDT01NT05fUkVHX05XUF9zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfc3RhdHVzX05XUF9zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfc3RhdHVzX00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYgIC8vIEludGVycnVwdCBlbmFibGUgTldQIGJpdCAwIC0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiAnMScgZW5hYmxlIEkyQyBpbnRlcnJ1cHQgYml0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMSAtPiB3aGVuICcxJyBlbmFibGUgU1BJCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IGJpdCAzIC0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiAnMScgZW5hYmxlIEdQSU8gaW50ZXJydXB0CgojZGVmaW5lIENPTU1PTl9SRUdfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXNfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXNfUyAwCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQovLyBDT01NT05fUkVHX09fRmxhc2hfY3RybF9yZWcgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19GbGFzaF9jdHJsX3JlZ19GbGFzaF9jdHJsX3JlZ19NIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2FpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4KCiNkZWZpbmUgQ09NTU9OX1JFR19GbGFzaF9jdHJsX3JlZ19GbGFzaF9jdHJsX3JlZ19TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19CdXNfbWF0cml4X00wX3NlZ21lbnRfYWNjZXNzX2NvbmZpZyByZWdpc3Rlci4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKI2RlZmluZSBDT01NT05fUkVHX0J1c19tYXRyaXhfTTBfc2VnbWVudF9hY2Nlc3NfY29uZmlnX0J1c19tYXRyaXhfTTBfc2VnbWVudF9hY2Nlc3NfY29uZmlnX00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwM0ZGRkYgIC8vIE1hc3RlciAwIGNvbnRyb2wgd29yZCBtYXRyaXggdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlYWNoIHNlZ21lbnQuIFRpZW9mZi4gQml0IHZhbHVlIDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpY2F0ZXMgc2VnbWVudCBpcyBhY2Nlc2FibGUuCgojZGVmaW5lIENPTU1PTl9SRUdfQnVzX21hdHJpeF9NMF9zZWdtZW50X2FjY2Vzc19jb25maWdfQnVzX21hdHJpeF9NMF9zZWdtZW50X2FjY2Vzc19jb25maWdfUyAwCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQovLyBDT01NT05fUkVHX09fQnVzX21hdHJpeF9NMV9zZWdtZW50X2FjY2Vzc19jb25maWcgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19CdXNfbWF0cml4X00xX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19CdXNfbWF0cml4X00xX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19NIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDNGRkZGICAvLyBNYXN0ZXIgMSBjb250cm9sIHdvcmQgbWF0cml4IHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWFjaCBzZWdtZW50LiBUaWVvZmYuIEJpdCB2YWx1ZSAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5kaWNhdGVzIHNlZ21lbnQgaXMgYWNjZXNhYmxlLgoKI2RlZmluZSBDT01NT05fUkVHX0J1c19tYXRyaXhfTTFfc2VnbWVudF9hY2Nlc3NfY29uZmlnX0J1c19tYXRyaXhfTTFfc2VnbWVudF9hY2Nlc3NfY29uZmlnX1MgMAovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKLy8gQ09NTU9OX1JFR19PX0J1c19tYXRyaXhfTTJfc2VnbWVudF9hY2Nlc3NfY29uZmlnIHJlZ2lzdGVyLgovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojZGVmaW5lIENPTU1PTl9SRUdfQnVzX21hdHJpeF9NMl9zZWdtZW50X2FjY2Vzc19jb25maWdfQnVzX21hdHJpeF9NMl9zZWdtZW50X2FjY2Vzc19jb25maWdfTSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAzRkZGRiAgLy8gTWFzdGVyIDIgY29udHJvbCB3b3JkIG1hdHJpeCB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVhY2ggc2VnbWVudC4gVGllb2ZmLiBCaXQgdmFsdWUgMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZGljYXRlcyBzZWdtZW50IGlzIGFjY2VzYWJsZS4KCiNkZWZpbmUgQ09NTU9OX1JFR19CdXNfbWF0cml4X00yX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19CdXNfbWF0cml4X00yX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19CdXNfbWF0cml4X00zX3NlZ21lbnRfYWNjZXNzX2NvbmZpZyByZWdpc3Rlci4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKI2RlZmluZSBDT01NT05fUkVHX0J1c19tYXRyaXhfTTNfc2VnbWVudF9hY2Nlc3NfY29uZmlnX0J1c19tYXRyaXhfTTNfc2VnbWVudF9hY2Nlc3NfY29uZmlnX00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwM0ZGRkYgIC8vIE1hc3RlciAzIGNvbnRyb2wgd29yZCBtYXRyaXggdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlYWNoIHNlZ21lbnQuIFRpZW9mZi4gQml0IHZhbHVlIDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpY2F0ZXMgc2VnbWVudCBpcyBhY2Nlc2FibGUuCgojZGVmaW5lIENPTU1PTl9SRUdfQnVzX21hdHJpeF9NM19zZWdtZW50X2FjY2Vzc19jb25maWdfQnVzX21hdHJpeF9NM19zZWdtZW50X2FjY2Vzc19jb25maWdfUyAwCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQovLyBDT01NT05fUkVHX09fQnVzX21hdHJpeF9NNF9zZWdtZW50X2FjY2Vzc19jb25maWcgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19CdXNfbWF0cml4X000X3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19CdXNfbWF0cml4X000X3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19NIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDNGRkZGICAvLyBNYXN0ZXIgNCBjb250cm9sIHdvcmQgbWF0cml4IHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWFjaCBzZWdtZW50LiBUaWVvZmYuIEJpdCB2YWx1ZSAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5kaWNhdGVzIHNlZ21lbnQgaXMgYWNjZXNhYmxlLgoKI2RlZmluZSBDT01NT05fUkVHX0J1c19tYXRyaXhfTTRfc2VnbWVudF9hY2Nlc3NfY29uZmlnX0J1c19tYXRyaXhfTTRfc2VnbWVudF9hY2Nlc3NfY29uZmlnX1MgMAovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKLy8gQ09NTU9OX1JFR19PX0J1c19tYXRyaXhfTTVfc2VnbWVudF9hY2Nlc3NfY29uZmlnIHJlZ2lzdGVyLgovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojZGVmaW5lIENPTU1PTl9SRUdfQnVzX21hdHJpeF9NNV9zZWdtZW50X2FjY2Vzc19jb25maWdfQnVzX21hdHJpeF9NNV9zZWdtZW50X2FjY2Vzc19jb25maWdfTSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAzRkZGRiAgLy8gTWFzdGVyIDUgY29udHJvbCB3b3JkIG1hdHJpeCB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVhY2ggc2VnbWVudC4gVGllb2ZmLiBCaXQgdmFsdWUgMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZGljYXRlcyBzZWdtZW50IGlzIGFjY2VzYWJsZS4KCiNkZWZpbmUgQ09NTU9OX1JFR19CdXNfbWF0cml4X001X3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19CdXNfbWF0cml4X001X3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19HUElPX3Byb3BlcnRpZXNfcmVnaXN0ZXIgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19HUElPX3Byb3BlcnRpZXNfcmVnaXN0ZXJfR1BJT19wcm9wZXJ0aWVzX3JlZ2lzdGVyX00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAzRkYgIC8vIFNoYXJlZCBHUElPIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3Rlci4gQml0IFsxOjBdIHRvIGNvbmZpZ3VyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8wIEJpdCBbMzoyXSB0byBjb25maWd1cmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPMSBCaXQgWzU6NF0gdG8gY29uZmlndXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTzIgQml0IFs3OjZdIHRvIGNvbmZpZ3VyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8zIEJpdCBbOTo4XSB0byBjb25maWd1cmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPNCBlYWNoIEdQSU8gY2FuIGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5kaXZpZHVsbHkgc2VsZWN0ZWQuIFdoZW4g4oCcMDDigD8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIGlzIGZyZWUgcmVzb3VyY2UuIFdoZW4g4oCcMDHigD8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIGlzIEFQUFMgcmVzb3VyY2UuIFdoZW4g4oCcMTDigD8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIGlzIE5XUCByZXNvdXJjZS4gV3JpdGluZyAxMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvZXNudCBoYXZlIGFueSBhZmZlY3QsIGkuZS4gSWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbmUgd3JpdGUgb25seSByZWxldmFudCBncGlvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VtYXBob3JlIGFuZCBvdGhlciBiaXRzIGFyZSAxcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCdsbCBub3QgZGlzdHVyYiB0aGUgb3RoZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZW1hcGhvcmUgYml0cy4gRm9yIGV4YW1wbGUgOiBTYXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBOVyB3YW50cyB0byB0YWtlIGNvbnRyb2wgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBncGlvLTEsIG9uZSBzaG91bGQgd3JpdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMCdiMTFfMTExMV8xMDExIGFuZCBpZiBvbmUgd2FudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byByZWxlYXNlIGl0IHdyaXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTAnYjExXzExMTFfMDAxMS4KCiNkZWZpbmUgQ09NTU9OX1JFR19HUElPX3Byb3BlcnRpZXNfcmVnaXN0ZXJfR1BJT19wcm9wZXJ0aWVzX3JlZ2lzdGVyX1MgMAovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMSByZWdpc3Rlci4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFMV9BUFBTX05XX1NFTUFQSE9SRTFfTSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2VzcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuCgojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUxX0FQUFNfTldfU0VNQVBIT1JFMV9TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTIgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTJfQVBQU19OV19TRU1BUEhPUkUyX00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgYml0LiDigKIgV2hlbiB0aGlzIHJlZ2lzdGVyIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzcy4g4oCiIElkZWFsbHkgYm90aCB0aGUgbWFzdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDEgb3IgMuKAmWIwMCB0byB0aGlzIHJlZ2lzdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgdGhlIGJpdCBvZiB0aGlzIHJlZ2lzdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBpcyBvbmUgbWFzdGVyIHdpbGwgbm90CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLgoKI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFMl9BUFBTX05XX1NFTUFQSE9SRTJfUyAwCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQovLyBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkUzIHJlZ2lzdGVyLgovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUzX0FQUFNfTldfU0VNQVBIT1JFM19NIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2FpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4KCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTNfQVBQU19OV19TRU1BUEhPUkUzX1MgMAovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFNCByZWdpc3Rlci4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFNF9BUFBTX05XX1NFTUFQSE9SRTRfTSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2VzcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuCgojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkU0X0FQUFNfTldfU0VNQVBIT1JFNF9TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTUgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTVfQVBQU19OV19TRU1BUEhPUkU1X00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgYml0LiDigKIgV2hlbiB0aGlzIHJlZ2lzdGVyIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzcy4g4oCiIElkZWFsbHkgYm90aCB0aGUgbWFzdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDEgb3IgMuKAmWIwMCB0byB0aGlzIHJlZ2lzdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgdGhlIGJpdCBvZiB0aGlzIHJlZ2lzdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBpcyBvbmUgbWFzdGVyIHdpbGwgbm90CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLgoKI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFNV9BUFBTX05XX1NFTUFQSE9SRTVfUyAwCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQovLyBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkU2IHJlZ2lzdGVyLgovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkU2X0FQUFNfTldfU0VNQVBIT1JFNl9NIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2FpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4KCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTZfQVBQU19OV19TRU1BUEhPUkU2X1MgMAovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFNyByZWdpc3Rlci4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFN19BUFBTX05XX1NFTUFQSE9SRTdfTSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2VzcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuCgojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkU3X0FQUFNfTldfU0VNQVBIT1JFN19TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTggcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRThfQVBQU19OV19TRU1BUEhPUkU4X00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgYml0LiDigKIgV2hlbiB0aGlzIHJlZ2lzdGVyIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzcy4g4oCiIElkZWFsbHkgYm90aCB0aGUgbWFzdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDEgb3IgMuKAmWIwMCB0byB0aGlzIHJlZ2lzdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgdGhlIGJpdCBvZiB0aGlzIHJlZ2lzdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBpcyBvbmUgbWFzdGVyIHdpbGwgbm90CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLgoKI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFOF9BUFBTX05XX1NFTUFQSE9SRThfUyAwCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQovLyBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkU5IHJlZ2lzdGVyLgovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkU5X0FQUFNfTldfU0VNQVBIT1JFOV9NIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2FpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4KCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTlfQVBQU19OV19TRU1BUEhPUkU5X1MgMAovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMTAgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTEwX0FQUFNfTldfU0VNQVBIT1JFMTBfTSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2VzcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuCgojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUxMF9BUFBTX05XX1NFTUFQSE9SRTEwX1MgMAovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMTEgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTExX0FQUFNfTldfU0VNQVBIT1JFMTFfTSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2VzcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuCgojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUxMV9BUFBTX05XX1NFTUFQSE9SRTExX1MgMAovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMTIgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTEyX0FQUFNfTldfU0VNQVBIT1JFMTJfTSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gQVBQUyBOVyBzZW1hcGhvcmUgcmVnaXN0ZXIgLSBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZsZWN0ZWQgaW4gc3RhdHVzLgoKI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFMTJfQVBQU19OV19TRU1BUEhPUkUxMl9TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19BUFBTX1NFTUFQUEhPUkVfUEVORCByZWdpc3Rlci4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKI2RlZmluZSBDT01NT05fUkVHX0FQUFNfU0VNQVBQSE9SRV9QRU5EX0FQUFNfU0VNQVBQSE9SRV9QRU5EX00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIEFQUFMgU0VNQVBPSE9SRSBTVEFUVVMKCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX1NFTUFQUEhPUkVfUEVORF9BUFBTX1NFTUFQUEhPUkVfUEVORF9TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19OV19TRU1BUFBIT1JFX1BFTkQgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19OV19TRU1BUFBIT1JFX1BFTkRfTldfU0VNQVBQSE9SRV9QRU5EX00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIE5XIFNFTUFQSE9SRSBTVEFUVVMKCiNkZWZpbmUgQ09NTU9OX1JFR19OV19TRU1BUFBIT1JFX1BFTkRfTldfU0VNQVBQSE9SRV9QRU5EX1MgMAovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKLy8gQ09NTU9OX1JFR19PX1NFTUFQSE9SRV9TVEFUVVMgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19TRU1BUEhPUkVfU1RBVFVTX1NFTUFQSE9SRV9TVEFUVVNfTSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gU0VNQVBIT1JFIFNUQVRVUyA5OjggOnNlbWFwaG9yZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXR1cyBvZiBmbGFzaF9jb250cm9sIDc6NgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDpzZW1hcGhvcmUgc3RhdHVzIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3Bpb19wcm9wZXJ0aWVzIDU6NAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDpzZW1hcGhvcmUgc3RhdHVzIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BpX3Byb3BlcnRpZSAxOjAgOnNlbWFwaG9yZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXR1cyBvZiBpMmNfcHJvcGVydGllCgojZGVmaW5lIENPTU1PTl9SRUdfU0VNQVBIT1JFX1NUQVRVU19TRU1BUEhPUkVfU1RBVFVTX1MgMAovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKLy8gQ09NTU9OX1JFR19PX0lETUVNX1RJTV9VcGRhdGUgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQovLyBDT01NT05fUkVHX09fRlBHQV9ST01fV1JfRU4gcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19GUEdBX1JPTV9XUl9FTl9GUEdBX1JPTV9XUl9FTiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gd2hlbiAnMScgZW5hYmxlcyBXcml0ZSBpbnRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSURNRU0gQ09SRSBST00sIEFQUFMgUk9NLCBOV1AgUk9NCgovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKLy8gQ09NTU9OX1JFR19PX05XX0lOVF9NQVNLIHJlZ2lzdGVyLgovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojZGVmaW5lIENPTU1PTl9SRUdfTldfSU5UX01BU0tfTldfSU5UX01BU0tfTSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gMT0gZGlzYWJsZSBjb3JyZXNwb25kaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0OzAgPSBpbnRlcnJ1cHQgZW5hYmxlZAoKI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9NQVNLX05XX0lOVF9NQVNLX1MgMAovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKLy8gQ09NTU9OX1JFR19PX05XX0lOVF9NQVNLX1NFVCByZWdpc3Rlci4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9NQVNLX1NFVF9OV19JTlRfTUFTS19TRVRfTSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gd3JpdGUgMSB0byBzZXQgY29ycmVzcG9uZGluZyBiaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBOV19JTlRfTUFTSzswID0gbm8gZWZmZWN0CgojZGVmaW5lIENPTU1PTl9SRUdfTldfSU5UX01BU0tfU0VUX05XX0lOVF9NQVNLX1NFVF9TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19OV19JTlRfTUFTS19DTFIgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfTUFTS19DTFJfTldfSU5UX01BU0tfQ0xSX00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gY2xlYXIgY29ycmVzcG9uZGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpdCBpbiBOV19JTlRfTUFTSzswID0gbm8gZWZmZWN0CgojZGVmaW5lIENPTU1PTl9SRUdfTldfSU5UX01BU0tfQ0xSX05XX0lOVF9NQVNLX0NMUl9TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19OV19JTlRfU1RTX0NMUiByZWdpc3Rlci4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9TVFNfQ0xSX05XX0lOVF9TVFNfQ0xSX00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gY2xlYXIgY29ycmVzcG9uZGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdDsgMCA9IG5vIGVmZmVjdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQgaXMgbm90IGxvc3QgaWYgY29pbmNpZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIHdyaXRlIG9wZXJhdGlvbgoKI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9TVFNfQ0xSX05XX0lOVF9TVFNfQ0xSX1MgMAovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKLy8gQ09NTU9OX1JFR19PX05XX0lOVF9BQ0sgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfQUNLX05XX0lOVF9BQ0tfTSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gd3JpdGUgMSB0byBjbGVhciBjb3JyZXNwb25kaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0OzAgPSBubyBlZmZlY3QKCiNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfQUNLX05XX0lOVF9BQ0tfUyAwCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQovLyBDT01NT05fUkVHX09fTldfSU5UX1RSSUcgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfVFJJR19OV19JTlRfVFJJR19NIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBXcml0aW5nIGEgMSB0byBhIGJpdCBpbiB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgY2F1c2VzIHRoZSB0aGUgSG9zdCBDUFUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBlbmFibGVkIChub3QgbWFza2VkKS4gVGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGlzIHNlbGYtY2xlYXJpbmcuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV3JpdGluZyAwIGhhcyBubyBlZmZlY3QKCiNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfVFJJR19OV19JTlRfVFJJR19TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19OV19JTlRfU1RTX01BU0tFRCByZWdpc3Rlci4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9TVFNfTUFTS0VEX05XX0lOVF9TVFNfTUFTS0VEX00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIDE9IGNvcnJlc3BvbmRpbmcgaW50ZXJydXB0IGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZlIGFuZCBub3QgbWFza2VkLiByZWFkIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm9uLWRlc3RydWN0aXZlOzAgPSBjb3JyZXNwb25kaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IGlzIGluYWN0aXZlIG9yIG1hc2tlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IE5XX0lOVCBtYXNrCgojZGVmaW5lIENPTU1PTl9SRUdfTldfSU5UX1NUU19NQVNLRURfTldfSU5UX1NUU19NQVNLRURfUyAwCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQovLyBDT01NT05fUkVHX09fTldfSU5UX1NUU19SQVcgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfU1RTX1JBV19OV19JTlRfU1RTX1JBV19NIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAxPSBjb3JyZXNwb25kaW5nIGludGVycnVwdCBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjdGl2ZS4gcmVhZCBpcyBub24tZGVzdHJ1Y3RpdmU7MAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vID0gY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmFjdGl2ZQoKI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9TVFNfUkFXX05XX0lOVF9TVFNfUkFXX1MgMAovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKLy8gQ09NTU9OX1JFR19PX0FQUFNfSU5UX01BU0sgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0lOVF9NQVNLX0FQUFNfSU5UX01BU0tfTSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gMT0gZGlzYWJsZSBjb3JyZXNwb25kaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0OzAgPSBpbnRlcnJ1cHQgZW5hYmxlZAoKI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX01BU0tfQVBQU19JTlRfTUFTS19TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19BUFBTX0lOVF9NQVNLX1NFVCByZWdpc3Rlci4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX01BU0tfU0VUX0FQUFNfSU5UX01BU0tfU0VUX00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gc2V0IGNvcnJlc3BvbmRpbmcgYml0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gQVBQU19JTlRfTUFTSzswID0gbm8gZWZmZWN0CgojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfTUFTS19TRVRfQVBQU19JTlRfTUFTS19TRVRfUyAwCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQovLyBDT01NT05fUkVHX09fQVBQU19JTlRfTUFTS19DTFIgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0lOVF9NQVNLX0NMUl9BUFBTX0lOVF9NQVNLX0NMUl9NIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyB3cml0ZSAxIHRvIGNsZWFyIGNvcnJlc3BvbmRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgaW4gQVBQU19JTlRfTUFTSzswID0gbm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlZmZlY3QKCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0lOVF9NQVNLX0NMUl9BUFBTX0lOVF9NQVNLX0NMUl9TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19BUFBTX0lOVF9TVFNfQ0xSIHJlZ2lzdGVyLgovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfU1RTX0NMUl9BUFBTX0lOVF9TVFNfQ0xSX00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gY2xlYXIgY29ycmVzcG9uZGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdDsgMCA9IG5vIGVmZmVjdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQgaXMgbm90IGxvc3QgaWYgY29pbmNpZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIHdyaXRlIG9wZXJhdGlvbgoKI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX1NUU19DTFJfQVBQU19JTlRfU1RTX0NMUl9TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19BUFBTX0lOVF9BQ0sgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0lOVF9BQ0tfQVBQU19JTlRfQUNLX00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gY2xlYXIgY29ycmVzcG9uZGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdDswID0gbm8gZWZmZWN0CgojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfQUNLX0FQUFNfSU5UX0FDS19TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19BUFBTX0lOVF9UUklHIHJlZ2lzdGVyLgovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfVFJJR19BUFBTX0lOVF9UUklHX00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIFdyaXRpbmcgYSAxIHRvIGEgYml0IGluIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBjYXVzZXMgdGhlIHRoZSBIb3N0IENQVQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGVuYWJsZWQgKG5vdCBtYXNrZWQpLiBUaGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgaXMgc2VsZi1jbGVhcmluZy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXcml0aW5nIDAgaGFzIG5vIGVmZmVjdAoKI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX1RSSUdfQVBQU19JTlRfVFJJR19TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19BUFBTX0lOVF9TVFNfTUFTS0VEIHJlZ2lzdGVyLgovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfU1RTX01BU0tFRF9BUFBTX0lOVF9TVFNfTUFTS0VEX00gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIDE9IGNvcnJlc3BvbmRpbmcgaW50ZXJydXB0IGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZlIGFuZCBub3QgbWFza2VkLiByZWFkIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm9uLWRlc3RydWN0aXZlOzAgPSBjb3JyZXNwb25kaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IGlzIGluYWN0aXZlIG9yIG1hc2tlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IEFQUFNfSU5UIG1hc2sKCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0lOVF9TVFNfTUFTS0VEX0FQUFNfSU5UX1NUU19NQVNLRURfUyAwCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQovLyBDT01NT05fUkVHX09fQVBQU19JTlRfU1RTX1JBVyByZWdpc3Rlci4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX1NUU19SQVdfQVBQU19JTlRfU1RTX1JBV19NIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAxPSBjb3JyZXNwb25kaW5nIGludGVycnVwdCBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjdGl2ZS4gcmVhZCBpcyBub24tZGVzdHJ1Y3RpdmU7MAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vID0gY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmFjdGl2ZQoKI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX1NUU19SQVdfQVBQU19JTlRfU1RTX1JBV19TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19JRE1FTV9USU1fVXBkYXRlZCByZWdpc3Rlci4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKI2RlZmluZSBDT01NT05fUkVHX0lETUVNX1RJTV9VcGRhdGVkX1RJTV9VUERBVEVEIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxICAvLyB0b2dnbGUgaW4gdGhpcyBzaWduYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpY2F0ZXNJRE1FTV9USU1fVVBEQVRFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgbWVudGlvbmVkIGFib3ZlIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlZC4KCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQovLyBDT01NT05fUkVHX09fQVBQU19HUElPX1RSSUdfRU4gcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0dQSU9fVFJJR19FTl9BUFBTX0dQSU9fVFJJR19FTl9NIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDFGICAvLyBBUFBTIEdQSU8gVHJpZ2dlciBFTiBjb250cm9sLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJpdCAwOiB3aGVuICcxJyBlbmFibGUgR1BJTyAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlci4gVGhpcyBiaXQgZW5hYmxlcyB0cmlnZ2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGFsbCBHUElPIDAgcGlucyAoR1BJTyAwIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTzcpLiBCaXQgMTogd2hlbiAnMScgZW5hYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyAxIHRyaWdnZXIuIFRoaXMgYml0IGVuYWJsZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIGZvciBhbGwgR1BJTyAxIHBpbnMgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU84IHRvIEdQSU8xNSkuIEJpdCAyOiB3aGVuICcxJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZSBHUElPIDIgdHJpZ2dlci4gVGhpcyBiaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIHRyaWdnZXIgZm9yIGFsbCBHUElPIDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwaW5zIChHUElPMTYgdG8gR1BJTzIzKS4gQml0IDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiAnMScgZW5hYmxlIEdQSU8gMyB0cmlnZ2VyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgYml0IGVuYWJsZXMgdHJpZ2dlciBmb3IgYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyAzIHBpbnMgKEdQSU8yNCB0byBHUElPMzEpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJpdCA0OiB3aGVuICcxJyBlbmFibGUgR1BJTyA0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlci4gVGhpcyBiaXQgZW5hYmxlcyB0cmlnZ2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGFsbCBHUElPIDQgcGlucy4oR1BJTzMyIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTzM5KQoKI2RlZmluZSBDT01NT05fUkVHX0FQUFNfR1BJT19UUklHX0VOX0FQUFNfR1BJT19UUklHX0VOX1MgMAovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKLy8gQ09NTU9OX1JFR19PX0VNVV9ERUJVR19SRUcgcmVnaXN0ZXIuCi8vCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiNkZWZpbmUgQ09NTU9OX1JFR19FTVVfREVCVUdfUkVHX0VNVV9ERUJVR19SRUdfTSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gMCB0aCBiaXQgdXNlZCBmb3Igc3RhbGxpbmcgQVBQUwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERNQSBhbmQgMXN0IGJpdCBpcyB1c2VkIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWxsaW5nIE5XUCBETUEgZm9yIGRlYnVnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHVycG9zZS4gT3RoZXIgYml0cyBhcmUgdW51c2VkLgoKI2RlZmluZSBDT01NT05fUkVHX0VNVV9ERUJVR19SRUdfRU1VX0RFQlVHX1JFR19TIDAKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlCi8vIENPTU1PTl9SRUdfT19TRU1BUEhPUkVfU1RBVFVTMiByZWdpc3Rlci4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKI2RlZmluZSBDT01NT05fUkVHX1NFTUFQSE9SRV9TVEFUVVMyX1NFTVBBUEhPUkVfU1RBVFVTMl9NIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRkZGRkZGICAvLyBTRU1BUEhPUkUgU1RBVFVTIDIzOjIyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOnNlbWFwaG9yZSBzdGF0dXMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTExIDIxOjIwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOnNlbWFwaG9yZSBzdGF0dXMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTExIDE5OjE4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOnNlbWFwaG9yZSBzdGF0dXMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTEwIDE3OjE2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOnNlbWFwaG9yZSBzdGF0dXMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTkgMTU6MTQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6c2VtYXBob3JlIHN0YXR1cyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlOCAxMzoxMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDpzZW1hcGhvcmUgc3RhdHVzIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmU3IDExOjEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOnNlbWFwaG9yZSBzdGF0dXMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTYgOTo4IDpzZW1hcGhvcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0dXMgb2YgYXBwc19ud19zZW1hcGhvcmU1IDc6NgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDpzZW1hcGhvcmUgc3RhdHVzIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmU0IDU6NCA6c2VtYXBob3JlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhdHVzIG9mIGFwcHNfbndfc2VtYXBob3JlMyAzOjIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6c2VtYXBob3JlIHN0YXR1cyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlMiAxOjAgOnNlbWFwaG9yZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXR1cyBvZiBhcHBzX253X3NlbWFwaG9yZTEKCiNkZWZpbmUgQ09NTU9OX1JFR19TRU1BUEhPUkVfU1RBVFVTMl9TRU1QQVBIT1JFX1NUQVRVUzJfUyAwCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQovLyBDT01NT05fUkVHX09fU0VNQVBIT1JFX1BSRVZfT1dORVIxIHJlZ2lzdGVyLgovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojZGVmaW5lIENPTU1PTl9SRUdfU0VNQVBIT1JFX1BSRVZfT1dORVIxX1NFTUFQSE9SRV9QUkVWX09XTkVSMV9NIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDNGRkZGICAvLyAxOjAgOiBwcnZpb3VzIG93bmVyIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaTJjX3Byb3BlcnRpZXNfcmVnWzE6MF0gMzoyIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcnZpb3VzIG93bmVyIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BpX3Byb3BlcnRpZXNfcmVnWzE6MF0gNTo0IDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcnZpb3VzIG93bmVyIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3Bpb19wcm9wZXJ0aWVzX3JlZ1sxOjBdIDk6OCA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJ2aW91cyBvd25lciBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdwaW9fcHJvcGVydGllc19yZWdbMzoyXSAxMToxMCA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJ2aW91cyBvd25lciBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdwaW9fcHJvcGVydGllc19yZWdbNTo0XSAxMzoxMiA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJ2aW91cyBvd25lciBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdwaW9fcHJvcGVydGllc19yZWdbNzo2XSAxNToxNCA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJ2aW91cyBvd25lciBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdwaW9fcHJvcGVydGllc19yZWdbOTo4XSAxNzoxNiA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJ2aW91cyBvd25lciBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZsYXNoX2NvbnRyb2xfcmVnWzE6MF0KCiNkZWZpbmUgQ09NTU9OX1JFR19TRU1BUEhPUkVfUFJFVl9PV05FUjFfU0VNQVBIT1JFX1BSRVZfT1dORVIxX1MgMAovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUKLy8gQ09NTU9OX1JFR19PX1NFTUFQSE9SRV9QUkVWX09XTkVSMiByZWdpc3Rlci4KLy8KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKI2RlZmluZSBDT01NT05fUkVHX1NFTUFQSE9SRV9QUkVWX09XTkVSMl9TRU1BUEhPUkVfUFJFVl9PV05FUjJfTSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMEZGRkZGRiAgLy8gMTowIDogcHJldmlvdXMgb3duZXIgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTFfcmVnWzE6MF0gMzoyIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmV2aW91cyBvd25lciBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlMl9yZWdbMTowXSA1OjQgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzIG93bmVyIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmUzX3JlZ1sxOjBdIDc6NiA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJldmlvdXMgb3duZXIgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTRfcmVnWzE6MF0gOTo4IDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmV2aW91cyBvd25lciBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlNV9yZWdbMTowXSAxMToxMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDogcHJldmlvdXMgb3duZXIgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTZfcmVnWzE6MF0gMTM6MTIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6IHByZXZpb3VzIG93bmVyIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmU3X3JlZ1sxOjBdIDE1OjE0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOiBwcmV2aW91cyBvd25lciBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlOF9yZWdbMTowXSAxNzoxNgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDogcHJldmlvdXMgb3duZXIgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTlfcmVnWzE6MF0gMTk6MTgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6IHByZXZpb3VzIG93bmVyIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmUxMF9yZWdbMTowXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIxOjIwIDogcHJldmlvdXMgb3duZXIgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTExX3JlZ1sxOjBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMjM6MjIgOiBwcmV2aW91cyBvd25lciBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlMTJfcmVnWzE6MF0KCiNkZWZpbmUgQ09NTU9OX1JFR19TRU1BUEhPUkVfUFJFVl9PV05FUjJfU0VNQVBIT1JFX1BSRVZfT1dORVIyX1MgMAoKCgojZW5kaWYgLy8gX19IV19DT01NT05fUkVHX0hfXwo=