LyoKICogKEMpIENvcHlyaWdodCAyMDA3CiAqIEhlaWtvIFNjaG9jaGVyLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCA8aHNAZGVueC5kZT4uCiAqCiAqIEZyb206CiAqIChDKSBDb3B5cmlnaHQgMjAwMwogKiBKdWVyZ2VuIEJlaXNlcnQsIEV1cm9EZXNpZ24gZW1iZWRkZWQgdGVjaG5vbG9naWVzLCBqYmVpc2VydEBldXJvZHNuLmRlCiAqCiAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAqIHByb2plY3QuCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCiAqIE1BIDAyMTExLTEzMDcgVVNBCiAqLwoKI2lmbmRlZiBfX0NPTkZJR19ICiNkZWZpbmUgX19DT05GSUdfSAoKI3VuZGVmIFVTRV9WR0FfR1JBUEhJQ1MKCi8qIE1lbW9yeSBNYXAKICogMHgwMDAwMDAwMCAuLi4uIDB4MDNGRkZGRkYgLT4gUkFNICh1cCB0byAxMjhNaUIpCiAqIDB4NzQwMDAwMDAgLi4uLiAweDc0MEZGRkZGIC0+IENTIzYKICogMHg3NDEwMDAwMCAuLi4uIDB4NzQxRkZGRkYgLT4gQ1MjNwogKiAweDc0MjAwMDAwIC4uLi4gMHg3NDJGRkZGRiAtPiBDUzQjIGlmIG5vIGludGVybmFsIFVTQgogKiAweDc0MzAwMDAwIC4uLi4gMHg3NDNGRkZGRiAtPiBDUzUjIGlmIG5vIGJvb3N0ZWQgSURFCiAqIDB4NzdDMDAwMDAgLi4uLiAweDc3Q0ZGRkZGIC0+IENTNCMgVVNCIEhDICgxIE1pQikKICogMHg3N0QwMDAwMCAuLi4uIDB4NzdERkZGRkYgLT4gQ1MxIyBOQU5ELUZsYXNoICgxIE1pQikKICogMHg3ODAwMDAwMCAuLi4uIDB4NzhGRkZGRkYgLT4gQ1MyIyBJU0EtQnVzIFNwZWljaGVyenVncmlmZiAoMTYgTWlCKQogKiAweDc5MDAwMDAwIC4uLi4gMHg3OTAwRkZGRiAtPiBDUzIjIElTQS1CdXMgSU8tWnVncmlmZiAoMTYgTWlCLCBtYXBwZWQ6IDY0a2lCKQogKiAweDc5MDEwMDAwIC4uLi4gMHg3OUZGRkZGRiAtPiBDUzIjIElTQS1CdXMgSU8tWnVncmlmZiAobWlycm9yZWQpCiAqIDB4N0EwMDAwMDAgLi4uLiAweDdBMEZGRkZGIC0+IENTNSMgSURFIGVtdWxhdGlvbiAoMU1pQikKICoKICogMHg4MDAwMDAwMCAuLi4uIDB4OUZGRkZGRkYgLT4gUENJLUJ1cyBTcGVpY2hlcnp1Z3JpZmYgKDUxMk1pQiwgbWFwcGVkOiAxOjEpCiAqIDB4QTAwMDAwMDAgLi4uLiAweEJGRkZGRkZGIC0+IFBDSS1CdXMgU3BlaWNoZXJ6dWdyaWZmICg1MTJNaUIsIG1hcHBlZDogMHgwMDAwMDAwMC4uLjB4MUZGRkZGRkYpCiAqIDB4RTgwMDAwMDAgLi4uLiAweEU4MDBGRkZGIC0+IFBDSS1CdXMgSU8tWnVncmlmZiAoNjRraUIsIHRyYW5zbGF0ZWQgdG8gUENJOiAweDAwMDAuLi4weEZGRkYpCiAqIDB4RTg4MDAwMDAgLi4uLiAweEVCRkZGRkZGIC0+IFBDSS1CdXMgSU8tWnVncmlmZiAoNTZNaUIsIHRyYW5zbGF0ZWQgdG8gUENJOiAweDAwODAwMDAwLi4uMHgzRkZGRkZGKQogKiAweEVFRDAwMDAwIC4uLi4gMHhFRUQwMDAwMyAtPiBQQ0ktQnVzCiAqIDB4RUY0MDAwMDAgLi4uLiAweEVGNDAwMDNGIC0+IFBDSS1CdXMgTG9jYWwgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMKICogMHhFRjQwMDAzRiAuLi4uIDB4RUY1RkZGRkYgLT4gcmVzZXJ2ZWQKICogMHhFRjYwMDAwMCAuLi4uIDB4RUZGRkZGRkYgLT4gNDA1R1AgaW50ZXJuYWwgRGV2aWNlcyAoMTAgTWlCKQogKiAweEYwMDAwMDAwIC4uLi4gMHhGMDFGRkZGRiAtPiBGbGFzaC1ST00gKDIgTWlCKQogKiAweEYwMjAwMDAwIC4uLi4gMHhGN0ZGRkZGRiAtPiBmcmVlIGZvciBmbGFzaCBkZXZpY2VzCiAqIDB4RjgwMDAwMDAgLi4uLiAweEY4MDAwRkZGIC0+IE9uQ2hpcE1lbW9yeSAoNGtpQikKICogMHhGODAwMTAwMCAuLi4uIDB4RkZERkZGRkYgLT4gZnJlZSBmb3IgZmxhc2ggZGV2aWNlcwogKiAweEZGRTAwMDAwIC4uLi4gMHhGRkZGRkZGRiAtPiBCT09ULVJPTSAoMiBNaUIpCiAqLwoKI2RlZmluZSBDT05GSUdfU0MzCTEKI2RlZmluZSBDT05GSUdfNHh4CTEKI2RlZmluZSBDT05GSUdfNDA1R1AJMQoKI2RlZmluZQlDT05GSUdfU1lTX1RFWFRfQkFTRQkweEZGRkEwMDAwCgojZGVmaW5lIENPTkZJR19CT0FSRF9FQVJMWV9JTklUX0YJMQojZGVmaW5lIENPTkZJR19NSVNDX0lOSVRfUgkJMQkvKiBDYWxsIG1pc2NfaW5pdF9yKCkgKi8KCi8qCiAqIERlZmluZSBJREVfVVNFU19JU0FfRU1VTEFUSU9OIGZvciBzbG93ZXIgSURFIGFjY2VzcyBpbiB0aGUgSVNBLUlPIGFkZHJlc3MgcmFuZ2UKICogSWYgdW5kZWZpbmVkLCBJREUgYWNjZXNzIHVzZXMgYSBzZXBlcmF0IGVtdWxhdGlvbiB3aXRoIGhpZ2hlciBhY2Nlc3Mgc3BlZWQuCiAqIENvbnNpZGVyIHRvIGluZm9ybSB5b3VyIExpbnV4IElERSBkcml2ZXIgYWJvdXQgdGhlIGRpZmZlcmVudCBhZGRyZXNzZXMhCiAqIElERV9VU0VTX0lTQV9FTVVMQVRJT04gaXMgb25seSB1c2VkIGlmIHlvdSBkZWZpbmUgQ09ORklHX0NNRF9JREUhCiAqLwojZGVmaW5lIElERV9VU0VTX0lTQV9FTVVMQVRJT04KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogU2VyaWFsIFBvcnQKICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2RlZmluZSBDT05GSUdfQ09OU19JTkRFWAkxCS8qIFVzZSBVQVJUMAkJCSovCiNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwCiNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX1NFUklBTAojZGVmaW5lIENPTkZJR19TWVNfTlMxNjU1MF9SRUdfU0laRQkxCiNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX0NMSwkJZ2V0X3NlcmlhbF9jbG9jaygpCiNkZWZpbmUgQ09ORklHX1NFUklBTF9NVUxUSQoKLyoKICogZGVmaW5lIENPTkZJR19TWVNfQ0xLX0ZSRVEgdG8geW91ciBiYXNlIGNyeXN0YWwgY2xvY2sgaW4gSHoKICovCiNkZWZpbmUgQ09ORklHX1NZU19DTEtfRlJFUQkzMzMzMzMzMwoKLyoKICogZGVmaW5lIENPTkZJR19CQVVEUkFURSB0byB0aGUgYmF1ZHJhdGUgdmFsdWUgeW91IHdhbnQgdG8gdXNlIGFzIGRlZmF1bHQKICovCiNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQkxMTUyMDAKI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCTMgLyogYXV0b2Jvb3QgYWZ0ZXIgMyBzZWNvbmRzCSAgICAgICovCgojZGVmaW5lIENPTkZJR19QUkVCT09UCSJlY2hvOyIJXAoJImVjaG8gVHlwZSBcXFwicnVuIGZsYXNoX25mc1xcXCIgdG8gbW91bnQgcm9vdCBmaWxlc3lzdGVtIG92ZXIgTkZTOyIgXAoJImVjaG8iCgojdW5kZWYJQ09ORklHX0JPT1RBUkdTCgojZGVmaW5lCUNPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MJCQkJCVwKCSJuZXRkZXY9ZXRoMFwwIgkJCQkJCQlcCgkibmZzYXJncz1zZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L25mcyBydyAiCQkJXAoJCSJuZnNyb290PSR7c2VydmVyaXB9OiR7cm9vdHBhdGh9XDAiCQkJXAoJInJhbWFyZ3M9c2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9yYW0gcndcMCIJCQlcCgkibmFuZF9hcmdzPXNldGVudiBib290YXJncyByb290PS9kZXYvbXRkYmxvY2s1IHJ3IgkJXAoJCSJyb290ZnN0eXBlPWpmZnMyXDAiCQkJCQlcCgkiYWRkaXA9c2V0ZW52IGJvb3RhcmdzICR7Ym9vdGFyZ3N9ICIJCQkJXAoJCSJpcD0ke2lwYWRkcn06JHtzZXJ2ZXJpcH06JHtnYXRld2F5aXB9OiR7bmV0bWFza30iCVwKCQkiOiR7aG9zdG5hbWV9OiR7bmV0ZGV2fTpvZmYgcGFuaWM9MVwwIgkJCVwKCSJhZGRjb25zPXNldGVudiBib290YXJncyAke2Jvb3RhcmdzfSAiCQkJCVwKCQkiY29uc29sZT10dHlTMCwke2JhdWRyYXRlfVwwIgkJCQlcCgkiZmxhc2hfbmZzPXJ1biBuZnNhcmdzIGFkZGlwIGFkZGNvbnM7IgkJCQlcCgkJImJvb3RtICR7a2VybmVsX2FkZHJ9XDAiCQkJCVwKCSJmbGFzaF9uYW5kPXJ1biBuYW5kX2FyZ3MgYWRkaXAgYWRkY29ucztib290bSAke2tlcm5lbF9hZGRyfVwwIglcCgkibmV0X25mcz10ZnRwIDIwMDAwMCAke2Jvb3RmaWxlfTtydW4gbmZzYXJncyBhZGRpcCBhZGRjb25zOyIJXAoJCSJib290bVwwIgkJCQkJCVwKCSJyb290cGF0aD0vb3B0L2VsZGsvcHBjXzR4eFwwIgkJCQkJXAoJImJvb3RmaWxlPS90ZnRwYm9vdC9zYzMvdUltYWdlXDAiCQkJCVwKCSJ1LWJvb3Q9L3RmdHBib290L3NjMy91LWJvb3QuYmluXDAiCQkJCVwKCSJzZXR1cD10ZnRwIDIwMDAwMCAvdGZ0cGJvb3Qvc2MzL3NldHVwLmltZztzb3VyY2UgMjAwMDAwXDAiCVwKCSJrZXJuZWxfYWRkcj1GRkUwODAwMFwwIgkJCQkJXAoJIiIKI3VuZGVmIENPTkZJR19CT09UQ09NTUFORAoKI2RlZmluZSBDT05GSUdfU0lMRU5UX0NPTlNPTEUJMQkvKiBlbmFibGUgc2lsZW50IHN0YXJ0dXAgKi8KI2RlZmluZSBDT05GSUdfU1lTX0RFVklDRV9OVUxMREVWCTEJLyogaW5jbHVkZSBudWxsZGV2IGRldmljZQkqLwoKI2lmIDEJLyogZmVlbCBmcmVlIHRvIGRpc2FibGUgZm9yIGRldmVsb3BtZW50ICovCiNkZWZpbmUgQ09ORklHX0FVVE9CT09UX0tFWUVECQkvKiBFbmFibGUgcGFzc3dvcmQgcHJvdGVjdGlvbgkqLwojZGVmaW5lIENPTkZJR19BVVRPQk9PVF9QUk9NUFQJCVwKCSJcblNDMyAtIGJvb3RpbmcuLi4gc3RvcCB3aXRoIEVOVEVSXG4iCiNkZWZpbmUgQ09ORklHX0FVVE9CT09UX0RFTEFZX1NUUgkiXHIiCS8qIDFzdCAicGFzc3dvcmQiCSovCiNkZWZpbmUgQ09ORklHX0FVVE9CT09UX0RFTEFZX1NUUjIJIlxuIgkvKiAxc3QgInBhc3N3b3JkIgkqLwojZW5kaWYKCi8qCiAqIGRlZmluZSBDT05GSUdfQk9PVENPTU1BTkQgdG8gdGhlIGF1dG9ib290IGNvbW1hbmRzLiBUaGV5IHdpbGwgcnVubmluZyBhZnRlcgogKiB0aGUgQ09ORklHX0JPT1RERUxBWSBkZWxheSB0byBib290IHlvdXIgbWFjaGluZQogKi8KI2RlZmluZSBDT05GSUdfQk9PVENPTU1BTkQJImJvb3RwO2RjYWNoZSBvbjtib290bSIKCi8qCiAqIGRlZmluZSBDT05GSUdfQk9PVEFSR1MgdG8gdGhlIGRlZmF1bHQga2VybmVsIHBhcmFtZXRlcnMuIFRoZXkgd2lsbCB1c2VkIGlmIHlvdSBkb24ndAogKiBzZXQgZGlmZmVyZW50IHZhbHVlcyBhdCB0aGUgdS1ib290IHByb21wdAogKi8KI2lmZGVmIFVTRV9WR0FfR1JBUEhJQ1MKICNkZWZpbmUgQ09ORklHX0JPT1RBUkdTCSJyb290PS9kZXYvbmZzIHJ3IGlwPWJvb3RwIG5mc3Jvb3Q9L3RmdHBib290L3NvbGlkY2FyZDNyZSIKI2Vsc2UKICNkZWZpbmUgQ09ORklHX0JPT1RBUkdTCSJjb25zb2xlPXR0eVMwLDExNTIwMCByb290PS9kZXYvbmZzIHJ3IGlwPWJvb3RwIgojZW5kaWYKLyoKICogSXMgdGhlIFVTQiBob3N0IGNvbnRyb2xsZXIgYXNzZW1ibGVkPyBJZiB5ZXMgZGVmaW5lIENPTkZJR19JU1AxMTYxX1BSRVNFTlQKICogVGhpcyByZXNlcnZlcyBtZW1vcnkgYmFuayAjNCBmb3IgdGhpcyBwdXJwb3NlCiAqLwojdW5kZWYgQ09ORklHX0lTUDExNjFfUFJFU0VOVAoKI3VuZGVmIENPTkZJR19MT0FEU19FQ0hPICAgLyogbm8gZWNobyBvbiBmb3Igc2VyaWFsIGRvd25sb2FkCSovCiNkZWZpbmUgQ09ORklHX1NZU19MT0FEU19CQVVEX0NIQU5HRQkxCS8qIGFsbG93IGJhdWRyYXRlIGNoYW5nZQkqLwoKI2RlZmluZSBDT05GSUdfTkVUX01VTFRJCi8qICNkZWZpbmUgQ09ORklHX0VFUFJPMTAwX1NST01fV1JJVEUgKi8KLyogI2RlZmluZSBDT05GSUdfU0hPV19NQUMgKi8KI2RlZmluZSBDT05GSUdfRUVQUk8xMDAKCiNkZWZpbmUgQ09ORklHX1BQQzR4eF9FTUFDCiNkZWZpbmUgQ09ORklHX01JSSAxCQkJLyogYWRkIDQwNUdQIE1JSSBQSFkgbWFuYWdlbWVudAkJKi8KI2RlZmluZSBDT05GSUdfUEhZX0FERFIgMQkvKiB0aGUgY29ubmVjdGVkIFBoeSBkZWZhdWx0cyB0byBhZGRyZXNzIDEgKi8KCi8qCiAqIEJPT1RQIG9wdGlvbnMKICovCiNkZWZpbmUgQ09ORklHX0JPT1RQX0JPT1RGSUxFU0laRQojZGVmaW5lIENPTkZJR19CT09UUF9CT09UUEFUSAojZGVmaW5lIENPTkZJR19CT09UUF9HQVRFV0FZCiNkZWZpbmUgQ09ORklHX0JPT1RQX0hPU1ROQU1FCgoKLyoKICogQ29tbWFuZCBsaW5lIGNvbmZpZ3VyYXRpb24uCiAqLwojaW5jbHVkZSA8Y29uZmlnX2NtZF9kZWZhdWx0Lmg+CgoKI2RlZmluZSBDT05GSUdfQ01EX0NBQ0hFCiNkZWZpbmUgQ09ORklHX0NNRF9EQVRFCiNkZWZpbmUgQ09ORklHX0NNRF9ESENQCiNkZWZpbmUgQ09ORklHX0NNRF9FTEYKI2RlZmluZSBDT05GSUdfQ01EX0kyQwojZGVmaW5lIENPTkZJR19DTURfSURFCiNkZWZpbmUgQ09ORklHX0NNRF9JUlEKI2RlZmluZSBDT05GSUdfQ01EX0pGRlMyCiNkZWZpbmUgQ09ORklHX0NNRF9NSUkKI2RlZmluZSBDT05GSUdfQ01EX05BTkQKI2RlZmluZSBDT05GSUdfQ01EX05FVAojZGVmaW5lIENPTkZJR19DTURfUENJCiNkZWZpbmUgQ09ORklHX0NNRF9QSU5HCiNkZWZpbmUgQ09ORklHX0NNRF9TT1VSQ0UKCgojdW5kZWYgQ09ORklHX1dBVENIRE9HCQkJLyogd2F0Y2hkb2cgZGlzYWJsZWQJCSovCgovKgogKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCiAqLwojZGVmaW5lIENPTkZJR19TWVNfTE9OR0hFTFAJMQkJLyogdW5kZWYgdG8gc2F2ZSBtZW1vcnkJCSovCiNkZWZpbmUgQ09ORklHX1NZU19QUk9NUFQJIlNDMz4gIgkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0CSovCiNkZWZpbmUJQ09ORklHX1NZU19DQlNJWkUJMjU2CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLwoKI2RlZmluZSBDT05GSUdfU1lTX1BCU0laRSAoQ09ORklHX1NZU19DQlNJWkUrc2l6ZW9mKENPTkZJR19TWVNfUFJPTVBUKSsxNikgLyogUHJpbnQgQnVmZmVyIFNpemUgKi8KCiNkZWZpbmUgQ09ORklHX1NZU19NQVhBUkdTCTE2CQkvKiBtYXggbnVtYmVyIG9mIGNvbW1hbmQgYXJncwkqLwojZGVmaW5lIENPTkZJR19TWVNfQkFSR1NJWkUJQ09ORklHX1NZU19DQlNJWkUJLyogQm9vdCBBcmd1bWVudCBCdWZmZXIgU2l6ZQkqLwoKI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHgwNDAwMDAwCS8qIG1lbXRlc3Qgd29ya3Mgb24JKi8KI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfRU5ECQkweDBDMDAwMDAJLyogNCAuLi4gMTIgTUIgaW4gRFJBTQkqLwoKLyoKICogSWYgQ09ORklHX1NZU19FWFRfU0VSSUFMX0NMT0NLLCB0aGVuIHRoZSBVQVJUIGRpdmlzb3IgaXMgMS4KICogSWYgQ09ORklHX1NZU180MDVfVUFSVF9FUlJBVEFfNTksIHRoZW4gVUFSVCBkaXZpc29yIGlzIDMxLgogKiBPdGhlcndpc2UsIFVBUlQgZGl2aXNvciBpcyBkZXRlcm1pbmVkIGJ5IENQVSBDbG9jayBhbmQgQ09ORklHX1NZU19CQVNFX0JBVUQgdmFsdWUuCiAqIFRoZSBMaW51eCBCQVNFX0JBVUQgZGVmaW5lIHNob3VsZCBtYXRjaCB0aGlzIGNvbmZpZ3VyYXRpb24uCiAqICAgIGJhc2VCYXVkID0gY3B1Q2xvY2svKHVhcnREaXZpc29yKjE2KQogKiBJZiBDT05GSUdfU1lTXzQwNV9VQVJUX0VSUkFUQV81OSBhbmQgMjAwTUh6IENQVSBjbG9jaywKICogc2V0IExpbnV4IEJBU0VfQkFVRCB0byA0MDMyMDAuCiAqCiAqIENvbnNpZGVyIHRoZSBPUEIgY2xvY2shIElmIGl0IGdldCBsb3dlciB0aGUgQkFTRV9CQVVEIG11c3QgYmUgbG93ZXIgdG8KICogKHNlZSA0MDVHUCBkYXRhc2hlZXQgZm9yIGRlc2NyaXRwaW9uKQogKi8KI3VuZGVmCUNPTkZJR19TWVNfRVhUX1NFUklBTF9DTE9DSwkJLyogZXh0ZXJuYWwgc2VyaWFsIGNsb2NrICovCiN1bmRlZglDT05GSUdfU1lTXzQwNV9VQVJUX0VSUkFUQV81OQkJLyogNDA1R1AvQ1IgUmV2LiBEIHNpbGljb24gKi8KI2RlZmluZSBDT05GSUdfU1lTX0JBU0VfQkFVRAkJOTIxNjAwCS8qIGludGVybmFsIGNsb2NrICovCgovKiBUaGUgZm9sbG93aW5nIHRhYmxlIGluY2x1ZGVzIHRoZSBzdXBwb3J0ZWQgYmF1ZHJhdGVzICovCiNkZWZpbmUgQ09ORklHX1NZU19CQVVEUkFURV9UQUJMRSAgXAogICAgezMwMCwgNjAwLCAxMjAwLCAyNDAwLCA0ODAwLCA5NjAwLCAxOTIwMCwgMzg0MDAsIDU3NjAwLCAxMTUyMDAsIDIzMDQwMH0KCiNkZWZpbmUgQ09ORklHX1NZU19MT0FEX0FERFIJCTB4MTAwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLwojZGVmaW5lIENPTkZJR19TWVNfRVhUQkRJTkZPCQkxCS8qIFRvIHVzZSBleHRlbmRlZCBib2FyZF9pbnRvIChiZF90KSAqLwoKI2RlZmluZQlDT05GSUdfU1lTX0haCQkJMTAwMAkvKiBkZWNyZW1lbnRlciBmcmVxOiAxIG1zIHRpY2tzCSovCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIElJQyBzdHVmZgogKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwojZGVmaW5lICBDT05GSUdfSEFSRF9JMkMJCS8qIEkyQyB3aXRoIGhhcmR3YXJlIHN1cHBvcnQJKi8KI3VuZGVmCUNPTkZJR19TT0ZUX0kyQwkJCS8qIEkyQyBiaXQtYmFuZ2VkCQkqLwojZGVmaW5lIENPTkZJR19QUEM0WFhfSTJDCQkvKiB1c2UgUFBDNHh4IGRyaXZlcgkJKi8KCiNkZWZpbmUgSTJDX0lOSVQKI2RlZmluZSBJMkNfQUNUSVZFIDAKI2RlZmluZSBJMkNfVFJJU1RBVEUgMAoKI2RlZmluZSBDT05GSUdfU1lTX0kyQ19TUEVFRAkJMTAwMDAwCS8qIHVzZSB0aGUgc3RhbmRhcmQgMTAwa0h6IHNwZWVkICovCiNkZWZpbmUgQ09ORklHX1NZU19JMkNfU0xBVkUJCTB4N0YJCS8qIG1hc2sgdmFsaWQgYml0cyAqLwoKI2RlZmluZSBDT05GSUdfUlRDX0RTMTMzNwojZGVmaW5lIENPTkZJR19TWVNfSTJDX1JUQ19BRERSIDB4NjgKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogUENJIHN0dWZmCiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiNkZWZpbmUgUENJX0hPU1RfQURBUFRFUiAwCQkvKiBjb25maWd1cmUgYXIgcGNpIGFkYXB0ZXIJKi8KI2RlZmluZSBQQ0lfSE9TVF9GT1JDRQkxCQkvKiBjb25maWd1cmUgYXMgcGNpIGhvc3QJKi8KI2RlZmluZSBQQ0lfSE9TVF9BVVRPCTIJCS8qIGRldGVjdGVkIHZpYSBhcmJpdGVyIGVuYWJsZQkqLwoKI2RlZmluZSBDT05GSUdfUENJCQkJLyogaW5jbHVkZSBwY2kgc3VwcG9ydAkJKi8KI2RlZmluZSBDT05GSUdfUENJX0hPU1QJUENJX0hPU1RfRk9SQ0UJLyogc2VsZWN0IHBjaSBob3N0IGZ1bmN0aW9uCSovCiNkZWZpbmUgQ09ORklHX1BDSV9QTlAJCQkvKiBkbyBwY2kgcGx1Zy1hbmQtcGxheQkJKi8KCQkJCQkvKiByZXNvdXJjZSBjb25maWd1cmF0aW9uCSovCgovKiBJZiB5b3Ugd2FudCB0byBzZWUsIHdoYXRzIGNvbm5lY3RlZCB0byB5b3VyIFBDSSBidXMgKi8KLyogI2RlZmluZSBDT05GSUdfUENJX1NDQU5fU0hPVyAqLwoKI2RlZmluZSBDT05GSUdfU1lTX1BDSV9TVUJTWVNfVkVORE9SSUQgMHgwMDAwCS8qIFBDSSBWZW5kb3IgSUQ6IHRvLWRvISEhCSovCiNkZWZpbmUgQ09ORklHX1NZU19QQ0lfU1VCU1lTX0RFVklDRUlEIDB4MDAwMAkvKiBQQ0kgRGV2aWNlIElEOiB0by1kbyEhIQkqLwojZGVmaW5lIENPTkZJR19TWVNfUENJX1BUTTFMQQkweDAwMDAwMDAwCS8qIHBvaW50IHRvIHNkcmFtCQkqLwojZGVmaW5lIENPTkZJR19TWVNfUENJX1BUTTFNUwkweDgwMDAwMDAxCS8qIDJHQiwgZW5hYmxlIGhhcmQtd2lyZWQgdG8gMQkqLwojZGVmaW5lIENPTkZJR19TWVNfUENJX1BUTTFQQ0kgMHgwMDAwMDAwMAkvKiBIb3N0OiB1c2UgdGhpcyBwY2kgYWRkcmVzcwkqLwojZGVmaW5lIENPTkZJR19TWVNfUENJX1BUTTJMQQkweDAwMDAwMDAwCS8qIGRpc2FibGVkCQkJKi8KI2RlZmluZSBDT05GSUdfU1lTX1BDSV9QVE0yTVMJMHgwMDAwMDAwMAkvKiBkaXNhYmxlZAkJCSovCiNkZWZpbmUgQ09ORklHX1NZU19QQ0lfUFRNMlBDSSAweDA0MDAwMDAwCS8qIEhvc3Q6IHVzZSB0aGlzIHBjaSBhZGRyZXNzCSovCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIEV4dGVybmFsIHBlcmlwaGVyYWwgYmFzZSBhZGRyZXNzCiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiNpZiAhZGVmaW5lZChDT05GSUdfQ01EX0lERSkKCiN1bmRlZglDT05GSUdfSURFX0xFRAkJCS8qIG5vIGxlZCBmb3IgaWRlIHN1cHBvcnRlZAkqLwojdW5kZWYJQ09ORklHX0lERV9SRVNFVAkJLyogbm8gcmVzZXQgZm9yIGlkZSBzdXBwb3J0ZWQJKi8KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogSURFL0FUQSBzdHVmZgogKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwojZWxzZQojZGVmaW5lIENPTkZJR19TVEFSVF9JREUJMQkvKiBjaGVjaywgaWYgdXNlIElERSAqLwoKI3VuZGVmCUNPTkZJR19JREVfOHh4X0RJUkVDVAkJLyogbm8gcGNtY2lhIGludGVyZmFjZSByZXF1aXJlZCAqLwojdW5kZWYJQ09ORklHX0lERV9MRUQJCQkvKiBubyBsZWQgZm9yIGlkZSBzdXBwb3J0ZWQJKi8KI3VuZGVmCUNPTkZJR19JREVfUkVTRVQJCS8qIG5vIHJlc2V0IGZvciBpZGUgc3VwcG9ydGVkCSovCgojZGVmaW5lCUNPTkZJR19BVEFQSQojZGVmaW5lCUNPTkZJR19ET1NfUEFSVElUSU9OCiNkZWZpbmUJQ09ORklHX1NZU19JREVfTUFYREVWSUNFCShDT05GSUdfU1lTX0lERV9NQVhCVVMqMSkgLyogbWF4LiAxIGRyaXZlcyBwZXIgSURFIGJ1cyAqLwoKI2lmbmRlZiBJREVfVVNFU19JU0FfRU1VTEFUSU9OCgovKiBOZXcgYW5kIGZhc3RlciBhY2Nlc3MgKi8KI2RlZmluZQlDT05GSUdfU1lTX0FUQV9CQVNFX0FERFIJCTB4N0EwMDAwMDAJLyogc3RhcnQgb2YgSVNBIElPIGVtdWxhdGlvbiAqLwoKLyogSG93IG1hbnkgSURFIGJ1c3NlcyBhcmUgYXZhaWxhYmxlICovCiNkZWZpbmUJQ09ORklHX1NZU19JREVfTUFYQlVTCQkxCgovKiBXaGF0IElERSBwb3J0cyBhcmUgYXZhaWxhYmxlICovCiNkZWZpbmUJQ09ORklHX1NZU19BVEFfSURFMF9PRkZTRVQJMHgwMDAJCS8qIGZpcnN0IGlzIGF2YWlsYWJsZSAqLwojdW5kZWYJQ09ORklHX1NZU19BVEFfSURFMV9PRkZTRVQJCQkvKiBzZWNvbmQgbm90IGF2YWlsYWJsZSAqLwoKLyogYWNjZXNzIHRvIHRoZSBkYXRhIHBvcnQgaXMgY2FsY3VsYXRlZDoKICAgQ09ORklHX1NZU19BVEFfQkFTRV9BRERSICsgQ09ORklHX1NZU19BVEFfSURFMF9PRkZTRVQgKyBDT05GSUdfU1lTX0FUQV9EQVRBX09GRlNFVCArIDAgKi8KI2RlZmluZSBDT05GSUdfU1lTX0FUQV9EQVRBX09GRlNFVAkweDAwMDAJLyogT2Zmc2V0IGZvciBkYXRhIEkvTyAqLwoKLyogYWNjZXNzIHRvIHRoZSByZWdpc3RlcnMgaXMgY2FsY3VsYXRlZDoKICAgQ09ORklHX1NZU19BVEFfQkFTRV9BRERSICsgQ09ORklHX1NZU19BVEFfSURFMF9PRkZTRVQgKyBDT05GSUdfU1lTX0FUQV9SRUdfT0ZGU0VUICsgWzEuLjddICovCiNkZWZpbmUJQ09ORklHX1NZU19BVEFfUkVHX09GRlNFVAkweDAwMDAJLyogT2Zmc2V0IGZvciBub3JtYWwgcmVnaXN0ZXIgYWNjZXNzZXMJKi8KCi8qIGFjY2VzcyB0byB0aGUgYWx0ZXJuYXRlIHJlZ2lzdGVyIGlzIGNhbGN1bGF0ZWQ6CiAgIENPTkZJR19TWVNfQVRBX0JBU0VfQUREUiArIENPTkZJR19TWVNfQVRBX0lERTBfT0ZGU0VUICsgQ09ORklHX1NZU19BVEFfQUxUX09GRlNFVCArIDYgKi8KI2RlZmluZSBDT05GSUdfU1lTX0FUQV9BTFRfT0ZGU0VUCTB4MDA4CQkvKiBPZmZzZXQgZm9yIGFsdGVybmF0ZSByZWdpc3RlcnMJKi8KCiNlbHNlIC8qIElERV9VU0VTX0lTQV9FTVVMQVRJT04gKi8KCiNkZWZpbmUJQ09ORklHX1NZU19BVEFfQkFTRV9BRERSCQkweDc5MDAwMDAwCS8qIHN0YXJ0IG9mIElTQSBJTyBlbXVsYXRpb24gKi8KCi8qIEhvdyBtYW55IElERSBidXNzZXMgYXJlIGF2YWlsYWJsZSAqLwojZGVmaW5lCUNPTkZJR19TWVNfSURFX01BWEJVUwkJMQoKLyogV2hhdCBJREUgcG9ydHMgYXJlIGF2YWlsYWJsZSAqLwojZGVmaW5lCUNPTkZJR19TWVNfQVRBX0lERTBfT0ZGU0VUCTB4MDFGMAkvKiBmaXJzdCBpcyBhdmFpbGFibGUgKi8KI3VuZGVmCUNPTkZJR19TWVNfQVRBX0lERTFfT0ZGU0VUCQkJCS8qIHNlY29uZCBub3QgYXZhaWxhYmxlICovCgovKiBhY2Nlc3MgdG8gdGhlIGRhdGEgcG9ydCBpcyBjYWxjdWxhdGVkOgogICBDT05GSUdfU1lTX0FUQV9CQVNFX0FERFIgKyBDT05GSUdfU1lTX0FUQV9JREUwX09GRlNFVCArIENPTkZJR19TWVNfQVRBX0RBVEFfT0ZGU0VUICsgMCAqLwojZGVmaW5lIENPTkZJR19TWVNfQVRBX0RBVEFfT0ZGU0VUCTB4MDAwMAkvKiBPZmZzZXQgZm9yIGRhdGEgSS9PICovCgovKiBhY2Nlc3MgdG8gdGhlIHJlZ2lzdGVycyBpcyBjYWxjdWxhdGVkOgogICBDT05GSUdfU1lTX0FUQV9CQVNFX0FERFIgKyBDT05GSUdfU1lTX0FUQV9JREUwX09GRlNFVCArIENPTkZJR19TWVNfQVRBX1JFR19PRkZTRVQgKyBbMS4uN10gKi8KI2RlZmluZQlDT05GSUdfU1lTX0FUQV9SRUdfT0ZGU0VUCTB4MDAwMAkvKiBPZmZzZXQgZm9yIG5vcm1hbCByZWdpc3RlciBhY2Nlc3NlcwkqLwoKLyogYWNjZXNzIHRvIHRoZSBhbHRlcm5hdGUgcmVnaXN0ZXIgaXMgY2FsY3VsYXRlZDoKICAgQ09ORklHX1NZU19BVEFfQkFTRV9BRERSICsgQ09ORklHX1NZU19BVEFfSURFMF9PRkZTRVQgKyBDT05GSUdfU1lTX0FUQV9BTFRfT0ZGU0VUICsgNiAqLwojZGVmaW5lIENPTkZJR19TWVNfQVRBX0FMVF9PRkZTRVQJMHgwM0YwCQkvKiBPZmZzZXQgZm9yIGFsdGVybmF0ZSByZWdpc3RlcnMJKi8KCiNlbmRpZiAvKiBJREVfVVNFU19JU0FfRU1VTEFUSU9OICovCgojZW5kaWYKCi8qCiNkZWZpbmUJQ09ORklHX1NZU19LRVlfUkVHX0JBU0VfQUREUgkweEYwMTAwMDAwCiNkZWZpbmUJQ09ORklHX1NZU19JUl9SRUdfQkFTRV9BRERSCTB4RjAyMDAwMDAKI2RlZmluZQlDT05GSUdfU1lTX0ZQR0FfUkVHX0JBU0VfQUREUgkweEYwMzAwMDAwCiovCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIFN0YXJ0IGFkZHJlc3NlcyBmb3IgdGhlIGZpbmFsIG1lbW9yeSBjb25maWd1cmF0aW9uCiAqIChTZXQgdXAgYnkgdGhlIHN0YXJ0dXAgY29kZSkKICogUGxlYXNlIG5vdGUgdGhhdCBDT05GSUdfU1lTX1NEUkFNX0JBU0UgX211c3RfIHN0YXJ0IGF0IDAKICoKICogQ09ORklHX1NZU19GTEFTSF9CQVNFICAgLT4gc3RhcnQgYWRkcmVzcyBvZiBpbnRlcm5hbCBmbGFzaAogKiBDT05GSUdfU1lTX01PTklUT1JfQkFTRSAtPiBzdGFydCBvZiB1LWJvb3QKICovCiNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9CQVNFCQkweDAwMDAwMDAwCiNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQVNFCQkweEZGRTAwMDAwCgojZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCUNPTkZJR19TWVNfVEVYVF9CQVNFCS8qIFN0YXJ0IG9mIFUtQm9vdAkqLwojZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSgweEZGRkZGRkZGIC0gQ09ORklHX1NZU19NT05JVE9SX0JBU0UgKyAxKQojZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDEyOCAqIDEwMjQpCS8qIFJlc2VydmUgMTI4IEtpQiBmb3IgbWFsbG9jKCkJKi8KCi8qCiAqIEZvciBib290aW5nIExpbnV4LCB0aGUgYm9hcmQgaW5mbyBhbmQgY29tbWFuZCBsaW5lIGRhdGEKICogaGF2ZSB0byBiZSBpbiB0aGUgZmlyc3QgOCBNaUIgb2YgbWVtb3J5LCBzaW5jZSB0aGlzIGlzCiAqIHRoZSBtYXhpbXVtIG1hcHBlZCBieSB0aGUgTGludXgga2VybmVsIGR1cmluZyBpbml0aWFsaXphdGlvbi4KICovCiNkZWZpbmUgQ09ORklHX1NZU19CT09UTUFQU1oJCSg4IDw8IDIwKQkvKiBJbml0aWFsIE1lbW9yeSBtYXAgZm9yIExpbnV4ICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogRkxBU0ggb3JnYW5pemF0aW9uICMjIEZJWE1FOiBsb29rdXAgaW4gZGF0YXNoZWV0CiAqLwojZGVmaW5lIENPTkZJR19TWVNfTUFYX0ZMQVNIX0JBTktTCTIJLyogbWF4IG51bWJlciBvZiBtZW1vcnkgYmFua3MJCSovCiNkZWZpbmUgQ09ORklHX1NZU19NQVhfRkxBU0hfU0VDVAkyNTYJLyogbWF4IG51bWJlciBvZiBzZWN0b3JzIG9uIG9uZSBjaGlwCSovCgojZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfQ0ZJCQkJLyogZmxhc2ggaXMgQ0ZJIGNvbXBhdC4JKi8KI2RlZmluZSBDT05GSUdfRkxBU0hfQ0ZJX0RSSVZFUgkJLyogVXNlIGNvbW1vbiBDRkkgZHJpdmVyKi8KI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0VNUFRZX0lORk8JCS8qIHByaW50ICdFJyBmb3IgZW1wdHkgc2VjdG9yCSovCiNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9RVUlFVF9URVNUCTEJLyogZG9uJ3Qgd2FybiB1cG9uIHVua25vd24gZmxhc2gqLwojZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfRVJBU0VfVE9VVAkxMjAwMDAJLyogVGltZW91dCBmb3IgRmxhc2ggRXJhc2UgKGluIG1zKQkqLwojZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfV1JJVEVfVE9VVAk1MDAJLyogVGltZW91dCBmb3IgRmxhc2ggV3JpdGUgKGluIG1zKQkqLwojZGVmaW5lIENPTkZJR19TWVNfV1JJVEVfU1dBUFBFRF9EQVRBCQkvKiBzd2FwIERhdGFieXRlcyBiZXR3ZWVuIHJlYWRpbmcvd3JpdGluZyAqLwoKI2RlZmluZSBDT05GSUdfRU5WX0lTX0lOX0ZMQVNICTEKI2lmZGVmIENPTkZJR19FTlZfSVNfSU5fRkxBU0gKI2RlZmluZSBDT05GSUdfRU5WX09GRlNFVAkJMHgwMDAwMDAwMCAgLyogT2Zmc2V0IG9mIEVudmlyb25tZW50IFNlY3RvciBpbiBib3R0b20gdHlwZSAqLwojZGVmaW5lIENPTkZJR19FTlZfU0laRQkJMHg0MDAwCSAgICAvKiBUb3RhbCBTaXplIG9mIEVudmlyb25tZW50IFNlY3RvcgkqLwojZGVmaW5lIENPTkZJR19FTlZfU0VDVF9TSVpFCTB4NDAwMAkgICAgLyogc2VlIFJFQURNRSAtIGVudiBzZWN0b3IgdG90YWwgc2l6ZQkqLwoKLyogQWRkcmVzcyBhbmQgc2l6ZSBvZiBSZWR1bmRhbnQgRW52aXJvbm1lbnQgU2VjdG9yCSovCiNkZWZpbmUgQ09ORklHX0VOVl9PRkZTRVRfUkVEVU5ECShDT05GSUdfRU5WX09GRlNFVCtDT05GSUdfRU5WX1NJWkUpCiNkZWZpbmUgQ09ORklHX0VOVl9TSVpFX1JFRFVORAkoQ09ORklHX0VOVl9TSVpFKQoKI2VuZGlmCi8qIGxldCB1cyBjaGFuZ2luZyBhbnl0aGluZyBpbiBvdXIgZW52aXJvbm1lbnQgKi8KI2RlZmluZSBDT05GSUdfRU5WX09WRVJXUklURQoKLyoKICogTkFORC1GTEFTSCBzdHVmZgogKi8KI2RlZmluZSBDT05GSUdfU1lTX01BWF9OQU5EX0RFVklDRQkxCiNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0UJCTB4NzdEMDAwMDAKCiNkZWZpbmUgQ09ORklHX0pGRlMyX05BTkQgMQkJCS8qIGpmZnMyIG9uIG5hbmQgc3VwcG9ydCAqLwoKLyogTm8gY29tbWFuZCBsaW5lLCBvbmUgc3RhdGljIHBhcnRpdGlvbiAqLwojdW5kZWYJQ09ORklHX0NNRF9NVERQQVJUUwojZGVmaW5lIENPTkZJR19KRkZTMl9ERVYJCSJuYW5kMCIKI2RlZmluZSBDT05GSUdfSkZGUzJfUEFSVF9TSVpFCQkweDAxMDAwMDAwCiNkZWZpbmUgQ09ORklHX0pGRlMyX1BBUlRfT0ZGU0VUCTB4MDAwMDAwMDAKCi8qCiAqIEluaXQgTWVtb3J5IENvbnRyb2xsZXI6CiAqCiAqLwoKI2RlZmluZSBGTEFTSF9CQVNFMF9QUkVMSU0JQ09ORklHX1NZU19GTEFTSF9CQVNFCiNkZWZpbmUgRkxBU0hfQkFTRTFfUFJFTElNCTAKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogU29tZSBpbmZvcm1hdGlvbnMgYWJvdXQgdGhlIGludGVybmFsIFNSQU0gKE9DTT1PbiBDaGlwIE1lbW9yeSkKICoKICogQ09ORklHX1NZU19PQ01fREFUQV9BRERSIC0+IGxvY2F0aW9uCiAqIENPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAtPiBzaXplCiovCgojZGVmaW5lIENPTkZJR19TWVNfVEVNUF9TVEFDS19PQ00JMQojZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfQUREUgkweEY4MDAwMDAwCiNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCTB4MTAwMAoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKToKICogLSB3ZSBhcmUgdXNpbmcgdGhlIGludGVybmFsIDRrIFNSQU0sIHNvIHdlIGRvbid0IG5lZWQgZGF0YSBjYWNoZSBtYXBwaW5nCiAqIC0gaW50ZXJuYWwgU1JBTSAoT0NNPU9uIENoaXAgTWVtb3J5KSBpcyBwbGFjZWQgdG8gQ09ORklHX1NZU19PQ01fREFUQV9BRERSCiAqIC0gU3RhY2twb2ludGVyIHdpbGwgYmUgbG9jYXRlZCB0bwogKiAgIChDT05GSUdfU1lTX0lOSVRfUkFNX0FERFImMHhGRkZGMDAwMCkgfCAoQ09ORklHX1NZU19JTklUX1NQX09GRlNFVCYweDAwMDBGRkZGKQogKiAgIGluIGFyY2gvcG93ZXJwYy9jcHUvcHBjNHh4L3N0YXJ0LlMKICovCgojdW5kZWYgQ09ORklHX1NZU19JTklUX0RDQUNIRV9DUwovKiBXaGVyZSB0aGUgaW50ZXJuYWwgU1JBTSBzdGFydHMgKi8KI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSCi8qIFdoZXJlIHRoZSBpbnRlcm5hbCBTUkFNIGVuZHMgKG9ubHkgb2Zmc2V0KSAqLwojZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDBGMDAKCi8qCgogQ09ORklHX1NZU19JTklUX1JBTV9BRERSIC0tLS0tLT4gLS0tLS0tLS0tLS0tIGxvd2VyIGFkZHJlc3MKCQkJICAgfAkgICAgICB8CgkJCSAgIHwgIF4gICAgICAgfAoJCQkgICB8ICB8ICAgICAgIHwKCQkJICAgfCAgfCBTdGFjayB8CiBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAtLS0tPiAtLS0tLS0tLS0tLS0KCQkJICAgfAkgICAgICB8CgkJCSAgIHwgNjQgQnl0ZXMgfAoJCQkgICB8CSAgICAgIHwKIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAgLS0tLS0tPiAtLS0tLS0tLS0tLS0gaGlnaGVyIGFkZHJlc3MKICAob2Zmc2V0IG9ubHkpCgoqLwojZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQovKiBJbml0aWFsIHZhbHVlIG9mIHRoZSBzdGFjayBwb2ludGVybiBpbiBpbnRlcm5hbCBTUkFNICovCiNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVCAgICBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAoKLyogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgKi8KLyogVGhlc2UgZGVmaW5lcyB3aWxsIGJlIHVzZWQgaW4gYXJjaC9wb3dlcnBjL2NwdS9wcGM0eHgvY3B1X2luaXQuYyB0byBzZXR1cCBleHRlcm5hbCBjaGlwIHNlbGVjdHMgICovCi8qIFRoZXkgYXJlIGN1cnJlbnRseSB1bmRlZmluZWQgY2F1c2UgdGhleSBhcmUgaW5pdGlhaXplZCBpbiBib2FyZC9zb2xpZGNhcmQzL2luaXQuUyAgICovCgovKiBUaGlzIGNoaXAgc2VsZWN0IGFjY2Vzc2VzIHRoZSBib290IGRldmljZSAqLwovKiBJdCBkZXBlbmRzIG9uIGJvb3Qgc2VsZWN0IHN3aXRjaCBpZiB0aGlzIGRldmljZSBpcyAxNiBvciA4IGJpdCAqLwoKI3VuZGVmIENPTkZJR19TWVNfRUJDX1BCMEFQCiN1bmRlZiBDT05GSUdfU1lTX0VCQ19QQjBDUgoKI3VuZGVmIENPTkZJR19TWVNfRUJDX1BCMUFQCiN1bmRlZiBDT05GSUdfU1lTX0VCQ19QQjFDUgoKI3VuZGVmIENPTkZJR19TWVNfRUJDX1BCMkFQCiN1bmRlZiBDT05GSUdfU1lTX0VCQ19QQjJDUgoKI3VuZGVmIENPTkZJR19TWVNfRUJDX1BCM0FQCiN1bmRlZiBDT05GSUdfU1lTX0VCQ19QQjNDUgoKI3VuZGVmIENPTkZJR19TWVNfRUJDX1BCNEFQCiN1bmRlZiBDT05GSUdfU1lTX0VCQ19QQjRDUgoKI3VuZGVmIENPTkZJR19TWVNfRUJDX1BCNUFQCiN1bmRlZiBDT05GSUdfU1lTX0VCQ19QQjVDUgoKI3VuZGVmIENPTkZJR19TWVNfRUJDX1BCNkFQCiN1bmRlZiBDT05GSUdfU1lTX0VCQ19QQjZDUgoKI3VuZGVmIENPTkZJR19TWVNfRUJDX1BCN0FQCiN1bmRlZiBDT05GSUdfU1lTX0VCQ19QQjdDUgoKI2RlZmluZSBDT05GSUdfU1lTX0VCQ19DRkcgICAgMHhiODRlZjAwMAoKI3VuZGVmIENPTkZJR19TRFJBTV9CQU5LMAkvKiB1c2UgcHJpdmF0ZSBTRFJBTSBpbml0aWFsaXphdGlvbiAqLwojdW5kZWYgQ09ORklHX1NQRF9FRVBST00KCi8qCiAqIERlZmluZSB0aGlzIHRvIGdldCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHN5c3RlbSBjb25maWd1cmF0aW9uCiAqLwovKiAjZGVmaW5lIFNDM19ERUJVR09VVCAqLwojdW5kZWYgU0MzX0RFQlVHT1VUCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogRXh0ZXJuYWwgcGVyaXBoZXJhbCBiYXNlIGFkZHJlc3MKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2RlZmluZSBDT05GSUdfU1lTX0lTQV9NRU1fQkFTRV9BRERSRVNTIDB4NzgwMDAwMDAKLyoKIERpZSBHcmFmaWstVHJlaWJlciBncmVpZmVuIPxiZXIgZGllIEFkcmVzc2UgaW4gZGllc2VtIE1hY3JvIGF1ZiBkZW4gQ2hpcCB6dS4KIERhcyBmdW5rdGlvbmllcnQgYmVpIGRlcmVuIEthcnRlbiwgd2VpbCBzaWUgZWluZSBQQ0ktQnJpZGdlIGJlbnV0emVuLCBkaWUKIGRhcyBnbGVpY2hlIE1hcHBpbmcgZHVyY2hm/GhyZW4ga2Fubiwgd2llIGRlciBTQzUyMCAoYWxzbyBBdWZ0ZWlsZW4gdm9uIElPLVp1Z3JpZmZlbgogYXVmIElTQS0gdW5kIFBDSS1aeWtsZW4pCiAqLwojZGVmaW5lIENPTkZJR19TWVNfSVNBX0lPX0JBU0VfQUREUkVTUyAgMHhFODAwMDAwMAovKiNkZWZpbmUgQ09ORklHX1NZU19JU0FfSU9fQkFTRV9BRERSRVNTICAweDc5MDAwMDAwICovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIFZpZGVvIHN1cHBvcnQKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiNpZmRlZiBVU0VfVkdBX0dSQVBISUNTCiNkZWZpbmUgQ09ORklHX1ZJREVPCQkvKiBUbyBlbmFibGUgdmlkZW8gY29udHJvbGxlciBzdXBwb3J0ICovCiNkZWZpbmUgQ09ORklHX1ZJREVPX0NUNjkwMDAKI2RlZmluZSBDT05GSUdfQ0ZCX0NPTlNPTEUKLyogI2RlZmluZSBDT05GSUdfVklERU9fTE9HTyAqLwojZGVmaW5lIENPTkZJR19WR0FfQVNfU0lOR0xFX0RFVklDRQojZGVmaW5lIENPTkZJR19WSURFT19TV19DVVJTT1IKLyogI2RlZmluZSBDT05GSUdfVklERU9fSFdfQ1VSU09SICovCiNkZWZpbmUgQ09ORklHX1ZJREVPX09OQk9BUkQJLyogVmlkZW8gY29udHJvbGxlciBpcyBvbi1ib2FyZCAqLwoKI2RlZmluZSBWSURFT19IV19SRUNURklMTAojZGVmaW5lIFZJREVPX0hXX0JJVEJMVAoKI2VuZGlmCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIElkZW50CiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNkZWZpbmUgQ09ORklHX1NDM19WRVJTSU9OICJyMS40IgoKI2RlZmluZSBQT1NUX09VVCh4KSAoKigodm9sYXRpbGUgdW5zaWduZWQgY2hhciopKDB4NzkwMDAwODApKT14KQoKI2VuZGlmCS8qIF9fQ09ORklHX0ggKi8K