Lyogdmk6c2V0IHRzPTggc3RzPTQgc3c9NDoKICoKICogVklNIC0gVmkgSU1wcm92ZWQJYnkgQnJhbSBNb29sZW5hYXIKICoKICogRG8gIjpoZWxwIHVnYW5kYSIgIGluIFZpbSB0byByZWFkIGNvcHlpbmcgYW5kIHVzYWdlIGNvbmRpdGlvbnMuCiAqIERvICI6aGVscCBjcmVkaXRzIiBpbiBWaW0gdG8gc2VlIGEgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkLgogKi8KCi8qCiAqIERlZmluaXRpb25zIG9mIHZhcmlvdXMgY29tbW9uIGNvbnRyb2wgY2hhcmFjdGVycy4KICogRm9yIEVCQ0RJQyB3ZSBoYXZlIHRvIHVzZSBkaWZmZXJlbnQgdmFsdWVzLgogKi8KCiNpZm5kZWYgRUJDRElDCgovKiBJRl9FQihBU0NJSV9jb25zdGFudCwgRUJDRElDX2NvbnN0YW50KSAqLwojZGVmaW5lIElGX0VCKGEsIGIpCWEKCiNkZWZpbmUgQ2hhck9yZCh4KQkoKHgpIDwgJ2EnID8gKHgpIC0gJ0EnIDogKHgpIC0gJ2EnKQojZGVmaW5lIENoYXJPcmRMb3coeCkJKCh4KSAtICdhJykKI2RlZmluZSBDaGFyT3JkVXAoeCkJKCh4KSAtICdBJykKI2RlZmluZSBST1QxMyhjLCBhKQkoKCgoKGMpIC0gKGEpKSArIDEzKSAlIDI2KSArIChhKSkKCiNkZWZpbmUgTlVMCQknXDAwMCcKI2RlZmluZSBCRUxMCQknXDAwNycKI2RlZmluZSBCUwkJJ1wwMTAnCiNkZWZpbmUgVEFCCQknXDAxMScKI2RlZmluZSBOTAkJJ1wwMTInCiNkZWZpbmUgTkxfU1RSCQkoY2hhcl91ICopIlwwMTIiCiNkZWZpbmUgRkYJCSdcMDE0JwojZGVmaW5lIENBUgkJJ1wwMTUnCS8qIENSIGlzIHVzZWQgYnkgTWFjIE9TIFggKi8KI2RlZmluZSBFU0MJCSdcMDMzJwojZGVmaW5lIEVTQ19TVFIJCShjaGFyX3UgKikiXDAzMyIKI2RlZmluZSBFU0NfU1RSX25jCSJcMDMzIgojZGVmaW5lIERFTAkJMHg3ZgojZGVmaW5lIERFTF9TVFIJCShjaGFyX3UgKikiXDE3NyIKI2RlZmluZSBDU0kJCTB4OWIJLyogQ29udHJvbCBTZXF1ZW5jZSBJbnRyb2R1Y2VyICovCiNkZWZpbmUgQ1NJX1NUUgkJIlwyMzMiCiNkZWZpbmUgRENTCQkweDkwCS8qIERldmljZSBDb250cm9sIFN0cmluZyAqLwojZGVmaW5lIFNURVJNCQkweDljCS8qIFN0cmluZyBUZXJtaW5hdG9yICovCgojZGVmaW5lIFBPVU5ECQkweEEzCgojZGVmaW5lIEN0cmxfY2hyKHgpCShUT1VQUEVSX0FTQyh4KSBeIDB4NDApIC8qICc/JyAtPiBERUwsICdAJyAtPiBeQCwgZXRjLiAqLwojZGVmaW5lIE1ldGEoeCkJCSgoeCkgfCAweDgwKQoKI2RlZmluZSBDVFJMX0ZfU1RSCSJcMDA2IgojZGVmaW5lIENUUkxfSF9TVFIJIlwwMTAiCiNkZWZpbmUgQ1RSTF9WX1NUUgkiXDAyNiIKCiNkZWZpbmUgQ3RybF9BVAkJMCAgIC8qIEAgKi8KI2RlZmluZSBDdHJsX0EJCTEKI2RlZmluZSBDdHJsX0IJCTIKI2RlZmluZSBDdHJsX0MJCTMKI2RlZmluZSBDdHJsX0QJCTQKI2RlZmluZSBDdHJsX0UJCTUKI2RlZmluZSBDdHJsX0YJCTYKI2RlZmluZSBDdHJsX0cJCTcKI2RlZmluZSBDdHJsX0gJCTgKI2RlZmluZSBDdHJsX0kJCTkKI2RlZmluZSBDdHJsX0oJCTEwCiNkZWZpbmUgQ3RybF9LCQkxMQojZGVmaW5lIEN0cmxfTAkJMTIKI2RlZmluZSBDdHJsX00JCTEzCiNkZWZpbmUgQ3RybF9OCQkxNAojZGVmaW5lIEN0cmxfTwkJMTUKI2RlZmluZSBDdHJsX1AJCTE2CiNkZWZpbmUgQ3RybF9RCQkxNwojZGVmaW5lIEN0cmxfUgkJMTgKI2RlZmluZSBDdHJsX1MJCTE5CiNkZWZpbmUgQ3RybF9UCQkyMAojZGVmaW5lIEN0cmxfVQkJMjEKI2RlZmluZSBDdHJsX1YJCTIyCiNkZWZpbmUgQ3RybF9XCQkyMwojZGVmaW5lIEN0cmxfWAkJMjQKI2RlZmluZSBDdHJsX1kJCTI1CiNkZWZpbmUgQ3RybF9aCQkyNgoJCQkgICAgLyogQ1RSTC0gWyBMZWZ0IFNxdWFyZSBCcmFja2V0ID09IEVTQyovCiNkZWZpbmUgQ3RybF9CU0wJMjggIC8qIFwgQmFja1NMYXNoICovCiNkZWZpbmUgQ3RybF9SU0IJMjkgIC8qIF0gUmlnaHQgU3F1YXJlIEJyYWNrZXQgKi8KI2RlZmluZSBDdHJsX0hBVAkzMCAgLyogXiAqLwojZGVmaW5lIEN0cmxfXwkJMzEKCiNlbHNlCgovKiBFQkNESUMgKi8KCi8qIElGX0VCKEFTQ0lJX2NvbnN0YW50LCBFQkNESUNfY29uc3RhbnQpICovCiNkZWZpbmUgSUZfRUIoYSwgYikJYgoKLyoKICogRmluZGluZyB0aGUgcG9zaXRpb24gaW4gdGhlIGFscGhhYmV0IGlzIG5vdCBzdHJhaWdodGZvcndhcmQgaW4gRUJDRElDLgogKiBUaGVyZSBhcmUgZ2FwcyBpbiB0aGUgY29kZSB0YWJsZS4KICogJ2EnICsgMSA9PSAnYicsIGJ1dDogJ2knICsgNyA9PSAnaicgYW5kICdyJyArIDggPT0gJ3MnCiAqLwojZGVmaW5lIENoYXJPcmRfXyhjKSAoKGMpIDwgKCdqJyAtICdhJykgPyAoYykgOiAoKGMpIDwgKCdzJyAtICdhJykgPyAoYykgLSA3IDogKGMpIC0gNyAtIDgpKQojZGVmaW5lIENoYXJPcmRMb3coeCkgKENoYXJPcmRfXygoeCkgLSAnYScpKQojZGVmaW5lIENoYXJPcmRVcCh4KSAoQ2hhck9yZF9fKCh4KSAtICdBJykpCiNkZWZpbmUgQ2hhck9yZCh4KSAoaXN1cHBlcih4KSA/IENoYXJPcmRVcCh4KSA6IENoYXJPcmRMb3coeCkpCgojZGVmaW5lIEVCQ0RJQ19DSEFSX0FERF8oeCkgKCh4KSA8IDA/J2EnOih4KT4yNT8neic6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Ilt4XSkKI2RlZmluZSBFQkNESUNfQ0hBUl9BREQoYyxzKSAoaXN1cHBlcihjKSA/IHRvdXBwZXIoRUJDRElDX0NIQVJfQUREXyhDaGFyT3JkVXAoYykrKHMpKSkgOiBFQkNESUNfQ0hBUl9BRERfKENoYXJPcmRMb3coYykrKHMpKSkKCiNkZWZpbmUgUjEzXyhjKSAoImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IlsoKGMpICsgMTMpICUgMjZdKQojZGVmaW5lIFJPVDEzKGMsIGEpICAoaXN1cHBlcihjKSA/IHRvdXBwZXIoUjEzXyhDaGFyT3JkVXAoYykpKSA6IFIxM18oQ2hhck9yZExvdyhjKSkpCgojZGVmaW5lIE5VTAkJJ1wwMDAnCiNkZWZpbmUgQkVMTAkJJ1x4MmYnCiNkZWZpbmUgQlMJCSdceDE2JwojZGVmaW5lIFRBQgkJJ1x4MDUnCiNkZWZpbmUgTkwJCSdceDE1JwojZGVmaW5lIE5MX1NUUgkJKGNoYXJfdSAqKSJceDE1IgojZGVmaW5lIEZGCQknXHgwQycKI2RlZmluZSBDQVIJCSdceDBEJwojZGVmaW5lIEVTQwkJJ1x4MjcnCiNkZWZpbmUgRVNDX1NUUgkJKGNoYXJfdSAqKSJceDI3IgojZGVmaW5lIEVTQ19TVFJfbmMJIlx4MjciCiNkZWZpbmUgREVMCQkweDA3CiNkZWZpbmUgREVMX1NUUgkJKGNoYXJfdSAqKSJcMDA3IgovKiBUT0RPOiBFQkNESUMgQ29kZSBwYWdlIGRlcGVuZGVudCAoaGVyZSAxMDQ3KSAqLwojZGVmaW5lIENTSQkJMHg5YgkvKiBDb250cm9sIFNlcXVlbmNlIEludHJvZHVjZXIgKi8KI2RlZmluZSBDU0lfU1RSCQkiXDIzMyIKI2RlZmluZSBEQ1MJCTB4OTAJLyogRGV2aWNlIENvbnRyb2wgU3RyaW5nICovCiNkZWZpbmUgU1RFUk0JCTB4OWMJLyogU3RyaW5nIFRlcm1pbmF0b3IgKi8KCiNkZWZpbmUgUE9VTkQJCSejJwoKI2RlZmluZSBDVFJMX0ZfU1RSCSJcMDU2IgojZGVmaW5lIENUUkxfSF9TVFIJIlwwMjYiCiNkZWZpbmUgQ1RSTF9WX1NUUgkiXDA2MiIKCiNkZWZpbmUgQ3RybF9BVAkJMHgwMCAgIC8qIEAgKi8KI2RlZmluZSBDdHJsX0EJCTB4MDEKI2RlZmluZSBDdHJsX0IJCTB4MDIKI2RlZmluZSBDdHJsX0MJCTB4MDMKI2RlZmluZSBDdHJsX0QJCTB4MzcKI2RlZmluZSBDdHJsX0UJCTB4MkQKI2RlZmluZSBDdHJsX0YJCTB4MkUKI2RlZmluZSBDdHJsX0cJCTB4MkYKI2RlZmluZSBDdHJsX0gJCTB4MTYKI2RlZmluZSBDdHJsX0kJCTB4MDUKI2RlZmluZSBDdHJsX0oJCTB4MTUKI2RlZmluZSBDdHJsX0sJCTB4MEIKI2RlZmluZSBDdHJsX0wJCTB4MEMKI2RlZmluZSBDdHJsX00JCTB4MEQKI2RlZmluZSBDdHJsX04JCTB4MEUKI2RlZmluZSBDdHJsX08JCTB4MEYKI2RlZmluZSBDdHJsX1AJCTB4MTAKI2RlZmluZSBDdHJsX1EJCTB4MTEKI2RlZmluZSBDdHJsX1IJCTB4MTIKI2RlZmluZSBDdHJsX1MJCTB4MTMKI2RlZmluZSBDdHJsX1QJCTB4M0MKI2RlZmluZSBDdHJsX1UJCTB4M0QKI2RlZmluZSBDdHJsX1YJCTB4MzIKI2RlZmluZSBDdHJsX1cJCTB4MjYKI2RlZmluZSBDdHJsX1gJCTB4MTgKI2RlZmluZSBDdHJsX1kJCTB4MTkKI2RlZmluZSBDdHJsX1oJCTB4M0YKCQkJICAgIC8qIENUUkwtIFsgTGVmdCBTcXVhcmUgQnJhY2tldCA9PSBFU0MqLwojZGVmaW5lIEN0cmxfUlNCCTB4MUQgIC8qIF0gUmlnaHQgU3F1YXJlIEJyYWNrZXQgKi8KI2RlZmluZSBDdHJsX0JTTAkweDFDICAvKiBcIEJhY2tTTGFzaCAqLwojZGVmaW5lIEN0cmxfSEFUCTB4MUUgIC8qIF4gKi8KI2RlZmluZSBDdHJsX18JCTB4MUYKCiNkZWZpbmUgQ3RybF9jaHIoeCkJKEN0cmxUYWJsZVsoeCldKQpleHRlcm4gY2hhciBDdHJsVGFibGVbXTsKCiNkZWZpbmUgQ3RybENoYXIoeCkJKCh4IDwgJyAnKSA/IEN0cmxDaGFyVGFibGVbKHgpXSA6IDApCmV4dGVybiBjaGFyIEN0cmxDaGFyVGFibGVbXTsKCiNkZWZpbmUgTWV0YUNoYXIoeCkJKCh4IDwgJyAnKSA/IE1ldGFDaGFyVGFibGVbKHgpXSA6IDApCmV4dGVybiBjaGFyIE1ldGFDaGFyVGFibGVbXTsKCiNlbmRpZiAvKiBkZWZpbmVkIEVCQ0RJQyAqLwoKLyoKICogQ2hhcmFjdGVyIHRoYXQgc2VwYXJhdGVzIGRpciBuYW1lcyBpbiBhIHBhdGguCiAqIEZvciBNUy1ET1MsIFdJTjMyIGFuZCBPUy8yIHdlIHVzZSBhIGJhY2tzbGFzaC4gIEEgc2xhc2ggbW9zdGx5IHdvcmtzCiAqIGZpbmUsIGJ1dCB0aGVyZSBhcmUgcGxhY2VzIHdoZXJlIGl0IGRvZXNuJ3QgKGUuZy4gaW4gYSBjb21tYW5kIG5hbWUpLgogKiBGb3IgQWNvcm4gd2UgdXNlIGEgZG90LgogKi8KI2lmZGVmIEJBQ0tTTEFTSF9JTl9GSUxFTkFNRQojIGRlZmluZSBQQVRIU0VQCXBzZXBjCiMgZGVmaW5lIFBBVEhTRVBTVFIJcHNlcHMKI2Vsc2UKIyBpZmRlZiBSSVNDT1MKIyAgZGVmaW5lIFBBVEhTRVAJJy4nCiMgIGRlZmluZSBQQVRIU0VQU1RSCSIuIgojIGVsc2UKIyAgZGVmaW5lIFBBVEhTRVAJJy8nCiMgIGRlZmluZSBQQVRIU0VQU1RSCSIvIgojIGVuZGlmCiNlbmRpZgo=