ZGlmZiAtLWdpdCBhL2ZzL250ZnMvc3lzY3RsLmMgYi9mcy9udGZzL3N5c2N0bC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MDY3ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9mcy9udGZzL3N5c2N0bC5jCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBzeXNjdGwuYyAtIENvZGUgZm9yIHN5c2N0bCBoYW5kbGluZyBpbiBOVEZTIExpbnV4IGtlcm5lbCBkcml2ZXIuIFBhcnQgb2YKKyAqCSAgICAgIHRoZSBMaW51eC1OVEZTIHByb2plY3QuIEFkYXB0ZWQgZnJvbSB0aGUgb2xkIE5URlMgZHJpdmVyLAorICoJICAgICAgQ29weXJpZ2h0IChDKSAxOTk3IE1hcnRpbiB2b24gTPZ3aXMsIFLpZ2lzIER1Y2hlc25lCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDQgQW50b24gQWx0YXBhcm1ha292CisgKgorICogVGhpcyBwcm9ncmFtL2luY2x1ZGUgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICogYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtL2luY2x1ZGUgZmlsZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKyAqIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKyAqIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtIChpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhlIExpbnV4LU5URlMKKyAqIGRpc3RyaWJ1dGlvbiBpbiB0aGUgZmlsZSBDT1BZSU5HKTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbixJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2lmZGVmIERFQlVHCisKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKworI2lmZGVmIENPTkZJR19TWVNDVEwKKworI2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4KKyNpbmNsdWRlIDxsaW51eC9zeXNjdGwuaD4KKworI2luY2x1ZGUgInN5c2N0bC5oIgorI2luY2x1ZGUgImRlYnVnLmgiCisKKyNkZWZpbmUgRlNfTlRGUwkxCisKKy8qIERlZmluaXRpb24gb2YgdGhlIG50ZnMgc3lzY3RsLiAqLworc3RhdGljIGN0bF90YWJsZSBudGZzX3N5c2N0bHNbXSA9IHsKKwl7IEZTX05URlMsICJudGZzLWRlYnVnIiwJCS8qIEJpbmFyeSBhbmQgdGV4dCBJRHMuICovCisJICAmZGVidWdfbXNncyxzaXplb2YoZGVidWdfbXNncyksCS8qIERhdGEgcG9pbnRlciBhbmQgc2l6ZS4gKi8KKwkgIDA2NDQsCU5VTEwsICZwcm9jX2RvaW50dmVjIH0sCQkvKiBNb2RlLCBjaGlsZCwgcHJvYyBoYW5kbGVyLiAqLworCXsgMCB9Cit9OworCisvKiBEZWZpbmUgdGhlIHBhcmVudCBkaXJlY3RvcnkgL3Byb2Mvc3lzL2ZzLiAqLworc3RhdGljIGN0bF90YWJsZSBzeXNjdGxzX3Jvb3RbXSA9IHsKKwl7IENUTF9GUywgImZzIiwgTlVMTCwgMCwgMDU1NSwgbnRmc19zeXNjdGxzIH0sCisJeyAwIH0KK307CisKKy8qIFN0b3JhZ2UgZm9yIHRoZSBzeXNjdGxzIGhlYWRlci4gKi8KK3N0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlciAqc3lzY3Rsc19yb290X3RhYmxlID0gTlVMTDsKKworLyoqCisgKiBudGZzX3N5c2N0bCAtIGFkZCBvciByZW1vdmUgdGhlIGRlYnVnIHN5c2N0bAorICogQGFkZDoJYWRkICgxKSBvciByZW1vdmUgKDApIHRoZSBzeXNjdGwKKyAqCisgKiBBZGQgb3IgcmVtb3ZlIHRoZSBkZWJ1ZyBzeXNjdGwuIFJldHVybiAwIG9uIHN1Y2Nlc3Mgb3IgLWVycm5vIG9uIGVycm9yLgorICovCitpbnQgbnRmc19zeXNjdGwoaW50IGFkZCkKK3sKKwlpZiAoYWRkKSB7CisJCUJVR19PTihzeXNjdGxzX3Jvb3RfdGFibGUpOworCQlzeXNjdGxzX3Jvb3RfdGFibGUgPSByZWdpc3Rlcl9zeXNjdGxfdGFibGUoc3lzY3Rsc19yb290LCAwKTsKKwkJaWYgKCFzeXNjdGxzX3Jvb3RfdGFibGUpCisJCQlyZXR1cm4gLUVOT01FTTsKKyNpZmRlZiBDT05GSUdfUFJPQ19GUworCQkvKgorCQkgKiBJZiB0aGUgcHJvYyBmaWxlIHN5c3RlbSBpcyBpbiB1c2UgYW5kIHdlIGFyZSBhIG1vZHVsZSwgbmVlZAorCQkgKiB0byBzZXQgdGhlIG93bmVyIG9mIG91ciBwcm9jIGVudHJ5IHRvIG91ciBtb2R1bGUuIEluIHRoZQorCQkgKiBub24tbW9kdWxhciBjYXNlLCBUSElTX01PRFVMRSBpcyBOVUxMLCBzbyB0aGlzIGlzIG9rLgorCQkgKi8KKwkJbnRmc19zeXNjdGxzWzBdLmRlLT5vd25lciA9IFRISVNfTU9EVUxFOworI2VuZGlmCisJfSBlbHNlIHsKKwkJQlVHX09OKCFzeXNjdGxzX3Jvb3RfdGFibGUpOworCQl1bnJlZ2lzdGVyX3N5c2N0bF90YWJsZShzeXNjdGxzX3Jvb3RfdGFibGUpOworCQlzeXNjdGxzX3Jvb3RfdGFibGUgPSBOVUxMOworCX0KKwlyZXR1cm4gMDsKK30KKworI2VuZGlmIC8qIENPTkZJR19TWVNDVEwgKi8KKyNlbmRpZiAvKiBERUJVRyAqLwo=