LyoKICogRGVmaW5pdGlvbnMgZm9yIHRoZSBGVERJIFVTQiBTaW5nbGUgUG9ydCBTZXJpYWwgQ29udmVydGVyIC0gCiAqIGtub3duIGFzIEZURElfU0lPIChTZXJpYWwgSW5wdXQvT3V0cHV0IGFwcGxpY2F0aW9uIG9mIHRoZSBjaGlwc2V0KSAKICoKICogVGhlIGV4YW1wbGUgSSBoYXZlIGlzIGtub3duIGFzIHRoZSBVU0MtMTAwMCB3aGljaCBpcyBhdmFpbGFibGUgZnJvbQogKiBodHRwOi8vd3d3LmRzZS5jby5ueiAtIGNhdCBubyBYSDQyMTQgSXQgbG9va3Mgc2ltaWxhciB0byB0aGlzOgogKiBodHRwOi8vd3d3LmRhbnNkYXRhLmNvbS91c2JzZXIuaHRtIGJ1dCBJIGNhbid0IGJlIHN1cmUgVGhlcmUgYXJlIG90aGVyCiAqIFVTQy0xMDAwcyB3aGljaCBkb24ndCBsb29rIGxpa2UgbXkgZGV2aWNlIHRob3VnaCBzbyBiZXdhcmUhCiAqCiAqIFRoZSBkZXZpY2UgaXMgYmFzZWQgb24gdGhlIEZUREkgRlQ4VTEwMEFYIGNoaXAuIEl0IGhhcyBhIERCMjUgb24gb25lIHNpZGUsIAogKiBVU0Igb24gdGhlIG90aGVyLgogKgogKiBUaGFueCB0byBGVERJIChodHRwOi8vd3d3LmZ0ZGkuY28udWspIGZvciBzbyBraW5kbHkgcHJvdmlkaW5nIGRldGFpbHMKICogb2YgdGhlIHByb3RvY29sIHJlcXVpcmVkIHRvIHRhbGsgdG8gdGhlIGRldmljZSBhbmQgb25nb2luZyBhc3Npc3RlbmNlCiAqIGR1cmluZyBkZXZlbG9wbWVudC4KICoKICogQmlsbCBSeWRlciAtIGJyeWRlckBzZ2kuY29tIGZvcm1lcmx5IG9mIFNpbGljb24gR3JhcGhpY3MsIEluYy4tIHdyb3RlIHRoZSAKICogRlRESV9TSU8gaW1wbGVtZW50YXRpb24uCiAqCiAqIFBoaWxpcHAgR/xocmluZyAtIHBnQGZ1dHVyZXdhcmUuYXQgLSBhZGRlZCB0aGUgRGV2aWNlIElEIG9mIHRoZSBVU0IgcmVsYWlzCiAqIGZyb20gUnVkb2xmIEd1Z2xlcgogKgogKi8KCiNkZWZpbmUgRlRESV9WSUQJMHgwNDAzCS8qIFZlbmRvciBJZCAqLwojZGVmaW5lIEZURElfU0lPX1BJRAkweDgzNzIJLyogUHJvZHVjdCBJZCBTSU8gYXBwbGljYXRpb24gb2YgOFUxMDBBWCAgKi8KI2RlZmluZSBGVERJXzhVMjMyQU1fUElEIDB4NjAwMSAvKiBTaW1pbGFyIGRldmljZSB0byBTSU8gYWJvdmUgKi8KI2RlZmluZSBGVERJXzhVMjMyQU1fQUxUX1BJRCAweDYwMDYgLyogRlRESSdzIGFsdGVybmF0ZSBQSUQgZm9yIGFib3ZlICovCiNkZWZpbmUgRlRESV84VTIyMzJDX1BJRCAweDYwMTAgLyogRHVhbCBjaGFubmVsIGRldmljZSAqLwojZGVmaW5lIEZURElfUkVMQUlTX1BJRAkweEZBMTAgIC8qIFJlbGFpcyBkZXZpY2UgZnJvbSBSdWRvbGYgR3VnbGVyICovCiNkZWZpbmUgRlRESV9ORl9SSUNfVklECTB4MERDRAkvKiBWZW5kb3IgSWQgKi8KI2RlZmluZSBGVERJX05GX1JJQ19QSUQJMHgwMDAxCS8qIFByb2R1Y3QgSWQgKi8KCgovKiB3d3cuaXJ0cmFucy5kZSBkZXZpY2UgKi8KI2RlZmluZSBGVERJX0lSVFJBTlNfUElEIDB4RkM2MCAvKiBQcm9kdWN0IElkICovCgoKLyogd3d3LnRob3VnaHR0ZWNobm9sb2d5LmNvbS8gVFQtVVNCIHByb3ZpZGUgd2l0aCBwcm9jb21wIHVzZSBmdGRpX3NpbyAqLwojZGVmaW5lIEZURElfVFRVU0JfUElEIDB4RkYyMCAvKiBQcm9kdWN0IElkICovCgovKiBpUGx1cyBkZXZpY2UgKi8KI2RlZmluZSBGVERJX0lQTFVTX1BJRCAweEQwNzAgLyogUHJvZHVjdCBJZCAqLwoKLyogd3d3LmNyeXN0YWxmb250ei5jb20gZGV2aWNlcyAtIHRoYW54IGZvciBwcm92aWRpbmcgZnJlZSBkZXZpY2VzIGZvciBldmFsdWF0aW9uICEgKi8KLyogdGhleSB1c2UgdGhlIGZ0ZGkgY2hpcHNldCBmb3IgdGhlIFVTQiBpbnRlcmZhY2UgYW5kIHRoZSB2ZW5kb3IgaWQgaXMgdGhlIHNhbWUgKi8KI2RlZmluZSBGVERJX1hGXzYzMl9QSUQgMHhGQzA4CS8qIDYzMjogMTZ4MiBDaGFyYWN0ZXIgRGlzcGxheSAqLwojZGVmaW5lIEZURElfWEZfNjM0X1BJRCAweEZDMDkJLyogNjM0OiAyMHg0IENoYXJhY3RlciBEaXNwbGF5ICovCiNkZWZpbmUgRlRESV9YRl81NDdfUElEIDB4RkMwQQkvKiA1NDc6IFR3byBsaW5lIERpc3BsYXkgKi8KI2RlZmluZSBGVERJX1hGXzYzM19QSUQgMHhGQzBCCS8qIDYzMzogMTZ4MiBDaGFyYWN0ZXIgRGlzcGxheSB3aXRoIEtleXMgKi8KI2RlZmluZSBGVERJX1hGXzYzMV9QSUQgMHhGQzBDCS8qIDYzMTogMjB4MiBDaGFyYWN0ZXIgRGlzcGxheSAqLwojZGVmaW5lIEZURElfWEZfNjM1X1BJRCAweEZDMEQJLyogNjM1OiAyMHg0IENoYXJhY3RlciBEaXNwbGF5ICovCiNkZWZpbmUgRlRESV9YRl82NDBfUElEIDB4RkMwRQkvKiA2NDA6IFR3byBsaW5lIERpc3BsYXkgKi8KI2RlZmluZSBGVERJX1hGXzY0Ml9QSUQgMHhGQzBGCS8qIDY0MjogVHdvIGxpbmUgRGlzcGxheSAqLwoKLyogVmlkZW8gTmV0d29ya3MgTGltaXRlZCAvIEhvbWVjaG9pY2UgaW4gdGhlIFVLIHVzZSBhbiBmdGRpLWJhc2VkIGRldmljZSBmb3IgdGhlaXIgMU1iICovCi8qIGJyb2FkYmFuZCBpbnRlcm5ldCBzZXJ2aWNlLiAgVGhlIGZvbGxvd2luZyBQSUQgaXMgZXhoaWJpdGVkIGJ5IHRoZSB1c2IgZGV2aWNlIHN1cHBsaWVkICovCi8qICh0aGUgVklEIGlzIHRoZSBzdGFuZGFyZCBmdGRpIHZpZCAoRlRESV9WSUQpICovCiNkZWZpbmUgRlRESV9WTkhDUENVU0JfRF9QSUQgMHhmZTM4IC8qIFByb2R1Y3QgSWQgKi8KCi8qCiAqIFBDREogdXNlIGZ0ZGkgYmFzZWQgZGotY29udHJvbGxlcnMuICBUaGUgZm9sbG93aW5nIFBJRCBpcyBmb3IgdGhlaXIgREFDLTIgZGV2aWNlCiAqIGh0dHA6Ly93d3cucGNkamhhcmR3YXJlLmNvbS9EQUMyLmFzcCAoUElEIHNlbnQgYnkgV291dGVyIFBhZXNlbikKICogKHRoZSBWSUQgaXMgdGhlIHN0YW5kYXJkIGZ0ZGkgdmlkIChGVERJX1ZJRCkgKi8KI2RlZmluZSBGVERJX1BDREpfREFDMl9QSUQgMHhGQTg4CgovKgogKiBUaGUgZm9sbG93aW5nIGFyZSB0aGUgdmFsdWVzIGZvciB0aGUgTWF0cml4IE9yYml0YWwgTENEIGRpc3BsYXlzLAogKiB3aGljaCBhcmUgdGhlIEZUMjMyQk0gKCBzaW1pbGFyIHRvIHRoZSA4VTIzMkFNICkKICovCiNkZWZpbmUgRlRESV9NVFhPUkJfMF9QSUQgICAgICAweEZBMDAgIC8qIE1hdHJpeCBPcmJpdGFsIFByb2R1Y3QgSWQgKi8KI2RlZmluZSBGVERJX01UWE9SQl8xX1BJRCAgICAgIDB4RkEwMSAgLyogTWF0cml4IE9yYml0YWwgUHJvZHVjdCBJZCAqLwojZGVmaW5lIEZURElfTVRYT1JCXzJfUElEICAgICAgMHhGQTAyICAvKiBNYXRyaXggT3JiaXRhbCBQcm9kdWN0IElkICovCiNkZWZpbmUgRlRESV9NVFhPUkJfM19QSUQgICAgICAweEZBMDMgIC8qIE1hdHJpeCBPcmJpdGFsIFByb2R1Y3QgSWQgKi8KI2RlZmluZSBGVERJX01UWE9SQl80X1BJRCAgICAgIDB4RkEwNCAgLyogTWF0cml4IE9yYml0YWwgUHJvZHVjdCBJZCAqLwojZGVmaW5lIEZURElfTVRYT1JCXzVfUElEICAgICAgMHhGQTA1ICAvKiBNYXRyaXggT3JiaXRhbCBQcm9kdWN0IElkICovCiNkZWZpbmUgRlRESV9NVFhPUkJfNl9QSUQgICAgICAweEZBMDYgIC8qIE1hdHJpeCBPcmJpdGFsIFByb2R1Y3QgSWQgKi8KCi8qIEludGVyYmlvbWV0cmljcyBVU0IgSS9PIEJvYXJkICovCi8qIERldmVsb3BlZCBmb3IgSW50ZXJiaW9tZXRyaWNzIGJ5IFJ1ZG9sZiBHdWdsZXIgKi8KI2RlZmluZSBJTlRFUkJJT01FVFJJQ1NfVklEICAgICAgICAgICAgICAweDEyMDkKI2RlZmluZSBJTlRFUkJJT01FVFJJQ1NfSU9CT0FSRF9QSUQgICAgICAweDEwMDIKI2RlZmluZSBJTlRFUkJJT01FVFJJQ1NfTUlOSV9JT0JPQVJEX1BJRCAweDEwMDYKCi8qCiAqIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSB2YWx1ZXMgZm9yIHRoZSBQZXJsZSBTeXN0ZW1zCiAqIFVsdHJhUG9ydCBVU0Igc2VyaWFsIGNvbnZlcnRlcnMKICovCiNkZWZpbmUgRlRESV9QRVJMRV9VTFRSQVBPUlRfUElEIDB4RjBDMAkvKiBQZXJsZSBVbHRyYVBvcnQgUHJvZHVjdCBJZCAqLwoKLyoKICogVGhlIGZvbGxvd2luZyBhcmUgdGhlIHZhbHVlcyBmb3IgdGhlIFNlYWxldmVsIFNlYUxJTksrIGFkYXB0ZXJzLgogKiAoT3JpZ2luYWwgbGlzdCBzZW50IGJ5IFR1YW4gSG9hbmcuICBJYW4gQWJib3R0IHJlbmFtZWQgdGhlIG1hY3JvcyBhbmQKICogcmVtb3ZlZCBzb21lIFBJRHMgdGhhdCBkb24ndCBzZWVtIHRvIG1hdGNoIGFueSBleGlzdGluZyBwcm9kdWN0cy4pCiAqLwojZGVmaW5lIFNFQUxFVkVMX1ZJRAkJMHgwYzUyCS8qIFNlYWxldmVsIFZlbmRvciBJRCAqLwojZGVmaW5lIFNFQUxFVkVMXzIxMDFfUElECTB4MjEwMQkvKiBTZWFMSU5LKzIzMiAoMjEwMS8yMTA1KSAqLwojZGVmaW5lIFNFQUxFVkVMXzIxMDJfUElECTB4MjEwMgkvKiBTZWFMSU5LKzQ4NSAoMjEwMikgKi8KI2RlZmluZSBTRUFMRVZFTF8yMTAzX1BJRAkweDIxMDMJLyogU2VhTElOSysyMzJJICgyMTAzKSAqLwojZGVmaW5lIFNFQUxFVkVMXzIxMDRfUElECTB4MjEwNAkvKiBTZWFMSU5LKzQ4NUkgKDIxMDQpICovCiNkZWZpbmUgU0VBTEVWRUxfMjIwMV8xX1BJRAkweDIyMTEJLyogU2VhUE9SVCsyLzIzMiAoMjIwMSkgUG9ydCAxICovCiNkZWZpbmUgU0VBTEVWRUxfMjIwMV8yX1BJRAkweDIyMjEJLyogU2VhUE9SVCsyLzIzMiAoMjIwMSkgUG9ydCAyICovCiNkZWZpbmUgU0VBTEVWRUxfMjIwMl8xX1BJRAkweDIyMTIJLyogU2VhUE9SVCsyLzQ4NSAoMjIwMikgUG9ydCAxICovCiNkZWZpbmUgU0VBTEVWRUxfMjIwMl8yX1BJRAkweDIyMjIJLyogU2VhUE9SVCsyLzQ4NSAoMjIwMikgUG9ydCAyICovCiNkZWZpbmUgU0VBTEVWRUxfMjIwM18xX1BJRAkweDIyMTMJLyogU2VhUE9SVCsyICgyMjAzKSBQb3J0IDEgKi8KI2RlZmluZSBTRUFMRVZFTF8yMjAzXzJfUElECTB4MjIyMwkvKiBTZWFQT1JUKzIgKDIyMDMpIFBvcnQgMiAqLwojZGVmaW5lIFNFQUxFVkVMXzI0MDFfMV9QSUQJMHgyNDExCS8qIFNlYVBPUlQrNC8yMzIgKDI0MDEpIFBvcnQgMSAqLwojZGVmaW5lIFNFQUxFVkVMXzI0MDFfMl9QSUQJMHgyNDIxCS8qIFNlYVBPUlQrNC8yMzIgKDI0MDEpIFBvcnQgMiAqLwojZGVmaW5lIFNFQUxFVkVMXzI0MDFfM19QSUQJMHgyNDMxCS8qIFNlYVBPUlQrNC8yMzIgKDI0MDEpIFBvcnQgMyAqLwojZGVmaW5lIFNFQUxFVkVMXzI0MDFfNF9QSUQJMHgyNDQxCS8qIFNlYVBPUlQrNC8yMzIgKDI0MDEpIFBvcnQgNCAqLwojZGVmaW5lIFNFQUxFVkVMXzI0MDJfMV9QSUQJMHgyNDEyCS8qIFNlYVBPUlQrNC80ODUgKDI0MDIpIFBvcnQgMSAqLwojZGVmaW5lIFNFQUxFVkVMXzI0MDJfMl9QSUQJMHgyNDIyCS8qIFNlYVBPUlQrNC80ODUgKDI0MDIpIFBvcnQgMiAqLwojZGVmaW5lIFNFQUxFVkVMXzI0MDJfM19QSUQJMHgyNDMyCS8qIFNlYVBPUlQrNC80ODUgKDI0MDIpIFBvcnQgMyAqLwojZGVmaW5lIFNFQUxFVkVMXzI0MDJfNF9QSUQJMHgyNDQyCS8qIFNlYVBPUlQrNC80ODUgKDI0MDIpIFBvcnQgNCAqLwojZGVmaW5lIFNFQUxFVkVMXzI0MDNfMV9QSUQJMHgyNDEzCS8qIFNlYVBPUlQrNCAoMjQwMykgUG9ydCAxICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwM18yX1BJRAkweDI0MjMJLyogU2VhUE9SVCs0ICgyNDAzKSBQb3J0IDIgKi8KI2RlZmluZSBTRUFMRVZFTF8yNDAzXzNfUElECTB4MjQzMwkvKiBTZWFQT1JUKzQgKDI0MDMpIFBvcnQgMyAqLwojZGVmaW5lIFNFQUxFVkVMXzI0MDNfNF9QSUQJMHgyNDQzCS8qIFNlYVBPUlQrNCAoMjQwMykgUG9ydCA0ICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwMV8xX1BJRAkwWDI4MTEJLyogU2VhTElOSys4LzIzMiAoMjgwMSkgUG9ydCAxICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwMV8yX1BJRAkwWDI4MjEJLyogU2VhTElOSys4LzIzMiAoMjgwMSkgUG9ydCAyICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwMV8zX1BJRAkwWDI4MzEJLyogU2VhTElOSys4LzIzMiAoMjgwMSkgUG9ydCAzICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwMV80X1BJRAkwWDI4NDEJLyogU2VhTElOSys4LzIzMiAoMjgwMSkgUG9ydCA0ICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwMV81X1BJRAkwWDI4NTEJLyogU2VhTElOSys4LzIzMiAoMjgwMSkgUG9ydCA1ICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwMV82X1BJRAkwWDI4NjEJLyogU2VhTElOSys4LzIzMiAoMjgwMSkgUG9ydCA2ICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwMV83X1BJRAkwWDI4NzEJLyogU2VhTElOSys4LzIzMiAoMjgwMSkgUG9ydCA3ICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwMV84X1BJRAkwWDI4ODEJLyogU2VhTElOSys4LzIzMiAoMjgwMSkgUG9ydCA4ICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwMl8xX1BJRAkwWDI4MTIJLyogU2VhTElOSys4LzQ4NSAoMjgwMikgUG9ydCAxICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwMl8yX1BJRAkwWDI4MjIJLyogU2VhTElOSys4LzQ4NSAoMjgwMikgUG9ydCAyICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwMl8zX1BJRAkwWDI4MzIJLyogU2VhTElOSys4LzQ4NSAoMjgwMikgUG9ydCAzICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwMl80X1BJRAkwWDI4NDIJLyogU2VhTElOSys4LzQ4NSAoMjgwMikgUG9ydCA0ICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwMl81X1BJRAkwWDI4NTIJLyogU2VhTElOSys4LzQ4NSAoMjgwMikgUG9ydCA1ICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwMl82X1BJRAkwWDI4NjIJLyogU2VhTElOSys4LzQ4NSAoMjgwMikgUG9ydCA2ICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwMl83X1BJRAkwWDI4NzIJLyogU2VhTElOSys4LzQ4NSAoMjgwMikgUG9ydCA3ICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwMl84X1BJRAkwWDI4ODIJLyogU2VhTElOSys4LzQ4NSAoMjgwMikgUG9ydCA4ICovCiNkZWZpbmUgU0VBTEVWRUxfMjgwM18xX1BJRAkwWDI4MTMJLyogU2VhTElOSys4ICgyODAzKSBQb3J0IDEgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAzXzJfUElECTBYMjgyMyAJLyogU2VhTElOSys4ICgyODAzKSBQb3J0IDIgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAzXzNfUElECTBYMjgzMyAJLyogU2VhTElOSys4ICgyODAzKSBQb3J0IDMgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAzXzRfUElECTBYMjg0MyAJLyogU2VhTElOSys4ICgyODAzKSBQb3J0IDQgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAzXzVfUElECTBYMjg1MyAJLyogU2VhTElOSys4ICgyODAzKSBQb3J0IDUgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAzXzZfUElECTBYMjg2MyAJLyogU2VhTElOSys4ICgyODAzKSBQb3J0IDYgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAzXzdfUElECTBYMjg3MyAJLyogU2VhTElOSys4ICgyODAzKSBQb3J0IDcgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAzXzhfUElECTBYMjg4MyAJLyogU2VhTElOSys4ICgyODAzKSBQb3J0IDggKi8KCi8qCiAqIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSB2YWx1ZXMgZm9yIHR3byBLT0JJTCBjaGlwY2FyZCB0ZXJtaW5hbHMuCiAqLwojZGVmaW5lIEtPQklMX1ZJRAkJMHgwZDQ2CS8qIEtPQklMIFZlbmRvciBJRCAqLwojZGVmaW5lIEtPQklMX0NPTlZfQjFfUElECTB4MjAyMAkvKiBLT0JJTCBLb252ZXJ0ZXIgZm9yIEIxICovCiNkZWZpbmUgS09CSUxfQ09OVl9LQUFOX1BJRAkweDIwMjEJLyogS09CSUxfS29udmVydGVyIGZvciBLQUFOICovCgovKgogKiBJY29tIElELTEgZGlnaXRhbCB0cmFuc2NlaXZlcgogKi8KCiNkZWZpbmUgSUNPTV9JRDFfVklEICAgICAgICAgICAgMHgwQzI2CiNkZWZpbmUgSUNPTV9JRDFfUElEICAgICAgICAgICAgMHgwMDA0CgovKgogKiBBU0suZnIgZGV2aWNlcwogKi8KI2RlZmluZSBGVERJX0FTS19SRFI0MDBfUElECTB4Qzk5MQkvKiBBU0sgUkRSIDQwMCBzZXJpZXMgY2FyZCByZWFkZXIgKi8KCi8qCiAqIERTUy0yMCBTeW5jIFN0YXRpb24gZm9yIFNvbnkgRXJpY3Nzb24gUDgwMAogKi8KIAojZGVmaW5lIEZURElfRFNTMjBfUElEICAgICAgICAgIDB4RkM4MiAgCgovKgogKiBIb21lIEVsZWN0cm9uaWNzICh3d3cuaG9tZS1lbGVjdHJvLmNvbSkgVVNCIGdhZGdldHMKICovCiNkZWZpbmUgRlRESV9IRV9USVJBMV9QSUQJMHhGQTc4CS8qIFRpcmEtMSBJUiB0cmFuc2NlaXZlciAqLwoKLyogVVNCLVVJUlQgLSBBbiBpbmZyYXJlZCByZWNlaXZlciBhbmQgdHJhbnNtaXR0ZXIgdXNpbmcgdGhlIDhVMjMyQU0gY2hpcCAqLwovKiBodHRwOi8vaG9tZS5lYXJ0aGxpbmsubmV0L35qcmhlZXMvVVNCVUlSVC9pbmRleC5odG0gKi8KI2RlZmluZSBGVERJX1VTQl9VSVJUX1BJRAkweEY4NTAJLyogUHJvZHVjdCBJZCAqLwoKLyoKICogRUxWIFVTQiBkZXZpY2VzIHN1Ym1pdHRlZCBieSBDaHJpc3RpYW4gQWJ0IG9mIEVMViAod3d3LmVsdi5kZSkuCiAqIEFsbCBvZiB0aGVzZSBkZXZpY2VzIHVzZSBGVERJJ3MgdmVuZG9yIElEICgweDA0MDMpLgogKgogKiBUaGUgcHJldmlvdXNseSBpbmNsdWRlZCBQSUQgZm9yIHRoZSBVTyAxMDAgbW9kdWxlIHdhcyBpbmNvcnJlY3QuCiAqIEluIGZhY3QsIHRoYXQgUElEIHdhcyBmb3IgRUxWJ3MgVVIgMTAwIFVTQi1SUzIzMiBjb252ZXJ0ZXIgKDB4RkI1OCkuCiAqCiAqIEFybWluIExhZXVnZXIgb3JpZ2luYWxseSBzZW50IHRoZSBQSUQgZm9yIHRoZSBVTSAxMDAgbW9kdWxlLgogKi8KI2RlZmluZSBGVERJX0VMVl9VUjEwMF9QSUQJMHhGQjU4CS8qIFVTQi1SUzIzMi1VbXNldHplciAoVVIgMTAwKSAqLwojZGVmaW5lIEZURElfRUxWX1VNMTAwX1BJRAkweEZCNUEJLyogVVNCLU1vZHVsIFVNIDEwMCAqLwojZGVmaW5lIEZURElfRUxWX1VPMTAwX1BJRAkweEZCNUIJLyogVVNCLU1vZHVsIFVPIDEwMCAqLwojZGVmaW5lIEZURElfRUxWX0FMQzg1MDBfUElECTB4RjA2RQkvKiBBTEMgODUwMCBFeHBlcnQgKi8KLyogQWRkaXRpb25hbCBFTFYgUElEcyB0aGF0IGRlZmF1bHQgdG8gdXNpbmcgdGhlIEZUREkgRDJYWCBkcml2ZXJzIG9uCiAqIE1TIFdpbmRvd3MsIHJhdGhlciB0aGFuIHRoZSBGVERJIFZpcnR1YWwgQ29tIFBvcnQgZHJpdmVycy4KICogTWF5YmUgdGhlc2Ugd2lsbCBiZSBlYXNpZXIgdG8gdXNlIHdpdGggdGhlIGxpYmZ0ZGkvbGlidXNiIHVzZXItc3BhY2UKICogZHJpdmVycywgb3IgcG9zc2libHkgdGhlIENvbWVkaSBkcml2ZXJzIGluIHNvbWUgY2FzZXMuICovCiNkZWZpbmUgRlRESV9FTFZfQ0xJNzAwMF9QSUQJMHhGQjU5CS8qIENvbXB1dGVyLUxpZ2h0LUludGVyZmFjZSAoQ0xJIDcwMDApICovCiNkZWZpbmUgRlRESV9FTFZfUFBTNzMzMF9QSUQJMHhGQjVDCS8qIFByb2Nlc3Nvci1Qb3dlci1TdXBwbHkgKFBQUyA3MzMwKSAqLwojZGVmaW5lIEZURElfRUxWX1RGTTEwMF9QSUQJMHhGQjVECS8qIFRlbXBlcmFydHVyLUZldWNodGUgTWVzc2dlcmFldCAoVEZNIDEwMCkgKi8KI2RlZmluZSBGVERJX0VMVl9VREY3N19QSUQJMHhGQjVFCS8qIFVTQiBEQ0YgRnVua3VyaCAoVURGIDc3KSAqLwojZGVmaW5lIEZURElfRUxWX1VJTzg4X1BJRAkweEZCNUYJLyogVVNCLUkvTyBJbnRlcmZhY2UgKFVJTyA4OCkgKi8KI2RlZmluZSBGVERJX0VMVl9VQUQ4X1BJRAkweEYwNjgJLyogVVNCLUFELVdhbmRsZXIgKFVBRCA4KSAqLwojZGVmaW5lIEZURElfRUxWX1VEQTdfUElECTB4RjA2OQkvKiBVU0ItREEtV2FuZGxlciAoVURBIDcpICovCiNkZWZpbmUgRlRESV9FTFZfVVNJMl9QSUQJMHhGMDZBCS8qIFVTQi1TY2hyaXR0bW90b3Jlbi1JbnRlcmZhY2UgKFVTSSAyKSAqLwojZGVmaW5lIEZURElfRUxWX1QxMTAwX1BJRAkweEYwNkIJLyogVGhlcm1vbWV0ZXIgKFQgMTEwMCkgKi8KI2RlZmluZSBGVERJX0VMVl9QQ0QyMDBfUElECTB4RjA2QwkvKiBQQy1EYXRlbmxvZ2dlciAoUENEIDIwMCkgKi8KI2RlZmluZSBGVERJX0VMVl9VTEEyMDBfUElECTB4RjA2RAkvKiBVU0ItTENELUFuc3RldWVydW5nIChVTEEgMjAwKSAqLwojZGVmaW5lIEZURElfRUxWX0ZIWjEwMDBQQ19QSUQJMHhGMDZGCS8qIEZIWiAxMDAwIFBDICovCiNkZWZpbmUgRlRESV9FTFZfQ1NJOF9QSUQJMHhFMEYwCS8qIENvbXB1dGVyLVNjaGFsdC1JbnRlcmZhY2UgKENTSSA4KSAqLwojZGVmaW5lIEZURElfRUxWX0VNMTAwMERMX1BJRAkweEUwRjEJLyogUEMtRGF0ZW5sb2dnZXIgZnVlciBFbmVyZ2llbW9uaXRvciAoRU0gMTAwMCBETCkgKi8KI2RlZmluZSBGVERJX0VMVl9QQ0sxMDBfUElECTB4RTBGMgkvKiBQQy1LYWJlbHRlc3RlciAoUENLIDEwMCkgKi8KI2RlZmluZSBGVERJX0VMVl9SRlA1MDBfUElECTB4RTBGMwkvKiBIRi1MZWlzdHVuZ3NtZXNzZXIgKFJGUCA1MDApICovCiNkZWZpbmUgRlRESV9FTFZfRlMyMFNJR19QSUQJMHhFMEY0CS8qIFNpZ25hbGdlYmVyIChGUyAyMCBTSUcpICovCiNkZWZpbmUgRlRESV9FTFZfV1MzMDBQQ19QSUQJMHhFMEY2CS8qIFBDLVdldHRlcnN0YXRpb24gKFdTIDMwMCBQQykgKi8KI2RlZmluZSBGVERJX0VMVl9GSFoxMzAwUENfUElECTB4RTBFOAkvKiBGSFogMTMwMCBQQyAqLwojZGVmaW5lIEZURElfRUxWX1dTNTAwX1BJRAkweEUwRTkJLyogUEMtV2V0dGVyc3RhdGlvbiAoV1MgNTAwKSAqLwoKLyoKICogRGVmaW5pdGlvbnMgZm9yIElEIFRFQ0ggKHd3dy5pZHQtbmV0LmNvbSkgZGV2aWNlcwogKi8KI2RlZmluZSBJRFRFQ0hfVklECQkweDBBQ0QJLyogSUQgVEVDSCBWZW5kb3IgSUQgKi8KI2RlZmluZSBJRFRFQ0hfSURUMTIyMVVfUElECTB4MDMwMAkvKiBJRFQxMjIxVSBVU0IgdG8gUlMtMjMyIGFkYXB0ZXIgKi8KCi8qCiAqIERlZmluaXRpb25zIGZvciBPbW5pZGlyZWN0aW9uYWwgQ29udHJvbCBUZWNobm9sb2d5LCBJbmMuIGRldmljZXMKICovCiNkZWZpbmUgT0NUX1ZJRAkJCTB4MEIzOQkvKiBPQ1QgdmVuZG9yIElEICovCi8qIE5vdGU6IE9DVCBVUzEwMSBpcyBhbHNvIHJlYmFkZ2VkIGFzIERpY2sgU21pdGggRWxlY3Ryb25pY3MgKE5aKSBYSDYzODEgKi8KLyogQWxzbyByZWJhZGdlZCBhcyBEaWNrIFNtaXRoIEVsZWN0cm9uaWNzIChBdXMpIFhINjQ1MSAqLwovKiBBbHNvIHJlYmFkZ2VkIGFzIFNJSUcgSW5jLiBtb2RlbCBVUzIzMDggaGFyZHdhcmUgdmVyc2lvbiAxICovCiNkZWZpbmUgT0NUX1VTMTAxX1BJRAkJMHgwNDIxCS8qIE9DVCBVUzEwMSBVU0IgdG8gUlMtMjMyICovCgovKiBhbiBpbmZyYXJlZCByZWNlaXZlciBmb3IgdXNlciBhY2Nlc3MgY29udHJvbCB3aXRoIElSIHRhZ3MgKi8KI2RlZmluZSBGVERJX1BJRUdST1VQX1BJRAkweEYyMDgJLyogUHJvZHVjdCBJZCAqLwoKLyoKICogRGVmaW5pdGlvbnMgZm9yIEFydGVtaXMgYXN0cm9ub21pY2FsIFVTQiBiYXNlZCBjYW1lcmFzCiAqIENoZWNrIGl0IGF0IGh0dHA6Ly93d3cuYXJ0ZW1pc2NjZC5jby51ay8KICovCiNkZWZpbmUgRlRESV9BUlRFTUlTX1BJRAkweERGMjgJLyogQWxsIEFydGVtaXMgQ2FtZXJhcyAqLwoKLyoKICogRGVmaW5pdGlvbnMgZm9yIEFUSUsgSW5zdHJ1bWVudHMgYXN0cm9ub21pY2FsIFVTQiBiYXNlZCBjYW1lcmFzCiAqIENoZWNrIGl0IGF0IGh0dHA6Ly93d3cuYXRpay1pbnN0cnVtZW50cy5jb20vCiAqLwojZGVmaW5lIEZURElfQVRJS19BVEsxNl9QSUQJMHhERjMwCS8qIEFUSUsgQVRLLTE2IEdyYXlzY2FsZSBDYW1lcmEgKi8KI2RlZmluZSBGVERJX0FUSUtfQVRLMTZDX1BJRAkweERGMzIJLyogQVRJSyBBVEstMTZDIENvbG91ciBDYW1lcmEgKi8KI2RlZmluZSBGVERJX0FUSUtfQVRLMTZIUl9QSUQJMHhERjMxCS8qIEFUSUsgQVRLLTE2SFIgR3JheXNjYWxlIENhbWVyYSAqLwojZGVmaW5lIEZURElfQVRJS19BVEsxNkhSQ19QSUQJMHhERjMzCS8qIEFUSUsgQVRLLTE2SFJDIENvbG91ciBDYW1lcmEgKi8KCi8qCiAqIFByb3RlZ28gcHJvZHVjdCBpZHMKICovCiNkZWZpbmUgUFJPVEVHT19TUEVDSUFMXzEJMHhGQzcwCS8qIHNwZWNpYWwvdW5rbm93biBkZXZpY2UgKi8KI2RlZmluZSBQUk9URUdPX1IyWDAJCTB4RkM3MQkvKiBSMjAwLVVTQiBUUk5HIHVuaXQgKFIyMTAsIFIyMjAsIGFuZCBSMjMwKSAqLwojZGVmaW5lIFBST1RFR09fU1BFQ0lBTF8zCTB4RkM3MgkvKiBzcGVjaWFsL3Vua25vd24gZGV2aWNlICovCiNkZWZpbmUgUFJPVEVHT19TUEVDSUFMXzQJMHhGQzczCS8qIHNwZWNpYWwvdW5rbm93biBkZXZpY2UgKi8KCi8qCiAqIEd1ZGUgQW5hbG9nLSB1bmQgRGlnaXRhbHN5c3RlbWUgR21iSAogKi8KI2RlZmluZSBGVERJX0dVREVBRFNfRTgwOF9QSUQgICAgMHhFODA4CiNkZWZpbmUgRlRESV9HVURFQURTX0U4MDlfUElEICAgIDB4RTgwOQojZGVmaW5lIEZURElfR1VERUFEU19FODBBX1BJRCAgICAweEU4MEEKI2RlZmluZSBGVERJX0dVREVBRFNfRTgwQl9QSUQgICAgMHhFODBCCiNkZWZpbmUgRlRESV9HVURFQURTX0U4MENfUElEICAgIDB4RTgwQwojZGVmaW5lIEZURElfR1VERUFEU19FODBEX1BJRCAgICAweEU4MEQKI2RlZmluZSBGVERJX0dVREVBRFNfRTgwRV9QSUQgICAgMHhFODBFCiNkZWZpbmUgRlRESV9HVURFQURTX0U4MEZfUElEICAgIDB4RTgwRgojZGVmaW5lIEZURElfR1VERUFEU19FODg4X1BJRCAgICAweEU4ODggIC8qIEV4cGVydCBJU0ROIENvbnRyb2wgVVNCICovCiNkZWZpbmUgRlRESV9HVURFQURTX0U4ODlfUElEICAgIDB4RTg4OSAgLyogVVNCIFJTLTIzMiBPcHRvQnJpZGdlICovCiNkZWZpbmUgRlRESV9HVURFQURTX0U4OEFfUElEICAgIDB4RTg4QQojZGVmaW5lIEZURElfR1VERUFEU19FODhCX1BJRCAgICAweEU4OEIKI2RlZmluZSBGVERJX0dVREVBRFNfRTg4Q19QSUQgICAgMHhFODhDCiNkZWZpbmUgRlRESV9HVURFQURTX0U4OERfUElEICAgIDB4RTg4RAojZGVmaW5lIEZURElfR1VERUFEU19FODhFX1BJRCAgICAweEU4OEUKI2RlZmluZSBGVERJX0dVREVBRFNfRTg4Rl9QSUQgICAgMHhFODhGCgovKgogKiBMaW54IFRlY2hub2xvZ2llcyBwcm9kdWN0IGlkcwogKi8KI2RlZmluZSBMSU5YX1NETVVTQlFTU19QSUQJMHhGNDQ4CS8qIExpbnggU0RNLVVTQi1RUy1TICovCiNkZWZpbmUgTElOWF9NQVNURVJERVZFTDJfUElEICAgMHhGNDQ5ICAgLyogTGlueCBNYXN0ZXIgRGV2ZWxvcG1lbnQgMi4wICovCiNkZWZpbmUgTElOWF9GVVRVUkVfMF9QSUQgICAweEY0NEEgICAvKiBMaW54IGZ1dHVyZSBkZXZpY2UgKi8KI2RlZmluZSBMSU5YX0ZVVFVSRV8xX1BJRCAgIDB4RjQ0QiAgIC8qIExpbnggZnV0dXJlIGRldmljZSAqLwojZGVmaW5lIExJTlhfRlVUVVJFXzJfUElEICAgMHhGNDRDICAgLyogTGlueCBmdXR1cmUgZGV2aWNlICovCgovKiBDQ1MgSW5jLiBJQ0RVL0lDRFU0MCBwcm9kdWN0IElEIC0gdGhlIEZUMjMyQk0gaXMgdXNlZCBpbiBhbiBpbi1jaXJjdWl0LWRlYnVnZ2VyICovCi8qIHVuaXQgZm9yIFBJQzE2J3MvUElDMTgncyAqLwojZGVmaW5lIEZURElfQ0NTSUNEVTIwXzBfUElEICAgIDB4RjlEMCAgICAgCiNkZWZpbmUgRlRESV9DQ1NJQ0RVNDBfMV9QSUQgICAgMHhGOUQxICAgICAKCi8qIEluc2lkZSBBY2Nlc3NvIGNvbnRhY3RsZXNzIHJlYWRlciAoaHR0cDovL3d3dy5pbnNpZGVmci5jb20pICovCiNkZWZpbmUgSU5TSURFX0FDQ0VTU08JCTB4RkFEMAoKLyoKICogSW50cmVwaWQgQ29udHJvbCBTeXN0ZW1zIChodHRwOi8vd3d3LmludHJlcGlkY3MuY29tLykgVmFsdWVDQU4gYW5kIE5lb1ZJCiAqLwojZGVmaW5lIElOVFJFUElEX1ZJRAkJMHgwOTNDCiNkZWZpbmUgSU5UUkVQSURfVkFMVUVDQU5fUElECTB4MDYwMQojZGVmaW5lIElOVFJFUElEX05FT1ZJX1BJRAkweDA3MDEKCi8qCiAqIEZhbGNvbSBXaXJlbGVzcyBDb21tdW5pY2F0aW9ucyBHbWJICiAqLwojZGVmaW5lIEZBTENPTV9WSUQJCTB4MEY5NAkvKiBWZW5kb3IgSWQgKi8KI2RlZmluZSBGQUxDT01fVFdJU1RfUElECTB4MDAwMQkvKiBGYWxjb20gVHdpc3QgVVNCIEdQUlMgbW9kZW0gKi8KI2RlZmluZSBGQUxDT01fU0FNQkFfUElECTB4MDAwNQkvKiBGYWxjb20gU2FtYmEgVVNCIEdQUlMgbW9kZW0gKi8KCi8qCiAqIFNVVU5UTyBwcm9kdWN0IGlkcwogKi8KI2RlZmluZSBGVERJX1NVVU5UT19TUE9SVFNfUElECTB4RjY4MAkvKiBTdXVudG8gU3BvcnRzIGluc3RydW1lbnQgKi8KCi8qCiAqIERlZmluaXRpb25zIGZvciBCJkIgRWxlY3Ryb25pY3MgcHJvZHVjdHMuCiAqLwojZGVmaW5lIEJBTkRCX1ZJRAkJMHgwODU2CS8qIEImQiBFbGVjdHJvbmljcyBWZW5kb3IgSUQgKi8KI2RlZmluZSBCQU5EQl9VU09UTDRfUElECTB4QUMwMQkvKiBVU09UTDQgSXNvbGF0ZWQgUlMtNDg1IENvbnZlcnRlciAqLwojZGVmaW5lIEJBTkRCX1VTVEw0X1BJRAkJMHhBQzAyCS8qIFVTVEw0IFJTLTQ4NSBDb252ZXJ0ZXIgKi8KI2RlZmluZSBCQU5EQl9VU085TUwyX1BJRAkweEFDMDMJLyogVVNPOU1MMiBJc29sYXRlZCBSUy0yMzIgQ29udmVydGVyICovCgovKgogKiBSTSBNaWNoYWVsaWRlcyBDQU52aWV3IFVTQiAoaHR0cDovL3d3dy5ybWNhbi5jb20pCiAqIENBTiBmaWVsZGJ1cyBpbnRlcmZhY2UgYWRhcHRlciwgYWRkZWQgYnkgcG9ydCBHbWJIIHd3dy5wb3J0LmRlKQogKiBJYW4gQWJib3R0IGNoYW5nZWQgdGhlIG1hY3JvIG5hbWVzIGZvciBjb25zaXN0ZW5jeS4KICovCiNkZWZpbmUgRlRESV9STV9DQU5WSUVXX1BJRAkweGZkNjAJLyogUHJvZHVjdCBJZCAqLwoKLyoKICogRVZFUiBFY28gUHJvIFVQUyAoaHR0cDovL3d3dy5ldmVyLmNvbS5wbC8pCiAqLwoKI2RlZmluZQlFVkVSX0VDT19QUk9fQ0RTCTB4ZTUyMAkvKiBSUy0yMzIgY29udmVydGVyICovCgovKgogKiA0Ti1HQUxBWFkuREUgUElEcyBmb3IgQ0FOLVVTQiwgVVNCLVJTMjMyLCBVU0ItUlM0MjIsIFVTQi1SUzQ4NSwKICogVVNCLVRUWSBhY3RpdiwgVVNCLVRUWSBwYXNzaXYuICBTb21lIFBJRHMgYXJlIHVzZWQgYnkgc2V2ZXJhbCBkZXZpY2VzCiAqIGFuZCBJJ20gbm90IGVudGlyZWx5IHN1cmUgd2hpY2ggYXJlIHVzZWQgYnkgd2hpY2guCiAqLwojZGVmaW5lIEZURElfNE5fR0FMQVhZX0RFXzBfUElECTB4ODM3MgojZGVmaW5lIEZURElfNE5fR0FMQVhZX0RFXzFfUElECTB4RjNDMAojZGVmaW5lIEZURElfNE5fR0FMQVhZX0RFXzJfUElECTB4RjNDMQoKLyoKICogTW9iaWxpdHkgRWxlY3Ryb25pY3MgcHJvZHVjdHMuCiAqLwojZGVmaW5lIE1PQklMSVRZX1ZJRAkJCTB4MTM0MgojZGVmaW5lIE1PQklMSVRZX1VTQl9TRVJJQUxfUElECQkweDAyMDIJLyogRWFzaURvY2sgVVNCIDIwMCBzZXJpYWwgKi8KCi8qCiAqIG1pY3JvSEFNIHByb2R1Y3QgSURzIChodHRwOi8vd3d3Lm1pY3JvaGFtLmNvbSkuCiAqIFN1Ym1pdHRlZCBieSBKdXN0aW4gQnVya2V0IChLTDFSTCkgPHpvcnRvbkBqdGFuLmNvbT4KICogYW5kIE1pa2UgU3R1ZGVyIChLNkVFUCkgPGs2ZWVwQGhhbXNvZnR3YXJlLm9yZz4uCiAqIElhbiBBYmJvdHQgPGFiYm90dGlAbWV2LmNvLnVrPiBhZGRlZCBhIGZldyBtb3JlIGZyb20gdGhlIGRyaXZlciBJTkYgZmlsZS4KICovCiNkZWZpbmUgRlRESV9NSEFNX0tXX1BJRCAweEVFRTgJCS8qIFVTQi1LVyBpbnRlcmZhY2UgKi8KI2RlZmluZSBGVERJX01IQU1fWVNfUElEIDB4RUVFOQkJLyogVVNCLVlTIGludGVyZmFjZSAqLwojZGVmaW5lIEZURElfTUhBTV9ZNl9QSUQgMHhFRUVBCQkvKiBVU0ItWTYgaW50ZXJmYWNlICovCiNkZWZpbmUgRlRESV9NSEFNX1k4X1BJRCAweEVFRUIJCS8qIFVTQi1ZOCBpbnRlcmZhY2UgKi8KI2RlZmluZSBGVERJX01IQU1fSUNfUElEIDB4RUVFQwkJLyogVVNCLUlDIGludGVyZmFjZSAqLwojZGVmaW5lIEZURElfTUhBTV9EQjlfUElEIDB4RUVFRAkvKiBVU0ItREI5IGludGVyZmFjZSAqLwojZGVmaW5lIEZURElfTUhBTV9SUzIzMl9QSUQgMHhFRUVFCS8qIFVTQi1SUzIzMiBpbnRlcmZhY2UgKi8KI2RlZmluZSBGVERJX01IQU1fWTlfUElEIDB4RUVFRgkJLyogVVNCLVk5IGludGVyZmFjZSAqLwoKLyoKICogQWN0aXZlIFJvYm90cyBwcm9kdWN0IGlkcy4KICovCiNkZWZpbmUgRlRESV9BQ1RJVkVfUk9CT1RTX1BJRAkweEU1NDgJLyogVVNCIGNvbW1zIGJvYXJkICovCgovKgogKiBYc2VucyBUZWNobm9sb2dpZXMgQlYgcHJvZHVjdHMgKGh0dHA6Ly93d3cueHNlbnMuY29tKS4KICovCiNkZWZpbmUgWFNFTlNfQ09OVkVSVEVSXzBfUElECTB4RDM4OAojZGVmaW5lIFhTRU5TX0NPTlZFUlRFUl8xX1BJRAkweEQzODkKI2RlZmluZSBYU0VOU19DT05WRVJURVJfMl9QSUQJMHhEMzhBCiNkZWZpbmUgWFNFTlNfQ09OVkVSVEVSXzNfUElECTB4RDM4QgojZGVmaW5lIFhTRU5TX0NPTlZFUlRFUl80X1BJRAkweEQzOEMKI2RlZmluZSBYU0VOU19DT05WRVJURVJfNV9QSUQJMHhEMzhECiNkZWZpbmUgWFNFTlNfQ09OVkVSVEVSXzZfUElECTB4RDM4RQojZGVmaW5lIFhTRU5TX0NPTlZFUlRFUl83X1BJRAkweEQzOEYKCi8qCiAqIFRlcmF0cm9uaWsgcHJvZHVjdCBpZHMuCiAqIFN1Ym1pdHRlZCBieSBPLiBX9mxmZWxzY2huZWlkZXIuCiAqLwojZGVmaW5lIEZURElfVEVSQVRST05JS19WQ1BfUElECSAweEVDODgJLyogVGVyYXRyb25payBkZXZpY2UgKHByZWZlcnJpbmcgVkNQIGRyaXZlciBvbiB3aW5kb3dzKSAqLwojZGVmaW5lIEZURElfVEVSQVRST05JS19EMlhYX1BJRCAweEVDODkJLyogVGVyYXRyb25payBkZXZpY2UgKHByZWZlcnJpbmcgRDJYWCBkcml2ZXIgb24gd2luZG93cykgKi8KCi8qCiAqIEV2b2x1dGlvbiBSb2JvdGljcyBwcm9kdWN0cyAoaHR0cDovL3d3dy5ldm9sdXRpb24uY29tLykuCiAqIFN1Ym1pdHRlZCBieSBTaGF3biBNLiBMYXZlbGxlLgogKi8KI2RlZmluZSBFVk9MVVRJT05fVklECQkweERFRUUJLyogVmVuZG9yIElEICovCiNkZWZpbmUgRVZPTFVUSU9OX0VSMV9QSUQJMHgwMzAwCS8qIEVSMSBDb250cm9sIE1vZHVsZSAqLwoKLyogUHlyYW1pZCBDb21wdXRlciBHbWJIICovCiNkZWZpbmUgRlRESV9QWVJBTUlEX1BJRAkweEU2QzgJLyogUHlyYW1pZCBBcHBsaWFuY2UgRGlzcGxheSAqLwoKLyoKICogUG9zaWZsZXggaW5jIHJldGFpbCBlcXVpcG1lbnQgKGh0dHA6Ly93d3cucG9zaWZsZXguY29tLnR3KQogKi8KI2RlZmluZSBQT1NJRkxFWF9WSUQJCTB4MGQzYSAgLyogVmVuZG9yIElEICovCiNkZWZpbmUgUE9TSUZMRVhfUFA3MDAwX1BJRAkweDAzMDAgIC8qIFBQLTcwMDBJSSB0aGVybWFsIHByaW50ZXIgKi8KCi8qCiAqIFdlc3RyZXggSW50ZXJuYXRpb25hbCBkZXZpY2VzIHN1Ym1pdHRlZCBieSBDb3J5IExlZQogKi8KI2RlZmluZSBGVERJX1dFU1RSRVhfTU9ERUxfNzc3X1BJRAkweERDMDAJLyogTW9kZWwgNzc3ICovCiNkZWZpbmUgRlRESV9XRVNUUkVYX01PREVMXzg5MDBGX1BJRAkweERDMDEJLyogTW9kZWwgODkwMEYgKi8KCi8qCiAqIFJSLUNpcktpdHMgTG9jb0J1ZmZlciBVU0IgKGh0dHA6Ly93d3cucnItY2lya2l0cy5jb20pCiAqLwojZGVmaW5lIEZURElfUlJDSVJLSVRTX0xPQ09CVUZGRVJfUElECTB4YzdkMAkvKiBMb2NvQnVmZmVyIFVTQiAqLwoKLyoKICogRWNsbyAoaHR0cDovL3d3dy5lY2xvLnB0LykgcHJvZHVjdCBJRHMuCiAqIFBJRCAweEVBOTAgc3VibWl0dGVkIGJ5IE1hcnRpbiBHcmlsbC4KICovCiNkZWZpbmUgRlRESV9FQ0xPX0NPTV8xV0lSRV9QSUQJMHhFQTkwCS8qIENPTSB0byAxLVdpcmUgVVNCIGFkYXB0b3IgKi8KCi8qCiAqIFBhcG91Y2ggcHJvZHVjdHMgKGh0dHA6Ly93d3cucGFwb3VjaC5jb20vKQogKiBTdWJtaXR0ZWQgYnkgRm9sa2VydCB2YW4gSGV1c2RlbgogKi8KCiNkZWZpbmUgUEFQT1VDSF9WSUQJCQkweDUwNTAJLyogVmVuZG9yIElEICovCiNkZWZpbmUgUEFQT1VDSF9UTVVfUElECQkJMHgwNDAwCS8qIFRNVSBVU0IgVGhlcm1vbWV0ZXIgKi8KCgovKiBDb21tYW5kcyAqLwojZGVmaW5lIEZURElfU0lPX1JFU0VUIAkJMCAvKiBSZXNldCB0aGUgcG9ydCAqLwojZGVmaW5lIEZURElfU0lPX01PREVNX0NUUkwgCTEgLyogU2V0IHRoZSBtb2RlbSBjb250cm9sIHJlZ2lzdGVyICovCiNkZWZpbmUgRlRESV9TSU9fU0VUX0ZMT1dfQ1RSTAkyIC8qIFNldCBmbG93IGNvbnRyb2wgcmVnaXN0ZXIgKi8KI2RlZmluZSBGVERJX1NJT19TRVRfQkFVRF9SQVRFCTMgLyogU2V0IGJhdWQgcmF0ZSAqLwojZGVmaW5lIEZURElfU0lPX1NFVF9EQVRBCTQgLyogU2V0IHRoZSBkYXRhIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgcG9ydCAqLwojZGVmaW5lIEZURElfU0lPX0dFVF9NT0RFTV9TVEFUVVMJNSAvKiBSZXRyaWV2ZSBjdXJyZW50IHZhbHVlIG9mIG1vZGVybiBzdGF0dXMgcmVnaXN0ZXIgKi8KI2RlZmluZSBGVERJX1NJT19TRVRfRVZFTlRfQ0hBUgk2IC8qIFNldCB0aGUgZXZlbnQgY2hhcmFjdGVyICovCiNkZWZpbmUgRlRESV9TSU9fU0VUX0VSUk9SX0NIQVIJNyAvKiBTZXQgdGhlIGVycm9yIGNoYXJhY3RlciAqLwojZGVmaW5lIEZURElfU0lPX1NFVF9MQVRFTkNZX1RJTUVSCTkgLyogU2V0IHRoZSBsYXRlbmN5IHRpbWVyICovCiNkZWZpbmUgRlRESV9TSU9fR0VUX0xBVEVOQ1lfVElNRVIJMTAgLyogR2V0IHRoZSBsYXRlbmN5IHRpbWVyICovCgoKLyoKICogICBCbVJlcXVlc3RUeXBlOiAgMTEwMCAwMDAwYgogKiAgIGJSZXF1ZXN0OiAgICAgICBGVERJX0UyX1JFQUQKICogICB3VmFsdWU6ICAgICAgICAgMAogKiAgIHdJbmRleDogICAgICAgICBBZGRyZXNzIG9mIHdvcmQgdG8gcmVhZAogKiAgIHdMZW5ndGg6ICAgICAgICAyCiAqICAgRGF0YTogICAgICAgICAgIFdpbGwgcmV0dXJuIGEgd29yZCBvZiBkYXRhIGZyb20gRTJBZGRyZXNzCiAqCiAqLwoKLyogUG9ydCBJZGVudGlmaWVyIFRhYmxlICovCiNkZWZpbmUgUElUX0RFRkFVTFQgCQkwIC8qIFNJT0EgKi8KI2RlZmluZSBQSVRfU0lPQQkJMSAvKiBTSU9BICovCi8qIFRoZSBkZXZpY2UgdGhpcyBkcml2ZXIgaXMgdGVzdGVkIHdpdGggb25lIGhhcyBvbmx5IG9uZSBwb3J0ICovCiNkZWZpbmUgUElUX1NJT0IJCTIgLyogU0lPQiAqLwojZGVmaW5lIFBJVF9QQVJBTExFTAkJMyAvKiBQYXJhbGxlbCAqLwoKLyogRlRESV9TSU9fUkVTRVQgKi8KI2RlZmluZSBGVERJX1NJT19SRVNFVF9SRVFVRVNUIEZURElfU0lPX1JFU0VUCiNkZWZpbmUgRlRESV9TSU9fUkVTRVRfUkVRVUVTVF9UWVBFIDB4NDAKI2RlZmluZSBGVERJX1NJT19SRVNFVF9TSU8gMAojZGVmaW5lIEZURElfU0lPX1JFU0VUX1BVUkdFX1JYIDEKI2RlZmluZSBGVERJX1NJT19SRVNFVF9QVVJHRV9UWCAyCgovKgogKiBCbVJlcXVlc3RUeXBlOiAgMDEwMCAwMDAwQgogKiBiUmVxdWVzdDogICAgICAgRlRESV9TSU9fUkVTRVQKICogd1ZhbHVlOiAgICAgICAgIENvbnRyb2wgVmFsdWUgCiAqICAgICAgICAgICAgICAgICAgIDAgPSBSZXNldCBTSU8KICogICAgICAgICAgICAgICAgICAgMSA9IFB1cmdlIFJYIGJ1ZmZlcgogKiAgICAgICAgICAgICAgICAgICAyID0gUHVyZ2UgVFggYnVmZmVyCiAqIHdJbmRleDogICAgICAgICBQb3J0CiAqIHdMZW5ndGg6ICAgICAgICAwCiAqIERhdGE6ICAgICAgICAgICBOb25lCiAqCiAqIFRoZSBSZXNldCBTSU8gY29tbWFuZCBoYXMgdGhpcyBlZmZlY3Q6CiAqCiAqICAgIFNldHMgZmxvdyBjb250cm9sIHNldCB0byAnbm9uZScKICogICAgRXZlbnQgY2hhciA9ICQwRAogKiAgICBFdmVudCB0cmlnZ2VyID0gZGlzYWJsZWQKICogICAgUHVyZ2UgUlggYnVmZmVyCiAqICAgIFB1cmdlIFRYIGJ1ZmZlcgogKiAgICBDbGVhciBEVFIKICogICAgQ2xlYXIgUlRTCiAqICAgIGJhdWQgYW5kIGRhdGEgZm9ybWF0IG5vdCByZXNldAogKgogKiBUaGUgUHVyZ2UgUlggYW5kIFRYIGJ1ZmZlciBjb21tYW5kcyBhZmZlY3Qgbm90aGluZyBleGNlcHQgdGhlIGJ1ZmZlcnMKICoKICAgKi8KCi8qIEZURElfU0lPX1NFVF9CQVVEUkFURSAqLwojZGVmaW5lIEZURElfU0lPX1NFVF9CQVVEUkFURV9SRVFVRVNUX1RZUEUgMHg0MAojZGVmaW5lIEZURElfU0lPX1NFVF9CQVVEUkFURV9SRVFVRVNUIDMKCi8qCiAqIEJtUmVxdWVzdFR5cGU6ICAwMTAwIDAwMDBCCiAqIGJSZXF1ZXN0OiAgICAgICBGVERJX1NJT19TRVRfQkFVRFJBVEUKICogd1ZhbHVlOiAgICAgICAgIEJhdWREaXZpc29yIHZhbHVlIC0gc2VlIGJlbG93CiAqIHdJbmRleDogICAgICAgICBQb3J0CiAqIHdMZW5ndGg6ICAgICAgICAwCiAqIERhdGE6ICAgICAgICAgICBOb25lCiAqIFRoZSBCYXVkRGl2aXNvciB2YWx1ZXMgYXJlIGNhbGN1bGF0ZWQgYXMgZm9sbG93czoKICogLSBCYXNlQ2xvY2sgaXMgZWl0aGVyIDEyMDAwMDAwIG9yIDQ4MDAwMDAwIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlLiBGSVhNRTogSSB3aXNoCiAqICAgSSBrbmV3IGhvdyB0byBkZXRlY3Qgb2xkIGNoaXBzIHRvIHNlbGVjdCBwcm9wZXIgYmFzZSBjbG9jayEKICogLSBCYXVkRGl2aXNvciBpcyBhIGZpeGVkIHBvaW50IG51bWJlciBlbmNvZGVkIGluIGEgZnVubnkgd2F5LgogKiAgICgtLVdST05HIFdBWSBPRiBUSElOS0lORy0tKQogKiAgIEJhdWREaXZpc29yIGlzIGEgZml4ZWQgcG9pbnQgbnVtYmVyIGVuY29kZWQgd2l0aCBmb2xsb3dpbmcgYml0IHdlaWdoczoKICogICAoLTIpKC0xKSgxMy4uMCkuIEl0IGlzIGEgcmFkaWNhbCB3aXRoIGEgZGVub21pbmF0b3Igb2YgNCwgc28gdmFsdWVzCiAqICAgZW5kIHdpdGggMC4wICgwMC4uLiksIDAuMjUgKDEwLi4uKSwgMC41ICgwMS4uLiksIGFuZCAwLjc1ICgxMS4uLikuCiAqICAgKC0tVEhFIFJFQUxJVFktLSkKICogICBUaGUgYm90aC1iaXRzLXNldCBoYXMgcXVpdGUgZGlmZmVyZW50IG1lYW5pbmcgZnJvbSAwLjc1IC0gdGhlIGNoaXAgZGVzaWduZXJzCiAqICAgaGF2ZSBkZWNpZGVkIGl0IHRvIG1lYW4gMC4xMjUgaW5zdGVhZCBvZiAwLjc1LgogKiAgIFRoaXMgaW5mbyBsb29rZWQgdXAgaW4gRlRESSBhcHBsaWNhdGlvbiBub3RlICJGVDhVMjMyIERFVklDRVMgXCBEYXRhIFJhdGVzCiAqICAgYW5kIEZsb3cgQ29udHJvbCBDb25zaWRlcmF0aW9uIGZvciBVU0IgdG8gUlMyMzIiLgogKiAtIEJhdWREaXZpc29yID0gKEJhc2VDbG9jayAvIDE2KSAvIEJhdWRSYXRlLCB3aGVyZSB0aGUgKD0pIG9wZXJhdGlvbiBzaG91bGQKICogICBhdXRvbWFnaWNhbGx5IHJlLWVuY29kZSB0aGUgcmVzdWx0aW5nIHZhbHVlIHRvIHRha2UgZnJhY3Rpb25zIGludG8gY29uc2lkZXJhdGlvbi4KICogQXMgYWxsIHZhbHVlcyBhcmUgaW50ZWdlcnMsIHNvbWUgYml0IHR3aWRkbGluZyBpcyBpbiBvcmRlcjoKICogICBCYXVkRGl2aXNvciA9IChCYXNlQ2xvY2sgLyAxNiAvIEJhdWRSYXRlKSB8CiAqICAgKCgoQmFzZUNsb2NrIC8gMiAvIEJhdWRSYXRlKSAmIDQpID8gMHg0MDAwICAgIC8vIDAuNQogKiAgICA6ICgoQmFzZUNsb2NrIC8gMiAvIEJhdWRSYXRlKSAmIDIpID8gMHg4MDAwICAvLyAwLjI1CiAqICAgIDogKChCYXNlQ2xvY2sgLyAyIC8gQmF1ZFJhdGUpICYgMSkgPyAweGMwMDAgIC8vIDAuMTI1CiAqICAgIDogMCkKICoKICogRm9yIHRoZSBGVDIzMkJNLCBhIDE3dGggZGl2aXNvciBiaXQgd2FzIGludHJvZHVjZWQgdG8gZW5jb2RlIHRoZSBtdWx0aXBsZXMKICogb2YgMC4xMjUgbWlzc2luZyBmcm9tIHRoZSBGVDhVMjMyQU0uICBCaXRzIDE2IHRvIDE0IGFyZSBjb2RlZCBhcyBmb2xsb3dzCiAqICh0aGUgZmlyc3QgZm91ciBjb2RlcyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBGVDhVMjMyQU0sIHdoZXJlIGJpdCAxNiBpcwogKiBhbHdheXMgMCk6CiAqICAgMDAwIC0gYWRkIC4wMDAgdG8gZGl2aXNvcgogKiAgIDAwMSAtIGFkZCAuNTAwIHRvIGRpdmlzb3IKICogICAwMTAgLSBhZGQgLjI1MCB0byBkaXZpc29yCiAqICAgMDExIC0gYWRkIC4xMjUgdG8gZGl2aXNvcgogKiAgIDEwMCAtIGFkZCAuMzc1IHRvIGRpdmlzb3IKICogICAxMDEgLSBhZGQgLjYyNSB0byBkaXZpc29yCiAqICAgMTEwIC0gYWRkIC43NTAgdG8gZGl2aXNvcgogKiAgIDExMSAtIGFkZCAuODc1IHRvIGRpdmlzb3IKICogQml0cyAxNSB0byAwIG9mIHRoZSAxNy1iaXQgZGl2aXNvciBhcmUgcGxhY2VkIGluIHRoZSB1cmIgdmFsdWUuICBCaXQgMTYgaXMgCiAqIHBsYWNlZCBpbiBiaXQgMCBvZiB0aGUgdXJiIGluZGV4LgogKgogKiBOb3RlIHRoYXQgdGhlcmUgYXJlIGEgY291cGxlIG9mIHNwZWNpYWwgY2FzZXMgdG8gc3VwcG9ydCB0aGUgaGlnaGVzdCBiYXVkCiAqIHJhdGVzLiAgSWYgdGhlIGNhbGN1bGF0ZWQgZGl2aXNvciB2YWx1ZSBpcyAxLCB0aGlzIG5lZWRzIHRvIGJlIHJlcGxhY2VkIHdpdGgKICogMC4gIEFkZGl0aW9uYWxseSBmb3IgdGhlIEZUMjMyQk0sIGlmIHRoZSBjYWxjdWxhdGVkIGRpdmlzb3IgdmFsdWUgaXMgMHg0MDAxCiAqICgxLjUpLCB0aGlzIG5lZWRzIHRvIGJlIHJlcGxhY2VkIHdpdGggMHgwMDAxICgxKSAoYnV0IHRoaXMgZGl2aXNvciB2YWx1ZSBpcwogKiBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBGVDhVMjMyQU0pLgogKi8KCnR5cGVkZWYgZW51bSB7CglTSU8gPSAxLAoJRlQ4VTIzMkFNID0gMiwKCUZUMjMyQk0gPSAzLAoJRlQyMjMyQyA9IDQsCn0gZnRkaV9jaGlwX3R5cGVfdDsKCnR5cGVkZWYgZW51bSB7CiBmdGRpX3Npb19iMzAwID0gMCwgCiBmdGRpX3Npb19iNjAwID0gMSwgCiBmdGRpX3Npb19iMTIwMCA9IDIsCiBmdGRpX3Npb19iMjQwMCA9IDMsCiBmdGRpX3Npb19iNDgwMCA9IDQsCiBmdGRpX3Npb19iOTYwMCA9IDUsCiBmdGRpX3Npb19iMTkyMDAgPSA2LAogZnRkaV9zaW9fYjM4NDAwID0gNywKIGZ0ZGlfc2lvX2I1NzYwMCA9IDgsCiBmdGRpX3Npb19iMTE1MjAwID0gOQp9IEZURElfU0lPX2JhdWRyYXRlX3QgOwoKLyoKICogVGhlIGZ0ZGlfOFUyMzJBTV94eE1Iel9ieXl5IGNvbnN0YW50cyBoYXZlIGJlZW4gcmVtb3ZlZC4gVGhlIGVuY29kZWQgZGl2aXNvciB2YWx1ZXMKICogYXJlIGNhbGN1bGF0ZWQgaW50ZXJuYWxseS4KICovCgojZGVmaW5lIEZURElfU0lPX1NFVF9EQVRBX1JFUVVFU1QgRlRESV9TSU9fU0VUX0RBVEEKI2RlZmluZSBGVERJX1NJT19TRVRfREFUQV9SRVFVRVNUX1RZUEUgMHg0MAojZGVmaW5lIEZURElfU0lPX1NFVF9EQVRBX1BBUklUWV9OT05FICgweDAgPDwgOCApCiNkZWZpbmUgRlRESV9TSU9fU0VUX0RBVEFfUEFSSVRZX09ERCAoMHgxIDw8IDggKQojZGVmaW5lIEZURElfU0lPX1NFVF9EQVRBX1BBUklUWV9FVkVOICgweDIgPDwgOCApCiNkZWZpbmUgRlRESV9TSU9fU0VUX0RBVEFfUEFSSVRZX01BUksgKDB4MyA8PCA4ICkKI2RlZmluZSBGVERJX1NJT19TRVRfREFUQV9QQVJJVFlfU1BBQ0UgKDB4NCA8PCA4ICkKI2RlZmluZSBGVERJX1NJT19TRVRfREFUQV9TVE9QX0JJVFNfMSAoMHgwIDw8IDExICkKI2RlZmluZSBGVERJX1NJT19TRVRfREFUQV9TVE9QX0JJVFNfMTUgKDB4MSA8PCAxMSApCiNkZWZpbmUgRlRESV9TSU9fU0VUX0RBVEFfU1RPUF9CSVRTXzIgKDB4MiA8PCAxMSApCiNkZWZpbmUgRlRESV9TSU9fU0VUX0JSRUFLICgweDEgPDwgMTQpCi8qIEZURElfU0lPX1NFVF9EQVRBICovCgovKgogKiBCbVJlcXVlc3RUeXBlOiAgMDEwMCAwMDAwQiAKICogYlJlcXVlc3Q6ICAgICAgIEZURElfU0lPX1NFVF9EQVRBCiAqIHdWYWx1ZTogICAgICAgICBEYXRhIGNoYXJhY3RlcmlzdGljcyAoc2VlIGJlbG93KQogKiB3SW5kZXg6ICAgICAgICAgUG9ydAogKiB3TGVuZ3RoOiAgICAgICAgMAogKiBEYXRhOiAgICAgICAgICAgTm8KICoKICogRGF0YSBjaGFyYWN0ZXJpc3RpY3MKICoKICogICBCMC4uNyAgIE51bWJlciBvZiBkYXRhIGJpdHMKICogICBCOC4uMTAgIFBhcml0eQogKiAgICAgICAgICAgMCA9IE5vbmUKICogICAgICAgICAgIDEgPSBPZGQKICogICAgICAgICAgIDIgPSBFdmVuCiAqICAgICAgICAgICAzID0gTWFyawogKiAgICAgICAgICAgNCA9IFNwYWNlCiAqICAgQjExLi4xMyBTdG9wIEJpdHMKICogICAgICAgICAgIDAgPSAxCiAqICAgICAgICAgICAxID0gMS41CiAqICAgICAgICAgICAyID0gMgogKiAgIEIxNAogKiAgICAgICAgICAgMSA9IFRYIE9OIChicmVhaykKICogICAgICAgICAgIDAgPSBUWCBPRkYgKG5vcm1hbCBzdGF0ZSkKICogICBCMTUgUmVzZXJ2ZWQKICoKICovCgoKCi8qIEZURElfU0lPX01PREVNX0NUUkwgKi8KI2RlZmluZSBGVERJX1NJT19TRVRfTU9ERU1fQ1RSTF9SRVFVRVNUX1RZUEUgMHg0MAojZGVmaW5lIEZURElfU0lPX1NFVF9NT0RFTV9DVFJMX1JFUVVFU1QgRlRESV9TSU9fTU9ERU1fQ1RSTAoKLyogCiAqIEJtUmVxdWVzdFR5cGU6ICAgMDEwMCAwMDAwQgogKiBiUmVxdWVzdDogICAgICAgIEZURElfU0lPX01PREVNX0NUUkwKICogd1ZhbHVlOiAgICAgICAgICBDb250cm9sVmFsdWUgKHNlZSBiZWxvdykKICogd0luZGV4OiAgICAgICAgICBQb3J0CiAqIHdMZW5ndGg6ICAgICAgICAgMAogKiBEYXRhOiAgICAgICAgICAgIE5vbmUKICoKICogTk9URTogSWYgdGhlIGRldmljZSBpcyBpbiBSVFMvQ1RTIGZsb3cgY29udHJvbCwgdGhlIFJUUyBzZXQgYnkgdGhpcwogKiBjb21tYW5kIHdpbGwgYmUgSUdOT1JFRCB3aXRob3V0IGFuIGVycm9yIGJlaW5nIHJldHVybmVkCiAqIEFsc28gLSB5b3UgY2FuIG5vdCBzZXQgRFRSIGFuZCBSVFMgd2l0aCBvbmUgY29udHJvbCBtZXNzYWdlCiAqLwoKI2RlZmluZSBGVERJX1NJT19TRVRfRFRSX01BU0sgMHgxCiNkZWZpbmUgRlRESV9TSU9fU0VUX0RUUl9ISUdIICggMSB8ICggRlRESV9TSU9fU0VUX0RUUl9NQVNLICA8PCA4KSkKI2RlZmluZSBGVERJX1NJT19TRVRfRFRSX0xPVyAgKCAwIHwgKCBGVERJX1NJT19TRVRfRFRSX01BU0sgIDw8IDgpKQojZGVmaW5lIEZURElfU0lPX1NFVF9SVFNfTUFTSyAweDIKI2RlZmluZSBGVERJX1NJT19TRVRfUlRTX0hJR0ggKCAyIHwgKCBGVERJX1NJT19TRVRfUlRTX01BU0sgPDwgOCApKQojZGVmaW5lIEZURElfU0lPX1NFVF9SVFNfTE9XICggMCB8ICggRlRESV9TSU9fU0VUX1JUU19NQVNLIDw8IDggKSkKCi8qCiAqIENvbnRyb2xWYWx1ZQogKiBCMCAgICBEVFIgc3RhdGUKICogICAgICAgICAgMCA9IHJlc2V0CiAqICAgICAgICAgIDEgPSBzZXQKICogQjEgICAgUlRTIHN0YXRlCiAqICAgICAgICAgIDAgPSByZXNldAogKiAgICAgICAgICAxID0gc2V0CiAqIEIyLi43IFJlc2VydmVkCiAqIEI4ICAgIERUUiBzdGF0ZSBlbmFibGUKICogICAgICAgICAgMCA9IGlnbm9yZQogKiAgICAgICAgICAxID0gdXNlIERUUiBzdGF0ZQogKiBCOSAgICBSVFMgc3RhdGUgZW5hYmxlCiAqICAgICAgICAgIDAgPSBpZ25vcmUKICogICAgICAgICAgMSA9IHVzZSBSVFMgc3RhdGUKICogQjEwLi4xNSBSZXNlcnZlZAogKi8KCi8qIEZURElfU0lPX1NFVF9GTE9XX0NUUkwgKi8KI2RlZmluZSBGVERJX1NJT19TRVRfRkxPV19DVFJMX1JFUVVFU1RfVFlQRSAweDQwCiNkZWZpbmUgRlRESV9TSU9fU0VUX0ZMT1dfQ1RSTF9SRVFVRVNUIEZURElfU0lPX1NFVF9GTE9XX0NUUkwKI2RlZmluZSBGVERJX1NJT19ESVNBQkxFX0ZMT1dfQ1RSTCAweDAgCiNkZWZpbmUgRlRESV9TSU9fUlRTX0NUU19IUyAoMHgxIDw8IDgpCiNkZWZpbmUgRlRESV9TSU9fRFRSX0RTUl9IUyAoMHgyIDw8IDgpCiNkZWZpbmUgRlRESV9TSU9fWE9OX1hPRkZfSFMgKDB4NCA8PCA4KQovKgogKiAgIEJtUmVxdWVzdFR5cGU6ICAwMTAwIDAwMDBiCiAqICAgYlJlcXVlc3Q6ICAgICAgIEZURElfU0lPX1NFVF9GTE9XX0NUUkwKICogICB3VmFsdWU6ICAgICAgICAgWG9mZi9Yb24KICogICB3SW5kZXg6ICAgICAgICAgUHJvdG9jb2wvUG9ydCAtIGhJbmRleCBpcyBwcm90b2NsIC8gbEluZGV4IGlzIHBvcnQKICogICB3TGVuZ3RoOiAgICAgICAgMCAKICogICBEYXRhOiAgICAgICAgICAgTm9uZQogKgogKiBoSW5kZXggcHJvdG9jb2wgaXM6CiAqICAgQjAgT3V0cHV0IGhhbmRzaGFraW5nIHVzaW5nIFJUUy9DVFMKICogICAgICAgMCA9IGRpc2FibGVkCiAqICAgICAgIDEgPSBlbmFibGVkCiAqICAgQjEgT3V0cHV0IGhhbmRzaGFraW5nIHVzaW5nIERUUi9EU1IKICogICAgICAgMCA9IGRpc2FibGVkCiAqICAgICAgIDEgPSBlbmFibGVkCiAqICAgQjIgWG9uL1hvZmYgaGFuZHNoYWtpbmcKICogICAgICAgMCA9IGRpc2FibGVkCiAqICAgICAgIDEgPSBlbmFibGVkCiAqCiAqIEEgdmFsdWUgb2YgemVybyBpbiB0aGUgaEluZGV4IGZpZWxkIGRpc2FibGVzIGhhbmRzaGFraW5nCiAqCiAqIElmIFhvbi9Yb2ZmIGhhbmRzaGFraW5nIGlzIHNwZWNpZmllZCwgdGhlIGhWYWx1ZSBmaWVsZCBzaG91bGQgY29udGFpbiB0aGUgWE9GRiBjaGFyYWN0ZXIgCiAqIGFuZCB0aGUgbFZhbHVlIGZpZWxkIGNvbnRhaW5zIHRoZSBYT04gY2hhcmFjdGVyLgogKi8gIAogCi8qCiAqIEZURElfU0lPX0dFVF9MQVRFTkNZX1RJTUVSCiAqCiAqIFNldCB0aGUgdGltZW91dCBpbnRlcnZhbC4gVGhlIEZUREkgY29sbGVjdHMgZGF0YSBmcm9tIHRoZSBzbGF2ZQogKiBkZXZpY2UsIHRyYW5zbWl0dGluZyBpdCB0byB0aGUgaG9zdCB3aGVuIGVpdGhlciBBKSA2MiBieXRlcyBhcmUKICogcmVjZWl2ZWQsIG9yIEIpIHRoZSB0aW1lb3V0IGludGVydmFsIGhhcyBlbGFwc2VkIGFuZCB0aGUgYnVmZmVyCiAqIGNvbnRhaW5zIGF0IGxlYXN0IDEgYnl0ZS4gIFNldHRpbmcgdGhpcyB2YWx1ZSB0byBhIHNtYWxsIG51bWJlcgogKiBjYW4gZHJhbWF0aWNhbGx5IGltcHJvdmUgcGVyZm9ybWFuY2UgZm9yIGFwcGxpY2F0aW9ucyB3aGljaCBzZW5kCiAqIHNtYWxsIHBhY2tldHMsIHNpbmNlIHRoZSBkZWZhdWx0IHZhbHVlIGlzIDE2bXMuCiAqLwojZGVmaW5lICBGVERJX1NJT19HRVRfTEFURU5DWV9USU1FUl9SRVFVRVNUIEZURElfU0lPX0dFVF9MQVRFTkNZX1RJTUVSCiNkZWZpbmUgIEZURElfU0lPX0dFVF9MQVRFTkNZX1RJTUVSX1JFUVVFU1RfVFlQRSAweEMwCgovKiAKICogIEJtUmVxdWVzdFR5cGU6ICAgMTEwMCAwMDAwYgogKiAgYlJlcXVlc3Q6ICAgICAgICBGVERJX1NJT19HRVRfTEFURU5DWV9USU1FUgogKiAgd1ZhbHVlOiAgICAgICAgICAwCiAqICB3SW5kZXg6ICAgICAgICAgIFBvcnQKICogIHdMZW5ndGg6ICAgICAgICAgMAogKiAgRGF0YTogICAgICAgICAgICBsYXRlbmN5IChvbiByZXR1cm4pCiAqLwoKLyogCiAqIEZURElfU0lPX1NFVF9MQVRFTkNZX1RJTUVSCiAqCiAqIFNldCB0aGUgdGltZW91dCBpbnRlcnZhbC4gVGhlIEZUREkgY29sbGVjdHMgZGF0YSBmcm9tIHRoZSBzbGF2ZQogKiBkZXZpY2UsIHRyYW5zbWl0dGluZyBpdCB0byB0aGUgaG9zdCB3aGVuIGVpdGhlciBBKSA2MiBieXRlcyBhcmUKICogcmVjZWl2ZWQsIG9yIEIpIHRoZSB0aW1lb3V0IGludGVydmFsIGhhcyBlbGFwc2VkIGFuZCB0aGUgYnVmZmVyCiAqIGNvbnRhaW5zIGF0IGxlYXN0IDEgYnl0ZS4gIFNldHRpbmcgdGhpcyB2YWx1ZSB0byBhIHNtYWxsIG51bWJlcgogKiBjYW4gZHJhbWF0aWNhbGx5IGltcHJvdmUgcGVyZm9ybWFuY2UgZm9yIGFwcGxpY2F0aW9ucyB3aGljaCBzZW5kCiAqIHNtYWxsIHBhY2tldHMsIHNpbmNlIHRoZSBkZWZhdWx0IHZhbHVlIGlzIDE2bXMuCiAqLwojZGVmaW5lICBGVERJX1NJT19TRVRfTEFURU5DWV9USU1FUl9SRVFVRVNUIEZURElfU0lPX1NFVF9MQVRFTkNZX1RJTUVSCiNkZWZpbmUgIEZURElfU0lPX1NFVF9MQVRFTkNZX1RJTUVSX1JFUVVFU1RfVFlQRSAweDQwCgovKiAKICogIEJtUmVxdWVzdFR5cGU6ICAgMDEwMCAwMDAwYgogKiAgYlJlcXVlc3Q6ICAgICAgICBGVERJX1NJT19TRVRfTEFURU5DWV9USU1FUgogKiAgd1ZhbHVlOiAgICAgICAgICBMYXRlbmN5IChtaWxsaXNlY29uZHMpCiAqICB3SW5kZXg6ICAgICAgICAgIFBvcnQKICogIHdMZW5ndGg6ICAgICAgICAgMAogKiAgRGF0YTogICAgICAgICAgICBOb25lCiAqCiAqIHdWYWx1ZToKICogICBCMC4uNyAgIExhdGVuY3kgdGltZXIKICogICBCOC4uMTUgIDAKICoKICovCgovKgogKiBGVERJX1NJT19TRVRfRVZFTlRfQ0hBUiAKICoKICogU2V0IHRoZSBzcGVjaWFsIGV2ZW50IGNoYXJhY3RlciBmb3IgdGhlIHNwZWNpZmllZCBjb21tdW5pY2F0aW9ucyBwb3J0LgogKiBJZiB0aGUgZGV2aWNlIHNlZXMgdGhpcyBjaGFyYWN0ZXIgaXQgd2lsbCBpbW1lZGlhdGVseSByZXR1cm4gdGhlCiAqIGRhdGEgcmVhZCBzbyBmYXIgLSByYXRoZXIgdGhhbiB3YWl0IDQwbXMgb3IgdW50aWwgNjIgYnl0ZXMgYXJlIHJlYWQKICogd2hpY2ggaXMgd2hhdCBub3JtYWxseSBoYXBwZW5zLgogKi8KCgojZGVmaW5lICBGVERJX1NJT19TRVRfRVZFTlRfQ0hBUl9SRVFVRVNUIEZURElfU0lPX1NFVF9FVkVOVF9DSEFSCiNkZWZpbmUgIEZURElfU0lPX1NFVF9FVkVOVF9DSEFSX1JFUVVFU1RfVFlQRSAweDQwCgoKLyogCiAqICBCbVJlcXVlc3RUeXBlOiAgIDAxMDAgMDAwMGIKICogIGJSZXF1ZXN0OiAgICAgICAgRlRESV9TSU9fU0VUX0VWRU5UX0NIQVIKICogIHdWYWx1ZTogICAgICAgICAgRXZlbnRDaGFyCiAqICB3SW5kZXg6ICAgICAgICAgIFBvcnQKICogIHdMZW5ndGg6ICAgICAgICAgMAogKiAgRGF0YTogICAgICAgICAgICBOb25lCiAqCiAqIHdWYWx1ZToKICogICBCMC4uNyAgIEV2ZW50IENoYXJhY3RlcgogKiAgIEI4ICAgICAgRXZlbnQgQ2hhcmFjdGVyIFByb2Nlc3NpbmcKICogICAgICAgICAgICAgMCA9IGRpc2FibGVkCiAqICAgICAgICAgICAgIDEgPSBlbmFibGVkCiAqICAgQjkuLjE1ICBSZXNlcnZlZAogKgogKi8KICAgICAgICAgIAovKiBGVERJX1NJT19TRVRfRVJST1JfQ0hBUiAqLwoKLyogU2V0IHRoZSBwYXJpdHkgZXJyb3IgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIGZvciB0aGUgc3BlY2lmaWVkIGNvbW11bmljYXRpb25zIHBvcnQgKi8KCi8qIAogKiAgQm1SZXF1ZXN0VHlwZTogIDAxMDAgMDAwMGIKICogIGJSZXF1ZXN0OiAgICAgICBGVERJX1NJT19TRVRfRVZFTlRfQ0hBUgogKiAgd1ZhbHVlOiAgICAgICAgIEVycm9yIENoYXIKICogIHdJbmRleDogICAgICAgICBQb3J0CiAqICB3TGVuZ3RoOiAgICAgICAgMAogKiAgRGF0YTogICAgICAgICAgIE5vbmUKICoKICpFcnJvciBDaGFyCiAqICBCMC4uNyAgRXJyb3IgQ2hhcmFjdGVyCiAqICBCOCAgICAgRXJyb3IgQ2hhcmFjdGVyIFByb2Nlc3NpbmcKICogICAgICAgICAgIDAgPSBkaXNhYmxlZAogKiAgICAgICAgICAgMSA9IGVuYWJsZWQKICogIEI5Li4xNSBSZXNlcnZlZAogKgogKi8KCi8qIEZURElfU0lPX0dFVF9NT0RFTV9TVEFUVVMgKi8KLyogUmV0cmlldmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIG1vZGVtIHN0YXR1cyByZWdpc3RlciAqLwoKI2RlZmluZSBGVERJX1NJT19HRVRfTU9ERU1fU1RBVFVTX1JFUVVFU1RfVFlQRSAweGMwCiNkZWZpbmUgRlRESV9TSU9fR0VUX01PREVNX1NUQVRVU19SRVFVRVNUIEZURElfU0lPX0dFVF9NT0RFTV9TVEFUVVMKI2RlZmluZSBGVERJX1NJT19DVFNfTUFTSyAweDEwCiNkZWZpbmUgRlRESV9TSU9fRFNSX01BU0sgMHgyMAojZGVmaW5lIEZURElfU0lPX1JJX01BU0sgIDB4NDAKI2RlZmluZSBGVERJX1NJT19STFNEX01BU0sgMHg4MAovKiAKICogICBCbVJlcXVlc3RUeXBlOiAgIDExMDAgMDAwMGIKICogICBiUmVxdWVzdDogICAgICAgIEZURElfU0lPX0dFVF9NT0RFTV9TVEFUVVMKICogICB3VmFsdWU6ICAgICAgICAgIHplcm8KICogICB3SW5kZXg6ICAgICAgICAgIFBvcnQKICogICB3TGVuZ3RoOiAgICAgICAgIDEKICogICBEYXRhOiAgICAgICAgICAgIFN0YXR1cwogKiAKICogT25lIGJ5dGUgb2YgZGF0YSBpcyByZXR1cm5lZCAKICogQjAuLjMgMAogKiBCNCAgICBDVFMKICogICAgICAgICAwID0gaW5hY3RpdmUKICogICAgICAgICAxID0gYWN0aXZlCiAqIEI1ICAgIERTUgogKiAgICAgICAgIDAgPSBpbmFjdGl2ZQogKiAgICAgICAgIDEgPSBhY3RpdmUKICogQjYgICAgUmluZyBJbmRpY2F0b3IgKFJJKQogKiAgICAgICAgIDAgPSBpbmFjdGl2ZQogKiAgICAgICAgIDEgPSBhY3RpdmUKICogQjcgICAgUmVjZWl2ZSBMaW5lIFNpZ25hbCBEZXRlY3QgKFJMU0QpCiAqICAgICAgICAgMCA9IGluYWN0aXZlCiAqICAgICAgICAgMSA9IGFjdGl2ZSAKICovCgoKCi8qIERlc2NyaXB0b3JzIHJldHVybmVkIGJ5IHRoZSBkZXZpY2UgCiAqIAogKiAgRGV2aWNlIERlc2NyaXB0b3IKICogCiAqIE9mZnNldAlGaWVsZAkJU2l6ZQlWYWx1ZQlEZXNjcmlwdGlvbgogKiAwCWJMZW5ndGgJCTEJMHgxMglTaXplIG9mIGRlc2NyaXB0b3IgaW4gYnl0ZXMKICogMQliRGVzY3JpcHRvclR5cGUJMQkweDAxCURFVklDRSBEZXNjcmlwdG9yIFR5cGUKICogMgliY2RVU0IJCTIJMHgwMTEwCVVTQiBTcGVjIFJlbGVhc2UgTnVtYmVyCiAqIDQJYkRldmljZUNsYXNzCTEJMHgwMAlDbGFzcyBDb2RlCiAqIDUJYkRldmljZVN1YkNsYXNzCTEJMHgwMAlTdWJDbGFzcyBDb2RlCiAqIDYJYkRldmljZVByb3RvY29sCTEJMHgwMAlQcm90b2NvbCBDb2RlCiAqIDcJYk1heFBhY2tldFNpemUwIDEJMHgwOAlNYXhpbXVtIHBhY2tldCBzaXplIGZvciBlbmRwb2ludCAwCiAqIDgJaWRWZW5kb3IJMgkweDA0MDMJVmVuZG9yIElECiAqIDEwCWlkUHJvZHVjdAkyCTB4ODM3MglQcm9kdWN0IElEIChGVERJX1NJT19QSUQpCiAqIDEyCWJjZERldmljZQkyCTB4MDAwMQlEZXZpY2UgcmVsZWFzZSBudW1iZXIKICogMTQJaU1hbnVmYWN0dXJlcgkxCTB4MDEJSW5kZXggb2YgbWFuLiBzdHJpbmcgZGVzYwogKiAxNQlpUHJvZHVjdAkxCTB4MDIJSW5kZXggb2YgcHJvZCBzdHJpbmcgZGVzYwogKiAxNglpU2VyaWFsTnVtYmVyCTEJMHgwMglJbmRleCBvZiBzZXJpYWwgbm1yIHN0cmluZyBkZXNjCiAqIDE3CWJOdW1Db25maWd1cmF0aW9ucyAxICAgIDB4MDEJTnVtYmVyIG9mIHBvc3NpYmxlIGNvbmZpZ3VyYXRpb25zCiAqIAogKiBDb25maWd1cmF0aW9uIERlc2NyaXB0b3IKICogCiAqIE9mZnNldAlGaWVsZAkJCVNpemUJVmFsdWUKICogMAliTGVuZ3RoCQkJMQkweDA5CVNpemUgb2YgZGVzY3JpcHRvciBpbiBieXRlcwogKiAxCWJEZXNjcmlwdG9yVHlwZQkJMQkweDAyCUNPTkZJR1VSQVRJT04gRGVzY3JpcHRvciBUeXBlCiAqIDIJd1RvdGFsTGVuZ3RoCQkyCTB4MDAyMAlUb3RhbCBsZW5ndGggb2YgZGF0YQogKiA0CWJOdW1JbnRlcmZhY2VzCQkxCTB4MDEJTnVtYmVyIG9mIGludGVyZmFjZXMgc3VwcG9ydGVkCiAqIDUJYkNvbmZpZ3VyYXRpb25WYWx1ZQkxCTB4MDEJQXJndW1lbnQgZm9yIFNldENPbmZpZ3VyYXRpb24oKSByZXEKICogNglpQ29uZmlndXJhdGlvbgkJMQkweDAyCUluZGV4IG9mIGNvbmZpZyBzdHJpbmcgZGVzY3JpcHRvcgogKiA3CWJtQXR0cmlidXRlcwkJMQkweDIwCUNvbmZpZyBjaGFyYWN0ZXJpc3RpY3MgUmVtb3RlIFdha2V1cAogKiA4CU1heFBvd2VyCQkxCTB4MUUJTWF4IHBvd2VyIGNvbnN1bXB0aW9uCiAqIAogKiBJbnRlcmZhY2UgRGVzY3JpcHRvcgogKiAKICogT2Zmc2V0CUZpZWxkCQkJU2l6ZQlWYWx1ZQogKiAwCWJMZW5ndGgJCQkxCTB4MDkJU2l6ZSBvZiBkZXNjcmlwdG9yIGluIGJ5dGVzCiAqIDEJYkRlc2NyaXB0b3JUeXBlCQkxCTB4MDQJSU5URVJGQUNFIERlc2NyaXB0b3IgVHlwZQogKiAyCWJJbnRlcmZhY2VOdW1iZXIJMQkweDAwCU51bWJlciBvZiBpbnRlcmZhY2UKICogMwliQWx0ZXJuYXRlU2V0dGluZwkxCTB4MDAJVmFsdWUgdXNlZCB0byBzZWxlY3QgYWx0ZXJuYXRlCiAqIDQJYk51bUVuZHBvaW50cwkJMQkweDAyCU51bWJlciBvZiBlbmRwb2ludHMKICogNQliSW50ZXJmYWNlQ2xhc3MJCTEJMHhGRglDbGFzcyBDb2RlCiAqIDYJYkludGVyZmFjZVN1YkNsYXNzCTEJMHhGRglTdWJjbGFzcyBDb2RlCiAqIDcJYkludGVyZmFjZVByb3RvY29sCTEJMHhGRglQcm90b2NvbCBDb2RlCiAqIDgJaUludGVyZmFjZQkJMQkweDAyCUluZGV4IG9mIGludGVyZmFjZSBzdHJpbmcgZGVzY3JpcHRpb24KICogCiAqIElOIEVuZHBvaW50IERlc2NyaXB0b3IKICogCiAqIE9mZnNldAlGaWVsZAkJCVNpemUJVmFsdWUKICogMAliTGVuZ3RoCQkJMQkweDA3CVNpemUgb2YgZGVzY3JpcHRvciBpbiBieXRlcwogKiAxCWJEZXNjcmlwdG9yVHlwZQkJMQkweDA1CUVORFBPSU5UIGRlc2NyaXB0b3IgdHlwZQogKiAyCWJFbmRwb2ludEFkZHJlc3MJMQkweDgyCUFkZHJlc3Mgb2YgZW5kcG9pbnQKICogMwlibUF0dHJpYnV0ZXMJCTEJMHgwMglFbmRwb2ludCBhdHRyaWJ1dGVzIC0gQnVsawogKiA0CWJOdW1FbmRwb2ludHMJCTIJMHgwMDQwCW1heGltdW0gcGFja2V0IHNpemUKICogNQliSW50ZXJ2YWwJCTEJMHgwMAlJbnRlcnZhbCBmb3IgcG9sbGluZyBlbmRwb2ludAogKiAKICogT1VUIEVuZHBvaW50IERlc2NyaXB0b3IKICogCiAqIE9mZnNldAlGaWVsZAkJCVNpemUJVmFsdWUKICogMAliTGVuZ3RoCQkJMQkweDA3CVNpemUgb2YgZGVzY3JpcHRvciBpbiBieXRlcwogKiAxCWJEZXNjcmlwdG9yVHlwZQkJMQkweDA1CUVORFBPSU5UIGRlc2NyaXB0b3IgdHlwZQogKiAyCWJFbmRwb2ludEFkZHJlc3MJMQkweDAyCUFkZHJlc3Mgb2YgZW5kcG9pbnQKICogMwlibUF0dHJpYnV0ZXMJCTEJMHgwMglFbmRwb2ludCBhdHRyaWJ1dGVzIC0gQnVsawogKiA0CWJOdW1FbmRwb2ludHMJCTIJMHgwMDQwCW1heGltdW0gcGFja2V0IHNpemUKICogNQliSW50ZXJ2YWwJCTEJMHgwMAlJbnRlcnZhbCBmb3IgcG9sbGluZyBlbmRwb2ludAogKiAgICAgCiAqIERBVEEgRk9STUFUCiAqIAogKiBJTiBFbmRwb2ludAogKiAKICogVGhlIGRldmljZSByZXNlcnZlcyB0aGUgZmlyc3QgdHdvIGJ5dGVzIG9mIGRhdGEgb24gdGhpcyBlbmRwb2ludCB0byBjb250YWluIHRoZSBjdXJyZW50CiAqIHZhbHVlcyBvZiB0aGUgbW9kZW0gYW5kIGxpbmUgc3RhdHVzIHJlZ2lzdGVycy4gSW4gdGhlIGFic2VuY2Ugb2YgZGF0YSwgdGhlIGRldmljZSAKICogZ2VuZXJhdGVzIGEgbWVzc2FnZSBjb25zaXN0aW5nIG9mIHRoZXNlIHR3byBzdGF0dXMgYnl0ZXMgZXZlcnkgNDAgbXMKICogCiAqIEJ5dGUgMDogTW9kZW0gU3RhdHVzCiAqIAogKiBPZmZzZXQJRGVzY3JpcHRpb24KICogQjAJUmVzZXJ2ZWQgLSBtdXN0IGJlIDEKICogQjEJUmVzZXJ2ZWQgLSBtdXN0IGJlIDAKICogQjIJUmVzZXJ2ZWQgLSBtdXN0IGJlIDAKICogQjMJUmVzZXJ2ZWQgLSBtdXN0IGJlIDAKICogQjQJQ2xlYXIgdG8gU2VuZCAoQ1RTKQogKiBCNQlEYXRhIFNldCBSZWFkeSAoRFNSKQogKiBCNglSaW5nIEluZGljYXRvciAoUkkpCiAqIEI3CVJlY2VpdmUgTGluZSBTaWduYWwgRGV0ZWN0IChSTFNEKQogKiAKICogQnl0ZSAxOiBMaW5lIFN0YXR1cwogKiAKICogT2Zmc2V0CURlc2NyaXB0aW9uCiAqIEIwCURhdGEgUmVhZHkgKERSKQogKiBCMQlPdmVycnVuIEVycm9yIChPRSkKICogQjIJUGFyaXR5IEVycm9yIChQRSkKICogQjMJRnJhbWluZyBFcnJvciAoRkUpCiAqIEI0CUJyZWFrIEludGVycnVwdCAoQkkpCiAqIEI1CVRyYW5zbWl0dGVyIEhvbGRpbmcgUmVnaXN0ZXIgKFRIUkUpCiAqIEI2CVRyYW5zbWl0dGVyIEVtcHR5IChURU1UKQogKiBCNwlFcnJvciBpbiBSQ1ZSIEZJRk8KICogCiAqLwojZGVmaW5lIEZURElfUlMwX0NUUwkoMSA8PCA0KQojZGVmaW5lIEZURElfUlMwX0RTUgkoMSA8PCA1KQojZGVmaW5lIEZURElfUlMwX1JJCSgxIDw8IDYpCiNkZWZpbmUgRlRESV9SUzBfUkxTRAkoMSA8PCA3KQoKI2RlZmluZSBGVERJX1JTX0RSICAxCiNkZWZpbmUgRlRESV9SU19PRSAoMTw8MSkKI2RlZmluZSBGVERJX1JTX1BFICgxPDwyKQojZGVmaW5lIEZURElfUlNfRkUgKDE8PDMpCiNkZWZpbmUgRlRESV9SU19CSSAoMTw8NCkKI2RlZmluZSBGVERJX1JTX1RIUkUgKDE8PDUpCiNkZWZpbmUgRlRESV9SU19URU1UICgxPDw2KQojZGVmaW5lIEZURElfUlNfRklGTyAgKDE8PDcpCgovKgogKiBPVVQgRW5kcG9pbnQKICogCiAqIFRoaXMgZGV2aWNlIHJlc2VydmVzIHRoZSBmaXJzdCBieXRlcyBvZiBkYXRhIG9uIHRoaXMgZW5kcG9pbnQgY29udGFpbiB0aGUgbGVuZ3RoCiAqIGFuZCBwb3J0IGlkZW50aWZpZXIgb2YgdGhlIG1lc3NhZ2UuIEZvciB0aGUgRlRESSBVU0IgU2VyaWFsIGNvbnZlcnRlciB0aGUgcG9ydCAKICogaWRlbnRpZmllciBpcyBhbHdheXMgMS4KICogCiAqIEJ5dGUgMDogTGluZSBTdGF0dXMKICogCiAqIE9mZnNldAlEZXNjcmlwdGlvbgogKiBCMAlSZXNlcnZlZCAtIG11c3QgYmUgMQogKiBCMQlSZXNlcnZlZCAtIG11c3QgYmUgMAogKiBCMi4uNwlMZW5ndGggb2YgbWVzc2FnZSAtIChub3QgaW5jbHVkaW5nIEJ5dGUgMCkKICogCiAqLwoK