LyogYm54MnhfaHNpLmg6IEJyb2FkY29tIEV2ZXJlc3QgbmV0d29yayBkcml2ZXIuCiAqCiAqIENvcHlyaWdodCAoYykgMjAwNy0yMDA5IEJyb2FkY29tIENvcnBvcmF0aW9uCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCiAqLwoKc3RydWN0IGxpY2Vuc2Vfa2V5IHsKCXUzMiByZXNlcnZlZFs2XTsKCiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXUxNiBtYXhfaXNjc2lfaW5pdF9jb25uOwoJdTE2IG1heF9pc2NzaV90cmd0X2Nvbm47CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IG1heF9pc2NzaV90cmd0X2Nvbm47Cgl1MTYgbWF4X2lzY3NpX2luaXRfY29ubjsKI2VuZGlmCgoJdTMyIHJlc2VydmVkX2FbNl07Cn07CgoKI2RlZmluZSBQT1JUXzAJCQkJMAojZGVmaW5lIFBPUlRfMQkJCQkxCiNkZWZpbmUgUE9SVF9NQVgJCQkyCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBTaGFyZWQgSFcgY29uZmlndXJhdGlvbgkJCQkJCSAgICAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpzdHJ1Y3Qgc2hhcmVkX2h3X2NmZyB7CQkJCQkgLyogTlZSQU0gT2Zmc2V0ICovCgkvKiBVcCB0byAxNiBieXRlcyBvZiBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nICovCgl1OCAgcGFydF9udW1bMTZdOwkJCQkJLyogMHgxMDQgKi8KCgl1MzIgY29uZmlnOwkJCQkJCS8qIDB4MTE0ICovCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19NRElPX1ZPTFRBR0VfTUFTSyAJICAgIDB4MDAwMDAwMDEKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX01ESU9fVk9MVEFHRV9TSElGVAkgICAgMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfTURJT19WT0xUQUdFXzFfMlYgCSAgICAweDAwMDAwMDAwCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19NRElPX1ZPTFRBR0VfMl81ViAJICAgIDB4MDAwMDAwMDEKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX01DUF9SU1RfT05fQ09SRV9SU1RfRU4JICAgIDB4MDAwMDAwMDIKCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19QT1JUX1NXQVAgCQkgICAgMHgwMDAwMDAwNAoKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX0JFQUNPTl9XT0xfRU4JCSAgICAweDAwMDAwMDA4CgojZGVmaW5lIFNIQVJFRF9IV19DRkdfTUZXX1NFTEVDVF9NQVNLCQkgICAgMHgwMDAwMDcwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfTUZXX1NFTEVDVF9TSElGVAkJICAgIDgKCS8qIFdoYXRldmVyIE1GVyBmb3VuZCBpbiBOVk0KCSAgIChpZiBtdWx0aXBsZSBmb3VuZCwgcHJpb3JpdHkgb3JkZXIgaXM6IE5DLVNJLCBVTVAsIElQTUkpICovCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19NRldfU0VMRUNUX0RFRkFVTFQJICAgIDB4MDAwMDAwMDAKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX01GV19TRUxFQ1RfTkNfU0kJCSAgICAweDAwMDAwMTAwCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19NRldfU0VMRUNUX1VNUAkJICAgIDB4MDAwMDAyMDAKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX01GV19TRUxFQ1RfSVBNSQkJICAgIDB4MDAwMDAzMDAKCS8qIFVzZSBTUElPNCBhcyBhbiBhcmJpdGVyIGJldHdlZW46IDAtTkNfU0ksIDEtSVBNSQoJICAoY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGFuIGFkZC1pbiBib2FyZCwgbm90IEJNQywgcHVsbHMtZG93biBTUElPNCkgKi8KI2RlZmluZSBTSEFSRURfSFdfQ0ZHX01GV19TRUxFQ1RfU1BJTzRfTkNfU0lfSVBNSSAgIDB4MDAwMDA0MDAKCS8qIFVzZSBTUElPNCBhcyBhbiBhcmJpdGVyIGJldHdlZW46IDAtVU1QLCAxLUlQTUkKCSAgKGNhbiBvbmx5IGJlIHVzZWQgd2hlbiBhbiBhZGQtaW4gYm9hcmQsIG5vdCBCTUMsIHB1bGxzLWRvd24gU1BJTzQpICovCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19NRldfU0VMRUNUX1NQSU80X1VNUF9JUE1JICAgICAweDAwMDAwNTAwCgkvKiBVc2UgU1BJTzQgYXMgYW4gYXJiaXRlciBiZXR3ZWVuOiAwLU5DLVNJLCAxLVVNUAoJICAoY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGFuIGFkZC1pbiBib2FyZCwgbm90IEJNQywgcHVsbHMtZG93biBTUElPNCkgKi8KI2RlZmluZSBTSEFSRURfSFdfQ0ZHX01GV19TRUxFQ1RfU1BJTzRfTkNfU0lfVU1QICAgIDB4MDAwMDA2MDAKCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19MRURfTU9ERV9NQVNLCQkgICAgMHgwMDBmMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfTEVEX01PREVfU0hJRlQJCSAgICAxNgojZGVmaW5lIFNIQVJFRF9IV19DRkdfTEVEX01BQzEJCQkgICAgMHgwMDAwMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfTEVEX1BIWTEJCQkgICAgMHgwMDAxMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfTEVEX1BIWTIJCQkgICAgMHgwMDAyMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfTEVEX1BIWTMJCQkgICAgMHgwMDAzMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfTEVEX01BQzIJCQkgICAgMHgwMDA0MDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfTEVEX1BIWTQJCQkgICAgMHgwMDA1MDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfTEVEX1BIWTUJCQkgICAgMHgwMDA2MDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfTEVEX1BIWTYJCQkgICAgMHgwMDA3MDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfTEVEX01BQzMJCQkgICAgMHgwMDA4MDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfTEVEX1BIWTcJCQkgICAgMHgwMDA5MDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfTEVEX1BIWTkJCQkgICAgMHgwMDBhMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfTEVEX1BIWTExIAkJICAgIDB4MDAwYjAwMDAKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX0xFRF9NQUM0CQkJICAgIDB4MDAwYzAwMDAKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX0xFRF9QSFk4CQkJICAgIDB4MDAwZDAwMDAKCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19BTl9FTkFCTEVfTUFTSwkJICAgIDB4M2YwMDAwMDAKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX0FOX0VOQUJMRV9TSElGVAkJICAgIDI0CiNkZWZpbmUgU0hBUkVEX0hXX0NGR19BTl9FTkFCTEVfQ0wzNwkJICAgIDB4MDEwMDAwMDAKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX0FOX0VOQUJMRV9DTDczCQkgICAgMHgwMjAwMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfQU5fRU5BQkxFX0JBTQkJICAgIDB4MDQwMDAwMDAKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX0FOX0VOQUJMRV9QQVJBTExFTF9ERVRFQ1RJT04gIDB4MDgwMDAwMDAKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX0FOX0VOX1NHTUlJX0ZJQkVSX0FVVE9fREVURUNUIDB4MTAwMDAwMDAKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX0FOX0VOQUJMRV9SRU1PVEVfUEhZCSAgICAweDIwMDAwMDAwCgoJdTMyIGNvbmZpZzI7CQkJCQkJLyogMHgxMTggKi8KCS8qIG9uZSB0aW1lIGF1dG8gZGV0ZWN0IGdyYWNlIHBlcmlvZCAoaW4gc2VjKSAqLwojZGVmaW5lIFNIQVJFRF9IV19DRkdfR1JBQ0VfUEVSSU9EX01BU0sgCSAgICAweDAwMDAwMGZmCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19HUkFDRV9QRVJJT0RfU0hJRlQJICAgIDAKCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19QQ0lFX0dFTjJfRU5BQkxFRCAJICAgIDB4MDAwMDAxMDAKCgkvKiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGNvcmUgY2xvY2sgaXMgMjUwTUh6IGFuZCBpdCBpcwoJICAgYWNoaWV2ZWQgYnkgc2V0dGluZyB0aGUgY2xvY2sgY2hhbmdlIHRvIDQgKi8KI2RlZmluZSBTSEFSRURfSFdfQ0ZHX0NMT0NLX0NIQU5HRV9NQVNLIAkgICAgMHgwMDAwMGUwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfQ0xPQ0tfQ0hBTkdFX1NISUZUCSAgICA5CgojZGVmaW5lIFNIQVJFRF9IV19DRkdfU01CVVNfVElNSU5HXzEwMEtIWgkgICAgMHgwMDAwMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfU01CVVNfVElNSU5HXzQwMEtIWgkgICAgMHgwMDAwMTAwMAoKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX0hJREVfUE9SVDEJCSAgICAweDAwMDAyMDAwCgojZGVmaW5lIFNIQVJFRF9IV19DRkdfV09MX0NBUEFCTEVfRElTQUJMRUQJICAgIDB4MDAwMDAwMDAKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX1dPTF9DQVBBQkxFX0VOQUJMRUQJICAgIDB4MDAwMDQwMDAKCgkvKiBPdXRwdXQgbG93IHdoZW4gUEVSU1QgaXMgYXNzZXJ0ZWQgKi8KI2RlZmluZSBTSEFSRURfSFdfQ0ZHX1NQSU80X0ZPTExPV19QRVJTVF9ESVNBQkxFRCAgIDB4MDAwMDAwMDAKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX1NQSU80X0ZPTExPV19QRVJTVF9FTkFCTEVEICAgIDB4MDAwMDgwMDAKCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19QQ0lFX0dFTjJfUFJFRU1QSEFTSVNfTUFTSyAgICAweDAwMDcwMDAwCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19QQ0lFX0dFTjJfUFJFRU1QSEFTSVNfU0hJRlQgICAxNgojZGVmaW5lIFNIQVJFRF9IV19DRkdfUENJRV9HRU4yX1BSRUVNUEhBU0lTX0hXCSAgICAweDAwMDAwMDAwCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19QQ0lFX0dFTjJfUFJFRU1QSEFTSVNfMERCICAgICAweDAwMDEwMDAwIC8qICAgIDBkQiAqLwojZGVmaW5lIFNIQVJFRF9IV19DRkdfUENJRV9HRU4yX1BSRUVNUEhBU0lTXzNfNURCICAgMHgwMDAyMDAwMCAvKiAtMy41ZEIgKi8KI2RlZmluZSBTSEFSRURfSFdfQ0ZHX1BDSUVfR0VOMl9QUkVFTVBIQVNJU182XzBEQiAgIDB4MDAwMzAwMDAgLyogLTYuMGRCICovCgoJLyogIFRoZSBmYW4gZmFpbHVyZSBtZWNoYW5pc20gaXMgdXN1YWxseSByZWxhdGVkIHRvIHRoZSBQSFkgdHlwZQoJICBzaW5jZSB0aGUgcG93ZXIgY29uc3VtcHRpb24gb2YgdGhlIGJvYXJkIGlzIGRldGVybWluZWQgYnkgdGhlIFBIWS4KCSAgQ3VycmVudGx5LCBmYW4gaXMgcmVxdWlyZWQgZm9yIG1vc3QgZGVzaWducyB3aXRoIFNGWDcxMDEsIEJDTTg3MjcKCSAgYW5kIEJDTTg0ODEuIElmIGEgZmFuIGlzIG5vdCByZXF1aXJlZCBmb3IgYSBib2FyZCB3aGljaCB1c2VzIG9uZQoJICBvZiB0aG9zZSBQSFlzLCB0aGlzIGZpZWxkIHNob3VsZCBiZSBzZXQgdG8gIkRpc2FibGVkIi4gSWYgYSBmYW4gaXMKCSAgcmVxdWlyZWQgZm9yIGEgZGlmZmVyZW50IFBIWSB0eXBlLCB0aGlzIG9wdGlvbiBzaG91bGQgYmUgc2V0IHRvCgkgICJFbmFibGVkIi4KCSAgVGhlIGZhbiBmYWlsdXJlIGluZGljYXRpb24gaXMgZXhwZWN0ZWQgb24KCSAgU1BJTzUgKi8KI2RlZmluZSBTSEFSRURfSFdfQ0ZHX0ZBTl9GQUlMVVJFX01BU0sJCQkgICAgICAweDAwMTgwMDAwCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19GQU5fRkFJTFVSRV9TSElGVCAJCSAgICAgIDE5CiNkZWZpbmUgU0hBUkVEX0hXX0NGR19GQU5fRkFJTFVSRV9QSFlfVFlQRQkJICAgICAgMHgwMDAwMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfRkFOX0ZBSUxVUkVfRElTQUJMRUQJCSAgICAgIDB4MDAwODAwMDAKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX0ZBTl9GQUlMVVJFX0VOQUJMRUQJCSAgICAgIDB4MDAxMDAwMDAKCgkvKiAgQVNQTSBQb3dlciBNYW5hZ2VtZW50IHN1cHBvcnQgKi8KI2RlZmluZSBTSEFSRURfSFdfQ0ZHX0FTUE1fU1VQUE9SVF9NQVNLIAkJICAgICAgMHgwMDYwMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfQVNQTV9TVVBQT1JUX1NISUZUCQkgICAgICAyMQojZGVmaW5lIFNIQVJFRF9IV19DRkdfQVNQTV9TVVBQT1JUX0wwU19MMV9FTkFCTEVECSAgICAgIDB4MDAwMDAwMDAKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX0FTUE1fU1VQUE9SVF9MMFNfRElTQUJMRUQgCSAgICAgIDB4MDAyMDAwMDAKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX0FTUE1fU1VQUE9SVF9MMV9ESVNBQkxFRAkJICAgICAgMHgwMDQwMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfQVNQTV9TVVBQT1JUX0wwU19MMV9ESVNBQkxFRAkgICAgICAweDAwNjAwMDAwCgoJLyogIFRoZSB2YWx1ZSBvZiBQTV9UTF9JR05PUkVfUkVRUyAoYml0MCkgaW4gUENJIHJlZ2lzdGVyCgkgIHRsX2NvbnRyb2xfMCAocmVnaXN0ZXIgMHgyODAwKSAqLwojZGVmaW5lIFNIQVJFRF9IV19DRkdfUFJFVkVOVF9MMV9FTlRSWV9ESVNBQkxFRCAJICAgICAgMHgwMDAwMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfUFJFVkVOVF9MMV9FTlRSWV9FTkFCTEVECQkgICAgICAweDAwODAwMDAwCgoKCXUzMiBwb3dlcl9kaXNzaXBhdGVkOwkJCQkJLyogMHgxMWMgKi8KI2RlZmluZSBTSEFSRURfSFdfQ0ZHX1BPV0VSX0RJU19DTU5fTUFTSwkgICAgMHhmZjAwMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfUE9XRVJfRElTX0NNTl9TSElGVAkgICAgMjQKCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19QT1dFUl9NR05UX1NDQUxFX01BU0sJICAgIDB4MDBmZjAwMDAKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX1BPV0VSX01HTlRfU0NBTEVfU0hJRlQJICAgIDE2CiNkZWZpbmUgU0hBUkVEX0hXX0NGR19QT1dFUl9NR05UX1VOS05PV05fU0NBTEUJICAgIDB4MDAwMDAwMDAKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX1BPV0VSX01HTlRfRE9UXzFfV0FUVAkgICAgMHgwMDAxMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfUE9XRVJfTUdOVF9ET1RfMDFfV0FUVAkgICAgMHgwMDAyMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfUE9XRVJfTUdOVF9ET1RfMDAxX1dBVFQJICAgIDB4MDAwMzAwMDAKCgl1MzIgdW1wX25jX3NpX2NvbmZpZzsJCQkJCS8qIDB4MTIwICovCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19VTVBfTkNfU0lfTUlJX01PREVfTUFTSwkgICAgMHgwMDAwMDAwMwojZGVmaW5lIFNIQVJFRF9IV19DRkdfVU1QX05DX1NJX01JSV9NT0RFX1NISUZUCSAgICAwCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19VTVBfTkNfU0lfTUlJX01PREVfTUFDCSAgICAweDAwMDAwMDAwCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19VTVBfTkNfU0lfTUlJX01PREVfUEhZCSAgICAweDAwMDAwMDAxCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19VTVBfTkNfU0lfTUlJX01PREVfTUlJCSAgICAweDAwMDAwMDAwCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19VTVBfTkNfU0lfTUlJX01PREVfUk1JSQkgICAgMHgwMDAwMDAwMgoKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX1VNUF9OQ19TSV9OVU1fREVWU19NQVNLCSAgICAweDAwMDAwZjAwCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19VTVBfTkNfU0lfTlVNX0RFVlNfU0hJRlQJICAgIDgKCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19VTVBfTkNfU0lfRVhUX1BIWV9UWVBFX01BU0sgICAweDAwZmYwMDAwCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19VTVBfTkNfU0lfRVhUX1BIWV9UWVBFX1NISUZUICAxNgojZGVmaW5lIFNIQVJFRF9IV19DRkdfVU1QX05DX1NJX0VYVF9QSFlfVFlQRV9OT05FICAgMHgwMDAwMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfVU1QX05DX1NJX0VYVF9QSFlfVFlQRV9CQ001MjIxIDB4MDAwMTAwMDAKCgl1MzIgYm9hcmQ7CQkJCQkJLyogMHgxMjQgKi8KI2RlZmluZSBTSEFSRURfSFdfQ0ZHX0JPQVJEX1JFVl9NQVNLCQkgICAgMHgwMGZmMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfQk9BUkRfUkVWX1NISUZUCQkgICAgMTYKCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19CT0FSRF9NQUpPUl9WRVJfTUFTSwkgICAgMHgwZjAwMDAwMAojZGVmaW5lIFNIQVJFRF9IV19DRkdfQk9BUkRfTUFKT1JfVkVSX1NISUZUCSAgICAyNAoKI2RlZmluZSBTSEFSRURfSFdfQ0ZHX0JPQVJEX01JTk9SX1ZFUl9NQVNLCSAgICAweGYwMDAwMDAwCiNkZWZpbmUgU0hBUkVEX0hXX0NGR19CT0FSRF9NSU5PUl9WRVJfU0hJRlQJICAgIDI4CgoJdTMyIHJlc2VydmVkOwkJCQkJCS8qIDB4MTI4ICovCgp9OwoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIFBvcnQgSFcgY29uZmlndXJhdGlvbgkJCQkJCSAgICAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpzdHJ1Y3QgcG9ydF9od19jZmcgewkJCSAgICAvKiBwb3J0IDA6IDB4MTJjICBwb3J0IDE6IDB4MmJjICovCgoJdTMyIHBjaV9pZDsKI2RlZmluZSBQT1JUX0hXX0NGR19QQ0lfVkVORE9SX0lEX01BU0sJCSAgICAweGZmZmYwMDAwCiNkZWZpbmUgUE9SVF9IV19DRkdfUENJX0RFVklDRV9JRF9NQVNLCQkgICAgMHgwMDAwZmZmZgoKCXUzMiBwY2lfc3ViX2lkOwojZGVmaW5lIFBPUlRfSFdfQ0ZHX1BDSV9TVUJTWVNfREVWSUNFX0lEX01BU0sJICAgIDB4ZmZmZjAwMDAKI2RlZmluZSBQT1JUX0hXX0NGR19QQ0lfU1VCU1lTX1ZFTkRPUl9JRF9NQVNLCSAgICAweDAwMDBmZmZmCgoJdTMyIHBvd2VyX2Rpc3NpcGF0ZWQ7CiNkZWZpbmUgUE9SVF9IV19DRkdfUE9XRVJfRElTX0QzX01BU0sJCSAgICAweGZmMDAwMDAwCiNkZWZpbmUgUE9SVF9IV19DRkdfUE9XRVJfRElTX0QzX1NISUZUCQkgICAgMjQKI2RlZmluZSBQT1JUX0hXX0NGR19QT1dFUl9ESVNfRDJfTUFTSwkJICAgIDB4MDBmZjAwMDAKI2RlZmluZSBQT1JUX0hXX0NGR19QT1dFUl9ESVNfRDJfU0hJRlQJCSAgICAxNgojZGVmaW5lIFBPUlRfSFdfQ0ZHX1BPV0VSX0RJU19EMV9NQVNLCQkgICAgMHgwMDAwZmYwMAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1BPV0VSX0RJU19EMV9TSElGVAkJICAgIDgKI2RlZmluZSBQT1JUX0hXX0NGR19QT1dFUl9ESVNfRDBfTUFTSwkJICAgIDB4MDAwMDAwZmYKI2RlZmluZSBQT1JUX0hXX0NGR19QT1dFUl9ESVNfRDBfU0hJRlQJCSAgICAwCgoJdTMyIHBvd2VyX2NvbnN1bWVkOwojZGVmaW5lIFBPUlRfSFdfQ0ZHX1BPV0VSX0NPTlNfRDNfTUFTSwkJICAgIDB4ZmYwMDAwMDAKI2RlZmluZSBQT1JUX0hXX0NGR19QT1dFUl9DT05TX0QzX1NISUZUIAkgICAgMjQKI2RlZmluZSBQT1JUX0hXX0NGR19QT1dFUl9DT05TX0QyX01BU0sJCSAgICAweDAwZmYwMDAwCiNkZWZpbmUgUE9SVF9IV19DRkdfUE9XRVJfQ09OU19EMl9TSElGVCAJICAgIDE2CiNkZWZpbmUgUE9SVF9IV19DRkdfUE9XRVJfQ09OU19EMV9NQVNLCQkgICAgMHgwMDAwZmYwMAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1BPV0VSX0NPTlNfRDFfU0hJRlQgCSAgICA4CiNkZWZpbmUgUE9SVF9IV19DRkdfUE9XRVJfQ09OU19EMF9NQVNLCQkgICAgMHgwMDAwMDBmZgojZGVmaW5lIFBPUlRfSFdfQ0ZHX1BPV0VSX0NPTlNfRDBfU0hJRlQgCSAgICAwCgoJdTMyIG1hY191cHBlcjsKI2RlZmluZSBQT1JUX0hXX0NGR19VUFBFUk1BQ19NQVNLCQkgICAgMHgwMDAwZmZmZgojZGVmaW5lIFBPUlRfSFdfQ0ZHX1VQUEVSTUFDX1NISUZUCQkgICAgMAoJdTMyIG1hY19sb3dlcjsKCgl1MzIgaXNjc2lfbWFjX3VwcGVyOyAgLyogVXBwZXIgMTYgYml0cyBhcmUgYWx3YXlzIHplcm9lcyAqLwoJdTMyIGlzY3NpX21hY19sb3dlcjsKCgl1MzIgcmRtYV9tYWNfdXBwZXI7ICAgLyogVXBwZXIgMTYgYml0cyBhcmUgYWx3YXlzIHplcm9lcyAqLwoJdTMyIHJkbWFfbWFjX2xvd2VyOwoKCXUzMiBzZXJkZXNfY29uZmlnOwojZGVmaW5lIFBPUlRfSFdfQ0ZHX1NFUkRFU19UWF9EUlZfUFJFX0VNUEhBU0lTX01BU0sgMHgwMDAwZmZmZgojZGVmaW5lIFBPUlRfSFdfQ0ZHX1NFUkRFU19UWF9EUlZfUFJFX0VNUEhBU0lTX1NISUZUICAwCgojZGVmaW5lIFBPUlRfSFdfQ0ZHX1NFUkRFU19SWF9EUlZfRVFVQUxJWkVSX01BU0sgICAgMHhmZmZmMDAwMAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1NFUkRFU19SWF9EUlZfRVFVQUxJWkVSX1NISUZUICAgMTYKCgoJdTMyIHJlc2VydmVkMFsxNl07CQkJCQkvKiAweDE1OCAqLwoKCS8qICA0IHRpbWVzIDE2IGJpdHMgZm9yIGFsbCA0IGxhbmVzLiBJbiBjYXNlIGV4dGVybmFsIFBIWSBpcyBwcmVzZW50CgkgIChub3QgZGlyZWN0IG1vZGUpLCB0aG9zZSB2YWx1ZXMgd2lsbCBub3QgdGFrZSBlZmZlY3Qgb24gdGhlIDQgWEdYUwoJICBsYW5lcy4gRm9yIHNvbWUgZXh0ZXJuYWwgUEhZcyAoc3VjaCBhcyA4NzA2IGFuZCA4NzI2KSB0aGUgdmFsdWVzCgkgIHdpbGwgYmUgdXNlZCB0byBjb25maWd1cmUgdGhlIGV4dGVybmFsIFBIWSCWIGluIHRob3NlIGNhc2VzLCBub3QKCSAgYWxsIDQgdmFsdWVzIGFyZSBuZWVkZWQuICovCgl1MTYgeGd4c19jb25maWdfcnhbNF07CQkJCQkvKiAweDE5OCAqLwoJdTE2IHhneHNfY29uZmlnX3R4WzRdOwkJCQkJLyogMHgxQTAgKi8KCgl1MzIgcmVzZXJ2ZWQxWzY0XTsJCQkJCS8qIDB4MUE4ICovCgoJdTMyIGxhbmVfY29uZmlnOwojZGVmaW5lIFBPUlRfSFdfQ0ZHX0xBTkVfU1dBUF9DRkdfTUFTSwkJICAgIDB4MDAwMGZmZmYKI2RlZmluZSBQT1JUX0hXX0NGR19MQU5FX1NXQVBfQ0ZHX1NISUZUIAkgICAgMAojZGVmaW5lIFBPUlRfSFdfQ0ZHX0xBTkVfU1dBUF9DRkdfVFhfTUFTSwkgICAgMHgwMDAwMDBmZgojZGVmaW5lIFBPUlRfSFdfQ0ZHX0xBTkVfU1dBUF9DRkdfVFhfU0hJRlQJICAgIDAKI2RlZmluZSBQT1JUX0hXX0NGR19MQU5FX1NXQVBfQ0ZHX1JYX01BU0sJICAgIDB4MDAwMGZmMDAKI2RlZmluZSBQT1JUX0hXX0NGR19MQU5FX1NXQVBfQ0ZHX1JYX1NISUZUCSAgICA4CiNkZWZpbmUgUE9SVF9IV19DRkdfTEFORV9TV0FQX0NGR19NQVNURVJfTUFTSwkgICAgMHgwMDAwYzAwMAojZGVmaW5lIFBPUlRfSFdfQ0ZHX0xBTkVfU1dBUF9DRkdfTUFTVEVSX1NISUZUCSAgICAxNAoJLyogQU4gYW5kIGZvcmNlZCAqLwojZGVmaW5lIFBPUlRfSFdfQ0ZHX0xBTkVfU1dBUF9DRkdfMDEyMzAxMjMJICAgIDB4MDAwMDFiMWIKCS8qIGZvcmNlZCBvbmx5ICovCiNkZWZpbmUgUE9SVF9IV19DRkdfTEFORV9TV0FQX0NGR18wMTIzMzIxMAkgICAgMHgwMDAwMWJlNAoJLyogZm9yY2VkIG9ubHkgKi8KI2RlZmluZSBQT1JUX0hXX0NGR19MQU5FX1NXQVBfQ0ZHXzMxMjAzMTIwCSAgICAweDAwMDBkOGQ4CgkvKiBmb3JjZWQgb25seSAqLwojZGVmaW5lIFBPUlRfSFdfQ0ZHX0xBTkVfU1dBUF9DRkdfMzIxMDMyMTAJICAgIDB4MDAwMGU0ZTQKCgl1MzIgZXh0ZXJuYWxfcGh5X2NvbmZpZzsKI2RlZmluZSBQT1JUX0hXX0NGR19TRVJERVNfRVhUX1BIWV9UWVBFX01BU0sJICAgIDB4ZmYwMDAwMDAKI2RlZmluZSBQT1JUX0hXX0NGR19TRVJERVNfRVhUX1BIWV9UWVBFX1NISUZUCSAgICAyNAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1NFUkRFU19FWFRfUEhZX1RZUEVfRElSRUNUCSAgICAweDAwMDAwMDAwCiNkZWZpbmUgUE9SVF9IV19DRkdfU0VSREVTX0VYVF9QSFlfVFlQRV9CQ001NDgyICAgICAweDAxMDAwMDAwCiNkZWZpbmUgUE9SVF9IV19DRkdfU0VSREVTX0VYVF9QSFlfVFlQRV9OT1RfQ09OTiAgICAweGZmMDAwMDAwCgojZGVmaW5lIFBPUlRfSFdfQ0ZHX1NFUkRFU19FWFRfUEhZX0FERFJfTUFTSwkgICAgMHgwMGZmMDAwMAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1NFUkRFU19FWFRfUEhZX0FERFJfU0hJRlQJICAgIDE2CgojZGVmaW5lIFBPUlRfSFdfQ0ZHX1hHWFNfRVhUX1BIWV9UWVBFX01BU0sJICAgIDB4MDAwMGZmMDAKI2RlZmluZSBQT1JUX0hXX0NGR19YR1hTX0VYVF9QSFlfVFlQRV9TSElGVAkgICAgOAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1hHWFNfRVhUX1BIWV9UWVBFX0RJUkVDVAkgICAgMHgwMDAwMDAwMAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1hHWFNfRVhUX1BIWV9UWVBFX0JDTTgwNzEJICAgIDB4MDAwMDAxMDAKI2RlZmluZSBQT1JUX0hXX0NGR19YR1hTX0VYVF9QSFlfVFlQRV9CQ004MDcyCSAgICAweDAwMDAwMjAwCiNkZWZpbmUgUE9SVF9IV19DRkdfWEdYU19FWFRfUEhZX1RZUEVfQkNNODA3MwkgICAgMHgwMDAwMDMwMAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1hHWFNfRVhUX1BIWV9UWVBFX0JDTTg3MDUJICAgIDB4MDAwMDA0MDAKI2RlZmluZSBQT1JUX0hXX0NGR19YR1hTX0VYVF9QSFlfVFlQRV9CQ004NzA2CSAgICAweDAwMDAwNTAwCiNkZWZpbmUgUE9SVF9IV19DRkdfWEdYU19FWFRfUEhZX1RZUEVfQkNNODcyNgkgICAgMHgwMDAwMDYwMAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1hHWFNfRVhUX1BIWV9UWVBFX0JDTTg0ODEJICAgIDB4MDAwMDA3MDAKI2RlZmluZSBQT1JUX0hXX0NGR19YR1hTX0VYVF9QSFlfVFlQRV9TRlg3MTAxCSAgICAweDAwMDAwODAwCiNkZWZpbmUgUE9SVF9IV19DRkdfWEdYU19FWFRfUEhZX1RZUEVfQkNNODcyNwkgICAgMHgwMDAwMDkwMAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1hHWFNfRVhUX1BIWV9UWVBFX0JDTTg3MjdfTk9DICAgMHgwMDAwMGEwMAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1hHWFNfRVhUX1BIWV9UWVBFX0JDTTg0ODIzCSAgICAweDAwMDAwYjAwCiNkZWZpbmUgUE9SVF9IV19DRkdfWEdYU19FWFRfUEhZX1RZUEVfRkFJTFVSRQkgICAgMHgwMDAwZmQwMAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1hHWFNfRVhUX1BIWV9UWVBFX05PVF9DT05OCSAgICAweDAwMDBmZjAwCgojZGVmaW5lIFBPUlRfSFdfQ0ZHX1hHWFNfRVhUX1BIWV9BRERSX01BU0sJICAgIDB4MDAwMDAwZmYKI2RlZmluZSBQT1JUX0hXX0NGR19YR1hTX0VYVF9QSFlfQUREUl9TSElGVAkgICAgMAoKCXUzMiBzcGVlZF9jYXBhYmlsaXR5X21hc2s7CiNkZWZpbmUgUE9SVF9IV19DRkdfU1BFRURfQ0FQQUJJTElUWV9EMF9NQVNLCSAgICAweGZmZmYwMDAwCiNkZWZpbmUgUE9SVF9IV19DRkdfU1BFRURfQ0FQQUJJTElUWV9EMF9TSElGVAkgICAgMTYKI2RlZmluZSBQT1JUX0hXX0NGR19TUEVFRF9DQVBBQklMSVRZX0QwXzEwTV9GVUxMICAgIDB4MDAwMTAwMDAKI2RlZmluZSBQT1JUX0hXX0NGR19TUEVFRF9DQVBBQklMSVRZX0QwXzEwTV9IQUxGICAgIDB4MDAwMjAwMDAKI2RlZmluZSBQT1JUX0hXX0NGR19TUEVFRF9DQVBBQklMSVRZX0QwXzEwME1fSEFMRiAgIDB4MDAwNDAwMDAKI2RlZmluZSBQT1JUX0hXX0NGR19TUEVFRF9DQVBBQklMSVRZX0QwXzEwME1fRlVMTCAgIDB4MDAwODAwMDAKI2RlZmluZSBQT1JUX0hXX0NGR19TUEVFRF9DQVBBQklMSVRZX0QwXzFHCSAgICAweDAwMTAwMDAwCiNkZWZpbmUgUE9SVF9IV19DRkdfU1BFRURfQ0FQQUJJTElUWV9EMF8yXzVHCSAgICAweDAwMjAwMDAwCiNkZWZpbmUgUE9SVF9IV19DRkdfU1BFRURfQ0FQQUJJTElUWV9EMF8xMEcJICAgIDB4MDA0MDAwMDAKI2RlZmluZSBQT1JUX0hXX0NGR19TUEVFRF9DQVBBQklMSVRZX0QwXzEyRwkgICAgMHgwMDgwMDAwMAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1NQRUVEX0NBUEFCSUxJVFlfRDBfMTJfNUcJICAgIDB4MDEwMDAwMDAKI2RlZmluZSBQT1JUX0hXX0NGR19TUEVFRF9DQVBBQklMSVRZX0QwXzEzRwkgICAgMHgwMjAwMDAwMAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1NQRUVEX0NBUEFCSUxJVFlfRDBfMTVHCSAgICAweDA0MDAwMDAwCiNkZWZpbmUgUE9SVF9IV19DRkdfU1BFRURfQ0FQQUJJTElUWV9EMF8xNkcJICAgIDB4MDgwMDAwMDAKI2RlZmluZSBQT1JUX0hXX0NGR19TUEVFRF9DQVBBQklMSVRZX0QwX1JFU0VSVkVEICAgIDB4ZjAwMDAwMDAKCiNkZWZpbmUgUE9SVF9IV19DRkdfU1BFRURfQ0FQQUJJTElUWV9EM19NQVNLCSAgICAweDAwMDBmZmZmCiNkZWZpbmUgUE9SVF9IV19DRkdfU1BFRURfQ0FQQUJJTElUWV9EM19TSElGVAkgICAgMAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1NQRUVEX0NBUEFCSUxJVFlfRDNfMTBNX0ZVTEwgICAgMHgwMDAwMDAwMQojZGVmaW5lIFBPUlRfSFdfQ0ZHX1NQRUVEX0NBUEFCSUxJVFlfRDNfMTBNX0hBTEYgICAgMHgwMDAwMDAwMgojZGVmaW5lIFBPUlRfSFdfQ0ZHX1NQRUVEX0NBUEFCSUxJVFlfRDNfMTAwTV9IQUxGICAgMHgwMDAwMDAwNAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1NQRUVEX0NBUEFCSUxJVFlfRDNfMTAwTV9GVUxMICAgMHgwMDAwMDAwOAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1NQRUVEX0NBUEFCSUxJVFlfRDNfMUcJICAgIDB4MDAwMDAwMTAKI2RlZmluZSBQT1JUX0hXX0NGR19TUEVFRF9DQVBBQklMSVRZX0QzXzJfNUcJICAgIDB4MDAwMDAwMjAKI2RlZmluZSBQT1JUX0hXX0NGR19TUEVFRF9DQVBBQklMSVRZX0QzXzEwRwkgICAgMHgwMDAwMDA0MAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1NQRUVEX0NBUEFCSUxJVFlfRDNfMTJHCSAgICAweDAwMDAwMDgwCiNkZWZpbmUgUE9SVF9IV19DRkdfU1BFRURfQ0FQQUJJTElUWV9EM18xMl81RwkgICAgMHgwMDAwMDEwMAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1NQRUVEX0NBUEFCSUxJVFlfRDNfMTNHCSAgICAweDAwMDAwMjAwCiNkZWZpbmUgUE9SVF9IV19DRkdfU1BFRURfQ0FQQUJJTElUWV9EM18xNUcJICAgIDB4MDAwMDA0MDAKI2RlZmluZSBQT1JUX0hXX0NGR19TUEVFRF9DQVBBQklMSVRZX0QzXzE2RwkgICAgMHgwMDAwMDgwMAojZGVmaW5lIFBPUlRfSFdfQ0ZHX1NQRUVEX0NBUEFCSUxJVFlfRDNfUkVTRVJWRUQgICAgMHgwMDAwZjAwMAoKCS8qICBBIHBsYWNlIHRvIGhvbGQgdGhlIG9yaWdpbmFsIE1BQyBhZGRyZXNzIGFzIGEgYmFja3VwICovCgl1MzIgYmFja3VwX21hY191cHBlcjsJCQkJCS8qIDB4MkI0ICovCgl1MzIgYmFja3VwX21hY19sb3dlcjsJCQkJCS8qIDB4MkI4ICovCgp9OwoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIFNoYXJlZCBGZWF0dXJlIGNvbmZpZ3VyYXRpb24gCQkJCQkgICAgKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8Kc3RydWN0IHNoYXJlZF9mZWF0X2NmZyB7CQkJCSAvKiBOVlJBTSBPZmZzZXQgKi8KCgl1MzIgY29uZmlnOwkJCQkJICAgIC8qIDB4NDUwICovCiNkZWZpbmUgU0hBUkVEX0ZFQVRVUkVfQk1DX0VDSE9fTU9ERV9FTiAJICAgIDB4MDAwMDAwMDEKCgkvKiAgVXNlIHRoZSB2YWx1ZXMgZnJvbSBvcHRpb25zIDQ3IGFuZCA0OCBpbnN0ZWFkIG9mIHRoZSBIVyBkZWZhdWx0CgkgIHZhbHVlcyAqLwojZGVmaW5lIFNIQVJFRF9GRUFUX0NGR19PVkVSUklERV9QUkVFTVBIQVNJU19DRkdfRElTQUJMRUQgICAgIDB4MDAwMDAwMDAKI2RlZmluZSBTSEFSRURfRkVBVF9DRkdfT1ZFUlJJREVfUFJFRU1QSEFTSVNfQ0ZHX0VOQUJMRUQgICAgICAweDAwMDAwMDAyCgojZGVmaW5lIFNIQVJFRF9GRUFUX0NGR19OQ1NJX0lEX01FVEhPRF9TUElPCQkgICAgICAweDAwMDAwMDAwCiNkZWZpbmUgU0hBUkVEX0ZFQVRfQ0ZHX05DU0lfSURfTUVUSE9EX05WUkFNCQkgICAgICAweDAwMDAwMDA4CgojZGVmaW5lIFNIQVJFRF9GRUFUX0NGR19OQ1NJX0lEX01BU0sJCQkgICAgICAweDAwMDAwMDMwCiNkZWZpbmUgU0hBUkVEX0ZFQVRfQ0ZHX05DU0lfSURfU0hJRlQJCQkgICAgICA0CgoJLyogIE92ZXJyaWRlIHRoZSBPVFAgYmFjayB0byBzaW5nbGUgZnVuY3Rpb24gbW9kZS4gV2hlbiB1c2luZyBHUElPLAoJICBoaWdoIG1lYW5zIG9ubHkgU0YsIDAgaXMgYWNjb3JkaW5nIHRvIENMUCBjb25maWd1cmF0aW9uICovCiNkZWZpbmUgU0hBUkVEX0ZFQVRfQ0ZHX0ZPUkNFX1NGX01PREVfTUFTSwkJICAgICAgMHgwMDAwMDcwMAojZGVmaW5lIFNIQVJFRF9GRUFUX0NGR19GT1JDRV9TRl9NT0RFX1NISUZUCQkgICAgICA4CiNkZWZpbmUgU0hBUkVEX0ZFQVRfQ0ZHX0ZPUkNFX1NGX01PREVfTUZfQUxMT1dFRAkgICAgICAweDAwMDAwMDAwCiNkZWZpbmUgU0hBUkVEX0ZFQVRfQ0ZHX0ZPUkNFX1NGX01PREVfRk9SQ0VEX1NGIAkgICAgICAweDAwMDAwMTAwCiNkZWZpbmUgU0hBUkVEX0ZFQVRfQ0ZHX0ZPUkNFX1NGX01PREVfU1BJTzQJCSAgICAgIDB4MDAwMDAyMDAKCgkvKiAgVGhlIGludGVydmFsIGluIHNlY29uZHMgYmV0d2VlbiBzZW5kaW5nIExMRFAgcGFja2V0cy4gU2V0IHRvIHplcm8KCSAgdG8gZGlzYWJsZSB0aGUgZmVhdHVyZSAqLwojZGVmaW5lIFNIQVJFRF9GRUFUX0NGR19MTERQX1hNSVRfSU5URVJWQUxfTUFTSyAJICAgICAgMHgwMEZGMDAwMAojZGVmaW5lIFNIQVJFRF9GRUFUX0NGR19MTERQX1hNSVRfSU5URVJWQUxfU0hJRlQJICAgICAgMTYKCgkvKiAgVGhlIGFzc2lnbmVkIGRldmljZSB0eXBlIElEIGZvciBMTERQIHVzYWdlICovCiNkZWZpbmUgU0hBUkVEX0ZFQVRfQ0ZHX0xMRFBfREVWSUNFX1RZUEVfSURfTUFTSwkgICAgICAweEZGMDAwMDAwCiNkZWZpbmUgU0hBUkVEX0ZFQVRfQ0ZHX0xMRFBfREVWSUNFX1RZUEVfSURfU0hJRlQJICAgICAgMjQKCn07CgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogUG9ydCBGZWF0dXJlIGNvbmZpZ3VyYXRpb24JCQkJCQkgICAgKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8Kc3RydWN0IHBvcnRfZmVhdF9jZmcgewkJCSAgICAvKiBwb3J0IDA6IDB4NDU0ICBwb3J0IDE6IDB4NGM4ICovCgoJdTMyIGNvbmZpZzsKI2RlZmluZSBQT1JUX0ZFQVRVUkVfQkFSMV9TSVpFX01BU0sJCSAgICAweDAwMDAwMDBmCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0JBUjFfU0laRV9TSElGVAkJICAgIDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfQkFSMV9TSVpFX0RJU0FCTEVEIAkgICAgMHgwMDAwMDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9CQVIxX1NJWkVfNjRLCQkgICAgMHgwMDAwMDAwMQojZGVmaW5lIFBPUlRfRkVBVFVSRV9CQVIxX1NJWkVfMTI4SwkJICAgIDB4MDAwMDAwMDIKI2RlZmluZSBQT1JUX0ZFQVRVUkVfQkFSMV9TSVpFXzI1NksJCSAgICAweDAwMDAwMDAzCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0JBUjFfU0laRV81MTJLCQkgICAgMHgwMDAwMDAwNAojZGVmaW5lIFBPUlRfRkVBVFVSRV9CQVIxX1NJWkVfMU0JCSAgICAweDAwMDAwMDA1CiNkZWZpbmUgUE9SVF9GRUFUVVJFX0JBUjFfU0laRV8yTQkJICAgIDB4MDAwMDAwMDYKI2RlZmluZSBQT1JUX0ZFQVRVUkVfQkFSMV9TSVpFXzRNCQkgICAgMHgwMDAwMDAwNwojZGVmaW5lIFBPUlRfRkVBVFVSRV9CQVIxX1NJWkVfOE0JCSAgICAweDAwMDAwMDA4CiNkZWZpbmUgUE9SVF9GRUFUVVJFX0JBUjFfU0laRV8xNk0JCSAgICAweDAwMDAwMDA5CiNkZWZpbmUgUE9SVF9GRUFUVVJFX0JBUjFfU0laRV8zMk0JCSAgICAweDAwMDAwMDBhCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0JBUjFfU0laRV82NE0JCSAgICAweDAwMDAwMDBiCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0JBUjFfU0laRV8xMjhNCQkgICAgMHgwMDAwMDAwYwojZGVmaW5lIFBPUlRfRkVBVFVSRV9CQVIxX1NJWkVfMjU2TQkJICAgIDB4MDAwMDAwMGQKI2RlZmluZSBQT1JUX0ZFQVRVUkVfQkFSMV9TSVpFXzUxMk0JCSAgICAweDAwMDAwMDBlCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0JBUjFfU0laRV8xRwkJICAgIDB4MDAwMDAwMGYKI2RlZmluZSBQT1JUX0ZFQVRVUkVfQkFSMl9TSVpFX01BU0sJCSAgICAweDAwMDAwMGYwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0JBUjJfU0laRV9TSElGVAkJICAgIDQKI2RlZmluZSBQT1JUX0ZFQVRVUkVfQkFSMl9TSVpFX0RJU0FCTEVEIAkgICAgMHgwMDAwMDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9CQVIyX1NJWkVfNjRLCQkgICAgMHgwMDAwMDAxMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9CQVIyX1NJWkVfMTI4SwkJICAgIDB4MDAwMDAwMjAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfQkFSMl9TSVpFXzI1NksJCSAgICAweDAwMDAwMDMwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0JBUjJfU0laRV81MTJLCQkgICAgMHgwMDAwMDA0MAojZGVmaW5lIFBPUlRfRkVBVFVSRV9CQVIyX1NJWkVfMU0JCSAgICAweDAwMDAwMDUwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0JBUjJfU0laRV8yTQkJICAgIDB4MDAwMDAwNjAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfQkFSMl9TSVpFXzRNCQkgICAgMHgwMDAwMDA3MAojZGVmaW5lIFBPUlRfRkVBVFVSRV9CQVIyX1NJWkVfOE0JCSAgICAweDAwMDAwMDgwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0JBUjJfU0laRV8xNk0JCSAgICAweDAwMDAwMDkwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0JBUjJfU0laRV8zMk0JCSAgICAweDAwMDAwMGEwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0JBUjJfU0laRV82NE0JCSAgICAweDAwMDAwMGIwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0JBUjJfU0laRV8xMjhNCQkgICAgMHgwMDAwMDBjMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9CQVIyX1NJWkVfMjU2TQkJICAgIDB4MDAwMDAwZDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfQkFSMl9TSVpFXzUxMk0JCSAgICAweDAwMDAwMGUwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0JBUjJfU0laRV8xRwkJICAgIDB4MDAwMDAwZjAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfRU5fU0laRV9NQVNLCQkgICAgMHgwNzAwMDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9FTl9TSVpFX1NISUZUCQkgICAgMjQKI2RlZmluZSBQT1JUX0ZFQVRVUkVfV09MX0VOQUJMRUQJCSAgICAweDAxMDAwMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9FTkFCTEVECQkgICAgMHgwMjAwMDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9NRldfRU5BQkxFRAkJICAgIDB4MDQwMDAwMDAKCgkvKiAgQWR2ZXJ0aXNlIGV4cGFuc2lvbiBST00gZXZlbiBpZiBNQkEgaXMgZGlzYWJsZWQgKi8KI2RlZmluZSBQT1JUX0ZFQVRfQ0ZHX0ZPUkNFX0VYUF9ST01fQURWX0RJU0FCTEVECSAgICAgIDB4MDAwMDAwMDAKI2RlZmluZSBQT1JUX0ZFQVRfQ0ZHX0ZPUkNFX0VYUF9ST01fQURWX0VOQUJMRUQgCSAgICAgIDB4MDgwMDAwMDAKCgkvKiBSZXNlcnZlZCBiaXRzOiAyOC0yOSAqLwoJLyogIENoZWNrIHRoZSBvcHRpYyB2ZW5kb3IgdmlhIGkyYyBhZ2FpbnN0IGEgbGlzdCBvZiBhcHByb3ZlZCBtb2R1bGVzCgkgIGluIGEgc2VwYXJhdGUgbnZyYW0gaW1hZ2UgKi8KI2RlZmluZSBQT1JUX0ZFQVRfQ0ZHX09QVF9NRExfRU5GUkNNTlRfTUFTSwkJICAgICAgMHhFMDAwMDAwMAojZGVmaW5lIFBPUlRfRkVBVF9DRkdfT1BUX01ETF9FTkZSQ01OVF9TSElGVAkJICAgICAgMjkKI2RlZmluZSBQT1JUX0ZFQVRfQ0ZHX09QVF9NRExfRU5GUkNNTlRfTk9fRU5GT1JDRU1FTlQJICAgICAgMHgwMDAwMDAwMAojZGVmaW5lIFBPUlRfRkVBVF9DRkdfT1BUX01ETF9FTkZSQ01OVF9ESVNBQkxFX1RYX0xBU0VSICAgICAgIDB4MjAwMDAwMDAKI2RlZmluZSBQT1JUX0ZFQVRfQ0ZHX09QVF9NRExfRU5GUkNNTlRfV0FSTklOR19NU0cJICAgICAgMHg0MDAwMDAwMAojZGVmaW5lIFBPUlRfRkVBVF9DRkdfT1BUX01ETF9FTkZSQ01OVF9QT1dFUl9ET1dOCSAgICAgIDB4NjAwMDAwMDAKCgoJdTMyIHdvbF9jb25maWc7CgkvKiBEZWZhdWx0IGlzIHVzZWQgd2hlbiBkcml2ZXIgc2V0cyB0byAiYXV0byIgbW9kZSAqLwojZGVmaW5lIFBPUlRfRkVBVFVSRV9XT0xfREVGQVVMVF9NQVNLCQkgICAgMHgwMDAwMDAwMwojZGVmaW5lIFBPUlRfRkVBVFVSRV9XT0xfREVGQVVMVF9TSElGVAkJICAgIDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfV09MX0RFRkFVTFRfRElTQUJMRQkgICAgMHgwMDAwMDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9XT0xfREVGQVVMVF9NQUdJQwkJICAgIDB4MDAwMDAwMDEKI2RlZmluZSBQT1JUX0ZFQVRVUkVfV09MX0RFRkFVTFRfQUNQSQkJICAgIDB4MDAwMDAwMDIKI2RlZmluZSBQT1JUX0ZFQVRVUkVfV09MX0RFRkFVTFRfTUFHSUNfQU5EX0FDUEkgICAgIDB4MDAwMDAwMDMKI2RlZmluZSBQT1JUX0ZFQVRVUkVfV09MX1JFU19QQVVTRV9DQVAJCSAgICAweDAwMDAwMDA0CiNkZWZpbmUgUE9SVF9GRUFUVVJFX1dPTF9SRVNfQVNZTV9QQVVTRV9DQVAJICAgIDB4MDAwMDAwMDgKI2RlZmluZSBQT1JUX0ZFQVRVUkVfV09MX0FDUElfVVBPTl9NR01UIAkgICAgMHgwMDAwMDAxMAoKCXUzMiBtYmFfY29uZmlnOwojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfQk9PVF9BR0VOVF9UWVBFX01BU0sJICAgIDB4MDAwMDAwMDcKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTUJBX0JPT1RfQUdFTlRfVFlQRV9TSElGVAkgICAgMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfQk9PVF9BR0VOVF9UWVBFX1BYRQkgICAgMHgwMDAwMDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfQk9PVF9BR0VOVF9UWVBFX1JQTAkgICAgMHgwMDAwMDAwMQojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfQk9PVF9BR0VOVF9UWVBFX0JPT1RQCSAgICAweDAwMDAwMDAyCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9CT09UX0FHRU5UX1RZUEVfSVNDU0lCICAgICAweDAwMDAwMDAzCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9CT09UX0FHRU5UX1RZUEVfTk9ORQkgICAgMHgwMDAwMDAwNwojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfUkVTX1BBVVNFX0NBUAkJICAgIDB4MDAwMDAxMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTUJBX1JFU19BU1lNX1BBVVNFX0NBUAkgICAgMHgwMDAwMDIwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfU0VUVVBfUFJPTVBUX0VOQUJMRQkgICAgMHgwMDAwMDQwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfSE9US0VZX0NUUkxfUwkJICAgIDB4MDAwMDAwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTUJBX0hPVEtFWV9DVFJMX0IJCSAgICAweDAwMDAwODAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9FWFBfUk9NX1NJWkVfTUFTSwkgICAgMHgwMDBmZjAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfRVhQX1JPTV9TSVpFX1NISUZUCSAgICAxMgojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfRVhQX1JPTV9TSVpFX0RJU0FCTEVECSAgICAweDAwMDAwMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9FWFBfUk9NX1NJWkVfMksJICAgIDB4MDAwMDEwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTUJBX0VYUF9ST01fU0laRV80SwkgICAgMHgwMDAwMjAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfRVhQX1JPTV9TSVpFXzhLCSAgICAweDAwMDAzMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9FWFBfUk9NX1NJWkVfMTZLCSAgICAweDAwMDA0MDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9FWFBfUk9NX1NJWkVfMzJLCSAgICAweDAwMDA1MDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9FWFBfUk9NX1NJWkVfNjRLCSAgICAweDAwMDA2MDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9FWFBfUk9NX1NJWkVfMTI4SwkgICAgMHgwMDAwNzAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfRVhQX1JPTV9TSVpFXzI1NksJICAgIDB4MDAwMDgwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTUJBX0VYUF9ST01fU0laRV81MTJLCSAgICAweDAwMDA5MDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9FWFBfUk9NX1NJWkVfMU0JICAgIDB4MDAwMGEwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTUJBX0VYUF9ST01fU0laRV8yTQkgICAgMHgwMDAwYjAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfRVhQX1JPTV9TSVpFXzRNCSAgICAweDAwMDBjMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9FWFBfUk9NX1NJWkVfOE0JICAgIDB4MDAwMGQwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTUJBX0VYUF9ST01fU0laRV8xNk0JICAgIDB4MDAwMGUwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTUJBX0VYUF9ST01fU0laRV8zMk0JICAgIDB4MDAwMGYwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTUJBX01TR19USU1FT1VUX01BU0sJICAgIDB4MDBmMDAwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTUJBX01TR19USU1FT1VUX1NISUZUCSAgICAyMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfQklPU19CT09UU1RSQVBfTUFTSwkgICAgMHgwMzAwMDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfQklPU19CT09UU1RSQVBfU0hJRlQJICAgIDI0CiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9CSU9TX0JPT1RTVFJBUF9BVVRPCSAgICAweDAwMDAwMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9CSU9TX0JPT1RTVFJBUF9CQlMJICAgIDB4MDEwMDAwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTUJBX0JJT1NfQk9PVFNUUkFQX0lOVDE4SAkgICAgMHgwMjAwMDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfQklPU19CT09UU1RSQVBfSU5UMTlICSAgICAweDAzMDAwMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9MSU5LX1NQRUVEX01BU0sJICAgIDB4M2MwMDAwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTUJBX0xJTktfU1BFRURfU0hJRlQJICAgIDI2CiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9MSU5LX1NQRUVEX0FVVE8JICAgIDB4MDAwMDAwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTUJBX0xJTktfU1BFRURfMTBIRAkgICAgMHgwNDAwMDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfTElOS19TUEVFRF8xMEZECSAgICAweDA4MDAwMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9MSU5LX1NQRUVEXzEwMEhECSAgICAweDBjMDAwMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9MSU5LX1NQRUVEXzEwMEZECSAgICAweDEwMDAwMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9MSU5LX1NQRUVEXzFHQlBTCSAgICAweDE0MDAwMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9MSU5LX1NQRUVEXzJfNUdCUFMJICAgIDB4MTgwMDAwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTUJBX0xJTktfU1BFRURfMTBHQlBTX0NYNAkgICAgMHgxYzAwMDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfTElOS19TUEVFRF8xMEdCUFNfS1g0CSAgICAweDIwMDAwMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9MSU5LX1NQRUVEXzEwR0JQU19LUgkgICAgMHgyNDAwMDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfTElOS19TUEVFRF8xMkdCUFMJICAgIDB4MjgwMDAwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTUJBX0xJTktfU1BFRURfMTJfNUdCUFMJICAgIDB4MmMwMDAwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTUJBX0xJTktfU1BFRURfMTNHQlBTCSAgICAweDMwMDAwMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9MSU5LX1NQRUVEXzE1R0JQUwkgICAgMHgzNDAwMDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfTElOS19TUEVFRF8xNkdCUFMJICAgIDB4MzgwMDAwMDAKCgl1MzIgYm1jX2NvbmZpZzsKI2RlZmluZSBQT1JUX0ZFQVRVUkVfQk1DX0xJTktfT1ZFUlJJREVfREVGQVVMVAkgICAgMHgwMDAwMDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9CTUNfTElOS19PVkVSUklERV9FTgkgICAgMHgwMDAwMDAwMQoKCXUzMiBtYmFfdmxhbl9jZmc7CiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9WTEFOX1RBR19NQVNLCQkgICAgMHgwMDAwZmZmZgojZGVmaW5lIFBPUlRfRkVBVFVSRV9NQkFfVkxBTl9UQUdfU0hJRlQgCSAgICAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX01CQV9WTEFOX0VOCQkgICAgMHgwMDAxMDAwMAoKCXUzMiByZXNvdXJjZV9jZmc7CiNkZWZpbmUgUE9SVF9GRUFUVVJFX1JFU09VUkNFX0NGR19WQUxJRCAJICAgIDB4MDAwMDAwMDEKI2RlZmluZSBQT1JUX0ZFQVRVUkVfUkVTT1VSQ0VfQ0ZHX0RJQUcJCSAgICAweDAwMDAwMDAyCiNkZWZpbmUgUE9SVF9GRUFUVVJFX1JFU09VUkNFX0NGR19MMgkJICAgIDB4MDAwMDAwMDQKI2RlZmluZSBQT1JUX0ZFQVRVUkVfUkVTT1VSQ0VfQ0ZHX0lTQ1NJIAkgICAgMHgwMDAwMDAwOAojZGVmaW5lIFBPUlRfRkVBVFVSRV9SRVNPVVJDRV9DRkdfUkRNQQkJICAgIDB4MDAwMDAwMTAKCgl1MzIgc21idXNfY29uZmlnOwoJLyogT2Jzb2xldGUgKi8KI2RlZmluZSBQT1JUX0ZFQVRVUkVfU01CVVNfRU4JCQkgICAgMHgwMDAwMDAwMQojZGVmaW5lIFBPUlRfRkVBVFVSRV9TTUJVU19BRERSX01BU0sJCSAgICAweDAwMDAwMGZlCiNkZWZpbmUgUE9SVF9GRUFUVVJFX1NNQlVTX0FERFJfU0hJRlQJCSAgICAxCgoJdTMyIHJlc2VydmVkMTsKCgl1MzIgbGlua19jb25maWc7ICAgIC8qIFVzZWQgYXMgSFcgZGVmYXVsdHMgZm9yIHRoZSBkcml2ZXIgKi8KI2RlZmluZSBQT1JUX0ZFQVRVUkVfQ09OTkVDVEVEX1NXSVRDSF9NQVNLCSAgICAweDAzMDAwMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0NPTk5FQ1RFRF9TV0lUQ0hfU0hJRlQJICAgIDI0CgkvKiAoZm9yY2VkKSBsb3cgc3BlZWQgc3dpdGNoICg8IDEwRykgKi8KI2RlZmluZSBQT1JUX0ZFQVRVUkVfQ09OX1NXSVRDSF8xR19TV0lUQ0gJICAgIDB4MDAwMDAwMDAKCS8qIChmb3JjZWQpIGhpZ2ggc3BlZWQgc3dpdGNoICg+PSAxMEcpICovCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0NPTl9TV0lUQ0hfMTBHX1NXSVRDSAkgICAgMHgwMTAwMDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9DT05fU1dJVENIX0FVVE9fREVURUNUCSAgICAweDAyMDAwMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0NPTl9TV0lUQ0hfT05FX1RJTUVfREVURUNUICAgICAweDAzMDAwMDAwCgojZGVmaW5lIFBPUlRfRkVBVFVSRV9MSU5LX1NQRUVEX01BU0sJCSAgICAweDAwMGYwMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0xJTktfU1BFRURfU0hJRlQJCSAgICAxNgojZGVmaW5lIFBPUlRfRkVBVFVSRV9MSU5LX1NQRUVEX0FVVE8JCSAgICAweDAwMDAwMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0xJTktfU1BFRURfMTBNX0ZVTEwJICAgIDB4MDAwMTAwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTElOS19TUEVFRF8xME1fSEFMRgkgICAgMHgwMDAyMDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9MSU5LX1NQRUVEXzEwME1fSEFMRgkgICAgMHgwMDAzMDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9MSU5LX1NQRUVEXzEwME1fRlVMTAkgICAgMHgwMDA0MDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9MSU5LX1NQRUVEXzFHCQkgICAgMHgwMDA1MDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9MSU5LX1NQRUVEXzJfNUcJCSAgICAweDAwMDYwMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0xJTktfU1BFRURfMTBHX0NYNCAJICAgIDB4MDAwNzAwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTElOS19TUEVFRF8xMEdfS1g0IAkgICAgMHgwMDA4MDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9MSU5LX1NQRUVEXzEwR19LUgkJICAgIDB4MDAwOTAwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTElOS19TUEVFRF8xMkcJCSAgICAweDAwMGEwMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0xJTktfU1BFRURfMTJfNUcJCSAgICAweDAwMGIwMDAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0xJTktfU1BFRURfMTNHCQkgICAgMHgwMDBjMDAwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9MSU5LX1NQRUVEXzE1RwkJICAgIDB4MDAwZDAwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfTElOS19TUEVFRF8xNkcJCSAgICAweDAwMGUwMDAwCgojZGVmaW5lIFBPUlRfRkVBVFVSRV9GTE9XX0NPTlRST0xfTUFTSwkJICAgIDB4MDAwMDA3MDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfRkxPV19DT05UUk9MX1NISUZUIAkgICAgOAojZGVmaW5lIFBPUlRfRkVBVFVSRV9GTE9XX0NPTlRST0xfQVVUTwkJICAgIDB4MDAwMDAwMDAKI2RlZmluZSBQT1JUX0ZFQVRVUkVfRkxPV19DT05UUk9MX1RYCQkgICAgMHgwMDAwMDEwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9GTE9XX0NPTlRST0xfUlgJCSAgICAweDAwMDAwMjAwCiNkZWZpbmUgUE9SVF9GRUFUVVJFX0ZMT1dfQ09OVFJPTF9CT1RICQkgICAgMHgwMDAwMDMwMAojZGVmaW5lIFBPUlRfRkVBVFVSRV9GTE9XX0NPTlRST0xfTk9ORQkJICAgIDB4MDAwMDA0MDAKCgkvKiBUaGUgZGVmYXVsdCBmb3IgTUNQIGxpbmsgY29uZmlndXJhdGlvbiwKCSAgIHVzZXMgdGhlIHNhbWUgZGVmaW5lcyBhcyBsaW5rX2NvbmZpZyAqLwoJdTMyIG1md193b2xfbGlua19jZmc7CgoJdTMyIHJlc2VydmVkWzE5XTsKCn07CgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogRGV2aWNlIEluZm9ybWF0aW9uCQkJCQkJCSAgICAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpzdHJ1Y3Qgc2htX2Rldl9pbmZvIHsJCQkJCQkgICAgLyogc2l6ZSAqLwoKCXUzMiAgICBiY19yZXY7IC8qIDggYml0cyBlYWNoOiBtYWpvciwgbWlub3IsIGJ1aWxkICovCSAgICAgICAvKiA0ICovCgoJc3RydWN0IHNoYXJlZF9od19jZmcJIHNoYXJlZF9od19jb25maWc7CQkgICAgICAvKiA0MCAqLwoKCXN0cnVjdCBwb3J0X2h3X2NmZwkgcG9ydF9od19jb25maWdbUE9SVF9NQVhdOyAgICAgLyogNDAwKjI9ODAwICovCgoJc3RydWN0IHNoYXJlZF9mZWF0X2NmZwkgc2hhcmVkX2ZlYXR1cmVfY29uZmlnOyAJICAgICAgIC8qIDQgKi8KCglzdHJ1Y3QgcG9ydF9mZWF0X2NmZwkgcG9ydF9mZWF0dXJlX2NvbmZpZ1tQT1JUX01BWF07LyogMTE2KjI9MjMyICovCgp9OwoKCiNkZWZpbmUgRlVOQ18wCQkJCTAKI2RlZmluZSBGVU5DXzEJCQkJMQojZGVmaW5lIEZVTkNfMgkJCQkyCiNkZWZpbmUgRlVOQ18zCQkJCTMKI2RlZmluZSBGVU5DXzQJCQkJNAojZGVmaW5lIEZVTkNfNQkJCQk1CiNkZWZpbmUgRlVOQ182CQkJCTYKI2RlZmluZSBGVU5DXzcJCQkJNwojZGVmaW5lIEUxX0ZVTkNfTUFYCQkJMgojZGVmaW5lIEUxSF9GVU5DX01BWAkJCTgKCiNkZWZpbmUgVk5fMAkJCQkwCiNkZWZpbmUgVk5fMQkJCQkxCiNkZWZpbmUgVk5fMgkJCQkyCiNkZWZpbmUgVk5fMwkJCQkzCiNkZWZpbmUgRTFWTl9NQVgJCQkxCiNkZWZpbmUgRTFIVk5fTUFYCQkJNAoKCi8qIFRoaXMgdmFsdWUgKGluIG1pbGxpc2Vjb25kcykgZGV0ZXJtaW5lcyB0aGUgZnJlcXVlbmN5IG9mIHRoZSBkcml2ZXIKICogaXNzdWluZyB0aGUgUFVMU0UgbWVzc2FnZSBjb2RlLiAgVGhlIGZpcm13YXJlIG1vbml0b3JzIHRoaXMgcGVyaW9kaWMKICogcHVsc2UgdG8gZGV0ZXJtaW5lIHdoZW4gdG8gc3dpdGNoIHRvIGFuIE9TLWFic2VudCBtb2RlLiAqLwojZGVmaW5lIERSVl9QVUxTRV9QRVJJT0RfTVMJCTI1MAoKLyogVGhpcyB2YWx1ZSAoaW4gbWlsbGlzZWNvbmRzKSBkZXRlcm1pbmVzIGhvdyBsb25nIHRoZSBkcml2ZXIgc2hvdWxkCiAqIHdhaXQgZm9yIGFuIGFja25vd2xlZGdlbWVudCBmcm9tIHRoZSBmaXJtd2FyZSBiZWZvcmUgdGltaW5nIG91dC4gIE9uY2UKICogdGhlIGZpcm13YXJlIGhhcyB0aW1lZCBvdXQsIHRoZSBkcml2ZXIgd2lsbCBhc3N1bWUgdGhlcmUgaXMgbm8gZmlybXdhcmUKICogcnVubmluZyBhbmQgdGhlcmUgd29uJ3QgYmUgYW55IGZpcm13YXJlLWRyaXZlciBzeW5jaHJvbml6YXRpb24gZHVyaW5nIGEKICogZHJpdmVyIHJlc2V0LiAqLwojZGVmaW5lIEZXX0FDS19USU1FX09VVF9NUwkJNTAwMAoKI2RlZmluZSBGV19BQ0tfUE9MTF9USU1FX01TCQkxCgojZGVmaW5lIEZXX0FDS19OVU1fT0ZfUE9MTAkoRldfQUNLX1RJTUVfT1VUX01TL0ZXX0FDS19QT0xMX1RJTUVfTVMpCgovKiBMRUQgQmxpbmsgcmF0ZSB0aGF0IHdpbGwgYWNoaWV2ZSB+MTUuOUh6ICovCiNkZWZpbmUgTEVEX0JMSU5LX1JBVEVfVkFMCQk0ODAKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIERyaXZlciA8LT4gRlcgTWFpbGJveAkJCQkJCSAgICAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpzdHJ1Y3QgZHJ2X3BvcnRfbWIgewoKCXUzMiBsaW5rX3N0YXR1czsKCS8qIERyaXZlciBzaG91bGQgdXBkYXRlIHRoaXMgZmllbGQgb24gYW55IGxpbmsgY2hhbmdlIGV2ZW50ICovCgojZGVmaW5lIExJTktfU1RBVFVTX0xJTktfRkxBR19NQVNLCQkJMHgwMDAwMDAwMQojZGVmaW5lIExJTktfU1RBVFVTX0xJTktfVVAJCQkJMHgwMDAwMDAwMQojZGVmaW5lIExJTktfU1RBVFVTX1NQRUVEX0FORF9EVVBMRVhfTUFTSwkJMHgwMDAwMDAxRQojZGVmaW5lIExJTktfU1RBVFVTX1NQRUVEX0FORF9EVVBMRVhfQU5fTk9UX0NPTVBMRVRFCSgwPDwxKQojZGVmaW5lIExJTktfU1RBVFVTX1NQRUVEX0FORF9EVVBMRVhfMTBUSEQJCSgxPDwxKQojZGVmaW5lIExJTktfU1RBVFVTX1NQRUVEX0FORF9EVVBMRVhfMTBURkQJCSgyPDwxKQojZGVmaW5lIExJTktfU1RBVFVTX1NQRUVEX0FORF9EVVBMRVhfMTAwVFhIRAkJKDM8PDEpCiNkZWZpbmUgTElOS19TVEFUVVNfU1BFRURfQU5EX0RVUExFWF8xMDBUNAkJKDQ8PDEpCiNkZWZpbmUgTElOS19TVEFUVVNfU1BFRURfQU5EX0RVUExFWF8xMDBUWEZECQkoNTw8MSkKI2RlZmluZSBMSU5LX1NUQVRVU19TUEVFRF9BTkRfRFVQTEVYXzEwMDBUSEQJCSg2PDwxKQojZGVmaW5lIExJTktfU1RBVFVTX1NQRUVEX0FORF9EVVBMRVhfMTAwMFRGRAkJKDc8PDEpCiNkZWZpbmUgTElOS19TVEFUVVNfU1BFRURfQU5EX0RVUExFWF8xMDAwWEZECQkoNzw8MSkKI2RlZmluZSBMSU5LX1NUQVRVU19TUEVFRF9BTkRfRFVQTEVYXzI1MDBUSEQJCSg4PDwxKQojZGVmaW5lIExJTktfU1RBVFVTX1NQRUVEX0FORF9EVVBMRVhfMjUwMFRGRAkJKDk8PDEpCiNkZWZpbmUgTElOS19TVEFUVVNfU1BFRURfQU5EX0RVUExFWF8yNTAwWEZECQkoOTw8MSkKI2RlZmluZSBMSU5LX1NUQVRVU19TUEVFRF9BTkRfRFVQTEVYXzEwR1RGRAkJKDEwPDwxKQojZGVmaW5lIExJTktfU1RBVFVTX1NQRUVEX0FORF9EVVBMRVhfMTBHWEZECQkoMTA8PDEpCiNkZWZpbmUgTElOS19TVEFUVVNfU1BFRURfQU5EX0RVUExFWF8xMkdURkQJCSgxMTw8MSkKI2RlZmluZSBMSU5LX1NUQVRVU19TUEVFRF9BTkRfRFVQTEVYXzEyR1hGRAkJKDExPDwxKQojZGVmaW5lIExJTktfU1RBVFVTX1NQRUVEX0FORF9EVVBMRVhfMTJfNUdURkQJCSgxMjw8MSkKI2RlZmluZSBMSU5LX1NUQVRVU19TUEVFRF9BTkRfRFVQTEVYXzEyXzVHWEZECQkoMTI8PDEpCiNkZWZpbmUgTElOS19TVEFUVVNfU1BFRURfQU5EX0RVUExFWF8xM0dURkQJCSgxMzw8MSkKI2RlZmluZSBMSU5LX1NUQVRVU19TUEVFRF9BTkRfRFVQTEVYXzEzR1hGRAkJKDEzPDwxKQojZGVmaW5lIExJTktfU1RBVFVTX1NQRUVEX0FORF9EVVBMRVhfMTVHVEZECQkoMTQ8PDEpCiNkZWZpbmUgTElOS19TVEFUVVNfU1BFRURfQU5EX0RVUExFWF8xNUdYRkQJCSgxNDw8MSkKI2RlZmluZSBMSU5LX1NUQVRVU19TUEVFRF9BTkRfRFVQTEVYXzE2R1RGRAkJKDE1PDwxKQojZGVmaW5lIExJTktfU1RBVFVTX1NQRUVEX0FORF9EVVBMRVhfMTZHWEZECQkoMTU8PDEpCgojZGVmaW5lIExJTktfU1RBVFVTX0FVVE9fTkVHT1RJQVRFX0ZMQUdfTUFTSwkJMHgwMDAwMDAyMAojZGVmaW5lIExJTktfU1RBVFVTX0FVVE9fTkVHT1RJQVRFX0VOQUJMRUQJCTB4MDAwMDAwMjAKCiNkZWZpbmUgTElOS19TVEFUVVNfQVVUT19ORUdPVElBVEVfQ09NUExFVEUJCTB4MDAwMDAwNDAKI2RlZmluZSBMSU5LX1NUQVRVU19QQVJBTExFTF9ERVRFQ1RJT05fRkxBR19NQVNLCTB4MDAwMDAwODAKI2RlZmluZSBMSU5LX1NUQVRVU19QQVJBTExFTF9ERVRFQ1RJT05fVVNFRAkJMHgwMDAwMDA4MAoKI2RlZmluZSBMSU5LX1NUQVRVU19MSU5LX1BBUlRORVJfMTAwMFRGRF9DQVBBQkxFCTB4MDAwMDAyMDAKI2RlZmluZSBMSU5LX1NUQVRVU19MSU5LX1BBUlRORVJfMTAwMFRIRF9DQVBBQkxFCTB4MDAwMDA0MDAKI2RlZmluZSBMSU5LX1NUQVRVU19MSU5LX1BBUlRORVJfMTAwVDRfQ0FQQUJMRQkJMHgwMDAwMDgwMAojZGVmaW5lIExJTktfU1RBVFVTX0xJTktfUEFSVE5FUl8xMDBUWEZEX0NBUEFCTEUJMHgwMDAwMTAwMAojZGVmaW5lIExJTktfU1RBVFVTX0xJTktfUEFSVE5FUl8xMDBUWEhEX0NBUEFCTEUJMHgwMDAwMjAwMAojZGVmaW5lIExJTktfU1RBVFVTX0xJTktfUEFSVE5FUl8xMFRGRF9DQVBBQkxFCQkweDAwMDA0MDAwCiNkZWZpbmUgTElOS19TVEFUVVNfTElOS19QQVJUTkVSXzEwVEhEX0NBUEFCTEUJCTB4MDAwMDgwMDAKCiNkZWZpbmUgTElOS19TVEFUVVNfVFhfRkxPV19DT05UUk9MX0ZMQUdfTUFTSwkJMHgwMDAxMDAwMAojZGVmaW5lIExJTktfU1RBVFVTX1RYX0ZMT1dfQ09OVFJPTF9FTkFCTEVECQkweDAwMDEwMDAwCgojZGVmaW5lIExJTktfU1RBVFVTX1JYX0ZMT1dfQ09OVFJPTF9GTEFHX01BU0sJCTB4MDAwMjAwMDAKI2RlZmluZSBMSU5LX1NUQVRVU19SWF9GTE9XX0NPTlRST0xfRU5BQkxFRAkJMHgwMDAyMDAwMAoKI2RlZmluZSBMSU5LX1NUQVRVU19MSU5LX1BBUlRORVJfRkxPV19DT05UUk9MX01BU0sJMHgwMDBDMDAwMAojZGVmaW5lIExJTktfU1RBVFVTX0xJTktfUEFSVE5FUl9OT1RfUEFVU0VfQ0FQQUJMRQkoMDw8MTgpCiNkZWZpbmUgTElOS19TVEFUVVNfTElOS19QQVJUTkVSX1NZTU1FVFJJQ19QQVVTRQkoMTw8MTgpCiNkZWZpbmUgTElOS19TVEFUVVNfTElOS19QQVJUTkVSX0FTWU1NRVRSSUNfUEFVU0UJKDI8PDE4KQojZGVmaW5lIExJTktfU1RBVFVTX0xJTktfUEFSVE5FUl9CT1RIX1BBVVNFCQkoMzw8MTgpCgojZGVmaW5lIExJTktfU1RBVFVTX1NFUkRFU19MSU5LIAkJCTB4MDAxMDAwMDAKCiNkZWZpbmUgTElOS19TVEFUVVNfTElOS19QQVJUTkVSXzI1MDBYRkRfQ0FQQUJMRQkweDAwMjAwMDAwCiNkZWZpbmUgTElOS19TVEFUVVNfTElOS19QQVJUTkVSXzI1MDBYSERfQ0FQQUJMRQkweDAwNDAwMDAwCiNkZWZpbmUgTElOS19TVEFUVVNfTElOS19QQVJUTkVSXzEwR1hGRF9DQVBBQkxFIAkweDAwODAwMDAwCiNkZWZpbmUgTElOS19TVEFUVVNfTElOS19QQVJUTkVSXzEyR1hGRF9DQVBBQkxFIAkweDAxMDAwMDAwCiNkZWZpbmUgTElOS19TVEFUVVNfTElOS19QQVJUTkVSXzEyXzVHWEZEX0NBUEFCTEUJMHgwMjAwMDAwMAojZGVmaW5lIExJTktfU1RBVFVTX0xJTktfUEFSVE5FUl8xM0dYRkRfQ0FQQUJMRSAJMHgwNDAwMDAwMAojZGVmaW5lIExJTktfU1RBVFVTX0xJTktfUEFSVE5FUl8xNUdYRkRfQ0FQQUJMRSAJMHgwODAwMDAwMAojZGVmaW5lIExJTktfU1RBVFVTX0xJTktfUEFSVE5FUl8xNkdYRkRfQ0FQQUJMRSAJMHgxMDAwMDAwMAoKCXUzMiBwb3J0X3N0eDsKCgl1MzIgc3RhdF9uaWdfdGltZXI7CgoJLyogTUNQIGZpcm13YXJlIGRvZXMgbm90IHVzZSB0aGlzIGZpZWxkICovCgl1MzIgZXh0X3BoeV9md192ZXJzaW9uOwoKfTsKCgpzdHJ1Y3QgZHJ2X2Z1bmNfbWIgewoKCXUzMiBkcnZfbWJfaGVhZGVyOwojZGVmaW5lIERSVl9NU0dfQ09ERV9NQVNLCQkJCTB4ZmZmZjAwMDAKI2RlZmluZSBEUlZfTVNHX0NPREVfTE9BRF9SRVEJCQkJMHgxMDAwMDAwMAojZGVmaW5lIERSVl9NU0dfQ09ERV9MT0FEX0RPTkUJCQkJMHgxMTAwMDAwMAojZGVmaW5lIERSVl9NU0dfQ09ERV9VTkxPQURfUkVRX1dPTF9FTgkJCTB4MjAwMDAwMDAKI2RlZmluZSBEUlZfTVNHX0NPREVfVU5MT0FEX1JFUV9XT0xfRElTIAkJMHgyMDAxMDAwMAojZGVmaW5lIERSVl9NU0dfQ09ERV9VTkxPQURfUkVRX1dPTF9NQ1AgCQkweDIwMDIwMDAwCiNkZWZpbmUgRFJWX01TR19DT0RFX1VOTE9BRF9ET05FCQkJMHgyMTAwMDAwMAojZGVmaW5lIERSVl9NU0dfQ09ERV9EQ0NfT0sJCQkJMHgzMDAwMDAwMAojZGVmaW5lIERSVl9NU0dfQ09ERV9EQ0NfRkFJTFVSRQkJCTB4MzEwMDAwMDAKI2RlZmluZSBEUlZfTVNHX0NPREVfRElBR19FTlRFUl9SRVEJCQkweDUwMDAwMDAwCiNkZWZpbmUgRFJWX01TR19DT0RFX0RJQUdfRVhJVF9SRVEJCQkweDYwMDAwMDAwCiNkZWZpbmUgRFJWX01TR19DT0RFX1ZBTElEQVRFX0tFWQkJCTB4NzAwMDAwMDAKI2RlZmluZSBEUlZfTVNHX0NPREVfR0VUX0NVUlJfS0VZCQkJMHg4MDAwMDAwMAojZGVmaW5lIERSVl9NU0dfQ09ERV9HRVRfVVBHUkFERV9LRVkJCQkweDgxMDAwMDAwCiNkZWZpbmUgRFJWX01TR19DT0RFX0dFVF9NQU5VRl9LRVkJCQkweDgyMDAwMDAwCiNkZWZpbmUgRFJWX01TR19DT0RFX0xPQURfTDJCX1BSQU0JCQkweDkwMDAwMDAwCgkvKgoJICogVGhlIG9wdGljIG1vZHVsZSB2ZXJpZmljYXRpb24gY29tbWFuZHMgcmVxdXJpcyBib290Y29kZQoJICogdjUuMC42IG9yIGxhdGVyCgkgKi8KI2RlZmluZSBEUlZfTVNHX0NPREVfVlJGWV9PUFRfTURMCQkJMHhhMDAwMDAwMAojZGVmaW5lIFJFUV9CQ19WRVJfNF9WUkZZX09QVF9NREwJCQkweDAwMDUwMDA2CgojZGVmaW5lIEJJT1NfTVNHX0NPREVfTElDX0NIQUxMRU5HRQkJCTB4ZmYwMTAwMDAKI2RlZmluZSBCSU9TX01TR19DT0RFX0xJQ19SRVNQT05TRQkJCTB4ZmYwMjAwMDAKI2RlZmluZSBCSU9TX01TR19DT0RFX1ZJUlRfTUFDX1BSSU0JCQkweGZmMDMwMDAwCiNkZWZpbmUgQklPU19NU0dfQ09ERV9WSVJUX01BQ19JU0NTSQkJCTB4ZmYwNDAwMDAKCiNkZWZpbmUgRFJWX01TR19TRVFfTlVNQkVSX01BU0sgCQkJMHgwMDAwZmZmZgoKCXUzMiBkcnZfbWJfcGFyYW07CgoJdTMyIGZ3X21iX2hlYWRlcjsKI2RlZmluZSBGV19NU0dfQ09ERV9NQVNLCQkJCTB4ZmZmZjAwMDAKI2RlZmluZSBGV19NU0dfQ09ERV9EUlZfTE9BRF9DT01NT04JCQkweDEwMTAwMDAwCiNkZWZpbmUgRldfTVNHX0NPREVfRFJWX0xPQURfUE9SVAkJCTB4MTAxMTAwMDAKI2RlZmluZSBGV19NU0dfQ09ERV9EUlZfTE9BRF9GVU5DVElPTgkJCTB4MTAxMjAwMDAKI2RlZmluZSBGV19NU0dfQ09ERV9EUlZfTE9BRF9SRUZVU0VECQkJMHgxMDIwMDAwMAojZGVmaW5lIEZXX01TR19DT0RFX0RSVl9MT0FEX0RPTkUJCQkweDExMTAwMDAwCiNkZWZpbmUgRldfTVNHX0NPREVfRFJWX1VOTE9BRF9DT01NT04JCQkweDIwMTAwMDAwCiNkZWZpbmUgRldfTVNHX0NPREVfRFJWX1VOTE9BRF9QT1JUCQkJMHgyMDExMDAwMAojZGVmaW5lIEZXX01TR19DT0RFX0RSVl9VTkxPQURfRlVOQ1RJT04gCQkweDIwMTIwMDAwCiNkZWZpbmUgRldfTVNHX0NPREVfRFJWX1VOTE9BRF9ET05FCQkJMHgyMTEwMDAwMAojZGVmaW5lIEZXX01TR19DT0RFX0RDQ19ET05FCQkJCTB4MzAxMDAwMDAKI2RlZmluZSBGV19NU0dfQ09ERV9ESUFHX0VOVEVSX0RPTkUJCQkweDUwMTAwMDAwCiNkZWZpbmUgRldfTVNHX0NPREVfRElBR19SRUZVU0UgCQkJMHg1MDIwMDAwMAojZGVmaW5lIEZXX01TR19DT0RFX0RJQUdfRVhJVF9ET05FCQkJMHg2MDEwMDAwMAojZGVmaW5lIEZXX01TR19DT0RFX1ZBTElEQVRFX0tFWV9TVUNDRVNTCQkweDcwMTAwMDAwCiNkZWZpbmUgRldfTVNHX0NPREVfVkFMSURBVEVfS0VZX0ZBSUxVUkUJCTB4NzAyMDAwMDAKI2RlZmluZSBGV19NU0dfQ09ERV9HRVRfS0VZX0RPTkUJCQkweDgwMTAwMDAwCiNkZWZpbmUgRldfTVNHX0NPREVfTk9fS0VZCQkJCTB4ODBmMDAwMDAKI2RlZmluZSBGV19NU0dfQ09ERV9MSUNfSU5GT19OT1RfUkVBRFkJCQkweDgwZjgwMDAwCiNkZWZpbmUgRldfTVNHX0NPREVfTDJCX1BSQU1fTE9BREVECQkJMHg5MDEwMDAwMAojZGVmaW5lIEZXX01TR19DT0RFX0wyQl9QUkFNX1RfTE9BRF9GQUlMVVJFCQkweDkwMjEwMDAwCiNkZWZpbmUgRldfTVNHX0NPREVfTDJCX1BSQU1fQ19MT0FEX0ZBSUxVUkUJCTB4OTAyMjAwMDAKI2RlZmluZSBGV19NU0dfQ09ERV9MMkJfUFJBTV9YX0xPQURfRkFJTFVSRQkJMHg5MDIzMDAwMAojZGVmaW5lIEZXX01TR19DT0RFX0wyQl9QUkFNX1VfTE9BRF9GQUlMVVJFCQkweDkwMjQwMDAwCiNkZWZpbmUgRldfTVNHX0NPREVfVlJGWV9PUFRfTURMX1NVQ0NFU1MJCTB4YTAxMDAwMDAKI2RlZmluZSBGV19NU0dfQ09ERV9WUkZZX09QVF9NRExfSU5WTERfSU1HCQkweGEwMjAwMDAwCiNkZWZpbmUgRldfTVNHX0NPREVfVlJGWV9PUFRfTURMX1VOQVBQUk9WRUQJCTB4YTAzMDAwMDAKCiNkZWZpbmUgRldfTVNHX0NPREVfTElDX0NIQUxMRU5HRQkJCTB4ZmYwMTAwMDAKI2RlZmluZSBGV19NU0dfQ09ERV9MSUNfUkVTUE9OU0UJCQkweGZmMDIwMDAwCiNkZWZpbmUgRldfTVNHX0NPREVfVklSVF9NQUNfUFJJTQkJCTB4ZmYwMzAwMDAKI2RlZmluZSBGV19NU0dfQ09ERV9WSVJUX01BQ19JU0NTSQkJCTB4ZmYwNDAwMDAKCiNkZWZpbmUgRldfTVNHX1NFUV9OVU1CRVJfTUFTSwkJCQkweDAwMDBmZmZmCgoJdTMyIGZ3X21iX3BhcmFtOwoKCXUzMiBkcnZfcHVsc2VfbWI7CiNkZWZpbmUgRFJWX1BVTFNFX1NFUV9NQVNLCQkJCTB4MDAwMDdmZmYKI2RlZmluZSBEUlZfUFVMU0VfU1lTVEVNX1RJTUVfTUFTSwkJCTB4ZmZmZjAwMDAKCS8qIFRoZSBzeXN0ZW0gdGltZSBpcyBpbiB0aGUgZm9ybWF0IG9mCgkgKiAoeWVhci0yMDAxKSoxMiozMiArIG1vbnRoKjMyICsgZGF5LiAqLwojZGVmaW5lIERSVl9QVUxTRV9BTFdBWVNfQUxJVkUJCQkJMHgwMDAwODAwMAoJLyogSW5kaWNhdGUgdG8gdGhlIGZpcm13YXJlIG5vdCB0byBnbyBpbnRvIHRoZQoJICogT1MtYWJzZW50IHdoZW4gaXQgaXMgbm90IGdldHRpbmcgZHJpdmVyIHB1bHNlLgoJICogVGhpcyBpcyB1c2VkIGZvciBkZWJ1Z2dpbmcgYXMgd2VsbCBmb3IgUFhFKE1CQSkuICovCgoJdTMyIG1jcF9wdWxzZV9tYjsKI2RlZmluZSBNQ1BfUFVMU0VfU0VRX01BU0sJCQkJMHgwMDAwN2ZmZgojZGVmaW5lIE1DUF9QVUxTRV9BTFdBWVNfQUxJVkUJCQkJMHgwMDAwODAwMAoJLyogSW5kaWNhdGVzIHRvIHRoZSBkcml2ZXIgbm90IHRvIGFzc2VydCBkdWUgdG8gbGFjawoJICogb2YgTUNQIHJlc3BvbnNlICovCiNkZWZpbmUgTUNQX0VWRU5UX01BU0sJCQkJCTB4ZmZmZjAwMDAKI2RlZmluZSBNQ1BfRVZFTlRfT1RIRVJfRFJJVkVSX1JFU0VUX1JFUQkJMHgwMDAxMDAwMAoKCXUzMiBpc2NzaV9ib290X3NpZ25hdHVyZTsKCXUzMiBpc2NzaV9ib290X2Jsb2NrX29mZnNldDsKCgl1MzIgZHJ2X3N0YXR1czsKI2RlZmluZSBEUlZfU1RBVFVTX1BNRgkJCQkJMHgwMDAwMDAwMQoKI2RlZmluZSBEUlZfU1RBVFVTX0RDQ19FVkVOVF9NQVNLCQkJMHgwMDAwZmYwMAojZGVmaW5lIERSVl9TVEFUVVNfRENDX0RJU0FCTEVfRU5BQkxFX1BGCQkweDAwMDAwMTAwCiNkZWZpbmUgRFJWX1NUQVRVU19EQ0NfQkFORFdJRFRIX0FMTE9DQVRJT04JCTB4MDAwMDAyMDAKI2RlZmluZSBEUlZfU1RBVFVTX0RDQ19DSEFOR0VfTUFDX0FERFJFU1MJCTB4MDAwMDA0MDAKI2RlZmluZSBEUlZfU1RBVFVTX0RDQ19SRVNFUlZFRDEJCQkweDAwMDAwODAwCiNkZWZpbmUgRFJWX1NUQVRVU19EQ0NfU0VUX1BST1RPQ09MCQkJMHgwMDAwMTAwMAojZGVmaW5lIERSVl9TVEFUVVNfRENDX1NFVF9QUklPUklUWQkJCTB4MDAwMDIwMDAKCgl1MzIgdmlydF9tYWNfdXBwZXI7CiNkZWZpbmUgVklSVF9NQUNfU0lHTl9NQVNLCQkJCTB4ZmZmZjAwMDAKI2RlZmluZSBWSVJUX01BQ19TSUdOQVRVUkUJCQkJMHg1NjRkMDAwMAoJdTMyIHZpcnRfbWFjX2xvd2VyOwoKfTsKCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBNYW5hZ2VtZW50IGZpcm13YXJlIHN0YXRlCQkJCQkJICAgICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIEFsbG9jYXRlIDQ0MCBieXRlcyBmb3IgbWFuYWdlbWVudCBmaXJtd2FyZSAqLwojZGVmaW5lIE1HTVRGV19TVEFURV9XT1JEX1NJWkUJCQkJICAgIDExMAoKc3RydWN0IG1nbXRmd19zdGF0ZSB7Cgl1MzIgb3BhcXVlW01HTVRGV19TVEFURV9XT1JEX1NJWkVdOwp9OwoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIE11bHRpLUZ1bmN0aW9uIGNvbmZpZ3VyYXRpb24gCQkJCQkgICAgKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8Kc3RydWN0IHNoYXJlZF9tZl9jZmcgewoKCXUzMiBjbHBfbWI7CiNkZWZpbmUgU0hBUkVEX01GX0NMUF9TRVRfREVGQVVMVAkJICAgIDB4MDAwMDAwMDAKCS8qIHNldCBieSBDTFAgKi8KI2RlZmluZSBTSEFSRURfTUZfQ0xQX0VYSVQJCQkgICAgMHgwMDAwMDAwMQoJLyogc2V0IGJ5IE1DUCAqLwojZGVmaW5lIFNIQVJFRF9NRl9DTFBfRVhJVF9ET05FIAkJICAgIDB4MDAwMTAwMDAKCn07CgpzdHJ1Y3QgcG9ydF9tZl9jZmcgewoKCXUzMiBkeW5hbWljX2NmZzsJLyogZGV2aWNlIGNvbnRyb2wgY2hhbm5lbCAqLwojZGVmaW5lIFBPUlRfTUZfQ0ZHX0UxSE9WX1RBR19NQVNLCQkgICAgMHgwMDAwZmZmZgojZGVmaW5lIFBPUlRfTUZfQ0ZHX0UxSE9WX1RBR19TSElGVAkJICAgIDAKI2RlZmluZSBQT1JUX01GX0NGR19FMUhPVl9UQUdfREVGQVVMVAkJICAgIFBPUlRfTUZfQ0ZHX0UxSE9WX1RBR19NQVNLCgoJdTMyIHJlc2VydmVkWzNdOwoKfTsKCnN0cnVjdCBmdW5jX21mX2NmZyB7CgoJdTMyIGNvbmZpZzsKCS8qIEUvUi9JL0QgKi8KCS8qIGZ1bmN0aW9uIDAgb2YgZWFjaCBwb3J0IGNhbm5vdCBiZSBoaWRkZW4gKi8KI2RlZmluZSBGVU5DX01GX0NGR19GVU5DX0hJREUJCQkgICAgMHgwMDAwMDAwMQoKI2RlZmluZSBGVU5DX01GX0NGR19QUk9UT0NPTF9NQVNLCQkgICAgMHgwMDAwMDAwNwojZGVmaW5lIEZVTkNfTUZfQ0ZHX1BST1RPQ09MX0VUSEVSTkVUCQkgICAgMHgwMDAwMDAwMgojZGVmaW5lIEZVTkNfTUZfQ0ZHX1BST1RPQ09MX0VUSEVSTkVUX1dJVEhfUkRNQSAgICAgMHgwMDAwMDAwNAojZGVmaW5lIEZVTkNfTUZfQ0ZHX1BST1RPQ09MX0lTQ1NJCQkgICAgMHgwMDAwMDAwNgojZGVmaW5lIEZVTkNfTUZfQ0ZHX1BST1RPQ09MX0RFRkFVTFRcCglGVU5DX01GX0NGR19QUk9UT0NPTF9FVEhFUk5FVF9XSVRIX1JETUEKCiNkZWZpbmUgRlVOQ19NRl9DRkdfRlVOQ19ESVNBQkxFRAkJICAgIDB4MDAwMDAwMDgKCgkvKiBQUkkgKi8KCS8qIDAgLSBsb3cgcHJpb3JpdHksIDMgLSBoaWdoIHByaW9yaXR5ICovCiNkZWZpbmUgRlVOQ19NRl9DRkdfVFJBTlNNSVRfUFJJT1JJVFlfTUFTSwkgICAgMHgwMDAwMDMwMAojZGVmaW5lIEZVTkNfTUZfQ0ZHX1RSQU5TTUlUX1BSSU9SSVRZX1NISUZUCSAgICA4CiNkZWZpbmUgRlVOQ19NRl9DRkdfVFJBTlNNSVRfUFJJT1JJVFlfREVGQVVMVAkgICAgMHgwMDAwMDAwMAoKCS8qIE1JTkJXLCBNQVhCVyAqLwoJLyogdmFsdWUgcmFuZ2UgLSAwLi4xMDAsIGluY3JlbWVudHMgaW4gMTAwTWJwcyAqLwojZGVmaW5lIEZVTkNfTUZfQ0ZHX01JTl9CV19NQVNLIAkJICAgIDB4MDBmZjAwMDAKI2RlZmluZSBGVU5DX01GX0NGR19NSU5fQldfU0hJRlQJCSAgICAxNgojZGVmaW5lIEZVTkNfTUZfQ0ZHX01JTl9CV19ERUZBVUxUCQkgICAgMHgwMDAwMDAwMAojZGVmaW5lIEZVTkNfTUZfQ0ZHX01BWF9CV19NQVNLIAkJICAgIDB4ZmYwMDAwMDAKI2RlZmluZSBGVU5DX01GX0NGR19NQVhfQldfU0hJRlQJCSAgICAyNAojZGVmaW5lIEZVTkNfTUZfQ0ZHX01BWF9CV19ERUZBVUxUCQkgICAgMHg2NDAwMDAwMAoKCXUzMiBtYWNfdXBwZXI7CQkvKiBNQUMgKi8KI2RlZmluZSBGVU5DX01GX0NGR19VUFBFUk1BQ19NQVNLCQkgICAgMHgwMDAwZmZmZgojZGVmaW5lIEZVTkNfTUZfQ0ZHX1VQUEVSTUFDX1NISUZUCQkgICAgMAojZGVmaW5lIEZVTkNfTUZfQ0ZHX1VQUEVSTUFDX0RFRkFVTFQJCSAgICBGVU5DX01GX0NGR19VUFBFUk1BQ19NQVNLCgl1MzIgbWFjX2xvd2VyOwojZGVmaW5lIEZVTkNfTUZfQ0ZHX0xPV0VSTUFDX0RFRkFVTFQJCSAgICAweGZmZmZmZmZmCgoJdTMyIGUxaG92X3RhZzsJLyogVk5JICovCiNkZWZpbmUgRlVOQ19NRl9DRkdfRTFIT1ZfVEFHX01BU0sJCSAgICAweDAwMDBmZmZmCiNkZWZpbmUgRlVOQ19NRl9DRkdfRTFIT1ZfVEFHX1NISUZUCQkgICAgMAojZGVmaW5lIEZVTkNfTUZfQ0ZHX0UxSE9WX1RBR19ERUZBVUxUCQkgICAgRlVOQ19NRl9DRkdfRTFIT1ZfVEFHX01BU0sKCgl1MzIgcmVzZXJ2ZWRbMl07Cgp9OwoKc3RydWN0IG1mX2NmZyB7CgoJc3RydWN0IHNoYXJlZF9tZl9jZmcJc2hhcmVkX21mX2NvbmZpZzsKCXN0cnVjdCBwb3J0X21mX2NmZwlwb3J0X21mX2NvbmZpZ1tQT1JUX01BWF07CglzdHJ1Y3QgZnVuY19tZl9jZmcJZnVuY19tZl9jb25maWdbRTFIX0ZVTkNfTUFYXTsKCn07CgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogU2hhcmVkIE1lbW9yeSBSZWdpb24gCQkJCQkJICAgICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCnN0cnVjdCBzaG1lbV9yZWdpb24gewkJCSAgICAgICAvKiAgIFNoYXJlZE1lbSBPZmZzZXQgKHNpemUpICovCgoJdTMyCQkJdmFsaWRpdHlfbWFwW1BPUlRfTUFYXTsgIC8qIDB4MCAoNCoyID0gMHg4KSAqLwojZGVmaW5lIFNIUl9NRU1fRk9STUFUX1JFVl9JRAkJCSAgICAoJ0EnPDwyNCkKI2RlZmluZSBTSFJfTUVNX0ZPUk1BVF9SRVZfTUFTSyAJCSAgICAweGZmMDAwMDAwCgkvKiB2YWxpZGl0eSBiaXRzICovCiNkZWZpbmUgU0hSX01FTV9WQUxJRElUWV9QQ0lfQ0ZHCQkgICAgMHgwMDEwMDAwMAojZGVmaW5lIFNIUl9NRU1fVkFMSURJVFlfTUIJCQkgICAgMHgwMDIwMDAwMAojZGVmaW5lIFNIUl9NRU1fVkFMSURJVFlfREVWX0lORk8JCSAgICAweDAwNDAwMDAwCiNkZWZpbmUgU0hSX01FTV9WQUxJRElUWV9SRVNFUlZFRAkJICAgIDB4MDAwMDAwMDcKCS8qIE9uZSBsaWNlbnNpbmcgYml0IHNob3VsZCBiZSBzZXQgKi8KI2RlZmluZSBTSFJfTUVNX1ZBTElESVRZX0xJQ19LRVlfSU5fRUZGRUNUX01BU0sgICAgIDB4MDAwMDAwMzgKI2RlZmluZSBTSFJfTUVNX1ZBTElESVRZX0xJQ19NQU5VRl9LRVlfSU5fRUZGRUNUICAgIDB4MDAwMDAwMDgKI2RlZmluZSBTSFJfTUVNX1ZBTElESVRZX0xJQ19VUEdSQURFX0tFWV9JTl9FRkZFQ1QgIDB4MDAwMDAwMTAKI2RlZmluZSBTSFJfTUVNX1ZBTElESVRZX0xJQ19OT19LRVlfSU5fRUZGRUNUCSAgICAweDAwMDAwMDIwCgkvKiBBY3RpdmUgTUZXICovCiNkZWZpbmUgU0hSX01FTV9WQUxJRElUWV9BQ1RJVkVfTUZXX1VOS05PV04JICAgIDB4MDAwMDAwMDAKI2RlZmluZSBTSFJfTUVNX1ZBTElESVRZX0FDVElWRV9NRldfSVBNSQkgICAgMHgwMDAwMDA0MAojZGVmaW5lIFNIUl9NRU1fVkFMSURJVFlfQUNUSVZFX01GV19VTVAgCSAgICAweDAwMDAwMDgwCiNkZWZpbmUgU0hSX01FTV9WQUxJRElUWV9BQ1RJVkVfTUZXX05DU0kJICAgIDB4MDAwMDAwYzAKI2RlZmluZSBTSFJfTUVNX1ZBTElESVRZX0FDVElWRV9NRldfTk9ORQkgICAgMHgwMDAwMDFjMAojZGVmaW5lIFNIUl9NRU1fVkFMSURJVFlfQUNUSVZFX01GV19NQVNLCSAgICAweDAwMDAwMWMwCgoJc3RydWN0IHNobV9kZXZfaW5mbwlkZXZfaW5mbzsJCSAvKiAweDggICAgICgweDQzOCkgKi8KCglzdHJ1Y3QgbGljZW5zZV9rZXkJZHJ2X2xpY19rZXlbUE9SVF9NQVhdOyAvKiAweDQ0MCAoNTIqMj0weDY4KSAqLwoKCS8qIEZXIGluZm9ybWF0aW9uIChmb3IgaW50ZXJuYWwgRlcgdXNlKSAqLwoJdTMyCQkJZndfaW5mb19maW9fb2Zmc2V0OyAgICAvKiAweDRhOCAgICAgICAoMHg0KSAqLwoJc3RydWN0IG1nbXRmd19zdGF0ZQltZ210Zndfc3RhdGU7CSAgICAgICAvKiAweDRhYyAgICAgKDB4MWI4KSAqLwoKCXN0cnVjdCBkcnZfcG9ydF9tYglwb3J0X21iW1BPUlRfTUFYXTsgICAgIC8qIDB4NjY0ICgxNioyPTB4MjApICovCiNpZiAhZGVmaW5lZChiNzEwKSAvKiBCTlgyWF9VUFNUUkVBTSAqLwoJc3RydWN0IGRydl9mdW5jX21iCWZ1bmNfbWJbRTFIX0ZVTkNfTUFYXTsKI2Vsc2UKCXN0cnVjdCBkcnZfZnVuY19tYglmdW5jX21iW0UxX0ZVTkNfTUFYXTsgIC8qIDB4Njg0ICg0NCoyPTB4NTgpICovCiNlbmRpZgoKI2lmICFkZWZpbmVkKGI3MTApIC8qIEJOWDJYX1VQU1RSRUFNICovCglzdHJ1Y3QgbWZfY2ZnCQltZl9jZmc7CiNlbmRpZgoKfTsJCQkJCQkgICAgICAgLyogMHg2ZGMgKi8KCgpzdHJ1Y3Qgc2htZW0yX3JlZ2lvbiB7CgoJdTMyCQkJc2l6ZTsKCgl1MzIJCQlkY2Nfc3VwcG9ydDsKI2RlZmluZSBTSE1FTV9EQ0NfU1VQUE9SVF9OT05FCQkJICAgIDB4MDAwMDAwMDAKI2RlZmluZSBTSE1FTV9EQ0NfU1VQUE9SVF9ESVNBQkxFX0VOQUJMRV9QRl9UTFYgICAgIDB4MDAwMDAwMDEKI2RlZmluZSBTSE1FTV9EQ0NfU1VQUE9SVF9CQU5EV0lEVEhfQUxMT0NBVElPTl9UTFYgIDB4MDAwMDAwMDQKI2RlZmluZSBTSE1FTV9EQ0NfU1VQUE9SVF9DSEFOR0VfTUFDX0FERFJFU1NfVExWICAgIDB4MDAwMDAwMDgKI2RlZmluZSBTSE1FTV9EQ0NfU1VQUE9SVF9TRVRfUFJPVE9DT0xfVExWCSAgICAweDAwMDAwMDQwCiNkZWZpbmUgU0hNRU1fRENDX1NVUFBPUlRfU0VUX1BSSU9SSVRZX1RMVgkgICAgMHgwMDAwMDA4MAojZGVmaW5lIFNITUVNX0RDQ19TVVBQT1JUX0RFRkFVTFQJCSAgICBTSE1FTV9EQ0NfU1VQUE9SVF9OT05FCgp9OwoKCnN0cnVjdCBlbWFjX3N0YXRzIHsKICAgIHUzMiAgICAgcnhfc3RhdF9pZmhjaW5vY3RldHM7CiAgICB1MzIgICAgIHJ4X3N0YXRfaWZoY2luYmFkb2N0ZXRzOwogICAgdTMyICAgICByeF9zdGF0X2V0aGVyc3RhdHNmcmFnbWVudHM7CiAgICB1MzIgICAgIHJ4X3N0YXRfaWZoY2ludWNhc3Rwa3RzOwogICAgdTMyICAgICByeF9zdGF0X2lmaGNpbm11bHRpY2FzdHBrdHM7CiAgICB1MzIgICAgIHJ4X3N0YXRfaWZoY2luYnJvYWRjYXN0cGt0czsKICAgIHUzMiAgICAgcnhfc3RhdF9kb3Qzc3RhdHNmY3NlcnJvcnM7CiAgICB1MzIgICAgIHJ4X3N0YXRfZG90M3N0YXRzYWxpZ25tZW50ZXJyb3JzOwogICAgdTMyICAgICByeF9zdGF0X2RvdDNzdGF0c2NhcnJpZXJzZW5zZWVycm9yczsKICAgIHUzMiAgICAgcnhfc3RhdF94b25wYXVzZWZyYW1lc3JlY2VpdmVkOwogICAgdTMyICAgICByeF9zdGF0X3hvZmZwYXVzZWZyYW1lc3JlY2VpdmVkOwogICAgdTMyICAgICByeF9zdGF0X21hY2NvbnRyb2xmcmFtZXNyZWNlaXZlZDsKICAgIHUzMiAgICAgcnhfc3RhdF94b2Zmc3RhdGVlbnRlcmVkOwogICAgdTMyICAgICByeF9zdGF0X2RvdDNzdGF0c2ZyYW1lc3Rvb2xvbmc7CiAgICB1MzIgICAgIHJ4X3N0YXRfZXRoZXJzdGF0c2phYmJlcnM7CiAgICB1MzIgICAgIHJ4X3N0YXRfZXRoZXJzdGF0c3VuZGVyc2l6ZXBrdHM7CiAgICB1MzIgICAgIHJ4X3N0YXRfZXRoZXJzdGF0c3BrdHM2NG9jdGV0czsKICAgIHUzMiAgICAgcnhfc3RhdF9ldGhlcnN0YXRzcGt0czY1b2N0ZXRzdG8xMjdvY3RldHM7CiAgICB1MzIgICAgIHJ4X3N0YXRfZXRoZXJzdGF0c3BrdHMxMjhvY3RldHN0bzI1NW9jdGV0czsKICAgIHUzMiAgICAgcnhfc3RhdF9ldGhlcnN0YXRzcGt0czI1Nm9jdGV0c3RvNTExb2N0ZXRzOwogICAgdTMyICAgICByeF9zdGF0X2V0aGVyc3RhdHNwa3RzNTEyb2N0ZXRzdG8xMDIzb2N0ZXRzOwogICAgdTMyICAgICByeF9zdGF0X2V0aGVyc3RhdHNwa3RzMTAyNG9jdGV0c3RvMTUyMm9jdGV0czsKICAgIHUzMiAgICAgcnhfc3RhdF9ldGhlcnN0YXRzcGt0c292ZXIxNTIyb2N0ZXRzOwoKICAgIHUzMiAgICAgcnhfc3RhdF9mYWxzZWNhcnJpZXJlcnJvcnM7CgogICAgdTMyICAgICB0eF9zdGF0X2lmaGNvdXRvY3RldHM7CiAgICB1MzIgICAgIHR4X3N0YXRfaWZoY291dGJhZG9jdGV0czsKICAgIHUzMiAgICAgdHhfc3RhdF9ldGhlcnN0YXRzY29sbGlzaW9uczsKICAgIHUzMiAgICAgdHhfc3RhdF9vdXR4b25zZW50OwogICAgdTMyICAgICB0eF9zdGF0X291dHhvZmZzZW50OwogICAgdTMyICAgICB0eF9zdGF0X2Zsb3djb250cm9sZG9uZTsKICAgIHUzMiAgICAgdHhfc3RhdF9kb3Qzc3RhdHNzaW5nbGVjb2xsaXNpb25mcmFtZXM7CiAgICB1MzIgICAgIHR4X3N0YXRfZG90M3N0YXRzbXVsdGlwbGVjb2xsaXNpb25mcmFtZXM7CiAgICB1MzIgICAgIHR4X3N0YXRfZG90M3N0YXRzZGVmZXJyZWR0cmFuc21pc3Npb25zOwogICAgdTMyICAgICB0eF9zdGF0X2RvdDNzdGF0c2V4Y2Vzc2l2ZWNvbGxpc2lvbnM7CiAgICB1MzIgICAgIHR4X3N0YXRfZG90M3N0YXRzbGF0ZWNvbGxpc2lvbnM7CiAgICB1MzIgICAgIHR4X3N0YXRfaWZoY291dHVjYXN0cGt0czsKICAgIHUzMiAgICAgdHhfc3RhdF9pZmhjb3V0bXVsdGljYXN0cGt0czsKICAgIHUzMiAgICAgdHhfc3RhdF9pZmhjb3V0YnJvYWRjYXN0cGt0czsKICAgIHUzMiAgICAgdHhfc3RhdF9ldGhlcnN0YXRzcGt0czY0b2N0ZXRzOwogICAgdTMyICAgICB0eF9zdGF0X2V0aGVyc3RhdHNwa3RzNjVvY3RldHN0bzEyN29jdGV0czsKICAgIHUzMiAgICAgdHhfc3RhdF9ldGhlcnN0YXRzcGt0czEyOG9jdGV0c3RvMjU1b2N0ZXRzOwogICAgdTMyICAgICB0eF9zdGF0X2V0aGVyc3RhdHNwa3RzMjU2b2N0ZXRzdG81MTFvY3RldHM7CiAgICB1MzIgICAgIHR4X3N0YXRfZXRoZXJzdGF0c3BrdHM1MTJvY3RldHN0bzEwMjNvY3RldHM7CiAgICB1MzIgICAgIHR4X3N0YXRfZXRoZXJzdGF0c3BrdHMxMDI0b2N0ZXRzdG8xNTIyb2N0ZXRzOwogICAgdTMyICAgICB0eF9zdGF0X2V0aGVyc3RhdHNwa3Rzb3ZlcjE1MjJvY3RldHM7CiAgICB1MzIgICAgIHR4X3N0YXRfZG90M3N0YXRzaW50ZXJuYWxtYWN0cmFuc21pdGVycm9yczsKfTsKCgpzdHJ1Y3QgYm1hY19zdGF0cyB7CiAgICB1MzIgICAgIHR4X3N0YXRfZ3Rwa3RfbG87CiAgICB1MzIgICAgIHR4X3N0YXRfZ3Rwa3RfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZ3R4cGZfbG87CiAgICB1MzIgICAgIHR4X3N0YXRfZ3R4cGZfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZ3RmY3NfbG87CiAgICB1MzIgICAgIHR4X3N0YXRfZ3RmY3NfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZ3RtY2FfbG87CiAgICB1MzIgICAgIHR4X3N0YXRfZ3RtY2FfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZ3RiY2FfbG87CiAgICB1MzIgICAgIHR4X3N0YXRfZ3RiY2FfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZ3RmcmdfbG87CiAgICB1MzIgICAgIHR4X3N0YXRfZ3RmcmdfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZ3RvdnJfbG87CiAgICB1MzIgICAgIHR4X3N0YXRfZ3RvdnJfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZ3Q2NF9sbzsKICAgIHUzMiAgICAgdHhfc3RhdF9ndDY0X2hpOwogICAgdTMyICAgICB0eF9zdGF0X2d0MTI3X2xvOwogICAgdTMyICAgICB0eF9zdGF0X2d0MTI3X2hpOwogICAgdTMyICAgICB0eF9zdGF0X2d0MjU1X2xvOwogICAgdTMyICAgICB0eF9zdGF0X2d0MjU1X2hpOwogICAgdTMyICAgICB0eF9zdGF0X2d0NTExX2xvOwogICAgdTMyICAgICB0eF9zdGF0X2d0NTExX2hpOwogICAgdTMyICAgICB0eF9zdGF0X2d0MTAyM19sbzsKICAgIHUzMiAgICAgdHhfc3RhdF9ndDEwMjNfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZ3QxNTE4X2xvOwogICAgdTMyICAgICB0eF9zdGF0X2d0MTUxOF9oaTsKICAgIHUzMiAgICAgdHhfc3RhdF9ndDIwNDdfbG87CiAgICB1MzIgICAgIHR4X3N0YXRfZ3QyMDQ3X2hpOwogICAgdTMyICAgICB0eF9zdGF0X2d0NDA5NV9sbzsKICAgIHUzMiAgICAgdHhfc3RhdF9ndDQwOTVfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZ3Q5MjE2X2xvOwogICAgdTMyICAgICB0eF9zdGF0X2d0OTIxNl9oaTsKICAgIHUzMiAgICAgdHhfc3RhdF9ndDE2MzgzX2xvOwogICAgdTMyICAgICB0eF9zdGF0X2d0MTYzODNfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZ3RtYXhfbG87CiAgICB1MzIgICAgIHR4X3N0YXRfZ3RtYXhfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZ3R1ZmxfbG87CiAgICB1MzIgICAgIHR4X3N0YXRfZ3R1ZmxfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZ3RlcnJfbG87CiAgICB1MzIgICAgIHR4X3N0YXRfZ3RlcnJfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZ3RieXRfbG87CiAgICB1MzIgICAgIHR4X3N0YXRfZ3RieXRfaGk7CgogICAgdTMyICAgICByeF9zdGF0X2dyNjRfbG87CiAgICB1MzIgICAgIHJ4X3N0YXRfZ3I2NF9oaTsKICAgIHUzMiAgICAgcnhfc3RhdF9ncjEyN19sbzsKICAgIHUzMiAgICAgcnhfc3RhdF9ncjEyN19oaTsKICAgIHUzMiAgICAgcnhfc3RhdF9ncjI1NV9sbzsKICAgIHUzMiAgICAgcnhfc3RhdF9ncjI1NV9oaTsKICAgIHUzMiAgICAgcnhfc3RhdF9ncjUxMV9sbzsKICAgIHUzMiAgICAgcnhfc3RhdF9ncjUxMV9oaTsKICAgIHUzMiAgICAgcnhfc3RhdF9ncjEwMjNfbG87CiAgICB1MzIgICAgIHJ4X3N0YXRfZ3IxMDIzX2hpOwogICAgdTMyICAgICByeF9zdGF0X2dyMTUxOF9sbzsKICAgIHUzMiAgICAgcnhfc3RhdF9ncjE1MThfaGk7CiAgICB1MzIgICAgIHJ4X3N0YXRfZ3IyMDQ3X2xvOwogICAgdTMyICAgICByeF9zdGF0X2dyMjA0N19oaTsKICAgIHUzMiAgICAgcnhfc3RhdF9ncjQwOTVfbG87CiAgICB1MzIgICAgIHJ4X3N0YXRfZ3I0MDk1X2hpOwogICAgdTMyICAgICByeF9zdGF0X2dyOTIxNl9sbzsKICAgIHUzMiAgICAgcnhfc3RhdF9ncjkyMTZfaGk7CiAgICB1MzIgICAgIHJ4X3N0YXRfZ3IxNjM4M19sbzsKICAgIHUzMiAgICAgcnhfc3RhdF9ncjE2MzgzX2hpOwogICAgdTMyICAgICByeF9zdGF0X2dybWF4X2xvOwogICAgdTMyICAgICByeF9zdGF0X2dybWF4X2hpOwogICAgdTMyICAgICByeF9zdGF0X2dycGt0X2xvOwogICAgdTMyICAgICByeF9zdGF0X2dycGt0X2hpOwogICAgdTMyICAgICByeF9zdGF0X2dyZmNzX2xvOwogICAgdTMyICAgICByeF9zdGF0X2dyZmNzX2hpOwogICAgdTMyICAgICByeF9zdGF0X2dybWNhX2xvOwogICAgdTMyICAgICByeF9zdGF0X2dybWNhX2hpOwogICAgdTMyICAgICByeF9zdGF0X2dyYmNhX2xvOwogICAgdTMyICAgICByeF9zdGF0X2dyYmNhX2hpOwogICAgdTMyICAgICByeF9zdGF0X2dyeGNmX2xvOwogICAgdTMyICAgICByeF9zdGF0X2dyeGNmX2hpOwogICAgdTMyICAgICByeF9zdGF0X2dyeHBmX2xvOwogICAgdTMyICAgICByeF9zdGF0X2dyeHBmX2hpOwogICAgdTMyICAgICByeF9zdGF0X2dyeHVvX2xvOwogICAgdTMyICAgICByeF9zdGF0X2dyeHVvX2hpOwogICAgdTMyICAgICByeF9zdGF0X2dyamJyX2xvOwogICAgdTMyICAgICByeF9zdGF0X2dyamJyX2hpOwogICAgdTMyICAgICByeF9zdGF0X2dyb3ZyX2xvOwogICAgdTMyICAgICByeF9zdGF0X2dyb3ZyX2hpOwogICAgdTMyICAgICByeF9zdGF0X2dyZmxyX2xvOwogICAgdTMyICAgICByeF9zdGF0X2dyZmxyX2hpOwogICAgdTMyICAgICByeF9zdGF0X2dybWVnX2xvOwogICAgdTMyICAgICByeF9zdGF0X2dybWVnX2hpOwogICAgdTMyICAgICByeF9zdGF0X2dybWViX2xvOwogICAgdTMyICAgICByeF9zdGF0X2dybWViX2hpOwogICAgdTMyICAgICByeF9zdGF0X2dyYnl0X2xvOwogICAgdTMyICAgICByeF9zdGF0X2dyYnl0X2hpOwogICAgdTMyICAgICByeF9zdGF0X2dydW5kX2xvOwogICAgdTMyICAgICByeF9zdGF0X2dydW5kX2hpOwogICAgdTMyICAgICByeF9zdGF0X2dyZnJnX2xvOwogICAgdTMyICAgICByeF9zdGF0X2dyZnJnX2hpOwogICAgdTMyICAgICByeF9zdGF0X2dyZXJiX2xvOwogICAgdTMyICAgICByeF9zdGF0X2dyZXJiX2hpOwogICAgdTMyICAgICByeF9zdGF0X2dyZnJlX2xvOwogICAgdTMyICAgICByeF9zdGF0X2dyZnJlX2hpOwogICAgdTMyICAgICByeF9zdGF0X2dyaXBqX2xvOwogICAgdTMyICAgICByeF9zdGF0X2dyaXBqX2hpOwp9OwoKCnVuaW9uIG1hY19zdGF0cyB7CiAgICBzdHJ1Y3QgZW1hY19zdGF0cwllbWFjX3N0YXRzOwogICAgc3RydWN0IGJtYWNfc3RhdHMJYm1hY19zdGF0czsKfTsKCgpzdHJ1Y3QgbWFjX3N0eCB7CiAgICAvKiBpbl9iYWRfb2N0ZXRzICovCiAgICB1MzIgICAgIHJ4X3N0YXRfaWZoY2luYmFkb2N0ZXRzX2hpOwogICAgdTMyICAgICByeF9zdGF0X2lmaGNpbmJhZG9jdGV0c19sbzsKCiAgICAvKiBvdXRfYmFkX29jdGV0cyAqLwogICAgdTMyICAgICB0eF9zdGF0X2lmaGNvdXRiYWRvY3RldHNfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfaWZoY291dGJhZG9jdGV0c19sbzsKCiAgICAvKiBjcmNfcmVjZWl2ZV9lcnJvcnMgKi8KICAgIHUzMiAgICAgcnhfc3RhdF9kb3Qzc3RhdHNmY3NlcnJvcnNfaGk7CiAgICB1MzIgICAgIHJ4X3N0YXRfZG90M3N0YXRzZmNzZXJyb3JzX2xvOwogICAgLyogYWxpZ25tZW50X2Vycm9ycyAqLwogICAgdTMyICAgICByeF9zdGF0X2RvdDNzdGF0c2FsaWdubWVudGVycm9yc19oaTsKICAgIHUzMiAgICAgcnhfc3RhdF9kb3Qzc3RhdHNhbGlnbm1lbnRlcnJvcnNfbG87CiAgICAvKiBjYXJyaWVyX3NlbnNlX2Vycm9ycyAqLwogICAgdTMyICAgICByeF9zdGF0X2RvdDNzdGF0c2NhcnJpZXJzZW5zZWVycm9yc19oaTsKICAgIHUzMiAgICAgcnhfc3RhdF9kb3Qzc3RhdHNjYXJyaWVyc2Vuc2VlcnJvcnNfbG87CiAgICAvKiBmYWxzZV9jYXJyaWVyX2RldGVjdGlvbnMgKi8KICAgIHUzMiAgICAgcnhfc3RhdF9mYWxzZWNhcnJpZXJlcnJvcnNfaGk7CiAgICB1MzIgICAgIHJ4X3N0YXRfZmFsc2VjYXJyaWVyZXJyb3JzX2xvOwoKICAgIC8qIHJ1bnRfcGFja2V0c19yZWNlaXZlZCAqLwogICAgdTMyICAgICByeF9zdGF0X2V0aGVyc3RhdHN1bmRlcnNpemVwa3RzX2hpOwogICAgdTMyICAgICByeF9zdGF0X2V0aGVyc3RhdHN1bmRlcnNpemVwa3RzX2xvOwogICAgLyogamFiYmVyX3BhY2tldHNfcmVjZWl2ZWQgKi8KICAgIHUzMiAgICAgcnhfc3RhdF9kb3Qzc3RhdHNmcmFtZXN0b29sb25nX2hpOwogICAgdTMyICAgICByeF9zdGF0X2RvdDNzdGF0c2ZyYW1lc3Rvb2xvbmdfbG87CgogICAgLyogZXJyb3JfcnVudF9wYWNrZXRzX3JlY2VpdmVkICovCiAgICB1MzIgICAgIHJ4X3N0YXRfZXRoZXJzdGF0c2ZyYWdtZW50c19oaTsKICAgIHUzMiAgICAgcnhfc3RhdF9ldGhlcnN0YXRzZnJhZ21lbnRzX2xvOwogICAgLyogZXJyb3JfamFiYmVyX3BhY2tldHNfcmVjZWl2ZWQgKi8KICAgIHUzMiAgICAgcnhfc3RhdF9ldGhlcnN0YXRzamFiYmVyc19oaTsKICAgIHUzMiAgICAgcnhfc3RhdF9ldGhlcnN0YXRzamFiYmVyc19sbzsKCiAgICAvKiBjb250cm9sX2ZyYW1lc19yZWNlaXZlZCAqLwogICAgdTMyICAgICByeF9zdGF0X21hY2NvbnRyb2xmcmFtZXNyZWNlaXZlZF9oaTsKICAgIHUzMiAgICAgcnhfc3RhdF9tYWNjb250cm9sZnJhbWVzcmVjZWl2ZWRfbG87CiAgICB1MzIgICAgIHJ4X3N0YXRfYm1hY194cGZfaGk7CiAgICB1MzIgICAgIHJ4X3N0YXRfYm1hY194cGZfbG87CiAgICB1MzIgICAgIHJ4X3N0YXRfYm1hY194Y2ZfaGk7CiAgICB1MzIgICAgIHJ4X3N0YXRfYm1hY194Y2ZfbG87CgogICAgLyogeG9mZl9zdGF0ZV9lbnRlcmVkICovCiAgICB1MzIgICAgIHJ4X3N0YXRfeG9mZnN0YXRlZW50ZXJlZF9oaTsKICAgIHUzMiAgICAgcnhfc3RhdF94b2Zmc3RhdGVlbnRlcmVkX2xvOwogICAgLyogcGF1c2VfeG9uX2ZyYW1lc19yZWNlaXZlZCAqLwogICAgdTMyICAgICByeF9zdGF0X3hvbnBhdXNlZnJhbWVzcmVjZWl2ZWRfaGk7CiAgICB1MzIgICAgIHJ4X3N0YXRfeG9ucGF1c2VmcmFtZXNyZWNlaXZlZF9sbzsKICAgIC8qIHBhdXNlX3hvZmZfZnJhbWVzX3JlY2VpdmVkICovCiAgICB1MzIgICAgIHJ4X3N0YXRfeG9mZnBhdXNlZnJhbWVzcmVjZWl2ZWRfaGk7CiAgICB1MzIgICAgIHJ4X3N0YXRfeG9mZnBhdXNlZnJhbWVzcmVjZWl2ZWRfbG87CiAgICAvKiBwYXVzZV94b25fZnJhbWVzX3RyYW5zbWl0dGVkICovCiAgICB1MzIgICAgIHR4X3N0YXRfb3V0eG9uc2VudF9oaTsKICAgIHUzMiAgICAgdHhfc3RhdF9vdXR4b25zZW50X2xvOwogICAgLyogcGF1c2VfeG9mZl9mcmFtZXNfdHJhbnNtaXR0ZWQgKi8KICAgIHUzMiAgICAgdHhfc3RhdF9vdXR4b2Zmc2VudF9oaTsKICAgIHUzMiAgICAgdHhfc3RhdF9vdXR4b2Zmc2VudF9sbzsKICAgIC8qIGZsb3dfY29udHJvbF9kb25lICovCiAgICB1MzIgICAgIHR4X3N0YXRfZmxvd2NvbnRyb2xkb25lX2hpOwogICAgdTMyICAgICB0eF9zdGF0X2Zsb3djb250cm9sZG9uZV9sbzsKCiAgICAvKiBldGhlcl9zdGF0c19jb2xsaXNpb25zICovCiAgICB1MzIgICAgIHR4X3N0YXRfZXRoZXJzdGF0c2NvbGxpc2lvbnNfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZXRoZXJzdGF0c2NvbGxpc2lvbnNfbG87CiAgICAvKiBzaW5nbGVfY29sbGlzaW9uX3RyYW5zbWl0X2ZyYW1lcyAqLwogICAgdTMyICAgICB0eF9zdGF0X2RvdDNzdGF0c3NpbmdsZWNvbGxpc2lvbmZyYW1lc19oaTsKICAgIHUzMiAgICAgdHhfc3RhdF9kb3Qzc3RhdHNzaW5nbGVjb2xsaXNpb25mcmFtZXNfbG87CiAgICAvKiBtdWx0aXBsZV9jb2xsaXNpb25fdHJhbnNtaXRfZnJhbWVzICovCiAgICB1MzIgICAgIHR4X3N0YXRfZG90M3N0YXRzbXVsdGlwbGVjb2xsaXNpb25mcmFtZXNfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZG90M3N0YXRzbXVsdGlwbGVjb2xsaXNpb25mcmFtZXNfbG87CiAgICAvKiBkZWZlcnJlZF90cmFuc21pc3Npb25zICovCiAgICB1MzIgICAgIHR4X3N0YXRfZG90M3N0YXRzZGVmZXJyZWR0cmFuc21pc3Npb25zX2hpOwogICAgdTMyICAgICB0eF9zdGF0X2RvdDNzdGF0c2RlZmVycmVkdHJhbnNtaXNzaW9uc19sbzsKICAgIC8qIGV4Y2Vzc2l2ZV9jb2xsaXNpb25fZnJhbWVzICovCiAgICB1MzIgICAgIHR4X3N0YXRfZG90M3N0YXRzZXhjZXNzaXZlY29sbGlzaW9uc19oaTsKICAgIHUzMiAgICAgdHhfc3RhdF9kb3Qzc3RhdHNleGNlc3NpdmVjb2xsaXNpb25zX2xvOwogICAgLyogbGF0ZV9jb2xsaXNpb25fZnJhbWVzICovCiAgICB1MzIgICAgIHR4X3N0YXRfZG90M3N0YXRzbGF0ZWNvbGxpc2lvbnNfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZG90M3N0YXRzbGF0ZWNvbGxpc2lvbnNfbG87CgogICAgLyogZnJhbWVzX3RyYW5zbWl0dGVkXzY0X2J5dGVzICovCiAgICB1MzIgICAgIHR4X3N0YXRfZXRoZXJzdGF0c3BrdHM2NG9jdGV0c19oaTsKICAgIHUzMiAgICAgdHhfc3RhdF9ldGhlcnN0YXRzcGt0czY0b2N0ZXRzX2xvOwogICAgLyogZnJhbWVzX3RyYW5zbWl0dGVkXzY1XzEyN19ieXRlcyAqLwogICAgdTMyICAgICB0eF9zdGF0X2V0aGVyc3RhdHNwa3RzNjVvY3RldHN0bzEyN29jdGV0c19oaTsKICAgIHUzMiAgICAgdHhfc3RhdF9ldGhlcnN0YXRzcGt0czY1b2N0ZXRzdG8xMjdvY3RldHNfbG87CiAgICAvKiBmcmFtZXNfdHJhbnNtaXR0ZWRfMTI4XzI1NV9ieXRlcyAqLwogICAgdTMyICAgICB0eF9zdGF0X2V0aGVyc3RhdHNwa3RzMTI4b2N0ZXRzdG8yNTVvY3RldHNfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZXRoZXJzdGF0c3BrdHMxMjhvY3RldHN0bzI1NW9jdGV0c19sbzsKICAgIC8qIGZyYW1lc190cmFuc21pdHRlZF8yNTZfNTExX2J5dGVzICovCiAgICB1MzIgICAgIHR4X3N0YXRfZXRoZXJzdGF0c3BrdHMyNTZvY3RldHN0bzUxMW9jdGV0c19oaTsKICAgIHUzMiAgICAgdHhfc3RhdF9ldGhlcnN0YXRzcGt0czI1Nm9jdGV0c3RvNTExb2N0ZXRzX2xvOwogICAgLyogZnJhbWVzX3RyYW5zbWl0dGVkXzUxMl8xMDIzX2J5dGVzICovCiAgICB1MzIgICAgIHR4X3N0YXRfZXRoZXJzdGF0c3BrdHM1MTJvY3RldHN0bzEwMjNvY3RldHNfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfZXRoZXJzdGF0c3BrdHM1MTJvY3RldHN0bzEwMjNvY3RldHNfbG87CiAgICAvKiBmcmFtZXNfdHJhbnNtaXR0ZWRfMTAyNF8xNTIyX2J5dGVzICovCiAgICB1MzIgICAgIHR4X3N0YXRfZXRoZXJzdGF0c3BrdHMxMDI0b2N0ZXRzdG8xNTIyb2N0ZXRzX2hpOwogICAgdTMyICAgICB0eF9zdGF0X2V0aGVyc3RhdHNwa3RzMTAyNG9jdGV0c3RvMTUyMm9jdGV0c19sbzsKICAgIC8qIGZyYW1lc190cmFuc21pdHRlZF8xNTIzXzkwMjJfYnl0ZXMgKi8KICAgIHUzMiAgICAgdHhfc3RhdF9ldGhlcnN0YXRzcGt0c292ZXIxNTIyb2N0ZXRzX2hpOwogICAgdTMyICAgICB0eF9zdGF0X2V0aGVyc3RhdHNwa3Rzb3ZlcjE1MjJvY3RldHNfbG87CiAgICB1MzIgICAgIHR4X3N0YXRfYm1hY18yMDQ3X2hpOwogICAgdTMyICAgICB0eF9zdGF0X2JtYWNfMjA0N19sbzsKICAgIHUzMiAgICAgdHhfc3RhdF9ibWFjXzQwOTVfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfYm1hY180MDk1X2xvOwogICAgdTMyICAgICB0eF9zdGF0X2JtYWNfOTIxNl9oaTsKICAgIHUzMiAgICAgdHhfc3RhdF9ibWFjXzkyMTZfbG87CiAgICB1MzIgICAgIHR4X3N0YXRfYm1hY18xNjM4M19oaTsKICAgIHUzMiAgICAgdHhfc3RhdF9ibWFjXzE2MzgzX2xvOwoKICAgIC8qIGludGVybmFsX21hY190cmFuc21pdF9lcnJvcnMgKi8KICAgIHUzMiAgICAgdHhfc3RhdF9kb3Qzc3RhdHNpbnRlcm5hbG1hY3RyYW5zbWl0ZXJyb3JzX2hpOwogICAgdTMyICAgICB0eF9zdGF0X2RvdDNzdGF0c2ludGVybmFsbWFjdHJhbnNtaXRlcnJvcnNfbG87CgogICAgLyogaWZfb3V0X2Rpc2NhcmRzICovCiAgICB1MzIgICAgIHR4X3N0YXRfYm1hY191ZmxfaGk7CiAgICB1MzIgICAgIHR4X3N0YXRfYm1hY191ZmxfbG87Cn07CgoKI2RlZmluZSBNQUNfU1RYX0lEWF9NQVggCQkgICAgMgoKc3RydWN0IGhvc3RfcG9ydF9zdGF0cyB7CiAgICB1MzIgCSAgIGhvc3RfcG9ydF9zdGF0c19zdGFydDsKCiAgICBzdHJ1Y3QgbWFjX3N0eCBtYWNfc3R4W01BQ19TVFhfSURYX01BWF07CgogICAgdTMyIAkgICBicmJfZHJvcF9oaTsKICAgIHUzMiAJICAgYnJiX2Ryb3BfbG87CgogICAgdTMyIAkgICBob3N0X3BvcnRfc3RhdHNfZW5kOwp9OwoKCnN0cnVjdCBob3N0X2Z1bmNfc3RhdHMgewogICAgdTMyICAgICBob3N0X2Z1bmNfc3RhdHNfc3RhcnQ7CgogICAgdTMyICAgICB0b3RhbF9ieXRlc19yZWNlaXZlZF9oaTsKICAgIHUzMiAgICAgdG90YWxfYnl0ZXNfcmVjZWl2ZWRfbG87CgogICAgdTMyICAgICB0b3RhbF9ieXRlc190cmFuc21pdHRlZF9oaTsKICAgIHUzMiAgICAgdG90YWxfYnl0ZXNfdHJhbnNtaXR0ZWRfbG87CgogICAgdTMyICAgICB0b3RhbF91bmljYXN0X3BhY2tldHNfcmVjZWl2ZWRfaGk7CiAgICB1MzIgICAgIHRvdGFsX3VuaWNhc3RfcGFja2V0c19yZWNlaXZlZF9sbzsKCiAgICB1MzIgICAgIHRvdGFsX211bHRpY2FzdF9wYWNrZXRzX3JlY2VpdmVkX2hpOwogICAgdTMyICAgICB0b3RhbF9tdWx0aWNhc3RfcGFja2V0c19yZWNlaXZlZF9sbzsKCiAgICB1MzIgICAgIHRvdGFsX2Jyb2FkY2FzdF9wYWNrZXRzX3JlY2VpdmVkX2hpOwogICAgdTMyICAgICB0b3RhbF9icm9hZGNhc3RfcGFja2V0c19yZWNlaXZlZF9sbzsKCiAgICB1MzIgICAgIHRvdGFsX3VuaWNhc3RfcGFja2V0c190cmFuc21pdHRlZF9oaTsKICAgIHUzMiAgICAgdG90YWxfdW5pY2FzdF9wYWNrZXRzX3RyYW5zbWl0dGVkX2xvOwoKICAgIHUzMiAgICAgdG90YWxfbXVsdGljYXN0X3BhY2tldHNfdHJhbnNtaXR0ZWRfaGk7CiAgICB1MzIgICAgIHRvdGFsX211bHRpY2FzdF9wYWNrZXRzX3RyYW5zbWl0dGVkX2xvOwoKICAgIHUzMiAgICAgdG90YWxfYnJvYWRjYXN0X3BhY2tldHNfdHJhbnNtaXR0ZWRfaGk7CiAgICB1MzIgICAgIHRvdGFsX2Jyb2FkY2FzdF9wYWNrZXRzX3RyYW5zbWl0dGVkX2xvOwoKICAgIHUzMiAgICAgdmFsaWRfYnl0ZXNfcmVjZWl2ZWRfaGk7CiAgICB1MzIgICAgIHZhbGlkX2J5dGVzX3JlY2VpdmVkX2xvOwoKICAgIHUzMiAgICAgaG9zdF9mdW5jX3N0YXRzX2VuZDsKfTsKCgojZGVmaW5lIEJDTV81NzEwX0ZXX01BSk9SX1ZFUlNJT04JCQk1CiNkZWZpbmUgQkNNXzU3MTBfRldfTUlOT1JfVkVSU0lPTgkJCTIKI2RlZmluZSBCQ01fNTcxMF9GV19SRVZJU0lPTl9WRVJTSU9OCQkJMTMKI2RlZmluZSBCQ01fNTcxMF9GV19FTkdJTkVFUklOR19WRVJTSU9OIAkJMAojZGVmaW5lIEJDTV81NzEwX0ZXX0NPTVBJTEVfRkxBR1MJCQkxCgoKLyoKICogYXR0ZW50aW9uIGJpdHMKICovCnN0cnVjdCBhdHRlbl9kZWZfc3RhdHVzX2Jsb2NrIHsKCV9fbGUzMiBhdHRuX2JpdHM7CglfX2xlMzIgYXR0bl9iaXRzX2FjazsKCXU4IHN0YXR1c19ibG9ja19pZDsKCXU4IHJlc2VydmVkMDsKCV9fbGUxNiBhdHRuX2JpdHNfaW5kZXg7CglfX2xlMzIgcmVzZXJ2ZWQxOwp9OwoKCi8qCiAqIGNvbW1vbiBkYXRhIGZvciBhbGwgcHJvdG9jb2xzCiAqLwpzdHJ1Y3QgZG9vcmJlbGxfaGRyIHsKCXU4IGhlYWRlcjsKI2RlZmluZSBET09SQkVMTF9IRFJfUlggKDB4MTw8MCkKI2RlZmluZSBET09SQkVMTF9IRFJfUlhfU0hJRlQgMAojZGVmaW5lIERPT1JCRUxMX0hEUl9EQl9UWVBFICgweDE8PDEpCiNkZWZpbmUgRE9PUkJFTExfSERSX0RCX1RZUEVfU0hJRlQgMQojZGVmaW5lIERPT1JCRUxMX0hEUl9EUE1fU0laRSAoMHgzPDwyKQojZGVmaW5lIERPT1JCRUxMX0hEUl9EUE1fU0laRV9TSElGVCAyCiNkZWZpbmUgRE9PUkJFTExfSERSX0NPTk5fVFlQRSAoMHhGPDw0KQojZGVmaW5lIERPT1JCRUxMX0hEUl9DT05OX1RZUEVfU0hJRlQgNAp9OwoKLyoKICogZG9vcmJlbGwgbWVzc2FnZSBzZW50IHRvIHRoZSBjaGlwCiAqLwpzdHJ1Y3QgZG9vcmJlbGwgewojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1MTYgemVyb19maWxsMjsKCXU4IHplcm9fZmlsbDE7CglzdHJ1Y3QgZG9vcmJlbGxfaGRyIGhlYWRlcjsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCglzdHJ1Y3QgZG9vcmJlbGxfaGRyIGhlYWRlcjsKCXU4IHplcm9fZmlsbDE7Cgl1MTYgemVyb19maWxsMjsKI2VuZGlmCn07CgoKLyoKICogZG9vcmJlbGwgbWVzc2FnZSBzZW50IHRvIHRoZSBjaGlwCiAqLwpzdHJ1Y3QgZG9vcmJlbGxfc2V0X3Byb2QgewojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1MTYgcHJvZDsKCXU4IHplcm9fZmlsbDE7CglzdHJ1Y3QgZG9vcmJlbGxfaGRyIGhlYWRlcjsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCglzdHJ1Y3QgZG9vcmJlbGxfaGRyIGhlYWRlcjsKCXU4IHplcm9fZmlsbDE7Cgl1MTYgcHJvZDsKI2VuZGlmCn07CgoKLyoKICogSUdVIGRyaXZlciBhY2tub3dsZWRnZW1lbnQgcmVnaXN0ZXIKICovCnN0cnVjdCBpZ3VfYWNrX3JlZ2lzdGVyIHsKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IHNiX2lkX2FuZF9mbGFnczsKI2RlZmluZSBJR1VfQUNLX1JFR0lTVEVSX1NUQVRVU19CTE9DS19JRCAoMHgxRjw8MCkKI2RlZmluZSBJR1VfQUNLX1JFR0lTVEVSX1NUQVRVU19CTE9DS19JRF9TSElGVCAwCiNkZWZpbmUgSUdVX0FDS19SRUdJU1RFUl9TVE9STV9JRCAoMHg3PDw1KQojZGVmaW5lIElHVV9BQ0tfUkVHSVNURVJfU1RPUk1fSURfU0hJRlQgNQojZGVmaW5lIElHVV9BQ0tfUkVHSVNURVJfVVBEQVRFX0lOREVYICgweDE8PDgpCiNkZWZpbmUgSUdVX0FDS19SRUdJU1RFUl9VUERBVEVfSU5ERVhfU0hJRlQgOAojZGVmaW5lIElHVV9BQ0tfUkVHSVNURVJfSU5URVJSVVBUX01PREUgKDB4Mzw8OSkKI2RlZmluZSBJR1VfQUNLX1JFR0lTVEVSX0lOVEVSUlVQVF9NT0RFX1NISUZUIDkKI2RlZmluZSBJR1VfQUNLX1JFR0lTVEVSX1JFU0VSVkVEICgweDFGPDwxMSkKI2RlZmluZSBJR1VfQUNLX1JFR0lTVEVSX1JFU0VSVkVEX1NISUZUIDExCgl1MTYgc3RhdHVzX2Jsb2NrX2luZGV4OwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXUxNiBzdGF0dXNfYmxvY2tfaW5kZXg7Cgl1MTYgc2JfaWRfYW5kX2ZsYWdzOwojZGVmaW5lIElHVV9BQ0tfUkVHSVNURVJfU1RBVFVTX0JMT0NLX0lEICgweDFGPDwwKQojZGVmaW5lIElHVV9BQ0tfUkVHSVNURVJfU1RBVFVTX0JMT0NLX0lEX1NISUZUIDAKI2RlZmluZSBJR1VfQUNLX1JFR0lTVEVSX1NUT1JNX0lEICgweDc8PDUpCiNkZWZpbmUgSUdVX0FDS19SRUdJU1RFUl9TVE9STV9JRF9TSElGVCA1CiNkZWZpbmUgSUdVX0FDS19SRUdJU1RFUl9VUERBVEVfSU5ERVggKDB4MTw8OCkKI2RlZmluZSBJR1VfQUNLX1JFR0lTVEVSX1VQREFURV9JTkRFWF9TSElGVCA4CiNkZWZpbmUgSUdVX0FDS19SRUdJU1RFUl9JTlRFUlJVUFRfTU9ERSAoMHgzPDw5KQojZGVmaW5lIElHVV9BQ0tfUkVHSVNURVJfSU5URVJSVVBUX01PREVfU0hJRlQgOQojZGVmaW5lIElHVV9BQ0tfUkVHSVNURVJfUkVTRVJWRUQgKDB4MUY8PDExKQojZGVmaW5lIElHVV9BQ0tfUkVHSVNURVJfUkVTRVJWRURfU0hJRlQgMTEKI2VuZGlmCn07CgoKLyoKICogSUdVIGRyaXZlciBhY2tub3dsZWRnZW1lbnQgcmVnaXN0ZXIKICovCnN0cnVjdCBpZ3VfYmFja3dhcmRfY29tcGF0aWJsZSB7Cgl1MzIgc2JfaWRfYW5kX2ZsYWdzOwojZGVmaW5lIElHVV9CQUNLV0FSRF9DT01QQVRJQkxFX1NCX0lOREVYICgweEZGRkY8PDApCiNkZWZpbmUgSUdVX0JBQ0tXQVJEX0NPTVBBVElCTEVfU0JfSU5ERVhfU0hJRlQgMAojZGVmaW5lIElHVV9CQUNLV0FSRF9DT01QQVRJQkxFX1NCX1NFTEVDVCAoMHgxRjw8MTYpCiNkZWZpbmUgSUdVX0JBQ0tXQVJEX0NPTVBBVElCTEVfU0JfU0VMRUNUX1NISUZUIDE2CiNkZWZpbmUgSUdVX0JBQ0tXQVJEX0NPTVBBVElCTEVfU0VHTUVOVF9BQ0NFU1MgKDB4Nzw8MjEpCiNkZWZpbmUgSUdVX0JBQ0tXQVJEX0NPTVBBVElCTEVfU0VHTUVOVF9BQ0NFU1NfU0hJRlQgMjEKI2RlZmluZSBJR1VfQkFDS1dBUkRfQ09NUEFUSUJMRV9CVVBEQVRFICgweDE8PDI0KQojZGVmaW5lIElHVV9CQUNLV0FSRF9DT01QQVRJQkxFX0JVUERBVEVfU0hJRlQgMjQKI2RlZmluZSBJR1VfQkFDS1dBUkRfQ09NUEFUSUJMRV9FTkFCTEVfSU5UICgweDM8PDI1KQojZGVmaW5lIElHVV9CQUNLV0FSRF9DT01QQVRJQkxFX0VOQUJMRV9JTlRfU0hJRlQgMjUKI2RlZmluZSBJR1VfQkFDS1dBUkRfQ09NUEFUSUJMRV9SRVNFUlZFRF8wICgweDFGPDwyNykKI2RlZmluZSBJR1VfQkFDS1dBUkRfQ09NUEFUSUJMRV9SRVNFUlZFRF8wX1NISUZUIDI3Cgl1MzIgcmVzZXJ2ZWRfMjsKfTsKCgovKgogKiBJR1UgZHJpdmVyIGFja25vd2xlZGdlbWVudCByZWdpc3RlcgogKi8Kc3RydWN0IGlndV9yZWd1bGFyIHsKCXUzMiBzYl9pZF9hbmRfZmxhZ3M7CiNkZWZpbmUgSUdVX1JFR1VMQVJfU0JfSU5ERVggKDB4RkZGRkY8PDApCiNkZWZpbmUgSUdVX1JFR1VMQVJfU0JfSU5ERVhfU0hJRlQgMAojZGVmaW5lIElHVV9SRUdVTEFSX1JFU0VSVkVEMCAoMHgxPDwyMCkKI2RlZmluZSBJR1VfUkVHVUxBUl9SRVNFUlZFRDBfU0hJRlQgMjAKI2RlZmluZSBJR1VfUkVHVUxBUl9TRUdNRU5UX0FDQ0VTUyAoMHg3PDwyMSkKI2RlZmluZSBJR1VfUkVHVUxBUl9TRUdNRU5UX0FDQ0VTU19TSElGVCAyMQojZGVmaW5lIElHVV9SRUdVTEFSX0JVUERBVEUgKDB4MTw8MjQpCiNkZWZpbmUgSUdVX1JFR1VMQVJfQlVQREFURV9TSElGVCAyNAojZGVmaW5lIElHVV9SRUdVTEFSX0VOQUJMRV9JTlQgKDB4Mzw8MjUpCiNkZWZpbmUgSUdVX1JFR1VMQVJfRU5BQkxFX0lOVF9TSElGVCAyNQojZGVmaW5lIElHVV9SRUdVTEFSX1JFU0VSVkVEXzEgKDB4MTw8MjcpCiNkZWZpbmUgSUdVX1JFR1VMQVJfUkVTRVJWRURfMV9TSElGVCAyNwojZGVmaW5lIElHVV9SRUdVTEFSX0NMRUFOVVBfVFlQRSAoMHgzPDwyOCkKI2RlZmluZSBJR1VfUkVHVUxBUl9DTEVBTlVQX1RZUEVfU0hJRlQgMjgKI2RlZmluZSBJR1VfUkVHVUxBUl9DTEVBTlVQX1NFVCAoMHgxPDwzMCkKI2RlZmluZSBJR1VfUkVHVUxBUl9DTEVBTlVQX1NFVF9TSElGVCAzMAojZGVmaW5lIElHVV9SRUdVTEFSX0JDTEVBTlVQICgweDE8PDMxKQojZGVmaW5lIElHVV9SRUdVTEFSX0JDTEVBTlVQX1NISUZUIDMxCgl1MzIgcmVzZXJ2ZWRfMjsKfTsKCi8qCiAqIElHVSBkcml2ZXIgYWNrbm93bGVkZ2VtZW50IHJlZ2lzdGVyCiAqLwp1bmlvbiBpZ3VfY29uc3Byb2RfcmVnIHsKCXN0cnVjdCBpZ3VfcmVndWxhciByZWd1bGFyOwoJc3RydWN0IGlndV9iYWNrd2FyZF9jb21wYXRpYmxlIGJhY2t3YXJkX2NvbXBhdGlibGU7Cn07CgoKLyoKICogUGFyc2VyIHBhcnNpbmcgZmxhZ3MgZmllbGQKICovCnN0cnVjdCBwYXJzaW5nX2ZsYWdzIHsKCV9fbGUxNiBmbGFnczsKI2RlZmluZSBQQVJTSU5HX0ZMQUdTX0VUSEVSTkVUX0FERFJFU1NfVFlQRSAoMHgxPDwwKQojZGVmaW5lIFBBUlNJTkdfRkxBR1NfRVRIRVJORVRfQUREUkVTU19UWVBFX1NISUZUIDAKI2RlZmluZSBQQVJTSU5HX0ZMQUdTX1ZMQU4gKDB4MTw8MSkKI2RlZmluZSBQQVJTSU5HX0ZMQUdTX1ZMQU5fU0hJRlQgMQojZGVmaW5lIFBBUlNJTkdfRkxBR1NfRVhUUkFfVkxBTiAoMHgxPDwyKQojZGVmaW5lIFBBUlNJTkdfRkxBR1NfRVhUUkFfVkxBTl9TSElGVCAyCiNkZWZpbmUgUEFSU0lOR19GTEFHU19PVkVSX0VUSEVSTkVUX1BST1RPQ09MICgweDM8PDMpCiNkZWZpbmUgUEFSU0lOR19GTEFHU19PVkVSX0VUSEVSTkVUX1BST1RPQ09MX1NISUZUIDMKI2RlZmluZSBQQVJTSU5HX0ZMQUdTX0lQX09QVElPTlMgKDB4MTw8NSkKI2RlZmluZSBQQVJTSU5HX0ZMQUdTX0lQX09QVElPTlNfU0hJRlQgNQojZGVmaW5lIFBBUlNJTkdfRkxBR1NfRlJBR01FTlRBVElPTl9TVEFUVVMgKDB4MTw8NikKI2RlZmluZSBQQVJTSU5HX0ZMQUdTX0ZSQUdNRU5UQVRJT05fU1RBVFVTX1NISUZUIDYKI2RlZmluZSBQQVJTSU5HX0ZMQUdTX09WRVJfSVBfUFJPVE9DT0wgKDB4Mzw8NykKI2RlZmluZSBQQVJTSU5HX0ZMQUdTX09WRVJfSVBfUFJPVE9DT0xfU0hJRlQgNwojZGVmaW5lIFBBUlNJTkdfRkxBR1NfUFVSRV9BQ0tfSU5ESUNBVElPTiAoMHgxPDw5KQojZGVmaW5lIFBBUlNJTkdfRkxBR1NfUFVSRV9BQ0tfSU5ESUNBVElPTl9TSElGVCA5CiNkZWZpbmUgUEFSU0lOR19GTEFHU19UQ1BfT1BUSU9OU19FWElTVCAoMHgxPDwxMCkKI2RlZmluZSBQQVJTSU5HX0ZMQUdTX1RDUF9PUFRJT05TX0VYSVNUX1NISUZUIDEwCiNkZWZpbmUgUEFSU0lOR19GTEFHU19USU1FX1NUQU1QX0VYSVNUX0ZMQUcgKDB4MTw8MTEpCiNkZWZpbmUgUEFSU0lOR19GTEFHU19USU1FX1NUQU1QX0VYSVNUX0ZMQUdfU0hJRlQgMTEKI2RlZmluZSBQQVJTSU5HX0ZMQUdTX0NPTk5FQ1RJT05fTUFUQ0ggKDB4MTw8MTIpCiNkZWZpbmUgUEFSU0lOR19GTEFHU19DT05ORUNUSU9OX01BVENIX1NISUZUIDEyCiNkZWZpbmUgUEFSU0lOR19GTEFHU19MTENfU05BUCAoMHgxPDwxMykKI2RlZmluZSBQQVJTSU5HX0ZMQUdTX0xMQ19TTkFQX1NISUZUIDEzCiNkZWZpbmUgUEFSU0lOR19GTEFHU19SRVNFUlZFRDAgKDB4Mzw8MTQpCiNkZWZpbmUgUEFSU0lOR19GTEFHU19SRVNFUlZFRDBfU0hJRlQgMTQKfTsKCgpzdHJ1Y3QgcmVncGFpciB7CglfX2xlMzIgbG87CglfX2xlMzIgaGk7Cn07CgoKLyoKICogZG1hZSBjb21tYW5kIHN0cnVjdHVyZQogKi8Kc3RydWN0IGRtYWVfY29tbWFuZCB7Cgl1MzIgb3Bjb2RlOwojZGVmaW5lIERNQUVfQ09NTUFORF9TUkMgKDB4MTw8MCkKI2RlZmluZSBETUFFX0NPTU1BTkRfU1JDX1NISUZUIDAKI2RlZmluZSBETUFFX0NPTU1BTkRfRFNUICgweDM8PDEpCiNkZWZpbmUgRE1BRV9DT01NQU5EX0RTVF9TSElGVCAxCiNkZWZpbmUgRE1BRV9DT01NQU5EX0NfRFNUICgweDE8PDMpCiNkZWZpbmUgRE1BRV9DT01NQU5EX0NfRFNUX1NISUZUIDMKI2RlZmluZSBETUFFX0NPTU1BTkRfQ19UWVBFX0VOQUJMRSAoMHgxPDw0KQojZGVmaW5lIERNQUVfQ09NTUFORF9DX1RZUEVfRU5BQkxFX1NISUZUIDQKI2RlZmluZSBETUFFX0NPTU1BTkRfQ19UWVBFX0NSQ19FTkFCTEUgKDB4MTw8NSkKI2RlZmluZSBETUFFX0NPTU1BTkRfQ19UWVBFX0NSQ19FTkFCTEVfU0hJRlQgNQojZGVmaW5lIERNQUVfQ09NTUFORF9DX1RZUEVfQ1JDX09GRlNFVCAoMHg3PDw2KQojZGVmaW5lIERNQUVfQ09NTUFORF9DX1RZUEVfQ1JDX09GRlNFVF9TSElGVCA2CiNkZWZpbmUgRE1BRV9DT01NQU5EX0VORElBTklUWSAoMHgzPDw5KQojZGVmaW5lIERNQUVfQ09NTUFORF9FTkRJQU5JVFlfU0hJRlQgOQojZGVmaW5lIERNQUVfQ09NTUFORF9QT1JUICgweDE8PDExKQojZGVmaW5lIERNQUVfQ09NTUFORF9QT1JUX1NISUZUIDExCiNkZWZpbmUgRE1BRV9DT01NQU5EX0NSQ19SRVNFVCAoMHgxPDwxMikKI2RlZmluZSBETUFFX0NPTU1BTkRfQ1JDX1JFU0VUX1NISUZUIDEyCiNkZWZpbmUgRE1BRV9DT01NQU5EX1NSQ19SRVNFVCAoMHgxPDwxMykKI2RlZmluZSBETUFFX0NPTU1BTkRfU1JDX1JFU0VUX1NISUZUIDEzCiNkZWZpbmUgRE1BRV9DT01NQU5EX0RTVF9SRVNFVCAoMHgxPDwxNCkKI2RlZmluZSBETUFFX0NPTU1BTkRfRFNUX1JFU0VUX1NISUZUIDE0CiNkZWZpbmUgRE1BRV9DT01NQU5EX0UxSFZOICgweDM8PDE1KQojZGVmaW5lIERNQUVfQ09NTUFORF9FMUhWTl9TSElGVCAxNQojZGVmaW5lIERNQUVfQ09NTUFORF9SRVNFUlZFRDAgKDB4N0ZGRjw8MTcpCiNkZWZpbmUgRE1BRV9DT01NQU5EX1JFU0VSVkVEMF9TSElGVCAxNwoJdTMyIHNyY19hZGRyX2xvOwoJdTMyIHNyY19hZGRyX2hpOwoJdTMyIGRzdF9hZGRyX2xvOwoJdTMyIGRzdF9hZGRyX2hpOwojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1MTYgcmVzZXJ2ZWQxOwoJdTE2IGxlbjsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1MTYgbGVuOwoJdTE2IHJlc2VydmVkMTsKI2VuZGlmCgl1MzIgY29tcF9hZGRyX2xvOwoJdTMyIGNvbXBfYWRkcl9oaTsKCXUzMiBjb21wX3ZhbDsKCXUzMiBjcmMzMjsKCXUzMiBjcmMzMl9jOwojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1MTYgY3JjMTZfYzsKCXUxNiBjcmMxNjsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1MTYgY3JjMTY7Cgl1MTYgY3JjMTZfYzsKI2VuZGlmCiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXUxNiByZXNlcnZlZDI7Cgl1MTYgY3JjX3QxMDsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1MTYgY3JjX3QxMDsKCXUxNiByZXNlcnZlZDI7CiNlbmRpZgojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1MTYgeHN1bTg7Cgl1MTYgeHN1bTE2OwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXUxNiB4c3VtMTY7Cgl1MTYgeHN1bTg7CiNlbmRpZgp9OwoKCnN0cnVjdCBkb3VibGVfcmVncGFpciB7Cgl1MzIgcmVncGFpcjBfbG87Cgl1MzIgcmVncGFpcjBfaGk7Cgl1MzIgcmVncGFpcjFfbG87Cgl1MzIgcmVncGFpcjFfaGk7Cn07CgoKLyoKICogVGhlIGV0aCBzdG9ybSBjb250ZXh0IG9mIFVzdG9ybSAoY29uZmlndXJhdGlvbiBwYXJ0KQogKi8Kc3RydWN0IHVzdG9ybV9ldGhfc3RfY29udGV4dF9jb25maWcgewojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1OCBmbGFnczsKI2RlZmluZSBVU1RPUk1fRVRIX1NUX0NPTlRFWFRfQ09ORklHX0VOQUJMRV9NQ19BTElHTk1FTlQgKDB4MTw8MCkKI2RlZmluZSBVU1RPUk1fRVRIX1NUX0NPTlRFWFRfQ09ORklHX0VOQUJMRV9NQ19BTElHTk1FTlRfU0hJRlQgMAojZGVmaW5lIFVTVE9STV9FVEhfU1RfQ09OVEVYVF9DT05GSUdfRU5BQkxFX0RZTkFNSUNfSEMgKDB4MTw8MSkKI2RlZmluZSBVU1RPUk1fRVRIX1NUX0NPTlRFWFRfQ09ORklHX0VOQUJMRV9EWU5BTUlDX0hDX1NISUZUIDEKI2RlZmluZSBVU1RPUk1fRVRIX1NUX0NPTlRFWFRfQ09ORklHX0VOQUJMRV9UUEEgKDB4MTw8MikKI2RlZmluZSBVU1RPUk1fRVRIX1NUX0NPTlRFWFRfQ09ORklHX0VOQUJMRV9UUEFfU0hJRlQgMgojZGVmaW5lIFVTVE9STV9FVEhfU1RfQ09OVEVYVF9DT05GSUdfRU5BQkxFX1NUQVRJU1RJQ1MgKDB4MTw8MykKI2RlZmluZSBVU1RPUk1fRVRIX1NUX0NPTlRFWFRfQ09ORklHX0VOQUJMRV9TVEFUSVNUSUNTX1NISUZUIDMKI2RlZmluZSBfX1VTVE9STV9FVEhfU1RfQ09OVEVYVF9DT05GSUdfUkVTRVJWRUQwICgweEY8PDQpCiNkZWZpbmUgX19VU1RPUk1fRVRIX1NUX0NPTlRFWFRfQ09ORklHX1JFU0VSVkVEMF9TSElGVCA0Cgl1OCBzdGF0dXNfYmxvY2tfaWQ7Cgl1OCBjbGllbnRJZDsKCXU4IHNiX2luZGV4X251bWJlcnM7CiNkZWZpbmUgVVNUT1JNX0VUSF9TVF9DT05URVhUX0NPTkZJR19DUUVfU0JfSU5ERVhfTlVNQkVSICgweEY8PDApCiNkZWZpbmUgVVNUT1JNX0VUSF9TVF9DT05URVhUX0NPTkZJR19DUUVfU0JfSU5ERVhfTlVNQkVSX1NISUZUIDAKI2RlZmluZSBVU1RPUk1fRVRIX1NUX0NPTlRFWFRfQ09ORklHX0JEX1NCX0lOREVYX05VTUJFUiAoMHhGPDw0KQojZGVmaW5lIFVTVE9STV9FVEhfU1RfQ09OVEVYVF9DT05GSUdfQkRfU0JfSU5ERVhfTlVNQkVSX1NISUZUIDQKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1OCBzYl9pbmRleF9udW1iZXJzOwojZGVmaW5lIFVTVE9STV9FVEhfU1RfQ09OVEVYVF9DT05GSUdfQ1FFX1NCX0lOREVYX05VTUJFUiAoMHhGPDwwKQojZGVmaW5lIFVTVE9STV9FVEhfU1RfQ09OVEVYVF9DT05GSUdfQ1FFX1NCX0lOREVYX05VTUJFUl9TSElGVCAwCiNkZWZpbmUgVVNUT1JNX0VUSF9TVF9DT05URVhUX0NPTkZJR19CRF9TQl9JTkRFWF9OVU1CRVIgKDB4Rjw8NCkKI2RlZmluZSBVU1RPUk1fRVRIX1NUX0NPTlRFWFRfQ09ORklHX0JEX1NCX0lOREVYX05VTUJFUl9TSElGVCA0Cgl1OCBjbGllbnRJZDsKCXU4IHN0YXR1c19ibG9ja19pZDsKCXU4IGZsYWdzOwojZGVmaW5lIFVTVE9STV9FVEhfU1RfQ09OVEVYVF9DT05GSUdfRU5BQkxFX01DX0FMSUdOTUVOVCAoMHgxPDwwKQojZGVmaW5lIFVTVE9STV9FVEhfU1RfQ09OVEVYVF9DT05GSUdfRU5BQkxFX01DX0FMSUdOTUVOVF9TSElGVCAwCiNkZWZpbmUgVVNUT1JNX0VUSF9TVF9DT05URVhUX0NPTkZJR19FTkFCTEVfRFlOQU1JQ19IQyAoMHgxPDwxKQojZGVmaW5lIFVTVE9STV9FVEhfU1RfQ09OVEVYVF9DT05GSUdfRU5BQkxFX0RZTkFNSUNfSENfU0hJRlQgMQojZGVmaW5lIFVTVE9STV9FVEhfU1RfQ09OVEVYVF9DT05GSUdfRU5BQkxFX1RQQSAoMHgxPDwyKQojZGVmaW5lIFVTVE9STV9FVEhfU1RfQ09OVEVYVF9DT05GSUdfRU5BQkxFX1RQQV9TSElGVCAyCiNkZWZpbmUgVVNUT1JNX0VUSF9TVF9DT05URVhUX0NPTkZJR19FTkFCTEVfU1RBVElTVElDUyAoMHgxPDwzKQojZGVmaW5lIFVTVE9STV9FVEhfU1RfQ09OVEVYVF9DT05GSUdfRU5BQkxFX1NUQVRJU1RJQ1NfU0hJRlQgMwojZGVmaW5lIF9fVVNUT1JNX0VUSF9TVF9DT05URVhUX0NPTkZJR19SRVNFUlZFRDAgKDB4Rjw8NCkKI2RlZmluZSBfX1VTVE9STV9FVEhfU1RfQ09OVEVYVF9DT05GSUdfUkVTRVJWRUQwX1NISUZUIDQKI2VuZGlmCiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXUxNiBiZF9idWZmX3NpemU7Cgl1OCBzdGF0aXN0aWNzX2NvdW50ZXJfaWQ7Cgl1OCBtY19hbGlnbm1lbnRfbG9nX3NpemU7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTggbWNfYWxpZ25tZW50X2xvZ19zaXplOwoJdTggc3RhdGlzdGljc19jb3VudGVyX2lkOwoJdTE2IGJkX2J1ZmZfc2l6ZTsKI2VuZGlmCiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXU4IF9fbG9jYWxfc2dlX3Byb2Q7Cgl1OCBfX2xvY2FsX2JkX3Byb2Q7Cgl1MTYgc2dlX2J1ZmZfc2l6ZTsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1MTYgc2dlX2J1ZmZfc2l6ZTsKCXU4IF9fbG9jYWxfYmRfcHJvZDsKCXU4IF9fbG9jYWxfc2dlX3Byb2Q7CiNlbmRpZgojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1MTYgX19zZG1fYmRfZXhwZWN0ZWRfY291bnRlcjsKCXU4IGNzdG9ybV9hZ2dfaW50OwoJdTggX19leHBlY3RlZF9iZHNfb25fcmFtOwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXU4IF9fZXhwZWN0ZWRfYmRzX29uX3JhbTsKCXU4IGNzdG9ybV9hZ2dfaW50OwoJdTE2IF9fc2RtX2JkX2V4cGVjdGVkX2NvdW50ZXI7CiNlbmRpZgojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1MTYgX19yaW5nX2RhdGFfcmFtX2FkZHI7Cgl1MTYgX19oY19jc3Rvcm1fcmFtX2FkZHI7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IF9faGNfY3N0b3JtX3JhbV9hZGRyOwoJdTE2IF9fcmluZ19kYXRhX3JhbV9hZGRyOwojZW5kaWYKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTggcmVzZXJ2ZWQxOwoJdTggbWF4X3NnZXNfZm9yX3BhY2tldDsKCXUxNiBfX2JkX3JpbmdfcmFtX2FkZHI7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IF9fYmRfcmluZ19yYW1fYWRkcjsKCXU4IG1heF9zZ2VzX2Zvcl9wYWNrZXQ7Cgl1OCByZXNlcnZlZDE7CiNlbmRpZgoJdTMyIGJkX3BhZ2VfYmFzZV9sbzsKCXUzMiBiZF9wYWdlX2Jhc2VfaGk7Cgl1MzIgc2dlX3BhZ2VfYmFzZV9sbzsKCXUzMiBzZ2VfcGFnZV9iYXNlX2hpOwoJc3RydWN0IHJlZ3BhaXIgcmVzZXJ2ZWQyOwp9OwoKLyoKICogVGhlIGV0aCBSeCBCdWZmZXIgRGVzY3JpcHRvcgogKi8Kc3RydWN0IGV0aF9yeF9iZCB7CglfX2xlMzIgYWRkcl9sbzsKCV9fbGUzMiBhZGRyX2hpOwp9OwoKLyoKICogVGhlIGV0aCBSeCBTR0UgRGVzY3JpcHRvcgogKi8Kc3RydWN0IGV0aF9yeF9zZ2UgewoJX19sZTMyIGFkZHJfbG87CglfX2xlMzIgYWRkcl9oaTsKfTsKCi8qCiAqIExvY2FsIEJEcyBhbmQgU0dFcyByaW5ncyAoaW4gRVRIKQogKi8Kc3RydWN0IGV0aF9sb2NhbF9yeF9yaW5ncyB7CglzdHJ1Y3QgZXRoX3J4X2JkIF9fbG9jYWxfYmRfcmluZ1s4XTsKCXN0cnVjdCBldGhfcnhfc2dlIF9fbG9jYWxfc2dlX3JpbmdbMTBdOwp9OwoKLyoKICogVGhlIGV0aCBzdG9ybSBjb250ZXh0IG9mIFVzdG9ybQogKi8Kc3RydWN0IHVzdG9ybV9ldGhfc3RfY29udGV4dCB7CglzdHJ1Y3QgdXN0b3JtX2V0aF9zdF9jb250ZXh0X2NvbmZpZyBjb21tb247CglzdHJ1Y3QgZXRoX2xvY2FsX3J4X3JpbmdzIF9fcmluZ3M7Cn07CgovKgogKiBUaGUgZXRoIHN0b3JtIGNvbnRleHQgb2YgVHN0b3JtCiAqLwpzdHJ1Y3QgdHN0b3JtX2V0aF9zdF9jb250ZXh0IHsKCXUzMiBfX3Jlc2VydmVkMFsyOF07Cn07CgovKgogKiBUaGUgZXRoIGFnZ3JlZ2F0aXZlIGNvbnRleHQgc2VjdGlvbiBvZiBYc3Rvcm0KICovCnN0cnVjdCB4c3Rvcm1fZXRoX2V4dHJhX2FnX2NvbnRleHRfc2VjdGlvbiB7CiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXU4IF9fdGNwX2FnZ192YXJzMTsKCXU4IF9fcmVzZXJ2ZWQ1MDsKCXUxNiBfX21zczsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1MTYgX19tc3M7Cgl1OCBfX3Jlc2VydmVkNTA7Cgl1OCBfX3RjcF9hZ2dfdmFyczE7CiNlbmRpZgoJdTMyIF9fc25kX254dDsKCXUzMiBfX3R4X3duZDsKCXUzMiBfX3NuZF91bmE7Cgl1MzIgX19yZXNlcnZlZDUzOwojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1OCBfX2FnZ192YWw4X3RoOwoJdTggX19hZ2dfdmFsODsKCXUxNiBfX3RjcF9hZ2dfdmFyczI7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IF9fdGNwX2FnZ192YXJzMjsKCXU4IF9fYWdnX3ZhbDg7Cgl1OCBfX2FnZ192YWw4X3RoOwojZW5kaWYKCXUzMiBfX3Jlc2VydmVkNTg7Cgl1MzIgX19yZXNlcnZlZDU5OwoJdTMyIF9fcmVzZXJ2ZWQ2MDsKCXUzMiBfX3Jlc2VydmVkNjE7CiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXUxNiBfX2FnZ192YWw3X3RoOwoJdTE2IF9fYWdnX3ZhbDc7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IF9fYWdnX3ZhbDc7Cgl1MTYgX19hZ2dfdmFsN190aDsKI2VuZGlmCiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXU4IF9fdGNwX2FnZ192YXJzNTsKCXU4IF9fdGNwX2FnZ192YXJzNDsKCXU4IF9fdGNwX2FnZ192YXJzMzsKCXU4IF9fcmVzZXJ2ZWQ2MjsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1OCBfX3Jlc2VydmVkNjI7Cgl1OCBfX3RjcF9hZ2dfdmFyczM7Cgl1OCBfX3RjcF9hZ2dfdmFyczQ7Cgl1OCBfX3RjcF9hZ2dfdmFyczU7CiNlbmRpZgoJdTMyIF9fdGNwX2FnZ192YXJzNjsKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IF9fYWdnX21pc2M2OwoJdTE2IF9fdGNwX2FnZ192YXJzNzsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1MTYgX190Y3BfYWdnX3ZhcnM3OwoJdTE2IF9fYWdnX21pc2M2OwojZW5kaWYKCXUzMiBfX2FnZ192YWwxMDsKCXUzMiBfX2FnZ192YWwxMF90aDsKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IF9fcmVzZXJ2ZWQzOwoJdTggX19yZXNlcnZlZDI7Cgl1OCBfX2RhX29ubHlfY250OwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXU4IF9fZGFfb25seV9jbnQ7Cgl1OCBfX3Jlc2VydmVkMjsKCXUxNiBfX3Jlc2VydmVkMzsKI2VuZGlmCn07CgovKgogKiBUaGUgZXRoIGFnZ3JlZ2F0aXZlIGNvbnRleHQgb2YgWHN0b3JtCiAqLwpzdHJ1Y3QgeHN0b3JtX2V0aF9hZ19jb250ZXh0IHsKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IGFnZ192YWwxOwoJdTggX19hZ2dfdmFyczE7Cgl1OCBfX3N0YXRlOwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXU4IF9fc3RhdGU7Cgl1OCBfX2FnZ192YXJzMTsKCXUxNiBhZ2dfdmFsMTsKI2VuZGlmCiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXU4IGNkdV9yZXNlcnZlZDsKCXU4IF9fYWdnX3ZhcnM0OwoJdTggX19hZ2dfdmFyczM7Cgl1OCBfX2FnZ192YXJzMjsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1OCBfX2FnZ192YXJzMjsKCXU4IF9fYWdnX3ZhcnMzOwoJdTggX19hZ2dfdmFyczQ7Cgl1OCBjZHVfcmVzZXJ2ZWQ7CiNlbmRpZgoJdTMyIF9fYmRfcHJvZDsKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IF9fYWdnX3ZhcnM1OwoJdTE2IF9fYWdnX3ZhbDRfdGg7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IF9fYWdnX3ZhbDRfdGg7Cgl1MTYgX19hZ2dfdmFyczU7CiNlbmRpZgoJc3RydWN0IHhzdG9ybV9ldGhfZXh0cmFfYWdfY29udGV4dF9zZWN0aW9uIF9fZXh0cmFfc2VjdGlvbjsKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IF9fYWdnX3ZhcnM3OwoJdTggX19hZ2dfdmFsM190aDsKCXU4IF9fYWdnX3ZhcnM2OwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXU4IF9fYWdnX3ZhcnM2OwoJdTggX19hZ2dfdmFsM190aDsKCXUxNiBfX2FnZ192YXJzNzsKI2VuZGlmCiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXUxNiBfX2FnZ192YWwxMV90aDsKCXUxNiBfX2FnZ192YWwxMTsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1MTYgX19hZ2dfdmFsMTE7Cgl1MTYgX19hZ2dfdmFsMTFfdGg7CiNlbmRpZgojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1OCBfX3Jlc2VydmVkMTsKCXU4IF9fYWdnX3ZhbDZfdGg7Cgl1MTYgX19hZ2dfdmFsOTsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1MTYgX19hZ2dfdmFsOTsKCXU4IF9fYWdnX3ZhbDZfdGg7Cgl1OCBfX3Jlc2VydmVkMTsKI2VuZGlmCiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXUxNiBfX2FnZ192YWwyX3RoOwoJdTE2IF9fYWdnX3ZhbDI7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IF9fYWdnX3ZhbDI7Cgl1MTYgX19hZ2dfdmFsMl90aDsKI2VuZGlmCgl1MzIgX19hZ2dfdmFyczg7CiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXUxNiBfX2FnZ19taXNjMDsKCXUxNiBfX2FnZ192YWw0OwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXUxNiBfX2FnZ192YWw0OwoJdTE2IF9fYWdnX21pc2MwOwojZW5kaWYKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTggX19hZ2dfdmFsMzsKCXU4IF9fYWdnX3ZhbDY7Cgl1OCBfX2FnZ192YWw1X3RoOwoJdTggX19hZ2dfdmFsNTsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1OCBfX2FnZ192YWw1OwoJdTggX19hZ2dfdmFsNV90aDsKCXU4IF9fYWdnX3ZhbDY7Cgl1OCBfX2FnZ192YWwzOwojZW5kaWYKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IF9fYWdnX21pc2MxOwoJdTE2IF9fYmRfaW5kX21heF92YWw7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IF9fYmRfaW5kX21heF92YWw7Cgl1MTYgX19hZ2dfbWlzYzE7CiNlbmRpZgoJdTMyIF9fcmVzZXJ2ZWQ1NzsKCXUzMiBfX2FnZ19taXNjNDsKCXUzMiBfX2FnZ19taXNjNTsKfTsKCi8qCiAqIFRoZSBldGggZXh0cmEgYWdncmVnYXRpdmUgY29udGV4dCBzZWN0aW9uIG9mIFRzdG9ybQogKi8Kc3RydWN0IHRzdG9ybV9ldGhfZXh0cmFfYWdfY29udGV4dF9zZWN0aW9uIHsKCXUzMiBfX2FnZ192YWwxOwojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1OCBfX3RjcF9hZ2dfdmFyczI7Cgl1OCBfX2FnZ192YWwzOwoJdTE2IF9fYWdnX3ZhbDI7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IF9fYWdnX3ZhbDI7Cgl1OCBfX2FnZ192YWwzOwoJdTggX190Y3BfYWdnX3ZhcnMyOwojZW5kaWYKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IF9fYWdnX3ZhbDU7Cgl1OCBfX2FnZ192YWw2OwoJdTggX190Y3BfYWdnX3ZhcnMzOwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXU4IF9fdGNwX2FnZ192YXJzMzsKCXU4IF9fYWdnX3ZhbDY7Cgl1MTYgX19hZ2dfdmFsNTsKI2VuZGlmCgl1MzIgX19yZXNlcnZlZDYzOwoJdTMyIF9fcmVzZXJ2ZWQ2NDsKCXUzMiBfX3Jlc2VydmVkNjU7Cgl1MzIgX19yZXNlcnZlZDY2OwoJdTMyIF9fcmVzZXJ2ZWQ2NzsKCXUzMiBfX3RjcF9hZ2dfdmFyczE7Cgl1MzIgX19yZXNlcnZlZDYxOwoJdTMyIF9fcmVzZXJ2ZWQ2MjsKCXUzMiBfX3Jlc2VydmVkMjsKfTsKCi8qCiAqIFRoZSBldGggYWdncmVnYXRpdmUgY29udGV4dCBvZiBUc3Rvcm0KICovCnN0cnVjdCB0c3Rvcm1fZXRoX2FnX2NvbnRleHQgewojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1MTYgX19yZXNlcnZlZDU0OwoJdTggX19hZ2dfdmFyczE7Cgl1OCBfX3N0YXRlOwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXU4IF9fc3RhdGU7Cgl1OCBfX2FnZ192YXJzMTsKCXUxNiBfX3Jlc2VydmVkNTQ7CiNlbmRpZgojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1MTYgX19hZ2dfdmFsNDsKCXUxNiBfX2FnZ192YXJzMjsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1MTYgX19hZ2dfdmFyczI7Cgl1MTYgX19hZ2dfdmFsNDsKI2VuZGlmCglzdHJ1Y3QgdHN0b3JtX2V0aF9leHRyYV9hZ19jb250ZXh0X3NlY3Rpb24gX19leHRyYV9zZWN0aW9uOwp9OwoKLyoKICogVGhlIGV0aCBhZ2dyZWdhdGl2ZSBjb250ZXh0IG9mIENzdG9ybQogKi8Kc3RydWN0IGNzdG9ybV9ldGhfYWdfY29udGV4dCB7Cgl1MzIgX19hZ2dfdmFyczE7CiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXU4IF9fYXV4MV90aDsKCXU4IF9fYXV4MV92YWw7Cgl1MTYgX19hZ2dfdmFyczI7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IF9fYWdnX3ZhcnMyOwoJdTggX19hdXgxX3ZhbDsKCXU4IF9fYXV4MV90aDsKI2VuZGlmCgl1MzIgX19udW1fb2ZfdHJlYXRlZF9wYWNrZXQ7Cgl1MzIgX19sYXN0X3BhY2tldF90cmVhdGVkOwojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1MTYgX19yZXNlcnZlZDU4OwoJdTE2IF9fcmVzZXJ2ZWQ1NzsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1MTYgX19yZXNlcnZlZDU3OwoJdTE2IF9fcmVzZXJ2ZWQ1ODsKI2VuZGlmCiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXU4IF9fcmVzZXJ2ZWQ2MjsKCXU4IF9fcmVzZXJ2ZWQ2MTsKCXU4IF9fcmVzZXJ2ZWQ2MDsKCXU4IF9fcmVzZXJ2ZWQ1OTsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1OCBfX3Jlc2VydmVkNTk7Cgl1OCBfX3Jlc2VydmVkNjA7Cgl1OCBfX3Jlc2VydmVkNjE7Cgl1OCBfX3Jlc2VydmVkNjI7CiNlbmRpZgojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1MTYgX19yZXNlcnZlZDY0OwoJdTE2IF9fcmVzZXJ2ZWQ2MzsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1MTYgX19yZXNlcnZlZDYzOwoJdTE2IF9fcmVzZXJ2ZWQ2NDsKI2VuZGlmCgl1MzIgX19yZXNlcnZlZDY1OwojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1MTYgX19hZ2dfdmFyczM7Cgl1MTYgX19ycV9pbnZfY250OwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXUxNiBfX3JxX2ludl9jbnQ7Cgl1MTYgX19hZ2dfdmFyczM7CiNlbmRpZgojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1MTYgX19wYWNrZXRfaW5kZXhfdGg7Cgl1MTYgX19wYWNrZXRfaW5kZXg7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IF9fcGFja2V0X2luZGV4OwoJdTE2IF9fcGFja2V0X2luZGV4X3RoOwojZW5kaWYKfTsKCi8qCiAqIFRoZSBldGggYWdncmVnYXRpdmUgY29udGV4dCBvZiBVc3Rvcm0KICovCnN0cnVjdCB1c3Rvcm1fZXRoX2FnX2NvbnRleHQgewojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1OCBfX2F1eF9jb3VudGVyX2ZsYWdzOwoJdTggX19hZ2dfdmFyczI7Cgl1OCBfX2FnZ192YXJzMTsKCXU4IF9fc3RhdGU7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTggX19zdGF0ZTsKCXU4IF9fYWdnX3ZhcnMxOwoJdTggX19hZ2dfdmFyczI7Cgl1OCBfX2F1eF9jb3VudGVyX2ZsYWdzOwojZW5kaWYKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTggY2R1X3VzYWdlOwoJdTggX19hZ2dfbWlzYzI7Cgl1MTYgX19hZ2dfbWlzYzE7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IF9fYWdnX21pc2MxOwoJdTggX19hZ2dfbWlzYzI7Cgl1OCBjZHVfdXNhZ2U7CiNlbmRpZgoJdTMyIF9fYWdnX21pc2M0OwojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1OCBfX2FnZ192YWwzX3RoOwoJdTggX19hZ2dfdmFsMzsKCXUxNiBfX2FnZ19taXNjMzsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1MTYgX19hZ2dfbWlzYzM7Cgl1OCBfX2FnZ192YWwzOwoJdTggX19hZ2dfdmFsM190aDsKI2VuZGlmCgl1MzIgX19hZ2dfdmFsMTsKCXUzMiBfX2FnZ19taXNjNF90aDsKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IF9fYWdnX3ZhbDJfdGg7Cgl1MTYgX19hZ2dfdmFsMjsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1MTYgX19hZ2dfdmFsMjsKCXUxNiBfX2FnZ192YWwyX3RoOwojZW5kaWYKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IF9fcmVzZXJ2ZWQyOwoJdTggX19kZWNpc2lvbl9ydWxlczsKCXU4IF9fZGVjaXNpb25fcnVsZV9lbmFibGVfYml0czsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1OCBfX2RlY2lzaW9uX3J1bGVfZW5hYmxlX2JpdHM7Cgl1OCBfX2RlY2lzaW9uX3J1bGVzOwoJdTE2IF9fcmVzZXJ2ZWQyOwojZW5kaWYKfTsKCi8qCiAqIFRpbWVycyBjb25uZWN0aW9uIGNvbnRleHQKICovCnN0cnVjdCB0aW1lcnNfYmxvY2tfY29udGV4dCB7Cgl1MzIgX19yZXNlcnZlZF8wOwoJdTMyIF9fcmVzZXJ2ZWRfMTsKCXUzMiBfX3Jlc2VydmVkXzI7Cgl1MzIgZmxhZ3M7CiNkZWZpbmUgX19USU1FUlNfQkxPQ0tfQ09OVEVYVF9OVU1fT0ZfQUNUSVZFX1RJTUVSUyAoMHgzPDwwKQojZGVmaW5lIF9fVElNRVJTX0JMT0NLX0NPTlRFWFRfTlVNX09GX0FDVElWRV9USU1FUlNfU0hJRlQgMAojZGVmaW5lIFRJTUVSU19CTE9DS19DT05URVhUX0NPTk5fVkFMSURfRkxHICgweDE8PDIpCiNkZWZpbmUgVElNRVJTX0JMT0NLX0NPTlRFWFRfQ09OTl9WQUxJRF9GTEdfU0hJRlQgMgojZGVmaW5lIF9fVElNRVJTX0JMT0NLX0NPTlRFWFRfUkVTRVJWRUQwICgweDFGRkZGRkZGPDwzKQojZGVmaW5lIF9fVElNRVJTX0JMT0NLX0NPTlRFWFRfUkVTRVJWRUQwX1NISUZUIDMKfTsKCi8qCiAqIHN0cnVjdHVyZSBmb3IgZWFzeSBhY2Nlc3NpYmlsaXR5IHRvIGFzc2VtYmxlcgogKi8Kc3RydWN0IGV0aF90eF9iZF9mbGFncyB7Cgl1OCBhc19iaXRmaWVsZDsKI2RlZmluZSBFVEhfVFhfQkRfRkxBR1NfVkxBTl9UQUcgKDB4MTw8MCkKI2RlZmluZSBFVEhfVFhfQkRfRkxBR1NfVkxBTl9UQUdfU0hJRlQgMAojZGVmaW5lIEVUSF9UWF9CRF9GTEFHU19JUF9DU1VNICgweDE8PDEpCiNkZWZpbmUgRVRIX1RYX0JEX0ZMQUdTX0lQX0NTVU1fU0hJRlQgMQojZGVmaW5lIEVUSF9UWF9CRF9GTEFHU19MNF9DU1VNICgweDE8PDIpCiNkZWZpbmUgRVRIX1RYX0JEX0ZMQUdTX0w0X0NTVU1fU0hJRlQgMgojZGVmaW5lIEVUSF9UWF9CRF9GTEFHU19FTkRfQkQgKDB4MTw8MykKI2RlZmluZSBFVEhfVFhfQkRfRkxBR1NfRU5EX0JEX1NISUZUIDMKI2RlZmluZSBFVEhfVFhfQkRfRkxBR1NfU1RBUlRfQkQgKDB4MTw8NCkKI2RlZmluZSBFVEhfVFhfQkRfRkxBR1NfU1RBUlRfQkRfU0hJRlQgNAojZGVmaW5lIEVUSF9UWF9CRF9GTEFHU19IRFJfUE9PTCAoMHgxPDw1KQojZGVmaW5lIEVUSF9UWF9CRF9GTEFHU19IRFJfUE9PTF9TSElGVCA1CiNkZWZpbmUgRVRIX1RYX0JEX0ZMQUdTX1NXX0xTTyAoMHgxPDw2KQojZGVmaW5lIEVUSF9UWF9CRF9GTEFHU19TV19MU09fU0hJRlQgNgojZGVmaW5lIEVUSF9UWF9CRF9GTEFHU19JUFY2ICgweDE8PDcpCiNkZWZpbmUgRVRIX1RYX0JEX0ZMQUdTX0lQVjZfU0hJRlQgNwp9OwoKLyoKICogVGhlIGV0aCBUeCBCdWZmZXIgRGVzY3JpcHRvcgogKi8Kc3RydWN0IGV0aF90eF9zdGFydF9iZCB7CglfX2xlMzIgYWRkcl9sbzsKCV9fbGUzMiBhZGRyX2hpOwoJX19sZTE2IG5iZDsKCV9fbGUxNiBuYnl0ZXM7CglfX2xlMTYgdmxhbjsKCXN0cnVjdCBldGhfdHhfYmRfZmxhZ3MgYmRfZmxhZ3M7Cgl1OCBnZW5lcmFsX2RhdGE7CiNkZWZpbmUgRVRIX1RYX1NUQVJUX0JEX0hEUl9OQkRTICgweDNGPDwwKQojZGVmaW5lIEVUSF9UWF9TVEFSVF9CRF9IRFJfTkJEU19TSElGVCAwCiNkZWZpbmUgRVRIX1RYX1NUQVJUX0JEX0VUSF9BRERSX1RZUEUgKDB4Mzw8NikKI2RlZmluZSBFVEhfVFhfU1RBUlRfQkRfRVRIX0FERFJfVFlQRV9TSElGVCA2Cn07CgovKgogKiBUeCByZWd1bGFyIEJEIHN0cnVjdHVyZQogKi8Kc3RydWN0IGV0aF90eF9iZCB7Cgl1MzIgYWRkcl9sbzsKCXUzMiBhZGRyX2hpOwoJdTE2IHRvdGFsX3BrdF9ieXRlczsKCXUxNiBuYnl0ZXM7Cgl1OCByZXNlcnZlZFs0XTsKfTsKCi8qCiAqIFR4IHBhcnNpbmcgQkQgc3RydWN0dXJlIGZvciBFVEgsUmVsZXZhbnQgaW4gU1RBUlQKICovCnN0cnVjdCBldGhfdHhfcGFyc2VfYmQgewoJdTggZ2xvYmFsX2RhdGE7CiNkZWZpbmUgRVRIX1RYX1BBUlNFX0JEX0lQX0hEUl9TVEFSVF9PRkZTRVQgKDB4Rjw8MCkKI2RlZmluZSBFVEhfVFhfUEFSU0VfQkRfSVBfSERSX1NUQVJUX09GRlNFVF9TSElGVCAwCiNkZWZpbmUgRVRIX1RYX1BBUlNFX0JEX1VEUF9DU19GTEcgKDB4MTw8NCkKI2RlZmluZSBFVEhfVFhfUEFSU0VfQkRfVURQX0NTX0ZMR19TSElGVCA0CiNkZWZpbmUgRVRIX1RYX1BBUlNFX0JEX1BTRVVET19DU19XSVRIT1VUX0xFTiAoMHgxPDw1KQojZGVmaW5lIEVUSF9UWF9QQVJTRV9CRF9QU0VVRE9fQ1NfV0lUSE9VVF9MRU5fU0hJRlQgNQojZGVmaW5lIEVUSF9UWF9QQVJTRV9CRF9MTENfU05BUF9FTiAoMHgxPDw2KQojZGVmaW5lIEVUSF9UWF9QQVJTRV9CRF9MTENfU05BUF9FTl9TSElGVCA2CiNkZWZpbmUgRVRIX1RYX1BBUlNFX0JEX05TX0ZMRyAoMHgxPDw3KQojZGVmaW5lIEVUSF9UWF9QQVJTRV9CRF9OU19GTEdfU0hJRlQgNwoJdTggdGNwX2ZsYWdzOwojZGVmaW5lIEVUSF9UWF9QQVJTRV9CRF9GSU5fRkxHICgweDE8PDApCiNkZWZpbmUgRVRIX1RYX1BBUlNFX0JEX0ZJTl9GTEdfU0hJRlQgMAojZGVmaW5lIEVUSF9UWF9QQVJTRV9CRF9TWU5fRkxHICgweDE8PDEpCiNkZWZpbmUgRVRIX1RYX1BBUlNFX0JEX1NZTl9GTEdfU0hJRlQgMQojZGVmaW5lIEVUSF9UWF9QQVJTRV9CRF9SU1RfRkxHICgweDE8PDIpCiNkZWZpbmUgRVRIX1RYX1BBUlNFX0JEX1JTVF9GTEdfU0hJRlQgMgojZGVmaW5lIEVUSF9UWF9QQVJTRV9CRF9QU0hfRkxHICgweDE8PDMpCiNkZWZpbmUgRVRIX1RYX1BBUlNFX0JEX1BTSF9GTEdfU0hJRlQgMwojZGVmaW5lIEVUSF9UWF9QQVJTRV9CRF9BQ0tfRkxHICgweDE8PDQpCiNkZWZpbmUgRVRIX1RYX1BBUlNFX0JEX0FDS19GTEdfU0hJRlQgNAojZGVmaW5lIEVUSF9UWF9QQVJTRV9CRF9VUkdfRkxHICgweDE8PDUpCiNkZWZpbmUgRVRIX1RYX1BBUlNFX0JEX1VSR19GTEdfU0hJRlQgNQojZGVmaW5lIEVUSF9UWF9QQVJTRV9CRF9FQ0VfRkxHICgweDE8PDYpCiNkZWZpbmUgRVRIX1RYX1BBUlNFX0JEX0VDRV9GTEdfU0hJRlQgNgojZGVmaW5lIEVUSF9UWF9QQVJTRV9CRF9DV1JfRkxHICgweDE8PDcpCiNkZWZpbmUgRVRIX1RYX1BBUlNFX0JEX0NXUl9GTEdfU0hJRlQgNwoJdTggaXBfaGxlbjsKCXM4IHJlc2VydmVkOwoJX19sZTE2IHRvdGFsX2hsZW47CglfX2xlMTYgdGNwX3BzZXVkb19jc3VtOwoJX19sZTE2IGxzb19tc3M7CglfX2xlMTYgaXBfaWQ7CglfX2xlMzIgdGNwX3NlbmRfc2VxOwp9OwoKLyoKICogVGhlIGxhc3QgQkQgaW4gdGhlIEJEIG1lbW9yeSB3aWxsIGhvbGQgYSBwb2ludGVyIHRvIHRoZSBuZXh0IEJEIG1lbW9yeQogKi8Kc3RydWN0IGV0aF90eF9uZXh0X2JkIHsKCV9fbGUzMiBhZGRyX2xvOwoJX19sZTMyIGFkZHJfaGk7Cgl1OCByZXNlcnZlZFs4XTsKfTsKCi8qCiAqIHVuaW9uIGZvciA0IEJkIHR5cGVzCiAqLwp1bmlvbiBldGhfdHhfYmRfdHlwZXMgewoJc3RydWN0IGV0aF90eF9zdGFydF9iZCBzdGFydF9iZDsKCXN0cnVjdCBldGhfdHhfYmQgcmVnX2JkOwoJc3RydWN0IGV0aF90eF9wYXJzZV9iZCBwYXJzZV9iZDsKCXN0cnVjdCBldGhfdHhfbmV4dF9iZCBuZXh0X2JkOwp9OwoKLyoKICogVGhlIGV0aCBzdG9ybSBjb250ZXh0IG9mIFhzdG9ybQogKi8Kc3RydWN0IHhzdG9ybV9ldGhfc3RfY29udGV4dCB7Cgl1MzIgdHhfYmRfcGFnZV9iYXNlX2xvOwoJdTMyIHR4X2JkX3BhZ2VfYmFzZV9oaTsKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IHR4X2JkX2NvbnM7Cgl1OCBzdGF0aXN0aWNzX2RhdGE7CiNkZWZpbmUgWFNUT1JNX0VUSF9TVF9DT05URVhUX1NUQVRJU1RJQ1NfQ09VTlRFUl9JRCAoMHg3Rjw8MCkKI2RlZmluZSBYU1RPUk1fRVRIX1NUX0NPTlRFWFRfU1RBVElTVElDU19DT1VOVEVSX0lEX1NISUZUIDAKI2RlZmluZSBYU1RPUk1fRVRIX1NUX0NPTlRFWFRfU1RBVElTVElDU19FTkFCTEUgKDB4MTw8NykKI2RlZmluZSBYU1RPUk1fRVRIX1NUX0NPTlRFWFRfU1RBVElTVElDU19FTkFCTEVfU0hJRlQgNwoJdTggX19sb2NhbF90eF9iZF9wcm9kOwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXU4IF9fbG9jYWxfdHhfYmRfcHJvZDsKCXU4IHN0YXRpc3RpY3NfZGF0YTsKI2RlZmluZSBYU1RPUk1fRVRIX1NUX0NPTlRFWFRfU1RBVElTVElDU19DT1VOVEVSX0lEICgweDdGPDwwKQojZGVmaW5lIFhTVE9STV9FVEhfU1RfQ09OVEVYVF9TVEFUSVNUSUNTX0NPVU5URVJfSURfU0hJRlQgMAojZGVmaW5lIFhTVE9STV9FVEhfU1RfQ09OVEVYVF9TVEFUSVNUSUNTX0VOQUJMRSAoMHgxPDw3KQojZGVmaW5lIFhTVE9STV9FVEhfU1RfQ09OVEVYVF9TVEFUSVNUSUNTX0VOQUJMRV9TSElGVCA3Cgl1MTYgdHhfYmRfY29uczsKI2VuZGlmCgl1MzIgX19yZXNlcnZlZDE7Cgl1MzIgX19yZXNlcnZlZDI7CiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXU4IF9fcmFtX2NhY2hlX2luZGV4OwoJdTggX19kb3VibGVfYnVmZmVyX2NsaWVudDsKCXUxNiBfX3BrdF9jb25zOwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXUxNiBfX3BrdF9jb25zOwoJdTggX19kb3VibGVfYnVmZmVyX2NsaWVudDsKCXU4IF9fcmFtX2NhY2hlX2luZGV4OwojZW5kaWYKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IF9fc3RhdGlzdGljc19hZGRyZXNzOwoJdTE2IF9fZ3NvX25leHQ7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IF9fZ3NvX25leHQ7Cgl1MTYgX19zdGF0aXN0aWNzX2FkZHJlc3M7CiNlbmRpZgojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1OCBfX2xvY2FsX3R4X2JkX2NvbnM7Cgl1OCBzYWZjX2dyb3VwX251bTsKCXU4IHNhZmNfZ3JvdXBfZW47Cgl1OCBfX2lzX2V0aF9jb25uOwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXU4IF9faXNfZXRoX2Nvbm47Cgl1OCBzYWZjX2dyb3VwX2VuOwoJdTggc2FmY19ncm91cF9udW07Cgl1OCBfX2xvY2FsX3R4X2JkX2NvbnM7CiNlbmRpZgoJdW5pb24gZXRoX3R4X2JkX3R5cGVzIF9fYmRzWzEzXTsKfTsKCi8qCiAqIFRoZSBldGggc3Rvcm0gY29udGV4dCBvZiBDc3Rvcm0KICovCnN0cnVjdCBjc3Rvcm1fZXRoX3N0X2NvbnRleHQgewojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1MTYgX19yZXNlcnZlZDA7Cgl1OCBzYl9pbmRleF9udW1iZXI7Cgl1OCBzdGF0dXNfYmxvY2tfaWQ7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTggc3RhdHVzX2Jsb2NrX2lkOwoJdTggc2JfaW5kZXhfbnVtYmVyOwoJdTE2IF9fcmVzZXJ2ZWQwOwojZW5kaWYKCXUzMiBfX3Jlc2VydmVkMVszXTsKfTsKCi8qCiAqIEV0aGVybmV0IGNvbm5lY3Rpb24gY29udGV4dAogKi8Kc3RydWN0IGV0aF9jb250ZXh0IHsKCXN0cnVjdCB1c3Rvcm1fZXRoX3N0X2NvbnRleHQgdXN0b3JtX3N0X2NvbnRleHQ7CglzdHJ1Y3QgdHN0b3JtX2V0aF9zdF9jb250ZXh0IHRzdG9ybV9zdF9jb250ZXh0OwoJc3RydWN0IHhzdG9ybV9ldGhfYWdfY29udGV4dCB4c3Rvcm1fYWdfY29udGV4dDsKCXN0cnVjdCB0c3Rvcm1fZXRoX2FnX2NvbnRleHQgdHN0b3JtX2FnX2NvbnRleHQ7CglzdHJ1Y3QgY3N0b3JtX2V0aF9hZ19jb250ZXh0IGNzdG9ybV9hZ19jb250ZXh0OwoJc3RydWN0IHVzdG9ybV9ldGhfYWdfY29udGV4dCB1c3Rvcm1fYWdfY29udGV4dDsKCXN0cnVjdCB0aW1lcnNfYmxvY2tfY29udGV4dCB0aW1lcnNfY29udGV4dDsKCXN0cnVjdCB4c3Rvcm1fZXRoX3N0X2NvbnRleHQgeHN0b3JtX3N0X2NvbnRleHQ7CglzdHJ1Y3QgY3N0b3JtX2V0aF9zdF9jb250ZXh0IGNzdG9ybV9zdF9jb250ZXh0Owp9OwoKCi8qCiAqIEV0aGVybmV0IGRvb3JiZWxsCiAqLwpzdHJ1Y3QgZXRoX3R4X2Rvb3JiZWxsIHsKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IG5wYWNrZXRzOwoJdTggcGFyYW1zOwojZGVmaW5lIEVUSF9UWF9ET09SQkVMTF9OVU1fQkRTICgweDNGPDwwKQojZGVmaW5lIEVUSF9UWF9ET09SQkVMTF9OVU1fQkRTX1NISUZUIDAKI2RlZmluZSBFVEhfVFhfRE9PUkJFTExfUkVTRVJWRURfVFhfRklOX0ZMQUcgKDB4MTw8NikKI2RlZmluZSBFVEhfVFhfRE9PUkJFTExfUkVTRVJWRURfVFhfRklOX0ZMQUdfU0hJRlQgNgojZGVmaW5lIEVUSF9UWF9ET09SQkVMTF9TUEFSRSAoMHgxPDw3KQojZGVmaW5lIEVUSF9UWF9ET09SQkVMTF9TUEFSRV9TSElGVCA3CglzdHJ1Y3QgZG9vcmJlbGxfaGRyIGhkcjsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCglzdHJ1Y3QgZG9vcmJlbGxfaGRyIGhkcjsKCXU4IHBhcmFtczsKI2RlZmluZSBFVEhfVFhfRE9PUkJFTExfTlVNX0JEUyAoMHgzRjw8MCkKI2RlZmluZSBFVEhfVFhfRE9PUkJFTExfTlVNX0JEU19TSElGVCAwCiNkZWZpbmUgRVRIX1RYX0RPT1JCRUxMX1JFU0VSVkVEX1RYX0ZJTl9GTEFHICgweDE8PDYpCiNkZWZpbmUgRVRIX1RYX0RPT1JCRUxMX1JFU0VSVkVEX1RYX0ZJTl9GTEFHX1NISUZUIDYKI2RlZmluZSBFVEhfVFhfRE9PUkJFTExfU1BBUkUgKDB4MTw8NykKI2RlZmluZSBFVEhfVFhfRE9PUkJFTExfU1BBUkVfU0hJRlQgNwoJdTE2IG5wYWNrZXRzOwojZW5kaWYKfTsKCgovKgogKiBjc3Rvcm0gZGVmYXVsdCBzdGF0dXMgYmxvY2ssIGdlbmVyYXRlZCBieSB1c3Rvcm0KICovCnN0cnVjdCBjc3Rvcm1fZGVmX3N0YXR1c19ibG9ja191IHsKCV9fbGUxNiBpbmRleF92YWx1ZXNbSENfVVNUT1JNX0RFRl9TQl9OVU1fSU5ESUNFU107CglfX2xlMTYgc3RhdHVzX2Jsb2NrX2luZGV4OwoJdTggZnVuYzsKCXU4IHN0YXR1c19ibG9ja19pZDsKCV9fbGUzMiBfX2ZsYWdzOwp9OwoKLyoKICogY3N0b3JtIGRlZmF1bHQgc3RhdHVzIGJsb2NrLCBnZW5lcmF0ZWQgYnkgY3N0b3JtCiAqLwpzdHJ1Y3QgY3N0b3JtX2RlZl9zdGF0dXNfYmxvY2tfYyB7CglfX2xlMTYgaW5kZXhfdmFsdWVzW0hDX0NTVE9STV9ERUZfU0JfTlVNX0lORElDRVNdOwoJX19sZTE2IHN0YXR1c19ibG9ja19pbmRleDsKCXU4IGZ1bmM7Cgl1OCBzdGF0dXNfYmxvY2tfaWQ7CglfX2xlMzIgX19mbGFnczsKfTsKCi8qCiAqIHhzdG9ybSBzdGF0dXMgYmxvY2sKICovCnN0cnVjdCB4c3Rvcm1fZGVmX3N0YXR1c19ibG9jayB7CglfX2xlMTYgaW5kZXhfdmFsdWVzW0hDX1hTVE9STV9ERUZfU0JfTlVNX0lORElDRVNdOwoJX19sZTE2IHN0YXR1c19ibG9ja19pbmRleDsKCXU4IGZ1bmM7Cgl1OCBzdGF0dXNfYmxvY2tfaWQ7CglfX2xlMzIgX19mbGFnczsKfTsKCi8qCiAqIHRzdG9ybSBzdGF0dXMgYmxvY2sKICovCnN0cnVjdCB0c3Rvcm1fZGVmX3N0YXR1c19ibG9jayB7CglfX2xlMTYgaW5kZXhfdmFsdWVzW0hDX1RTVE9STV9ERUZfU0JfTlVNX0lORElDRVNdOwoJX19sZTE2IHN0YXR1c19ibG9ja19pbmRleDsKCXU4IGZ1bmM7Cgl1OCBzdGF0dXNfYmxvY2tfaWQ7CglfX2xlMzIgX19mbGFnczsKfTsKCi8qCiAqIGhvc3Qgc3RhdHVzIGJsb2NrCiAqLwpzdHJ1Y3QgaG9zdF9kZWZfc3RhdHVzX2Jsb2NrIHsKCXN0cnVjdCBhdHRlbl9kZWZfc3RhdHVzX2Jsb2NrIGF0dGVuX3N0YXR1c19ibG9jazsKCXN0cnVjdCBjc3Rvcm1fZGVmX3N0YXR1c19ibG9ja191IHVfZGVmX3N0YXR1c19ibG9jazsKCXN0cnVjdCBjc3Rvcm1fZGVmX3N0YXR1c19ibG9ja19jIGNfZGVmX3N0YXR1c19ibG9jazsKCXN0cnVjdCB4c3Rvcm1fZGVmX3N0YXR1c19ibG9jayB4X2RlZl9zdGF0dXNfYmxvY2s7CglzdHJ1Y3QgdHN0b3JtX2RlZl9zdGF0dXNfYmxvY2sgdF9kZWZfc3RhdHVzX2Jsb2NrOwp9OwoKCi8qCiAqIGNzdG9ybSBzdGF0dXMgYmxvY2ssIGdlbmVyYXRlZCBieSB1c3Rvcm0KICovCnN0cnVjdCBjc3Rvcm1fc3RhdHVzX2Jsb2NrX3UgewoJX19sZTE2IGluZGV4X3ZhbHVlc1tIQ19VU1RPUk1fU0JfTlVNX0lORElDRVNdOwoJX19sZTE2IHN0YXR1c19ibG9ja19pbmRleDsKCXU4IGZ1bmM7Cgl1OCBzdGF0dXNfYmxvY2tfaWQ7CglfX2xlMzIgX19mbGFnczsKfTsKCi8qCiAqIGNzdG9ybSBzdGF0dXMgYmxvY2ssIGdlbmVyYXRlZCBieSBjc3Rvcm0KICovCnN0cnVjdCBjc3Rvcm1fc3RhdHVzX2Jsb2NrX2MgewoJX19sZTE2IGluZGV4X3ZhbHVlc1tIQ19DU1RPUk1fU0JfTlVNX0lORElDRVNdOwoJX19sZTE2IHN0YXR1c19ibG9ja19pbmRleDsKCXU4IGZ1bmM7Cgl1OCBzdGF0dXNfYmxvY2tfaWQ7CglfX2xlMzIgX19mbGFnczsKfTsKCi8qCiAqIGhvc3Qgc3RhdHVzIGJsb2NrCiAqLwpzdHJ1Y3QgaG9zdF9zdGF0dXNfYmxvY2sgewoJc3RydWN0IGNzdG9ybV9zdGF0dXNfYmxvY2tfdSB1X3N0YXR1c19ibG9jazsKCXN0cnVjdCBjc3Rvcm1fc3RhdHVzX2Jsb2NrX2MgY19zdGF0dXNfYmxvY2s7Cn07CgoKLyoKICogVGhlIGRhdGEgZm9yIFJTUyBzZXR1cCByYW1yb2QKICovCnN0cnVjdCBldGhfY2xpZW50X3NldHVwX3JhbXJvZF9kYXRhIHsKCXUzMiBjbGllbnRfaWQ7Cgl1OCBpc19yZG1hOwoJdTggaXNfZmNvZTsKCXUxNiByZXNlcnZlZDE7Cn07CgoKLyoKICogcmVndWxhciBldGggRlAgQ1FFIHBhcmFtZXRlcnMgc3RydWN0CiAqLwpzdHJ1Y3QgZXRoX2Zhc3RfcGF0aF9yeF9jcWUgewoJdTggdHlwZV9lcnJvcl9mbGFnczsKI2RlZmluZSBFVEhfRkFTVF9QQVRIX1JYX0NRRV9UWVBFICgweDE8PDApCiNkZWZpbmUgRVRIX0ZBU1RfUEFUSF9SWF9DUUVfVFlQRV9TSElGVCAwCiNkZWZpbmUgRVRIX0ZBU1RfUEFUSF9SWF9DUUVfUEhZX0RFQ09ERV9FUlJfRkxHICgweDE8PDEpCiNkZWZpbmUgRVRIX0ZBU1RfUEFUSF9SWF9DUUVfUEhZX0RFQ09ERV9FUlJfRkxHX1NISUZUIDEKI2RlZmluZSBFVEhfRkFTVF9QQVRIX1JYX0NRRV9JUF9CQURfWFNVTV9GTEcgKDB4MTw8MikKI2RlZmluZSBFVEhfRkFTVF9QQVRIX1JYX0NRRV9JUF9CQURfWFNVTV9GTEdfU0hJRlQgMgojZGVmaW5lIEVUSF9GQVNUX1BBVEhfUlhfQ1FFX0w0X0JBRF9YU1VNX0ZMRyAoMHgxPDwzKQojZGVmaW5lIEVUSF9GQVNUX1BBVEhfUlhfQ1FFX0w0X0JBRF9YU1VNX0ZMR19TSElGVCAzCiNkZWZpbmUgRVRIX0ZBU1RfUEFUSF9SWF9DUUVfU1RBUlRfRkxHICgweDE8PDQpCiNkZWZpbmUgRVRIX0ZBU1RfUEFUSF9SWF9DUUVfU1RBUlRfRkxHX1NISUZUIDQKI2RlZmluZSBFVEhfRkFTVF9QQVRIX1JYX0NRRV9FTkRfRkxHICgweDE8PDUpCiNkZWZpbmUgRVRIX0ZBU1RfUEFUSF9SWF9DUUVfRU5EX0ZMR19TSElGVCA1CiNkZWZpbmUgRVRIX0ZBU1RfUEFUSF9SWF9DUUVfUkVTRVJWRUQwICgweDM8PDYpCiNkZWZpbmUgRVRIX0ZBU1RfUEFUSF9SWF9DUUVfUkVTRVJWRUQwX1NISUZUIDYKCXU4IHN0YXR1c19mbGFnczsKI2RlZmluZSBFVEhfRkFTVF9QQVRIX1JYX0NRRV9SU1NfSEFTSF9UWVBFICgweDc8PDApCiNkZWZpbmUgRVRIX0ZBU1RfUEFUSF9SWF9DUUVfUlNTX0hBU0hfVFlQRV9TSElGVCAwCiNkZWZpbmUgRVRIX0ZBU1RfUEFUSF9SWF9DUUVfUlNTX0hBU0hfRkxHICgweDE8PDMpCiNkZWZpbmUgRVRIX0ZBU1RfUEFUSF9SWF9DUUVfUlNTX0hBU0hfRkxHX1NISUZUIDMKI2RlZmluZSBFVEhfRkFTVF9QQVRIX1JYX0NRRV9CUk9BRENBU1RfRkxHICgweDE8PDQpCiNkZWZpbmUgRVRIX0ZBU1RfUEFUSF9SWF9DUUVfQlJPQURDQVNUX0ZMR19TSElGVCA0CiNkZWZpbmUgRVRIX0ZBU1RfUEFUSF9SWF9DUUVfTUFDX01BVENIX0ZMRyAoMHgxPDw1KQojZGVmaW5lIEVUSF9GQVNUX1BBVEhfUlhfQ1FFX01BQ19NQVRDSF9GTEdfU0hJRlQgNQojZGVmaW5lIEVUSF9GQVNUX1BBVEhfUlhfQ1FFX0lQX1hTVU1fTk9fVkFMSURBVElPTl9GTEcgKDB4MTw8NikKI2RlZmluZSBFVEhfRkFTVF9QQVRIX1JYX0NRRV9JUF9YU1VNX05PX1ZBTElEQVRJT05fRkxHX1NISUZUIDYKI2RlZmluZSBFVEhfRkFTVF9QQVRIX1JYX0NRRV9MNF9YU1VNX05PX1ZBTElEQVRJT05fRkxHICgweDE8PDcpCiNkZWZpbmUgRVRIX0ZBU1RfUEFUSF9SWF9DUUVfTDRfWFNVTV9OT19WQUxJREFUSU9OX0ZMR19TSElGVCA3Cgl1OCBwbGFjZW1lbnRfb2Zmc2V0OwoJdTggcXVldWVfaW5kZXg7CglfX2xlMzIgcnNzX2hhc2hfcmVzdWx0OwoJX19sZTE2IHZsYW5fdGFnOwoJX19sZTE2IHBrdF9sZW47CglfX2xlMTYgbGVuX29uX2JkOwoJc3RydWN0IHBhcnNpbmdfZmxhZ3MgcGFyc19mbGFnczsKCV9fbGUxNiBzZ2xbOF07Cn07CgoKLyoKICogVGhlIGRhdGEgZm9yIFJTUyBzZXR1cCByYW1yb2QKICovCnN0cnVjdCBldGhfaGFsdF9yYW1yb2RfZGF0YSB7Cgl1MzIgY2xpZW50X2lkOwoJdTMyIHJlc2VydmVkMDsKfTsKCgovKgogKiBUaGUgZGF0YSBmb3Igc3RhdGlzdGljcyBxdWVyeSByYW1yb2QKICovCnN0cnVjdCBldGhfcXVlcnlfcmFtcm9kX2RhdGEgewojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1OCByZXNlcnZlZDA7Cgl1OCBjb2xsZWN0X3BvcnQ7Cgl1MTYgZHJ2X2NvdW50ZXI7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IGRydl9jb3VudGVyOwoJdTggY29sbGVjdF9wb3J0OwoJdTggcmVzZXJ2ZWQwOwojZW5kaWYKCXUzMiBjdHJfaWRfdmVjdG9yOwp9OwoKCi8qCiAqIFBsYWNlIGhvbGRlciBmb3IgcmFtcm9kcyBwcm90b2NvbCBzcGVjaWZpYyBkYXRhCiAqLwpzdHJ1Y3QgcmFtcm9kX2RhdGEgewoJX19sZTMyIGRhdGFfbG87CglfX2xlMzIgZGF0YV9oaTsKfTsKCi8qCiAqIHVuaW9uIGZvciByYW1yb2QgZGF0YSBmb3IgRXRoZXJuZXQgcHJvdG9jb2wgKENRRSkgKGZvcmNlIHNpemUgb2YgMTYgYml0cykKICovCnVuaW9uIGV0aF9yYW1yb2RfZGF0YSB7CglzdHJ1Y3QgcmFtcm9kX2RhdGEgZ2VuZXJhbDsKfTsKCgovKgogKiBFdGggUnggQ3FlIHN0cnVjdHVyZS0gZ2VuZXJhbCBzdHJ1Y3R1cmUgZm9yIHJhbXJvZHMKICovCnN0cnVjdCBjb21tb25fcmFtcm9kX2V0aF9yeF9jcWUgewoJdTggcmFtcm9kX3R5cGU7CiNkZWZpbmUgQ09NTU9OX1JBTVJPRF9FVEhfUlhfQ1FFX1RZUEUgKDB4MTw8MCkKI2RlZmluZSBDT01NT05fUkFNUk9EX0VUSF9SWF9DUUVfVFlQRV9TSElGVCAwCiNkZWZpbmUgQ09NTU9OX1JBTVJPRF9FVEhfUlhfQ1FFX0VSUk9SICgweDE8PDEpCiNkZWZpbmUgQ09NTU9OX1JBTVJPRF9FVEhfUlhfQ1FFX0VSUk9SX1NISUZUIDEKI2RlZmluZSBDT01NT05fUkFNUk9EX0VUSF9SWF9DUUVfUkVTRVJWRUQwICgweDNGPDwyKQojZGVmaW5lIENPTU1PTl9SQU1ST0RfRVRIX1JYX0NRRV9SRVNFUlZFRDBfU0hJRlQgMgoJdTggY29ubl90eXBlOwoJX19sZTE2IHJlc2VydmVkMTsKCV9fbGUzMiBjb25uX2FuZF9jbWRfZGF0YTsKI2RlZmluZSBDT01NT05fUkFNUk9EX0VUSF9SWF9DUUVfQ0lEICgweEZGRkZGRjw8MCkKI2RlZmluZSBDT01NT05fUkFNUk9EX0VUSF9SWF9DUUVfQ0lEX1NISUZUIDAKI2RlZmluZSBDT01NT05fUkFNUk9EX0VUSF9SWF9DUUVfQ01EX0lEICgweEZGPDwyNCkKI2RlZmluZSBDT01NT05fUkFNUk9EX0VUSF9SWF9DUUVfQ01EX0lEX1NISUZUIDI0CglzdHJ1Y3QgcmFtcm9kX2RhdGEgcHJvdG9jb2xfZGF0YTsKCV9fbGUzMiByZXNlcnZlZDJbNF07Cn07CgovKgogKiBSeCBMYXN0IENRRSBpbiBwYWdlIChpbiBFVEgpCiAqLwpzdHJ1Y3QgZXRoX3J4X2NxZV9uZXh0X3BhZ2UgewoJX19sZTMyIGFkZHJfbG87CglfX2xlMzIgYWRkcl9oaTsKCV9fbGUzMiByZXNlcnZlZFs2XTsKfTsKCi8qCiAqIHVuaW9uIGZvciBhbGwgZXRoIHJ4IGNxZSB0eXBlcyAoZml4IHRoZWlyIHNpemVzKQogKi8KdW5pb24gZXRoX3J4X2NxZSB7CglzdHJ1Y3QgZXRoX2Zhc3RfcGF0aF9yeF9jcWUgZmFzdF9wYXRoX2NxZTsKCXN0cnVjdCBjb21tb25fcmFtcm9kX2V0aF9yeF9jcWUgcmFtcm9kX2NxZTsKCXN0cnVjdCBldGhfcnhfY3FlX25leHRfcGFnZSBuZXh0X3BhZ2VfY3FlOwp9OwoKCi8qCiAqIGNvbW1vbiBkYXRhIGZvciBhbGwgcHJvdG9jb2xzCiAqLwpzdHJ1Y3Qgc3BlX2hkciB7CglfX2xlMzIgY29ubl9hbmRfY21kX2RhdGE7CiNkZWZpbmUgU1BFX0hEUl9DSUQgKDB4RkZGRkZGPDwwKQojZGVmaW5lIFNQRV9IRFJfQ0lEX1NISUZUIDAKI2RlZmluZSBTUEVfSERSX0NNRF9JRCAoMHhGRjw8MjQpCiNkZWZpbmUgU1BFX0hEUl9DTURfSURfU0hJRlQgMjQKCV9fbGUxNiB0eXBlOwojZGVmaW5lIFNQRV9IRFJfQ09OTl9UWVBFICgweEZGPDwwKQojZGVmaW5lIFNQRV9IRFJfQ09OTl9UWVBFX1NISUZUIDAKI2RlZmluZSBTUEVfSERSX0NPTU1PTl9SQU1ST0QgKDB4RkY8PDgpCiNkZWZpbmUgU1BFX0hEUl9DT01NT05fUkFNUk9EX1NISUZUIDgKCV9fbGUxNiByZXNlcnZlZDsKfTsKCi8qCiAqIEV0aGVybmV0IHNsb3cgcGF0aCBlbGVtZW50CiAqLwp1bmlvbiBldGhfc3BlY2lmaWNfZGF0YSB7Cgl1OCBwcm90b2NvbF9kYXRhWzhdOwoJc3RydWN0IHJlZ3BhaXIgbWFjX2NvbmZpZ19hZGRyOwoJc3RydWN0IGV0aF9jbGllbnRfc2V0dXBfcmFtcm9kX2RhdGEgY2xpZW50X3NldHVwX3JhbXJvZF9kYXRhOwoJc3RydWN0IGV0aF9oYWx0X3JhbXJvZF9kYXRhIGhhbHRfcmFtcm9kX2RhdGE7CglzdHJ1Y3QgcmVncGFpciBsZWFkaW5nX2NxZV9hZGRyOwoJc3RydWN0IHJlZ3BhaXIgdXBkYXRlX2RhdGFfYWRkcjsKCXN0cnVjdCBldGhfcXVlcnlfcmFtcm9kX2RhdGEgcXVlcnlfcmFtcm9kX2RhdGE7Cn07CgovKgogKiBFdGhlcm5ldCBzbG93IHBhdGggZWxlbWVudAogKi8Kc3RydWN0IGV0aF9zcGUgewoJc3RydWN0IHNwZV9oZHIgaGRyOwoJdW5pb24gZXRoX3NwZWNpZmljX2RhdGEgZGF0YTsKfTsKCgovKgogKiBhcnJheSBvZiAxMyBiZHMgYXMgYXBwZWFycyBpbiB0aGUgZXRoIHhzdG9ybSBjb250ZXh0CiAqLwpzdHJ1Y3QgZXRoX3R4X2Jkc19hcnJheSB7Cgl1bmlvbiBldGhfdHhfYmRfdHlwZXMgYmRzWzEzXTsKfTsKCgovKgogKiBDb21tb24gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHBlciBmdW5jdGlvbiBpbiBUc3Rvcm0KICovCnN0cnVjdCB0c3Rvcm1fZXRoX2Z1bmN0aW9uX2NvbW1vbl9jb25maWcgewojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1OCBsZWFkaW5nX2NsaWVudF9pZDsKCXU4IHJzc19yZXN1bHRfbWFzazsKCXUxNiBjb25maWdfZmxhZ3M7CiNkZWZpbmUgVFNUT1JNX0VUSF9GVU5DVElPTl9DT01NT05fQ09ORklHX1JTU19JUFY0X0NBUEFCSUxJVFkgKDB4MTw8MCkKI2RlZmluZSBUU1RPUk1fRVRIX0ZVTkNUSU9OX0NPTU1PTl9DT05GSUdfUlNTX0lQVjRfQ0FQQUJJTElUWV9TSElGVCAwCiNkZWZpbmUgVFNUT1JNX0VUSF9GVU5DVElPTl9DT01NT05fQ09ORklHX1JTU19JUFY0X1RDUF9DQVBBQklMSVRZICgweDE8PDEpCiNkZWZpbmUgVFNUT1JNX0VUSF9GVU5DVElPTl9DT01NT05fQ09ORklHX1JTU19JUFY0X1RDUF9DQVBBQklMSVRZX1NISUZUIDEKI2RlZmluZSBUU1RPUk1fRVRIX0ZVTkNUSU9OX0NPTU1PTl9DT05GSUdfUlNTX0lQVjZfQ0FQQUJJTElUWSAoMHgxPDwyKQojZGVmaW5lIFRTVE9STV9FVEhfRlVOQ1RJT05fQ09NTU9OX0NPTkZJR19SU1NfSVBWNl9DQVBBQklMSVRZX1NISUZUIDIKI2RlZmluZSBUU1RPUk1fRVRIX0ZVTkNUSU9OX0NPTU1PTl9DT05GSUdfUlNTX0lQVjZfVENQX0NBUEFCSUxJVFkgKDB4MTw8MykKI2RlZmluZSBUU1RPUk1fRVRIX0ZVTkNUSU9OX0NPTU1PTl9DT05GSUdfUlNTX0lQVjZfVENQX0NBUEFCSUxJVFlfU0hJRlQgMwojZGVmaW5lIFRTVE9STV9FVEhfRlVOQ1RJT05fQ09NTU9OX0NPTkZJR19SU1NfTU9ERSAoMHg3PDw0KQojZGVmaW5lIFRTVE9STV9FVEhfRlVOQ1RJT05fQ09NTU9OX0NPTkZJR19SU1NfTU9ERV9TSElGVCA0CiNkZWZpbmUgVFNUT1JNX0VUSF9GVU5DVElPTl9DT01NT05fQ09ORklHX0RFRkFVTFRfRU5BQkxFICgweDE8PDcpCiNkZWZpbmUgVFNUT1JNX0VUSF9GVU5DVElPTl9DT01NT05fQ09ORklHX0RFRkFVTFRfRU5BQkxFX1NISUZUIDcKI2RlZmluZSBUU1RPUk1fRVRIX0ZVTkNUSU9OX0NPTU1PTl9DT05GSUdfVkxBTl9JTl9DQU0gKDB4MTw8OCkKI2RlZmluZSBUU1RPUk1fRVRIX0ZVTkNUSU9OX0NPTU1PTl9DT05GSUdfVkxBTl9JTl9DQU1fU0hJRlQgOAojZGVmaW5lIFRTVE9STV9FVEhfRlVOQ1RJT05fQ09NTU9OX0NPTkZJR19FMUhPVl9JTl9DQU0gKDB4MTw8OSkKI2RlZmluZSBUU1RPUk1fRVRIX0ZVTkNUSU9OX0NPTU1PTl9DT05GSUdfRTFIT1ZfSU5fQ0FNX1NISUZUIDkKI2RlZmluZSBUU1RPUk1fRVRIX0ZVTkNUSU9OX0NPTU1PTl9DT05GSUdfRU5BQkxFX1RQQSAoMHgxPDwxMCkKI2RlZmluZSBUU1RPUk1fRVRIX0ZVTkNUSU9OX0NPTU1PTl9DT05GSUdfRU5BQkxFX1RQQV9TSElGVCAxMAojZGVmaW5lIF9fVFNUT1JNX0VUSF9GVU5DVElPTl9DT01NT05fQ09ORklHX1JFU0VSVkVEMCAoMHgxRjw8MTEpCiNkZWZpbmUgX19UU1RPUk1fRVRIX0ZVTkNUSU9OX0NPTU1PTl9DT05GSUdfUkVTRVJWRUQwX1NISUZUIDExCiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IGNvbmZpZ19mbGFnczsKI2RlZmluZSBUU1RPUk1fRVRIX0ZVTkNUSU9OX0NPTU1PTl9DT05GSUdfUlNTX0lQVjRfQ0FQQUJJTElUWSAoMHgxPDwwKQojZGVmaW5lIFRTVE9STV9FVEhfRlVOQ1RJT05fQ09NTU9OX0NPTkZJR19SU1NfSVBWNF9DQVBBQklMSVRZX1NISUZUIDAKI2RlZmluZSBUU1RPUk1fRVRIX0ZVTkNUSU9OX0NPTU1PTl9DT05GSUdfUlNTX0lQVjRfVENQX0NBUEFCSUxJVFkgKDB4MTw8MSkKI2RlZmluZSBUU1RPUk1fRVRIX0ZVTkNUSU9OX0NPTU1PTl9DT05GSUdfUlNTX0lQVjRfVENQX0NBUEFCSUxJVFlfU0hJRlQgMQojZGVmaW5lIFRTVE9STV9FVEhfRlVOQ1RJT05fQ09NTU9OX0NPTkZJR19SU1NfSVBWNl9DQVBBQklMSVRZICgweDE8PDIpCiNkZWZpbmUgVFNUT1JNX0VUSF9GVU5DVElPTl9DT01NT05fQ09ORklHX1JTU19JUFY2X0NBUEFCSUxJVFlfU0hJRlQgMgojZGVmaW5lIFRTVE9STV9FVEhfRlVOQ1RJT05fQ09NTU9OX0NPTkZJR19SU1NfSVBWNl9UQ1BfQ0FQQUJJTElUWSAoMHgxPDwzKQojZGVmaW5lIFRTVE9STV9FVEhfRlVOQ1RJT05fQ09NTU9OX0NPTkZJR19SU1NfSVBWNl9UQ1BfQ0FQQUJJTElUWV9TSElGVCAzCiNkZWZpbmUgVFNUT1JNX0VUSF9GVU5DVElPTl9DT01NT05fQ09ORklHX1JTU19NT0RFICgweDc8PDQpCiNkZWZpbmUgVFNUT1JNX0VUSF9GVU5DVElPTl9DT01NT05fQ09ORklHX1JTU19NT0RFX1NISUZUIDQKI2RlZmluZSBUU1RPUk1fRVRIX0ZVTkNUSU9OX0NPTU1PTl9DT05GSUdfREVGQVVMVF9FTkFCTEUgKDB4MTw8NykKI2RlZmluZSBUU1RPUk1fRVRIX0ZVTkNUSU9OX0NPTU1PTl9DT05GSUdfREVGQVVMVF9FTkFCTEVfU0hJRlQgNwojZGVmaW5lIFRTVE9STV9FVEhfRlVOQ1RJT05fQ09NTU9OX0NPTkZJR19WTEFOX0lOX0NBTSAoMHgxPDw4KQojZGVmaW5lIFRTVE9STV9FVEhfRlVOQ1RJT05fQ09NTU9OX0NPTkZJR19WTEFOX0lOX0NBTV9TSElGVCA4CiNkZWZpbmUgVFNUT1JNX0VUSF9GVU5DVElPTl9DT01NT05fQ09ORklHX0UxSE9WX0lOX0NBTSAoMHgxPDw5KQojZGVmaW5lIFRTVE9STV9FVEhfRlVOQ1RJT05fQ09NTU9OX0NPTkZJR19FMUhPVl9JTl9DQU1fU0hJRlQgOQojZGVmaW5lIFRTVE9STV9FVEhfRlVOQ1RJT05fQ09NTU9OX0NPTkZJR19FTkFCTEVfVFBBICgweDE8PDEwKQojZGVmaW5lIFRTVE9STV9FVEhfRlVOQ1RJT05fQ09NTU9OX0NPTkZJR19FTkFCTEVfVFBBX1NISUZUIDEwCiNkZWZpbmUgX19UU1RPUk1fRVRIX0ZVTkNUSU9OX0NPTU1PTl9DT05GSUdfUkVTRVJWRUQwICgweDFGPDwxMSkKI2RlZmluZSBfX1RTVE9STV9FVEhfRlVOQ1RJT05fQ09NTU9OX0NPTkZJR19SRVNFUlZFRDBfU0hJRlQgMTEKCXU4IHJzc19yZXN1bHRfbWFzazsKCXU4IGxlYWRpbmdfY2xpZW50X2lkOwojZW5kaWYKCXUxNiB2bGFuX2lkWzJdOwp9OwoKLyoKICogUlNTIGlkaXJlY3Rpb24gdGFibGUgdXBkYXRlIGNvbmZpZ3VyYXRpb24KICovCnN0cnVjdCByc3NfdXBkYXRlX2NvbmZpZyB7CiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXUxNiB0b2VfcnNzX2JpdG1hcDsKCXUxNiBmbGFnczsKI2RlZmluZSBSU1NfVVBEQVRFX0NPTkZJR19FVEhfVVBEQVRFX0VOQUJMRSAoMHgxPDwwKQojZGVmaW5lIFJTU19VUERBVEVfQ09ORklHX0VUSF9VUERBVEVfRU5BQkxFX1NISUZUIDAKI2RlZmluZSBSU1NfVVBEQVRFX0NPTkZJR19UT0VfVVBEQVRFX0VOQUJMRSAoMHgxPDwxKQojZGVmaW5lIFJTU19VUERBVEVfQ09ORklHX1RPRV9VUERBVEVfRU5BQkxFX1NISUZUIDEKI2RlZmluZSBfX1JTU19VUERBVEVfQ09ORklHX1JFU0VSVkVEMCAoMHgzRkZGPDwyKQojZGVmaW5lIF9fUlNTX1VQREFURV9DT05GSUdfUkVTRVJWRUQwX1NISUZUIDIKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1MTYgZmxhZ3M7CiNkZWZpbmUgUlNTX1VQREFURV9DT05GSUdfRVRIX1VQREFURV9FTkFCTEUgKDB4MTw8MCkKI2RlZmluZSBSU1NfVVBEQVRFX0NPTkZJR19FVEhfVVBEQVRFX0VOQUJMRV9TSElGVCAwCiNkZWZpbmUgUlNTX1VQREFURV9DT05GSUdfVE9FX1VQREFURV9FTkFCTEUgKDB4MTw8MSkKI2RlZmluZSBSU1NfVVBEQVRFX0NPTkZJR19UT0VfVVBEQVRFX0VOQUJMRV9TSElGVCAxCiNkZWZpbmUgX19SU1NfVVBEQVRFX0NPTkZJR19SRVNFUlZFRDAgKDB4M0ZGRjw8MikKI2RlZmluZSBfX1JTU19VUERBVEVfQ09ORklHX1JFU0VSVkVEMF9TSElGVCAyCgl1MTYgdG9lX3Jzc19iaXRtYXA7CiNlbmRpZgoJdTMyIHJlc2VydmVkMTsKfTsKCi8qCiAqIHBhcmFtZXRlcnMgZm9yIGV0aCB1cGRhdGUgcmFtcm9kCiAqLwpzdHJ1Y3QgZXRoX3VwZGF0ZV9yYW1yb2RfZGF0YSB7CglzdHJ1Y3QgdHN0b3JtX2V0aF9mdW5jdGlvbl9jb21tb25fY29uZmlnIGZ1bmNfY29uZmlnOwoJdTggaW5kaXJlY3Rpb25UYWJsZVsxMjhdOwoJc3RydWN0IHJzc191cGRhdGVfY29uZmlnIHJzc19jb25maWc7Cn07CgoKLyoKICogTUFDIGZpbHRlcmluZyBjb25maWd1cmF0aW9uIGNvbW1hbmQgaGVhZGVyCiAqLwpzdHJ1Y3QgbWFjX2NvbmZpZ3VyYXRpb25faGRyIHsKCXU4IGxlbmd0aDsKCXU4IG9mZnNldDsKCXUxNiBjbGllbnRfaWQ7Cgl1MzIgcmVzZXJ2ZWQxOwp9OwoKLyoKICogTUFDIGFkZHJlc3MgaW4gbGlzdCBmb3IgcmFtcm9kCiAqLwpzdHJ1Y3QgdHN0b3JtX2NhbV9lbnRyeSB7CglfX2xlMTYgbHNiX21hY19hZGRyOwoJX19sZTE2IG1pZGRsZV9tYWNfYWRkcjsKCV9fbGUxNiBtc2JfbWFjX2FkZHI7CglfX2xlMTYgZmxhZ3M7CiNkZWZpbmUgVFNUT1JNX0NBTV9FTlRSWV9QT1JUX0lEICgweDE8PDApCiNkZWZpbmUgVFNUT1JNX0NBTV9FTlRSWV9QT1JUX0lEX1NISUZUIDAKI2RlZmluZSBUU1RPUk1fQ0FNX0VOVFJZX1JTUlZWQUwwICgweDc8PDEpCiNkZWZpbmUgVFNUT1JNX0NBTV9FTlRSWV9SU1JWVkFMMF9TSElGVCAxCiNkZWZpbmUgVFNUT1JNX0NBTV9FTlRSWV9SRVNFUlZFRDAgKDB4RkZGPDw0KQojZGVmaW5lIFRTVE9STV9DQU1fRU5UUllfUkVTRVJWRUQwX1NISUZUIDQKfTsKCi8qCiAqIE1BQyBmaWx0ZXJpbmc6IENBTSB0YXJnZXQgdGFibGUgZW50cnkKICovCnN0cnVjdCB0c3Rvcm1fY2FtX3RhcmdldF90YWJsZV9lbnRyeSB7Cgl1OCBmbGFnczsKI2RlZmluZSBUU1RPUk1fQ0FNX1RBUkdFVF9UQUJMRV9FTlRSWV9CUk9BRENBU1QgKDB4MTw8MCkKI2RlZmluZSBUU1RPUk1fQ0FNX1RBUkdFVF9UQUJMRV9FTlRSWV9CUk9BRENBU1RfU0hJRlQgMAojZGVmaW5lIFRTVE9STV9DQU1fVEFSR0VUX1RBQkxFX0VOVFJZX09WRVJSSURFX1ZMQU5fUkVNT1ZBTCAoMHgxPDwxKQojZGVmaW5lIFRTVE9STV9DQU1fVEFSR0VUX1RBQkxFX0VOVFJZX09WRVJSSURFX1ZMQU5fUkVNT1ZBTF9TSElGVCAxCiNkZWZpbmUgVFNUT1JNX0NBTV9UQVJHRVRfVEFCTEVfRU5UUllfQUNUSU9OX1RZUEUgKDB4MTw8MikKI2RlZmluZSBUU1RPUk1fQ0FNX1RBUkdFVF9UQUJMRV9FTlRSWV9BQ1RJT05fVFlQRV9TSElGVCAyCiNkZWZpbmUgVFNUT1JNX0NBTV9UQVJHRVRfVEFCTEVfRU5UUllfUkRNQV9NQUMgKDB4MTw8MykKI2RlZmluZSBUU1RPUk1fQ0FNX1RBUkdFVF9UQUJMRV9FTlRSWV9SRE1BX01BQ19TSElGVCAzCiNkZWZpbmUgVFNUT1JNX0NBTV9UQVJHRVRfVEFCTEVfRU5UUllfUkVTRVJWRUQwICgweEY8PDQpCiNkZWZpbmUgVFNUT1JNX0NBTV9UQVJHRVRfVEFCTEVfRU5UUllfUkVTRVJWRUQwX1NISUZUIDQKCXU4IHJlc2VydmVkMTsKCXUxNiB2bGFuX2lkOwoJdTMyIGNsaWVudHNfYml0X3ZlY3RvcjsKfTsKCi8qCiAqIE1BQyBhZGRyZXNzIGluIGxpc3QgZm9yIHJhbXJvZAogKi8Kc3RydWN0IG1hY19jb25maWd1cmF0aW9uX2VudHJ5IHsKCXN0cnVjdCB0c3Rvcm1fY2FtX2VudHJ5IGNhbV9lbnRyeTsKCXN0cnVjdCB0c3Rvcm1fY2FtX3RhcmdldF90YWJsZV9lbnRyeSB0YXJnZXRfdGFibGVfZW50cnk7Cn07CgovKgogKiBNQUMgZmlsdGVyaW5nIGNvbmZpZ3VyYXRpb24gY29tbWFuZAogKi8Kc3RydWN0IG1hY19jb25maWd1cmF0aW9uX2NtZCB7CglzdHJ1Y3QgbWFjX2NvbmZpZ3VyYXRpb25faGRyIGhkcjsKCXN0cnVjdCBtYWNfY29uZmlndXJhdGlvbl9lbnRyeSBjb25maWdfdGFibGVbNjRdOwp9OwoKCi8qCiAqIE1BQyBhZGRyZXNzIGluIGxpc3QgZm9yIHJhbXJvZAogKi8Kc3RydWN0IG1hY19jb25maWd1cmF0aW9uX2VudHJ5X2UxaCB7CglfX2xlMTYgbHNiX21hY19hZGRyOwoJX19sZTE2IG1pZGRsZV9tYWNfYWRkcjsKCV9fbGUxNiBtc2JfbWFjX2FkZHI7CglfX2xlMTYgdmxhbl9pZDsKCV9fbGUxNiBlMWhvdl9pZDsKCXU4IHJlc2VydmVkMDsKCXU4IGZsYWdzOwojZGVmaW5lIE1BQ19DT05GSUdVUkFUSU9OX0VOVFJZX0UxSF9QT1JUICgweDE8PDApCiNkZWZpbmUgTUFDX0NPTkZJR1VSQVRJT05fRU5UUllfRTFIX1BPUlRfU0hJRlQgMAojZGVmaW5lIE1BQ19DT05GSUdVUkFUSU9OX0VOVFJZX0UxSF9BQ1RJT05fVFlQRSAoMHgxPDwxKQojZGVmaW5lIE1BQ19DT05GSUdVUkFUSU9OX0VOVFJZX0UxSF9BQ1RJT05fVFlQRV9TSElGVCAxCiNkZWZpbmUgTUFDX0NPTkZJR1VSQVRJT05fRU5UUllfRTFIX1JETUFfTUFDICgweDE8PDIpCiNkZWZpbmUgTUFDX0NPTkZJR1VSQVRJT05fRU5UUllfRTFIX1JETUFfTUFDX1NISUZUIDIKI2RlZmluZSBNQUNfQ09ORklHVVJBVElPTl9FTlRSWV9FMUhfUkVTRVJWRUQxICgweDFGPDwzKQojZGVmaW5lIE1BQ19DT05GSUdVUkFUSU9OX0VOVFJZX0UxSF9SRVNFUlZFRDFfU0hJRlQgMwoJdTMyIGNsaWVudHNfYml0X3ZlY3RvcjsKfTsKCi8qCiAqIE1BQyBmaWx0ZXJpbmcgY29uZmlndXJhdGlvbiBjb21tYW5kCiAqLwpzdHJ1Y3QgbWFjX2NvbmZpZ3VyYXRpb25fY21kX2UxaCB7CglzdHJ1Y3QgbWFjX2NvbmZpZ3VyYXRpb25faGRyIGhkcjsKCXN0cnVjdCBtYWNfY29uZmlndXJhdGlvbl9lbnRyeV9lMWggY29uZmlnX3RhYmxlWzMyXTsKfTsKCgovKgogKiBhcHByb3hpbWF0ZS1tYXRjaCBtdWx0aWNhc3QgZmlsdGVyaW5nIGZvciBFMUggcGVyIGZ1bmN0aW9uIGluIFRzdG9ybQogKi8Kc3RydWN0IHRzdG9ybV9ldGhfYXBwcm94aW1hdGVfbWF0Y2hfbXVsdGljYXN0X2ZpbHRlcmluZyB7Cgl1MzIgbWNhc3RfYWRkX2hhc2hfYml0X2FycmF5WzhdOwp9OwoKCi8qCiAqIENvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBwZXIgY2xpZW50IGluIFRzdG9ybQogKi8Kc3RydWN0IHRzdG9ybV9ldGhfY2xpZW50X2NvbmZpZyB7CiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXU4IHJlc2VydmVkMDsKCXU4IHN0YXRpc3RpY3NfY291bnRlcl9pZDsKCXUxNiBtdHU7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IG10dTsKCXU4IHN0YXRpc3RpY3NfY291bnRlcl9pZDsKCXU4IHJlc2VydmVkMDsKI2VuZGlmCiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXUxNiBkcm9wX2ZsYWdzOwojZGVmaW5lIFRTVE9STV9FVEhfQ0xJRU5UX0NPTkZJR19EUk9QX0lQX0NTX0VSUiAoMHgxPDwwKQojZGVmaW5lIFRTVE9STV9FVEhfQ0xJRU5UX0NPTkZJR19EUk9QX0lQX0NTX0VSUl9TSElGVCAwCiNkZWZpbmUgVFNUT1JNX0VUSF9DTElFTlRfQ09ORklHX0RST1BfVENQX0NTX0VSUiAoMHgxPDwxKQojZGVmaW5lIFRTVE9STV9FVEhfQ0xJRU5UX0NPTkZJR19EUk9QX1RDUF9DU19FUlJfU0hJRlQgMQojZGVmaW5lIFRTVE9STV9FVEhfQ0xJRU5UX0NPTkZJR19EUk9QX1RUTDAgKDB4MTw8MikKI2RlZmluZSBUU1RPUk1fRVRIX0NMSUVOVF9DT05GSUdfRFJPUF9UVEwwX1NISUZUIDIKI2RlZmluZSBUU1RPUk1fRVRIX0NMSUVOVF9DT05GSUdfRFJPUF9VRFBfQ1NfRVJSICgweDE8PDMpCiNkZWZpbmUgVFNUT1JNX0VUSF9DTElFTlRfQ09ORklHX0RST1BfVURQX0NTX0VSUl9TSElGVCAzCiNkZWZpbmUgX19UU1RPUk1fRVRIX0NMSUVOVF9DT05GSUdfUkVTRVJWRUQyICgweEZGRjw8NCkKI2RlZmluZSBfX1RTVE9STV9FVEhfQ0xJRU5UX0NPTkZJR19SRVNFUlZFRDJfU0hJRlQgNAoJdTE2IGNvbmZpZ19mbGFnczsKI2RlZmluZSBUU1RPUk1fRVRIX0NMSUVOVF9DT05GSUdfVkxBTl9SRU1fRU5BQkxFICgweDE8PDApCiNkZWZpbmUgVFNUT1JNX0VUSF9DTElFTlRfQ09ORklHX1ZMQU5fUkVNX0VOQUJMRV9TSElGVCAwCiNkZWZpbmUgVFNUT1JNX0VUSF9DTElFTlRfQ09ORklHX0UxSE9WX1JFTV9FTkFCTEUgKDB4MTw8MSkKI2RlZmluZSBUU1RPUk1fRVRIX0NMSUVOVF9DT05GSUdfRTFIT1ZfUkVNX0VOQUJMRV9TSElGVCAxCiNkZWZpbmUgVFNUT1JNX0VUSF9DTElFTlRfQ09ORklHX1NUQVRTSVRJQ1NfRU5BQkxFICgweDE8PDIpCiNkZWZpbmUgVFNUT1JNX0VUSF9DTElFTlRfQ09ORklHX1NUQVRTSVRJQ1NfRU5BQkxFX1NISUZUIDIKI2RlZmluZSBfX1RTVE9STV9FVEhfQ0xJRU5UX0NPTkZJR19SRVNFUlZFRDEgKDB4MUZGRjw8MykKI2RlZmluZSBfX1RTVE9STV9FVEhfQ0xJRU5UX0NPTkZJR19SRVNFUlZFRDFfU0hJRlQgMwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXUxNiBjb25maWdfZmxhZ3M7CiNkZWZpbmUgVFNUT1JNX0VUSF9DTElFTlRfQ09ORklHX1ZMQU5fUkVNX0VOQUJMRSAoMHgxPDwwKQojZGVmaW5lIFRTVE9STV9FVEhfQ0xJRU5UX0NPTkZJR19WTEFOX1JFTV9FTkFCTEVfU0hJRlQgMAojZGVmaW5lIFRTVE9STV9FVEhfQ0xJRU5UX0NPTkZJR19FMUhPVl9SRU1fRU5BQkxFICgweDE8PDEpCiNkZWZpbmUgVFNUT1JNX0VUSF9DTElFTlRfQ09ORklHX0UxSE9WX1JFTV9FTkFCTEVfU0hJRlQgMQojZGVmaW5lIFRTVE9STV9FVEhfQ0xJRU5UX0NPTkZJR19TVEFUU0lUSUNTX0VOQUJMRSAoMHgxPDwyKQojZGVmaW5lIFRTVE9STV9FVEhfQ0xJRU5UX0NPTkZJR19TVEFUU0lUSUNTX0VOQUJMRV9TSElGVCAyCiNkZWZpbmUgX19UU1RPUk1fRVRIX0NMSUVOVF9DT05GSUdfUkVTRVJWRUQxICgweDFGRkY8PDMpCiNkZWZpbmUgX19UU1RPUk1fRVRIX0NMSUVOVF9DT05GSUdfUkVTRVJWRUQxX1NISUZUIDMKCXUxNiBkcm9wX2ZsYWdzOwojZGVmaW5lIFRTVE9STV9FVEhfQ0xJRU5UX0NPTkZJR19EUk9QX0lQX0NTX0VSUiAoMHgxPDwwKQojZGVmaW5lIFRTVE9STV9FVEhfQ0xJRU5UX0NPTkZJR19EUk9QX0lQX0NTX0VSUl9TSElGVCAwCiNkZWZpbmUgVFNUT1JNX0VUSF9DTElFTlRfQ09ORklHX0RST1BfVENQX0NTX0VSUiAoMHgxPDwxKQojZGVmaW5lIFRTVE9STV9FVEhfQ0xJRU5UX0NPTkZJR19EUk9QX1RDUF9DU19FUlJfU0hJRlQgMQojZGVmaW5lIFRTVE9STV9FVEhfQ0xJRU5UX0NPTkZJR19EUk9QX1RUTDAgKDB4MTw8MikKI2RlZmluZSBUU1RPUk1fRVRIX0NMSUVOVF9DT05GSUdfRFJPUF9UVEwwX1NISUZUIDIKI2RlZmluZSBUU1RPUk1fRVRIX0NMSUVOVF9DT05GSUdfRFJPUF9VRFBfQ1NfRVJSICgweDE8PDMpCiNkZWZpbmUgVFNUT1JNX0VUSF9DTElFTlRfQ09ORklHX0RST1BfVURQX0NTX0VSUl9TSElGVCAzCiNkZWZpbmUgX19UU1RPUk1fRVRIX0NMSUVOVF9DT05GSUdfUkVTRVJWRUQyICgweEZGRjw8NCkKI2RlZmluZSBfX1RTVE9STV9FVEhfQ0xJRU5UX0NPTkZJR19SRVNFUlZFRDJfU0hJRlQgNAojZW5kaWYKfTsKCgovKgogKiBNQUMgZmlsdGVyaW5nIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBwZXIgcG9ydCBpbiBUc3Rvcm0KICovCnN0cnVjdCB0c3Rvcm1fZXRoX21hY19maWx0ZXJfY29uZmlnIHsKCXUzMiB1Y2FzdF9kcm9wX2FsbDsKCXUzMiB1Y2FzdF9hY2NlcHRfYWxsOwoJdTMyIG1jYXN0X2Ryb3BfYWxsOwoJdTMyIG1jYXN0X2FjY2VwdF9hbGw7Cgl1MzIgYmNhc3RfZHJvcF9hbGw7Cgl1MzIgYmNhc3RfYWNjZXB0X2FsbDsKCXUzMiBzdHJpY3RfdmxhbjsKCXUzMiB2bGFuX2ZpbHRlclsyXTsKCXUzMiByZXNlcnZlZDsKfTsKCgovKgogKiBjb21tb24gZmxhZyB0byBpbmRpY2F0ZSBleGlzdGFuY2Ugb2YgVFBBLgogKi8Kc3RydWN0IHRzdG9ybV9ldGhfdHBhX2V4aXN0IHsKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IHJlc2VydmVkMTsKCXU4IHJlc2VydmVkMDsKCXU4IHRwYV9leGlzdDsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1OCB0cGFfZXhpc3Q7Cgl1OCByZXNlcnZlZDA7Cgl1MTYgcmVzZXJ2ZWQxOwojZW5kaWYKCXUzMiByZXNlcnZlZDI7Cn07CgoKLyoKICogcnggcmluZ3MgcGF1c2UgZGF0YSBmb3IgRTFoIG9ubHkKICovCnN0cnVjdCB1c3Rvcm1fZXRoX3J4X3BhdXNlX2RhdGFfZTFoIHsKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IGJkX3Rocl9sb3c7Cgl1MTYgY3FlX3Rocl9sb3c7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IGNxZV90aHJfbG93OwoJdTE2IGJkX3Rocl9sb3c7CiNlbmRpZgojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1MTYgY29zOwoJdTE2IHNnZV90aHJfbG93OwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXUxNiBzZ2VfdGhyX2xvdzsKCXUxNiBjb3M7CiNlbmRpZgojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1MTYgYmRfdGhyX2hpZ2g7Cgl1MTYgY3FlX3Rocl9oaWdoOwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXUxNiBjcWVfdGhyX2hpZ2g7Cgl1MTYgYmRfdGhyX2hpZ2g7CiNlbmRpZgojaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCgl1MTYgcmVzZXJ2ZWQwOwoJdTE2IHNnZV90aHJfaGlnaDsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1MTYgc2dlX3Rocl9oaWdoOwoJdTE2IHJlc2VydmVkMDsKI2VuZGlmCn07CgoKLyoKICogVGhyZWUgUlggcHJvZHVjZXJzIGZvciBFVEgKICovCnN0cnVjdCB1c3Rvcm1fZXRoX3J4X3Byb2R1Y2VycyB7CiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXUxNiBiZF9wcm9kOwoJdTE2IGNxZV9wcm9kOwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXUxNiBjcWVfcHJvZDsKCXUxNiBiZF9wcm9kOwojZW5kaWYKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IHJlc2VydmVkOwoJdTE2IHNnZV9wcm9kOwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXUxNiBzZ2VfcHJvZDsKCXUxNiByZXNlcnZlZDsKI2VuZGlmCn07CgoKLyoKICogcGVyLXBvcnQgU0FGQyBkZW1vIHZhcmlhYmxlcwogKi8Kc3RydWN0IGNtbmdfZmxhZ3NfcGVyX3BvcnQgewoJdTggY29uX251bWJlcltOVU1fT0ZfUFJPVE9DT0xTXTsKCXUzMiBjbW5nX2VuYWJsZXM7CiNkZWZpbmUgQ01OR19GTEFHU19QRVJfUE9SVF9GQUlSTkVTU19WTiAoMHgxPDwwKQojZGVmaW5lIENNTkdfRkxBR1NfUEVSX1BPUlRfRkFJUk5FU1NfVk5fU0hJRlQgMAojZGVmaW5lIENNTkdfRkxBR1NfUEVSX1BPUlRfUkFURV9TSEFQSU5HX1ZOICgweDE8PDEpCiNkZWZpbmUgQ01OR19GTEFHU19QRVJfUE9SVF9SQVRFX1NIQVBJTkdfVk5fU0hJRlQgMQojZGVmaW5lIENNTkdfRkxBR1NfUEVSX1BPUlRfRkFJUk5FU1NfUFJPVE9DT0wgKDB4MTw8MikKI2RlZmluZSBDTU5HX0ZMQUdTX1BFUl9QT1JUX0ZBSVJORVNTX1BST1RPQ09MX1NISUZUIDIKI2RlZmluZSBDTU5HX0ZMQUdTX1BFUl9QT1JUX1JBVEVfU0hBUElOR19QUk9UT0NPTCAoMHgxPDwzKQojZGVmaW5lIENNTkdfRkxBR1NfUEVSX1BPUlRfUkFURV9TSEFQSU5HX1BST1RPQ09MX1NISUZUIDMKI2RlZmluZSBDTU5HX0ZMQUdTX1BFUl9QT1JUX0ZBSVJORVNTX0NPUyAoMHgxPDw0KQojZGVmaW5lIENNTkdfRkxBR1NfUEVSX1BPUlRfRkFJUk5FU1NfQ09TX1NISUZUIDQKI2RlZmluZSBfX0NNTkdfRkxBR1NfUEVSX1BPUlRfUkVTRVJWRUQwICgweDdGRkZGRkY8PDUpCiNkZWZpbmUgX19DTU5HX0ZMQUdTX1BFUl9QT1JUX1JFU0VSVkVEMF9TSElGVCA1Cn07CgoKLyoKICogcGVyLXBvcnQgcmF0ZSBzaGFwaW5nIHZhcmlhYmxlcwogKi8Kc3RydWN0IHJhdGVfc2hhcGluZ192YXJzX3Blcl9wb3J0IHsKCXUzMiByc19wZXJpb2RpY190aW1lb3V0OwoJdTMyIHJzX3RocmVzaG9sZDsKfTsKCi8qCiAqIHBlci1wb3J0IGZhaXJuZXNzIHZhcmlhYmxlcwogKi8Kc3RydWN0IGZhaXJuZXNzX3ZhcnNfcGVyX3BvcnQgewoJdTMyIHVwcGVyX2JvdW5kOwoJdTMyIGZhaXJfdGhyZXNob2xkOwoJdTMyIGZhaXJuZXNzX3RpbWVvdXQ7Cn07CgovKgogKiBwZXItcG9ydCBTQUZDIHZhcmlhYmxlcwogKi8Kc3RydWN0IHNhZmNfc3RydWN0X3Blcl9wb3J0IHsKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IF9fcmVzZXJ2ZWQxOwoJdTggX19yZXNlcnZlZDA7Cgl1OCBzYWZjX3RpbWVvdXRfdXNlYzsKI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pCgl1OCBzYWZjX3RpbWVvdXRfdXNlYzsKCXU4IF9fcmVzZXJ2ZWQwOwoJdTE2IF9fcmVzZXJ2ZWQxOwojZW5kaWYKCXUxNiBjb3NfdG9fcGF1c2VfbWFza1tOVU1fT0ZfU0FGQ19CSVRTXTsKfTsKCi8qCiAqIFBlci1wb3J0IGNvbmdlc3Rpb24gbWFuYWdlbWVudCB2YXJpYWJsZXMKICovCnN0cnVjdCBjbW5nX3N0cnVjdF9wZXJfcG9ydCB7CglzdHJ1Y3QgcmF0ZV9zaGFwaW5nX3ZhcnNfcGVyX3BvcnQgcnNfdmFyczsKCXN0cnVjdCBmYWlybmVzc192YXJzX3Blcl9wb3J0IGZhaXJfdmFyczsKCXN0cnVjdCBzYWZjX3N0cnVjdF9wZXJfcG9ydCBzYWZjX3ZhcnM7CglzdHJ1Y3QgY21uZ19mbGFnc19wZXJfcG9ydCBmbGFnczsKfTsKCgovKgogKiBEeW5hbWljIGhvc3QgY29hbGVzY2luZyBpbml0IHBhcmFtZXRlcnMKICovCnN0cnVjdCBkeW5hbWljX2hjX2NvbmZpZyB7Cgl1MzIgdGhyZXNob2xkWzNdOwoJdTggc2hpZnRfcGVyX3Byb3RvY29sW0hDX1VTVE9STV9TQl9OVU1fSU5ESUNFU107Cgl1OCBoY190aW1lb3V0MFtIQ19VU1RPUk1fU0JfTlVNX0lORElDRVNdOwoJdTggaGNfdGltZW91dDFbSENfVVNUT1JNX1NCX05VTV9JTkRJQ0VTXTsKCXU4IGhjX3RpbWVvdXQyW0hDX1VTVE9STV9TQl9OVU1fSU5ESUNFU107Cgl1OCBoY190aW1lb3V0M1tIQ19VU1RPUk1fU0JfTlVNX0lORElDRVNdOwp9OwoKCi8qCiAqIFByb3RvY29sLWNvbW1vbiBzdGF0aXN0aWNzIGNvbGxlY3RlZCBieSB0aGUgWHN0b3JtIChwZXIgY2xpZW50KQogKi8Kc3RydWN0IHhzdG9ybV9wZXJfY2xpZW50X3N0YXRzIHsKCV9fbGUzMiByZXNlcnZlZDA7CglfX2xlMzIgdW5pY2FzdF9wa3RzX3NlbnQ7CglzdHJ1Y3QgcmVncGFpciB1bmljYXN0X2J5dGVzX3NlbnQ7CglzdHJ1Y3QgcmVncGFpciBtdWx0aWNhc3RfYnl0ZXNfc2VudDsKCV9fbGUzMiBtdWx0aWNhc3RfcGt0c19zZW50OwoJX19sZTMyIGJyb2FkY2FzdF9wa3RzX3NlbnQ7CglzdHJ1Y3QgcmVncGFpciBicm9hZGNhc3RfYnl0ZXNfc2VudDsKCV9fbGUxNiBzdGF0c19jb3VudGVyOwoJX19sZTE2IHJlc2VydmVkMTsKCV9fbGUzMiByZXNlcnZlZDI7Cn07CgovKgogKiBDb21tb24gc3RhdGlzdGljcyBjb2xsZWN0ZWQgYnkgdGhlIFhzdG9ybSAocGVyIHBvcnQpCiAqLwpzdHJ1Y3QgeHN0b3JtX2NvbW1vbl9zdGF0cyB7CiBzdHJ1Y3QgeHN0b3JtX3Blcl9jbGllbnRfc3RhdHMgY2xpZW50X3N0YXRpc3RpY3NbTUFYX1hfU1RBVF9DT1VOVEVSX0lEXTsKfTsKCi8qCiAqIFByb3RvY29sLWNvbW1vbiBzdGF0aXN0aWNzIGNvbGxlY3RlZCBieSB0aGUgVHN0b3JtIChwZXIgcG9ydCkKICovCnN0cnVjdCB0c3Rvcm1fcGVyX3BvcnRfc3RhdHMgewoJX19sZTMyIG1hY19maWx0ZXJfZGlzY2FyZDsKCV9fbGUzMiB4eG92ZXJmbG93X2Rpc2NhcmQ7CglfX2xlMzIgYnJiX3RydW5jYXRlX2Rpc2NhcmQ7CglfX2xlMzIgbWFjX2Rpc2NhcmQ7Cn07CgovKgogKiBQcm90b2NvbC1jb21tb24gc3RhdGlzdGljcyBjb2xsZWN0ZWQgYnkgdGhlIFRzdG9ybSAocGVyIGNsaWVudCkKICovCnN0cnVjdCB0c3Rvcm1fcGVyX2NsaWVudF9zdGF0cyB7CglzdHJ1Y3QgcmVncGFpciByY3ZfdW5pY2FzdF9ieXRlczsKCXN0cnVjdCByZWdwYWlyIHJjdl9icm9hZGNhc3RfYnl0ZXM7CglzdHJ1Y3QgcmVncGFpciByY3ZfbXVsdGljYXN0X2J5dGVzOwoJc3RydWN0IHJlZ3BhaXIgcmN2X2Vycm9yX2J5dGVzOwoJX19sZTMyIGNoZWNrc3VtX2Rpc2NhcmQ7CglfX2xlMzIgcGFja2V0c190b29fYmlnX2Rpc2NhcmQ7CglfX2xlMzIgcmN2X3VuaWNhc3RfcGt0czsKCV9fbGUzMiByY3ZfYnJvYWRjYXN0X3BrdHM7CglfX2xlMzIgcmN2X211bHRpY2FzdF9wa3RzOwoJX19sZTMyIG5vX2J1ZmZfZGlzY2FyZDsKCV9fbGUzMiB0dGwwX2Rpc2NhcmQ7CglfX2xlMTYgc3RhdHNfY291bnRlcjsKCV9fbGUxNiByZXNlcnZlZDA7Cn07CgovKgogKiBQcm90b2NvbC1jb21tb24gc3RhdGlzdGljcyBjb2xsZWN0ZWQgYnkgdGhlIFRzdG9ybQogKi8Kc3RydWN0IHRzdG9ybV9jb21tb25fc3RhdHMgewoJc3RydWN0IHRzdG9ybV9wZXJfcG9ydF9zdGF0cyBwb3J0X3N0YXRpc3RpY3M7CiBzdHJ1Y3QgdHN0b3JtX3Blcl9jbGllbnRfc3RhdHMgY2xpZW50X3N0YXRpc3RpY3NbTUFYX1RfU1RBVF9DT1VOVEVSX0lEXTsKfTsKCi8qCiAqIFByb3RvY29sLWNvbW1vbiBzdGF0aXN0aWNzIGNvbGxlY3RlZCBieSB0aGUgVXN0b3JtIChwZXIgY2xpZW50KQogKi8Kc3RydWN0IHVzdG9ybV9wZXJfY2xpZW50X3N0YXRzIHsKCXN0cnVjdCByZWdwYWlyIHVjYXN0X25vX2J1ZmZfYnl0ZXM7CglzdHJ1Y3QgcmVncGFpciBtY2FzdF9ub19idWZmX2J5dGVzOwoJc3RydWN0IHJlZ3BhaXIgYmNhc3Rfbm9fYnVmZl9ieXRlczsKCV9fbGUzMiB1Y2FzdF9ub19idWZmX3BrdHM7CglfX2xlMzIgbWNhc3Rfbm9fYnVmZl9wa3RzOwoJX19sZTMyIGJjYXN0X25vX2J1ZmZfcGt0czsKCV9fbGUxNiBzdGF0c19jb3VudGVyOwoJX19sZTE2IHJlc2VydmVkMDsKfTsKCi8qCiAqIFByb3RvY29sLWNvbW1vbiBzdGF0aXN0aWNzIGNvbGxlY3RlZCBieSB0aGUgVXN0b3JtCiAqLwpzdHJ1Y3QgdXN0b3JtX2NvbW1vbl9zdGF0cyB7CiBzdHJ1Y3QgdXN0b3JtX3Blcl9jbGllbnRfc3RhdHMgY2xpZW50X3N0YXRpc3RpY3NbTUFYX1VfU1RBVF9DT1VOVEVSX0lEXTsKfTsKCi8qCiAqIEV0aCBzdGF0aXN0aWNzIHF1ZXJ5IHN0cnVjdHVyZSBmb3IgdGhlIGV0aF9zdGF0c19xdWVyeSByYW1yb2QKICovCnN0cnVjdCBldGhfc3RhdHNfcXVlcnkgewoJc3RydWN0IHhzdG9ybV9jb21tb25fc3RhdHMgeHN0b3JtX2NvbW1vbjsKCXN0cnVjdCB0c3Rvcm1fY29tbW9uX3N0YXRzIHRzdG9ybV9jb21tb247CglzdHJ1Y3QgdXN0b3JtX2NvbW1vbl9zdGF0cyB1c3Rvcm1fY29tbW9uOwp9OwoKCi8qCiAqIHBlci12bmljIGZhaXJuZXNzIHZhcmlhYmxlcwogKi8Kc3RydWN0IGZhaXJuZXNzX3ZhcnNfcGVyX3ZuIHsKCXUzMiBjb3NfY3JlZGl0X2RlbHRhW01BWF9DT1NfTlVNQkVSXTsKCXUzMiBwcm90b2NvbF9jcmVkaXRfZGVsdGFbTlVNX09GX1BST1RPQ09MU107Cgl1MzIgdm5fY3JlZGl0X2RlbHRhOwoJdTMyIF9fcmVzZXJ2ZWQwOwp9OwoKCi8qCiAqIEZXIHZlcnNpb24gc3RvcmVkIGluIHRoZSBYc3Rvcm0gUkFNCiAqLwpzdHJ1Y3QgZndfdmVyc2lvbiB7CiNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKCXU4IGVuZ2luZWVyaW5nOwoJdTggcmV2aXNpb247Cgl1OCBtaW5vcjsKCXU4IG1ham9yOwojZWxpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKCXU4IG1ham9yOwoJdTggbWlub3I7Cgl1OCByZXZpc2lvbjsKCXU4IGVuZ2luZWVyaW5nOwojZW5kaWYKCXUzMiBmbGFnczsKI2RlZmluZSBGV19WRVJTSU9OX09QVElNSVpFRCAoMHgxPDwwKQojZGVmaW5lIEZXX1ZFUlNJT05fT1BUSU1JWkVEX1NISUZUIDAKI2RlZmluZSBGV19WRVJTSU9OX0JJR19FTkRJRU4gKDB4MTw8MSkKI2RlZmluZSBGV19WRVJTSU9OX0JJR19FTkRJRU5fU0hJRlQgMQojZGVmaW5lIEZXX1ZFUlNJT05fQ0hJUF9WRVJTSU9OICgweDM8PDIpCiNkZWZpbmUgRldfVkVSU0lPTl9DSElQX1ZFUlNJT05fU0hJRlQgMgojZGVmaW5lIF9fRldfVkVSU0lPTl9SRVNFUlZFRCAoMHhGRkZGRkZGPDw0KQojZGVmaW5lIF9fRldfVkVSU0lPTl9SRVNFUlZFRF9TSElGVCA0Cn07CgoKLyoKICogRlcgdmVyc2lvbiBzdG9yZWQgaW4gZmlyc3QgbGluZSBvZiBwcmFtCiAqLwpzdHJ1Y3QgcHJhbV9md192ZXJzaW9uIHsKCXU4IG1ham9yOwoJdTggbWlub3I7Cgl1OCByZXZpc2lvbjsKCXU4IGVuZ2luZWVyaW5nOwoJdTggZmxhZ3M7CiNkZWZpbmUgUFJBTV9GV19WRVJTSU9OX09QVElNSVpFRCAoMHgxPDwwKQojZGVmaW5lIFBSQU1fRldfVkVSU0lPTl9PUFRJTUlaRURfU0hJRlQgMAojZGVmaW5lIFBSQU1fRldfVkVSU0lPTl9TVE9STV9JRCAoMHgzPDwxKQojZGVmaW5lIFBSQU1fRldfVkVSU0lPTl9TVE9STV9JRF9TSElGVCAxCiNkZWZpbmUgUFJBTV9GV19WRVJTSU9OX0JJR19FTkRJRU4gKDB4MTw8MykKI2RlZmluZSBQUkFNX0ZXX1ZFUlNJT05fQklHX0VORElFTl9TSElGVCAzCiNkZWZpbmUgUFJBTV9GV19WRVJTSU9OX0NISVBfVkVSU0lPTiAoMHgzPDw0KQojZGVmaW5lIFBSQU1fRldfVkVSU0lPTl9DSElQX1ZFUlNJT05fU0hJRlQgNAojZGVmaW5lIF9fUFJBTV9GV19WRVJTSU9OX1JFU0VSVkVEMCAoMHgzPDw2KQojZGVmaW5lIF9fUFJBTV9GV19WRVJTSU9OX1JFU0VSVkVEMF9TSElGVCA2Cn07CgoKLyoKICogVGhlIHNlbmQgcXVldWUgZWxlbWVudAogKi8Kc3RydWN0IHByb3RvY29sX2NvbW1vbl9zcGUgewoJc3RydWN0IHNwZV9oZHIgaGRyOwoJc3RydWN0IHJlZ3BhaXIgcGh5X2FkZHJlc3M7Cn07CgoKLyoKICogYSBzaW5nbGUgcmF0ZSBzaGFwaW5nIGNvdW50ZXIuIGNhbiBiZSB1c2VkIGFzIHByb3RvY29sIG9yIHZuaWMgY291bnRlcgogKi8Kc3RydWN0IHJhdGVfc2hhcGluZ19jb3VudGVyIHsKCXUzMiBxdW90YTsKI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQoJdTE2IF9fcmVzZXJ2ZWQwOwoJdTE2IHJhdGU7CiNlbGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOKQoJdTE2IHJhdGU7Cgl1MTYgX19yZXNlcnZlZDA7CiNlbmRpZgp9OwoKCi8qCiAqIHBlci12bmljIHJhdGUgc2hhcGluZyB2YXJpYWJsZXMKICovCnN0cnVjdCByYXRlX3NoYXBpbmdfdmFyc19wZXJfdm4gewoJc3RydWN0IHJhdGVfc2hhcGluZ19jb3VudGVyIHByb3RvY29sX2NvdW50ZXJzW05VTV9PRl9QUk9UT0NPTFNdOwoJc3RydWN0IHJhdGVfc2hhcGluZ19jb3VudGVyIHZuX2NvdW50ZXI7Cn07CgoKLyoKICogVGhlIHNlbmQgcXVldWUgZWxlbWVudAogKi8Kc3RydWN0IHNsb3dfcGF0aF9lbGVtZW50IHsKCXN0cnVjdCBzcGVfaGRyIGhkcjsKCXU4IHByb3RvY29sX2RhdGFbOF07Cn07CgoKLyoKICogZXRoL3RvZSBmbGFncyB0aGF0IGluZGljYXRlIGlmIHRvIHF1ZXJ5CiAqLwpzdHJ1Y3Qgc3RhdHNfaW5kaWNhdGlvbl9mbGFncyB7Cgl1MzIgY29sbGVjdF9ldGg7Cgl1MzIgY29sbGVjdF90b2U7Cn07CgoK