ZGlmZiAtLWdpdCBhL2Jvb3QvY29tbW9uL3NyYy91Ym9vdC9kb3dubG9hZGVyL2NtZF9jb21wYXRfd3JpdGUuYyBiL2Jvb3QvY29tbW9uL3NyYy91Ym9vdC9kb3dubG9hZGVyL2NtZF9jb21wYXRfd3JpdGUuYwppbmRleCA0ZDVlMzM5Li40ZDZhZTlkIDEwMDc1NQotLS0gYS9ib290L2NvbW1vbi9zcmMvdWJvb3QvZG93bmxvYWRlci9jbWRfY29tcGF0X3dyaXRlLmMKKysrIGIvYm9vdC9jb21tb24vc3JjL3Vib290L2Rvd25sb2FkZXIvY21kX2NvbXBhdF93cml0ZS5jCkBAIC0zNCw5ICszNCwxMCBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoJCQkJCQkJR2xvYmFsIEZ1bmN0aW9uIFByb3RvdHlwZXMKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1UX0lNR19TSVpFIGltZ19zaXplW0lNR19OVU1dID0ge3sidWJvb3QiLDAsMH0seyJpbWFnZWZzIiwwLDB9LHsicm9vdGZzIiwwLDB9LHsiY2Fwcm9vdGZzIiwwLDB9LHsib2VtIiwwLDB9fTsKKy8vVF9JTUdfU0laRSBpbWdfc2l6ZVtJTUdfTlVNXSA9IHt7InVib290IiwwLDB9LHsiaW1hZ2VmcyIsMCwwfSx7InJvb3RmcyIsMCwwfSx7ImNhcHJvb3RmcyIsMCwwfSx7Im9lbSIsMCwwfX07CitUX0lNR19TSVpFIGltZ19zaXplW0lNR19OVU1fTUFYXTsKK2ludCBpbWdfbnVtID0gMDsKIGludCBmbGFnc19wYXJ0aXRvbl93cml0ZSA9IDA7Ci0KIGV4dGVybiBpbnQgZ19pZnR5cGU7CiBleHRlcm4gcGFydGl0aW9uX3RhYmxlX3QgKiBnX3BhcnRpdGlvbl90YWJsZV9kbDsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC01NiwxMSArNTcsMTQgQEAKIHsKICAgICBwYXJ0aXRpb25fZW50cnlfdCAqcGFydCA9IE5VTEw7CiAgICAgY2hhciAqcGFyID0gTlVMTDsKKwljaGFyICpwYXJfdG1wID0gTlVMTDsKICAgICBjaGFyIGFja1s2NF09ezB9OwogCXVuc2lnbmVkIGludCBvZmZzZXQgPSAwOwogCXVuc2lnbmVkIGludCBzaXplID0gMDsKIAl1bnNpZ25lZCBpbnQgcmV0ID0gMDsKIAl1bnNpZ25lZCBpbnQgaSA9IDA7CisJdW5zaWduZWQgaW50IGxlbiA9IDA7CisJdW5zaWduZWQgaW50IGZvdW5kID0gMDsKIAlmbGFnc19wYXJ0aXRvbl93cml0ZSA9IDE7CiAJCiAJaWYoYXJnYzw0KQpAQCAtODAsMjMgKzg0LDU1IEBACiAJfQogCiAJLypyZWNvcmQgaW1hZ2Ugc2l6ZSovCi0JZm9yKGk9MDsgaTxJTUdfTlVNOyBpKyspCisJbGVuID0gc3RybGVuKHBhcik7CisvKiBTdGFydGVkIGJ5IEFJQ29kZXIsIHBpZDpxNTc0M2czZjYycmQ5MjkxNDE5ZTA4NmRlMDMyNzUwMmM1ZDcxMGNlICovCisJcGFyX3RtcCA9IChjaGFyICopbWFsbG9jKGxlbiArIDEpOworCWlmIChwYXJbbGVuIC0gMV0gPT0gJzInKSB7CisJCXN0cm5jcHkocGFyX3RtcCwgcGFyLCBsZW4gLSAxKTsKKwkJcGFyX3RtcFtsZW4gLSAxXSA9ICdcMCc7CisJfSBlbHNlIHsKKwkJc3RyY3B5KHBhcl90bXAsIHBhcik7CisJfQorLyogRW5kZWQgYnkgQUlDb2RlciwgcGlkOnE1NzQzZzNmNjJyZDkyOTE0MTllMDg2ZGUwMzI3NTAyYzVkNzEwY2UgKi8KKwkKKy8qIFN0YXJ0ZWQgYnkgQUlDb2RlciwgcGlkOnllNGRjbTcwMGVuOGM2ZTE0Y2RmMGFjMzkwODEzZTM2ZGMwNzU3NjUgKi8KKwlmb3IoaT0wOyBpPGltZ19udW07IGkrKykKIAl7Ci0JCWlmKG1lbWNtcCgoY2hhciAqKWltZ19zaXplW2ldLm5hbWUgLCBwYXIsIHN0cmxlbihpbWdfc2l6ZVtpXS5uYW1lKSkgPT0gMCl7Ci0JCQlpZighbWVtY21wKHBhciwib2VtZGF0YSIsNykpCi0JCQkJYnJlYWs7Ci0JCQlpZihzdHJsZW4oaW1nX3NpemVbaV0ubmFtZSkgPT0gc3RybGVuKHBhcikpCi0JCQl7Ci0JCQkJaW1nX3NpemVbaV0uc2l6ZV9hID0gc2l6ZTsKLQkJCQlwcmludGYoInBhcnRpdGlvbiBpcyAlcyxzaXplX2EgaXMgMHgleC5cbiIscGFyLHNpemUpOwotCQkJfQotCQkJZWxzZQotCQkJewotCQkJCWltZ19zaXplW2ldLnNpemVfYiA9IHNpemU7Ci0JCQkJcHJpbnRmKCJwYXJ0aXRpb24gaXMgJXMsc2l6ZV9iIGlzIDB4JXguXG4iLHBhcixzaXplKTsKLQkJCX0KLQkJfQorCSAgICBpZihzdHJjbXAoKGNoYXIgKilpbWdfc2l6ZVtpXS5uYW1lLCBwYXJfdG1wKSA9PSAwICYmIHN0cmxlbigoY2hhciAqKWltZ19zaXplW2ldLm5hbWUpID09IHN0cmxlbihwYXJfdG1wKSkKKwkgICAgeworCSAgICAgICAgZm91bmQgPSAxOworCSAgICAgICAgaWYoc3RyY21wKHBhcl90bXAscGFyKSA9PSAwKQorCSAgICAgICAgeworCSAgICAgICAgICAgIGltZ19zaXplW2ldLnNpemVfYSA9IHNpemU7CisJICAgICAgICAgICAgcHJpbnRmKCJwYXJ0aXRpb24gaXMgJXMsc2l6ZV9hIGlzIDB4JXguXG4iLHBhcixzaXplKTsKKwkgICAgICAgIH0KKwkgICAgICAgIGVsc2UKKwkgICAgICAgIHsKKwkgICAgICAgICAgICBpbWdfc2l6ZVtpXS5zaXplX2IgPSBzaXplOworCSAgICAgICAgICAgIHByaW50ZigicGFydGl0aW9uIGlzICVzLHNpemVfYiBpcyAweCV4LlxuIixwYXIsc2l6ZSk7CisJICAgICAgICB9CisJICAgICAgICAKKwkgICAgICAgIGJyZWFrOworCSAgICB9CiAJfSAgCisJaWYgKCFmb3VuZCkKKwl7ICAgCisJICAgIHN0cmNweShpbWdfc2l6ZVtpbWdfbnVtXS5uYW1lLHBhcl90bXApOworCSAgICBpZihzdHJjbXAocGFyX3RtcCxwYXIpID09IDApCisJICAgIHsKKwkgICAgICAgIGltZ19zaXplW2ltZ19udW1dLnNpemVfYSA9IHNpemU7CisJICAgICAgICBwcmludGYoInBhcnRpdGlvbiBpcyAlcyxzaXplX2EgaXMgMHgleC5cbiIscGFyLHNpemUpOworCSAgICB9CisJICAgIGVsc2UKKwkgICAgeworCSAgICAgICAgaW1nX3NpemVbaW1nX251bV0uc2l6ZV9iID0gc2l6ZTsKKwkgICAgICAgIHByaW50ZigicGFydGl0aW9uIGlzICVzLHNpemVfYiBpcyAweCV4LlxuIixwYXIsc2l6ZSk7CisJICAgIH0KKwkgICAgCisJICAgIGltZ19udW0gKz0gMTsKKwl9CisJZnJlZShwYXJfdG1wKTsKKy8qIEVuZGVkIGJ5IEFJQ29kZXIsIHBpZDp5ZTRkY203MDBlbjhjNmUxNGNkZjBhYzM5MDgxM2UzNmRjMDc1NzY1ICovCiAJCiAjaWYgZGVmaW5lZCAoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfREMpIHx8IGRlZmluZWQgKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDX1JFRikKIAlpZihnX25vcl9mbGFnID09IDEpCmRpZmYgLS1naXQgYS9ib290L2NvbW1vbi9zcmMvdWJvb3QvaW5jbHVkZS9wYXJ0aXRpb25fdGFibGUuaCBiL2Jvb3QvY29tbW9uL3NyYy91Ym9vdC9pbmNsdWRlL3BhcnRpdGlvbl90YWJsZS5oCmluZGV4IDMwNmE2NGMuLmZlYmQzNjUgMTAwNzU1Ci0tLSBhL2Jvb3QvY29tbW9uL3NyYy91Ym9vdC9pbmNsdWRlL3BhcnRpdGlvbl90YWJsZS5oCisrKyBiL2Jvb3QvY29tbW9uL3NyYy91Ym9vdC9pbmNsdWRlL3BhcnRpdGlvbl90YWJsZS5oCkBAIC0yMTEsNyArMjExLDcgQEAKICNkZWZpbmUgUEFSVElUSU9OX0NSQyAgICAgICAgICAgICAgIDB4MTIzNDU2NzgKICNkZWZpbmUgUEFSVElUSU9OX1NJWkUgICAgICAgICAgICAgIDBYMTAwMCAgICAgICAgICAgICAgICAgIC8qILfWx/ix7bXEtPPQoSAqLwogCi0jZGVmaW5lIElNR19OVU0gIDUKKyNkZWZpbmUgSU1HX05VTSAgMTUKIAogdHlwZWRlZiBzdHJ1Y3QgcGFydGl0aW9uX2VudHJ5IHsKICAgICB1bnNpZ25lZCBjaGFyCXBhcnRfbmFtZVsxNl07IAo=