From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Than Ngo To: git-commits@fedoraproject.org Subject: [rpms/librtas] f44: - Update to 2.0.7 Date: Tue, 02 Jun 2026 10:00:10 GMT Message-ID: <178039441026.1.11031690393118145164.rpms-librtas-e5c1a827fcbf@fedoraproject.org> List-ID: X-Git-Repo: rpms/librtas X-Git-Branch: f44 X-Git-Rev: e5c1a827fcbf2fb92589aa86681b59cf1cf8fc4a ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvbGlicnRhcwogICAgICAgICAgICBCcmFuY2ggOiBmNDQKICAgICAgICAgICAg Q29tbWl0IDogZTVjMWE4MjdmY2JmMmZiOTI1ODlhYTg2NjgxYjU5Y2YxY2Y4ZmM0YQogICAgICAg ICAgICBBdXRob3IgOiBUaGFuIE5nbyA8dGhhbkByZWRoYXQuY29tPgogICAgICAgICAgICBEYXRl ICAgOiAyMDI2LTA2LTAyVDExOjUyOjA1KzAyOjAwCiAgICAgICAgICAgIFN0YXRzICA6ICs4Ly0x ODIyIGluIDE0IGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3Jh cHJvamVjdC5vcmcvcnBtcy9saWJydGFzL2MvZTVjMWE4MjdmY2JmMmZiOTI1ODlhYTg2NjgxYjU5 Y2YxY2Y4ZmM0YT9icmFuY2g9ZjQ0CgogICAgICAgICAgICBMb2c6CiAgICAgICAgICAgIC0gVXBk YXRlIHRvIDIuMC43Ci0gUmVtb3ZlIHRoZSBwYXRjaGVzLCB3aGljaCBhcmUgaW5jbHVkZWQgaW4g dXBzdHJlYW0KCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXgg NmI4MGNlNy4uY2Y0YTAwMyAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3Jl CkBAIC0xNSwzICsxNSw0IEBAIGxpYnJ0YXMtMS4zLjQudGFyLmd6CiAvbGlicnRhcy0yLjAuNC50 YXIuZ3oKIC9saWJydGFzLTIuMC41LnRhci5negogL2xpYnJ0YXMtMi4wLjYudGFyLmd6CisvbGli cnRhcy0yLjAuNy50YXIuZ3oKCmRpZmYgLS1naXQgYS9saWJydGFzLTAxLWxvY2tkb3duLWNvbXBh dGlibGUtYWJpLXBoYXNlLnBhdGNoIGIvbGlicnRhcy0wMS1sb2NrZG93bi1jb21wYXRpYmxlLWFi aS1waGFzZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI2NGYzNC4uMDAw MDAwMAotLS0gYS9saWJydGFzLTAxLWxvY2tkb3duLWNvbXBhdGlibGUtYWJpLXBoYXNlLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMjExICswLDAgQEAKLWNvbW1pdCAwN2Y0OTkyNDBkMGEzNzNm YWM4ZTAyNWRhY2U1Zjg0NjczODExZDZkCi1BdXRob3I6IEhhcmVuIE15bmVuaSA8aGFyZW5AbGlu dXguaWJtLmNvbT4KLURhdGU6ICAgVHVlIEFwciAyOSAyMDoxMDoxMSAyMDI1IC0wNzAwCi0KLSAg ICBsaWJydGFzOiBNb3ZlIHBsYXRmb3JtLWR1bXAgcnRhcyBjYWxsIGNvZGUgdG8gc2VwYXJhdGUg ZmlsZQotICAgIAotICAgIE5ldyBrZXJuZWwgaW50ZXJmYWNlcyB0byBzdXBwb3J0IHN5c3RlbSBs b2NrZG93biB3aWxsIGJlIGFkZGVkIGZvcgotICAgIHRoaXMgUlRBUyBjYWxsLiBTbyBtb3ZlIHRo ZSBwbGF0Zm9ybS1kdW1wIHJ0YXMgY2FsbCBjb2RlIHRvCi0gICAgc2VwYXJhdGUgZmlsZSB0byBh ZGQgY29kZSBmb3IgbmV3IGludGVyZmFjZXMuCi0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogSGFy ZW4gTXluZW5pIDxoYXJlbkBsaW51eC5pYm0uY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFR5cmVs IERhdHd5bGVyIDx0eXJlbGRAbGludXguaWJtLmNvbT4KLQotZGlmZiAtLWdpdCBhL01ha2VmaWxl LmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDY3MjU3ZTMuLjc5OTdlNDYgMTAwNjQ0Ci0tLS0gYS9N YWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0yOSw2ICsyOSw3IEBAIGxpYl9MVExJ QlJBUklFUyArPSBsaWJydGFzLmxhCi0gbGlicnRhc19sYV9MREZMQUdTID0gLXZlcnNpb24taW5m byAkKExJQlJUQVNfTElCUkFSWV9WRVJTSU9OKSAtbHB0aHJlYWQKLSBsaWJydGFzX2xhX1NPVVJD RVMgPSBcCi0gCWxpYnJ0YXNfc3JjL3ZwZC5jIFwKLSsJbGlicnRhc19zcmMvcGxhdGZvcm0tZHVt cC5jIFwKLSAJbGlicnRhc19zcmMvb2ZkdC5jIFwKLSAJbGlicnRhc19zcmMvc3lzY2FsbF9jYWxs cy5jIFwKLSAJbGlicnRhc19zcmMvc3lzY2FsbF9ybW8uYyBcCi1kaWZmIC0tZ2l0IGEvbGlicnRh c19zcmMvcGxhdGZvcm0tZHVtcC5jIGIvbGlicnRhc19zcmMvcGxhdGZvcm0tZHVtcC5jCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYTU0YzRlZQotLS0tIC9kZXYvbnVsbAot KysrIGIvbGlicnRhc19zcmMvcGxhdGZvcm0tZHVtcC5jCi1AQCAtMCwwICsxLDk1IEBACi0rLy8g U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwtMi4xLW9yLWxhdGVyCi0rCi0rLy8gU3VwcG9y dCBmb3IgYWNjZXNzaW5nIElCTSBQb3dlciBzeXN0ZW1zIFZpdGFsIFByb2R1Y3QgRGF0YSAoVlBE KQotKy8vIHZpYSAvZGV2L3BhcHItcGxhdGZvcm0tZHVtcCBvciB0aGUgbGVnYWN5IHJ0YXMoKSBz eXNjYWxsLgotKwotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgot KyNpbmNsdWRlIDxzdGRhcmcuaD4KLSsjaW5jbHVkZSA8c3RkYm9vbC5oPgotKyNpbmNsdWRlIDxz dGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNp bmNsdWRlIDxsaW51eC90eXBlcy5oPgotKyNpbmNsdWRlIDxsaW51eC91bmlzdGQuaD4KLSsjaW5j bHVkZSA8c3lzL3N5c2NhbGwuaD4KLSsKLSsjaW5jbHVkZSAiaW50ZXJuYWwuaCIKLSsjaW5jbHVk ZSAibGlicnRhcy5oIgotKwotKwotKy8qKgotKyAqIHJ0YXNfcGxhdGZvcm1fZHVtcAotKyAqIElu dGVyZmFjZSB0byB0aGUgaWJtLHBsYXRmb3JtLWR1bXAgcnRhcyBjYWxsCi0rICoKLSsgKiBAcGFy YW0gZHVtcF90YWcKLSsgKiBAcGFyYW0gc2VxdWVuY2UKLSsgKiBAcGFyYW0gYnVmZmVyIGJ1ZmZl ciB0byB3cml0ZSBkdW1wIHRvCi0rICogQHBhcmFtIGxlbmd0aCBidWZmZXIgbGVuZ3RoCi0rICog QHBhcmFtIG5leHRfc2VxCi0rICogQHBhcmFtIGJ5dGVzX3JldAotKyAqIEByZXR1cm4gMCBvbiBz dWNjZXNzLCAhMCBvdGh3ZXJ3aXNlCi0rICovCi0raW50IHJ0YXNfcGxhdGZvcm1fZHVtcCh1aW50 NjRfdCBkdW1wX3RhZywgdWludDY0X3Qgc2VxdWVuY2UsIHZvaWQgKmJ1ZmZlciwKLSsJCSAgICAg ICBzaXplX3QgbGVuZ3RoLCB1aW50NjRfdCAqc2VxX25leHQsIHVpbnQ2NF90ICpieXRlc19yZXQp Ci0rewotKwl1aW50NjRfdCBlbGFwc2VkID0gMDsKLSsJdWludDMyX3Qga2VybmJ1Zl9wYSA9IDA7 Ci0rCXVpbnQzMl90IG5leHRfaGksIG5leHRfbG87Ci0rCXVpbnQzMl90IGJ5dGVzX2hpLCBieXRl c19sbzsKLSsJdWludDMyX3QgZHVtcF90YWdfaGksIGR1bXBfdGFnX2xvOwotKwl2b2lkICprZXJu YnVmID0gTlVMTDsKLSsJaW50IHJjLCBzdGF0dXM7Ci0rCi0rCXJjID0gc2FuaXR5X2NoZWNrKCk7 Ci0rCWlmIChyYykKLSsJCXJldHVybiByYzsKLSsKLSsJaWYgKGJ1ZmZlcikgewotKwkJcmMgPSBy dGFzX2dldF9ybW9fYnVmZmVyKGxlbmd0aCwgJmtlcm5idWYsICZrZXJuYnVmX3BhKTsKLSsJCWlm IChyYykKLSsJCQlyZXR1cm4gcmM7Ci0rCX0KLSsKLSsJLyogQ29udmVydGluZyBhIDY0Yml0IGhv c3QgdmFsdWUgdG8gMzJiaXQgQkUsIF9oaSBhbmQgX2xvCi0rCSAqIHBhaXIgaXMgdHJpY2t5OiB3 ZSBzaG91bGQgY29udmVydCB0aGUgX2hpIGFuZCBfbG8gMzJiaXRzCi0rCSAqIG9mIHRoZSA2NGJp dCBob3N0IHZhbHVlLgotKwkgKi8KLSsJZHVtcF90YWdfaGkgPSBodG9iZTMyKEJJVFMzMl9ISShk dW1wX3RhZykpOwotKwlkdW1wX3RhZ19sbyA9IGh0b2JlMzIoQklUUzMyX0xPKGR1bXBfdGFnKSk7 Ci0rCi0rCW5leHRfaGkgPSBodG9iZTMyKEJJVFMzMl9ISShzZXF1ZW5jZSkpOwotKwluZXh0X2xv ID0gaHRvYmUzMihCSVRTMzJfTE8oc2VxdWVuY2UpKTsKLSsKLSsJZG8gewotKwkJcmMgPSBydGFz X2NhbGxfbm9fZGVsYXkoImlibSxwbGF0Zm9ybS1kdW1wIiwgNiwgNSwgZHVtcF90YWdfaGksCi0r CQkJCQlkdW1wX3RhZ19sbywgbmV4dF9oaSwgbmV4dF9sbywKLSsJCQkJCWh0b2JlMzIoa2VybmJ1 Zl9wYSksIGh0b2JlMzIobGVuZ3RoKSwKLSsJCQkJCSZzdGF0dXMsICZuZXh0X2hpLCAmbmV4dF9s bywKLSsJCQkJCSZieXRlc19oaSwgJmJ5dGVzX2xvKTsKLSsJCWlmIChyYyA8IDApCi0rCQkJYnJl YWs7Ci0rCi0rCQlzZXF1ZW5jZSA9IEJJVFM2NChiZTMydG9oKG5leHRfaGkpLCBiZTMydG9oKG5l eHRfbG8pKTsKLSsJCWRiZygiJXM6IHNlcV9uZXh0ID0gMHglIiBQUkl4NjQgIlxuIiwgX19GVU5D VElPTl9fLCBzZXF1ZW5jZSk7Ci0rCi0rCQlyYyA9IGhhbmRsZV9kZWxheShzdGF0dXMsICZlbGFw c2VkKTsKLSsJfSB3aGlsZSAocmMgPT0gQ0FMTF9BR0FJTik7Ci0rCi0rCWlmIChidWZmZXIgJiYg KHJjID09IDApKQotKwkJbWVtY3B5KGJ1ZmZlciwga2VybmJ1ZiwgbGVuZ3RoKTsKLSsKLSsJaWYg KGtlcm5idWYpCi0rCQkodm9pZClydGFzX2ZyZWVfcm1vX2J1ZmZlcihrZXJuYnVmLCBrZXJuYnVm X3BhLCBsZW5ndGgpOwotKwotKwkqc2VxX25leHQgPSBzZXF1ZW5jZTsKLSsJYnl0ZXNfaGkgPSBi ZTMydG9oKGJ5dGVzX2hpKTsKLSsJYnl0ZXNfbG8gPSBiZTMydG9oKGJ5dGVzX2xvKTsKLSsJKmJ5 dGVzX3JldCA9IEJJVFM2NChieXRlc19oaSwgYnl0ZXNfbG8pOwotKwotKwlkYmcoIigweCUiUFJJ eDY0IiwgMHglIlBSSXg2NCIsICVwLCAlenUsICVwLCAlcCkgPSAlZCwgMHglIlBSSXg2NCIsIDB4 JSJQUkl4NjQiXG4iLAotKwkgICAgIGR1bXBfdGFnLCBzZXF1ZW5jZSwgYnVmZmVyLCBsZW5ndGgs IHNlcV9uZXh0LCBieXRlc19yZXQsCi0rCSAgICAgcmMgPyByYyA6IHN0YXR1cywgKnNlcV9uZXh0 LCAqYnl0ZXNfcmV0KTsKLSsJcmV0dXJuIHJjID8gcmMgOiBzdGF0dXM7Ci0rfQotKwotZGlmZiAt LWdpdCBhL2xpYnJ0YXNfc3JjL3N5c2NhbGxfY2FsbHMuYyBiL2xpYnJ0YXNfc3JjL3N5c2NhbGxf Y2FsbHMuYwotaW5kZXggMGYxNTgyNy4uOTk2MzU4OCAxMDA2NDQKLS0tLSBhL2xpYnJ0YXNfc3Jj L3N5c2NhbGxfY2FsbHMuYwotKysrIGIvbGlicnRhc19zcmMvc3lzY2FsbF9jYWxscy5jCi1AQCAt NzY4LDgwICs3NjgsNiBAQCBpbnQgcnRhc19scGFyX3BlcmZ0b29scyhpbnQgc3ViZnVuYywgY2hh ciAqd29ya2FyZWEsIHVuc2lnbmVkIGludCBsZW5ndGgsCi0gCSAgICBsZW5ndGgsIHNlcXVlbmNl LCBzZXFfbmV4dCwgcmMgPyByYyA6IHN0YXR1cywgKnNlcV9uZXh0KTsKLSAJcmV0dXJuIHJjID8g cmMgOiBzdGF0dXM7Ci0gfQotLS8qKgotLSAqIHJ0YXNfcGxhdGZvcm1fZHVtcAotLSAqIEludGVy ZmFjZSB0byB0aGUgaWJtLHBsYXRmb3JtLWR1bXAgcnRhcyBjYWxsCi0tICoKLS0gKiBAcGFyYW0g ZHVtcF90YWcKLS0gKiBAcGFyYW0gc2VxdWVuY2UKLS0gKiBAcGFyYW0gYnVmZmVyIGJ1ZmZlciB0 byB3cml0ZSBkdW1wIHRvCi0tICogQHBhcmFtIGxlbmd0aCBidWZmZXIgbGVuZ3RoCi0tICogQHBh cmFtIG5leHRfc2VxCi0tICogQHBhcmFtIGJ5dGVzX3JldAotLSAqIEByZXR1cm4gMCBvbiBzdWNj ZXNzLCAhMCBvdGh3ZXJ3aXNlCi0tICovCi0taW50IHJ0YXNfcGxhdGZvcm1fZHVtcCh1aW50NjRf dCBkdW1wX3RhZywgdWludDY0X3Qgc2VxdWVuY2UsIHZvaWQgKmJ1ZmZlciwKLS0JCSAgICAgICBz aXplX3QgbGVuZ3RoLCB1aW50NjRfdCAqc2VxX25leHQsIHVpbnQ2NF90ICpieXRlc19yZXQpCi0t ewotLQl1aW50NjRfdCBlbGFwc2VkID0gMDsKLS0JdWludDMyX3Qga2VybmJ1Zl9wYSA9IDA7Ci0t CXVpbnQzMl90IG5leHRfaGksIG5leHRfbG87Ci0tCXVpbnQzMl90IGJ5dGVzX2hpLCBieXRlc19s bzsKLS0JdWludDMyX3QgZHVtcF90YWdfaGksIGR1bXBfdGFnX2xvOwotLQl2b2lkICprZXJuYnVm ID0gTlVMTDsKLS0JaW50IHJjLCBzdGF0dXM7Ci0tCi0tCXJjID0gc2FuaXR5X2NoZWNrKCk7Ci0t CWlmIChyYykKLS0JCXJldHVybiByYzsKLS0KLS0JaWYgKGJ1ZmZlcikgewotLQkJcmMgPSBydGFz X2dldF9ybW9fYnVmZmVyKGxlbmd0aCwgJmtlcm5idWYsICZrZXJuYnVmX3BhKTsKLS0JCWlmIChy YykKLS0JCQlyZXR1cm4gcmM7Ci0tCX0KLS0KLS0JLyogQ29udmVydGluZyBhIDY0Yml0IGhvc3Qg dmFsdWUgdG8gMzJiaXQgQkUsIF9oaSBhbmQgX2xvCi0tCSAqIHBhaXIgaXMgdHJpY2t5OiB3ZSBz aG91bGQgY29udmVydCB0aGUgX2hpIGFuZCBfbG8gMzJiaXRzCi0tCSAqIG9mIHRoZSA2NGJpdCBo b3N0IHZhbHVlLgotLQkgKi8KLS0JZHVtcF90YWdfaGkgPSBodG9iZTMyKEJJVFMzMl9ISShkdW1w X3RhZykpOwotLQlkdW1wX3RhZ19sbyA9IGh0b2JlMzIoQklUUzMyX0xPKGR1bXBfdGFnKSk7Ci0t Ci0tCW5leHRfaGkgPSBodG9iZTMyKEJJVFMzMl9ISShzZXF1ZW5jZSkpOwotLQluZXh0X2xvID0g aHRvYmUzMihCSVRTMzJfTE8oc2VxdWVuY2UpKTsKLS0KLS0JZG8gewotLQkJcmMgPSBydGFzX2Nh bGxfbm9fZGVsYXkoImlibSxwbGF0Zm9ybS1kdW1wIiwgNiwgNSwgZHVtcF90YWdfaGksCi0tCQkJ CQlkdW1wX3RhZ19sbywgbmV4dF9oaSwgbmV4dF9sbywKLS0JCQkJCWh0b2JlMzIoa2VybmJ1Zl9w YSksIGh0b2JlMzIobGVuZ3RoKSwKLS0JCQkJCSZzdGF0dXMsICZuZXh0X2hpLCAmbmV4dF9sbywK LS0JCQkJCSZieXRlc19oaSwgJmJ5dGVzX2xvKTsKLS0JCWlmIChyYyA8IDApCi0tCQkJYnJlYWs7 Ci0tCi0tCQlzZXF1ZW5jZSA9IEJJVFM2NChiZTMydG9oKG5leHRfaGkpLCBiZTMydG9oKG5leHRf bG8pKTsKLS0JCWRiZygiJXM6IHNlcV9uZXh0ID0gMHglIiBQUkl4NjQgIlxuIiwgX19GVU5DVElP Tl9fLCBzZXF1ZW5jZSk7Ci0tCi0tCQlyYyA9IGhhbmRsZV9kZWxheShzdGF0dXMsICZlbGFwc2Vk KTsKLS0JfSB3aGlsZSAocmMgPT0gQ0FMTF9BR0FJTik7Ci0tCi0tCWlmIChidWZmZXIgJiYgKHJj ID09IDApKQotLQkJbWVtY3B5KGJ1ZmZlciwga2VybmJ1ZiwgbGVuZ3RoKTsKLS0KLS0JaWYgKGtl cm5idWYpCi0tCQkodm9pZClydGFzX2ZyZWVfcm1vX2J1ZmZlcihrZXJuYnVmLCBrZXJuYnVmX3Bh LCBsZW5ndGgpOwotLQotLQkqc2VxX25leHQgPSBzZXF1ZW5jZTsKLS0JYnl0ZXNfaGkgPSBiZTMy dG9oKGJ5dGVzX2hpKTsKLS0JYnl0ZXNfbG8gPSBiZTMydG9oKGJ5dGVzX2xvKTsKLS0JKmJ5dGVz X3JldCA9IEJJVFM2NChieXRlc19oaSwgYnl0ZXNfbG8pOwotLQotLQlkYmcoIigweCUiUFJJeDY0 IiwgMHglIlBSSXg2NCIsICVwLCAlenUsICVwLCAlcCkgPSAlZCwgMHglIlBSSXg2NCIsIDB4JSJQ Ukl4NjQiXG4iLAotLQkgICAgIGR1bXBfdGFnLCBzZXF1ZW5jZSwgYnVmZmVyLCBsZW5ndGgsIHNl cV9uZXh0LCBieXRlc19yZXQsCi0tCSAgICAgcmMgPyByYyA6IHN0YXR1cywgKnNlcV9uZXh0LCAq Ynl0ZXNfcmV0KTsKLS0JcmV0dXJuIHJjID8gcmMgOiBzdGF0dXM7Ci0tfQotIAotIC8qKgotICAq IHJ0YXNfcmVhZF9zbG90X3Jlc2V0CgpkaWZmIC0tZ2l0IGEvbGlicnRhcy0wMi1sb2NrZG93bi1j b21wYXRpYmxlLWFiaS1waGFzZS5wYXRjaCBiL2xpYnJ0YXMtMDItbG9ja2Rvd24tY29tcGF0aWJs ZS1hYmktcGhhc2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiNTMxNWIu LjAwMDAwMDAKLS0tIGEvbGlicnRhcy0wMi1sb2NrZG93bi1jb21wYXRpYmxlLWFiaS1waGFzZS5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0MSArMCwwIEBACi1jb21taXQgMDEwMmM1NzZkNzNl N2NmYTNkNjExMjhjZTM5ZDQyODMzYTQ1YTk4NwotQXV0aG9yOiBIYXJlbiBNeW5lbmkgPGhhcmVu QGxpbnV4LmlibS5jb20+Ci1EYXRlOiAgIFR1ZSBBcHIgMjkgMjA6MTA6MTIgMjAyNSAtMDcwMAot Ci0gICAgbGlicnRhcy9wbGF0Zm9ybS1kdW1wOiBwcmVmZXIgL2Rldi9wYXByLXBsYXRmb3JtLWR1 bXAgd2hlbiBhdmFpbGFibGUKLSAgICAKLSAgICBydGFzX3BsYXRmb3JtX2R1bXAoKSB1c2VzIHN5 c19ydGFzKCkgY2FsbCB0byBvYnRhaW4gcGxhdGZvcm0gZHVtcC4KLSAgICBCdXQgaXQgbmVlZHMg L2Rldi9tZW0gYWNjZXNzIGluIHRoZSB1c2VyIHNwYWNlIHdoaWNoIGlzIHJlc3RyaWN0ZWQKLSAg ICB1bmRlciBzeXN0ZW0gbG9ja2Rvd24uIFNvIHRoaXMgcGF0Y2ggYWRkcyBjaGFuZ2VzIHRvIHVz ZSBuZXcga2VybmVsCi0gICAgQUJJIGZvciBzeXN0ZW0gbG9ja2Rvd24gZmVhdHVyZS4KLSAgICAK LSAgICBLZXJuZWwgcHJvdmlkZXMgbmV3IGludGVyZmFjZXMgc3VjaCBhcyBvcGVuL2lvY3RsL3Jl YWQgd2l0aAotICAgIC9kZXYvcGFwci1wbGF0Zm9ybS1kdW1wIGNoYXIgYmFzZWQgZHJpdmVyLiBG b3IgdGhlIGZpcnN0IGludm9jYXRpb24KLSAgICBvZiBydGFzX3BsYXRmb3JtX2R1bXAoKSBjYWxs LCBpbml0aWFsaXplIGFuIGludGVybmFsIGZ1bmN0aW9uCi0gICAgcG9pbnRlciBkZXBlbmRzIG9u IHRoZSBwcmVzZW5jZSBvZiBhYm92ZSBkZXZpY2Ugbm9kZS4gSWYgbm90Ci0gICAgZmFsbGJhY2sg dG8gdGhlIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLiBwdGhyZWFkX29uY2UoKSBpcyB1c2Vk Ci0gICAgdG8gdGhpcyBzZXR1cCBpcyBkb25lIG9ubHkgb25jZS4KLSAgICAKLSAgICBPcGVuIC9k ZXYvcGFwci1wbGF0Zm9ybS1kdW1wIGFuZCBvYnRhaW4gRkQgd2l0aAotICAgIFBBUFJfUExBVEZP Uk1fRFVNUF9JT0NfQ1JFQVRFX0hBTkRMRSBpb2N0bCBjb21tYW5kLiBUaGlzIGZpbGUKLSAgICBk ZXNjcmlwdG9yIGlzIHJlZmVyZW5jZSB0byB0aGUgZHVtcCBzZXF1ZW5jZSBvYnRhaW5lZCB3aXRo IHRoZQotICAgIHNwZWNpZmllZCBkdW1wIHRhZy4gVGhlbiByZWFkKCkgY2FsbCBmb3IgZWFjaCBy dGFzX3BsYXRmb3JtX2R1bXAoKQotICAgIHdpdGggdGhlIEZEIHJldHJpZXZlcyB0aGUgZHVtcCBk YXRhIGFzIGEgc2VxdWVuY2UgdW50aWwgdGhlIHJlYWQoKQotICAgIHJldHVybnMgMC4KLSAgICAK LSAgICBUaGUgaHlwZXJ2aXNvciB1c2VzIHNlcXVlbmNlIG51bWJlciBwYXNzZWQgd2l0aCBpYm0s cGxhdGZvcm0tZHVtcAotICAgIFJUQVMgY2FsbCB0byBtYWtlIHN1cmUgdGhlIGNvbXBsZXRlIGR1 bXAgaXMgdHJhbnNmZXJyZWQuIEZpcnN0Ci0gICAgUlRBUyBjYWxsIGlzIGludm9rZWQgd2l0aCBz ZXF1ZW5jZSBudW1iZXIgMCB0byBzdGFydCBvYnRhaW5pbmcgdGhlCi0gICAgZHVtcCBhbmQgdGhl biBSVEFTIGFkdmFuY2VzIHRoZSBzZXF1ZW5jZSBudW1iZXIgYnkgYSBmaXhlZCBpbnRlcnZhbAot ICAgIG9uIGVhY2ggY2FsbCBpbiBhIHNlcXVlbmNlIHVudGlsIHRoZSBkdW1wIGlzIGNvbXBsZXRl ZC4gVGhlIGN1cnJlbnQKLSAgICBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgdXNlciBzcGFjZSB0cmFj a3MgdGhpcyBzZXF1ZW5jZSBudW1iZXIKLSAgICByZXR1cm5lZCBmb3IgZWFjaCBSVEFTIGFuZCBw YXNzZXMgdG8gdGhlIG5leHQgUlRBUy4gV2hlcmVhcyB3aXRoCi0gICAgdGhlIG5ldyBBQkksIHRo ZSBrZXJuZWwgdXNlcyBpdCBpbnRlcm5hbGx5IGZvciB0aGUgY29ycmVzcG9uZGluZwotICAgIGR1 bXAgdGFnIGFuZCBsaWJydGFzIHVzZXMgaXQgYXMgYSBGRCBmb3IgdGhlIHN1YnNlcXVlbnQgcmVh ZCBjYWxscy4KLSAgICAKLSAgICBBbHNvIGFkZGVkIHRoZSBjb3B5IG9mIGtlcm5lbCB1YXBpIGhl YWRlciBwYXByLXBsYXRmb3JtLWR1bXAuaC4KLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBIYXJl biBNeW5lbmkgPGhhcmVuQGxpbnV4LmlibS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogVHlyZWwg RGF0d3lsZXIgPHR5cmVsZEBsaW51eC5pYm0uY29tPgotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUu YW0gYi9NYWtlZmlsZS5hbQotaW5kZXggNzk5N2U0Ni4uMTU2YTY4YiAxMDA2NDQKLS0tLSBhL01h a2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTQwLDcgKzQwLDggQEAgbm9pbnN0X0hF QURFUlMgKz0gXAotIAlsaWJydGFzX3NyYy9pbnRlcm5hbC5oIFwKLSAJbGlicnRhc19zcmMvcGFw ci1taXNjZGV2LmggXAotIAlsaWJydGFzX3NyYy9wYXByLXN5c3Bhcm0uaCBcCi0tCWxpYnJ0YXNf c3JjL3BhcHItdnBkLmgKLSsJbGlicnRhc19zcmMvcGFwci12cGQuaCBcCi0rCWxpYnJ0YXNfc3Jj L3BhcHItcGxhdGZvcm0tZHVtcC5oCi0gCi0gIyBTZWUgIlVwZGF0aW5nIGxpYnJhcnkgdmVyc2lv biBpbmZvcm1hdGlvbiIgaW4gdGhlIGxpYnRvb2wgbWFudWFsIGZvcgotICMgaG93IHRvIG1haW50 YWluIHRoZXNlIHZhbHVlcy4gVGhleSBhcmUgKm5vdCogdGllZCB0byB0aGUgcmVsZWFzZQotZGlm ZiAtLWdpdCBhL2xpYnJ0YXNfc3JjL3BhcHItcGxhdGZvcm0tZHVtcC5oIGIvbGlicnRhc19zcmMv cGFwci1wbGF0Zm9ybS1kdW1wLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAw Li41NmQ1MDlkCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJydGFzX3NyYy9wYXByLXBsYXRmb3Jt LWR1bXAuaAotQEAgLTAsMCArMSwxOSBAQAotKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wIFdJVEggTGludXgtc3lzY2FsbC1ub3RlCi0rI2lmbmRlZiBfVUFQSV9QQVBSX1BMQVRG T1JNX0RVTVBfSF8KLSsjZGVmaW5lIF9VQVBJX1BBUFJfUExBVEZPUk1fRFVNUF9IXwotKwotKyNp bmNsdWRlIDxsaW51eC90eXBlcy5oPgotKyNpbmNsdWRlIDxhc20vaW9jdGwuaD4KLSsjaW5jbHVk ZSAicGFwci1taXNjZGV2LmgiCi0rCi0rLyoKLSsgKiBpb2N0bCBmb3IgL2Rldi9wYXByLXBsYXRm b3JtLWR1bXAuIFJldHVybnMgYSBwbGF0Zm9ybS1kdW1wIGhhbmRsZQotKyAqIGZkIGNvcnJlc3Bv bmRpbmcgdG8gdGhlIGR1bXAgdGFnCi0rICovCi0rI2RlZmluZSBQQVBSX1BMQVRGT1JNX0RVTVBf SU9DX0NSRUFURV9IQU5ETEUJX0lPVyhQQVBSX01JU0NERVZfSU9DX0lELCA2LCBfX3U2NCkKLSsv KgotKyAqIGlvY3RsIGZvciAvZGV2L3BhcHItcGxhdGZvcm0tZHVtcCB0byBpbnZhbGlkYXRlIHBs YXRmb3JtIGR1bXAKLSsgKiBhZnRlciBkdW1wIGNvbXBsZXRlZC4gVXNlcyBGRCByZXR1cm5lZCBm cm9tIHRoZSBhYm92ZSBpb2N0bC4KLSsgKi8KLSsjZGVmaW5lIFBBUFJfUExBVEZPUk1fRFVNUF9J T0NfSU5WQUxJREFURQlfSU9XKFBBUFJfTUlTQ0RFVl9JT0NfSUQsIDcsIF9fdTY0KQotKyNlbmRp ZiAvKiBfVUFQSV9QQVBSX1BMQVRGT1JNX0RVTVBfSF8gKi8KLWRpZmYgLS1naXQgYS9saWJydGFz X3NyYy9wbGF0Zm9ybS1kdW1wLmMgYi9saWJydGFzX3NyYy9wbGF0Zm9ybS1kdW1wLmMKLWluZGV4 IGE1NGM0ZWUuLmQ0NTY0NDUgMTAwNjQ0Ci0tLS0gYS9saWJydGFzX3NyYy9wbGF0Zm9ybS1kdW1w LmMKLSsrKyBiL2xpYnJ0YXNfc3JjL3BsYXRmb3JtLWR1bXAuYwotQEAgLTUsNiArNSwxMCBAQAot IAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKyNpbmNsdWRl IDxmY250bC5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjaW5jbHVkZSA8cHRocmVhZC5oPgot KyNpbmNsdWRlIDxzZWFyY2guaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gI2luY2x1ZGUgPHN0 ZGJvb2wuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1AQCAtMTMsMTAgKzE3LDEyIEBACi0gI2lu Y2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3VuaXN0ZC5oPgotICNpbmNs dWRlIDxzeXMvc3lzY2FsbC5oPgotKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSsjaW5jbHVkZSA8 c3lzL3N0YXQuaD4KLSAKLSAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKLSAjaW5jbHVkZSAibGlicnRh cy5oIgotLQotKyNpbmNsdWRlICJwYXByLXBsYXRmb3JtLWR1bXAuaCIKLSAKLSAvKioKLSAgKiBy dGFzX3BsYXRmb3JtX2R1bXAKLUBAIC0zMCw3ICszNiw3IEBACi0gICogQHBhcmFtIGJ5dGVzX3Jl dAotICAqIEByZXR1cm4gMCBvbiBzdWNjZXNzLCAhMCBvdGh3ZXJ3aXNlCi0gICovCi0taW50IHJ0 YXNfcGxhdGZvcm1fZHVtcCh1aW50NjRfdCBkdW1wX3RhZywgdWludDY0X3Qgc2VxdWVuY2UsIHZv aWQgKmJ1ZmZlciwKLStpbnQgcGxhdGZvcm1fZHVtcF91c2VyKHVpbnQ2NF90IGR1bXBfdGFnLCB1 aW50NjRfdCBzZXF1ZW5jZSwgdm9pZCAqYnVmZmVyLAotIAkJICAgICAgIHNpemVfdCBsZW5ndGgs IHVpbnQ2NF90ICpzZXFfbmV4dCwgdWludDY0X3QgKmJ5dGVzX3JldCkKLSB7Ci0gCXVpbnQ2NF90 IGVsYXBzZWQgPSAwOwotQEAgLTkzLDMgKzk5LDEyMyBAQCBpbnQgcnRhc19wbGF0Zm9ybV9kdW1w KHVpbnQ2NF90IGR1bXBfdGFnLCB1aW50NjRfdCBzZXF1ZW5jZSwgdm9pZCAqYnVmZmVyLAotIAly ZXR1cm4gcmMgPyByYyA6IHN0YXR1czsKLSB9Ci0gCi0rc3RhdGljIGJvb2wgcGxhdGZvcm1fZHVt cF9jYW5fdXNlX2NoYXJkZXYodm9pZCkKLSt7Ci0rCXN0cnVjdCBzdGF0IHN0YXRidWY7Ci0rCi0r CWlmIChzdGF0KCIvZGV2L3BhcHItcGxhdGZvcm0tZHVtcCIsICZzdGF0YnVmKSkKLSsJCXJldHVy biBmYWxzZTsKLSsKLSsJaWYgKCFTX0lTQ0hSKHN0YXRidWYuc3RfbW9kZSkpCi0rCQlyZXR1cm4g ZmFsc2U7Ci0rCi0rCWlmIChjbG9zZShvcGVuKCIvZGV2L3BhcHItcGxhdGZvcm0tZHVtcCIsIE9f UkRPTkxZKSkpCi0rCQlyZXR1cm4gZmFsc2U7Ci0rCi0rCXJldHVybiB0cnVlOwotK30KLSsKLSsj ZGVmaW5lIERFVlBBVEggIi9kZXYvcGFwci1wbGF0Zm9ybS1kdW1wIgotKwotK3N0YXRpYyBpbnQg cGxhdGZvcm1fZHVtcF9mZF9uZXcodWludDY0X3QgZHVtcF90YWcpCi0rewotKwljb25zdCBpbnQg ZGV2ZmQgPSBvcGVuKERFVlBBVEgsIE9fV1JPTkxZKTsKLSsJaW50IGZkID0gLTE7Ci0rCi0rCWlm IChkZXZmZCA8IDApCi0rCQlyZXR1cm4gLTE7Ci0rCi0rCWZkID0gaW9jdGwoZGV2ZmQsIFBBUFJf UExBVEZPUk1fRFVNUF9JT0NfQ1JFQVRFX0hBTkRMRSwgJmR1bXBfdGFnKTsKLSsKLSsJY2xvc2Uo ZGV2ZmQpOwotKwlyZXR1cm4gZmQ7Ci0rfQotKwotK2ludCBwbGF0Zm9ybV9kdW1wX2tlcm5lbCh1 aW50NjRfdCBkdW1wX3RhZywgdWludDY0X3Qgc2VxdWVuY2UsIHZvaWQgKmJ1ZmZlciwKLSsJCXNp emVfdCBsZW5ndGgsIHVpbnQ2NF90ICpzZXFfbmV4dCwgdWludDY0X3QgKmJ5dGVzX3JldCkKLSt7 Ci0rCWludCBmZCA9IChzZXF1ZW5jZSA9PSAwKSA/IHBsYXRmb3JtX2R1bXBfZmRfbmV3KGR1bXBf dGFnKQotKwkJCQk6IChpbnQpc2VxdWVuY2U7Ci0rCWludCBydGFzX3N0YXR1cyA9IDA7Ci0rCXNz aXplX3Qgc2l6ZTsKLSsKLSsJLyogU3ludGhlc2l6ZSBpYm0sZ2V0LXBsYXRmcm9tLWR1bXAgInBh cmFtZXRlciBlcnJvciIgKi8KLSsJaWYgKGZkIDwgMCkKLSsJCXJldHVybiAtMzsKLSsKLSsJLyoK LSsJICogcnRhc19wbGF0Zm9ybV9kdW1wKCkgaXMgY2FsbGVkIHdpdGggYnVmID0gTlVMTCBhbmQg bGVuZ3RoID0gMAotKwkgKiBmb3IgImR1bXAgY29tcGxldGUiIFJUQVMgY2FsbCB0byBpbnZhbGlk YXRlIGR1bXAuCi0rCSAqIEZvciBrZXJuZWwgaW50ZXJmYWNlLCByZWFkKCkgd2lsbCBiZSBjb250 aW51ZWQgdW50aWwgdGhlCi0rCSAqIHJldHVybiB2YWx1ZSA9IDAuIE1lYW5zIGtlcm5lbCBBUEkg d2lsbCByZXR1cm4gdGhpcyB2YWx1ZSBvbmx5Ci0rCSAqIGFmdGVyIHRoZSBrZXJuZWwgUlRBUyBj YWxsIHJldHVybmVkICJkdW1wIGNvbXBsZXRlIiBzdGF0dXMKLSsJICogYW5kIHRoZSBoeXBlcnZp c29yIGV4cGVjdHMgbGFzdCBSVEFTIGNhbGwgdG8gaW52YWxpZGF0ZSBkdW1wLgotKwkgKiBTbyBp c3N1ZSB0aGUgZm9sbG93aW5nIGlvY3RsIEFQSSB3aGljaCBpbnZhbGlkYXRlcyB0aGUgZHVtcAot KwkgKiB3aXRoIHRoZSBsYXN0IFJUQVMgY2FsbC4KLSsJICovCi0rCWlmIChidWZmZXIgPT0gTlVM TCkgewotKwkJcnRhc19zdGF0dXMgPSBpb2N0bChmZCwgUEFQUl9QTEFURk9STV9EVU1QX0lPQ19J TlZBTElEQVRFLAotKwkJCQkmZHVtcF90YWcpOwotKwkJY2xvc2UoZmQpOwotKwkJcmV0dXJuIHJ0 YXNfc3RhdHVzOwotKwl9Ci0rCi0rCS8qCi0rCSAqIEVuc3VyZSB3ZSByZXR1cm4gYSBmZCA+IDAg aW4gc2VxX25leHQuCi0rCSAqLwotKwlpZiAoZmQgPT0gMCkgewotKwkJaW50IG5ld2ZkID0gZHVw KGZkKTsKLSsJCWNsb3NlKGZkKTsKLSsJCWZkID0gbmV3ZmQ7Ci0rCX0KLSsKLSsJc2l6ZSA9IHJl YWQoZmQsIGJ1ZmZlciwgbGVuZ3RoKTsKLSsJaWYgKHNpemUgPCAwKSB7Ci0rCQkvKiBTeW50aGVz aXplIGlibSxnZXQtcGxhdGZyb20tZHVtcCAiaGFyZHdhcmUgZXJyb3IiICovCi0rCQljbG9zZShm ZCk7Ci0rCQlyZXR1cm4gLTE7Ci0rCX0gZWxzZSBpZiAoc2l6ZSA+IDApIHsKLSsJCXJ0YXNfc3Rh dHVzID0gMTsgLyogTW9yZSBkYXRhIGF2YWlsYWJsZSwgY2FsbCBhZ2FpbiAqLwotKwl9Ci0rCi0r CWlmIChzZXFfbmV4dCkKLSsJCSpzZXFfbmV4dCA9IGZkOwotKwlpZiAoYnl0ZXNfcmV0KQotKwkJ KmJ5dGVzX3JldCA9IHNpemU7Ci0rCi0rCXJldHVybiBydGFzX3N0YXR1czsKLSt9Ci0rCi0rc3Rh dGljIGludCAoKnBsYXRmb3JtX2R1bXBfZm4pKHVpbnQ2NF90IGR1bXBfdGFnLCB1aW50NjRfdCBz ZXF1ZW5jZSwKLSsJCQkJdm9pZCAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoLAotKwkJCQl1aW50NjRf dCAqc2VxX25leHQsIHVpbnQ2NF90ICpieXRlc19yZXQpOwotKwotK3N0YXRpYyB2b2lkIHBsYXRm b3JtX2R1bXBfZm5fc2V0dXAodm9pZCkKLSt7Ci0rCXBsYXRmb3JtX2R1bXBfZm4gPSBwbGF0Zm9y bV9kdW1wX2Nhbl91c2VfY2hhcmRldigpID8KLSsJCXBsYXRmb3JtX2R1bXBfa2VybmVsIDogcGxh dGZvcm1fZHVtcF91c2VyOwotK30KLSsKLSsvKioKLSsgKiBydGFzX3BsYXRmb3JtX2R1bXAKLSsg KiBJbnRlcmZhY2UgdG8gdGhlIGlibSxwbGF0Zm9ybS1kdW1wIHJ0YXMgY2FsbAotKyAqCi0rICog QHBhcmFtIGR1bXBfdGFnCi0rICogQHBhcmFtIHNlcXVlbmNlCi0rICogQHBhcmFtIGJ1ZmZlciBi dWZmZXIgdG8gd3JpdGUgZHVtcCB0bwotKyAqIEBwYXJhbSBsZW5ndGggYnVmZmVyIGxlbmd0aAot KyAqIEBwYXJhbSBuZXh0X3NlcQotKyAqIEBwYXJhbSBieXRlc19yZXQKLSsgKiBAcmV0dXJuIDAg b24gc3VjY2VzcywgITAgb3Rod2Vyd2lzZQotKyAqLwotK2ludCBydGFzX3BsYXRmb3JtX2R1bXAo dWludDY0X3QgZHVtcF90YWcsIHVpbnQ2NF90IHNlcXVlbmNlLCB2b2lkICpidWZmZXIsCi0rCQkJ c2l6ZV90IGxlbmd0aCwgdWludDY0X3QgKnNlcV9uZXh0LCB1aW50NjRfdCAqYnl0ZXNfcmV0KQot K3sKLSsJc3RhdGljIHB0aHJlYWRfb25jZV90IHBsYXRmb3JtX2R1bXBfZm5fb25jZSA9IFBUSFJF QURfT05DRV9JTklUOwotKwotKwlwdGhyZWFkX29uY2UoJnBsYXRmb3JtX2R1bXBfZm5fb25jZSwg cGxhdGZvcm1fZHVtcF9mbl9zZXR1cCk7Ci0rCi0rCXJldHVybiBwbGF0Zm9ybV9kdW1wX2ZuKGR1 bXBfdGFnLCBzZXF1ZW5jZSwgYnVmZmVyLCBsZW5ndGgsIHNlcV9uZXh0LAotKwkJCWJ5dGVzX3Jl dCk7Ci0rfQotKwoKZGlmZiAtLWdpdCBhL2xpYnJ0YXMtMDMtbG9ja2Rvd24tY29tcGF0aWJsZS1h YmktcGhhc2UucGF0Y2ggYi9saWJydGFzLTAzLWxvY2tkb3duLWNvbXBhdGlibGUtYWJpLXBoYXNl LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzE4ZmNjLi4wMDAwMDAwCi0t LSBhL2xpYnJ0YXMtMDMtbG9ja2Rvd24tY29tcGF0aWJsZS1hYmktcGhhc2UucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwzMjQgKzAsMCBAQAotY29tbWl0IGVmMjU1YTNjYjU1MGRiMzZjNGVhNDk0 MGEyOWNhMDEwMjllMzNjNDkKLUF1dGhvcjogSGFyZW4gTXluZW5pIDxoYXJlbkBsaW51eC5pYm0u Y29tPgotRGF0ZTogICBUdWUgQXByIDI5IDIwOjEwOjEzIDIwMjUgLTA3MDAKLQotICAgIGxpYnJ0 YXM6IG1vdmUgZ2V0L3NldCBpbmRpY2VzIFJUQVMgY2FsbHMgY29kZSB0byBzZXBhcmF0ZSBmaWxl Ci0gICAgCi0gICAgVGhpcyBjb2RlIHdpbGwgZ2FpbiB0aGUgYWJpbGl0eSB0byBhY2Nlc3MgaW5k aWNlcyAoaW5kaWNhdG9yIGFuZAotICAgIHNlbnNvcikgdXNpbmcgZGlmZmVyZW50IGludGVyZmFj ZXMgZXhwb3NlZCBieSBuZXdlciBrZXJuZWxzLiBUaGlzCi0gICAgd2lsbCBpbnZvbHZlIGFkZGlu ZyBhIG5vbnRyaXZpYWwgYW1vdW50IG9mIGNvZGUsIHNvIG1vdmUgaXQgb3V0IG9mCi0gICAgc3lz Y2FsbF9jYWxscy5jLgotICAgIAotICAgIFNvIG1vdmluZyB0aGUgZm9sbG93aW5nIFJUQVMgY2Fs bHMgY29kZToKLSAgICBpYm0sZ2V0LWluZGljZXMKLSAgICBpYm0sc2V0LWR5bmFtaWMtaW5kaWNh dG9yCi0gICAgaWJtLGdldC1keW5hbWljLXNlbnNvci1zdGF0ZQotICAgIAotICAgIFNpZ25lZC1v ZmYtYnk6IEhhcmVuIE15bmVuaSA8aGFyZW5AbGludXguaWJtLmNvbT4KLSAgICBTaWduZWQtb2Zm LWJ5OiBUeXJlbCBEYXR3eWxlciA8dHlyZWxkQGxpbnV4LmlibS5jb20+Ci0KLWRpZmYgLS1naXQg YS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAxNTZhNjhiLi5iNjdiOTNmIDEwMDY0 NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMzMsNyArMzMsOCBA QCBsaWJydGFzX2xhX1NPVVJDRVMgPSBcCi0gCWxpYnJ0YXNfc3JjL29mZHQuYyBcCi0gCWxpYnJ0 YXNfc3JjL3N5c2NhbGxfY2FsbHMuYyBcCi0gCWxpYnJ0YXNfc3JjL3N5c2NhbGxfcm1vLmMgXAot LQlsaWJydGFzX3NyYy9zeXNwYXJtLmMKLSsJbGlicnRhc19zcmMvc3lzcGFybS5jIFwKLSsJbGli cnRhc19zcmMvaW5kaWNlcy5jCi0gCi0gbGlicmFyeV9pbmNsdWRlX0hFQURFUlMgKz0gbGlicnRh c19zcmMvbGlicnRhcy5oCi0gbm9pbnN0X0hFQURFUlMgKz0gXAotZGlmZiAtLWdpdCBhL2xpYnJ0 YXNfc3JjL2luZGljZXMuYyBiL2xpYnJ0YXNfc3JjL2luZGljZXMuYwotbmV3IGZpbGUgbW9kZSAx MDA2NDQKLWluZGV4IDAwMDAwMDAuLjRkZmY2N2QKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnJ0 YXNfc3JjL2luZGljZXMuYwotQEAgLTAsMCArMSwxNDEgQEAKLSsvLyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogTEdQTC0yLjEtb3ItbGF0ZXIKLSsKLSsvLyBTdXBwb3J0IGZvciBhY2Nlc3Npbmcg SUJNIFBvd2VyIHN5c3RlbXMgaW5kaWNlcyAoaW5kaWNhdG9yIGFuZCBzZW5zb3IpCi0rLy8gZGF0 YSB2aWEgL2Rldi9wYXByLWluZGljZXMgb3IgdGhlIGxlZ2FjeSBydGFzKCkgc3lzY2FsbHMuCi0r Ci0rI2luY2x1ZGUgPHN0ZGludC5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8 ZXJybm8uaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsjaW5jbHVkZSA8bGludXgvdW5pc3Rk Lmg+Ci0rI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0rI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+ Ci0rCi0rI2luY2x1ZGUgImludGVybmFsLmgiCi0rI2luY2x1ZGUgImxpYnJ0YXMuaCIKLSsKLSsv KioKLSsgKiBydGFzX2dldF9keW5hbWljX3NlbnNvcgotKyAqIEBicmllZiBJbnRlcmZhY2UgdG8g aWJtLGdldC1keW5hbWljLXNlbnNvci1zdGF0ZSBydGFzIGNhbGwKLSsgKgotKyAqIE9uIHN1Y2Nl c3MgdGhlIHZhcmlhYmxlIHJlZmVyZW5jZWQgYnkgdGhlIHN0YXRlIHBhcmFtZXRlciB3aWxsIGNv bnRhaW4KLSsgKiB0aGUgc3RhdGUgb2YgdGhlIHNlbnNvcgotKyAqCi0rICogQHBhcmFtIHNlbnNv ciBzZW5zb3IgdG8gcmV0cmlldmUKLSsgKiBAcGFyYW0gbG9jX2NvZGUgbG9jYXRpb24gY29kZSBv ZiB0aGUgc2Vuc29yCi0rICogQHBhcmFtIHN0YXRlIHJlZmVyZW5jZSB0byBzdGF0ZSB2YXJpYWJs ZQotKyAqIEByZXR1cm4gMCBvbiBzdWNjZXNzLCAhMCBvdGhlcndpc2UKLSsgKi8KLStpbnQgcnRh c19nZXRfZHluYW1pY19zZW5zb3IoaW50IHNlbnNvciwgdm9pZCAqbG9jX2NvZGUsIGludCAqc3Rh dGUpCi0rewotKwl1aW50MzJfdCBsb2NfcGEgPSAwOwotKwl2b2lkICpsb2NidWY7Ci0rCXVpbnQz Ml90IHNpemU7Ci0rCV9fYmUzMiBiZV9zdGF0ZTsKLSsJaW50IHJjLCBzdGF0dXM7Ci0rCi0rCXJj ID0gc2FuaXR5X2NoZWNrKCk7Ci0rCWlmIChyYykKLSsJCXJldHVybiByYzsKLSsKLSsJc2l6ZSA9 IGJlMzJ0b2goKih1aW50MzJfdCAqKWxvY19jb2RlKSArIHNpemVvZih1aW50MzJfdCk7Ci0rCi0r CXJjID0gcnRhc19nZXRfcm1vX2J1ZmZlcihzaXplLCAmbG9jYnVmLCAmbG9jX3BhKTsKLSsJaWYg KHJjKQotKwkJcmV0dXJuIHJjOwotKwotKwltZW1jcHkobG9jYnVmLCBsb2NfY29kZSwgc2l6ZSk7 Ci0rCi0rCXJjID0gcnRhc19jYWxsKCJpYm0sZ2V0LWR5bmFtaWMtc2Vuc29yLXN0YXRlIiwgMiwg MiwKLSsJCSAgICAgICBodG9iZTMyKHNlbnNvciksIGh0b2JlMzIobG9jX3BhKSwgJnN0YXR1cywg JmJlX3N0YXRlKTsKLSsKLSsJKHZvaWQpIHJ0YXNfZnJlZV9ybW9fYnVmZmVyKGxvY2J1ZiwgbG9j X3BhLCBzaXplKTsKLSsKLSsJKnN0YXRlID0gYmUzMnRvaChiZV9zdGF0ZSk7Ci0rCi0rCWRiZygi KCVkLCAlcywgJXApID0gJWQsICVkXG4iLCBzZW5zb3IsIChjaGFyICopbG9jX2NvZGUsIHN0YXRl LAotKwkgICAgcmMgPyByYyA6IHN0YXR1cywgKnN0YXRlKTsKLSsJcmV0dXJuIHJjID8gcmMgOiBz dGF0dXM7Ci0rfQotKwotKy8qKgotKyAqIHJ0YXNfc2V0X2R5bmFtaWNfaW5kaWNhdG9yCi0rICog QGJyaWVmIEludGVyZmFjZSB0byB0aGUgaWJtLHNldC1keW5hbWljLWluZGljYXRvciBydGFzIGNh bGwKLSsgKgotKyAqIEBwYXJhbSBpbmRpY2F0b3IgaW5kaWNhdG9yIHRvIHNldAotKyAqIEBwYXJh bSBuZXdfdmFsdWUgdmFsdWUgdG8gc2V0IHRoZSBpbmRpY2F0b3IgdG8KLSsgKiBAcGFyYW0gbG9j X2NvZGUKLSsgKiBAcmV0dXJuIDAgb24gc3VjY2VzcywgITAgb3RoZXJ3aXNlCi0rICovCi0raW50 IHJ0YXNfc2V0X2R5bmFtaWNfaW5kaWNhdG9yKGludCBpbmRpY2F0b3IsIGludCBuZXdfdmFsdWUs IHZvaWQgKmxvY19jb2RlKQotK3sKLSsJdWludDMyX3QgbG9jX3BhID0gMDsKLSsJdm9pZCAqbG9j YnVmOwotKwl1aW50MzJfdCBzaXplOwotKwlpbnQgcmMsIHN0YXR1czsKLSsKLSsJcmMgPSBzYW5p dHlfY2hlY2soKTsKLSsJaWYgKHJjKQotKwkJcmV0dXJuIHJjOwotKwotKwlzaXplID0gYmUzMnRv aCgqKHVpbnQzMl90ICopbG9jX2NvZGUpICsgc2l6ZW9mKHVpbnQzMl90KTsKLSsKLSsJcmMgPSBy dGFzX2dldF9ybW9fYnVmZmVyKHNpemUsICZsb2NidWYsICZsb2NfcGEpOwotKwlpZiAocmMpCi0r CQlyZXR1cm4gcmM7Ci0rCi0rCW1lbWNweShsb2NidWYsIGxvY19jb2RlLCBzaXplKTsKLSsKLSsJ cmMgPSBydGFzX2NhbGwoImlibSxzZXQtZHluYW1pYy1pbmRpY2F0b3IiLCAzLCAxLCBodG9iZTMy KGluZGljYXRvciksCi0rCQkgICAgICAgaHRvYmUzMihuZXdfdmFsdWUpLCBodG9iZTMyKGxvY19w YSksICZzdGF0dXMpOwotKwotKwkodm9pZCkgcnRhc19mcmVlX3Jtb19idWZmZXIobG9jYnVmLCBs b2NfcGEsIHNpemUpOwotKwotKwlkYmcoIiglZCwgJWQsICVzKSA9ICVkXG4iLCBpbmRpY2F0b3Is IG5ld192YWx1ZSwgKGNoYXIgKilsb2NfY29kZSwKLSsJICAgIHJjID8gcmMgOiBzdGF0dXMpOwot KwlyZXR1cm4gcmMgPyByYyA6IHN0YXR1czsKLSt9Ci0rCi0rLyoqCi0rICogcnRhc19nZXRfaW5k aWNlcwotKyAqIEBicmllZiBJbnRlcmZhY2UgdG8gdGhlIGlibSxnZXQtaW5kaWNlcyBydGFzIGNh bGwKLSsgKgotKyAqIEBwYXJhbSBpc19zZW5zb3IgaXMgdGhpcyBpbmRleCBhIHNlbnNvcj8KLSsg KiBAcGFyYW0gdHlwZQotKyAqIEBwYXJhbSB3b3JrYXJlYSBhZGRpdGlvbmFsIGFyZ3MgdG8gdGhl IHJ0YXMgY2FsbAotKyAqIEBwYXJhbSBzaXplCi0rICogQHBhcmFtIHN0YXJ0Ci0rICogQHBhcmFt IG5leHQKLSsgKiBAcmV0dXJuIDAgb24gc3VjY2VzcywgITAgb3RoZXJ3aXNlCi0rICovCi0raW50 IHJ0YXNfZ2V0X2luZGljZXMoaW50IGlzX3NlbnNvciwgaW50IHR5cGUsIGNoYXIgKndvcmthcmVh LCBzaXplX3Qgc2l6ZSwKLSsJCSAgICAgaW50IHN0YXJ0LCBpbnQgKm5leHQpCi0rewotKwl1aW50 MzJfdCBrZXJuYnVmX3BhOwotKwlfX2JlMzIgYmVfbmV4dDsKLSsJdm9pZCAqa2VybmJ1ZjsKLSsJ aW50IHJjLCBzdGF0dXM7Ci0rCi0rCXJjID0gc2FuaXR5X2NoZWNrKCk7Ci0rCWlmIChyYykKLSsJ CXJldHVybiByYzsKLSsKLSsJcmMgPSBydGFzX2dldF9ybW9fYnVmZmVyKHNpemUsICZrZXJuYnVm LCAma2VybmJ1Zl9wYSk7Ci0rCWlmIChyYykKLSsJCXJldHVybiByYzsKLSsKLSsJcmMgPSBydGFz X2NhbGwoImlibSxnZXQtaW5kaWNlcyIsIDUsIDIsIGh0b2JlMzIoaXNfc2Vuc29yKSwKLSsJCSAg ICAgICBodG9iZTMyKHR5cGUpLCBodG9iZTMyKGtlcm5idWZfcGEpLCBodG9iZTMyKHNpemUpLAot KwkJICAgICAgIGh0b2JlMzIoc3RhcnQpLCAmc3RhdHVzLCAmYmVfbmV4dCk7Ci0rCi0rCWlmIChy YyA9PSAwKQotKwkJbWVtY3B5KHdvcmthcmVhLCBrZXJuYnVmLCBzaXplKTsKLSsKLSsJKHZvaWQp cnRhc19mcmVlX3Jtb19idWZmZXIoa2VybmJ1Ziwga2VybmJ1Zl9wYSwgc2l6ZSk7Ci0rCi0rCSpu ZXh0ID0gYmUzMnRvaChiZV9uZXh0KTsKLSsKLSsJZGJnKCIoJWQsICVkLCAlcCwgJXp1LCAlZCwg JXApID0gJWQsICVkXG4iLCBpc19zZW5zb3IsIHR5cGUsIHdvcmthcmVhLAotKwkgICAgIHNpemUs IHN0YXJ0LCBuZXh0LCByYyA/IHJjIDogc3RhdHVzLCAqbmV4dCk7Ci0rCXJldHVybiByYyA/IHJj IDogc3RhdHVzOwotK30KLWRpZmYgLS1naXQgYS9saWJydGFzX3NyYy9zeXNjYWxsX2NhbGxzLmMg Yi9saWJydGFzX3NyYy9zeXNjYWxsX2NhbGxzLmMKLWluZGV4IDk5NjM1ODguLjU3M2E0YzMgMTAw NjQ0Ci0tLS0gYS9saWJydGFzX3NyYy9zeXNjYWxsX2NhbGxzLmMKLSsrKyBiL2xpYnJ0YXNfc3Jj L3N5c2NhbGxfY2FsbHMuYwotQEAgLTUyNSw5NCArNTI1LDYgQEAgaW50IHJ0YXNfZ2V0X2NvbmZp Z19hZGRyX2luZm8yKHVpbnQzMl90IGNvbmZpZ19hZGRyLCB1aW50NjRfdCBwaGJfaWQsCi0gCXJl dHVybiByYyA/IHJjIDogc3RhdHVzOwotIH0KLSAKLS0vKioKLS0gKiBydGFzX2dldF9keW5hbWlj X3NlbnNvcgotLSAqIEBicmllZiBJbnRlcmZhY2UgdG8gaWJtLGdldC1keW5hbWljLXNlbnNvci1z dGF0ZSBydGFzIGNhbGwKLS0gKgotLSAqIE9uIHN1Y2Nlc3MgdGhlIHZhcmlhYmxlIHJlZmVyZW5j ZWQgYnkgdGhlIHN0YXRlIHBhcmFtZXRlciB3aWxsIGNvbnRhaW4KLS0gKiB0aGUgc3RhdGUgb2Yg dGhlIHNlbnNvcgotLSAqCi0tICogQHBhcmFtIHNlbnNvciBzZW5zb3IgdG8gcmV0cmlldmUKLS0g KiBAcGFyYW0gbG9jX2NvZGUgbG9jYXRpb24gY29kZSBvZiB0aGUgc2Vuc29yCi0tICogQHBhcmFt IHN0YXRlIHJlZmVyZW5jZSB0byBzdGF0ZSB2YXJpYWJsZQotLSAqIEByZXR1cm4gMCBvbiBzdWNj ZXNzLCAhMCBvdGhlcndpc2UKLS0gKi8KLS1pbnQgcnRhc19nZXRfZHluYW1pY19zZW5zb3IoaW50 IHNlbnNvciwgdm9pZCAqbG9jX2NvZGUsIGludCAqc3RhdGUpCi0tewotLQl1aW50MzJfdCBsb2Nf cGEgPSAwOwotLQl2b2lkICpsb2NidWY7Ci0tCXVpbnQzMl90IHNpemU7Ci0tCV9fYmUzMiBiZV9z dGF0ZTsKLS0JaW50IHJjLCBzdGF0dXM7Ci0tCi0tCXJjID0gc2FuaXR5X2NoZWNrKCk7Ci0tCWlm IChyYykKLS0JCXJldHVybiByYzsKLS0KLS0Jc2l6ZSA9IGJlMzJ0b2goKih1aW50MzJfdCAqKWxv Y19jb2RlKSArIHNpemVvZih1aW50MzJfdCk7Ci0tCi0tCXJjID0gcnRhc19nZXRfcm1vX2J1ZmZl cihzaXplLCAmbG9jYnVmLCAmbG9jX3BhKTsKLS0JaWYgKHJjKQotLQkJcmV0dXJuIHJjOwotLQot LQltZW1jcHkobG9jYnVmLCBsb2NfY29kZSwgc2l6ZSk7Ci0tCi0tCXJjID0gcnRhc19jYWxsKCJp Ym0sZ2V0LWR5bmFtaWMtc2Vuc29yLXN0YXRlIiwgMiwgMiwKLS0JCSAgICAgICBodG9iZTMyKHNl bnNvciksIGh0b2JlMzIobG9jX3BhKSwgJnN0YXR1cywgJmJlX3N0YXRlKTsKLS0KLS0JKHZvaWQp IHJ0YXNfZnJlZV9ybW9fYnVmZmVyKGxvY2J1ZiwgbG9jX3BhLCBzaXplKTsKLS0KLS0JKnN0YXRl ID0gYmUzMnRvaChiZV9zdGF0ZSk7Ci0tCi0tCWRiZygiKCVkLCAlcywgJXApID0gJWQsICVkXG4i LCBzZW5zb3IsIChjaGFyICopbG9jX2NvZGUsIHN0YXRlLAotLQkgICAgcmMgPyByYyA6IHN0YXR1 cywgKnN0YXRlKTsKLS0JcmV0dXJuIHJjID8gcmMgOiBzdGF0dXM7Ci0tfQotLQotLS8qKgotLSAq IHJ0YXNfZ2V0X2luZGljZXMKLS0gKiBAYnJpZWYgSW50ZXJmYWNlIHRvIHRoZSBpYm0sZ2V0LWlu ZGljZXMgcnRhcyBjYWxsCi0tICoKLS0gKiBAcGFyYW0gaXNfc2Vuc29yIGlzIHRoaXMgaW5kZXgg YSBzZW5zb3I/Ci0tICogQHBhcmFtIHR5cGUKLS0gKiBAcGFyYW0gd29ya2FyZWEgYWRkaXRpb25h bCBhcmdzIHRvIHRoZSBydGFzIGNhbGwKLS0gKiBAcGFyYW0gc2l6ZQotLSAqIEBwYXJhbSBzdGFy dAotLSAqIEBwYXJhbSBuZXh0Ci0tICogQHJldHVybiAwIG9uIHN1Y2Nlc3MsICEwIG90aGVyd2lz ZQotLSAqLwotLWludCBydGFzX2dldF9pbmRpY2VzKGludCBpc19zZW5zb3IsIGludCB0eXBlLCBj aGFyICp3b3JrYXJlYSwgc2l6ZV90IHNpemUsCi0tCQkgICAgIGludCBzdGFydCwgaW50ICpuZXh0 KQotLXsKLS0JdWludDMyX3Qga2VybmJ1Zl9wYTsKLS0JX19iZTMyIGJlX25leHQ7Ci0tCXZvaWQg Kmtlcm5idWY7Ci0tCWludCByYywgc3RhdHVzOwotLQotLQlyYyA9IHNhbml0eV9jaGVjaygpOwot LQlpZiAocmMpCi0tCQlyZXR1cm4gcmM7Ci0tCi0tCXJjID0gcnRhc19nZXRfcm1vX2J1ZmZlcihz aXplLCAma2VybmJ1ZiwgJmtlcm5idWZfcGEpOwotLQlpZiAocmMpCi0tCQlyZXR1cm4gcmM7Ci0t Ci0tCXJjID0gcnRhc19jYWxsKCJpYm0sZ2V0LWluZGljZXMiLCA1LCAyLCBodG9iZTMyKGlzX3Nl bnNvciksCi0tCQkgICAgICAgaHRvYmUzMih0eXBlKSwgaHRvYmUzMihrZXJuYnVmX3BhKSwgaHRv YmUzMihzaXplKSwKLS0JCSAgICAgICBodG9iZTMyKHN0YXJ0KSwgJnN0YXR1cywgJmJlX25leHQp OwotLQotLQlpZiAocmMgPT0gMCkKLS0JCW1lbWNweSh3b3JrYXJlYSwga2VybmJ1Ziwgc2l6ZSk7 Ci0tCi0tCSh2b2lkKXJ0YXNfZnJlZV9ybW9fYnVmZmVyKGtlcm5idWYsIGtlcm5idWZfcGEsIHNp emUpOwotLQotLQkqbmV4dCA9IGJlMzJ0b2goYmVfbmV4dCk7Ci0tCi0tCWRiZygiKCVkLCAlZCwg JXAsICV6dSwgJWQsICVwKSA9ICVkLCAlZFxuIiwgaXNfc2Vuc29yLCB0eXBlLCB3b3JrYXJlYSwK LS0JICAgICBzaXplLCBzdGFydCwgbmV4dCwgcmMgPyByYyA6IHN0YXR1cywgKm5leHQpOwotLQly ZXR1cm4gcmMgPyByYyA6IHN0YXR1czsKLS19Ci0tCi0gLyoqCi0gICogcnRhc19nZXRfcG93ZXJf bGV2ZWwKLSAgKiBAYnJpZWYgSW50ZXJmYWNlIHRvIHRoZSBnZXQtcG93ZXItbGV2ZWwgcnRhcyBj YWxsCi1AQCAtODQ4LDQ0ICs3NjAsNiBAQCBpbnQgcnRhc19zZXRfZGVidWcoaW50IGxldmVsKQot IAlyZXR1cm4gMDsKLSB9Ci0gCi0tLyoqCi0tICogcnRhc19zZXRfZHluYW1pY19pbmRpY2F0b3IK LS0gKiBAYnJpZWYgSW50ZXJmYWNlIHRvIHRoZSBpYm0sc2V0LWR5bmFtaWMtaW5kaWNhdG9yIHJ0 YXMgY2FsbAotLSAqCi0tICogQHBhcmFtIGluZGljYXRvciBpbmRpY2F0b3IgdG8gc2V0Ci0tICog QHBhcmFtIG5ld192YWx1ZSB2YWx1ZSB0byBzZXQgdGhlIGluZGljYXRvciB0bwotLSAqIEBwYXJh bSBsb2NfY29kZQotLSAqIEByZXR1cm4gMCBvbiBzdWNjZXNzLCAhMCBvdGhlcndpc2UKLS0gKi8K LS1pbnQgcnRhc19zZXRfZHluYW1pY19pbmRpY2F0b3IoaW50IGluZGljYXRvciwgaW50IG5ld192 YWx1ZSwgdm9pZCAqbG9jX2NvZGUpCi0tewotLQl1aW50MzJfdCBsb2NfcGEgPSAwOwotLQl2b2lk ICpsb2NidWY7Ci0tCXVpbnQzMl90IHNpemU7Ci0tCWludCByYywgc3RhdHVzOwotLQotLQlyYyA9 IHNhbml0eV9jaGVjaygpOwotLQlpZiAocmMpCi0tCQlyZXR1cm4gcmM7Ci0tCi0tCXNpemUgPSBi ZTMydG9oKCoodWludDMyX3QgKilsb2NfY29kZSkgKyBzaXplb2YodWludDMyX3QpOwotLQotLQly YyA9IHJ0YXNfZ2V0X3Jtb19idWZmZXIoc2l6ZSwgJmxvY2J1ZiwgJmxvY19wYSk7Ci0tCWlmIChy YykKLS0JCXJldHVybiByYzsKLS0KLS0JbWVtY3B5KGxvY2J1ZiwgbG9jX2NvZGUsIHNpemUpOwot LQotLQlyYyA9IHJ0YXNfY2FsbCgiaWJtLHNldC1keW5hbWljLWluZGljYXRvciIsIDMsIDEsIGh0 b2JlMzIoaW5kaWNhdG9yKSwKLS0JCSAgICAgICBodG9iZTMyKG5ld192YWx1ZSksIGh0b2JlMzIo bG9jX3BhKSwgJnN0YXR1cyk7Ci0tCi0tCSh2b2lkKSBydGFzX2ZyZWVfcm1vX2J1ZmZlcihsb2Ni dWYsIGxvY19wYSwgc2l6ZSk7Ci0tCi0tCWRiZygiKCVkLCAlZCwgJXMpID0gJWRcbiIsIGluZGlj YXRvciwgbmV3X3ZhbHVlLCAoY2hhciAqKWxvY19jb2RlLAotLQkgICAgcmMgPyByYyA6IHN0YXR1 cyk7Ci0tCXJldHVybiByYyA/IHJjIDogc3RhdHVzOwotLX0KLS0KLSAvKioKLSAgKiBydGFzX3Nl dF9lZWhfb3B0aW9uCi0gICogQGJyaWVmIEluZXJmYWNlIHRvIHRoZSBpYm0sc2V0LWVlaC1vcHRp b24gcnRhcyBjYWxsCgpkaWZmIC0tZ2l0IGEvbGlicnRhcy0wNC1sb2NrZG93bi1jb21wYXRpYmxl LWFiaS1waGFzZS5wYXRjaCBiL2xpYnJ0YXMtMDQtbG9ja2Rvd24tY29tcGF0aWJsZS1hYmktcGhh c2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3MjQ0MWQuLjAwMDAwMDAK LS0tIGEvbGlicnRhcy0wNC1sb2NrZG93bi1jb21wYXRpYmxlLWFiaS1waGFzZS5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLWNvbW1pdCA3M2MzMjU4NjYxNGYyNDc2ZDk3MzU2 OTI4ZWFhY2JhOGE5NzhhMTk2Ci1BdXRob3I6IEhhcmVuIE15bmVuaSA8aGFyZW5AbGludXguaWJt LmNvbT4KLURhdGU6ICAgVHVlIEFwciAyOSAyMDoxMDoxNCAyMDI1IC0wNzAwCi0KLSAgICBsaWJy dGFzOiBBZGQga2VybmVsIHVhcGkgaGVhZGVyIHBhcHItaW5kaWNlcy5oCi0gICAgCi0gICAgVGhp cyBoZWFkZXIgZmlsZSBwcm92aWRlcyBpb2N0bHMgZm9yIHRoZSBmb2xsb3dpbmcgUlRBUyBjYWxs cyB0bwotICAgIHVzZSBuZXcga2VybmVsIGludGVyZmFjZXMgaWYgL2Rldi9wYXByLWluZGljZXMg aXMgYXZhaWxhYmxlOgotICAgIGlibSxnZXQtaW5kaWNlcwotICAgIGlibSxzZXQtZHluYW1pYy1p bmRpY2F0b3IKLSAgICBpYm0sZ2V0LWR5bmFtaWMtc2Vuc29yLXN0YXRlCi0gICAgCi0gICAgU2ln bmVkLW9mZi1ieTogSGFyZW4gTXluZW5pIDxoYXJlbkBsaW51eC5pYm0uY29tPgotICAgIFNpZ25l ZC1vZmYtYnk6IFR5cmVsIERhdHd5bGVyIDx0eXJlbGRAbGludXguaWJtLmNvbT4KLQotZGlmZiAt LWdpdCBhL2xpYnJ0YXNfc3JjL3BhcHItaW5kaWNlcy5oIGIvbGlicnRhc19zcmMvcGFwci1pbmRp Y2VzLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kYjQ3ZTY1Ci0tLS0g L2Rldi9udWxsCi0rKysgYi9saWJydGFzX3NyYy9wYXByLWluZGljZXMuaAotQEAgLTAsMCArMSw0 MiBAQAotKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIFdJVEggTGludXgtc3lz Y2FsbC1ub3RlICovCi0rI2lmbmRlZiBfVUFQSV9QQVBSX0lORElDRVNfSF8KLSsjZGVmaW5lIF9V QVBJX1BBUFJfSU5ESUNFU19IXwotKwotKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotKyNpbmNs dWRlIDxhc20vaW9jdGwuaD4KLSsjaW5jbHVkZSAicGFwci1taXNjZGV2LmgiCi0rCi0rI2RlZmlu ZSBTWl80SwkJCQkweDAwMDAxMDAwCi0rI2RlZmluZSBMT0NfQ09ERV9TSVpFCQkJODAKLSsjZGVm aW5lIFJUQVNfR0VUX0lORElDRVNfQlVGX1NJWkUJU1pfNEsKLSsKLStzdHJ1Y3QgcGFwcl9pbmRp Y2VzX2lvX2Jsb2NrIHsKLSsJdW5pb24gewotKwkJc3RydWN0IHsKLSsJCQlfX3U4IGlzX3NlbnNv cjsgLyogMCBmb3IgaW5kaWNhdG9yIGFuZCAxIGZvciBzZW5zb3IgKi8KLSsJCQlfX3UzMiBpbmRp Y2VfdHlwZTsKLSsJCX0gaW5kaWNlczsKLSsJCXN0cnVjdCB7Ci0rCQkJX191MzIgdG9rZW47IC8q IFNlbnNvciBvciBpbmRpY2F0b3IgdG9rZW4gKi8KLSsJCQlfX3UzMiBzdGF0ZTsgLyogZ2V0IC8g c2V0IHN0YXRlICovCi0rCQkJLyoKLSsJCQkgKiBQQVBSKyAxMi4zLjIuNCBDb252ZXJnZWQgTG9j YXRpb24gQ29kZSBSdWxlcyAtCi0rCQkJICogTGVuZ3RoIFJlc3RyaWN0aW9ucy4gNzkgY2hhcmFj dGVycyBwbHVzIG51bGwuCi0rCQkJICovCi0rCQkJY2hhciBsb2NhdGlvbl9jb2RlX3N0cltMT0Nf Q09ERV9TSVpFXTsgLyogbG9jYXRpb24gY29kZSAqLwotKwkJfSBkeW5hbWljX3BhcmFtOwotKwl9 OwotK307Ci0rCi0rLyoKLSsgKiBpb2N0bHMgZm9yIC9kZXYvcGFwci1pbmRpY2VzLgotKyAqIFBB UFJfSU5ESUNFU19JT0NfR0VUOglSZXR1cm5zIGEgZ2V0LWluZGljZXMgaGFuZGxlIGZkIHRvIHJl YWQgZGF0YQotKyAqIFBBUFJfRFlOQU1JQ19TRU5TT1JfSU9DX0dFVDoJR2V0cyB0aGUgc3RhdGUg b2YgdGhlIGlucHV0IHNlbnNvcgotKyAqIFBBUFJfRFlOQU1JQ19JTkRJQ0FUT1JfSU9DX1NFVDog U2V0cyB0aGUgbmV3IHN0YXRlIGZvciB0aGUgaW5wdXQgaW5kaWNhdG9yCi0rICovCi0rI2RlZmlu ZSBQQVBSX0lORElDRVNfSU9DX0dFVAkJX0lPVyhQQVBSX01JU0NERVZfSU9DX0lELCAzLCBzdHJ1 Y3QgcGFwcl9pbmRpY2VzX2lvX2Jsb2NrKQotKyNkZWZpbmUgUEFQUl9EWU5BTUlDX1NFTlNPUl9J T0NfR0VUCV9JT1dSKFBBUFJfTUlTQ0RFVl9JT0NfSUQsIDQsIHN0cnVjdCBwYXByX2luZGljZXNf aW9fYmxvY2spCi0rI2RlZmluZSBQQVBSX0RZTkFNSUNfSU5ESUNBVE9SX0lPQ19TRVQJX0lPVyhQ QVBSX01JU0NERVZfSU9DX0lELCA1LCBzdHJ1Y3QgcGFwcl9pbmRpY2VzX2lvX2Jsb2NrKQotKwot KwotKyNlbmRpZiAvKiBfVUFQSV9QQVBSX0lORElDRVNfSF8gKi8KCmRpZmYgLS1naXQgYS9saWJy dGFzLTA1LWxvY2tkb3duLWNvbXBhdGlibGUtYWJpLXBoYXNlLnBhdGNoIGIvbGlicnRhcy0wNS1s b2NrZG93bi1jb21wYXRpYmxlLWFiaS1waGFzZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggODU1YmRiZi4uMDAwMDAwMAotLS0gYS9saWJydGFzLTA1LWxvY2tkb3duLWNvbXBh dGlibGUtYWJpLXBoYXNlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTg3ICswLDAgQEAKLWNv bW1pdCAxZTI1NGVkZTFjMjI2OGQyZGJmMDNlMmI2MDJhMDRhZjJjOGFkOGM2Ci1BdXRob3I6IEhh cmVuIE15bmVuaSA8aGFyZW5AbGludXguaWJtLmNvbT4KLURhdGU6ICAgVHVlIEFwciAyOSAyMDox MDoxNSAyMDI1IC0wNzAwCi0KLSAgICBsaWJydGFzOiBVc2UgL2Rldi9wYXByLWluZGljZXMgd2hl biBhdmFpbGFibGUgZm9yIGlibSxnZXQtaW5kaWNlcwotICAgIAotICAgIHJ0YXNfZ2V0X2luZGlj ZXMoKSB1c2VzIHN5c19ydGFzKCkgY2FsbCB0byBvYnRhaW4gaW5kaWNlcwotICAgIGFuZCBsb2Nh dGlvbiBjb2RlcyBmb3IgYSBzcGVjaWZpZWQgaW5kaWNhdG9yIG9yIHNlbnNvciB0b2tlbi4KLSAg ICBCdXQgdGhpcyBSVEFTIGZ1bmN0aW9uIG5lZWRzIFJNTyBidWZmZXIgYWxsb2NhdGlvbiB3aGlj aCBpcwotICAgIHByb2hpYml0ZWQgdW5kZXIgc3lzdGVtIGxvY2tkb3duLiBUaGlzIHBhdGNoIGFk ZHMgY2hhbmdlcyB0bwotICAgIHVzZSBuZXcga2VybmVsIGludGVyZmFjZXMgc3VjaCBhcyBvcGVu L2lvY3RsL3JlYWQgd2hlbgotICAgIC9kZXYvcGFwci1pbmRpY2VzIGlzIGF2YWlsYWJsZS4KLSAg ICAKLSAgICBGb3IgdGhlIGZpcnN0IGV4ZWN1dGlvbiBvZiBydGFzX2dldF9pbmRpY2VzKCksIGlu aXRpYWxpemUgYW4KLSAgICBpbnRlcm5hbCBmdW5jdGlvbiBwb2ludGVyIGFuZCB1c2UgdGhlIG5l dyBpbnRlcmZhY2VzIGRlcGVuZHMgb24KLSAgICB0aGUgcHJlc2VuY2Ugb2YgYWJvdmUgZGV2aWNl IG5vZGUuCi0gICAgCi0gICAgT3BlbiAvZGV2L3BhcHItaW5kaWNlcyBhbmQgb2J0YWluIEZEIHdp dGggUEFQUl9JTkRJQ0VTX0lPQ19HRVQKLSAgICBpb2N0bCBjb21tYW5kLiBUaGUga2VybmVsIG9i dGFpbmVkIGFsbCBpbmRpY2VzIGRhdGEgdW5kZXIgaW9jdGwoKQotICAgIGFuZCBleHBvc2VkIHRv IHVzZXIgc3BhY2Ugd2l0aCB0aGlzIGZpbGUgZGVzY3JpcHRvci4gVGhlIGh5cGVydmlzb3IKLSAg ICByZXR1cm5zIGluZGljZXMgZGF0YSBpbiBjZXJ0YWluIGZvcm1hdCBkZXBlbmRzIG9uIHRoZSBS VEFTIGNhbGwKLSAgICBidWZmZXIgYW5kIHRoZSBrZXJuZWwgZXhwZWN0cyB0aGUgdXNlciBzcGFj ZSB0byBwYXJzZSB0aGlzIGRhdGEuCi0gICAgSGVuY2UgdGhlIGtlcm5lbCByZXR1cm5zIFJUQVNf R0VUX0lORElDRVNfQlVGX1NJWkUgKDQwOTYpIGJ1ZmZlcgotICAgIGZvciBlYWNoIHJlYWQoKS4g VGhlbiByZWFkKCkgZm9yIGVhY2ggcnRhc19nZXRfaW5kaWNlcygpIGNvbnRpbnVvdXMKLSAgICB1 bnRpbCB0aGUgcmVhZCgpIHJldHVybnMgMCB3aGljaCBtZWFucyBlbmQgb2Yga2VybmVsIGJ1ZmZl ci4KLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBIYXJlbiBNeW5lbmkgPGhhcmVuQGxpbnV4Lmli bS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogVHlyZWwgRGF0d3lsZXIgPHR5cmVsZEBsaW51eC5p Ym0uY29tPgotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXgg YjY3YjkzZi4uMDJkNjE4NCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmls ZS5hbQotQEAgLTQyLDcgKzQyLDggQEAgbm9pbnN0X0hFQURFUlMgKz0gXAotIAlsaWJydGFzX3Ny Yy9wYXByLW1pc2NkZXYuaCBcCi0gCWxpYnJ0YXNfc3JjL3BhcHItc3lzcGFybS5oIFwKLSAJbGli cnRhc19zcmMvcGFwci12cGQuaCBcCi0tCWxpYnJ0YXNfc3JjL3BhcHItcGxhdGZvcm0tZHVtcC5o Ci0rCWxpYnJ0YXNfc3JjL3BhcHItcGxhdGZvcm0tZHVtcC5oIFwKLSsJbGlicnRhc19zcmMvcGFw ci1pbmRpY2VzLmgKLSAKLSAjIFNlZSAiVXBkYXRpbmcgbGlicmFyeSB2ZXJzaW9uIGluZm9ybWF0 aW9uIiBpbiB0aGUgbGlidG9vbCBtYW51YWwgZm9yCi0gIyBob3cgdG8gbWFpbnRhaW4gdGhlc2Ug dmFsdWVzLiBUaGV5IGFyZSAqbm90KiB0aWVkIHRvIHRoZSByZWxlYXNlCi1kaWZmIC0tZ2l0IGEv bGlicnRhc19zcmMvaW5kaWNlcy5jIGIvbGlicnRhc19zcmMvaW5kaWNlcy5jCi1pbmRleCA0ZGZm NjdkLi42Nzc0NGM5IDEwMDY0NAotLS0tIGEvbGlicnRhc19zcmMvaW5kaWNlcy5jCi0rKysgYi9s aWJydGFzX3NyYy9pbmRpY2VzLmMKLUBAIC03LDEyICs3LDIwIEBACi0gI2luY2x1ZGUgPHN0cmlu Zy5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKyNpbmNs dWRlIDxmY250bC5oPgotKyNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0rI2luY2x1ZGUgPHN0ZGJvb2wu aD4KLSAjaW5jbHVkZSA8bGludXgvdW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+ Ci0gI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0rI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotKyNp bmNsdWRlIDxzeXMvc3RhdC5oPgotIAotICNpbmNsdWRlICJpbnRlcm5hbC5oIgotICNpbmNsdWRl ICJsaWJydGFzLmgiCi0rI2luY2x1ZGUgInBhcHItaW5kaWNlcy5oIgotKwotK3N0YXRpYyBjb25z dCBjaGFyIGluZGljZXNfZGV2cGF0aFtdID0gIi9kZXYvcGFwci1pbmRpY2VzIjsKLSAKLSAvKioK LSAgKiBydGFzX2dldF9keW5hbWljX3NlbnNvcgotQEAgLTEwOCw3ICsxMTYsNyBAQCBpbnQgcnRh c19zZXRfZHluYW1pY19pbmRpY2F0b3IoaW50IGluZGljYXRvciwgaW50IG5ld192YWx1ZSwgdm9p ZCAqbG9jX2NvZGUpCi0gICogQHBhcmFtIG5leHQKLSAgKiBAcmV0dXJuIDAgb24gc3VjY2Vzcywg ITAgb3RoZXJ3aXNlCi0gICovCi0taW50IHJ0YXNfZ2V0X2luZGljZXMoaW50IGlzX3NlbnNvciwg aW50IHR5cGUsIGNoYXIgKndvcmthcmVhLCBzaXplX3Qgc2l6ZSwKLStpbnQgZ2V0X2luZGljZXNf ZmFsbGJhY2soaW50IGlzX3NlbnNvciwgaW50IHR5cGUsIGNoYXIgKndvcmthcmVhLCBzaXplX3Qg c2l6ZSwKLSAJCSAgICAgaW50IHN0YXJ0LCBpbnQgKm5leHQpCi0gewotIAl1aW50MzJfdCBrZXJu YnVmX3BhOwotQEAgLTEzOSwzICsxNDcsMTA5IEBAIGludCBydGFzX2dldF9pbmRpY2VzKGludCBp c19zZW5zb3IsIGludCB0eXBlLCBjaGFyICp3b3JrYXJlYSwgc2l6ZV90IHNpemUsCi0gCSAgICAg c2l6ZSwgc3RhcnQsIG5leHQsIHJjID8gcmMgOiBzdGF0dXMsICpuZXh0KTsKLSAJcmV0dXJuIHJj ID8gcmMgOiBzdGF0dXM7Ci0gfQotKwotK3N0YXRpYyBpbnQgZ2V0X2luZGljZXNfZmRfbmV3KGlu dCBpc19zZW5zb3IsIGludCB0eXBlKQotK3sKLSsJc3RydWN0IHBhcHJfaW5kaWNlc19pb19ibG9j ayBidWYgPSB7fTsKLSsJY29uc3QgaW50IGZkID0gb3BlbihpbmRpY2VzX2RldnBhdGgsIE9fV1JP TkxZKTsKLSsJaW50IGRldmZkID0gLTE7Ci0rCi0rCWlmIChmZCA8IDApCi0rCQlyZXR1cm4gLTE7 Ci0rCi0rCWJ1Zi5pbmRpY2VzLmlzX3NlbnNvciA9IGlzX3NlbnNvcjsKLSsJYnVmLmluZGljZXMu aW5kaWNlX3R5cGUgPSB0eXBlOwotKwlkZXZmZCA9IGlvY3RsKGZkLCBQQVBSX0lORElDRVNfSU9D X0dFVCwgJmJ1Zik7Ci0rCWNsb3NlKGZkKTsKLSsKLSsJcmV0dXJuIGRldmZkOwotK30KLSsKLStz dGF0aWMgaW50IGdldF9pbmRpY2VzX2NoYXJkZXYoaW50IGlzX3NlbnNvciwgaW50IHR5cGUsIGNo YXIgKndvcmthcmVhLAotKwkJCQlzaXplX3Qgc2l6ZSwgaW50IHN0YXJ0LCBpbnQgKm5leHQpCi0r ewotKwlpbnQgZmQsIHJ0YXNfc3RhdHVzID0gMDsKLSsJc3NpemVfdCByZXM7Ci0rCi0rCWlmIChz aXplICE9IFJUQVNfR0VUX0lORElDRVNfQlVGX1NJWkUpIHsKLSsJCWRiZygiSW52YWxpZCBidWZm ZXIgc2l6ZSAlbHUgZXhwZWN0cyAlZFxuIiwKLSsJCQkJc2l6ZSwgUlRBU19HRVRfSU5ESUNFU19C VUZfU0laRSk7Ci0rCQlyZXR1cm4gLUVJTlZBTDsKLSsJfQotKwotKwlmZCA9IChzdGFydCA9PSAx KSA/IGdldF9pbmRpY2VzX2ZkX25ldyhpc19zZW5zb3IsIHR5cGUpCi0rCQkJCTogKGludClzdGFy dDsKLSsJLyoKLSsJICogRW5zdXJlIHdlIHJldHVybiBhIGZkID4gMCBpbiBzZXFfbmV4dC4KLSsJ ICovCi0rCWlmIChmZCA9PSAxKSB7Ci0rCQlpbnQgbmV3ZmQgPSBkdXAoZmQpOwotKwkJY2xvc2Uo ZmQpOwotKwkJZmQgPSBuZXdmZDsKLSsJfQotKwotKwlpZiAoZmQgPCAwKQotKwkJcmV0dXJuIC0z OyAvKiBTeW50aGVzaXplIGlibSxnZXQtdnBkICJwYXJhbWV0ZXIgZXJyb3IiICovCi0rCi0rCXJl cyA9IHJlYWQoZmQsIHdvcmthcmVhLCBzaXplKTsKLSsJaWYgKHJlcyA8IDApIHsKLSsJCS8qIFN5 bnRoZXNpemUgaWJtLGdldC1wbGF0ZnJvbS1kdW1wICJoYXJkd2FyZSBlcnJvciIgKi8KLSsJCXJ0 YXNfc3RhdHVzID0gLTE7Ci0rCQljbG9zZShmZCk7Ci0rCX0gZWxzZSBpZiAocmVzID09IDApIHsK LSsJCS8qCi0rCQkgKiByZWFkKCkgcmV0dXJucyAwIGF0IHRoZSBlbmQgb2YgcmVhZAotKwkJICog U28gcmVzZXQgdGhlIGZpcnN0IDMyIGJpdCB2YWx1ZSAobnVtYmVyIG9mIGluZGljZXMpCi0rCQkg KiBpbiB0aGUgYnVmZmVyIHdoaWNoIHRlbGxzIG5vIGRhdGEgYXZhaWxhYmxlIHRvIHRoZQotKwkJ ICogY2FsbGVyIG9mIHJ0YXNfZ2V0X2luZGljZXMoKS4KLSsJCSAqLwotKwkJKih1aW50MzJfdCAq KXdvcmthcmVhID0gMDsKLSsJCXJ0YXNfc3RhdHVzID0gMDsgLyogRG9uZSB3aXRoIHNlcXVlbmNl LCBubyBtb3JlIGRhdGEgKi8KLSsJCWNsb3NlKGZkKTsKLSsJCWlmIChuZXh0KQotKwkJCSpuZXh0 ID0gMTsKLSsJfSBlbHNlIHsKLSsJCXJ0YXNfc3RhdHVzID0gMTsgLyogTW9yZSBkYXRhIGF2YWls YWJsZSwgY2FsbCBhZ2FpbiAqLwotKwkJaWYgKG5leHQpCi0rCQkJKm5leHQgPSBmZDsKLSsJfQot KwotKwlyZXR1cm4gcnRhc19zdGF0dXM7Ci0rfQotKwotK3N0YXRpYyBib29sIGluZGljZXNfY2Fu X3VzZV9jaGFyZGV2KHZvaWQpCi0rewotKwlzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotKwotKwlpZiAo c3RhdChpbmRpY2VzX2RldnBhdGgsICZzdGF0YnVmKSkKLSsJCXJldHVybiBmYWxzZTsKLSsKLSsJ aWYgKCFTX0lTQ0hSKHN0YXRidWYuc3RfbW9kZSkpCi0rCQlyZXR1cm4gZmFsc2U7Ci0rCi0rCWlm IChjbG9zZShvcGVuKGluZGljZXNfZGV2cGF0aCwgT19SRE9OTFkpKSkKLSsJCXJldHVybiBmYWxz ZTsKLSsKLSsJcmV0dXJuIHRydWU7Ci0rfQotKwotK3N0YXRpYyBpbnQgKCpnZXRfaW5kaWNlc19m bikoaW50IGlzX3NlbnNvciwgaW50IHR5cGUsIGNoYXIgKndvcmthcmVhLAotKwkJCQlzaXplX3Qg c2l6ZSwgaW50IHN0YXJ0LCBpbnQgKm5leHQpOwotKwotK3N0YXRpYyB2b2lkIGluZGljZXNfZm5f c2V0dXAodm9pZCkKLSt7Ci0rCWNvbnN0IGJvb2wgdXNlX2NoYXJkZXYgPSBpbmRpY2VzX2Nhbl91 c2VfY2hhcmRldigpOwotKwotKwlnZXRfaW5kaWNlc19mbiA9IHVzZV9jaGFyZGV2ID8KLSsJCWdl dF9pbmRpY2VzX2NoYXJkZXYgOiBnZXRfaW5kaWNlc19mYWxsYmFjazsKLSt9Ci0rCi0rc3RhdGlj IHB0aHJlYWRfb25jZV90IGluZGljZXNfZm5fc2V0dXBfb25jZSA9IFBUSFJFQURfT05DRV9JTklU OwotKwotK2ludCBydGFzX2dldF9pbmRpY2VzKGludCBpc19zZW5zb3IsIGludCB0eXBlLCBjaGFy ICp3b3JrYXJlYSwgc2l6ZV90IHNpemUsCi0rCQkJaW50IHN0YXJ0LCBpbnQgKm5leHQpCi0rewot KwlwdGhyZWFkX29uY2UoJmluZGljZXNfZm5fc2V0dXBfb25jZSwgaW5kaWNlc19mbl9zZXR1cCk7 Ci0rCXJldHVybiBnZXRfaW5kaWNlc19mbihpc19zZW5zb3IsIHR5cGUsIHdvcmthcmVhLCBzaXpl LAotKwkJCQlzdGFydCwgbmV4dCk7Ci0rfQoKZGlmZiAtLWdpdCBhL2xpYnJ0YXMtMDYtbG9ja2Rv d24tY29tcGF0aWJsZS1hYmktcGhhc2UucGF0Y2ggYi9saWJydGFzLTA2LWxvY2tkb3duLWNvbXBh dGlibGUtYWJpLXBoYXNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWY3 NTljLi4wMDAwMDAwCi0tLSBhL2xpYnJ0YXMtMDYtbG9ja2Rvd24tY29tcGF0aWJsZS1hYmktcGhh c2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotY29tbWl0IDI1OWQ1MmRl MzI5ZGNhMjdlYzZmMGE4NDk1YzkwMTgzMzM5YmJmZDEKLUF1dGhvcjogSGFyZW4gTXluZW5pIDxo YXJlbkBsaW51eC5pYm0uY29tPgotRGF0ZTogICBUdWUgQXByIDI5IDIwOjEwOjE2IDIwMjUgLTA3 MDAKLQotICAgIGxpYnJ0YXM6IFVzZSAvZGV2L3BhcHItaW5kaWNlcyB3aGVuIGF2YWlsYWJsZSBm b3IgZ2V0LWR5bmFtaWMtc2Vuc29yLXN0YXRlCi0gICAgCi0gICAgVGhlIGN1cnJlbnQgcnRhc19n ZXRfZHluYW1pY19zZW5zb3IoKSBhbGxvY2F0ZXMgUlRBUyB3b3JrIGFyZWEKLSAgICBhbmQgaW52 b2tlcyBzeXNfcnRhcygpIGluIHRoZSB1c2VyIHNwYWNlLiBCdXQgdGhpcyBpbnRlcmZhY2Ugd2ls bAotICAgIG5vdCB3b3JrIHVuZGVyIHN5c3RlbSBsb2NrZG93biBkdWUgdG8gcmVzdHJpY3RlZCBh Y2Nlc3MgdG8gL2Rldi9tZW0uCi0gICAgCi0gICAgVGhpcyBwYXRjaCBhZGQgY2hhbmdlcyB0byB1 c2UgbmV3IGtlcm5lbCBpbnRlcmZhY2UgcHJvdmlkZWQgYnkKLSAgICAvZGV2L3BhcHItaW5kaWNl cyBlbnRyeSB3aXRoIFBBUFJfRFlOQU1JQ19TRU5TT1JfSU9DX0dFVCBpb2N0bC4KLSAgICBUaGUg bmV3IHN0YXRlIG9mIHNlbnNvciB0b2tlbiB3aWxsIGJlIHJldHVybmVkIGZyb20gdGhlIHVzZXIK LSAgICBwYXNzZWQgcGFwcl9pbmRpY2VzX2lvX2Jsb2NrIHRvIHRoZSBpb2N0bC4KLSAgICAKLSAg ICBJZiAvZGV2L3BhcHItaW5kaWNlcyBlbnRyeSBpcyBhdmFpbGFibGUsIHRoZSBuZXcga2VybmVs IGludGVyZmFjZQotICAgIGlzIHVzZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb2dyYW1taW5nIG1v ZGVsOgotICAgIAotICAgICBmZCA9IG9wZW4oIi9kZXYvcGFwci1pbmRpY2VzIiwgT19SRFdSKTsK LSAgICAgY29weSBsb2NhdGlvbi1jb2RlIHRvCi0gICAgICAgICAgICBwYXByX2luZGljZXNfaW9f YmxvY2suZHluYW1pY19wYXJhbS5sb2NhdGlvbl9jb2RlX3N0cgotICAgICBwYXByX2luZGljZXNf aW9fYmxvY2suZHluYW1pY19wYXJhbS50b2tlbiA9IHRva2VuLXZhbDsKLSAgICAgcmV0ID0gaW9j dGwoZmQsIFBBUFJfRFlOQU1JQ19TRU5TT1JfSU9DX0dFVCwKLSAgICAgICAgICAgIHBhcHJfaW5k aWNlc19pb19ibG9jayk7Ci0gICAgIHN0YXRlID0gcGFwcl9pbmRpY2VzX2lvX2Jsb2NrLmR5bmFt aWNfcGFyYW0uc3RhdGUKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBIYXJlbiBNeW5lbmkgPGhh cmVuQGxpbnV4LmlibS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogVHlyZWwgRGF0d3lsZXIgPHR5 cmVsZEBsaW51eC5pYm0uY29tPgotCi1kaWZmIC0tZ2l0IGEvbGlicnRhc19zcmMvaW5kaWNlcy5j IGIvbGlicnRhc19zcmMvaW5kaWNlcy5jCi1pbmRleCA2Nzc0NGM5Li4yN2Q1MzdjIDEwMDY0NAot LS0tIGEvbGlicnRhc19zcmMvaW5kaWNlcy5jCi0rKysgYi9saWJydGFzX3NyYy9pbmRpY2VzLmMK LUBAIC0zNCw3ICszNCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIGluZGljZXNfZGV2cGF0aFtdID0g Ii9kZXYvcGFwci1pbmRpY2VzIjsKLSAgKiBAcGFyYW0gc3RhdGUgcmVmZXJlbmNlIHRvIHN0YXRl IHZhcmlhYmxlCi0gICogQHJldHVybiAwIG9uIHN1Y2Nlc3MsICEwIG90aGVyd2lzZQotICAqLwot LWludCBydGFzX2dldF9keW5hbWljX3NlbnNvcihpbnQgc2Vuc29yLCB2b2lkICpsb2NfY29kZSwg aW50ICpzdGF0ZSkKLStpbnQgZ2V0X2R5bmFtaWNfc2Vuc29yX2ZhbGxiYWNrKGludCBzZW5zb3Is IHZvaWQgKmxvY19jb2RlLCBpbnQgKnN0YXRlKQotIHsKLSAJdWludDMyX3QgbG9jX3BhID0gMDsK LSAJdm9pZCAqbG9jYnVmOwotQEAgLTIxNyw2ICsyMTcsODUgQEAgc3RhdGljIGludCBnZXRfaW5k aWNlc19jaGFyZGV2KGludCBpc19zZW5zb3IsIGludCB0eXBlLCBjaGFyICp3b3JrYXJlYSwKLSAJ cmV0dXJuIHJ0YXNfc3RhdHVzOwotIH0KLSAKLSsvKgotKyAqIE9ubHkgdG8gYmUgdXNlZCB3aGVu IGNvbnZlcnRpbmcgYW4gYWN0dWFsIGVycm9yIGZyb20gYSBzeXNjYWxsLgotKyAqLwotK3N0YXRp YyBpbnQgY2hhcmRldl9iYWNrY29udmVydF9lcnJubyhpbnQgc2F2ZWRfZXJybm8pCi0rewotKwlj b25zdCBzdHJ1Y3QgewotKwkJaW50IGxpbnV4X2Vycm5vOwotKwkJaW50IHJ0YXNfc3RhdHVzOwot Kwl9IG1hcFtdID0gewotKyNkZWZpbmUgZXJybm9fdG9fc3RhdHVzKGUsIHMpIHsgLmxpbnV4X2Vy cm5vID0gKGUpLCAucnRhc19zdGF0dXMgPSAocyksIH0KLSsJCWVycm5vX3RvX3N0YXR1cyhFSU5W QUwsICAgICAtOTk5OSksCi0rCQllcnJub190b19zdGF0dXMoRVBFUk0sICAgICAgLTkwMDIpLAot KwkJZXJybm9fdG9fc3RhdHVzKEVPUE5PVFNVUFAsICAgIC0zKSwKLSsJCWVycm5vX3RvX3N0YXR1 cyhFSU8sICAgICAgICAgICAtMSksCi0rCQllcnJub190b19zdGF0dXMoRUZBVUxULCAgICAgICAg LTEpLAotKyN1bmRlZiBlcnJub190b19zdGF0dXMKLSsJfTsKLSsKLSsJZm9yIChzaXplX3QgaSA9 IDA7IGkgPCBzaXplb2YobWFwKSAvIHNpemVvZihtYXBbMF0pOyArK2kpCi0rCQlpZiAobWFwW2ld LmxpbnV4X2Vycm5vID09IHNhdmVkX2Vycm5vKQotKwkJCXJldHVybiBtYXBbaV0ucnRhc19zdGF0 dXM7Ci0rCXJldHVybiAtMTsKLSt9Ci0rCi0rc3RhdGljIGludCBkeW5hbWljX2NvbW1vbl9pb19z ZXR1cCh1bnNpZ25lZCBsb25nIGlvY3RhbHZhbCwKLSsJCQkJdm9pZCAqbG9jX2NvZGUsCi0rCQkJ CXN0cnVjdCBwYXByX2luZGljZXNfaW9fYmxvY2sgKmJ1ZikKLSt7Ci0rCXNpemVfdCBsZW5ndGg7 Ci0rCWNoYXIgKmxvY19zdHI7Ci0rCWludCBmZCwgcmV0ID0gLUVJTlZBTDsKLSsKLSsJZmQgPSBv cGVuKGluZGljZXNfZGV2cGF0aCwgT19SRFdSKTsKLSsJaWYgKGZkIDwgMCkgewotKwkJLyoKLSsJ CSAqIFNob3VsZCBub3QgYmUgaGVyZS4gTWF5IGJlIC9kZXYvcGFwci1pbmRpY2VzIHJlbW92ZWQK LSsJCSAqLwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCi0rCWxlbmd0aCA9IGJlMzJ0b2goKih1aW50 MzJfdCAqKWxvY19jb2RlKTsKLSsKLSsJaWYgKGxlbmd0aCA8IDEpIHsKLSsJCWRiZygiSW52YWxp ZCBsZW5ndGgoJWx1KSBvZiBsb2NhdGlvbiBjb2RlIHN0cmluZ1xuIiwgbGVuZ3RoKTsKLSsJCWdv dG8gb3V0OwotKwl9Ci0rCi0rCWxvY19zdHIgPSAoY2hhciAqKSgoY2hhciAqKWxvY19jb2RlICsg c2l6ZW9mKHVpbnQzMl90KSk7Ci0rCWlmIChzdHJsZW4obG9jX3N0cikgIT0gKGxlbmd0aCAtIDEp KSB7Ci0rCQlkYmcoImxvY2F0aW9uIGNvZGUgc3RyaW5nIGxlbmd0aCBpcyBub3QgbWF0Y2hlZCB3 aXRoIHRoZSBwYXNzZWQgbGVuZ3RoKCVsdSlcbiIsIGxlbmd0aCk7Ci0rCQlnb3RvIG91dDsKLSsJ fQotKwotKwltZW1jcHkoJmJ1Zi0+ZHluYW1pY19wYXJhbS5sb2NhdGlvbl9jb2RlX3N0ciwgbG9j X3N0ciwgbGVuZ3RoKTsKLSsKLSsJcmV0ID0gaW9jdGwoZmQsIGlvY3RhbHZhbCwgYnVmKTsKLSsJ aWYgKHJldCAhPSAwKQotKwkJcmV0ID0gY2hhcmRldl9iYWNrY29udmVydF9lcnJubyhlcnJubyk7 Ci0rb3V0OgotKwljbG9zZShmZCk7Ci0rCXJldHVybiByZXQ7Ci0rfQotKwotK3N0YXRpYyBpbnQg Z2V0X2R5bmFtaWNfc2Vuc29yX2NoYXJkZXYoaW50IHNlbnNvciwgdm9pZCAqbG9jX2NvZGUsIGlu dCAqc3RhdGUpCi0rewotKwlzdHJ1Y3QgcGFwcl9pbmRpY2VzX2lvX2Jsb2NrIGJ1ZiA9IHt9Owot KwlpbnQgcmV0OwotKwotKwlidWYuZHluYW1pY19wYXJhbS50b2tlbiA9IHNlbnNvcjsKLSsJcmV0 ID0gZHluYW1pY19jb21tb25faW9fc2V0dXAoUEFQUl9EWU5BTUlDX1NFTlNPUl9JT0NfR0VULAot KwkJCQlsb2NfY29kZSwgJmJ1Zik7Ci0rCWlmIChyZXQgIT0gMCkKLSsJCXJldHVybiByZXQ7Ci0r Ci0rCSpzdGF0ZSA9IGJ1Zi5keW5hbWljX3BhcmFtLnN0YXRlOwotKwotKwlyZXR1cm4gMDsKLSt9 Ci0rCi0gc3RhdGljIGJvb2wgaW5kaWNlc19jYW5fdXNlX2NoYXJkZXYodm9pZCkKLSB7Ci0gCXN0 cnVjdCBzdGF0IHN0YXRidWY7Ci1AQCAtMjM1LDYgKzMxNCw3IEBAIHN0YXRpYyBib29sIGluZGlj ZXNfY2FuX3VzZV9jaGFyZGV2KHZvaWQpCi0gCi0gc3RhdGljIGludCAoKmdldF9pbmRpY2VzX2Zu KShpbnQgaXNfc2Vuc29yLCBpbnQgdHlwZSwgY2hhciAqd29ya2FyZWEsCi0gCQkJCXNpemVfdCBz aXplLCBpbnQgc3RhcnQsIGludCAqbmV4dCk7Ci0rc3RhdGljIGludCAoKmdldF9keW5hbWljX3Nl bnNvcl9mbikoaW50IHNlbnNvciwgdm9pZCAqbG9jX2NvZGUsIGludCAqc3RhdGUpOwotIAotIHN0 YXRpYyB2b2lkIGluZGljZXNfZm5fc2V0dXAodm9pZCkKLSB7Ci1AQCAtMjQyLDYgKzMyMiw4IEBA IHN0YXRpYyB2b2lkIGluZGljZXNfZm5fc2V0dXAodm9pZCkKLSAKLSAJZ2V0X2luZGljZXNfZm4g PSB1c2VfY2hhcmRldiA/Ci0gCQlnZXRfaW5kaWNlc19jaGFyZGV2IDogZ2V0X2luZGljZXNfZmFs bGJhY2s7Ci0rCWdldF9keW5hbWljX3NlbnNvcl9mbiA9IHVzZV9jaGFyZGV2ID8KLSsJCWdldF9k eW5hbWljX3NlbnNvcl9jaGFyZGV2IDogZ2V0X2R5bmFtaWNfc2Vuc29yX2ZhbGxiYWNrOwotIH0K LSAKLSBzdGF0aWMgcHRocmVhZF9vbmNlX3QgaW5kaWNlc19mbl9zZXR1cF9vbmNlID0gUFRIUkVB RF9PTkNFX0lOSVQ7Ci1AQCAtMjUzLDMgKzMzNSw5IEBAIGludCBydGFzX2dldF9pbmRpY2VzKGlu dCBpc19zZW5zb3IsIGludCB0eXBlLCBjaGFyICp3b3JrYXJlYSwgc2l6ZV90IHNpemUsCi0gCXJl dHVybiBnZXRfaW5kaWNlc19mbihpc19zZW5zb3IsIHR5cGUsIHdvcmthcmVhLCBzaXplLAotIAkJ CQlzdGFydCwgbmV4dCk7Ci0gfQotKwotK2ludCBydGFzX2dldF9keW5hbWljX3NlbnNvcihpbnQg c2Vuc29yLCB2b2lkICpsb2NfY29kZSwgaW50ICpzdGF0ZSkKLSt7Ci0rCXB0aHJlYWRfb25jZSgm aW5kaWNlc19mbl9zZXR1cF9vbmNlLCBpbmRpY2VzX2ZuX3NldHVwKTsKLSsJcmV0dXJuIGdldF9k eW5hbWljX3NlbnNvcl9mbihzZW5zb3IsIGxvY19jb2RlLCBzdGF0ZSk7Ci0rfQoKZGlmZiAtLWdp dCBhL2xpYnJ0YXMtMDctbG9ja2Rvd24tY29tcGF0aWJsZS1hYmktcGhhc2UucGF0Y2ggYi9saWJy dGFzLTA3LWxvY2tkb3duLWNvbXBhdGlibGUtYWJpLXBoYXNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA0NTMzNTRiLi4wMDAwMDAwCi0tLSBhL2xpYnJ0YXMtMDctbG9ja2Rv d24tY29tcGF0aWJsZS1hYmktcGhhc2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCww IEBACi1jb21taXQgNWNlNDY4YTkyMTkzNjdlYTNmMWY5ZTJjODdlYjM0MzFhNmNiYTU1ZgotQXV0 aG9yOiBIYXJlbiBNeW5lbmkgPGhhcmVuQGxpbnV4LmlibS5jb20+Ci1EYXRlOiAgIFR1ZSBBcHIg MjkgMjA6MTA6MTcgMjAyNSAtMDcwMAotCi0gICAgbGlicnRhczogVXNlIC9kZXYvcGFwci1pbmRp Y2VzIHdoZW4gYXZhaWxhYmxlIGZvciBzZXQtZHluYW1pYy1pbmRpY2F0b3IKLSAgICAKLSAgICBD aGFuZ2VzIGZvciBydGFzX3NldF9keW5hbWljX2luZGljYXRvcigpIHRvIHVzZSBuZXcga2VybmVs Ci0gICAgaW50ZXJmYWNlIHByb3ZpZGVkIGJ5IC9kZXYvcGFwci1pbmRpY2VzIGVudHJ5LiBUaGUg a2VybmVsIHByb3ZpZGVzCi0gICAgUEFQUl9EWU5BTUlDX0lORElDQVRPUl9JT0NfU0VUIGlvY3Rs IGZvciAvZGV2L3BhcHItaW5kaWNlcyB0bwotICAgIGV4ZWN1dGUgaWJtLHNldC1keW5hbWljLWlu ZGljYXRvciBSVEFTIENhbGwuCi0gICAgCi0gICAgSWYgL2Rldi9wYXByLWluZGljZXMgZW50cnkg aXMgYXZhaWxhYmxlLCB0aGUgbmV3IGtlcm5lbCBpbnRlcmZhY2UKLSAgICBpcyB1c2VkIHdpdGgg dGhlIGZvbGxvd2luZyBwcm9ncmFtbWluZyBtb2RlbDoKLSAgICAKLSAgICAgZmQgPSBvcGVuKCIv ZGV2L3BhcHItaW5kaWNlcyIsIE9fUkRXUik7Ci0gICAgIGNvcHkgbG9jYXRpb24tY29kZSB0bwot ICAgICAgICAgICAgcGFwcl9pbmRpY2VzX2lvX2Jsb2NrLmR5bmFtaWNfcGFyYW0ubG9jYXRpb25f Y29kZV9zdHIKLSAgICAgcGFwcl9pbmRpY2VzX2lvX2Jsb2NrLmR5bmFtaWNfcGFyYW0udG9rZW4g PSB0b2tlbi12YWw7Ci0gICAgIHBhcHJfaW5kaWNlc19pb19ibG9jay5keW5hbWljX3BhcmFtLnN0 YXRlID0gbmV3LXN0YXRlOwotICAgICByZXQgPSBpb2N0bChmZCwgUEFQUl9EWU5BTUlDX0lORElD QVRPUl9JT0NfU0VULAotICAgICAgICAgICAgcGFwcl9pbmRpY2VzX2lvX2Jsb2NrKTsKLSAgICAK LSAgICBTaWduZWQtb2ZmLWJ5OiBIYXJlbiBNeW5lbmkgPGhhcmVuQGxpbnV4LmlibS5jb20+Ci0g ICAgU2lnbmVkLW9mZi1ieTogVHlyZWwgRGF0d3lsZXIgPHR5cmVsZEBsaW51eC5pYm0uY29tPgot Ci1kaWZmIC0tZ2l0IGEvbGlicnRhc19zcmMvaW5kaWNlcy5jIGIvbGlicnRhc19zcmMvaW5kaWNl cy5jCi1pbmRleCAyN2Q1MzdjLi44NzVjNTc2IDEwMDY0NAotLS0tIGEvbGlicnRhc19zcmMvaW5k aWNlcy5jCi0rKysgYi9saWJydGFzX3NyYy9pbmRpY2VzLmMKLUBAIC03NSw3ICs3NSw3IEBAIGlu dCBnZXRfZHluYW1pY19zZW5zb3JfZmFsbGJhY2soaW50IHNlbnNvciwgdm9pZCAqbG9jX2NvZGUs IGludCAqc3RhdGUpCi0gICogQHBhcmFtIGxvY19jb2RlCi0gICogQHJldHVybiAwIG9uIHN1Y2Nl c3MsICEwIG90aGVyd2lzZQotICAqLwotLWludCBydGFzX3NldF9keW5hbWljX2luZGljYXRvcihp bnQgaW5kaWNhdG9yLCBpbnQgbmV3X3ZhbHVlLCB2b2lkICpsb2NfY29kZSkKLStpbnQgc2V0X2R5 bmFtaWNfaW5kaWNhdG9yX2ZhbGxiYWNrKGludCBpbmRpY2F0b3IsIGludCBuZXdfdmFsdWUsIHZv aWQgKmxvY19jb2RlKQotIHsKLSAJdWludDMyX3QgbG9jX3BhID0gMDsKLSAJdm9pZCAqbG9jYnVm OwotQEAgLTI5Niw2ICsyOTYsMjAgQEAgc3RhdGljIGludCBnZXRfZHluYW1pY19zZW5zb3JfY2hh cmRldihpbnQgc2Vuc29yLCB2b2lkICpsb2NfY29kZSwgaW50ICpzdGF0ZSkKLSAJcmV0dXJuIDA7 Ci0gfQotIAotK3N0YXRpYyBpbnQgc2V0X2R5bmFtaWNfaW5kaWNhdG9yX2NoYXJkZXYoaW50IGlu ZGljYXRvciwgaW50IG5ld192YWx1ZSwKLSsJCQkJCXZvaWQgKmxvY19jb2RlKQotK3sKLSsJc3Ry dWN0IHBhcHJfaW5kaWNlc19pb19ibG9jayBidWYgPSB7fTsKLSsJaW50IHJldDsKLSsKLSsJYnVm LmR5bmFtaWNfcGFyYW0udG9rZW4gPSBpbmRpY2F0b3I7Ci0rCWJ1Zi5keW5hbWljX3BhcmFtLnN0 YXRlID0gbmV3X3ZhbHVlOwotKwlyZXQgPSBkeW5hbWljX2NvbW1vbl9pb19zZXR1cChQQVBSX0RZ TkFNSUNfSU5ESUNBVE9SX0lPQ19TRVQsCi0rCQkJCQlsb2NfY29kZSwgJmJ1Zik7Ci0rCi0rCXJl dHVybiByZXQ7Ci0rfQotKwotIHN0YXRpYyBib29sIGluZGljZXNfY2FuX3VzZV9jaGFyZGV2KHZv aWQpCi0gewotIAlzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotQEAgLTMxNSw2ICszMjksOCBAQCBzdGF0 aWMgYm9vbCBpbmRpY2VzX2Nhbl91c2VfY2hhcmRldih2b2lkKQotIHN0YXRpYyBpbnQgKCpnZXRf aW5kaWNlc19mbikoaW50IGlzX3NlbnNvciwgaW50IHR5cGUsIGNoYXIgKndvcmthcmVhLAotIAkJ CQlzaXplX3Qgc2l6ZSwgaW50IHN0YXJ0LCBpbnQgKm5leHQpOwotIHN0YXRpYyBpbnQgKCpnZXRf ZHluYW1pY19zZW5zb3JfZm4pKGludCBzZW5zb3IsIHZvaWQgKmxvY19jb2RlLCBpbnQgKnN0YXRl KTsKLStzdGF0aWMgaW50ICgqc2V0X2R5bmFtaWNfaW5kaWNhdG9yX2ZuKShpbnQgaW5kaWNhdG9y LCBpbnQgbmV3X3ZhbHVlLAotKwkJCQl2b2lkICpsb2NfY29kZSk7Ci0gCi0gc3RhdGljIHZvaWQg aW5kaWNlc19mbl9zZXR1cCh2b2lkKQotIHsKLUBAIC0zMjQsNiArMzQwLDkgQEAgc3RhdGljIHZv aWQgaW5kaWNlc19mbl9zZXR1cCh2b2lkKQotIAkJZ2V0X2luZGljZXNfY2hhcmRldiA6IGdldF9p bmRpY2VzX2ZhbGxiYWNrOwotIAlnZXRfZHluYW1pY19zZW5zb3JfZm4gPSB1c2VfY2hhcmRldiA/ Ci0gCQlnZXRfZHluYW1pY19zZW5zb3JfY2hhcmRldiA6IGdldF9keW5hbWljX3NlbnNvcl9mYWxs YmFjazsKLSsJc2V0X2R5bmFtaWNfaW5kaWNhdG9yX2ZuID0gdXNlX2NoYXJkZXYgPwotKwkJc2V0 X2R5bmFtaWNfaW5kaWNhdG9yX2NoYXJkZXYgOiBzZXRfZHluYW1pY19pbmRpY2F0b3JfZmFsbGJh Y2s7Ci0rCi0gfQotIAotIHN0YXRpYyBwdGhyZWFkX29uY2VfdCBpbmRpY2VzX2ZuX3NldHVwX29u Y2UgPSBQVEhSRUFEX09OQ0VfSU5JVDsKLUBAIC0zNDEsMyArMzYwLDkgQEAgaW50IHJ0YXNfZ2V0 X2R5bmFtaWNfc2Vuc29yKGludCBzZW5zb3IsIHZvaWQgKmxvY19jb2RlLCBpbnQgKnN0YXRlKQot IAlwdGhyZWFkX29uY2UoJmluZGljZXNfZm5fc2V0dXBfb25jZSwgaW5kaWNlc19mbl9zZXR1cCk7 Ci0gCXJldHVybiBnZXRfZHluYW1pY19zZW5zb3JfZm4oc2Vuc29yLCBsb2NfY29kZSwgc3RhdGUp OwotIH0KLSsKLStpbnQgcnRhc19zZXRfZHluYW1pY19pbmRpY2F0b3IoaW50IGluZGljYXRvciwg aW50IG5ld192YWx1ZSwgdm9pZCAqbG9jX2NvZGUpCi0rewotKwlwdGhyZWFkX29uY2UoJmluZGlj ZXNfZm5fc2V0dXBfb25jZSwgaW5kaWNlc19mbl9zZXR1cCk7Ci0rCXJldHVybiBzZXRfZHluYW1p Y19pbmRpY2F0b3JfZm4oaW5kaWNhdG9yLCBuZXdfdmFsdWUsIGxvY19jb2RlKTsKLSt9CgpkaWZm IC0tZ2l0IGEvbGlicnRhcy0wOC1sb2NrZG93bi1jb21wYXRpYmxlLWFiaS1waGFzZS5wYXRjaCBi L2xpYnJ0YXMtMDgtbG9ja2Rvd24tY29tcGF0aWJsZS1hYmktcGhhc2UucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlZmM4YWYuLjAwMDAwMDAKLS0tIGEvbGlicnRhcy0wOC1s b2NrZG93bi1jb21wYXRpYmxlLWFiaS1waGFzZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4 MiArMCwwIEBACi1jb21taXQgZGZkY2I0MTQ0OTgzMmJmOGExMGQwZTIxZmM3OTQzNWE4NzE5Mjcx MgotQXV0aG9yOiBIYXJlbiBNeW5lbmkgPGhhcmVuQGxpbnV4LmlibS5jb20+Ci1EYXRlOiAgIFR1 ZSBBcHIgMjkgMjA6MTA6MTggMjAyNSAtMDcwMAotCi0gICAgbGlicnRhczogTW92ZSBwaHlzaWNh bC1hdHRlc3RhdGlvbiBydGFzIGNhbGwgY29kZSB0byBzZXBhcmF0ZSBmaWxlCi0gICAgCi0gICAg TmV3IGtlcm5lbCBpbnRlcmZhY2VzIHRvIHN1cHBvcnQgc3lzdGVtIGxvY2tkb3duIHdpbGwgYmUg YWRkZWQgZm9yCi0gICAgdGhpcyBSVEFTIGNhbGwuIFNvIG1vdmUgdGhlIHBoeXNpY2FsLWF0dGVz dGF0aW9uIHJ0YXMgY2FsbCBjb2RlIHRvCi0gICAgc2VwYXJhdGUgZmlsZSB0byBhZGQgY29kZSBm b3IgbmV3IGludGVyZmFjZXMuCi0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogSGFyZW4gTXluZW5p IDxoYXJlbkBsaW51eC5pYm0uY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFR5cmVsIERhdHd5bGVy IDx0eXJlbGRAbGludXguaWJtLmNvbT4KLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFr ZWZpbGUuYW0KLWluZGV4IDAyZDYxODQuLmU2MDVkOTggMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5h bQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0zNCw3ICszNCw4IEBAIGxpYnJ0YXNfbGFfU09VUkNF UyA9IFwKLSAJbGlicnRhc19zcmMvc3lzY2FsbF9jYWxscy5jIFwKLSAJbGlicnRhc19zcmMvc3lz Y2FsbF9ybW8uYyBcCi0gCWxpYnJ0YXNfc3JjL3N5c3Bhcm0uYyBcCi0tCWxpYnJ0YXNfc3JjL2lu ZGljZXMuYwotKwlsaWJydGFzX3NyYy9pbmRpY2VzLmMgXAotKwlsaWJydGFzX3NyYy9waHlzaWNh bC1hdHRlc3RhdGlvbi5jCi0gCi0gbGlicmFyeV9pbmNsdWRlX0hFQURFUlMgKz0gbGlicnRhc19z cmMvbGlicnRhcy5oCi0gbm9pbnN0X0hFQURFUlMgKz0gXAotZGlmZiAtLWdpdCBhL2xpYnJ0YXNf c3JjL3BoeXNpY2FsLWF0dGVzdGF0aW9uLmMgYi9saWJydGFzX3NyYy9waHlzaWNhbC1hdHRlc3Rh dGlvbi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uM2UzNmFmMwotLS0t IC9kZXYvbnVsbAotKysrIGIvbGlicnRhc19zcmMvcGh5c2ljYWwtYXR0ZXN0YXRpb24uYwotQEAg LTAsMCArMSw3OCBAQAotKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMS1vci1s YXRlcgotKyAgCi0rLy8gU3VwcG9ydCBmb3IgYWNjZXNzaW5nIGlibSxwaHlzaWNhbC1hdHRlc3Rh dGlvbiBkYXRhCi0rLy8gdmlhIC9kZXYvcGFwci1waHktYXR0ZXN0YXRpb24gb3IgdGhlIGxlZ2Fj eSBydGFzKCkgc3lzY2FsbC4KLSsKLSsjaW5jbHVkZSA8c3RkYXJnLmg+Ci0rI2luY2x1ZGUgPHN0 cmluZy5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKyNp bmNsdWRlIDxzeXMvc3lzY2FsbC5oPgotKyNpbmNsdWRlIDxsaW51eC91bmlzdGQuaD4KLSsjaW5j bHVkZSA8bGludXgvdHlwZXMuaD4KLSsjaW5jbHVkZSAiaW50ZXJuYWwuaCIKLSsjaW5jbHVkZSAi bGlicnRhcy5oIgotKwotKy8qKgotKyAqIHJ0YXNfcGh5c2ljYWxfYXR0ZXN0YXRpb24KLSsgKiBA YnJpZWYgSW50ZXJmYWNlIGZvciBpYm0scGh5c2ljYWwtYXR0ZXN0YXRpb24gcnRhcyBjYWxsLgot KyAqCi0rICogQHBhcmFtIHdvcmthcmVhIGlucHV0L291dHB1dCB3b3JrIGFyZWEgZm9yIHJ0YXMg Y2FsbAotKyAqIEBwYXJhbSBzZXFfbnVtIHNlcXVlbmNlIG51bWJlciBvZiB0aGUgcnRhcyBjYWxs Ci0rICogQHBhcmFtIG5leHRfc2VxX251bSBuZXh0IHNlcXVlbmNlIG51bWJlcgotKyAqIEBwYXJh bSB3b3JrX2FyZWFfYnl0ZXMgc2l6ZSBvZiB3b3JrIGFyZWEKLSsgKiBAcmV0dXJuIDAgb24gc3Vj Y2VzcywgITAgb24gZmFpbHVyZQotKyAqLwotK2ludCBydGFzX3BoeXNpY2FsX2F0dGVzdGF0aW9u KGNoYXIgKndvcmthcmVhLCBpbnQgc2VxX251bSwgaW50ICpuZXh0X3NlcV9udW0sCi0rCQkJICAg ICAgaW50ICp3b3JrX2FyZWFfYnl0ZXMpCi0rewotKwl1aW50MzJfdCB3b3JrYXJlYV9wYTsKLSsJ dWludDY0X3QgZWxhcHNlZCA9IDA7Ci0rCXZvaWQgKmtlcm5idWY7Ci0rCWludCBrYnVmX3N6ID0g V09SS19BUkVBX1NJWkU7Ci0rCWludCByYywgc3RhdHVzOwotKwlpbnQgcmVzcF9ieXRlcyA9ICp3 b3JrX2FyZWFfYnl0ZXM7Ci0rCi0rCXJjID0gc2FuaXR5X2NoZWNrKCk7Ci0rCWlmIChyYykKLSsJ CXJldHVybiByYzsKLSsKLSsJLyogQ2FsbGVyIHByb3ZpZGVkIG1vcmUgZGF0YSB0aGFuIEZXIGNh biBoYW5kbGUgKi8KLSsJaWYgKCp3b3JrX2FyZWFfYnl0ZXMgPT0gMCB8fAotKwkgICAgKndvcmtf YXJlYV9ieXRlcyA+IGtidWZfc3opCi0rCQlyZXR1cm4gUlRBU19JT19BU1NFUlQ7Ci0rCi0rCXJj ID0gcnRhc19nZXRfcm1vX2J1ZmZlcihrYnVmX3N6LCAma2VybmJ1ZiwgJndvcmthcmVhX3BhKTsK LSsJaWYgKHJjKQotKwkJcmV0dXJuIHJjOwotKwltZW1jcHkoa2VybmJ1Ziwgd29ya2FyZWEsICp3 b3JrX2FyZWFfYnl0ZXMpOwotKwotKwlkbyB7Ci0rCQlyYyA9IHJ0YXNfY2FsbCgiaWJtLHBoeXNp Y2FsLWF0dGVzdGF0aW9uIiwgMywgMywKLSsJCQkgICAgICAgaHRvYmUzMih3b3JrYXJlYV9wYSks IGh0b2JlMzIoa2J1Zl9zeiksCi0rCQkJICAgICAgIGh0b2JlMzIoc2VxX251bSksCi0rCQkJICAg ICAgICZzdGF0dXMsIG5leHRfc2VxX251bSwgJnJlc3BfYnl0ZXMpOwotKwkJaWYgKHJjIDwgMCkK LSsJCQlicmVhazsKLSsKLSsJCXJjID0gaGFuZGxlX2RlbGF5KHN0YXR1cywgJmVsYXBzZWQpOwot Kwl9IHdoaWxlIChyYyA9PSBDQUxMX0FHQUlOKTsKLSsKLSsJKm5leHRfc2VxX251bSA9IGJlMzJ0 b2goKm5leHRfc2VxX251bSk7Ci0rCi0rCS8qIEZXIHJldHVybmVkIG1vcmUgZGF0YSB0aGFuIHdl IGNhbiBoYW5kbGUgKi8KLSsJaWYgKGJlMzJ0b2gocmVzcF9ieXRlcykgPiAodW5zaWduZWQgaW50 KSp3b3JrX2FyZWFfYnl0ZXMpIHsKLSsJCSh2b2lkKXJ0YXNfZnJlZV9ybW9fYnVmZmVyKGtlcm5i dWYsIHdvcmthcmVhX3BhLCBrYnVmX3N6KTsKLSsJCXJldHVybiBSVEFTX0lPX0FTU0VSVDsKLSsJ fQotKwotKwkqd29ya19hcmVhX2J5dGVzID0gYmUzMnRvaChyZXNwX2J5dGVzKTsKLSsKLSsJaWYg KHJjID09IDApCi0rCQltZW1jcHkod29ya2FyZWEsIGtlcm5idWYsICp3b3JrX2FyZWFfYnl0ZXMp OwotKwotKwkodm9pZClydGFzX2ZyZWVfcm1vX2J1ZmZlcihrZXJuYnVmLCB3b3JrYXJlYV9wYSwg a2J1Zl9zeik7Ci0rCi0rCXJldHVybiByYyA/IHJjIDogc3RhdHVzOwotK30KLSsKLWRpZmYgLS1n aXQgYS9saWJydGFzX3NyYy9zeXNjYWxsX2NhbGxzLmMgYi9saWJydGFzX3NyYy9zeXNjYWxsX2Nh bGxzLmMKLWluZGV4IDU3M2E0YzMuLmMxZDNhOWMgMTAwNjQ0Ci0tLS0gYS9saWJydGFzX3NyYy9z eXNjYWxsX2NhbGxzLmMKLSsrKyBiL2xpYnJ0YXNfc3JjL3N5c2NhbGxfY2FsbHMuYwotQEAgLTk5 MCw2NiArOTkwLDMgQEAgaW50IHJ0YXNfdXBkYXRlX3Byb3BlcnRpZXMoY2hhciAqd29ya2FyZWEs IHVuc2lnbmVkIGludCBzY29wZSkKLSAJZGJnKCIoJXApICV1ID0gJWRcbiIsIHdvcmthcmVhLCBz Y29wZSwgcmMgPyByYyA6IHN0YXR1cyk7Ci0gCXJldHVybiByYyA/IHJjIDogc3RhdHVzOwotIH0K LS0KLS0vKioKLS0gKiBydGFzX3BoeXNpY2FsX2F0dGVzdGF0aW9uCi0tICogQGJyaWVmIEludGVy ZmFjZSBmb3IgaWJtLHBoeXNpY2FsLWF0dGVzdGF0aW9uIHJ0YXMgY2FsbC4KLS0gKgotLSAqIEBw YXJhbSB3b3JrYXJlYSBpbnB1dC9vdXRwdXQgd29yayBhcmVhIGZvciBydGFzIGNhbGwKLS0gKiBA cGFyYW0gc2VxX251bSBzZXF1ZW5jZSBudW1iZXIgb2YgdGhlIHJ0YXMgY2FsbAotLSAqIEBwYXJh bSBuZXh0X3NlcV9udW0gbmV4dCBzZXF1ZW5jZSBudW1iZXIKLS0gKiBAcGFyYW0gd29ya19hcmVh X2J5dGVzIHNpemUgb2Ygd29yayBhcmVhCi0tICogQHJldHVybiAwIG9uIHN1Y2Nlc3MsICEwIG9u IGZhaWx1cmUKLS0gKi8KLS1pbnQgcnRhc19waHlzaWNhbF9hdHRlc3RhdGlvbihjaGFyICp3b3Jr YXJlYSwgaW50IHNlcV9udW0sIGludCAqbmV4dF9zZXFfbnVtLAotLQkJCSAgICAgIGludCAqd29y a19hcmVhX2J5dGVzKQotLXsKLS0JdWludDMyX3Qgd29ya2FyZWFfcGE7Ci0tCXVpbnQ2NF90IGVs YXBzZWQgPSAwOwotLQl2b2lkICprZXJuYnVmOwotLQlpbnQga2J1Zl9zeiA9IFdPUktfQVJFQV9T SVpFOwotLQlpbnQgcmMsIHN0YXR1czsKLS0JaW50IHJlc3BfYnl0ZXMgPSAqd29ya19hcmVhX2J5 dGVzOwotLQotLQlyYyA9IHNhbml0eV9jaGVjaygpOwotLQlpZiAocmMpCi0tCQlyZXR1cm4gcmM7 Ci0tCi0tCS8qIENhbGxlciBwcm92aWRlZCBtb3JlIGRhdGEgdGhhbiBGVyBjYW4gaGFuZGxlICov Ci0tCWlmICgqd29ya19hcmVhX2J5dGVzID09IDAgfHwKLS0JICAgICp3b3JrX2FyZWFfYnl0ZXMg PiBrYnVmX3N6KQotLQkJcmV0dXJuIFJUQVNfSU9fQVNTRVJUOwotLQotLQlyYyA9IHJ0YXNfZ2V0 X3Jtb19idWZmZXIoa2J1Zl9zeiwgJmtlcm5idWYsICZ3b3JrYXJlYV9wYSk7Ci0tCWlmIChyYykK LS0JCXJldHVybiByYzsKLS0JbWVtY3B5KGtlcm5idWYsIHdvcmthcmVhLCAqd29ya19hcmVhX2J5 dGVzKTsKLS0KLS0JZG8gewotLQkJcmMgPSBydGFzX2NhbGwoImlibSxwaHlzaWNhbC1hdHRlc3Rh dGlvbiIsIDMsIDMsCi0tCQkJICAgICAgIGh0b2JlMzIod29ya2FyZWFfcGEpLCBodG9iZTMyKGti dWZfc3opLAotLQkJCSAgICAgICBodG9iZTMyKHNlcV9udW0pLAotLQkJCSAgICAgICAmc3RhdHVz LCBuZXh0X3NlcV9udW0sICZyZXNwX2J5dGVzKTsKLS0JCWlmIChyYyA8IDApCi0tCQkJYnJlYWs7 Ci0tCi0tCQlyYyA9IGhhbmRsZV9kZWxheShzdGF0dXMsICZlbGFwc2VkKTsKLS0JfSB3aGlsZSAo cmMgPT0gQ0FMTF9BR0FJTik7Ci0tCi0tCSpuZXh0X3NlcV9udW0gPSBiZTMydG9oKCpuZXh0X3Nl cV9udW0pOwotLQotLQkvKiBGVyByZXR1cm5lZCBtb3JlIGRhdGEgdGhhbiB3ZSBjYW4gaGFuZGxl ICovCi0tCWlmIChiZTMydG9oKHJlc3BfYnl0ZXMpID4gKHVuc2lnbmVkIGludCkqd29ya19hcmVh X2J5dGVzKSB7Ci0tCQkodm9pZClydGFzX2ZyZWVfcm1vX2J1ZmZlcihrZXJuYnVmLCB3b3JrYXJl YV9wYSwga2J1Zl9zeik7Ci0tCQlyZXR1cm4gUlRBU19JT19BU1NFUlQ7Ci0tCX0KLS0KLS0JKndv cmtfYXJlYV9ieXRlcyA9IGJlMzJ0b2gocmVzcF9ieXRlcyk7Ci0tCi0tCWlmIChyYyA9PSAwKQot LQkJbWVtY3B5KHdvcmthcmVhLCBrZXJuYnVmLCAqd29ya19hcmVhX2J5dGVzKTsKLS0KLS0JKHZv aWQpcnRhc19mcmVlX3Jtb19idWZmZXIoa2VybmJ1Ziwgd29ya2FyZWFfcGEsIGtidWZfc3opOwot LQotLQlyZXR1cm4gcmMgPyByYyA6IHN0YXR1czsKLS19CgpkaWZmIC0tZ2l0IGEvbGlicnRhcy0w OS1lbmQtbG9ja2Rvd24tY29tcGF0aWJsZS1hYmktcGhhc2UucGF0Y2ggYi9saWJydGFzLTA5LWVu ZC1sb2NrZG93bi1jb21wYXRpYmxlLWFiaS1waGFzZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggZGU3OGY4Zi4uMDAwMDAwMAotLS0gYS9saWJydGFzLTA5LWVuZC1sb2NrZG93 bi1jb21wYXRpYmxlLWFiaS1waGFzZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0NyArMCww IEBACi1jb21taXQgY2FjMWMyOTJiZTU2YWE5YWE4OWQ5NjQ5MDgwMTI4NWM3MDcwMDVjNwotQXV0 aG9yOiBIYXJlbiBNeW5lbmkgPGhhcmVuQGxpbnV4LmlibS5jb20+Ci1EYXRlOiAgIFR1ZSBBcHIg MjkgMjA6MTA6MTkgMjAyNSAtMDcwMAotCi0gICAgbGlicnRhczogVXNlIGtlcm5lbCBpbnRlcmZh Y2Ugd2hlbiBhdmFpbGFibGUgZm9yIGlibSxwaHlzaWNhbC1hdHRlc3RhdGlvbgotICAgIAotICAg IHJ0YXNfcGh5c2ljYWxfYXR0ZXN0YXRpb24oKSB1c2VzIHN5c19ydGFzKCkgdG8gb2J0YWluIHJl c3BvbnNlCi0gICAgYnVmZmVyIGZvciBlYWNoIGF0dGVzdGF0aW9uIGNvbW1hbmQuIFRoaXMgUlRB UyBmdW5jdGlvbiBwYXNzZXMKLSAgICBSVEFTIHdvcmsgYXJlYSB0byBzZW5kIGlucHV0IGF0dGVz dGF0aW9uIGNvbW1hbmQgYW5kIHRvIHJldHJpZXZlCi0gICAgcmVzcG9uc2UgYnVmZmVyLiBCdXQg dGhlIGFsbG9jYXRpb24gb2Ygd29yayBhcmVhIGlzIHByb2hpYml0ZWQKLSAgICB1bmRlciBzeXN0 ZW0gbG9ja2Rvd24uCi0gICAgCi0gICAgVGhpcyBwYXRjaCBhZGRzIGNoYW5nZXMgdG8gdXNlIG5l dyBrZXJuZWwgQUJJIGlmCi0gICAgL2Rldi9wYXByLXBoeXNpY2FsLWF0dGVzdGF0aW9uIGlzIGF2 YWlsYWJsZS4gRmlyc3QgZXhlY3V0aW9uIG9mCi0gICAgcnRhc19waHlzaWNhbF9hdHRlc3RhdGlv bigpIHNldHMgdGhlIG5ldyBBUEkgaWYgdGhlIGRldmljZSBub2RlCi0gICAgaXMgYXZhaWxhYmxl LCBvdGhlcmlzZSBleGVjdXRlIHVzZXIgc3BhY2UgaW50ZXJmYWNlLgotICAgIAotICAgIE9wZW4g L2Rldi9wYXByLXBoeXNpY2FsLWF0dGVzdGF0aW9uIGFuZCBvYnRhaW4gRkQgd2l0aAotICAgIFBB UFJfUEhZX0FUVEVTVF9JT0NfSEFORExFIGlvY3RsLiBUaGUga2VybmVsIGNvbXBsZXRlcyB0aGUg UlRBUwotICAgIHNlcXVlbmNlIGluIHRoaXMgaW9jdGwgYW5kIGV4cG9zZXMgdGhlIHJlcG9uc2Ug YnVmZmVyIHdpdGggdGhpcwotICAgIEZELiBUaGUgdXNlciBzcGFjZSByZWFkcyB0aGUgY29tcGxl dGUgYnVmZmVyIHdpdGggcmVhZCgpIGNhbGxzLgotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IEhh cmVuIE15bmVuaSA8aGFyZW5AbGludXguaWJtLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBUeXJl bCBEYXR3eWxlciA8dHlyZWxkQGxpbnV4LmlibS5jb20+Ci0KLWRpZmYgLS1naXQgYS9NYWtlZmls ZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBlNjA1ZDk4Li5jY2Q3ZWU3IDEwMDY0NAotLS0tIGEv TWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNDQsNyArNDQsOCBAQCBub2luc3Rf SEVBREVSUyArPSBcCi0gCWxpYnJ0YXNfc3JjL3BhcHItc3lzcGFybS5oIFwKLSAJbGlicnRhc19z cmMvcGFwci12cGQuaCBcCi0gCWxpYnJ0YXNfc3JjL3BhcHItcGxhdGZvcm0tZHVtcC5oIFwKLS0J bGlicnRhc19zcmMvcGFwci1pbmRpY2VzLmgKLSsJbGlicnRhc19zcmMvcGFwci1pbmRpY2VzLmgg XAotKwlsaWJydGFzX3NyYy9wYXByLXBoeXNpY2FsLWF0dGVzdGF0aW9uLmgKLSAKLSAjIFNlZSAi VXBkYXRpbmcgbGlicmFyeSB2ZXJzaW9uIGluZm9ybWF0aW9uIiBpbiB0aGUgbGlidG9vbCBtYW51 YWwgZm9yCi0gIyBob3cgdG8gbWFpbnRhaW4gdGhlc2UgdmFsdWVzLiBUaGV5IGFyZSAqbm90KiB0 aWVkIHRvIHRoZSByZWxlYXNlCi1kaWZmIC0tZ2l0IGEvbGlicnRhc19zcmMvcGFwci1waHlzaWNh bC1hdHRlc3RhdGlvbi5oIGIvbGlicnRhc19zcmMvcGFwci1waHlzaWNhbC1hdHRlc3RhdGlvbi5o Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMzJiNGJhZQotLS0tIC9kZXYv bnVsbAotKysrIGIvbGlicnRhc19zcmMvcGFwci1waHlzaWNhbC1hdHRlc3RhdGlvbi5oCi1AQCAt MCwwICsxLDMxIEBACi0rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgV0lUSCBM aW51eC1zeXNjYWxsLW5vdGUgKi8KLSsjaWZuZGVmIF9VQVBJX1BBUFJfUEhZU0lDQUxfQVRURVNU QVRJT05fSF8KLSsjZGVmaW5lIF9VQVBJX1BBUFJfUEhZU0lDQUxfQVRURVNUQVRJT05fSF8KLSsK LSsjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSsjaW5jbHVkZSA8YXNtL2lvY3RsLmg+Ci0rI2lu Y2x1ZGUgInBhcHItbWlzY2Rldi5oIgotKwotKyNkZWZpbmUgUEFQUl9QSFlBVFRFU1RfTUFYX0lO UFVUIDQwODQgLyogTWF4IDRLIGJ1ZmZlcjogNEstMTIgKi8KLSsKLSsvKgotKyAqIERlZmluZWQg aW4gUEFQUiAyLjEzKyAyMS42IEF0dGVzdGF0aW9uIENvbW1hbmQgU3RydWN0dXJlcy4KLSsgKiBV c2VyIHNwYWNlIHBhc3MgdGhpcyBzdHJ1Y3QgYW5kIHRoZSBtYXggc2l6ZSBzaG91bGQgYmUgNEsu Ci0rICovCi0rc3RydWN0IHBhcHJfcGh5X2F0dGVzdF9pb19ibG9jayB7Ci0rCV9fdTggdmVyc2lv bjsKLSsJX191OCBjb21tYW5kOwotKwlfX3U4IFRDR19tYWpvcl92ZXI7Ci0rCV9fdTggVENHX21p bm9yX3ZlcjsKLSsJX19iZTMyIGxlbmd0aDsKLSsJX19iZTMyIGNvcnJlbGF0b3I7Ci0rCV9fdTgg cGF5bG9hZFtQQVBSX1BIWUFUVEVTVF9NQVhfSU5QVVRdOwotK307Ci0rCi0rLyoKLSsgKiBpb2N0 bCBmb3IgL2Rldi9wYXByLXBoeXNpY2FsLWF0dGVzdGF0aW9uLiBSZXR1cm5zIGEgYXR0ZXN0YXRp b24KLSsgKiBjb21tYW5kIGZkIGhhbmRsZQotKyAqLwotKyNkZWZpbmUgUEFQUl9QSFlfQVRURVNU X0lPQ19IQU5ETEUgX0lPVyhQQVBSX01JU0NERVZfSU9DX0lELCA4LCBzdHJ1Y3QgcGFwcl9waHlf YXR0ZXN0X2lvX2Jsb2NrKQotKwotKyNlbmRpZiAvKiBfVUFQSV9QQVBSX1BIWVNJQ0FMX0FUVEVT VEFUSU9OX0hfICovCi1kaWZmIC0tZ2l0IGEvbGlicnRhc19zcmMvcGh5c2ljYWwtYXR0ZXN0YXRp b24uYyBiL2xpYnJ0YXNfc3JjL3BoeXNpY2FsLWF0dGVzdGF0aW9uLmMKLWluZGV4IDNlMzZhZjMu LjQ4MTA4YTAgMTAwNjQ0Ci0tLS0gYS9saWJydGFzX3NyYy9waHlzaWNhbC1hdHRlc3RhdGlvbi5j Ci0rKysgYi9saWJydGFzX3NyYy9waHlzaWNhbC1hdHRlc3RhdGlvbi5jCi1AQCAtMSwyMSArMSwy NyBAQAotIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMS1vci1sYXRlcgotLSAg Ci0rCi0gLy8gU3VwcG9ydCBmb3IgYWNjZXNzaW5nIGlibSxwaHlzaWNhbC1hdHRlc3RhdGlvbiBk YXRhCi0gLy8gdmlhIC9kZXYvcGFwci1waHktYXR0ZXN0YXRpb24gb3IgdGhlIGxlZ2FjeSBydGFz KCkgc3lzY2FsbC4KLSAKLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5o PgotICNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotKyNpbmNsdWRlIDxw dGhyZWFkLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rI2luY2x1ZGUgPHN0ZGJvb2wuaD4K LSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0rI2luY2x1 ZGUgPHN5cy9zdGF0Lmg+Ci0rI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotICNpbmNsdWRlIDxsaW51 eC91bmlzdGQuaD4KLSAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSAjaW5jbHVkZSAiaW50ZXJu YWwuaCIKLSAjaW5jbHVkZSAibGlicnRhcy5oIgotKyNpbmNsdWRlICJwYXByLXBoeXNpY2FsLWF0 dGVzdGF0aW9uLmgiCi0gCi0gLyoqCi0tICogcnRhc19waHlzaWNhbF9hdHRlc3RhdGlvbgotLSAq IEBicmllZiBJbnRlcmZhY2UgZm9yIGlibSxwaHlzaWNhbC1hdHRlc3RhdGlvbiBydGFzIGNhbGwu Ci0rICogaWJtLHBoeXNpY2FsLWF0dGVzdGF0aW9uIFJUQVMgY2FsbCBmcm9tIHVzZXIgc3BhY2UK LSAgKgotICAqIEBwYXJhbSB3b3JrYXJlYSBpbnB1dC9vdXRwdXQgd29yayBhcmVhIGZvciBydGFz IGNhbGwKLSAgKiBAcGFyYW0gc2VxX251bSBzZXF1ZW5jZSBudW1iZXIgb2YgdGhlIHJ0YXMgY2Fs bAotQEAgLTIzLDcgKzI5LDcgQEAKLSAgKiBAcGFyYW0gd29ya19hcmVhX2J5dGVzIHNpemUgb2Yg d29yayBhcmVhCi0gICogQHJldHVybiAwIG9uIHN1Y2Nlc3MsICEwIG9uIGZhaWx1cmUKLSAgKi8K LS1pbnQgcnRhc19waHlzaWNhbF9hdHRlc3RhdGlvbihjaGFyICp3b3JrYXJlYSwgaW50IHNlcV9u dW0sIGludCAqbmV4dF9zZXFfbnVtLAotK2ludCBwaHlfYXR0ZXN0YXRpb25fdXNlcihjaGFyICp3 b3JrYXJlYSwgaW50IHNlcV9udW0sIGludCAqbmV4dF9zZXFfbnVtLAotIAkJCSAgICAgIGludCAq d29ya19hcmVhX2J5dGVzKQotIHsKLSAJdWludDMyX3Qgd29ya2FyZWFfcGE7Ci1AQCAtNzYsMyAr ODIsMTI2IEBAIGludCBydGFzX3BoeXNpY2FsX2F0dGVzdGF0aW9uKGNoYXIgKndvcmthcmVhLCBp bnQgc2VxX251bSwgaW50ICpuZXh0X3NlcV9udW0sCi0gCXJldHVybiByYyA/IHJjIDogc3RhdHVz OwotIH0KLSAKLStzdGF0aWMgYm9vbCBwaHlfYXR0ZXN0X2Nhbl91c2VfY2hhcmRldih2b2lkKQot K3sKLSsJc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLSsKLSsJaWYgKHN0YXQoIi9kZXYvcGFwci1waHlz aWNhbC1hdHRlc3RhdGlvbiIsICZzdGF0YnVmKSkKLSsJCXJldHVybiBmYWxzZTsKLSsKLSsJaWYg KCFTX0lTQ0hSKHN0YXRidWYuc3RfbW9kZSkpCi0rCQlyZXR1cm4gZmFsc2U7Ci0rCi0rCWlmIChj bG9zZShvcGVuKCIvZGV2L3BhcHItcGh5c2ljYWwtYXR0ZXN0YXRpb24iLCBPX1JET05MWSkpKQot KwkJcmV0dXJuIGZhbHNlOwotKwotKwlyZXR1cm4gdHJ1ZTsKLSt9Ci0rCi0rI2RlZmluZSBERVZQ QVRIICIvZGV2L3BhcHItcGh5c2ljYWwtYXR0ZXN0YXRpb24iCi0rCi0rc3RhdGljIGludCBwaHlf YXR0ZXN0X2ZkX25ldyhjb25zdCBjaGFyICphdHRlc3RfY21kLCB1bnNpZ25lZCBpbnQgc2l6ZSkK LSt7Ci0rCWNvbnN0IGludCBkZXZmZCA9IG9wZW4oREVWUEFUSCwgT19XUk9OTFkpOwotKwlzdHJ1 Y3QgcGFwcl9waHlfYXR0ZXN0X2lvX2Jsb2NrIGNtZCA9IHt9OwotKwlpbnQgZmQgPSAtMTsKLSsK LSsJaWYgKGRldmZkIDwgMCkKLSsJCXJldHVybiAtMTsKLSsKLSsJLyoKLSsJICogU2l6ZSBvZiBl YWNoIGNvbW1hbmQgc3RydWN0IGhhcyB0byBiZSB0aGUgIGJ1ZmZlciBzaXplCi0rCSAqIChXT1JL X0FSRUFfU0laRSAtIDRLKSBwYXNzZWQgYnkgdGhlIHVzZXIuCi0rCSAqLwotKwlpZiAoc2l6ZSAh PSBzaXplb2Yoc3RydWN0IHBhcHJfcGh5X2F0dGVzdF9pb19ibG9jaykpIHsKLSsJCWZkID0gUlRB U19JT19BU1NFUlQ7Ci0rCQlnb3RvIGNsb3NlX2RldmZkOwotKwl9Ci0rCi0rCW1lbWNweSgmY21k LCBhdHRlc3RfY21kLCBzaXplb2Yoc3RydWN0IHBhcHJfcGh5X2F0dGVzdF9pb19ibG9jaykpOwot KwlmZCA9IGlvY3RsKGRldmZkLCBQQVBSX1BIWV9BVFRFU1RfSU9DX0hBTkRMRSwgJmNtZCk7Ci0r Ci0rY2xvc2VfZGV2ZmQ6Ci0rCWNsb3NlKGRldmZkKTsKLSsJcmV0dXJuIGZkOwotK30KLSsKLStz dGF0aWMgaW50Ci0rcGh5X2F0dGVzdGF0aW9uX2tlcm5lbChjaGFyICp3b3JrYXJlYSwgaW50IHNl cV9udW0sIGludCAqbmV4dF9zZXFfbnVtLAotKwkJCWludCAqd29ya19hcmVhX2J5dGVzKQotK3sK LSsJaW50IHNpemUgPSAqd29ya19hcmVhX2J5dGVzOwotKwlpbnQgZmQgPSAoc2VxX251bSA9PSAx KSA/IHBoeV9hdHRlc3RfZmRfbmV3KHdvcmthcmVhLCBzaXplKQotKwkJOiAoaW50KXNlcV9udW07 Ci0rCi0rCS8qCi0rCSAqIEVuc3VyZSB3ZSByZXR1cm4gYSBmZCA+IDAgaW4gbmV4dF9zZXFfbnVt LgotKwkgKi8KLSsJaWYgKGZkID09IDEpIHsKLSsJCWludCBuZXdmZCA9IGR1cChmZCk7Ci0rCQlj bG9zZShmZCk7Ci0rCQlmZCA9IG5ld2ZkOwotKwl9Ci0rCi0rCWlmIChmZCA8IDApCi0rCQlyZXR1 cm4gLTM7IC8qIFN5bnRoZXNpemUgaWJtLGdldC12cGQgInBhcmFtZXRlciBlcnJvciIgKi8KLSsK LSsJLyogQ2FsbGVyIHByb3ZpZGVkIG1vcmUgZGF0YSB0aGFuIEZXIGNhbiBoYW5kbGUgKi8KLSsJ aWYgKHNpemUgPT0gMCB8fCBzaXplID4gV09SS19BUkVBX1NJWkUpIHsKLSsJCWNsb3NlKGZkKTsK LSsgICAgICAgICAgICAgICAgcmV0dXJuIFJUQVNfSU9fQVNTRVJUOwotKwl9Ci0rCi0rCi0rCWlu dCBydGFzX3N0YXR1cyA9IDA7Ci0rCXNzaXplX3QgcmVzID0gcmVhZChmZCwgd29ya2FyZWEsICp3 b3JrX2FyZWFfYnl0ZXMpOwotKwlpZiAocmVzIDwgMCkgewotKwkJcnRhc19zdGF0dXMgPSAtMTsg LyogU3ludGhlc2l6ZSBpYm0sZ2V0LXZwZCAiaGFyZHdhcmUgZXJyb3IiICovCi0rCQljbG9zZShm ZCk7Ci0rCX0gZWxzZSBpZiAocmVzID09IDAgfHwgcmVzIDwgKHNzaXplX3Qpc2l6ZSkgewotKwkJ cnRhc19zdGF0dXMgPSAwOyAvKiBEb25lIHdpdGggc2VxdWVuY2UsIG5vIG1vcmUgZGF0YSAqLwot KwkJY2xvc2UoZmQpOwotKwkJaWYgKG5leHRfc2VxX251bSkKLSsJCQkqbmV4dF9zZXFfbnVtID0g MTsKLSsJCWlmICh3b3JrX2FyZWFfYnl0ZXMpCi0rCQkJKndvcmtfYXJlYV9ieXRlcyA9IHJlczsK LSsJfSBlbHNlIHsKLSsJCXJ0YXNfc3RhdHVzID0gMTsgLyogTW9yZSBkYXRhIGF2YWlsYWJsZSwg Y2FsbCBhZ2FpbiAqLwotKwkJaWYgKG5leHRfc2VxX251bSkKLSsJCQkqbmV4dF9zZXFfbnVtID0g ZmQ7Ci0rCQlpZiAod29ya19hcmVhX2J5dGVzKQotKwkJCSp3b3JrX2FyZWFfYnl0ZXMgPSByZXM7 Ci0rCX0KLSsKLSsJcmV0dXJuIHJ0YXNfc3RhdHVzOwotK30KLSsKLStzdGF0aWMgaW50ICgqcGh5 X2F0dGVzdGF0aW9uX2ZuKShjaGFyICp3b3JrYXJlYSwgaW50IHNlcV9udW0sCi0rCQkJaW50ICpu ZXh0X3NlcV9udW0sIGludCAqd29ya19hcmVhX2J5dGVzKTsKLSsKLStzdGF0aWMgdm9pZCBwaHlf YXR0ZXN0YXRpb25fZm5fc2V0dXAodm9pZCkKLSt7Ci0rCXBoeV9hdHRlc3RhdGlvbl9mbiA9IHBo eV9hdHRlc3RfY2FuX3VzZV9jaGFyZGV2KCkgPwotKwkJCXBoeV9hdHRlc3RhdGlvbl9rZXJuZWwg OiBwaHlfYXR0ZXN0YXRpb25fdXNlcjsKLSt9Ci0rCi0rLyoqCi0rICogcnRhc19waHlzaWNhbF9h dHRlc3RhdGlvbgotKyAqIEBicmllZiBJbnRlcmZhY2UgZm9yIGlibSxwaHlzaWNhbC1hdHRlc3Rh dGlvbiBydGFzIGNhbGwuCi0rICoKLSsgKiBAcGFyYW0gd29ya2FyZWEgaW5wdXQvb3V0cHV0IHdv cmsgYXJlYSBmb3IgcnRhcyBjYWxsCi0rICogQHBhcmFtIHNlcV9udW0gc2VxdWVuY2UgbnVtYmVy IG9mIHRoZSBydGFzIGNhbGwKLSsgKiBAcGFyYW0gbmV4dF9zZXFfbnVtIG5leHQgc2VxdWVuY2Ug bnVtYmVyCi0rICogQHBhcmFtIHdvcmtfYXJlYV9ieXRlcyBzaXplIG9mIGlucHV0L291dHB1dCB3 b3JrIGFyZWEKLSsgKiBAcmV0dXJuIDAgb24gc3VjY2VzcywgITAgb24gZmFpbHVyZQotKyAqLwot K2ludCBydGFzX3BoeXNpY2FsX2F0dGVzdGF0aW9uKGNoYXIgKndvcmthcmVhLCBpbnQgc2VxX251 bSwgaW50ICpuZXh0X3NlcV9udW0sCi0rCQkJCWludCAqd29ya19hcmVhX2J5dGVzKQotK3sKLSsJ c3RhdGljIHB0aHJlYWRfb25jZV90IHBoeV9hdHRlc3RhdGlvbl9mbl9vbmNlID0gUFRIUkVBRF9P TkNFX0lOSVQ7Ci0rCi0rCXB0aHJlYWRfb25jZSgmcGh5X2F0dGVzdGF0aW9uX2ZuX29uY2UsIHBo eV9hdHRlc3RhdGlvbl9mbl9zZXR1cCk7Ci0rCi0rCXJldHVybiBwaHlfYXR0ZXN0YXRpb25fZm4o d29ya2FyZWEsIHNlcV9udW0sIG5leHRfc2VxX251bSwKLSsJCQl3b3JrX2FyZWFfYnl0ZXMpOwot K30KCmRpZmYgLS1naXQgYS9saWJydGFzLWNoZWNrLXdhcm5pbmctbnVsbC1wb2ludGVyLnBhdGNo IGIvbGlicnRhcy1jaGVjay13YXJuaW5nLW51bGwtcG9pbnRlci5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggZWE0MjRmMS4uMDAwMDAwMAotLS0gYS9saWJydGFzLWNoZWNrLXdh cm5pbmctbnVsbC1wb2ludGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAot Y29tbWl0IGQ4NzEwNjk2MjEyMDlhNmFjYzBjMmZmNmVhYWJhODhjODU4M2Q2YjEKLUF1dGhvcjog VHlyZWwgRGF0d3lsZXIgPHR5cmVsZEBsaW51eC5pYm0uY29tPgotRGF0ZTogICBGcmkgSnVuIDIw IDE2OjQ2OjI5IDIwMjUgLTA3MDAKLQotICAgIHBoeXNpY2FsLWF0dGVzdGF0aW9uOiBjaGVjayB3 b3JrX2FyZWFfYnl0ZXMgZm9yIG51bGwgcHJpb3IgdG8gZGVyZWZlcmVuY2UKLSAgICAKLSAgICBD SSBzdGF0aWMgY2hlY2tlciB3YXJucyBvZiBwb3NzaWJsZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVu Y2UuCi0gICAgCi0gICAgbGlicnRhc19zcmMvcGh5c2ljYWwtYXR0ZXN0YXRpb24uYzoxMzM6MTQ6 IHdhcm5pbmc6IEVpdGhlciB0aGUgY29uZGl0aW9uICd3b3JrX2FyZWFfYnl0ZXMnIGlzIHJlZHVu ZGFudCBvciB0aGVyZSBpcyBwb3NzaWJsZSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2U6IHdvcmtf YXJlYV9ieXRlcy4gW251bGxQb2ludGVyUmVkdW5kYW50Q2hlY2tdCi0gICAgIGludCBzaXplID0g KndvcmtfYXJlYV9ieXRlczsKLSAgICAgICAgICAgICAgICAgXgotICAgIGxpYnJ0YXNfc3JjL3Bo eXNpY2FsLWF0dGVzdGF0aW9uLmM6MTY2Ojc6IG5vdGU6IEFzc3VtaW5nIHRoYXQgY29uZGl0aW9u ICd3b3JrX2FyZWFfYnl0ZXMnIGlzIG5vdCByZWR1bmRhbnQKLSAgICAgIGlmICh3b3JrX2FyZWFf Ynl0ZXMpCi0gICAgICAgICAgXgotICAgIGxpYnJ0YXNfc3JjL3BoeXNpY2FsLWF0dGVzdGF0aW9u LmM6MTMzOjE0OiBub3RlOiBOdWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UKLSAgICAgaW50IHNpemUg PSAqd29ya19hcmVhX2J5dGVzOwotICAgICAgICAgICAgICAgICBeCi0gICAgbGlicnRhc19zcmMv cGh5c2ljYWwtYXR0ZXN0YXRpb24uYzoxNTc6MzY6IHdhcm5pbmc6IEVpdGhlciB0aGUgY29uZGl0 aW9uICd3b3JrX2FyZWFfYnl0ZXMnIGlzIHJlZHVuZGFudCBvciB0aGVyZSBpcyBwb3NzaWJsZSBu dWxsIHBvaW50ZXIgZGVyZWZlcmVuY2U6IHdvcmtfYXJlYV9ieXRlcy4gW251bGxQb2ludGVyUmVk dW5kYW50Q2hlY2tdCi0gICAgIHNzaXplX3QgcmVzID0gcmVhZChmZCwgd29ya2FyZWEsICp3b3Jr X2FyZWFfYnl0ZXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgot ICAgIGxpYnJ0YXNfc3JjL3BoeXNpY2FsLWF0dGVzdGF0aW9uLmM6MTY2Ojc6IG5vdGU6IEFzc3Vt aW5nIHRoYXQgY29uZGl0aW9uICd3b3JrX2FyZWFfYnl0ZXMnIGlzIG5vdCByZWR1bmRhbnQKLSAg ICAgIGlmICh3b3JrX2FyZWFfYnl0ZXMpCi0gICAgICAgICAgXgotICAgIGxpYnJ0YXNfc3JjL3Bo eXNpY2FsLWF0dGVzdGF0aW9uLmM6MTU3OjM2OiBub3RlOiBOdWxsIHBvaW50ZXIgZGVyZWZlcmVu Y2UKLSAgICAgc3NpemVfdCByZXMgPSByZWFkKGZkLCB3b3JrYXJlYSwgKndvcmtfYXJlYV9ieXRl cyk7Ci0gICAgCi0gICAgRml4IGJ5IHRlc3Rpbmcgd29ya19hcmVhX2J5dGVzIHByaW9yIHRvIHRo ZSBmaXJzdCBwb2ludGVyIGRlcmVmZXJlbmNlLgotICAgIFRoZSBsYXRlciBwb2ludGVyIGNoZWNr cyBhcmUgcmVkdW5kYW50IGFuZCBjYW4gYmUgcmVtb3ZlZCBhcyBzaXplPTAgd2lsbAotICAgIHJl c3VsdCBpbiBSVEFTX0lPX0FTU0VSVCBlcnJvciBiZWluZyByZXR1cm5lZCBwcmlvci4KLSAgICAK LSAgICBGaXhlczogY2FjMWMyOTJiZTU2YSAoImxpYnJ0YXM6IFVzZSBrZXJuZWwgaW50ZXJmYWNl IHdoZW4gYXZhaWxhYmxlIGZvciBpYm0scGh5c2ljYWwtYXR0ZXN0YXRpb24iKQotICAgIFNpZ25l ZC1vZmYtYnk6IFR5cmVsIERhdHd5bGVyIDx0eXJlbGRAbGludXguaWJtLmNvbT4KLQotZGlmZiAt LWdpdCBhL2xpYnJ0YXNfc3JjL3BoeXNpY2FsLWF0dGVzdGF0aW9uLmMgYi9saWJydGFzX3NyYy9w aHlzaWNhbC1hdHRlc3RhdGlvbi5jCi1pbmRleCA0ODEwOGEwLi4wZDM5NzVjIDEwMDY0NAotLS0t IGEvbGlicnRhc19zcmMvcGh5c2ljYWwtYXR0ZXN0YXRpb24uYwotKysrIGIvbGlicnRhc19zcmMv cGh5c2ljYWwtYXR0ZXN0YXRpb24uYwotQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgaW50Ci0g cGh5X2F0dGVzdGF0aW9uX2tlcm5lbChjaGFyICp3b3JrYXJlYSwgaW50IHNlcV9udW0sIGludCAq bmV4dF9zZXFfbnVtLAotIAkJCWludCAqd29ya19hcmVhX2J5dGVzKQotIHsKLS0JaW50IHNpemUg PSAqd29ya19hcmVhX2J5dGVzOwotKwlpbnQgc2l6ZSA9ICh3b3JrX2FyZWFfYnl0ZXMpID8gKndv cmtfYXJlYV9ieXRlcyA6IDA7Ci0gCWludCBmZCA9IChzZXFfbnVtID09IDEpID8gcGh5X2F0dGVz dF9mZF9uZXcod29ya2FyZWEsIHNpemUpCi0gCQk6IChpbnQpc2VxX251bTsKLSAKLUBAIC0xNjMs MTQgKzE2MywxMiBAQCBwaHlfYXR0ZXN0YXRpb25fa2VybmVsKGNoYXIgKndvcmthcmVhLCBpbnQg c2VxX251bSwgaW50ICpuZXh0X3NlcV9udW0sCi0gCQljbG9zZShmZCk7Ci0gCQlpZiAobmV4dF9z ZXFfbnVtKQotIAkJCSpuZXh0X3NlcV9udW0gPSAxOwotLQkJaWYgKHdvcmtfYXJlYV9ieXRlcykK LS0JCQkqd29ya19hcmVhX2J5dGVzID0gcmVzOwotKwkJKndvcmtfYXJlYV9ieXRlcyA9IHJlczsK LSAJfSBlbHNlIHsKLSAJCXJ0YXNfc3RhdHVzID0gMTsgLyogTW9yZSBkYXRhIGF2YWlsYWJsZSwg Y2FsbCBhZ2FpbiAqLwotIAkJaWYgKG5leHRfc2VxX251bSkKLSAJCQkqbmV4dF9zZXFfbnVtID0g ZmQ7Ci0tCQlpZiAod29ya19hcmVhX2J5dGVzKQotLQkJCSp3b3JrX2FyZWFfYnl0ZXMgPSByZXM7 Ci0rCQkqd29ya19hcmVhX2J5dGVzID0gcmVzOwotIAl9Ci0gCi0gCXJldHVybiBydGFzX3N0YXR1 czsKCmRpZmYgLS1naXQgYS9saWJydGFzLWZvcm1hdC1taXNtYXRjaC1zaXplX3QucGF0Y2ggYi9s aWJydGFzLWZvcm1hdC1taXNtYXRjaC1zaXplX3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDBiMDAzODIuLjAwMDAwMDAKLS0tIGEvbGlicnRhcy1mb3JtYXQtbWlzbWF0Y2gt c2l6ZV90LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotY29tbWl0IDgyOGQy MDYxZjc4NGE2YmZjM2RkZmIwNWIxZWMxYjNhNDU2MDNjNDYKLUF1dGhvcjogVHlyZWwgRGF0d3ls ZXIgPHR5cmVsZEBsaW51eC5pYm0uY29tPgotRGF0ZTogICBGcmkgSnVuIDIwIDE2OjM1OjE2IDIw MjUgLTA3MDAKLQotICAgIGxpYnJ0YXM6IGZpeCBmb3JtYXQgc3BlY2lmaWVyIG1pc21hdGNoIGZv ciBzaXplX3QgaW4gaW5kaWNlcy5jCi0gICAgCi0gICAgQ0kgY29tcGxhaW5zIG9mIHNldmVyYWwg JWx1IGZvcm1hdCBzcGVjaWZpZXIgbWlzbWF0Y2hlcyB0byBhcmd1bWVudHMgb2YKLSAgICBzaXpl X3QgaW4gaW5kaWNlcy5jLiBUaGlzIGlzIGEgcmVzdWx0IG9mIHNpemVfdCBiZWluZyBlaXRoZXIg NCBieXRlcyBvcgotICAgIDggYnl0ZXMgZGVwZW5kaW5nIG9uIGlmIHRoZSBwYWNrYWdlcyBpcyBi dWlsdCBvbiBhIDMyYml0IG9yIDY0Yml0Ci0gICAgYXJjaGl0ZWN0dXJlIHJlc3BlY3RpdmVseS4K LSAgICAKLSAgICBGaXggdGhpcyBieSB1c2luZyB0aGUgcHJpbnRmIHNpemVfdCBmb3JtYXQgc3Bl Y2lmaWVyICV6dSBpbnN0ZWFkLgotICAgIAotICAgIEZpeGVzOiAxZTI1NGVkZTFjMjI2ICgibGli cnRhczogVXNlIC9kZXYvcGFwci1pbmRpY2VzIHdoZW4gYXZhaWxhYmxlIGZvciBpYm0sZ2V0LWlu ZGljZXMiKQotICAgIFNpZ25lZC1vZmYtYnk6IFR5cmVsIERhdHd5bGVyIDx0eXJlbGRAbGludXgu aWJtLmNvbT4KLQotZGlmZiAtLWdpdCBhL2xpYnJ0YXNfc3JjL2luZGljZXMuYyBiL2xpYnJ0YXNf c3JjL2luZGljZXMuYwotaW5kZXggODc1YzU3Ni4uMjVhMGIxMSAxMDA2NDQKLS0tLSBhL2xpYnJ0 YXNfc3JjL2luZGljZXMuYwotKysrIGIvbGlicnRhc19zcmMvaW5kaWNlcy5jCi1AQCAtMTcyLDcg KzE3Miw3IEBAIHN0YXRpYyBpbnQgZ2V0X2luZGljZXNfY2hhcmRldihpbnQgaXNfc2Vuc29yLCBp bnQgdHlwZSwgY2hhciAqd29ya2FyZWEsCi0gCXNzaXplX3QgcmVzOwotIAotIAlpZiAoc2l6ZSAh PSBSVEFTX0dFVF9JTkRJQ0VTX0JVRl9TSVpFKSB7Ci0tCQlkYmcoIkludmFsaWQgYnVmZmVyIHNp emUgJWx1IGV4cGVjdHMgJWRcbiIsCi0rCQlkYmcoIkludmFsaWQgYnVmZmVyIHNpemUgJXp1IGV4 cGVjdHMgJWRcbiIsCi0gCQkJCXNpemUsIFJUQVNfR0VUX0lORElDRVNfQlVGX1NJWkUpOwotIAkJ cmV0dXJuIC1FSU5WQUw7Ci0gCX0KLUBAIC0yNjAsMTMgKzI2MCwxMyBAQCBzdGF0aWMgaW50IGR5 bmFtaWNfY29tbW9uX2lvX3NldHVwKHVuc2lnbmVkIGxvbmcgaW9jdGFsdmFsLAotIAlsZW5ndGgg PSBiZTMydG9oKCoodWludDMyX3QgKilsb2NfY29kZSk7Ci0gCi0gCWlmIChsZW5ndGggPCAxKSB7 Ci0tCQlkYmcoIkludmFsaWQgbGVuZ3RoKCVsdSkgb2YgbG9jYXRpb24gY29kZSBzdHJpbmdcbiIs IGxlbmd0aCk7Ci0rCQlkYmcoIkludmFsaWQgbGVuZ3RoKCV6dSkgb2YgbG9jYXRpb24gY29kZSBz dHJpbmdcbiIsIGxlbmd0aCk7Ci0gCQlnb3RvIG91dDsKLSAJfQotIAotIAlsb2Nfc3RyID0gKGNo YXIgKikoKGNoYXIgKilsb2NfY29kZSArIHNpemVvZih1aW50MzJfdCkpOwotIAlpZiAoc3RybGVu KGxvY19zdHIpICE9IChsZW5ndGggLSAxKSkgewotLQkJZGJnKCJsb2NhdGlvbiBjb2RlIHN0cmlu ZyBsZW5ndGggaXMgbm90IG1hdGNoZWQgd2l0aCB0aGUgcGFzc2VkIGxlbmd0aCglbHUpXG4iLCBs ZW5ndGgpOwotKwkJZGJnKCJsb2NhdGlvbiBjb2RlIHN0cmluZyBsZW5ndGggaXMgbm90IG1hdGNo ZWQgd2l0aCB0aGUgcGFzc2VkIGxlbmd0aCglenUpXG4iLCBsZW5ndGgpOwotIAkJZ290byBvdXQ7 Ci0gCX0KLSAKCmRpZmYgLS1naXQgYS9saWJydGFzLnNwZWMgYi9saWJydGFzLnNwZWMKaW5kZXgg Y2RjNTQ3Ni4uYTIxZGJiMCAxMDA2NDQKLS0tIGEvbGlicnRhcy5zcGVjCisrKyBiL2xpYnJ0YXMu c3BlYwpAQCAtMSwyNSArMSwxMiBAQAogU3VtbWFyeTogTGlicmFyaWVzIHRvIHByb3ZpZGUgYWNj ZXNzIHRvIFJUQVMgY2FsbHMgYW5kIFJUQVMgZXZlbnRzCiBOYW1lOiAgICBsaWJydGFzCi1WZXJz aW9uOiAyLjAuNgotUmVsZWFzZTogNiV7P2Rpc3R9CitWZXJzaW9uOiAyLjAuNworUmVsZWFzZTog MSV7P2Rpc3R9CiBVUkw6ICAgICBodHRwczovL2dpdGh1Yi5jb20vaWJtLXBvd2VyLXV0aWxpdGll cy9saWJydGFzCiBMaWNlbnNlOiBMR1BMLTIuMC1vci1sYXRlcgogCiBTb3VyY2UwOiBodHRwczov L2dpdGh1Yi5jb20vaWJtLXBvd2VyLXV0aWxpdGllcy8le25hbWV9L2FyY2hpdmUvdiV7dmVyc2lv bn0vJXtuYW1lfS0le3ZlcnNpb259LnRhci5negogCi0jIHVwc3RyZWFtIGZpeGVzIGZvciBMb2Nr ZG93bi1jb21wYXRpYmxlIEFCSQotUGF0Y2gxOiBsaWJydGFzLTAxLWxvY2tkb3duLWNvbXBhdGli bGUtYWJpLXBoYXNlLnBhdGNoCi1QYXRjaDI6IGxpYnJ0YXMtMDItbG9ja2Rvd24tY29tcGF0aWJs ZS1hYmktcGhhc2UucGF0Y2gKLVBhdGNoMzogbGlicnRhcy0wMy1sb2NrZG93bi1jb21wYXRpYmxl LWFiaS1waGFzZS5wYXRjaAotUGF0Y2g0OiBsaWJydGFzLTA0LWxvY2tkb3duLWNvbXBhdGlibGUt YWJpLXBoYXNlLnBhdGNoCi1QYXRjaDU6IGxpYnJ0YXMtMDUtbG9ja2Rvd24tY29tcGF0aWJsZS1h YmktcGhhc2UucGF0Y2gKLVBhdGNoNjogbGlicnRhcy0wNi1sb2NrZG93bi1jb21wYXRpYmxlLWFi aS1waGFzZS5wYXRjaAotUGF0Y2g3OiBsaWJydGFzLTA3LWxvY2tkb3duLWNvbXBhdGlibGUtYWJp LXBoYXNlLnBhdGNoCi1QYXRjaDg6IGxpYnJ0YXMtMDgtbG9ja2Rvd24tY29tcGF0aWJsZS1hYmkt cGhhc2UucGF0Y2gKLVBhdGNoOTogbGlicnRhcy0wOS1lbmQtbG9ja2Rvd24tY29tcGF0aWJsZS1h YmktcGhhc2UucGF0Y2gKLVBhdGNoMTA6IGxpYnJ0YXMtY2hlY2std2FybmluZy1udWxsLXBvaW50 ZXIucGF0Y2gKLVBhdGNoMTE6IGxpYnJ0YXMtZm9ybWF0LW1pc21hdGNoLXNpemVfdC5wYXRjaAot CiBCdWlsZFJlcXVpcmVzOiBhdXRvY29uZgogQnVpbGRSZXF1aXJlczogbGlidG9vbAogQnVpbGRS ZXF1aXJlczogbWFrZQpAQCAtNzcsNiArNjQsMTAgQEAgcm0gLWYgICV7YnVpbGRyb290fS8le19k b2NkaXJ9L2xpYnJ0YXMvKgogJXtfaW5jbHVkZWRpcn0vbGlicnRhc2V2ZW50X3Y2LmgKIAogJWNo YW5nZWxvZworKiBUdWUgSnVuIDAyIDIwMjYgVGhhbiBOZ28gPHRoYW5AcmVkaGF0LmNvbT4gLSAy LjAuNy0xCistIFVwZGF0ZSB0byAyLjAuNworLSBSZW1vdmUgdGhlIHBhdGNoZXMsIHdoaWNoIGFy ZSBpbmNsdWRlZCBpbiB1cHN0cmVhbQorCiAqIEZyaSBKYW4gMTYgMjAyNiBGZWRvcmEgUmVsZWFz ZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDIuMC42LTYKIC0gUmVi dWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV80NF9NYXNzX1Jl YnVpbGQKIAoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IGE4MmY4MTQuLjZj ZGE3MWMgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSArMSBAQAotU0hB NTEyIChsaWJydGFzLTIuMC42LnRhci5neikgPSBhZDJlOGI0YzhlMzJiYWU3MDhlNTI0MzYyNWVh YTYzMDIzZjkzZDIzZWFhNGQ2Njc1YzQ2ZWI2ODc2NmFiY2FhOTBmOTU1NWQ2YTNjNzlkMmE1NjRm YWQxMzJkMzVhOGFmYzQwMzVkNDRjNzZhNjNjNjRkY2IzYjI1ZTE1YTBjNAorU0hBNTEyIChsaWJy dGFzLTIuMC43LnRhci5neikgPSBmNWM2NDZiZDZmMmYyZjM1MWRlNjMyNDU2OTRjYWNlM2M2Yzc5 MjE5NjY4NmRkMGRjZjZiZDAwNDYyNWEwYzk5MzA3OTMwZGZlODYyOTgzZTQ5MzhkN2YxNTI3OWVi YjhiNjI4Y2MzZWZhMGI4ZTU1NDVmYjViNDg1ZGMxYWFhYQo=