LyoKICogKEMpIENvcHlyaWdodCAyMDAyCiAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZS4KICoKICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICogcHJvamVjdC4KICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwogKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgogKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKICogTUEgMDIxMTEtMTMwNyBVU0EKICovCgovKgogKiBib2FyZC9jb25maWcuaCAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYm9hcmQgc3BlY2lmaWMKICovCgojaWZuZGVmIF9fQ09ORklHX0gKI2RlZmluZSBfX0NPTkZJR19ICgojZGVmaW5lIENPTkZJR19TS0lQX1JFTE9DQVRFX1VCT09UCgovKgogKiBIaWdoIExldmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucwogKiAoZWFzeSB0byBjaGFuZ2UpCiAqLwoKI2RlZmluZSBDT05GSUdfWDg2CQkxCS8qIFRoaXMgaXMgYSBYODYgQ1BVCQkqLwojZGVmaW5lIENPTkZJR19TWVNfU0M1MjAJMQkvKiBJbmNsdWRlIHN1cHBvcnQgZm9yIEFNRCBTQzUyMCAqLwoKI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX1BSRUNIQVJHRV9ERUxBWSA2ICAgICAvKiA2VCAqLwojZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fUkVGUkVTSF9SQVRFICAgIDc4ICAgIC8qIDcuOHVTIChjaG9pY2VzIGFyZSA3LjgsIDE1LjYsIDMxLjIgb3IgNjIuNXVTKSAqLwojZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fUkFTX0NBU19ERUxBWSAgIDMgICAgIC8qIDNUICovCgovKiBkZWZpbmUgYXQgbW9zdCBvbmUgb2YgdGhlc2UgKi8KI3VuZGVmIENPTkZJR19TWVNfU0RSQU1fQ0FTX0xBVEVOQ1lfMlQKI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX0NBU19MQVRFTkNZXzNUCgojZGVmaW5lIENPTkZJR19TWVNfU0M1MjBfSElHSF9TUEVFRCAgICAwICAgICAgIC8qIDEwMCBvciAxMzNNSHogKi8KI3VuZGVmICBDT05GSUdfU1lTX1NDNTIwX1JFU0VUICAgICAgICAgICAgICAgICAvKiB1c2UgU0M1MjAgTU1DUidzIHRvIHJlc2V0IGNwdSAqLwojdW5kZWYgIENPTkZJR19TWVNfU0M1MjBfVElNRVIgICAgICAgICAgICAgICAgIC8qIHVzZSBTQzUyMCBzd3RpbWVycyAqLwojZGVmaW5lIENPTkZJR19TWVNfR0VORVJJQ19USU1FUiAgICAgICAxICAgICAgIC8qIHVzZSB0aGUgaTgyNTQgUElUIHRpbWVycyAqLwojdW5kZWYgIENPTkZJR19TWVNfVFNDX1RJTUVSICAgICAgICAgICAgICAgICAgIC8qIHVzZSB0aGUgUGVudGl1bSBUU0MgdGltZXJzICovCiNkZWZpbmUgQ09ORklHX1NZU19QQ0FUX0lOVEVSUlVQVFMKI2RlZmluZSBDT05GSUdfU1lTX05VTV9JUlFTCQkxNgoKI2RlZmluZSBDT05GSUdfU1lTX1NUQUNLX1NJWkUgICAgICAgICAgMHg4MDAwICAvKiBTaXplIG9mIGJvb3Rsb2FkZXIgc3RhY2sgKi8KCiNkZWZpbmUgQ09ORklHX1NIT1dfQk9PVF9QUk9HUkVTUyAxCiNkZWZpbmUgQ09ORklHX0xBU1RfU1RBR0VfSU5JVCAgICAxCgovKgogKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICovCiNkZWZpbmUgQ09ORklHX01BTExPQ19TSVpFCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKCgojZGVmaW5lIENPTkZJR19CQVVEUkFURQkJOTYwMAoKCi8qCiAqIEJPT1RQIG9wdGlvbnMKICovCiNkZWZpbmUgQ09ORklHX0JPT1RQX0JPT1RGSUxFU0laRQojZGVmaW5lIENPTkZJR19CT09UUF9CT09UUEFUSAojZGVmaW5lIENPTkZJR19CT09UUF9HQVRFV0FZCiNkZWZpbmUgQ09ORklHX0JPT1RQX0hPU1ROQU1FCgoKLyoKICogQ29tbWFuZCBsaW5lIGNvbmZpZ3VyYXRpb24uCiAqLwojaW5jbHVkZSA8Y29uZmlnX2NtZF9kZWZhdWx0Lmg+CgojZGVmaW5lIENPTkZJR19DTURfUENJCiNkZWZpbmUgQ09ORklHX0NNRF9KRkZTMgojZGVmaW5lIENPTkZJR19DTURfSURFCiNkZWZpbmUgQ09ORklHX0NNRF9ORVQKI2RlZmluZSBDT05GSUdfQ01EX1BDTUNJQQojZGVmaW5lIENPTkZJR19DTURfRUVQUk9NCgoKI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCTE1CiNkZWZpbmUgQ09ORklHX0JPT1RBUkdTCQkicm9vdD0vZGV2L210ZGJsb2NrMSBjb25zb2xlPXR0eVMwLDk2MDAgIiBcCgkJCQkJIm10ZHBhcnRzPXBoeXM6NzkzNmsocm9vdCksMjU2ayh1Ym9vdCkgIgojZGVmaW5lIENPTkZJR19CT09UQ09NTUFORAkic2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9uZnMgaXA9YXV0b2NvbmYgIiBcCgkJCQkJImNvbnNvbGU9dHR5UzAsOTYwMCAiIFwKCQkJCQkibXRkcGFydHM9cGh5czo3ODA4ayhyb290KSwxMjhrKGVudiksMjU2ayh1Ym9vdCk7IiBcCgkJCQkJImJvb3RwO2Jvb3RtIgoKI2lmIGRlZmluZWQoQ09ORklHX0NNRF9LR0RCKQojZGVmaW5lIENPTkZJR19LR0RCX0JBVURSQVRFCTExNTIwMAkJLyogc3BlZWQgdG8gcnVuIGtnZGIgc2VyaWFsIHBvcnQgKi8KI2RlZmluZSBDT05GSUdfS0dEQl9TRVJfSU5ERVgJMgkJLyogd2hpY2ggc2VyaWFsIHBvcnQgdG8gdXNlICovCiNlbmRpZgoKCi8qCiAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKICovCiNkZWZpbmUJQ09ORklHX1NZU19MT05HSEVMUAkJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkJKi8KI2RlZmluZQlDT05GSUdfU1lTX1BST01QVAkJImJvb3QgPiAiCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQJKi8KI2RlZmluZQlDT05GSUdfU1lTX0NCU0laRQkJMjU2CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLwojZGVmaW5lCUNPTkZJR19TWVNfUEJTSVpFIChDT05GSUdfU1lTX0NCU0laRStzaXplb2YoQ09ORklHX1NZU19QUk9NUFQpKzE2KSAvKiBQcmludCBCdWZmZXIgU2l6ZSAqLwojZGVmaW5lCUNPTkZJR19TWVNfTUFYQVJHUwkJMTYJCS8qIG1heCBudW1iZXIgb2YgY29tbWFuZCBhcmdzCSovCiNkZWZpbmUgQ09ORklHX1NZU19CQVJHU0laRQkJQ09ORklHX1NZU19DQlNJWkUJLyogQm9vdCBBcmd1bWVudCBCdWZmZXIgU2l6ZQkqLwoKI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHgwMDEwMDAwMAkvKiBtZW10ZXN0IHdvcmtzIG9uCSovCiNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX0VORAkJMHgwMTAwMDAwMAkvKiAxIC4uLiAxNiBNQiBpbiBEUkFNCSovCgojZGVmaW5lCUNPTkZJR19TWVNfTE9BRF9BRERSCQkweDEwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcwkqLwoKI2RlZmluZQlDT05GSUdfU1lTX0haCQkJMTAyNAkJLyogaW5jcmVtZW50ZXIgZnJlcTogMWtIeiAqLwoKCQkJCQkJLyogdmFsaWQgYmF1ZHJhdGVzICovCiNkZWZpbmUgQ09ORklHX1NZU19CQVVEUkFURV9UQUJMRQl7IDk2MDAsIDE5MjAwLCAzODQwMCwgNTc2MDAsIDExNTIwMCB9CgoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBQaHlzaWNhbCBNZW1vcnkgTWFwCiAqLwojZGVmaW5lIENPTkZJR19OUl9EUkFNX0JBTktTCTQJICAgLyogd2UgaGF2ZSA0IGJhbmtzIG9mIERSQU0gKi8KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogRkxBU0ggYW5kIGVudmlyb25tZW50IG9yZ2FuaXphdGlvbgogKi8KCgojZGVmaW5lIENPTkZJR19TWVNfTUFYX0ZMQVNIX0JBTktTCTEJLyogbWF4IG51bWJlciBvZiBtZW1vcnkgYmFua3MJCSovCiNkZWZpbmUgQ09ORklHX1NZU19NQVhfRkxBU0hfU0VDVAk1MTIJLyogbWF4IG51bWJlciBvZiBzZWN0b3JzIG9uIG9uZSBjaGlwCSovCgovKiB0aW1lb3V0IHZhbHVlcyBhcmUgaW4gdGlja3MgKi8KI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0VSQVNFX1RPVVQJKDIqQ09ORklHX1NZU19IWikgLyogVGltZW91dCBmb3IgRmxhc2ggRXJhc2UgKi8KI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX1dSSVRFX1RPVVQJKDIqQ09ORklHX1NZU19IWikgLyogVGltZW91dCBmb3IgRmxhc2ggV3JpdGUgKi8KCgojZGVmaW5lIENPTkZJR19TUElfRUVQUk9NICAgICAgIC8qIFNQSSBFRVBST01zIHN1Y2ggYXMgQVQyNTAxMCBvciBBVDI1NjQwICovCiNkZWZpbmUgQ09ORklHX01XX0VFUFJPTSAgICAgICAgLyogTWljcm9XaXJlIEVFUFJPTVMgc3VjaCBhcyBBVDkzTEM0NiAqLwojZGVmaW5lIENPTkZJR19EVFRfRFMxNzIyICAgICAgIC8qIERhbGxhcyBEUzE3MjIgU1BJIFRlbXBlcmF0dXJlIHByb2JlICovCgoKLyogYWxsb3cgdG8gb3ZlcndyaXRlIHNlcmlhbCBhbmQgZXRoYWRkciAqLwojZGVmaW5lIENPTkZJR19FTlZfT1ZFUldSSVRFCgoKI2lmIDAKLyogRW52aXJvbm1lbnQgaW4gZmxhc2ggKi8KI2RlZmluZSBDT05GSUdfRU5WX0lTX0lOX0ZMQVNIICAgICAxCiMgZGVmaW5lIENPTkZJR19FTlZfQUREUgkJKDB4Mzg3YTAwMDApCS8qIEFkZHIgb2YgRW52aXJvbm1lbnQgU2VjdG9yCSovCiMgZGVmaW5lIENPTkZJR19FTlZfU0laRQkJMHgyMDAwMAkvKiBUb3RhbCBTaXplIG9mIEVudmlyb25tZW50IFNlY3RvciAob3IgMHgxMDAwMCkgKi8KIyBkZWZpbmUgQ09ORklHX0VOVl9PRkZTRVQgICAgICAgICAwCgojZWxzZQovKiBFbnZpcm9ubWVudCBpbiBFRVBST00gKi8KCiMgZGVmaW5lIENPTkZJR19FTlZfSVNfSU5fRUVQUk9NICAgMQojIGRlZmluZSBDT05GSUdfU1BJCiMgZGVmaW5lIENPTkZJR19TUElfWCAxCiMgZGVmaW5lIENPTkZJR19FTlZfU0laRQkJMHgyMDAwCS8qIFRvdGFsIFNpemUgb2YgRW52aXJvbm1lbnQgRUVQUk9NCSovCiMgZGVmaW5lIENPTkZJR19FTlZfT0ZGU0VUICAgICAgICAgMHgxYzAwCgojZW5kaWYKCi8qCiAqIEpGRlMyIHBhcnRpdGlvbnMKICoKICovCi8qIE5vIGNvbW1hbmQgbGluZSwgb25lIHN0YXRpYyBwYXJ0aXRpb24sIHdob2xlIGRldmljZSAqLwojdW5kZWYgQ09ORklHX0NNRF9NVERQQVJUUwojZGVmaW5lIENPTkZJR19KRkZTMl9ERVYJCSJub3IwIgojZGVmaW5lIENPTkZJR19KRkZTMl9QQVJUX1NJWkUJCTB4RkZGRkZGRkYKI2RlZmluZSBDT05GSUdfSkZGUzJfUEFSVF9PRkZTRVQJMHgwMDAwMDAwMAoKLyogbXRkcGFydHMgY29tbWFuZCBsaW5lIHN1cHBvcnQgKi8KLyogTm90ZTogZmFrZSBtdGRfaWQgdXNlZCwgbm8gbGludXggbXRkIG1hcCBmaWxlICovCi8qCiNkZWZpbmUgQ09ORklHX0NNRF9NVERQQVJUUwojZGVmaW5lIE1URElEU19ERUZBVUxUCQkibm9yMD1zYzUyMF9zcHVuay0wIgojZGVmaW5lIE1URFBBUlRTX0RFRkFVTFQJIm10ZHBhcnRzPXNjNTIwX3NwdW5rLTA6LShqZmZzMikiCiovCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIERldmljZSBkcml2ZXJzCiAqLwojZGVmaW5lIENPTkZJR19ORVRfTVVMVEkgICAgICAgIC8qIE11bHRpIGV0aGVybmV0IGNhcmRzIHN1cHBvcnQgKi8KI2RlZmluZSBDT05GSUdfRUVQUk8xMDAKI2RlZmluZSBDT05GSUdfU1lTX1JYX0VUSF9CVUZGRVIJOCAgICAgICAgICAgICAgIC8qIHVzZSA4IHJ4IGJ1ZmZlciBvbiBlZXBybzEwMCAgKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogSURFL0FUQSBzdHVmZgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojZGVmaW5lIENPTkZJR19TWVNfSURFX01BWEJVUwkJMiAgIC8qIG1heC4gMiBJREUgYnVzc2VzCSovCiNkZWZpbmUgQ09ORklHX1NZU19JREVfTUFYREVWSUNFCShDT05GSUdfU1lTX0lERV9NQVhCVVMqMikgLyogbWF4LiAyIGRyaXZlcyBwZXIgSURFIGJ1cyAqLwojZGVmaW5lIENPTkZJR19TWVNfQVRBX0JBU0VfQUREUiAgICAgICAwCiNkZWZpbmUgQ09ORklHX1NZU19BVEFfSURFMF9PRkZTRVQJMHgwMWYwCS8qIGlkZTAgb2Zmc2V0ICovCiNkZWZpbmUgQ09ORklHX1NZU19BVEFfSURFMV9PRkZTRVQJMHhlMDAwCS8qIGlkZTEgb2Zmc2V0ICovCiNkZWZpbmUgQ09ORklHX1NZU19BVEFfREFUQV9PRkZTRVQJMAkvKiBkYXRhIHJlZyBvZmZzZXQJKi8KI2RlZmluZSBDT05GSUdfU1lTX0FUQV9SRUdfT0ZGU0VUCTAJLyogcmVnIG9mZnNldCAqLwojZGVmaW5lIENPTkZJR19TWVNfQVRBX0FMVF9PRkZTRVQJMHgyMDAJLyogYWx0ZXJuYXRlIHJlZ2lzdGVyIG9mZnNldCAqLwoKI2RlZmluZSBDT05GSUdfU1lTX0ZJUlNUX1BDTUNJQV9CVVMgICAgMQoKI3VuZGVmCUNPTkZJR19JREVfTEVECQkJLyogbm8gbGVkIGZvciBpZGUgc3VwcG9ydGVkCSovCiN1bmRlZiAgQ09ORklHX0lERV9SRVNFVAkJLyogcmVzZXQgZm9yIGlkZSB1bnN1cHBvcnRlZC4uLgkqLwojdW5kZWYgIENPTkZJR19JREVfUkVTRVRfUk9VVElORQkvKiBubyBzcGVjaWFsIHJlc2V0IGZ1bmN0aW9uICovCgojZGVmaW5lIENPTkZJR19JREVfVElfQ0FSREJVUwojZGVmaW5lIENPTkZJR19TWVNfUENNQ0lBX0NJU19XSU4gICAgICAgICAgMHgyN2YwMDAwMAojZGVmaW5lIENPTkZJR19TWVNfUENNQ0lBX0NJU19XSU5fU0laRSAgICAgMHgwMDEwMDAwMAojZGVmaW5lIENPTkZJR19TWVNfUENNQ0lBX0lPX1dJTiAgICAgICAgICAgMHhlMDAwCiNkZWZpbmUgQ09ORklHX1NZU19QQ01DSUFfSU9fV0lOX1NJWkUgICAgICAxNgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBESVNLIFBhcnRpdGlvbiBzdXBwb3J0CiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNkZWZpbmUgQ09ORklHX0RPU19QQVJUSVRJT04KI2RlZmluZSBDT05GSUdfTUFDX1BBUlRJVElPTgojZGVmaW5lIENPTkZJR19JU09fUEFSVElUSU9OIC8qIEV4cGVyaW1lbnRhbCAqLwoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogUlRDCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2RlZmluZSBDT05GSUdfUlRDX01DMTQ2ODE4CiN1bmRlZiBDT05GSUdfV0FUQ0hET0cJCQkvKiB3YXRjaGRvZyBkaXNhYmxlZAkJKi8KCi8qCiAqIFBDSSBzdHVmZgogKi8KI2RlZmluZSBDT05GSUdfUENJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbmNsdWRlIHBjaSBzdXBwb3J0ICovCiNkZWZpbmUgQ09ORklHX1BDSV9QTlAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcGNpIHBsdWctYW5kLXBsYXkgKi8KI2RlZmluZSBDT05GSUdfUENJX1NDQU5fU0hPVwoKI2RlZmluZQlDT05GSUdfU1lTX0ZJUlNUX1BDSV9JUlEgICA5CiNkZWZpbmUJQ09ORklHX1NZU19TRUNPTkRfUENJX0lSUSAgMTAKI2RlZmluZQlDT05GSUdfU1lTX1RISVJEX1BDSV9JUlEgICAxMQojZGVmaW5lCUNPTkZJR19TWVNfRk9SVEhfUENJX0lSUSAgIDEyCgojZW5kaWYJLyogX19DT05GSUdfSCAqLwo=