LyoKICogVHJhbnNwYXJlbnQgcHJveHkgc3VwcG9ydCBmb3IgTGludXgvaXB0YWJsZXMKICoKICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDQgQmFsYUJpdCBJVCBMdGQuCiAqIEF1dGhvcjogQmFs4XpzIFNjaGVpZGxlcgogKgogKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwogKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KICoKICovCgojaWZuZGVmIF9JUF9UUFJPWFlfSAojZGVmaW5lIF9JUF9UUFJPWFlfSAoKI2lmZGVmIF9fS0VSTkVMX18KI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiNpbmNsdWRlIDxsaW51eC9pbi5oPgojZWxzZQojaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgojaWZuZGVmIElQX1JFQ1ZPUklHQUREUlMKI2RlZmluZSBJUF9SRUNWT1JJR0FERFJTCTExMjczCiNkZWZpbmUgSVBfT1JJR0FERFJTCUlQX1JFQ1ZPUklHQUREUlMKc3RydWN0IGluX29yaWdhZGRycyB7CiAgICAgICAgc3RydWN0IGluX2FkZHIgaW9hX3NyY2FkZHI7CiAgICAgICAgc3RydWN0IGluX2FkZHIgaW9hX2RzdGFkZHI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgaW50IGlvYV9zcmNwb3J0OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGludCBpb2FfZHN0cG9ydDsKfTsKI2VuZGlmCiNlbmRpZgoKLyogCiAqIHVzZWQgaW4gc2V0c29ja29wdChTT0xfSVAsIElQX1RQUk9YWSkgc2hvdWxkIG5vdCBjb2xsaWRlIAogKiB3aXRoIHZhbHVlcyBpbiA8bGludXgvaW4uaD4gCiAqLwoKI2RlZmluZSBJUF9UUFJPWFkJICAgMTEyNzQKCi8qIHRwcm94eSBvcGVyYXRpb25zICovCmVudW0gewoJVFBST1hZX1ZFUlNJT04gPSAwLAoJVFBST1hZX0FTU0lHTiwKCVRQUk9YWV9VTkFTU0lHTiwKCVRQUk9YWV9RVUVSWSwKCVRQUk9YWV9GTEFHUywKCVRQUk9YWV9BTExPQywKCVRQUk9YWV9DT05ORUNUCn07CgovKiBiaXRmaWVsZHMgaW4gSVBfVFBST1hZX0ZMQUdTICovCiNkZWZpbmUgSVRQX0NPTk5FQ1QgICAgIDB4MDAwMDAwMDEKI2RlZmluZSBJVFBfTElTVEVOICAgICAgMHgwMDAwMDAwMgojZGVmaW5lIElUUF9FU1RBQkxJU0hFRCAweDAwMDAwMDA0CgojZGVmaW5lIElUUF9PTkNFICAgICAgICAweDAwMDEwMDAwCiNkZWZpbmUgSVRQX01BUksgICAgICAgIDB4MDAwMjAwMDAKI2RlZmluZSBJVFBfQVBQTElFRCAgICAgMHgwMDA0MDAwMAojZGVmaW5lIElUUF9VTklESVIgICAgICAweDAwMDgwMDAwCgpzdHJ1Y3QgaW5fdHByb3h5X2FkZHJ7CglzdHJ1Y3QgaW5fYWRkcglmYWRkcjsKCXVfaW50MTZfdAlmcG9ydDsKfTsKCnN0cnVjdCBpbl90cHJveHkgewoJLyogZml4ZWQgcGFydCwgc2hvdWxkIG5vdCBjaGFuZ2UgYmV0d2VlbiB2ZXJzaW9ucyAqLwoJdV9pbnQzMl90IG9wOwoJLyogZXh0ZW5zaWJsZSBwYXJ0ICovCgl1bmlvbiBfaW5fYXJncyB7CgkJdV9pbnQzMl90CQl2ZXJzaW9uOwoJCXN0cnVjdCBpbl90cHJveHlfYWRkcglhZGRyOwoJCXVfaW50MzJfdAkJZmxhZ3M7Cgl9IHY7Cn07CgojZW5kaWYK