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: Adrian Vovk To: git-commits@fedoraproject.org Subject: [rpms/libsoup3] f44: Backport various CVE fixes Date: Sat, 05 Sep 2026 20:00:41 GMT Message-ID: <178863844143.1.17998507746788146612.rpms-libsoup3-d660a0071a89@fedoraproject.org> List-ID: X-Git-Repo: rpms/libsoup3 X-Git-Branch: f44 X-Git-Rev: d660a0071a892d3bf5f7ff9e272634fb4bcc988b ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvbGlic291cDMKICAgICAgICAgICAgQnJhbmNoIDogZjQ0CiAgICAgICAgICAg IENvbW1pdCA6IGQ2NjBhMDA3MWE4OTJkM2JmNWY3ZmY5ZTI3MjYzNGZiNGJjYzk4OGIKICAgICAg ICAgICAgQXV0aG9yIDogQWRyaWFuIFZvdmsgPGF2b3ZrQHJlZGhhdC5jb20+CiAgICAgICAgICAg IERhdGUgICA6IDIwMjYtMDktMDVUMTU6NTg6NTktMDQ6MDAKICAgICAgICAgICAgU3RhdHMgIDog KzE4OTcvLTAgaW4gNyBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0dHBzOi8vc3JjLmZl ZG9yYXByb2plY3Qub3JnL3JwbXMvbGlic291cDMvYy9kNjYwYTAwNzFhODkyZDNiZjVmN2ZmOWUy NzI2MzRmYjRiY2M5ODhiP2JyYW5jaD1mNDQKCiAgICAgICAgICAgIExvZzoKICAgICAgICAgICAg QmFja3BvcnQgdmFyaW91cyBDVkUgZml4ZXMKCkFzc2lzdGVkLWJ5OiBDbGF1ZGUKCi0tLQpkaWZm IC0tZ2l0IGEvQ1ZFLTIwMjYtMTU3MDkucGF0Y2ggYi9DVkUtMjAyNi0xNTcwOS5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmYyNzA2Ci0tLSAvZGV2L251bGwKKysr IGIvQ1ZFLTIwMjYtMTU3MDkucGF0Y2gKQEAgLTAsMCArMSw3MzAgQEAKK0Zyb20gYTQyOTQwNDQ0 NjZkZjY2ZWE5ODQ5MmQ2N2JiNzQxNzJlZDNmODc2MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IFpheWQgUmFqYWIgPHpheWRyQGFtYXpvbi5jb20+CitEYXRlOiBGcmksIDQgU2VwIDIw MjYgMTQ6MTc6MjMgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gd2Vic29ja2V0OiBCb3VuZCBkZWNv bXByZXNzZWQgbWVzc2FnZSBzaXplIGR1cmluZyBpbmZsYXRpb24KKworUGFzcyBlYWNoIGNvbm5l Y3Rpb24ncyByZW1haW5pbmcgbWF4LXRvdGFsLW1lc3NhZ2Utc2l6ZSBhbGxvd2FuY2UgdGhyb3Vn aAordGhlIGdlbmVyaWMgV2ViU29ja2V0IGV4dGVuc2lvbiBwcm9jZXNzaW5nIHBhdGggdmlhIGEg bmV3Citwcm9jZXNzX2luY29taW5nX21lc3NhZ2Vfd2l0aF9saW1pdCB2ZnVuYywgZmFsbGluZyBi YWNrIHRvCitwcm9jZXNzX2luY29taW5nX21lc3NhZ2UgZm9yIGV4dGVuc2lvbnMgdGhhdCBkb24n dCBpbXBsZW1lbnQgaXQuIEJvdW5kCitwZXJtZXNzYWdlLWRlZmxhdGUgb3V0cHV0IGdyb3d0aCB0 byB0aGF0IGFsbG93YW5jZSBhbmQgdXNlIGEgb25lLWJ5dGUKK3Byb2JlIHRvIGRldGVjdCBvdXRw dXQgYmV5b25kIGFuIGV4YWN0IGJvdW5kYXJ5IHdpdGhvdXQgYWxsb2NhdGluZworYW5vdGhlciBu b3JtYWwgb3V0cHV0IGNodW5rLgorCitQcmVzZXJ2ZSB0aGUgZG9jdW1lbnRlZCB1bmxpbWl0ZWQg ZGVmYXVsdCBmb3IgY2xpZW50cyBhbmQgZGlyZWN0Citjb25uZWN0aW9ucy4gU291cFNlcnZlciBj b250aW51ZXMgYXBwbHlpbmcgaXRzIGV4aXN0aW5nIDEyOCBLaUIgZGVmYXVsdCwKK3doaWxlIGNh bGxlcnMgY2FuIGNvbmZpZ3VyZSB0aGUgbGltaXQgZXhwbGljaXRseSBpbiBlaXRoZXIgcmVjZWl2 ZQorZGlyZWN0aW9uLgorCitBZGQgYm91bmRhcnksIGdlbmVyaWMtZXh0ZW5zaW9uIGZhbGxiYWNr LCByZWNlaXZlLWRpcmVjdGlvbiwgU291cFNlcnZlciwKK2ZyYWdtZW50YXRpb24sIGFuZCB1bmxp bWl0ZWQtbW9kZSBjb3ZlcmFnZS4KKworVGhpcyBhZGRyZXNzZXMgQ1ZFLTIwMjYtMTU3MDkuCisK K1JlcG9ydGVkLWJ5OiBUcmlzdGFuIE1hZGFuaSA8c2VjaWVudGlzdEBnbWFpbC5jb20+CitDbG9z ZXMgITU0MworCitbQWRhcHRlZCBmb3IgbGlic291cCAzLjYuNjogVXNlcyBoYXJkLWNvZGVkIGxp bWl0cyBiYXNlZCBvbiBjb25uZWN0aW9uX3R5cGUsCisgKDEyOCBLaUIgZm9yIHNlcnZlciwgdW5s aW1pdGVkIGZvciBjbGllbnQpIGluc3RlYWQgb2YgcmVhZGluZyBmcm9tCisgbWF4LXRvdGFsLW1l c3NhZ2Utc2l6ZSBwcm9wcmV0eS4gVGhlIHByb3BlcnR5IGRvZXNuJ3QgZXhpc3QgaW4gMy42LjYs IHNvCisgd2UgY2Fubm90IHVzZSBpdCBhbmQgaW5zdGVhZCB1c2UgdGhlIGRlZmF1bHRzXQorCist LS0KKyBsaWJzb3VwL3dlYnNvY2tldC9zb3VwLXdlYnNvY2tldC1jb25uZWN0aW9uLmMgfCAgNjAg KysrKystCisgLi4uL3NvdXAtd2Vic29ja2V0LWV4dGVuc2lvbi1kZWZsYXRlLmMgICAgICAgIHwg MTQ0ICsrKysrKysrKystLS0tCisgbGlic291cC93ZWJzb2NrZXQvc291cC13ZWJzb2NrZXQtZXh0 ZW5zaW9uLmMgIHwgIDUzICsrKysrCisgbGlic291cC93ZWJzb2NrZXQvc291cC13ZWJzb2NrZXQt ZXh0ZW5zaW9uLmggIHwgIDE0ICstCisgdGVzdHMvd2Vic29ja2V0LXRlc3QuYyAgICAgICAgICAg ICAgICAgICAgICAgIHwgMjQyICsrKysrKysrKysrKysrKysrKworIDUgZmlsZXMgY2hhbmdlZCwg NDczIGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlic291 cC93ZWJzb2NrZXQvc291cC13ZWJzb2NrZXQtY29ubmVjdGlvbi5jIGIvbGlic291cC93ZWJzb2Nr ZXQvc291cC13ZWJzb2NrZXQtY29ubmVjdGlvbi5jCitpbmRleCAzNmU4NDU5Li5mMjNkYjViIDEw MDY0NAorLS0tIGEvbGlic291cC93ZWJzb2NrZXQvc291cC13ZWJzb2NrZXQtY29ubmVjdGlvbi5j CisrKysgYi9saWJzb3VwL3dlYnNvY2tldC9zb3VwLXdlYnNvY2tldC1jb25uZWN0aW9uLmMKK0BA IC03MTMsNiArNzEzLDI0IEBAIHRvb19iaWdfZXJyb3JfYW5kX2Nsb3NlIChTb3VwV2Vic29ja2V0 Q29ubmVjdGlvbiAqc2VsZiwKKyAJZW1pdF9lcnJvcl9hbmRfY2xvc2UgKHNlbGYsIGVycm9yLCBU UlVFKTsKKyB9CisgCisrc3RhdGljIHZvaWQKKyt0b29fYmlnX21lc3NhZ2VfZXJyb3JfYW5kX2Ns b3NlIChTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiAqc2VsZiwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBndWludDY0IGxlbikKKyt7CisrICAgICAgICBTb3VwV2Vic29ja2V0Q29u bmVjdGlvblByaXZhdGUgKnByaXYgPSBzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dldF9pbnN0 YW5jZV9wcml2YXRlIChzZWxmKTsKKysJR0Vycm9yICplcnJvcjsKKysKKysJZXJyb3IgPSBnX2Vy cm9yX25ld19saXRlcmFsIChTT1VQX1dFQlNPQ0tFVF9FUlJPUiwKKysJCQkJICAgICBTT1VQX1dF QlNPQ0tFVF9DTE9TRV9UT09fQklHLAorKwkJCQkgICAgIHByaXYtPmNvbm5lY3Rpb25fdHlwZSA9 PSBTT1VQX1dFQlNPQ0tFVF9DT05ORUNUSU9OX1NFUlZFUiA/CisrCQkJCSAgICAgIlJlY2VpdmVk IFdlYlNvY2tldCBwYXlsb2FkIGZyb20gdGhlIGNsaWVudCBsYXJnZXIgdGhhbiBjb25maWd1cmVk IG1heC10b3RhbC1tZXNzYWdlLXNpemUiIDoKKysJCQkJICAgICAiUmVjZWl2ZWQgV2ViU29ja2V0 IHBheWxvYWQgZnJvbSB0aGUgc2VydmVyIGxhcmdlciB0aGFuIGNvbmZpZ3VyZWQgbWF4LXRvdGFs LW1lc3NhZ2Utc2l6ZSIpOworKwlnX2RlYnVnICgiJXMgcmVjZWl2ZWQgbWVzc2FnZSBvZiBzaXpl ICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiBvciBncmVhdGVyIiwKKysJICAgICAgICAgcHJpdi0+Y29u bmVjdGlvbl90eXBlID09IFNPVVBfV0VCU09DS0VUX0NPTk5FQ1RJT05fU0VSVkVSID8gInNlcnZl ciIgOiAiY2xpZW50IiwKKysJICAgICAgICAgbGVuKTsKKysJZW1pdF9lcnJvcl9hbmRfY2xvc2Ug KHNlbGYsIGVycm9yLCBUUlVFKTsKKyt9CisrCisgc3RhdGljIHZvaWQKKyBjbG9zZV9jb25uZWN0 aW9uIChTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICBn dXNob3J0ICAgICAgICAgICAgICAgICAgY29kZSwKK0BAIC05NzIsOSArOTkwLDI0IEBAIHByb2Nl c3NfY29udGVudHMgKFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uICpzZWxmLAorIAorIAkJc3dpdGNo IChwcml2LT5tZXNzYWdlX29wY29kZSkgeworIAkJY2FzZSAweDAxOgorLQkJY2FzZSAweDAyOgor KwkJY2FzZSAweDAyOiB7CisrCQkJLyogU2FmZXR5IHZhbHZlICovCisrCQkJZ3VpbnQ2NCBtYXhf dG90YWxfbWVzc2FnZV9zaXplID0gKHByaXYtPmNvbm5lY3Rpb25fdHlwZSA9PSBTT1VQX1dFQlNP Q0tFVF9DT05ORUNUSU9OX1NFUlZFUikgPyAxMjggKiAxMDI0IDogMDsKKysJCQlpZiAobWF4X3Rv dGFsX21lc3NhZ2Vfc2l6ZSA+IDAgJiYKKysJCQkgICAgKHByaXYtPm1lc3NhZ2VfZGF0YS0+bGVu ID4gbWF4X3RvdGFsX21lc3NhZ2Vfc2l6ZSB8fAorKwkJCSAgICAgcGF5bG9hZF9sZW4gPiBtYXhf dG90YWxfbWVzc2FnZV9zaXplIC0gcHJpdi0+bWVzc2FnZV9kYXRhLT5sZW4pKSB7CisrCQkJCWd1 aW50NjQgbWVzc2FnZV9zaXplID0gcHJpdi0+bWVzc2FnZV9kYXRhLT5sZW47CisrCisrCQkJCWlm IChwYXlsb2FkX2xlbiA+IEdfTUFYVUlOVDY0IC0gbWVzc2FnZV9zaXplKQorKwkJCQkJbWVzc2Fn ZV9zaXplID0gR19NQVhVSU5UNjQ7CisrCQkJCWVsc2UKKysJCQkJCW1lc3NhZ2Vfc2l6ZSArPSBw YXlsb2FkX2xlbjsKKysJCQkJdG9vX2JpZ19tZXNzYWdlX2Vycm9yX2FuZF9jbG9zZSAoc2VsZiwg bWVzc2FnZV9zaXplKTsKKysJCQkJcmV0dXJuOworKwkJCX0KKyAJCQlnX2J5dGVfYXJyYXlfYXBw ZW5kIChwcml2LT5tZXNzYWdlX2RhdGEsIHBheWxvYWQsIHBheWxvYWRfbGVuKTsKKyAJCQlicmVh azsKKysJCX0KKyAJCWRlZmF1bHQ6CisgCQkJZ19kZWJ1ZyAoInJlY2VpdmVkIHVua25vd24gZGF0 YSBmcmFtZTogJWQiLCAoaW50KW9wY29kZSk7CisgCQkJcHJvdG9jb2xfZXJyb3JfYW5kX2Nsb3Nl IChzZWxmKTsKK0BAIC0xMDE2LDYgKzEwNDksMjMgQEAgcHJvY2Vzc19jb250ZW50cyAoU291cFdl YnNvY2tldENvbm5lY3Rpb24gKnNlbGYsCisgCX0KKyB9CisgCisrc3RhdGljIGd1aW50NjQKKytn ZXRfcmVtYWluaW5nX21lc3NhZ2Vfc2l6ZSAoU291cFdlYnNvY2tldENvbm5lY3Rpb25Qcml2YXRl ICpwcml2KQorK3sKKysJZ3VpbnQ2NCBtYXhfdG90YWxfbWVzc2FnZV9zaXplID0gKHByaXYtPmNv bm5lY3Rpb25fdHlwZSA9PSBTT1VQX1dFQlNPQ0tFVF9DT05ORUNUSU9OX1NFUlZFUikgPyAxMjgg KiAxMDI0IDogMDsKKysKKysJaWYgKG1heF90b3RhbF9tZXNzYWdlX3NpemUgPT0gMCkKKysJCXJl dHVybiBHX01BWFVJTlQ2NDsKKysKKysJaWYgKCFwcml2LT5tZXNzYWdlX2RhdGEpCisrCQlyZXR1 cm4gbWF4X3RvdGFsX21lc3NhZ2Vfc2l6ZTsKKysKKysJaWYgKHByaXYtPm1lc3NhZ2VfZGF0YS0+ bGVuID49IG1heF90b3RhbF9tZXNzYWdlX3NpemUpCisrCQlyZXR1cm4gMDsKKysKKysJcmV0dXJu IG1heF90b3RhbF9tZXNzYWdlX3NpemUgLSBwcml2LT5tZXNzYWdlX2RhdGEtPmxlbjsKKyt9Cisr Cisgc3RhdGljIGdib29sZWFuCisgcHJvY2Vzc19mcmFtZSAoU291cFdlYnNvY2tldENvbm5lY3Rp b24gKnNlbGYpCisgeworQEAgLTEwMzEsNiArMTA4MSw3IEBAIHByb2Nlc3NfZnJhbWUgKFNvdXBX ZWJzb2NrZXRDb25uZWN0aW9uICpzZWxmKQorIAlnc2l6ZSBsZW47CisgCWdzaXplIGF0OworIAlH Qnl0ZXMgKmZpbHRlcmVkX2J5dGVzOworKwlndWludDY0IG1heF9vdXRwdXRfc2l6ZTsKKyAJR0xp c3QgKmw7CisgCUdFcnJvciAqZXJyb3IgPSBOVUxMOworIAorQEAgLTExMzgsMTEgKzExODksMTYg QEAgcHJvY2Vzc19mcmFtZSAoU291cFdlYnNvY2tldENvbm5lY3Rpb24gKnNlbGYpCisgCX0KKyAK KyAJZmlsdGVyZWRfYnl0ZXMgPSBnX2J5dGVzX25ld19zdGF0aWMgKHBheWxvYWQsIHBheWxvYWRf bGVuKTsKKysJbWF4X291dHB1dF9zaXplID0gZ2V0X3JlbWFpbmluZ19tZXNzYWdlX3NpemUgKHBy aXYpOworIAlmb3IgKGwgPSBwcml2LT5leHRlbnNpb25zOyBsICE9IE5VTEw7IGwgPSBnX2xpc3Rf bmV4dCAobCkpIHsKKyAJCVNvdXBXZWJzb2NrZXRFeHRlbnNpb24gKmV4dGVuc2lvbjsKKyAKKyAJ CWV4dGVuc2lvbiA9IChTb3VwV2Vic29ja2V0RXh0ZW5zaW9uICopbC0+ZGF0YTsKKy0JCWZpbHRl cmVkX2J5dGVzID0gc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX3Byb2Nlc3NfaW5jb21pbmdfbWVz c2FnZSAoZXh0ZW5zaW9uLCBwcml2LT5pbmNvbWluZy0+ZGF0YSwgZmlsdGVyZWRfYnl0ZXMsICZl cnJvcik7CisrCQlmaWx0ZXJlZF9ieXRlcyA9IHNvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9wcm9j ZXNzX2luY29taW5nX21lc3NhZ2Vfd2l0aF9saW1pdCAoZXh0ZW5zaW9uLAorKwkJCQkJCQkJCQkJ ICAgICAgIHByaXYtPmluY29taW5nLT5kYXRhLAorKwkJCQkJCQkJCQkJICAgICAgIGZpbHRlcmVk X2J5dGVzLAorKwkJCQkJCQkJCQkJICAgICAgIG1heF9vdXRwdXRfc2l6ZSwKKysJCQkJCQkJCQkJ CSAgICAgICAmZXJyb3IpOworIAkJaWYgKGVycm9yKSB7CisgCQkJZW1pdF9lcnJvcl9hbmRfY2xv c2UgKHNlbGYsIGVycm9yLCBGQUxTRSk7CisgCQkJcmV0dXJuIEZBTFNFOworZGlmZiAtLWdpdCBh L2xpYnNvdXAvd2Vic29ja2V0L3NvdXAtd2Vic29ja2V0LWV4dGVuc2lvbi1kZWZsYXRlLmMgYi9s aWJzb3VwL3dlYnNvY2tldC9zb3VwLXdlYnNvY2tldC1leHRlbnNpb24tZGVmbGF0ZS5jCitpbmRl eCBmYTk4YTJlMi4uMmM2NDlhODggMTAwNjQ0CistLS0gYS9saWJzb3VwL3dlYnNvY2tldC9zb3Vw LXdlYnNvY2tldC1leHRlbnNpb24tZGVmbGF0ZS5jCisrKysgYi9saWJzb3VwL3dlYnNvY2tldC9z b3VwLXdlYnNvY2tldC1leHRlbnNpb24tZGVmbGF0ZS5jCitAQCAtMzU5LDE5ICszNTksMjkgQEAg c291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX2RlZmxhdGVfcHJvY2Vzc19vdXRnb2luZ19tZXNzYWdl IChTb3VwV2Vic29ja2V0RXh0ZW5zaW8KKyAgICAgICAgIHJldHVybiBnX2J5dGVfYXJyYXlfZnJl ZV90b19ieXRlcyAoYnVmZmVyKTsKKyB9CisgCisrc3RhdGljIHZvaWQKKytpbmZsYXRlcl9yZXNl dCAoSW5mbGF0ZXIgKmluZmxhdGVyKQorK3sKKysgICAgICAgIGluZmxhdGVSZXNldCAoJmluZmxh dGVyLT56c3RyZWFtKTsKKysgICAgICAgIGluZmxhdGVyLT51bmNvbXByZXNzX29uZ29pbmcgPSBG QUxTRTsKKyt9CisrCisgc3RhdGljIEdCeXRlcyAqCistc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9u X2RlZmxhdGVfcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlIChTb3VwV2Vic29ja2V0RXh0ZW5zaW9u ICpleHRlbnNpb24sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBndWludDggICAgICAgICAgICAgICAgICpoZWFkZXIsCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQnl0 ZXMgICAgICAgICAgICAgICAgICpwYXlsb2FkLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICoq ZXJyb3IpCisrc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX2RlZmxhdGVfcHJvY2Vzc19pbmNvbWlu Z19tZXNzYWdlX3dpdGhfbGltaXQgKFNvdXBXZWJzb2NrZXRFeHRlbnNpb24gKmV4dGVuc2lvbiwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ3VpbnQ4ICAgICAgICAgICAgICAgICAqaGVhZGVyLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHQnl0ZXMgICAgICAgICAgICAgICAgICpwYXlsb2FkLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlu dDY0ICAgICAgICAgICAgICAgICBtYXhfb3V0cHV0X3NpemUsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJv ciAgICAgICAgICAgICAgICAqKmVycm9yKQorIHsKKyAgICAgICAgIGNvbnN0IGd1aW50OCAqcGF5 bG9hZF9kYXRhOworICAgICAgICAgZ3NpemUgcGF5bG9hZF9sZW5ndGg7CisgICAgICAgICBnYm9v bGVhbiBmaW4sIGNvbnRyb2wsIGNvbXByZXNzZWQ7CisgICAgICAgICBHQnl0ZUFycmF5ICpidWZm ZXI7CistICAgICAgICBnc2l6ZSBieXRlc19yZWFkLCBieXRlc193cml0dGVuOworKyAgICAgICAg Z3NpemUgaW5wdXRfb2Zmc2V0LCBieXRlc193cml0dGVuOworICAgICAgICAgaW50IHJlc3VsdDsK KyAgICAgICAgIGdib29sZWFuIHRhaWxfYWRkZWQgPSBGQUxTRTsKKysgICAgICAgIGdib29sZWFu IHVzaW5nX2xpbWl0X3Byb2JlID0gRkFMU0U7CisrICAgICAgICBndWludDggbGltaXRfcHJvYmU7 CisgICAgICAgICBTb3VwV2Vic29ja2V0RXh0ZW5zaW9uRGVmbGF0ZVByaXZhdGUgKnByaXY7Cisg CisgICAgICAgICBwcml2ID0gc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX2RlZmxhdGVfZ2V0X2lu c3RhbmNlX3ByaXZhdGUgKFNPVVBfV0VCU09DS0VUX0VYVEVOU0lPTl9ERUZMQVRFIChleHRlbnNp b24pKTsKK0BAIC0zOTQsNiArNDA0LDcgQEAgc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX2RlZmxh dGVfcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlIChTb3VwV2Vic29ja2V0RXh0ZW5zaW8KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU09VUF9XRUJTT0NLRVRfRVJST1IsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPVVBfV0VCU09DS0VUX0NMT1NF X1BST1RPQ09MX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi UmVjZWl2ZWQgYSBub24tZmlyc3QgZnJhbWUgd2l0aCBSU1YxIGZsYWcgc2V0Iik7CisrICAgICAg ICAgICAgICAgIGluZmxhdGVyX3Jlc2V0ICgmcHJpdi0+aW5mbGF0ZXIpOworICAgICAgICAgICAg ICAgICBnX2J5dGVzX3VucmVmIChwYXlsb2FkKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIE5V TEw7CisgICAgICAgICB9CitAQCAtNDEwLDY0ICs0MjEsMTIyIEBAIHNvdXBfd2Vic29ja2V0X2V4 dGVuc2lvbl9kZWZsYXRlX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZSAoU291cFdlYnNvY2tldEV4 dGVuc2lvCisgCisgICAgICAgICBidWZmZXIgPSBnX2J5dGVfYXJyYXlfbmV3ICgpOworIAorLSAg ICAgICAgYnl0ZXNfcmVhZCA9IDA7CistICAgICAgICBwcml2LT5pbmZsYXRlci56c3RyZWFtLm5l eHRfaW4gPSAodm9pZCAqKXBheWxvYWRfZGF0YTsKKy0gICAgICAgIHByaXYtPmluZmxhdGVyLnpz dHJlYW0uYXZhaWxfaW4gPSBwYXlsb2FkX2xlbmd0aDsKKy0KKysgICAgICAgIGlucHV0X29mZnNl dCA9IDA7CisrICAgICAgICBwcml2LT5pbmZsYXRlci56c3RyZWFtLmF2YWlsX2luID0gMDsKKyAg ICAgICAgIGJ5dGVzX3dyaXR0ZW4gPSAwOworICAgICAgICAgcHJpdi0+aW5mbGF0ZXIuenN0cmVh bS5hdmFpbF9vdXQgPSAwOworIAorLSAgICAgICAgZG8geworLSAgICAgICAgICAgICAgICBnc2l6 ZSByZWFkX3JlbWFpbmluZzsKKy0gICAgICAgICAgICAgICAgZ3NpemUgd3JpdGVfcmVtYWluaW5n OworKyAgICAgICAgd2hpbGUgKFRSVUUpIHsKKysgICAgICAgICAgICAgICAgdUludCBpbnB1dF9i ZWZvcmUsIG91dHB1dF9iZWZvcmU7CisrICAgICAgICAgICAgICAgIHVJbnQgaW5wdXRfY29uc3Vt ZWQsIG91dHB1dF9wcm9kdWNlZDsKKyAKKy0gICAgICAgICAgICAgICAgaWYgKHByaXYtPmluZmxh dGVyLnpzdHJlYW0uYXZhaWxfb3V0ID09IDApIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICBn dWludCBjdXJyZW50X3Bvc2l0aW9uOworKyAgICAgICAgICAgICAgICBpZiAocHJpdi0+aW5mbGF0 ZXIuenN0cmVhbS5hdmFpbF9pbiA9PSAwICYmIGlucHV0X29mZnNldCA8IHBheWxvYWRfbGVuZ3Ro KSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgaW5wdXRfbGVuZ3RoID0gTUlOIChw YXlsb2FkX2xlbmd0aCAtIGlucHV0X29mZnNldCwgR19NQVhVSU5UKTsKKyAKKy0gICAgICAgICAg ICAgICAgICAgICAgICBwcml2LT5pbmZsYXRlci56c3RyZWFtLmF2YWlsX291dCA9IEJVRkZFUl9T SVpFOworLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfcG9zaXRpb24gPSBidWZmZXIt PmxlbjsKKy0gICAgICAgICAgICAgICAgICAgICAgICBnX2J5dGVfYXJyYXlfc2V0X3NpemUgKGJ1 ZmZlciwgYnVmZmVyLT5sZW4gKyBCVUZGRVJfU0laRSk7CistICAgICAgICAgICAgICAgICAgICAg ICAgcHJpdi0+aW5mbGF0ZXIuenN0cmVhbS5uZXh0X291dCA9IGJ1ZmZlci0+ZGF0YSArIGN1cnJl bnRfcG9zaXRpb247CisrICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+aW5mbGF0ZXIuenN0 cmVhbS5uZXh0X2luID0gKHZvaWQgKikocGF5bG9hZF9kYXRhICsgaW5wdXRfb2Zmc2V0KTsKKysg ICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5pbmZsYXRlci56c3RyZWFtLmF2YWlsX2luID0g KHVJbnQpaW5wdXRfbGVuZ3RoOworKyAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X29mZnNl dCArPSBpbnB1dF9sZW5ndGg7CisgICAgICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICAg ICAgaWYgKHByaXYtPmluZmxhdGVyLnpzdHJlYW0uYXZhaWxfaW4gPT0gMCAmJiAhdGFpbF9hZGRl ZCAmJiBmaW4pIHsKKysgICAgICAgICAgICAgICAgaWYgKHByaXYtPmluZmxhdGVyLnpzdHJlYW0u YXZhaWxfaW4gPT0gMCAmJgorKyAgICAgICAgICAgICAgICAgICAgaW5wdXRfb2Zmc2V0ID09IHBh eWxvYWRfbGVuZ3RoICYmCisrICAgICAgICAgICAgICAgICAgICAhdGFpbF9hZGRlZCAmJiBmaW4p IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBcHBlbmQgNCBvY3RldHMgb2YgMHgwMCAw eDAwIDB4ZmYgMHhmZiB0byB0aGUgdGFpbCBlbmQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAg ICBwcml2LT5pbmZsYXRlci56c3RyZWFtLm5leHRfaW4gPSAodm9pZCAqKSJceDAwXHgwMFx4ZmZc eGZmIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5pbmZsYXRlci56c3RyZWFtLmF2 YWlsX2luID0gNDsKKy0gICAgICAgICAgICAgICAgICAgICAgICBieXRlc19yZWFkID0gMDsKKyAg ICAgICAgICAgICAgICAgICAgICAgICB0YWlsX2FkZGVkID0gVFJVRTsKKyAgICAgICAgICAgICAg ICAgfQorIAorLSAgICAgICAgICAgICAgICByZWFkX3JlbWFpbmluZyA9IHRhaWxfYWRkZWQgPyA0 IDogcGF5bG9hZF9sZW5ndGggLSBieXRlc19yZWFkOworLSAgICAgICAgICAgICAgICB3cml0ZV9y ZW1haW5pbmcgPSBidWZmZXItPmxlbiAtIGJ5dGVzX3dyaXR0ZW47CisrICAgICAgICAgICAgICAg IGlmIChwcml2LT5pbmZsYXRlci56c3RyZWFtLmF2YWlsX291dCA9PSAwKSB7CisrICAgICAgICAg ICAgICAgICAgICAgICAgZ3VpbnQgb3V0cHV0X2xlbmd0aCA9IEJVRkZFUl9TSVpFOworKworKyAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChieXRlc193cml0dGVuID49IG1heF9vdXRwdXRfc2l6 ZSB8fCBidWZmZXItPmxlbiA9PSBHX01BWFVJTlQpIHsKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHByaXYtPmluZmxhdGVyLnpzdHJlYW0ubmV4dF9vdXQgPSAmbGltaXRfcHJvYmU7 CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5pbmZsYXRlci56c3RyZWFt LmF2YWlsX291dCA9IDE7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ19s aW1pdF9wcm9iZSA9IFRSVUU7CisrICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgcmVtYWluaW5nID0gbWF4X291 dHB1dF9zaXplIC0gYnl0ZXNfd3JpdHRlbjsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGd1aW50IGN1cnJlbnRfcG9zaXRpb24gPSBidWZmZXItPmxlbjsKKysKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9sZW5ndGggPSBNSU4gKChndWludDY0KW91dHB1 dF9sZW5ndGgsIHJlbWFpbmluZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv dXRwdXRfbGVuZ3RoID0gTUlOIChvdXRwdXRfbGVuZ3RoLCBHX01BWFVJTlQgLSBidWZmZXItPmxl bik7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX2Fzc2VydCAob3V0cHV0X2xl bmd0aCA+IDApOworKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19ieXRlX2Fy cmF5X3NldF9zaXplIChidWZmZXIsIGJ1ZmZlci0+bGVuICsgb3V0cHV0X2xlbmd0aCk7CisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5pbmZsYXRlci56c3RyZWFtLm5leHRf b3V0ID0gYnVmZmVyLT5kYXRhICsgY3VycmVudF9wb3NpdGlvbjsKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHByaXYtPmluZmxhdGVyLnpzdHJlYW0uYXZhaWxfb3V0ID0gb3V0cHV0 X2xlbmd0aDsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nX2xpbWl0X3By b2JlID0gRkFMU0U7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAg ICB9CisrCisrICAgICAgICAgICAgICAgIGlucHV0X2JlZm9yZSA9IHByaXYtPmluZmxhdGVyLnpz dHJlYW0uYXZhaWxfaW47CisrICAgICAgICAgICAgICAgIG91dHB1dF9iZWZvcmUgPSBwcml2LT5p bmZsYXRlci56c3RyZWFtLmF2YWlsX291dDsKKyAgICAgICAgICAgICAgICAgcmVzdWx0ID0gaW5m bGF0ZSAoJnByaXYtPmluZmxhdGVyLnpzdHJlYW0sIHRhaWxfYWRkZWQgPyBaX0ZJTklTSCA6IFpf Tk9fRkxVU0gpOworLSAgICAgICAgICAgICAgICBieXRlc19yZWFkICs9IHJlYWRfcmVtYWluaW5n IC0gcHJpdi0+aW5mbGF0ZXIuenN0cmVhbS5hdmFpbF9pbjsKKy0gICAgICAgICAgICAgICAgYnl0 ZXNfd3JpdHRlbiArPSB3cml0ZV9yZW1haW5pbmcgLSBwcml2LT5pbmZsYXRlci56c3RyZWFtLmF2 YWlsX291dDsKKysgICAgICAgICAgICAgICAgaW5wdXRfY29uc3VtZWQgPSBpbnB1dF9iZWZvcmUg LSBwcml2LT5pbmZsYXRlci56c3RyZWFtLmF2YWlsX2luOworKyAgICAgICAgICAgICAgICBvdXRw dXRfcHJvZHVjZWQgPSBvdXRwdXRfYmVmb3JlIC0gcHJpdi0+aW5mbGF0ZXIuenN0cmVhbS5hdmFp bF9vdXQ7CisrCisrICAgICAgICAgICAgICAgIGlmICh1c2luZ19saW1pdF9wcm9iZSAmJiBvdXRw dXRfcHJvZHVjZWQgPiAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0cHV0X3Rv b19sYXJnZTsKKysKKysgICAgICAgICAgICAgICAgYnl0ZXNfd3JpdHRlbiArPSBvdXRwdXRfcHJv ZHVjZWQ7CisrCisgICAgICAgICAgICAgICAgIGlmICghdGFpbF9hZGRlZCAmJiByZXN1bHQgPT0g Wl9TVFJFQU1fRU5EKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgLyogUmVjZWl2ZWQgYSBi bG9jayB3aXRoIEJGSU5BTCBzZXQgdG8gMS4gUmVzZXQgZGVjb21wcmVzc2lvbiBzdGF0ZS4gKi8K KyAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBpbmZsYXRlUmVzZXQgKCZwcml2LT5p bmZsYXRlci56c3RyZWFtKTsKKyAgICAgICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgICAg ICBpZiAoKCFmaW4gJiYgYnl0ZXNfcmVhZCA9PSBwYXlsb2FkX2xlbmd0aCkgfHwgKGZpbiAmJiB0 YWlsX2FkZGVkICYmIGJ5dGVzX3JlYWQgPT0gNCkpCistICAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7CistICAgICAgICB9IHdoaWxlIChyZXN1bHQgPT0gWl9PSyB8fCByZXN1bHQgPT0gWl9C VUZfRVJST1IpOworLQorLSAgICAgICAgZ19ieXRlc191bnJlZiAocGF5bG9hZCk7CisrICAgICAg ICAgICAgICAgIGlmIChyZXN1bHQgIT0gWl9PSyAmJiByZXN1bHQgIT0gWl9CVUZfRVJST1IpCisr ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBpbnZhbGlkX2RhdGE7CisgCistICAgICAgICBp ZiAocmVzdWx0ICE9IFpfT0sgJiYgcmVzdWx0ICE9IFpfQlVGX0VSUk9SKSB7CistICAgICAgICAg ICAgICAgIHByaXYtPmluZmxhdGVyLnVuY29tcHJlc3Nfb25nb2luZyA9IEZBTFNFOworLSAgICAg ICAgICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsIChlcnJvciwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU09VUF9XRUJTT0NLRVRfRVJST1IsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFNPVVBfV0VCU09DS0VUX0NMT1NFX1BST1RPQ09MX0VS Uk9SLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHVu Y29tcHJlc3MgaW5jb21pbmcgZnJhbWUiKTsKKy0gICAgICAgICAgICAgICAgZ19ieXRlX2FycmF5 X3VucmVmIChidWZmZXIpOworKyAgICAgICAgICAgICAgICBpZiAocHJpdi0+aW5mbGF0ZXIuenN0 cmVhbS5hdmFpbF9pbiA9PSAwICYmCisrICAgICAgICAgICAgICAgICAgICBpbnB1dF9vZmZzZXQg PT0gcGF5bG9hZF9sZW5ndGggJiYKKysgICAgICAgICAgICAgICAgICAgICgoIWZpbiAmJiAhdGFp bF9hZGRlZCkgfHwgKGZpbiAmJiB0YWlsX2FkZGVkKSkgJiYKKysgICAgICAgICAgICAgICAgICAg IHByaXYtPmluZmxhdGVyLnpzdHJlYW0uYXZhaWxfb3V0ID4gMCkKKysgICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsKKyAKKy0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisrICAgICAg ICAgICAgICAgIGlmIChpbnB1dF9jb25zdW1lZCA9PSAwICYmIG91dHB1dF9wcm9kdWNlZCA9PSAw KQorKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gaW52YWxpZF9kYXRhOworICAgICAgICAg fQorIAorKyAgICAgICAgZ19ieXRlc191bnJlZiAocGF5bG9hZCk7CisgICAgICAgICBnX2J5dGVf YXJyYXlfc2V0X3NpemUgKGJ1ZmZlciwgYnl0ZXNfd3JpdHRlbik7CisgCisgICAgICAgICByZXR1 cm4gZ19ieXRlX2FycmF5X2ZyZWVfdG9fYnl0ZXMgKGJ1ZmZlcik7CisrCisrb3V0cHV0X3Rvb19s YXJnZToKKysgICAgICAgIGluZmxhdGVyX3Jlc2V0ICgmcHJpdi0+aW5mbGF0ZXIpOworKyAgICAg ICAgZ19ieXRlc191bnJlZiAocGF5bG9hZCk7CisrICAgICAgICBnX2J5dGVfYXJyYXlfdW5yZWYg KGJ1ZmZlcik7CisrICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsIChlcnJvciwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNPVVBfV0VCU09DS0VUX0VSUk9SLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU09VUF9XRUJTT0NLRVRfQ0xPU0VfVE9PX0JJRywKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJEZWNvbXByZXNzZWQgV2ViU29ja2V0IG1lc3NhZ2UgZXhj ZWVkcyBjb25maWd1cmVkIG1heGltdW0gc2l6ZSIpOworKworKyAgICAgICAgcmV0dXJuIE5VTEw7 CisrCisraW52YWxpZF9kYXRhOgorKyAgICAgICAgaW5mbGF0ZXJfcmVzZXQgKCZwcml2LT5pbmZs YXRlcik7CisrICAgICAgICBnX2J5dGVzX3VucmVmIChwYXlsb2FkKTsKKysgICAgICAgIGdfYnl0 ZV9hcnJheV91bnJlZiAoYnVmZmVyKTsKKysgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwgKGVy cm9yLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU09VUF9XRUJTT0NLRVRfRVJST1Is CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT1VQX1dFQlNPQ0tFVF9DTE9TRV9QUk9U T0NPTF9FUlJPUiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gdW5j b21wcmVzcyBpbmNvbWluZyBmcmFtZSIpOworKworKyAgICAgICAgcmV0dXJuIE5VTEw7CisrfQor KworK3N0YXRpYyBHQnl0ZXMgKgorK3NvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9kZWZsYXRlX3By b2Nlc3NfaW5jb21pbmdfbWVzc2FnZSAoU291cFdlYnNvY2tldEV4dGVuc2lvbiAqZXh0ZW5zaW9u LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ3VpbnQ4ICAgICAgICAgICAgICAgICAqaGVhZGVyLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0J5dGVzICAgICAgICAg ICAgICAgICAqcGF5bG9hZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAqKmVycm9yKQorK3sK KysgICAgICAgIHJldHVybiBzb3VwX3dlYnNvY2tldF9leHRlbnNpb25fZGVmbGF0ZV9wcm9jZXNz X2luY29taW5nX21lc3NhZ2Vfd2l0aF9saW1pdCAoZXh0ZW5zaW9uLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBoZWFkZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxv YWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYVUlOVDY0LAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlcnJvcik7CisgfQorIAorIHN0YXRpYyB2b2lkCitAQCAtNDgz LDYgKzU1Miw3IEBAIHNvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9kZWZsYXRlX2NsYXNzX2luaXQg KFNvdXBXZWJzb2NrZXRFeHRlbnNpb25EZWZsYXRlQ2xhc3MKKyAgICAgICAgIGV4dGVuc2lvbl9j bGFzcy0+Z2V0X3Jlc3BvbnNlX3BhcmFtcyA9IHNvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9kZWZs YXRlX2dldF9yZXNwb25zZV9wYXJhbXM7CisgICAgICAgICBleHRlbnNpb25fY2xhc3MtPnByb2Nl c3Nfb3V0Z29pbmdfbWVzc2FnZSA9IHNvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9kZWZsYXRlX3By b2Nlc3Nfb3V0Z29pbmdfbWVzc2FnZTsKKyAgICAgICAgIGV4dGVuc2lvbl9jbGFzcy0+cHJvY2Vz c19pbmNvbWluZ19tZXNzYWdlID0gc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX2RlZmxhdGVfcHJv Y2Vzc19pbmNvbWluZ19tZXNzYWdlOworKyAgICAgICAgZXh0ZW5zaW9uX2NsYXNzLT5wcm9jZXNz X2luY29taW5nX21lc3NhZ2Vfd2l0aF9saW1pdCA9IHNvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9k ZWZsYXRlX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZV93aXRoX2xpbWl0OworIAorICAgICAgICAg b2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IHNvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9kZWZsYXRl X2ZpbmFsaXplOworIH0KK2RpZmYgLS1naXQgYS9saWJzb3VwL3dlYnNvY2tldC9zb3VwLXdlYnNv Y2tldC1leHRlbnNpb24uYyBiL2xpYnNvdXAvd2Vic29ja2V0L3NvdXAtd2Vic29ja2V0LWV4dGVu c2lvbi5jCitpbmRleCA4ODgyZDJjMC4uOTU3MTllOGMgMTAwNjQ0CistLS0gYS9saWJzb3VwL3dl YnNvY2tldC9zb3VwLXdlYnNvY2tldC1leHRlbnNpb24uYworKysrIGIvbGlic291cC93ZWJzb2Nr ZXQvc291cC13ZWJzb2NrZXQtZXh0ZW5zaW9uLmMKK0BAIC00Nyw2ICs0Nyw5IEBACisgICogICAg YmVmb3JlIGl0J3Mgc2VudC4gUmVzZXJ2ZWQgYml0cyBvZiB0aGUgaGVhZGVyIHNob3VsZCBiZSBj aGFuZ2VkLgorICAqIEBwcm9jZXNzX2luY29taW5nX21lc3NhZ2U6IGNhbGxlZCB0byBwcm9jZXNz IHRoZSBwYXlsb2FkIGRhdGEgb2YgYSBtZXNzYWdlCisgICogICAgYWZ0ZXIgaXQncyByZWNlaXZl ZC4gUmVzZXJ2ZWQgYml0cyBvZiB0aGUgaGVhZGVyIHNob3VsZCBiZSBjbGVhcmVkLgorKyAqIEBw cm9jZXNzX2luY29taW5nX21lc3NhZ2Vfd2l0aF9saW1pdDogY2FsbGVkIHRvIHByb2Nlc3MgdGhl IHBheWxvYWQgZGF0YSBvZgorKyAqICAgIGEgbWVzc2FnZSBhZnRlciBpdCdzIHJlY2VpdmVkIHdp dGhvdXQgZXhjZWVkaW5nIHRoZSByZXF1ZXN0ZWQgbWF4aW11bQorKyAqICAgIG91dHB1dCBzaXpl LiBJZiB1bnNldCwgQHByb2Nlc3NfaW5jb21pbmdfbWVzc2FnZSBpcyB1c2VkLiBTaW5jZSAzLjgK KyAgKgorICAqIFRoZSBjbGFzcyBzdHJ1Y3R1cmUgZm9yIHRoZSBbY2xhc3NAV2Vic29ja2V0RXh0 ZW5zaW9uXS4KKyAgKi8KK0BAIC0yMTYsMyArMjE5LDUzIEBAIHNvdXBfd2Vic29ja2V0X2V4dGVu c2lvbl9wcm9jZXNzX2luY29taW5nX21lc3NhZ2UgKFNvdXBXZWJzb2NrZXRFeHRlbnNpb24gKmV4 dGVuCisgCisgCXJldHVybiBrbGFzcy0+cHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlIChleHRlbnNp b24sIGhlYWRlciwgcGF5bG9hZCwgZXJyb3IpOworIH0KKysKKysvKioKKysgKiBzb3VwX3dlYnNv Y2tldF9leHRlbnNpb25fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlX3dpdGhfbGltaXQ6CisrICog QGV4dGVuc2lvbjogYSAjU291cFdlYnNvY2tldEV4dGVuc2lvbgorKyAqIEBoZWFkZXI6IChpbm91 dCk6IHRoZSBtZXNzYWdlIGhlYWRlcgorKyAqIEBwYXlsb2FkOiAodHJhbnNmZXIgZnVsbCk6IHRo ZSBwYXlsb2FkIGRhdGEKKysgKiBAbWF4X291dHB1dF9zaXplOiB0aGUgbWF4aW11bSBzaXplIGlu IGJ5dGVzIG9mIHRoZSBwcm9jZXNzZWQgcGF5bG9hZAorKyAqIEBlcnJvcjogcmV0dXJuIGxvY2F0 aW9uIGZvciBhICNHRXJyb3IKKysgKgorKyAqIFByb2Nlc3MgYSBtZXNzYWdlIGFmdGVyIGl0J3Mg cmVjZWl2ZWQsIHdpdGhvdXQgcHJvZHVjaW5nIG1vcmUgdGhhbgorKyAqIEBtYXhfb3V0cHV0X3Np emUgYnl0ZXMgb2Ygb3V0cHV0LgorKyAqCisrICogVGhpcyBiZWhhdmVzIGxpa2UgW21ldGhvZEBX ZWJzb2NrZXRFeHRlbnNpb24ucHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlXSwKKysgKiBidXQgZXh0 ZW5zaW9ucyB0aGF0IGV4cGFuZCB0aGVpciBpbnB1dCAoc3VjaCBhcyBgcGVybWVzc2FnZS1kZWZs YXRlYCkKKysgKiBzdG9wIGFuZCByZXR1cm4gYW4gZXJyb3Igd2l0aCBbZXJyb3JAV2Vic29ja2V0 RXJyb3IuQ0xPU0VfVE9PX0JJR10KKysgKiBpbnN0ZWFkIG9mIHByb2R1Y2luZyBvdXRwdXQgbGFy Z2VyIHRoYW4gQG1heF9vdXRwdXRfc2l6ZS4gRXh0ZW5zaW9ucworKyAqIHRoYXQgZG9uJ3QgaW1w bGVtZW50IHRoaXMgZmFsbCBiYWNrIHRvCisrICogW21ldGhvZEBXZWJzb2NrZXRFeHRlbnNpb24u cHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlXS4KKysgKgorKyAqIFJldHVybnM6ICh0cmFuc2ZlciBm dWxsKTogdGhlIG1lc3NhZ2UgcGF5bG9hZCBkYXRhLCBvciAlTlVMTCBpbiBjYXNlIG9mIGVycm9y CisrICoKKysgKiBTaW5jZTogMy44CisrICovCisrR0J5dGVzICoKKytzb3VwX3dlYnNvY2tldF9l eHRlbnNpb25fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlX3dpdGhfbGltaXQgKFNvdXBXZWJzb2Nr ZXRFeHRlbnNpb24gKmV4dGVuc2lvbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50OCAgICAgICAgICAgICAgICAgKmhl YWRlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdCeXRlcyAgICAgICAgICAgICAgICAgKnBheWxvYWQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlu dDY0ICAgICAgICAgICAgICAgICBtYXhfb3V0cHV0X3NpemUsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAg ICAgICAgICAgKiplcnJvcikKKyt7CisrCVNvdXBXZWJzb2NrZXRFeHRlbnNpb25DbGFzcyAqa2xh c3M7CisrCisrCWdfcmV0dXJuX3ZhbF9pZl9mYWlsIChTT1VQX0lTX1dFQlNPQ0tFVF9FWFRFTlNJ T04gKGV4dGVuc2lvbiksIE5VTEwpOworKwlnX3JldHVybl92YWxfaWZfZmFpbCAoaGVhZGVyICE9 IE5VTEwsIE5VTEwpOworKwlnX3JldHVybl92YWxfaWZfZmFpbCAocGF5bG9hZCAhPSBOVUxMLCBO VUxMKTsKKysJZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGVycm9yID09IE5VTEwgfHwgKmVycm9yID09 IE5VTEwsIE5VTEwpOworKworKwlrbGFzcyA9IFNPVVBfV0VCU09DS0VUX0VYVEVOU0lPTl9HRVRf Q0xBU1MgKGV4dGVuc2lvbik7CisrCWlmICgha2xhc3MtPnByb2Nlc3NfaW5jb21pbmdfbWVzc2Fn ZV93aXRoX2xpbWl0KQorKwkJcmV0dXJuIHNvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9wcm9jZXNz X2luY29taW5nX21lc3NhZ2UgKGV4dGVuc2lvbiwKKysJCQkJCQkJCQkgIGhlYWRlciwKKysJCQkJ CQkJCQkgIHBheWxvYWQsCisrCQkJCQkJCQkJICBlcnJvcik7CisrCisrCXJldHVybiBrbGFzcy0+ cHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlX3dpdGhfbGltaXQgKGV4dGVuc2lvbiwKKysJCQkJCQkJ ICAgaGVhZGVyLAorKwkJCQkJCQkgICBwYXlsb2FkLAorKwkJCQkJCQkgICBtYXhfb3V0cHV0X3Np emUsCisrCQkJCQkJCSAgIGVycm9yKTsKKyt9CitkaWZmIC0tZ2l0IGEvbGlic291cC93ZWJzb2Nr ZXQvc291cC13ZWJzb2NrZXQtZXh0ZW5zaW9uLmggYi9saWJzb3VwL3dlYnNvY2tldC9zb3VwLXdl YnNvY2tldC1leHRlbnNpb24uaAoraW5kZXggMTkzMWEyNjQuLmE5ZDVlMzVjIDEwMDY0NAorLS0t IGEvbGlic291cC93ZWJzb2NrZXQvc291cC13ZWJzb2NrZXQtZXh0ZW5zaW9uLmgKKysrKyBiL2xp YnNvdXAvd2Vic29ja2V0L3NvdXAtd2Vic29ja2V0LWV4dGVuc2lvbi5oCitAQCAtNTUsOCArNTUs MTQgQEAgc3RydWN0IF9Tb3VwV2Vic29ja2V0RXh0ZW5zaW9uQ2xhc3MgeworIAkJCQkJICAgICAg IEdCeXRlcyAgICAgICAgICAgICAgICAgICAgICpwYXlsb2FkLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICAgICAq KmVycm9yKTsKKyAKKysJR0J5dGVzICAqKCogcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlX3dpdGhf bGltaXQpIChTb3VwV2Vic29ja2V0RXh0ZW5zaW9uICpleHRlbnNpb24sCisrCSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ4ICAgICAgICAgICAg ICAgICAqaGVhZGVyLAorKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdCeXRlcyAgICAgICAgICAgICAgICAgKnBheWxvYWQsCisrCSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ2NCAgICAgICAgICAg ICAgICAgbWF4X291dHB1dF9zaXplLAorKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAqKmVycm9yKTsKKysKKyAg ICAgICAgIC8qIDxwcml2YXRlPiAqLworLQlncG9pbnRlciBwYWRkaW5nWzZdOworKwlncG9pbnRl ciBwYWRkaW5nWzVdOworIH07CisgCisgU09VUF9BVkFJTEFCTEVfSU5fQUxMCitAQCAtODAsNSAr ODYsMTEgQEAgR0J5dGVzICAgICAgICAgICAgICAgICAgKnNvdXBfd2Vic29ja2V0X2V4dGVuc2lv bl9wcm9jZXNzX2luY29taW5nX21lc3NhZ2UgKFNvdXAKKyAJCQkJCQkJCQkgICAgZ3VpbnQ4ICAg ICAgICAgICAgICAgICAgICAgKmhlYWRlciwKKyAJCQkJCQkJCQkgICAgR0J5dGVzICAgICAgICAg ICAgICAgICAgICAgKnBheWxvYWQsCisgCQkJCQkJCQkJICAgIEdFcnJvciAgICAgICAgICAgICAg ICAgICAgKiplcnJvcik7CisrU09VUF9BVkFJTEFCTEVfSU5fQUxMCisrR0J5dGVzICAgICAgICAg ICAgICAgICAgKnNvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9wcm9jZXNzX2luY29taW5nX21lc3Nh Z2Vfd2l0aF9saW1pdCAoU291cFdlYnNvY2tldEV4dGVuc2lvbiAqZXh0ZW5zaW9uLAorKwkJCQkJ CQkJCQkJICAgICAgIGd1aW50OCAgICAgICAgICAgICAgICAgKmhlYWRlciwKKysJCQkJCQkJCQkJ CSAgICAgICBHQnl0ZXMgICAgICAgICAgICAgICAgICpwYXlsb2FkLAorKwkJCQkJCQkJCQkJICAg ICAgIGd1aW50NjQgICAgICAgICAgICAgICAgIG1heF9vdXRwdXRfc2l6ZSwKKysJCQkJCQkJCQkJ CSAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgKiplcnJvcik7CisgCisgR19FTkRfREVDTFMK K2RpZmYgLS1naXQgYS90ZXN0cy93ZWJzb2NrZXQtdGVzdC5jIGIvdGVzdHMvd2Vic29ja2V0LXRl c3QuYworaW5kZXggYzkyNDYwMS4uOTEzNjkxZCAxMDA2NDQKKy0tLSBhL3Rlc3RzL3dlYnNvY2tl dC10ZXN0LmMKKysrKyBiL3Rlc3RzL3dlYnNvY2tldC10ZXN0LmMKK0BAIC03Myw2ICs3MywxOCBA QCBvbl9lcnJvcl9jb3B5IChTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiAqd3MsCisgCSpjb3B5ID0g Z19lcnJvcl9jb3B5IChlcnJvcik7CisgfQorIAorK3N0YXRpYyB2b2lkCisrb25fZXJyb3JfY29w eV9vbmNlIChTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiAqd3MsCisrCQkgICAgR0Vycm9yICplcnJv ciwKKysJCSAgICBncG9pbnRlciB1c2VyX2RhdGEpCisreworKwlHRXJyb3IgKipjb3B5ID0gdXNl cl9kYXRhOworKworKwlnX2Fzc2VydF9udWxsICgqY29weSk7CisrCSpjb3B5ID0gZ19lcnJvcl9j b3B5IChlcnJvcik7CisrCWdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyAod3Ms IEdfQ0FMTEJBQ0sgKG9uX2Vycm9yX2NvcHlfb25jZSksIHVzZXJfZGF0YSk7CisrfQorKworIHN0 YXRpYyB2b2lkCisgc2V0dXBfbGlzdGVuZXIgKFRlc3QgKnRlc3QpCisgeworQEAgLTEzNjcsNiAr MTM3OSwyMTMgQEAgc2VuZF9mcmFnbWVudHNfc2VydmVyX3RocmVhZCAoZ3BvaW50ZXIgdXNlcl9k YXRhKQorIAlyZXR1cm4gTlVMTDsKKyB9CisgCisrdHlwZWRlZiBzdHJ1Y3QgeworKwlTb3VwV2Vi c29ja2V0RXh0ZW5zaW9uIHBhcmVudF9pbnN0YW5jZTsKKyt9IExlZ2FjeVdlYnNvY2tldEV4dGVu c2lvbjsKKysKKyt0eXBlZGVmIHN0cnVjdCB7CisrCVNvdXBXZWJzb2NrZXRFeHRlbnNpb25DbGFz cyBwYXJlbnRfY2xhc3M7CisrfSBMZWdhY3lXZWJzb2NrZXRFeHRlbnNpb25DbGFzczsKKysKKytH VHlwZSBsZWdhY3lfd2Vic29ja2V0X2V4dGVuc2lvbl9nZXRfdHlwZSAodm9pZCk7CisrCisrI2Rl ZmluZSBMRUdBQ1lfVFlQRV9XRUJTT0NLRVRfRVhURU5TSU9OIChsZWdhY3lfd2Vic29ja2V0X2V4 dGVuc2lvbl9nZXRfdHlwZSAoKSkKKytHX0RFRklORV9UWVBFIChMZWdhY3lXZWJzb2NrZXRFeHRl bnNpb24sIGxlZ2FjeV93ZWJzb2NrZXRfZXh0ZW5zaW9uLCBTT1VQX1RZUEVfV0VCU09DS0VUX0VY VEVOU0lPTikKKysKKytzdGF0aWMgZ2Jvb2xlYW4gbGVnYWN5X2V4dGVuc2lvbl9wcm9jZXNzZWQ7 CisrCisrc3RhdGljIEdCeXRlcyAqCisrbGVnYWN5X3dlYnNvY2tldF9leHRlbnNpb25fcHJvY2Vz c19pbmNvbWluZ19tZXNzYWdlIChTb3VwV2Vic29ja2V0RXh0ZW5zaW9uICpleHRlbnNpb24sCisr CQkJCQkJICAgICBndWludDggICAgICAgICAgICAgICAgICpoZWFkZXIsCisrCQkJCQkJICAgICBH Qnl0ZXMgICAgICAgICAgICAgICAgICpwYXlsb2FkLAorKwkJCQkJCSAgICAgR0Vycm9yICAgICAg ICAgICAgICAgICoqZXJyb3IpCisreworKwlsZWdhY3lfZXh0ZW5zaW9uX3Byb2Nlc3NlZCA9IFRS VUU7CisrCisrCXJldHVybiBwYXlsb2FkOworK30KKysKKytzdGF0aWMgdm9pZAorK2xlZ2FjeV93 ZWJzb2NrZXRfZXh0ZW5zaW9uX2NsYXNzX2luaXQgKExlZ2FjeVdlYnNvY2tldEV4dGVuc2lvbkNs YXNzICprbGFzcykKKyt7CisrCVNvdXBXZWJzb2NrZXRFeHRlbnNpb25DbGFzcyAqZXh0ZW5zaW9u X2NsYXNzID0gU09VUF9XRUJTT0NLRVRfRVhURU5TSU9OX0NMQVNTIChrbGFzcyk7CisrCisrCWV4 dGVuc2lvbl9jbGFzcy0+cHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlID0gbGVnYWN5X3dlYnNvY2tl dF9leHRlbnNpb25fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlOworK30KKysKKytzdGF0aWMgdm9p ZAorK2xlZ2FjeV93ZWJzb2NrZXRfZXh0ZW5zaW9uX2luaXQgKExlZ2FjeVdlYnNvY2tldEV4dGVu c2lvbiAqZXh0ZW5zaW9uKQorK3sKKyt9CisrCisrc3RhdGljIHZvaWQKKyt0ZXN0X3dlYnNvY2tl dF9leHRlbnNpb25fbGltaXRfZmFsbGJhY2sgKHZvaWQpCisreworKwlTb3VwV2Vic29ja2V0RXh0 ZW5zaW9uICpleHRlbnNpb247CisrCUdCeXRlcyAqcGF5bG9hZDsKKysJR0J5dGVzICpvdXRwdXQ7 CisrCUdFcnJvciAqZXJyb3IgPSBOVUxMOworKwlndWludDggaGVhZGVyID0gMHg4MjsKKysKKysJ bGVnYWN5X2V4dGVuc2lvbl9wcm9jZXNzZWQgPSBGQUxTRTsKKysJZXh0ZW5zaW9uID0gZ19vYmpl Y3RfbmV3IChMRUdBQ1lfVFlQRV9XRUJTT0NLRVRfRVhURU5TSU9OLCBOVUxMKTsKKysJcGF5bG9h ZCA9IGdfYnl0ZXNfbmV3X3N0YXRpYyAoIngiLCAxKTsKKysJb3V0cHV0ID0gc291cF93ZWJzb2Nr ZXRfZXh0ZW5zaW9uX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZV93aXRoX2xpbWl0IChleHRlbnNp b24sCisrCQkJCQkJCQkJICAgICAgICZoZWFkZXIsCisrCQkJCQkJCQkJICAgICAgIHBheWxvYWQs CisrCQkJCQkJCQkJICAgICAgIDEsCisrCQkJCQkJCQkJICAgICAgICZlcnJvcik7CisrCisrCWdf YXNzZXJ0X25vX2Vycm9yIChlcnJvcik7CisrCWdfYXNzZXJ0X3RydWUgKGxlZ2FjeV9leHRlbnNp b25fcHJvY2Vzc2VkKTsKKysJZ19hc3NlcnRfdHJ1ZSAob3V0cHV0ID09IHBheWxvYWQpOworKwor KwlnX2J5dGVzX3VucmVmIChvdXRwdXQpOworKwlnX29iamVjdF91bnJlZiAoZXh0ZW5zaW9uKTsK Kyt9CisrCisrdHlwZWRlZiBzdHJ1Y3QgeworKwlnc2l6ZSBvdXRwdXRfc2l6ZTsKKysJZ3VpbnQ2 NCBtYXhfb3V0cHV0X3NpemU7CisrCWdib29sZWFuIGV4cGVjdF90b29fYmlnOworK30gRGVmbGF0 ZU91dHB1dExpbWl0VGVzdDsKKysKKytzdGF0aWMgdm9pZAorK3Rlc3RfZGVmbGF0ZV9vdXRwdXRf bGltaXQgKGdjb25zdHBvaW50ZXIgZGF0YSkKKyt7CisrCWNvbnN0IERlZmxhdGVPdXRwdXRMaW1p dFRlc3QgKmNvbmZpZyA9IGRhdGE7CisrCVNvdXBXZWJzb2NrZXRFeHRlbnNpb24gKnNlbmRlcjsK KysJU291cFdlYnNvY2tldEV4dGVuc2lvbiAqcmVjZWl2ZXI7CisrCUdCeXRlcyAqY29tcHJlc3Nl ZDsKKysJR0J5dGVzICpvdXRwdXQ7CisrCUdFcnJvciAqZXJyb3IgPSBOVUxMOworKwlndWludDgg aGVhZGVyID0gMHg4MjsKKysKKysJc2VuZGVyID0gZ19vYmplY3RfbmV3IChTT1VQX1RZUEVfV0VC U09DS0VUX0VYVEVOU0lPTl9ERUZMQVRFLCBOVUxMKTsKKysJZ19hc3NlcnRfdHJ1ZSAoc291cF93 ZWJzb2NrZXRfZXh0ZW5zaW9uX2NvbmZpZ3VyZSAoc2VuZGVyLAorKwkJCQkJCQkgICBTT1VQX1dF QlNPQ0tFVF9DT05ORUNUSU9OX1NFUlZFUiwKKysJCQkJCQkJICAgTlVMTCwgJmVycm9yKSk7Cisr CWdfYXNzZXJ0X25vX2Vycm9yIChlcnJvcik7CisrCisrCXJlY2VpdmVyID0gZ19vYmplY3RfbmV3 IChTT1VQX1RZUEVfV0VCU09DS0VUX0VYVEVOU0lPTl9ERUZMQVRFLCBOVUxMKTsKKysJZ19hc3Nl cnRfdHJ1ZSAoc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX2NvbmZpZ3VyZSAocmVjZWl2ZXIsCisr CQkJCQkJCSAgIFNPVVBfV0VCU09DS0VUX0NPTk5FQ1RJT05fQ0xJRU5ULAorKwkJCQkJCQkgICBO VUxMLCAmZXJyb3IpKTsKKysJZ19hc3NlcnRfbm9fZXJyb3IgKGVycm9yKTsKKysKKysJY29tcHJl c3NlZCA9IGdfYnl0ZXNfbmV3X3Rha2UgKGdfbWFsbG9jMCAoY29uZmlnLT5vdXRwdXRfc2l6ZSks IGNvbmZpZy0+b3V0cHV0X3NpemUpOworKwljb21wcmVzc2VkID0gc291cF93ZWJzb2NrZXRfZXh0 ZW5zaW9uX3Byb2Nlc3Nfb3V0Z29pbmdfbWVzc2FnZSAoc2VuZGVyLCAmaGVhZGVyLAorKwkJCQkJ CQkJCWNvbXByZXNzZWQsICZlcnJvcik7CisrCWdfYXNzZXJ0X25vX2Vycm9yIChlcnJvcik7Cisr CWdfYXNzZXJ0X25vbm51bGwgKGNvbXByZXNzZWQpOworKwlnX2Fzc2VydF90cnVlIChoZWFkZXIg JiAweDQwKTsKKysJZ19hc3NlcnRfY21wdWludCAoZ19ieXRlc19nZXRfc2l6ZSAoY29tcHJlc3Nl ZCksIDwsIGNvbmZpZy0+b3V0cHV0X3NpemUpOworKworKwlvdXRwdXQgPSBzb3VwX3dlYnNvY2tl dF9leHRlbnNpb25fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlX3dpdGhfbGltaXQgKHJlY2VpdmVy LAorKwkJCQkJCQkJCSAgICAgICAmaGVhZGVyLAorKwkJCQkJCQkJCSAgICAgICBjb21wcmVzc2Vk LAorKwkJCQkJCQkJCSAgICAgICBjb25maWctPm1heF9vdXRwdXRfc2l6ZSwKKysJCQkJCQkJCQkg ICAgICAgJmVycm9yKTsKKysJaWYgKGNvbmZpZy0+ZXhwZWN0X3Rvb19iaWcpIHsKKysJCWdfYXNz ZXJ0X251bGwgKG91dHB1dCk7CisrCQlnX2Fzc2VydF9lcnJvciAoZXJyb3IsIFNPVVBfV0VCU09D S0VUX0VSUk9SLCBTT1VQX1dFQlNPQ0tFVF9DTE9TRV9UT09fQklHKTsKKysJCWdfY2xlYXJfZXJy b3IgKCZlcnJvcik7CisrCX0gZWxzZSB7CisrCQlnX2Fzc2VydF9ub19lcnJvciAoZXJyb3IpOwor KwkJZ19hc3NlcnRfbm9ubnVsbCAob3V0cHV0KTsKKysJCWdfYXNzZXJ0X2NtcHVpbnQgKGdfYnl0 ZXNfZ2V0X3NpemUgKG91dHB1dCksID09LCBjb25maWctPm91dHB1dF9zaXplKTsKKysJCWdfYnl0 ZXNfdW5yZWYgKG91dHB1dCk7CisrCX0KKysKKysJZ19vYmplY3RfdW5yZWYgKHJlY2VpdmVyKTsK KysJZ19vYmplY3RfdW5yZWYgKHNlbmRlcik7CisrfQorKworK3N0YXRpYyBjb25zdCBEZWZsYXRl T3V0cHV0TGltaXRUZXN0IGRlZmxhdGVfb3V0cHV0X2JlbG93X2xpbWl0ID0geworKwk0MDk1LCA0 MDk2LCBGQUxTRQorK307Cisrc3RhdGljIGNvbnN0IERlZmxhdGVPdXRwdXRMaW1pdFRlc3QgZGVm bGF0ZV9vdXRwdXRfYXRfbGltaXQgPSB7CisrCTQwOTYsIDQwOTYsIEZBTFNFCisrfTsKKytzdGF0 aWMgY29uc3QgRGVmbGF0ZU91dHB1dExpbWl0VGVzdCBkZWZsYXRlX291dHB1dF9vdmVyX2xpbWl0 ID0geworKwk0MDk3LCA0MDk2LCBUUlVFCisrfTsKKysKKyt0eXBlZGVmIHN0cnVjdCB7CisrCWdi b29sZWFuIHNlcnZlcl9yZWNlaXZlczsKKysJZ2Jvb2xlYW4gY29uZmlndXJlX2xpbWl0OworK30g RGVmbGF0ZU1lc3NhZ2VMaW1pdFRlc3Q7CisrCisrc3RhdGljIHZvaWQKKyt0ZXN0X2RlZmxhdGVf ZXhjZWVkc19tZXNzYWdlX2xpbWl0IChUZXN0ICp0ZXN0LAorKwkJCQkgICAgZ2NvbnN0cG9pbnRl ciBkYXRhKQorK3sKKysJY29uc3QgRGVmbGF0ZU1lc3NhZ2VMaW1pdFRlc3QgKmNvbmZpZyA9IGRh dGE7CisrCVNvdXBXZWJzb2NrZXRDb25uZWN0aW9uICpyZWNlaXZlcjsKKysJU291cFdlYnNvY2tl dENvbm5lY3Rpb24gKnNlbmRlcjsKKysJR0J5dGVzICpyZWNlaXZlZCA9IE5VTEw7CisrCUdFcnJv ciAqZXJyb3IgPSBOVUxMOworKwlndWludDggKm1lc3NhZ2U7CisrCisrCWlmIChjb25maWctPnNl cnZlcl9yZWNlaXZlcykgeworKwkJcmVjZWl2ZXIgPSB0ZXN0LT5zZXJ2ZXI7CisrCQlzZW5kZXIg PSB0ZXN0LT5jbGllbnQ7CisrCX0gZWxzZSB7CisrCQlyZWNlaXZlciA9IHRlc3QtPmNsaWVudDsK KysJCXNlbmRlciA9IHRlc3QtPnNlcnZlcjsKKysJfQorKworKwlnX3NpZ25hbF9jb25uZWN0IChy ZWNlaXZlciwgImVycm9yIiwgR19DQUxMQkFDSyAob25fZXJyb3JfY29weV9vbmNlKSwgJmVycm9y KTsKKysJZ19zaWduYWxfY29ubmVjdCAocmVjZWl2ZXIsICJtZXNzYWdlIiwgR19DQUxMQkFDSyAo b25fYmluYXJ5X21lc3NhZ2UpLCAmcmVjZWl2ZWQpOworKworKwltZXNzYWdlID0gZ19tYWxsb2Mw ICgxMjggKiAxMDI0ICsgMSk7CisrCXNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25fc2VuZF9iaW5h cnkgKHNlbmRlciwgbWVzc2FnZSwgMTI4ICogMTAyNCArIDEpOworKwlnX2ZyZWUgKG1lc3NhZ2Up OworKworKwlXQUlUX1VOVElMIChlcnJvciAhPSBOVUxMIHx8IHJlY2VpdmVkICE9IE5VTEwpOwor KwlnX2Fzc2VydF9udWxsIChyZWNlaXZlZCk7CisrCWdfYXNzZXJ0X2Vycm9yIChlcnJvciwgU09V UF9XRUJTT0NLRVRfRVJST1IsIFNPVVBfV0VCU09DS0VUX0NMT1NFX1RPT19CSUcpOworKwlnX2Ns ZWFyX2Vycm9yICgmZXJyb3IpOworKworKwlXQUlUX1VOVElMIChzb3VwX3dlYnNvY2tldF9jb25u ZWN0aW9uX2dldF9zdGF0ZSAoc2VuZGVyKSA9PSBTT1VQX1dFQlNPQ0tFVF9TVEFURV9DTE9TRUQp OworKwlnX2Fzc2VydF9udWxsIChyZWNlaXZlZCk7CisrCWdfYXNzZXJ0X2NtcHVpbnQgKHNvdXBf d2Vic29ja2V0X2Nvbm5lY3Rpb25fZ2V0X2Nsb3NlX2NvZGUgKHNlbmRlciksCisrCQkJICA9PSwg U09VUF9XRUJTT0NLRVRfQ0xPU0VfVE9PX0JJRyk7CisrfQorKworK3N0YXRpYyB2b2lkCisrdGVz dF9kZWZsYXRlX2RlZmF1bHRfdW5saW1pdGVkX21lc3NhZ2Vfc2l6ZSAoVGVzdCAqdGVzdCwKKysJ CQkJCSAgICAgZ2NvbnN0cG9pbnRlciBkYXRhKQorK3sKKysJY29uc3QgRGVmbGF0ZU1lc3NhZ2VM aW1pdFRlc3QgKmNvbmZpZyA9IGRhdGE7CisrCVNvdXBXZWJzb2NrZXRDb25uZWN0aW9uICpyZWNl aXZlcjsKKysJU291cFdlYnNvY2tldENvbm5lY3Rpb24gKnNlbmRlcjsKKysJR0J5dGVzICpyZWNl aXZlZCA9IE5VTEw7CisrCWd1aW50OCAqbWVzc2FnZTsKKysKKysJaWYgKGNvbmZpZy0+c2VydmVy X3JlY2VpdmVzKSB7CisrCQlyZWNlaXZlciA9IHRlc3QtPnNlcnZlcjsKKysJCXNlbmRlciA9IHRl c3QtPmNsaWVudDsKKysJfSBlbHNlIHsKKysJCXJlY2VpdmVyID0gdGVzdC0+Y2xpZW50OworKwkJ c2VuZGVyID0gdGVzdC0+c2VydmVyOworKwl9CisrCisrCWdfYXNzZXJ0X2ZhbHNlIChjb25maWct PmNvbmZpZ3VyZV9saW1pdCk7CisrCWdfc2lnbmFsX2Nvbm5lY3QgKHJlY2VpdmVyLCAibWVzc2Fn ZSIsIEdfQ0FMTEJBQ0sgKG9uX2JpbmFyeV9tZXNzYWdlKSwgJnJlY2VpdmVkKTsKKysKKysJbWVz c2FnZSA9IGdfbWFsbG9jMCAoMTI4ICogMTAyNCArIDEpOworKwlzb3VwX3dlYnNvY2tldF9jb25u ZWN0aW9uX3NlbmRfYmluYXJ5IChzZW5kZXIsIG1lc3NhZ2UsIDEyOCAqIDEwMjQgKyAxKTsKKysJ Z19mcmVlIChtZXNzYWdlKTsKKysKKysJV0FJVF9VTlRJTCAocmVjZWl2ZWQgIT0gTlVMTCk7Cisr CWdfYXNzZXJ0X2NtcHVpbnQgKGdfYnl0ZXNfZ2V0X3NpemUgKHJlY2VpdmVkKSwgPT0sIDEyOCAq IDEwMjQgKyAxKTsKKysJZ19ieXRlc191bnJlZiAocmVjZWl2ZWQpOworK30KKysKKytzdGF0aWMg Y29uc3QgRGVmbGF0ZU1lc3NhZ2VMaW1pdFRlc3QgZGVmbGF0ZV9zZXJ2ZXJfcmVjZWl2ZXNfZGVm YXVsdCA9IHsgVFJVRSwgRkFMU0UgfTsKKytzdGF0aWMgY29uc3QgRGVmbGF0ZU1lc3NhZ2VMaW1p dFRlc3QgZGVmbGF0ZV9jbGllbnRfcmVjZWl2ZXNfZGVmYXVsdCA9IHsgRkFMU0UsIEZBTFNFIH07 CisrCisgc3RhdGljIHZvaWQKKyBkb19kZWZsYXRlICh6X3N0cmVhbSAqenN0cmVhbSwKKyAgICAg ICAgICAgICBjb25zdCBjaGFyICpzdHIsCitAQCAtMjM4OSw2ICsyNjA4LDE4IEBAIG1haW4gKGlu dCBhcmdjLAorIAkJICAgIHRlc3RfZGVmbGF0ZV9uZWdvdGlhdGVfZGlyZWN0LAorIAkJICAgIE5V TEwpOworIAorKwlnX3Rlc3RfYWRkX2Z1bmMgKCIvd2Vic29ja2V0L2V4dGVuc2lvbi9pbmNvbWlu Zy1saW1pdC1sZWdhY3ktZmFsbGJhY2siLAorKwkJCSB0ZXN0X3dlYnNvY2tldF9leHRlbnNpb25f bGltaXRfZmFsbGJhY2spOworKwlnX3Rlc3RfYWRkX2RhdGFfZnVuYyAoIi93ZWJzb2NrZXQvZGVm bGF0ZS9vdXRwdXQtbGltaXQvYmVsb3ciLAorKwkJCSAgICAgICZkZWZsYXRlX291dHB1dF9iZWxv d19saW1pdCwKKysJCQkgICAgICB0ZXN0X2RlZmxhdGVfb3V0cHV0X2xpbWl0KTsKKysJZ190ZXN0 X2FkZF9kYXRhX2Z1bmMgKCIvd2Vic29ja2V0L2RlZmxhdGUvb3V0cHV0LWxpbWl0L2V4YWN0IiwK KysJCQkgICAgICAmZGVmbGF0ZV9vdXRwdXRfYXRfbGltaXQsCisrCQkJICAgICAgdGVzdF9kZWZs YXRlX291dHB1dF9saW1pdCk7CisrCWdfdGVzdF9hZGRfZGF0YV9mdW5jICgiL3dlYnNvY2tldC9k ZWZsYXRlL291dHB1dC1saW1pdC9vdmVyIiwKKysJCQkgICAgICAmZGVmbGF0ZV9vdXRwdXRfb3Zl cl9saW1pdCwKKysJCQkgICAgICB0ZXN0X2RlZmxhdGVfb3V0cHV0X2xpbWl0KTsKKysKKyAJZ190 ZXN0X2FkZCAoIi93ZWJzb2NrZXQvZGlyZWN0L2RlZmxhdGUtZGlzYWJsZWQtaW4tbWVzc2FnZSIs IFRlc3QsIE5VTEwsIE5VTEwsCisgCQkgICAgdGVzdF9kZWZsYXRlX2Rpc2FibGVkX2luX21lc3Nh Z2VfZGlyZWN0LAorIAkJICAgIE5VTEwpOworQEAgLTI0MTQsNiArMjY0NSwxNyBAQCBtYWluIChp bnQgYXJnYywKKyAJCSAgICB0ZXN0X3NlbmRfc2VydmVyX3RvX2NsaWVudCwKKyAJCSAgICB0ZWFy ZG93bl9zb3VwX2Nvbm5lY3Rpb24pOworIAorKwlnX3Rlc3RfYWRkICgiL3dlYnNvY2tldC9zb3Vw L2RlZmxhdGUtZGVmYXVsdC1zZXJ2ZXItbGltaXQvY2xpZW50LXRvLXNlcnZlciIsCisrCQkgICAg VGVzdCwgJmRlZmxhdGVfc2VydmVyX3JlY2VpdmVzX2RlZmF1bHQsCisrCQkgICAgc2V0dXBfc291 cF9jb25uZWN0aW9uX3dpdGhfZXh0ZW5zaW9ucywKKysJCSAgICB0ZXN0X2RlZmxhdGVfZXhjZWVk c19tZXNzYWdlX2xpbWl0LAorKwkJICAgIHRlYXJkb3duX3NvdXBfY29ubmVjdGlvbik7CisrCWdf dGVzdF9hZGQgKCIvd2Vic29ja2V0L2RpcmVjdC9kZWZsYXRlLWRlZmF1bHQtdW5saW1pdGVkL3Nl cnZlci10by1jbGllbnQiLAorKwkJICAgIFRlc3QsICZkZWZsYXRlX2NsaWVudF9yZWNlaXZlc19k ZWZhdWx0LAorKwkJICAgIHNldHVwX2RpcmVjdF9jb25uZWN0aW9uX3dpdGhfZXh0ZW5zaW9ucywK KysJCSAgICB0ZXN0X2RlZmxhdGVfZGVmYXVsdF91bmxpbWl0ZWRfbWVzc2FnZV9zaXplLAorKwkJ ICAgIHRlYXJkb3duX2RpcmVjdF9jb25uZWN0aW9uKTsKKysKKyAJZ190ZXN0X2FkZCAoIi93ZWJz b2NrZXQvZGlyZWN0L2RlZmxhdGUtc2VuZC1iaWctcGFja2V0cyIsIFRlc3QsIE5VTEwsCisgCQkg ICAgc2V0dXBfZGlyZWN0X2Nvbm5lY3Rpb25fd2l0aF9leHRlbnNpb25zLAorIAkJICAgIHRlc3Rf c2VuZF9iaWdfcGFja2V0cywKKy0tIAorR2l0TGFiCgpkaWZmIC0tZ2l0IGEvQ1ZFLTIwMjYtMTU3 MTEucGF0Y2ggYi9DVkUtMjAyNi0xNTcxMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4yMmFiNTdiCi0tLSAvZGV2L251bGwKKysrIGIvQ1ZFLTIwMjYtMTU3MTEucGF0 Y2gKQEAgLTAsMCArMSwxNzIgQEAKK0Zyb20gNjBhYTFjZTJiZGM3YmI1ZGEzM2JlOTA2MmY1MGJj ZWM3ZGI2N2ZjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFpheWQgUmFqYWIgPHph eWRyQGFtYXpvbi5jb20+CitEYXRlOiBUaHUsIDE2IEp1bCAyMDI2IDAyOjMyOjE5ICswMDAwCitT dWJqZWN0OiBbUEFUQ0hdIHdlYnNvY2tldDogUmVqZWN0IG92ZXJzaXplZCBjb250cm9sIGZyYW1l cworCitSRkMgNjQ1NSBzZWN0aW9uIDUuNSBsaW1pdHMgY29udHJvbCBmcmFtZSBwYXlsb2FkcyB0 byAxMjUgYnl0ZXMuCitSZWplY3QgZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGggaW5kaWNhdG9ycyBh cyBzb29uIGFzIHRoZSBiYXNlIGhlYWRlciBpcworYXZhaWxhYmxlLCBiZWZvcmUgd2FpdGluZyBm b3IgYWRkaXRpb25hbCBsZW5ndGggb3IgcGF5bG9hZCBieXRlcy4KKworQWRkIHJlZ3Jlc3Npb24g Y292ZXJhZ2UgZm9yIGJvdGggZXh0ZW5kZWQgbGVuZ3RoIGluZGljYXRvcnMgYW5kIGJvdGgKK3Jl Y2VpdmUgZGlyZWN0aW9ucy4KKworVGhpcyBpcyBDVkUtMjAyNi0xNTcxMS4KKworQ2xvc2VzICM1 MTUKKy0tLQorIGxpYnNvdXAvd2Vic29ja2V0L3NvdXAtd2Vic29ja2V0LWNvbm5lY3Rpb24uYyB8 ICAgNyArKworIHRlc3RzL3dlYnNvY2tldC10ZXN0LmMgICAgICAgICAgICAgICAgICAgICAgICB8 IDExMyArKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDEyMCBpbnNlcnRpb25z KCspCisKK2RpZmYgLS1naXQgYS9saWJzb3VwL3dlYnNvY2tldC9zb3VwLXdlYnNvY2tldC1jb25u ZWN0aW9uLmMgYi9saWJzb3VwL3dlYnNvY2tldC9zb3VwLXdlYnNvY2tldC1jb25uZWN0aW9uLmMK K2luZGV4IDE0ZGNkNjMwLi5mZmQ3MTNlZiAxMDA2NDQKKy0tLSBhL2xpYnNvdXAvd2Vic29ja2V0 L3NvdXAtd2Vic29ja2V0LWNvbm5lY3Rpb24uYworKysrIGIvbGlic291cC93ZWJzb2NrZXQvc291 cC13ZWJzb2NrZXQtY29ubmVjdGlvbi5jCitAQCAtMTA4Miw2ICsxMDgyLDEzIEBAIHByb2Nlc3Nf ZnJhbWUgKFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uICpzZWxmKQorICAgICAgICAgICAgICAgICBy ZXR1cm4gRkFMU0U7CisgICAgICAgICB9CisgCisrCS8qIFJGQyA2NDU1IHNlY3Rpb24gNS41IGxp bWl0cyBjb250cm9sIGZyYW1lIHBheWxvYWRzIHRvIDEyNSBieXRlcy4gKi8KKysJaWYgKGNvbnRy b2wgJiYgKGhlYWRlclsxXSAmIDB4N2YpID4gMTI1KSB7CisrCQlnX2RlYnVnICgicmVjZWl2ZWQg b3ZlcnNpemVkIGNvbnRyb2wgZnJhbWUiKTsKKysJCXByb3RvY29sX2Vycm9yX2FuZF9jbG9zZSAo c2VsZik7CisrCQlyZXR1cm4gRkFMU0U7CisrCX0KKysKKyAJc3dpdGNoIChoZWFkZXJbMV0gJiAw eDdmKSB7CisgCWNhc2UgMTI2OgorIAkJLyogSWYgMTI2LCB0aGUgZm9sbG93aW5nIDIgYnl0ZXMg aW50ZXJwcmV0ZWQgYXMgYSAxNi1iaXQKK2RpZmYgLS1naXQgYS90ZXN0cy93ZWJzb2NrZXQtdGVz dC5jIGIvdGVzdHMvd2Vic29ja2V0LXRlc3QuYworaW5kZXggYjhmNzEzMDAuLmRiMDg4YTU1IDEw MDY0NAorLS0tIGEvdGVzdHMvd2Vic29ja2V0LXRlc3QuYworKysrIGIvdGVzdHMvd2Vic29ja2V0 LXRlc3QuYworQEAgLTgzNSw2ICs4MzUsOTggQEAgdGVzdF9zZW5kX2JhZF9kYXRhIChUZXN0ICp0 ZXN0LAorIAlnX2Fzc2VydF9jbXB1aW50IChzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dldF9j bG9zZV9jb2RlICh0ZXN0LT5jbGllbnQpLCA9PSwgU09VUF9XRUJTT0NLRVRfQ0xPU0VfQkFEX0RB VEEpOworIH0KKyAKKytzdGF0aWMgZ2Jvb2xlYW4KKytvbl90aW1lb3V0X3NldF9mbGFnIChncG9p bnRlciB1c2VyX2RhdGEpCisreworKwlnYm9vbGVhbiAqdGltZWRfb3V0ID0gdXNlcl9kYXRhOwor KworKwkqdGltZWRfb3V0ID0gVFJVRTsKKysKKysJcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKKyt9 CisrCisrc3RhdGljIHZvaWQKKyt3YWl0X2Zvcl93ZWJzb2NrZXRfZXJyb3IgKEdFcnJvciAqKmVy cm9yKQorK3sKKysJZ2Jvb2xlYW4gdGltZWRfb3V0ID0gRkFMU0U7CisrCWd1aW50IHRpbWVvdXRf aWQ7CisrCisrCXRpbWVvdXRfaWQgPSBnX3RpbWVvdXRfYWRkX3NlY29uZHMgKDEsIG9uX3RpbWVv dXRfc2V0X2ZsYWcsICZ0aW1lZF9vdXQpOworKwlXQUlUX1VOVElMICgqZXJyb3IgIT0gTlVMTCB8 fCB0aW1lZF9vdXQpOworKworKwlpZiAoIXRpbWVkX291dCkKKysJCWdfc291cmNlX3JlbW92ZSAo dGltZW91dF9pZCk7CisrCWdfYXNzZXJ0X2ZhbHNlICh0aW1lZF9vdXQpOworK30KKysKKytzdGF0 aWMgdm9pZAorK3dyaXRlX292ZXJzaXplZF9jb250cm9sX2ZyYW1lX2hlYWRlciAoR0lPU3RyZWFt ICppbywKKysJCQkJICAgICAgZ3VpbnQ4IGxlbmd0aF9pbmRpY2F0b3IsCisrCQkJCSAgICAgIGdi b29sZWFuIG1hc2tlZCkKKyt7CisrCWd1aW50OCBmcmFtZVtdID0geyAweDhhLCBsZW5ndGhfaW5k aWNhdG9yIH07CisrCUdFcnJvciAqZXJyb3IgPSBOVUxMOworKwlnc2l6ZSB3cml0dGVuOworKwor KwlnX2Fzc2VydF90cnVlIChsZW5ndGhfaW5kaWNhdG9yID09IDEyNiB8fCBsZW5ndGhfaW5kaWNh dG9yID09IDEyNyk7CisrCisrCWlmIChtYXNrZWQpCisrCQlmcmFtZVsxXSB8PSAweDgwOworKwor KwlnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsIChnX2lvX3N0cmVhbV9nZXRfb3V0cHV0X3N0cmVh bSAoaW8pLAorKwkJCQkgICBmcmFtZSwgc2l6ZW9mIChmcmFtZSksICZ3cml0dGVuLCBOVUxMLCAm ZXJyb3IpOworKwlnX2Fzc2VydF9ub19lcnJvciAoZXJyb3IpOworKwlnX2Fzc2VydF9jbXB1aW50 ICh3cml0dGVuLCA9PSwgc2l6ZW9mIChmcmFtZSkpOworK30KKysKKyt0eXBlZGVmIHN0cnVjdCB7 CisrCWd1aW50OCBsZW5ndGhfaW5kaWNhdG9yOworKwlnYm9vbGVhbiBzZXJ2ZXJfcmVjZWl2ZXM7 CisrfSBPdmVyc2l6ZWRDb250cm9sRnJhbWVUZXN0OworKworK3N0YXRpYyB2b2lkCisrdGVzdF9y ZWNlaXZlX292ZXJzaXplZF9jb250cm9sX2ZyYW1lIChUZXN0ICp0ZXN0LAorKwkJCQkgICAgICBn Y29uc3Rwb2ludGVyIGRhdGEpCisreworKwljb25zdCBPdmVyc2l6ZWRDb250cm9sRnJhbWVUZXN0 ICpjb25maWcgPSBkYXRhOworKwlTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiAqcmVjZWl2ZXI7Cisr CVNvdXBXZWJzb2NrZXRDb25uZWN0aW9uICpzZW5kZXI7CisrCUdFcnJvciAqZXJyb3IgPSBOVUxM OworKwlHSU9TdHJlYW0gKmlvOworKwlndWxvbmcgZXJyb3JfaWQ7CisrCWdib29sZWFuIGNsb3Nl X2V2ZW50ID0gRkFMU0U7CisrCisrCWlmIChjb25maWctPnNlcnZlcl9yZWNlaXZlcykgeworKwkJ cmVjZWl2ZXIgPSB0ZXN0LT5zZXJ2ZXI7CisrCQlzZW5kZXIgPSB0ZXN0LT5jbGllbnQ7CisrCX0g ZWxzZSB7CisrCQlyZWNlaXZlciA9IHRlc3QtPmNsaWVudDsKKysJCXNlbmRlciA9IHRlc3QtPnNl cnZlcjsKKysJfQorKworKwlnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMgKHJl Y2VpdmVyLCBvbl9lcnJvcl9ub3RfcmVhY2hlZCwgTlVMTCk7CisrCWVycm9yX2lkID0gZ19zaWdu YWxfY29ubmVjdCAocmVjZWl2ZXIsICJlcnJvciIsIEdfQ0FMTEJBQ0sgKG9uX2Vycm9yX2NvcHkp LCAmZXJyb3IpOworKwlnX3NpZ25hbF9jb25uZWN0IChzZW5kZXIsICJjbG9zZWQiLCBHX0NBTExC QUNLIChvbl9jbG9zZV9zZXRfZmxhZyksICZjbG9zZV9ldmVudCk7CisrCisrCWlvID0gc291cF93 ZWJzb2NrZXRfY29ubmVjdGlvbl9nZXRfaW9fc3RyZWFtIChzZW5kZXIpOworKwl3cml0ZV9vdmVy c2l6ZWRfY29udHJvbF9mcmFtZV9oZWFkZXIgKGlvLCBjb25maWctPmxlbmd0aF9pbmRpY2F0b3Is CisrCQkJCQkgICAgICBjb25maWctPnNlcnZlcl9yZWNlaXZlcyk7CisrCXdhaXRfZm9yX3dlYnNv Y2tldF9lcnJvciAoJmVycm9yKTsKKysJZ19hc3NlcnRfZXJyb3IgKGVycm9yLCBTT1VQX1dFQlNP Q0tFVF9FUlJPUiwgU09VUF9XRUJTT0NLRVRfQ0xPU0VfUFJPVE9DT0xfRVJST1IpOworKwlnX2Ns ZWFyX2Vycm9yICgmZXJyb3IpOworKwlnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QgKHJlY2Vp dmVyLCBlcnJvcl9pZCk7CisrCisrCVdBSVRfVU5USUwgKHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rp b25fZ2V0X3N0YXRlIChzZW5kZXIpID09IFNPVVBfV0VCU09DS0VUX1NUQVRFX0NMT1NFRCk7Cisr CWdfYXNzZXJ0X3RydWUgKGNsb3NlX2V2ZW50KTsKKysJZ19hc3NlcnRfY21wdWludCAoc291cF93 ZWJzb2NrZXRfY29ubmVjdGlvbl9nZXRfY2xvc2VfY29kZSAoc2VuZGVyKSwgPT0sCisrCQkJICBT T1VQX1dFQlNPQ0tFVF9DTE9TRV9QUk9UT0NPTF9FUlJPUik7CisrfQorKworK3N0YXRpYyBjb25z dCBPdmVyc2l6ZWRDb250cm9sRnJhbWVUZXN0IG92ZXJzaXplZF9jb250cm9sX2ZyYW1lXzE2X3Nl cnZlciA9IHsgMTI2LCBUUlVFIH07Cisrc3RhdGljIGNvbnN0IE92ZXJzaXplZENvbnRyb2xGcmFt ZVRlc3Qgb3ZlcnNpemVkX2NvbnRyb2xfZnJhbWVfNjRfc2VydmVyID0geyAxMjcsIFRSVUUgfTsK KytzdGF0aWMgY29uc3QgT3ZlcnNpemVkQ29udHJvbEZyYW1lVGVzdCBvdmVyc2l6ZWRfY29udHJv bF9mcmFtZV8xNl9jbGllbnQgPSB7IDEyNiwgRkFMU0UgfTsKKytzdGF0aWMgY29uc3QgT3ZlcnNp emVkQ29udHJvbEZyYW1lVGVzdCBvdmVyc2l6ZWRfY29udHJvbF9mcmFtZV82NF9jbGllbnQgPSB7 IDEyNywgRkFMU0UgfTsKKysKKyBzdGF0aWMgY29uc3QgY2hhciAqbmVnb3RpYXRlX2NsaWVudF9w cm90b2NvbHNbXSA9IHsgImJiYiIsICJjY2MiLCBOVUxMIH07Cisgc3RhdGljIGNvbnN0IGNoYXIg Km5lZ290aWF0ZV9zZXJ2ZXJfcHJvdG9jb2xzW10gPSB7ICJhYWEiLCAiYmJiIiwgImNjYyIsIE5V TEwgfTsKKyBzdGF0aWMgY29uc3QgY2hhciAqbmVnb3RpYXRlZF9wcm90b2NvbCA9ICJiYmIiOwor QEAgLTI1NzQsNiArMjY2NiwyNyBAQCBtYWluIChpbnQgYXJnYywKKyAJCSAgICB0ZXN0X3NlbmRf YmFkX2RhdGEsCisgCQkgICAgdGVhcmRvd25fc291cF9jb25uZWN0aW9uKTsKKyAKKysJZ190ZXN0 X2FkZCAoIi93ZWJzb2NrZXQvZGlyZWN0L3NlcnZlci1yZWNlaXZlLW92ZXJzaXplZC1jb250cm9s LWZyYW1lLzE2LWJpdCIsCisrCQkgICAgVGVzdCwgJm92ZXJzaXplZF9jb250cm9sX2ZyYW1lXzE2 X3NlcnZlciwKKysJCSAgICBzZXR1cF9kaXJlY3RfY29ubmVjdGlvbiwKKysJCSAgICB0ZXN0X3Jl Y2VpdmVfb3ZlcnNpemVkX2NvbnRyb2xfZnJhbWUsCisrCQkgICAgdGVhcmRvd25fZGlyZWN0X2Nv bm5lY3Rpb24pOworKwlnX3Rlc3RfYWRkICgiL3dlYnNvY2tldC9kaXJlY3Qvc2VydmVyLXJlY2Vp dmUtb3ZlcnNpemVkLWNvbnRyb2wtZnJhbWUvNjQtYml0IiwKKysJCSAgICBUZXN0LCAmb3ZlcnNp emVkX2NvbnRyb2xfZnJhbWVfNjRfc2VydmVyLAorKwkJICAgIHNldHVwX2RpcmVjdF9jb25uZWN0 aW9uLAorKwkJICAgIHRlc3RfcmVjZWl2ZV9vdmVyc2l6ZWRfY29udHJvbF9mcmFtZSwKKysJCSAg ICB0ZWFyZG93bl9kaXJlY3RfY29ubmVjdGlvbik7CisrCWdfdGVzdF9hZGQgKCIvd2Vic29ja2V0 L2RpcmVjdC9jbGllbnQtcmVjZWl2ZS1vdmVyc2l6ZWQtY29udHJvbC1mcmFtZS8xNi1iaXQiLAor KwkJICAgIFRlc3QsICZvdmVyc2l6ZWRfY29udHJvbF9mcmFtZV8xNl9jbGllbnQsCisrCQkgICAg c2V0dXBfZGlyZWN0X2Nvbm5lY3Rpb24sCisrCQkgICAgdGVzdF9yZWNlaXZlX292ZXJzaXplZF9j b250cm9sX2ZyYW1lLAorKwkJICAgIHRlYXJkb3duX2RpcmVjdF9jb25uZWN0aW9uKTsKKysJZ190 ZXN0X2FkZCAoIi93ZWJzb2NrZXQvZGlyZWN0L2NsaWVudC1yZWNlaXZlLW92ZXJzaXplZC1jb250 cm9sLWZyYW1lLzY0LWJpdCIsCisrCQkgICAgVGVzdCwgJm92ZXJzaXplZF9jb250cm9sX2ZyYW1l XzY0X2NsaWVudCwKKysJCSAgICBzZXR1cF9kaXJlY3RfY29ubmVjdGlvbiwKKysJCSAgICB0ZXN0 X3JlY2VpdmVfb3ZlcnNpemVkX2NvbnRyb2xfZnJhbWUsCisrCQkgICAgdGVhcmRvd25fZGlyZWN0 X2Nvbm5lY3Rpb24pOworKworIAlnX3Rlc3RfYWRkICgiL3dlYnNvY2tldC9kaXJlY3QvY2xvc2Ut Y2xlYW4tY2xpZW50IiwgVGVzdCwgTlVMTCwgTlVMTCwKKyAJCSAgICB0ZXN0X2Nsb3NlX2NsZWFu X2NsaWVudF9kaXJlY3QsCisgCQkgICAgTlVMTCk7CistLSAKK0dpdExhYgorCgpkaWZmIC0tZ2l0 IGEvQ1ZFLTIwMjYtMTU3MTIucGF0Y2ggYi9DVkUtMjAyNi0xNTcxMi5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjE2ZGVjCi0tLSAvZGV2L251bGwKKysrIGIvQ1ZF LTIwMjYtMTU3MTIucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSAzYTZmYjU2YTBjYmE0MmQx MWY1ZmQxZGI2ZGVkY2M3YzJlOTI3NTdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTog TWlrZSBHb3JzZSA8bWdvcnNlQHN1c2UuY29tPgorRGF0ZTogRnJpLCA0IFNlcCAyMDI2IDE0OjA1 OjA0IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIGh0dHAyOiBEb24ndCBhc3N1bWUgdGhhdCBHT0FX QVkgb3BhcXVlIGRhdGEgaXMgTlVMLXRlcm1pbmF0ZWQKKworbmdodHRwMiBhbGxvY2F0ZXMgZnJh bWUtPmdvYXdheS5vcGFxdWVfZGF0YSB3aXRoIGV4YWN0bHkgb3BhcXVlX2RhdGFfbGVuCitieXRl cyBhbmQgbm8gdGVybWluYXRvciwgc28gcGFzc2luZyBpdCB0byBhICIlcyIgZm9ybWF0IGluIGgy X2RlYnVnKCkKK3JlYWRzIHBhc3QgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIHdoZW4gZGVidWcgbG9n Z2luZyBpcyBlbmFibGVkLgorCitVc2UgIiUuKnMiIHdpdGggb3BhcXVlX2RhdGFfbGVuIGFzIHRo ZSBwcmVjaXNpb24gc28gdGhlIHJlYWQgaXMgYm91bmRlZAord2l0aG91dCBhbGxvY2F0aW5nIGEg Y29weS4KKworQ2xvc2VzICM1NDAKKy0tLQorIGxpYnNvdXAvaHR0cDIvc291cC1jbGllbnQtbWVz c2FnZS1pby1odHRwMi5jIHwgNSArKystLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMo KyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJzb3VwL2h0dHAyL3NvdXAtY2xp ZW50LW1lc3NhZ2UtaW8taHR0cDIuYyBiL2xpYnNvdXAvaHR0cDIvc291cC1jbGllbnQtbWVzc2Fn ZS1pby1odHRwMi5jCitpbmRleCBhYjUyMDAzZC4uYjY3NDI5MjQgMTAwNjQ0CistLS0gYS9saWJz b3VwL2h0dHAyL3NvdXAtY2xpZW50LW1lc3NhZ2UtaW8taHR0cDIuYworKysrIGIvbGlic291cC9o dHRwMi9zb3VwLWNsaWVudC1tZXNzYWdlLWlvLWh0dHAyLmMKK0BAIC04MTMsMTAgKzgxMywxMSBA QCBvbl9mcmFtZV9yZWN2X2NhbGxiYWNrIChuZ2h0dHAyX3Nlc3Npb24gICAgICpzZXNzaW9uLAor IAorICAgICAgICAgICAgICAgICBzd2l0Y2ggKGZyYW1lLT5oZC50eXBlKSB7CisgICAgICAgICAg ICAgICAgIGNhc2UgTkdIVFRQMl9HT0FXQVk6CistICAgICAgICAgICAgICAgICAgICAgICAgaDJf ZGVidWcgKGlvLCBOVUxMLCAiW1JFQ1ZdIEdPQVdBWTogZXJyb3I9JXMsIGxhc3Rfc3RyZWFtX2lk PSVkICVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICBoMl9kZWJ1ZyAoaW8sIE5VTEwsICJb UkVDVl0gR09BV0FZOiBlcnJvcj0lcywgbGFzdF9zdHJlYW1faWQ9JWQgJS4qcyIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJfaHR0cDJfc3RyZXJyb3IgKGZyYW1l LT5nb2F3YXkuZXJyb3JfY29kZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZyYW1lLT5nb2F3YXkubGFzdF9zdHJlYW1faWQsCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZyYW1lLT5nb2F3YXkub3BhcXVlX2RhdGEgPyAoY2hhciAqKWZyYW1lLT5nb2F3 YXkub3BhcXVlX2RhdGEgOiAiIik7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChpbnQpZnJhbWUtPmdvYXdheS5vcGFxdWVfZGF0YV9sZW4sCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZyYW1lLT5nb2F3YXkub3BhcXVlX2RhdGEgPyAoY29uc3QgY2hhciAq KWZyYW1lLT5nb2F3YXkub3BhcXVlX2RhdGEgOiAiIik7CisgICAgICAgICAgICAgICAgICAgICAg ICAgaGFuZGxlX2dvYXdheSAoaW8sIGZyYW1lLT5nb2F3YXkuZXJyb3JfY29kZSwgZnJhbWUtPmdv YXdheS5sYXN0X3N0cmVhbV9pZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgaW8tPmlzX3No dXRkb3duID0gVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3VwX2NsaWVudF9tZXNz YWdlX2lvX2h0dHAyX3Rlcm1pbmF0ZV9zZXNzaW9uIChpbyk7CistLSAKK0dpdExhYgorCgpkaWZm IC0tZ2l0IGEvQ1ZFLTIwMjYtMTU3MTMucGF0Y2ggYi9DVkUtMjAyNi0xNTcxMy5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjg0ZWJiCi0tLSAvZGV2L251bGwKKysr IGIvQ1ZFLTIwMjYtMTU3MTMucGF0Y2gKQEAgLTAsMCArMSwxNDggQEAKK0Zyb20gMjRmYjY0NWZh OTQ5ZWNlN2Q3ZTEwMzYzYjc3Y2YyZDVmYTJjMjQ2OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IE1pbGFuIENyaGEgPG1jcmhhQHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDQgU2VwIDIw MjYgMTA6MzQ6MjIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gY2FjaGU6IFJlamVjdCBjYWNoaW5n IGF1dGhlbnRpY2F0ZWQgcmVzcG9uc2VzIGluIHNoYXJlZAorIGNhY2hlcworCitSRkMgNzIzNCBT ZWN0aW9uIDMuMiBmb3JiaWRzIHRvIHNhdmUgdG8gYSBzaGFyZWQgY2FjaGUgYSByZXNwb25zZSB0 bworYSByZXF1ZXN0IGNvbnRhaW5pbmcgYW4gQXV0aG9yaXphdGlvbiBoZWFkZXIgdW5sZXNzIHRo ZSByZXNwb25zZQorZXhwbGljaXRseSBhbGxvd3MgaXQgd2l0aCBwdWJsaWMsIG11c3QtcmV2YWxp ZGF0ZSBvciBzLW1heGFnZS4KKworVGhpcyBpcyBDVkUtMjAyNi0xNTcxMy4KKworQ2xvc2VzIGh0 dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJzb3VwLy0vd29ya19pdGVtcy81NDEKKy0t LQorIGxpYnNvdXAvY2FjaGUvc291cC1jYWNoZS5jIHwgMTUgKysrKysrKysrKysKKyB0ZXN0cy9j YWNoZS10ZXN0LmMgICAgICAgICB8IDU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQg YS9saWJzb3VwL2NhY2hlL3NvdXAtY2FjaGUuYyBiL2xpYnNvdXAvY2FjaGUvc291cC1jYWNoZS5j CitpbmRleCA0N2UxZWU3MC4uNTIyNTM4MmQgMTAwNjQ0CistLS0gYS9saWJzb3VwL2NhY2hlL3Nv dXAtY2FjaGUuYworKysrIGIvbGlic291cC9jYWNoZS9zb3VwLWNhY2hlLmMKK0BAIC0xNzQsNiAr MTc0LDcgQEAgZ2V0X2NhY2hlYWJpbGl0eSAoU291cENhY2hlICpjYWNoZSwgU291cE1lc3NhZ2Ug Km1zZykKKyAJU291cENhY2hlYWJpbGl0eSBjYWNoZWFiaWxpdHk7CisgCWNvbnN0IGNoYXIgKmNh Y2hlX2NvbnRyb2wsICpjb250ZW50X3R5cGU7CisgCWdib29sZWFuIGhhc19tYXhfYWdlID0gRkFM U0U7CisrCWdib29sZWFuIHBlcm1pdHNfYXV0aG9yaXplZF9zaGFyZWRfY2FjaGluZyA9IEZBTFNF OworIAorIAkvKiAxLiBUaGUgcmVxdWVzdCBtZXRob2QgbXVzdCBiZSBjYWNoZWFibGUgKi8KKyAJ aWYgKHNvdXBfbWVzc2FnZV9nZXRfbWV0aG9kIChtc2cpID09IFNPVVBfTUVUSE9EX0dFVCkKK0BA IC0yMDEsNiArMjAyLDExIEBAIGdldF9jYWNoZWFiaWxpdHkgKFNvdXBDYWNoZSAqY2FjaGUsIFNv dXBNZXNzYWdlICptc2cpCisgCQkJCXNvdXBfaGVhZGVyX2ZyZWVfcGFyYW1fbGlzdCAoaGFzaCk7 CisgCQkJCXJldHVybiBTT1VQX0NBQ0hFX1VOQ0FDSEVBQkxFOworIAkJCX0KKysKKysJCQlwZXJt aXRzX2F1dGhvcml6ZWRfc2hhcmVkX2NhY2hpbmcgPQorKwkJCQlnX2hhc2hfdGFibGVfbG9va3Vw X2V4dGVuZGVkIChoYXNoLCAicHVibGljIiwgTlVMTCwgTlVMTCkgfHwKKysJCQkJZ19oYXNoX3Rh YmxlX2xvb2t1cF9leHRlbmRlZCAoaGFzaCwgIm11c3QtcmV2YWxpZGF0ZSIsIE5VTEwsIE5VTEwp IHx8CisrCQkJCWdfaGFzaF90YWJsZV9sb29rdXBfZXh0ZW5kZWQgKGhhc2gsICJzLW1heGFnZSIs IE5VTEwsIE5VTEwpOworIAkJfQorIAorIAkJLyogMi4gVGhlICduby1zdG9yZScgY2FjaGUgZGly ZWN0aXZlIGRvZXMgbm90IGFwcGVhciBpbiB0aGUKK0BAIC0yMjUsNiArMjMxLDE1IEBAIGdldF9j YWNoZWFiaWxpdHkgKFNvdXBDYWNoZSAqY2FjaGUsIFNvdXBNZXNzYWdlICptc2cpCisgCQlzb3Vw X2hlYWRlcl9mcmVlX3BhcmFtX2xpc3QgKGhhc2gpOworIAl9CisgCisrCS8qIFJGQyA3MjM0IFNl Y3Rpb24gMy4yOiBhIHNoYXJlZCBjYWNoZSBNVVNUIE5PVCBzdG9yZSBhIHJlc3BvbnNlIHRvCisr CSAqIGEgcmVxdWVzdCBjb250YWluaW5nIGFuIEF1dGhvcml6YXRpb24gaGVhZGVyIHVubGVzcyB0 aGUgcmVzcG9uc2UKKysJICogZXhwbGljaXRseSBhbGxvd3MgaXQgd2l0aCBwdWJsaWMsIG11c3Qt cmV2YWxpZGF0ZSBvciBzLW1heGFnZS4KKysJICovCisrCWlmIChwcml2LT5jYWNoZV90eXBlID09 IFNPVVBfQ0FDSEVfU0hBUkVEICYmCisrCSAgICAhcGVybWl0c19hdXRob3JpemVkX3NoYXJlZF9j YWNoaW5nICYmCisrCSAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lX2NvbW1vbiAoc291 cF9tZXNzYWdlX2dldF9yZXF1ZXN0X2hlYWRlcnMgKG1zZyksIFNPVVBfSEVBREVSX0FVVEhPUkla QVRJT04pKQorKwkJcmV0dXJuIFNPVVBfQ0FDSEVfVU5DQUNIRUFCTEU7CisrCisgCS8qIFNlY3Rp b24gMTMuOSAqLworIAlpZiAoKGdfdXJpX2dldF9xdWVyeSAoc291cF9tZXNzYWdlX2dldF91cmkg KG1zZykpKSAmJgorIAkgICAgIXNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9vbmVfY29tbW9uIChz b3VwX21lc3NhZ2VfZ2V0X3Jlc3BvbnNlX2hlYWRlcnMgKG1zZyksIFNPVVBfSEVBREVSX0VYUElS RVMpICYmCitkaWZmIC0tZ2l0IGEvdGVzdHMvY2FjaGUtdGVzdC5jIGIvdGVzdHMvY2FjaGUtdGVz dC5jCitpbmRleCBlZjJlYmViMy4uZGZmNmJkMzUgMTAwNjQ0CistLS0gYS90ZXN0cy9jYWNoZS10 ZXN0LmMKKysrKyBiL3Rlc3RzL2NhY2hlLXRlc3QuYworQEAgLTk1LDYgKzk1LDcgQEAgc2VydmVy X2NhbGxiYWNrIChTb3VwU2VydmVyICAgICAgICAqc2VydmVyLAorIAlpZiAoc3RhdHVzID09IFNP VVBfU1RBVFVTX09LKSB7CisgCQlHQ2hlY2tzdW0gKnN1bTsKKyAJCWNvbnN0IGNoYXIgKmJvZHk7 CisrCQljb25zdCBjaGFyICphdXRob3JpemF0aW9uOworIAorIAkJc3VtID0gZ19jaGVja3N1bV9u ZXcgKEdfQ0hFQ0tTVU1fU0hBMjU2KTsKKyAJCWdfY2hlY2tzdW1fdXBkYXRlIChzdW0sIChndWNo YXIgKilwYXRoLCBzdHJsZW4gKHBhdGgpKTsKK0BAIC0xMDIsNiArMTAzLDkgQEAgc2VydmVyX2Nh bGxiYWNrIChTb3VwU2VydmVyICAgICAgICAqc2VydmVyLAorIAkJCWdfY2hlY2tzdW1fdXBkYXRl IChzdW0sIChndWNoYXIgKilsYXN0X21vZGlmaWVkLCBzdHJsZW4gKGxhc3RfbW9kaWZpZWQpKTsK KyAJCWlmIChldGFnKQorIAkJCWdfY2hlY2tzdW1fdXBkYXRlIChzdW0sIChndWNoYXIgKilldGFn LCBzdHJsZW4gKGV0YWcpKTsKKysJCWF1dGhvcml6YXRpb24gPSBzb3VwX21lc3NhZ2VfaGVhZGVy c19nZXRfb25lIChyZXF1ZXN0X2hlYWRlcnMsICJBdXRob3JpemF0aW9uIik7CisrCQlpZiAoYXV0 aG9yaXphdGlvbikKKysJCQlnX2NoZWNrc3VtX3VwZGF0ZSAoc3VtLCAoZ3VjaGFyICopYXV0aG9y aXphdGlvbiwgc3RybGVuIChhdXRob3JpemF0aW9uKSk7CisgCQlib2R5ID0gZ19jaGVja3N1bV9n ZXRfc3RyaW5nIChzdW0pOworIAkJc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfcmVzcG9uc2UgKG1z ZywgInRleHQvcGxhaW4iLAorIAkJCQkJCSAgU09VUF9NRU1PUllfQ09QWSwKK0BAIC03MzYsNiAr NzQwLDU2IEBAIGRvX2xlYWtzX3Rlc3QgKGdjb25zdHBvaW50ZXIgZGF0YSkKKyAJZ19mcmVlIChj YWNoZV9kaXIpOworIH0KKyAKKytzdGF0aWMgdm9pZAorK2RvX3NoYXJlZF9jYWNoZV9hdXRob3Jp emF0aW9uX3Rlc3QgKGdjb25zdHBvaW50ZXIgZGF0YSkKKyt7CisrCUdVcmkgKmJhc2VfdXJpID0g KEdVcmkgKilkYXRhOworKwlTb3VwU2Vzc2lvbiAqYXR0YWNrZXJfc2Vzc2lvbjsKKysJU291cFNl c3Npb24gKnZpY3RpbV9zZXNzaW9uOworKwlTb3VwQ2FjaGUgKmF0dGFja2VyX2NhY2hlOworKwlT b3VwQ2FjaGUgKnZpY3RpbV9jYWNoZTsKKysJY2hhciAqY2FjaGVfZGlyOworKwljaGFyICphdHRh Y2tlcl9ib2R5OworKwljaGFyICp2aWN0aW1fYm9keTsKKysKKysJY2FjaGVfZGlyID0gZ19kaXJf bWFrZV90bXAgKCJjYWNoZS10ZXN0LVhYWFhYWCIsIE5VTEwpOworKwlkZWJ1Z19wcmludGYgKDIs ICIgIENhY2hpbmcgdG8gJXNcbiIsIGNhY2hlX2Rpcik7CisrCisrCWF0dGFja2VyX2NhY2hlID0g c291cF9jYWNoZV9uZXcgKGNhY2hlX2RpciwgU09VUF9DQUNIRV9TSEFSRUQpOworKwlhdHRhY2tl cl9zZXNzaW9uID0gc291cF90ZXN0X3Nlc3Npb25fbmV3IChOVUxMKTsKKysJc291cF9zZXNzaW9u X2FkZF9mZWF0dXJlIChhdHRhY2tlcl9zZXNzaW9uLCBTT1VQX1NFU1NJT05fRkVBVFVSRSAoYXR0 YWNrZXJfY2FjaGUpKTsKKysKKysJYXR0YWNrZXJfYm9keSA9IGRvX3JlcXVlc3QgKGF0dGFja2Vy X3Nlc3Npb24sIGJhc2VfdXJpLCAiR0VUIiwgIi9hdXRoei1zaGFyZWQtY2FjaGUiLCBOVUxMLAor KwkJCQkgICAgIkF1dGhvcml6YXRpb24iLCAiQmVhcmVyIEFUVEFDS0VSX1NFQ1JFVCIsCisrCQkJ CSAgICAiVGVzdC1TZXQtQ2FjaGUtQ29udHJvbCIsICJtYXgtYWdlPTYwMCIsCisrCQkJCSAgICBO VUxMKTsKKysJZ19hc3NlcnRfdHJ1ZSAobGFzdF9yZXF1ZXN0X2hpdF9uZXR3b3JrKTsKKysKKysJ c291cF9jYWNoZV9kdW1wIChhdHRhY2tlcl9jYWNoZSk7CisrCXNvdXBfdGVzdF9zZXNzaW9uX2Fi b3J0X3VucmVmIChhdHRhY2tlcl9zZXNzaW9uKTsKKysJZ19vYmplY3RfdW5yZWYgKGF0dGFja2Vy X2NhY2hlKTsKKysKKysJdmljdGltX2NhY2hlID0gc291cF9jYWNoZV9uZXcgKGNhY2hlX2Rpciwg U09VUF9DQUNIRV9TSEFSRUQpOworKwlzb3VwX2NhY2hlX2xvYWQgKHZpY3RpbV9jYWNoZSk7Cisr CXZpY3RpbV9zZXNzaW9uID0gc291cF90ZXN0X3Nlc3Npb25fbmV3IChOVUxMKTsKKysJc291cF9z ZXNzaW9uX2FkZF9mZWF0dXJlICh2aWN0aW1fc2Vzc2lvbiwgU09VUF9TRVNTSU9OX0ZFQVRVUkUg KHZpY3RpbV9jYWNoZSkpOworKworKwl2aWN0aW1fYm9keSA9IGRvX3JlcXVlc3QgKHZpY3RpbV9z ZXNzaW9uLCBiYXNlX3VyaSwgIkdFVCIsICIvYXV0aHotc2hhcmVkLWNhY2hlIiwgTlVMTCwKKysJ CQkJICAiQXV0aG9yaXphdGlvbiIsICJCZWFyZXIgVklDVElNX1NFQ1JFVCIsCisrCQkJCSAgIlRl c3QtU2V0LUNhY2hlLUNvbnRyb2wiLCAibWF4LWFnZT02MDAiLAorKwkJCQkgIE5VTEwpOworKwor KwlnX2Fzc2VydF90cnVlIChsYXN0X3JlcXVlc3RfaGl0X25ldHdvcmspOworKwlnX2Fzc2VydF9j bXBzdHIgKGF0dGFja2VyX2JvZHksICE9LCB2aWN0aW1fYm9keSk7CisrCisrCWdfZnJlZSAoYXR0 YWNrZXJfYm9keSk7CisrCWdfZnJlZSAodmljdGltX2JvZHkpOworKworKwlzb3VwX3Rlc3Rfc2Vz c2lvbl9hYm9ydF91bnJlZiAodmljdGltX3Nlc3Npb24pOworKwlnX29iamVjdF91bnJlZiAodmlj dGltX2NhY2hlKTsKKysJZ19mcmVlIChjYWNoZV9kaXIpOworK30KKysKKyBzdGF0aWMgdm9pZAor IGRvX21ldHJpY3NfdGVzdCAoZ2NvbnN0cG9pbnRlciBkYXRhKQorIHsKK0BAIC0xMTA4LDYgKzEx NjIsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCWdfdGVzdF9hZGRfZGF0YV9m dW5jICgiL2NhY2hlL2NhbmNlbGxhdGlvbiIsIGJhc2VfdXJpLCBkb19jYW5jZWxfdGVzdCk7Cisg CWdfdGVzdF9hZGRfZGF0YV9mdW5jICgiL2NhY2hlL3JlZmNvdW50aW5nIiwgYmFzZV91cmksIGRv X3JlZmNvdW50aW5nX3Rlc3QpOworIAlnX3Rlc3RfYWRkX2RhdGFfZnVuYyAoIi9jYWNoZS9oZWFk ZXJzIiwgYmFzZV91cmksIGRvX2hlYWRlcnNfdGVzdCk7CisrCWdfdGVzdF9hZGRfZGF0YV9mdW5j ICgiL2NhY2hlL3NoYXJlZC1jYWNoZS1hdXRob3JpemF0aW9uIiwgYmFzZV91cmksIGRvX3NoYXJl ZF9jYWNoZV9hdXRob3JpemF0aW9uX3Rlc3QpOworIAlnX3Rlc3RfYWRkX2RhdGFfZnVuYyAoIi9j YWNoZS9sZWFrcyIsIGJhc2VfdXJpLCBkb19sZWFrc190ZXN0KTsKKyAgICAgICAgIGdfdGVzdF9h ZGRfZGF0YV9mdW5jICgiL2NhY2hlL21ldHJpY3MiLCBiYXNlX3VyaSwgZG9fbWV0cmljc190ZXN0 KTsKKyAgICAgICAgIGdfdGVzdF9hZGRfZGF0YV9mdW5jICgiL2NhY2hlL3RocmVhZHMiLCBiYXNl X3VyaSwgZG9fdGhyZWFkc190ZXN0KTsKKy0tIAorR2l0TGFiCisKCmRpZmYgLS1naXQgYS9DVkUt MjAyNi0xNTcxNC5wYXRjaCBiL0NWRS0yMDI2LTE1NzE0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjQ1MWY3NjcKLS0tIC9kZXYvbnVsbAorKysgYi9DVkUtMjAyNi0x NTcxNC5wYXRjaApAQCAtMCwwICsxLDEyMSBAQAorRnJvbSA3OWE1MmNhZGM0OTAzNjBlMjQ5Y2My YjIzMDM4ZDUzMmI0NGRiZjIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWlrZSBH b3JzZSA8bWdvcnNlQHN1c2UuY29tPgorRGF0ZTogRnJpLCA0IFNlcCAyMDI2IDE0OjEwOjQ2IC0w NTAwCitTdWJqZWN0OiBbUEFUQ0hdIG11bHRpcGFydDogRml4IG91dC1vZi1ib3VuZHMgcmVhZCBp biBjYXNlIG9mIGFuIGV4Y2Vzc2l2ZWx5CisgbG9uZyBib3VuZGFyeQorCitzb3VwX211bHRpcGFy dF9pbnB1dF9zdHJlYW1fcmVhZF9oZWFkZXJzKCkgY29tcGFyZWQgbWV0YV9idWYgYWdhaW5zdCB0 aGUKK2JvdW5kYXJ5IHVzaW5nIHRoZSBib3VuZGFyeSBsZW5ndGggd2l0aG91dCBjaGVja2luZyB0 aGF0IG1ldGFfYnVmIGhlbGQKK3RoYXQgbWFueSBieXRlcywgc28gYSBzZXJ2ZXIgc2VuZGluZyBh IGJvdW5kYXJ5IGxvbmdlciB0aGFuIHRoZSByZWFkCitidWZmZXIgY291bGQgbWFrZSBzdHJuY21w KCkgcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGFsbG9jYXRpb24uIEl0IGFsc28KK2NvbXB1dGVk IHJlYWRfYnVmICsgbnJlYWQgLSA0IGJlZm9yZSB2ZXJpZnlpbmcgbnJlYWQgd2FzIGxhcmdlIGVu b3VnaCwKK2FuZCBhc3NlcnRlZCByYXRoZXIgdGhhbiBmYWlsaW5nIHdoZW4gYSBsaW5lIGRpZCBu b3QgZW5kIGluIGEgbmV3bGluZS4KKworT25seSBjb21wYXJlIG9uY2UgZW5vdWdoIGJ5dGVzIGhh dmUgYmVlbiByZWFkLCBpbmRleCByZWFkX2J1ZiBhZnRlciB0aGUKK2xlbmd0aCBjaGVja3MsIGFu ZCB0cmVhdCBhbiB1bnRlcm1pbmF0ZWQgbGluZSBhcyBlbmQgb2YgcGFyc2luZy4KKworQ2xvc2Vz ICE1NDYKKy0tLQorIGxpYnNvdXAvc291cC1tdWx0aXBhcnQtaW5wdXQtc3RyZWFtLmMgfCAxMiAr KysrLS0tLS0KKyB0ZXN0cy9tdWx0aXBhcnQtdGVzdC5jICAgICAgICAgICAgICAgIHwgMzcgKysr KysrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25z KCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlic291cC9zb3VwLW11bHRpcGFy dC1pbnB1dC1zdHJlYW0uYyBiL2xpYnNvdXAvc291cC1tdWx0aXBhcnQtaW5wdXQtc3RyZWFtLmMK K2luZGV4IGI3ZjFlZDcyLi4yMmNjZTEwMiAxMDA2NDQKKy0tLSBhL2xpYnNvdXAvc291cC1tdWx0 aXBhcnQtaW5wdXQtc3RyZWFtLmMKKysrKyBiL2xpYnNvdXAvc291cC1tdWx0aXBhcnQtaW5wdXQt c3RyZWFtLmMKK0BAIC0zNjEsNyArMzYxLDYgQEAgc291cF9tdWx0aXBhcnRfaW5wdXRfc3RyZWFt X3JlYWRfaGVhZGVycyAoU291cE11bHRpcGFydElucHV0U3RyZWFtICAqbXVsdGlwYXJ0LAorIHsK KyAJU291cE11bHRpcGFydElucHV0U3RyZWFtUHJpdmF0ZSAqcHJpdiA9IHNvdXBfbXVsdGlwYXJ0 X2lucHV0X3N0cmVhbV9nZXRfaW5zdGFuY2VfcHJpdmF0ZSAobXVsdGlwYXJ0KTsKKyAJZ3VjaGFy IHJlYWRfYnVmW1JFU1BPTlNFX0JMT0NLX1NJWkVdOworLQlndWNoYXIgKmJ1ZjsKKyAJZ2Jvb2xl YW4gZ290X2JvdW5kYXJ5ID0gRkFMU0U7CisgCWdib29sZWFuIGdvdF9sZiA9IEZBTFNFOworIAln c3NpemUgbnJlYWQgPSAwOworQEAgLTM4MywyMiArMzgyLDIzIEBAIHNvdXBfbXVsdGlwYXJ0X2lu cHV0X3N0cmVhbV9yZWFkX2hlYWRlcnMgKFNvdXBNdWx0aXBhcnRJbnB1dFN0cmVhbSAgKm11bHRp cGFydCwKKyAJCSAqIG1heSBnZXQgdGhlIG11bHRpcGFydCBlbmQgaW5kaWNhdG9yIHdpdGhvdXQg Z2V0dGluZyBhIG5ldyBsaW5lLgorIAkJICovCisgCQlpZiAoIWdvdF9ib3VuZGFyeSAmJgorKwkJ ICAgIHByaXYtPm1ldGFfYnVmLT5sZW4gPj0gcHJpdi0+Ym91bmRhcnlfc2l6ZSAmJgorIAkJICAg ICFzdHJuY21wICgoY2hhciAqKXByaXYtPm1ldGFfYnVmLT5kYXRhLAorIAkJCSAgICAgIHByaXYt PmJvdW5kYXJ5LAorIAkJCSAgICAgIHByaXYtPmJvdW5kYXJ5X3NpemUpKSB7CisgCQkJZ290X2Jv dW5kYXJ5ID0gVFJVRTsKKyAKKyAJCQkvKiBOb3cgY2hlY2sgZm9yIHBvc3NpYmxlIG11bHRpcGFy dCB0ZXJtaW5hdGlvbi4gKi8KKy0JCQlidWYgPSAmcmVhZF9idWZbbnJlYWQgLSA0XTsKKy0JCQlp ZiAoKG5yZWFkID49IDQgJiYgIW1lbWNtcCAoYnVmLCAiLS1cclxuIiwgNCkpIHx8CistCQkJICAg IChucmVhZCA+PSAzICYmICFtZW1jbXAgKGJ1ZiArIDEsICItLVxuIiwgMykpIHx8CistCQkJICAg IChucmVhZCA+PSAzICYmICFtZW1jbXAgKGJ1ZiArIDIsICItLSIsIDIpKSkgeworKwkJCWlmICgo bnJlYWQgPj0gNCAmJiAhbWVtY21wIChyZWFkX2J1ZiArIG5yZWFkIC0gNCwgIi0tXHJcbiIsIDQp KSB8fAorKwkJCSAgICAobnJlYWQgPj0gMyAmJiAhbWVtY21wIChyZWFkX2J1ZiArIG5yZWFkIC0g MywgIi0tXG4iLCAzKSkgfHwKKysJCQkgICAgKG5yZWFkID49IDMgJiYgIW1lbWNtcCAocmVhZF9i dWYgKyBucmVhZCAtIDIsICItLSIsIDIpKSkgeworIAkJCQlnX2J5dGVfYXJyYXlfc2V0X3NpemUg KHByaXYtPm1ldGFfYnVmLCAwKTsKKyAJCQkJcmV0dXJuIEZBTFNFOworIAkJCX0KKyAJCX0KKyAK Ky0JCWdfcmV0dXJuX3ZhbF9pZl9mYWlsIChnb3RfbGYsIEZBTFNFKTsKKysJCWlmICghZ290X2xm KQorKwkJCXJldHVybiBGQUxTRTsKKyAKKyAJCS8qIERpc2NhcmQgcHJlLWJvdW5kYXJ5IGxpbmVz LiAqLworIAkJaWYgKCFnb3RfYm91bmRhcnkpIHsKK2RpZmYgLS1naXQgYS90ZXN0cy9tdWx0aXBh cnQtdGVzdC5jIGIvdGVzdHMvbXVsdGlwYXJ0LXRlc3QuYworaW5kZXggYjFiZjViYjguLmE1OThh MWM4IDEwMDY0NAorLS0tIGEvdGVzdHMvbXVsdGlwYXJ0LXRlc3QuYworKysrIGIvdGVzdHMvbXVs dGlwYXJ0LXRlc3QuYworQEAgLTU5Niw2ICs1OTYsNDIgQEAgdGVzdF9tdWx0aXBhcnRfYm91bmRz X2JhZF8zICh2b2lkKQorICAgICAgICAgZ19vYmplY3RfdW5yZWYgKG1zZyk7CisgfQorIAorK3N0 YXRpYyB2b2lkCisrdGVzdF9tdWx0aXBhcnRfYm91bmRzX2JhZF80ICh2b2lkKQorK3sKKysgICAg ICAgIFNvdXBNZXNzYWdlICptc2c7CisrICAgICAgICBTb3VwTWVzc2FnZUhlYWRlcnMgKmhlYWRl cnM7CisrICAgICAgICBHSW5wdXRTdHJlYW0gKmluOworKyAgICAgICAgR0lucHV0U3RyZWFtICpu ZXh0X3BhcnQ7CisrICAgICAgICBTb3VwTXVsdGlwYXJ0SW5wdXRTdHJlYW0gKm11bHRpcGFydDsK KysgICAgICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworKyAgICAgICAgZ2NoYXIgKmJvdW5kYXJ5 OworKyAgICAgICAgZ2NoYXIgKmNvbnRlbnRfdHlwZTsKKysgICAgICAgIGdjaGFyICpyYXdfZGF0 YTsKKysKKysgICAgICAgIGJvdW5kYXJ5ID0gZ19uZXcgKGdjaGFyLCAyMDAwMSk7CisrICAgICAg ICBtZW1zZXQgKGJvdW5kYXJ5LCAnYScsIDIwMDAwKTsKKysgICAgICAgIGJvdW5kYXJ5WzIwMDAw XSA9ICdcMCc7CisrCisrICAgICAgICBtc2cgPSBzb3VwX21lc3NhZ2VfbmV3KFNPVVBfTUVUSE9E X1BPU1QsICJodHRwOi8vZm9vL3VwbG9hZCIpOworKyAgICAgICAgaGVhZGVycyA9IHNvdXBfbWVz c2FnZV9nZXRfcmVzcG9uc2VfaGVhZGVycyAobXNnKTsKKysgICAgICAgIGNvbnRlbnRfdHlwZSA9 IGdfc3RyY29uY2F0ICgibXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9XCIiLCBib3VuZGFy eSwgIlwiIiwgTlVMTCk7CisrICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19yZXBsYWNlICho ZWFkZXJzLCAiQ29udGVudC1UeXBlIiwgY29udGVudF90eXBlKTsKKysKKysgICAgICAgIHJhd19k YXRhID0gZ19zdHJjb25jYXQgKCItLSIsIGJvdW5kYXJ5LCAiXHJcbkNvbnRlbnQtVHlwZTogdGV4 dC1wbGFpblxyXG5cclxuWFxyXG4iLCBOVUxMKTsKKysgICAgICAgIGluID0gZ19tZW1vcnlfaW5w dXRfc3RyZWFtX25ld19mcm9tX2RhdGEgKHJhd19kYXRhLCBzdHJsZW4gKHJhd19kYXRhKSwgTlVM TCk7CisrICAgICAgICBtdWx0aXBhcnQgPSBzb3VwX211bHRpcGFydF9pbnB1dF9zdHJlYW1fbmV3 IChtc2csIGluKTsKKysgICAgICAgIGdfb2JqZWN0X3VucmVmIChpbik7CisrICAgICAgICBuZXh0 X3BhcnQgPSBzb3VwX211bHRpcGFydF9pbnB1dF9zdHJlYW1fbmV4dF9wYXJ0IChtdWx0aXBhcnQs IE5VTEwsICZlcnJvcik7CisrICAgICAgICBnX2Fzc2VydF9ub19lcnJvciAoZXJyb3IpOworKyAg ICAgICAgZ19hc3NlcnRfbnVsbCAobmV4dF9wYXJ0KTsKKysgICAgICAgIGdfb2JqZWN0X3VucmVm IChtdWx0aXBhcnQpOworKyAgICAgICAgZ19vYmplY3RfdW5yZWYgKG1zZyk7CisrICAgICAgICBn X2ZyZWUgKHJhd19kYXRhKTsKKysgICAgICAgIGdfZnJlZSAoY29udGVudF90eXBlKTsKKysgICAg ICAgIGdfZnJlZSAoYm91bmRhcnkpOworK30KKysKKyBzdGF0aWMgdm9pZAorIHRlc3RfbXVsdGlw YXJ0X3Rvb19sYXJnZSAodm9pZCkKKyB7CitAQCAtNjY2LDYgKzcwMiw3IEBAIG1haW4gKGludCBh cmdjLCBjaGFyICoqYXJndikKKyAJZ190ZXN0X2FkZF9mdW5jICgiL211bHRpcGFydC9ib3VuZHMt YmFkIiwgdGVzdF9tdWx0aXBhcnRfYm91bmRzX2JhZCk7CisgCWdfdGVzdF9hZGRfZnVuYyAoIi9t dWx0aXBhcnQvYm91bmRzLWJhZC0yIiwgdGVzdF9tdWx0aXBhcnRfYm91bmRzX2JhZF8yKTsKKyAg ICAgICAgIGdfdGVzdF9hZGRfZnVuYyAoIi9tdWx0aXBhcnQvYm91bmRzLWJhZC0zIiwgdGVzdF9t dWx0aXBhcnRfYm91bmRzX2JhZF8zKTsKKysgICAgICAgIGdfdGVzdF9hZGRfZnVuYyAoIi9tdWx0 aXBhcnQvYm91bmRzLWJhZC00IiwgdGVzdF9tdWx0aXBhcnRfYm91bmRzX2JhZF80KTsKKyAJZ190 ZXN0X2FkZF9mdW5jICgiL211bHRpcGFydC90b28tbGFyZ2UiLCB0ZXN0X211bHRpcGFydF90b29f bGFyZ2UpOworIAorIAlyZXQgPSBnX3Rlc3RfcnVuICgpOworLS0gCitHaXRMYWIKKwoKZGlmZiAt LWdpdCBhL0NWRS0yMDI2LTc3NjgwLnBhdGNoIGIvQ1ZFLTIwMjYtNzc2ODAucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZhZTQyMgotLS0gL2Rldi9udWxsCisrKyBi L0NWRS0yMDI2LTc3NjgwLnBhdGNoCkBAIC0wLDAgKzEsNjgxIEBACitGcm9tIGU4MmMxM2JhMDNk ZWZjZWUxMGY5ODFhYzk2NGY0ZDU3MGIyMWEyNTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBQYXRyaWNrIEdyaWZmaXMgPHBncmlmZmlzQGlnYWxpYS5jb20+CitEYXRlOiBXZWQsIDEy IEF1ZyAyMDI2IDE0OjIxOjUyIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc3NhZ2UtaGVhZGVy czogRml4IFJhbmdlIHBhcnNpbmcgb3ZlcmZsb3dzIGFuZCBjb2FsZXNjaW5nCisgY29zdAorCitB IHN1ZmZpeCByYW5nZSBsb25nZXIgdGhhbiB0aGUgYm9keSBkcm92ZSB0aGUgcmFuZ2Ugc3RhcnQg bmVnYXRpdmUsIHdoaWNoCit0aGVuIHJlYWNoZWQgYSBnX2Fzc2VydCgpIGFuZCBhYm9ydGVkIHRo ZSBwcm9jZXNzLiBDbGFtcCBpdCB0byBzZWxlY3QgdGhlCit3aG9sZSBib2R5IGluc3RlYWQsIGFz IFJGQyA5MTEwIHNlY3Rpb24gMTQuMS4yIHJlcXVpcmVzLiBSYW5nZSBzdGFydHMgYW5kCitlbmRz IHdoaWNoIG92ZXJmbG93IHRoZSBnb2Zmc2V0IHRoZXkgYXJlIHBhcnNlZCBpbnRvIGFyZSBub3cg cmVqZWN0ZWQgYW5kCitjbGFtcGVkIHJlc3BlY3RpdmVseSwgcmF0aGVyIHRoYW4gd3JhcHBpbmcg bmVnYXRpdmUgYW5kIHJlYWNoaW5nIHRoZSBzYW1lCithc3NlcnRpb24uCisKK1JhbmdlcyBhcmUg bm8gbG9uZ2VyIGNvYWxlc2NlZCBieSByZW1vdmluZyBlYWNoIG1lcmdlZCBlbGVtZW50IGluIHR1 cm4sCit3aGljaCB3YXMgcXVhZHJhdGljIGluIHRoZWlyIG51bWJlciwgYW5kIGEgUmFuZ2UgaGVh ZGVyIGxpc3RpbmcgbW9yZSB0aGFuCitNQVhfUkFOR0VTIHJhbmdlcyBpcyBub3cgYW5zd2VyZWQg d2l0aCA0MTYgaW5zdGVhZCBvZiBiZWluZyBzZXJ2ZWQ7IFJGQworOTExMCBzZWN0aW9uIDE1LjUu MTcgbmFtZXMgYW4gZXhjZXNzaXZlIG51bWJlciBvZiByYW5nZXMgYXMgYSByZWFzb24gZm9yCit0 aGF0IHN0YXR1cy4KKworRmluYWxseSwgc29ydF9yYW5nZXMoKSByZXR1cm5lZCBhIGdvZmZzZXQg ZGlmZmVyZW5jZSB0cnVuY2F0ZWQgdG8gaW50LCBzbworaXQgcmVwb3J0ZWQgdGhlIHdyb25nIG9y ZGVyIGZvciByYW5nZXMgbW9yZSB0aGFuIEdfTUFYSU5UIGFwYXJ0LCBhbmQgdGhlCittZXJnZSBi ZWxvdyBpdCB0aGVuIGRyb3BwZWQgcmFuZ2VzIGZyb20gcmVzcG9uc2VzIG92ZXIgMkdCLgorCitG aXhlcyAjNTE2CitGaXhlcyAjNTE5CitGaXhlcyAjNTM1CitGaXhlcyAjNTM4CitGaXhlcyAjNTQ0 CitGaXhlcyAjNTQ3CitGaXhlcyAjNTQ4CistLS0KKyBsaWJzb3VwL3NvdXAtbWVzc2FnZS1oZWFk ZXJzLXByaXZhdGUuaCB8ICAgMiArCisgbGlic291cC9zb3VwLW1lc3NhZ2UtaGVhZGVycy5jICAg ICAgICAgfCAgODkgKysrKystLQorIHRlc3RzL3JhbmdlLXRlc3QuYyAgICAgICAgICAgICAgICAg ICAgIHwgMzQ3ICsrKysrKysrKysrKysrKysrKysrKysrKysKKyB0ZXN0cy9zZXJ2ZXItbWVtLWxp bWl0LXRlc3QuYyAgICAgICAgICB8ICA2MSArKystLQorIDQgZmlsZXMgY2hhbmdlZCwgNDY0IGlu c2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlic291cC9zb3Vw LW1lc3NhZ2UtaGVhZGVycy1wcml2YXRlLmggYi9saWJzb3VwL3NvdXAtbWVzc2FnZS1oZWFkZXJz LXByaXZhdGUuaAoraW5kZXggNzA4YWZlOTguLjJlOTZhZjM0IDEwMDY0NAorLS0tIGEvbGlic291 cC9zb3VwLW1lc3NhZ2UtaGVhZGVycy1wcml2YXRlLmgKKysrKyBiL2xpYnNvdXAvc291cC1tZXNz YWdlLWhlYWRlcnMtcHJpdmF0ZS5oCitAQCAtMTAsNiArMTAsOCBAQCAjaW5jbHVkZSAic291cC1o ZWFkZXItbmFtZXMuaCIKKworIEdfQkVHSU5fREVDTFMKKworKyNkZWZpbmUgTUFYX1JBTkdFUyAy MDAKKysKKyB0eXBlZGVmIGVudW0geworICAgICAgICAgU09VUF9IRUFERVJfVkFMVUVfVU5UUlVT VEVELAorICAgICAgICAgU09VUF9IRUFERVJfVkFMVUVfVFJVU1RFRAorZGlmZiAtLWdpdCBhL2xp YnNvdXAvc291cC1tZXNzYWdlLWhlYWRlcnMuYyBiL2xpYnNvdXAvc291cC1tZXNzYWdlLWhlYWRl cnMuYworaW5kZXggYjJlYzAzNmMuLjdlMmU2NTgzIDEwMDY0NAorLS0tIGEvbGlic291cC9zb3Vw LW1lc3NhZ2UtaGVhZGVycy5jCisrKysgYi9saWJzb3VwL3NvdXAtbWVzc2FnZS1oZWFkZXJzLmMK K0BAIC0xMjI2LDcgKzEyMjYsMTIgQEAgc29ydF9yYW5nZXMgKGdjb25zdHBvaW50ZXIgYSwgZ2Nv bnN0cG9pbnRlciBiKQorIAlTb3VwUmFuZ2UgKnJhID0gKFNvdXBSYW5nZSAqKWE7CisgCVNvdXBS YW5nZSAqcmIgPSAoU291cFJhbmdlICopYjsKKyAKKy0JcmV0dXJuIHJhLT5zdGFydCAtIHJiLT5z dGFydDsKKysJaWYgKHJhLT5zdGFydCA8IHJiLT5zdGFydCkKKysJCXJldHVybiAtMTsKKysJZWxz ZSBpZiAocmEtPnN0YXJ0ID4gcmItPnN0YXJ0KQorKwkJcmV0dXJuIDE7CisrCWVsc2UKKysJCXJl dHVybiAwOworIH0KKyAKKyAvKiBsaWtlIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9yYW5nZXMo KSwgZXhjZXB0IGl0IHJldHVybnM6CitAQCAtMTI3MCw2ICsxMjc1LDE3IEBAIHNvdXBfbWVzc2Fn ZV9oZWFkZXJzX2dldF9yYW5nZXNfaW50ZXJuYWwgKFNvdXBNZXNzYWdlSGVhZGVycyAgKmhkcnMs CisgCWlmICghcmFuZ2VfbGlzdCkKKyAJCXJldHVybiBTT1VQX1NUQVRVU19PSzsgIC8qIGludmFs aWQgbGlzdCAqLworIAorKwkvKiBSZWplY3QgdGhlIGhlYWRlciBvdXRyaWdodCBpZiBpdCBhc2tz IGZvciBtb3JlIHJhbmdlcyB0aGFuIHdlIGFyZQorKwkgKiB3aWxsaW5nIHRvIHNlcnZlLCByYXRo ZXIgdGhhbiBhbnN3ZXJpbmcgd2l0aCB0aGUgd2hvbGUgYm9keTogYSBjbGllbnQKKysJICogYXNr aW5nIGZvciB0aGlzIG1hbnkgcmFuZ2VzIHdhbnRzIHRvIGJlIHRvbGQgc28sIGFuZCBSRkMgOTEx MCDCpzE0LjIKKysJICogYWxsb3dzIHJlamVjdGluZyBzdWNoIGEgaGVhZGVyIGZvciBleGFjdGx5 IHRoaXMgcmVhc29uLgorKwkgKi8KKysJaWYgKGdfc2xpc3RfbGVuZ3RoIChyYW5nZV9saXN0KSA+ IE1BWF9SQU5HRVMpIHsKKysJCXNvdXBfaGVhZGVyX2ZyZWVfbGlzdCAocmFuZ2VfbGlzdCk7Cisr CQlyZXR1cm4gY2hlY2tfc2F0aXNmaWFibGUgPyBTT1VQX1NUQVRVU19SRVFVRVNURURfUkFOR0Vf Tk9UX1NBVElTRklBQkxFCisrCQkJCQkgOiBTT1VQX1NUQVRVU19PSzsKKysJfQorKworIAkvKiBM b29wIHRocm91Z2ggdGhlIHJhbmdlcyBhbmQgbW9kaWZ5IHRoZSBzdGF0dXMgYWNjb3JkaW5nbHku IERlZmF1bHQgdG8KKyAJICogc3RhdHVzIDIwMCAoT0ssIGlnbm9yaW5nIHRoZSByYW5nZXMpLiBT d2l0Y2ggdG8gc3RhdHVzIDIwNiAoUGFydGlhbAorIAkgKiBDb250ZW50KSBpZiB0aGVyZSBpcyBh dCBsZWFzdCBvbmUgcGFydGlhbGx5IHZhbGlkIHJhbmdlLiBTd2l0Y2ggdG8KK0BAIC0xMjgxLDE1 ICsxMjk3LDQ4IEBAIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9yYW5nZXNfaW50ZXJuYWwgKFNv dXBNZXNzYWdlSGVhZGVycyAgKmhkcnMsCisgCisgCQlzcGVjID0gci0+ZGF0YTsKKyAJCWlmICgq c3BlYyA9PSAnLScpIHsKKy0JCQljdXIuc3RhcnQgPSBnX2FzY2lpX3N0cnRvbGwgKHNwZWMsICZl bmQsIDEwKSArIHRvdGFsX2xlbmd0aDsKKysJCQlnaW50NjQgc3VmZml4X2xlbmd0aDsKKysKKysJ CQllcnJubyA9IDA7CisrCQkJc3VmZml4X2xlbmd0aCA9IGdfYXNjaWlfc3RydG9sbCAoc3BlYywg JmVuZCwgMTApOworKworKwkJCS8qIEEgc3VmZml4IHJhbmdlIGFza3MgZm9yIHRoZSBsYXN0IC1z dWZmaXhfbGVuZ3RoIGJ5dGVzCisrCQkJICogb2YgdGhlIGJvZHkuIElmIHRoZSBib2R5IGlzIHNo b3J0ZXIgdGhhbiB0aGF0IHRoZW4gdGhlCisrCQkJICogd2hvbGUgYm9keSBpcyB1c2VkLCBwZXIg UkZDIDkxMTAgwqcxNC4xLjI7IHdpdGhvdXQKKysJCQkgKiBjbGFtcGluZywgdGhlIHN0YXJ0IHdv dWxkIGdvIG5lZ2F0aXZlIGFuZCByZWFjaCB0aGUKKysJCQkgKiBhc3NlcnRpb24gYmVsb3cuCisr CQkJICovCisrCQkJaWYgKGVycm5vID09IEVSQU5HRSB8fCBzdWZmaXhfbGVuZ3RoIDw9IC10b3Rh bF9sZW5ndGgpCisrCQkJCWN1ci5zdGFydCA9IDA7CisrCQkJZWxzZQorKwkJCQljdXIuc3RhcnQg PSB0b3RhbF9sZW5ndGggKyBzdWZmaXhfbGVuZ3RoOworKworIAkJCWN1ci5lbmQgPSB0b3RhbF9s ZW5ndGggLSAxOworIAkJfSBlbHNlIHsKKy0JCQljdXIuc3RhcnQgPSBnX2FzY2lpX3N0cnRvdWxs IChzcGVjLCAmZW5kLCAxMCk7CisrCQkJZ3VpbnQ2NCB2YWx1ZTsKKysKKysJCQllcnJubyA9IDA7 CisrCQkJdmFsdWUgPSBnX2FzY2lpX3N0cnRvdWxsIChzcGVjLCAmZW5kLCAxMCk7CisrCQkJaWYg KGVycm5vID09IEVSQU5HRSB8fCB2YWx1ZSA+IEdfTUFYSU5UNjQpIHsKKysJCQkJaXNfYWxsX3Zh bGlkID0gRkFMU0U7CisrCQkJCWNvbnRpbnVlOworKwkJCX0KKysJCQljdXIuc3RhcnQgPSAoZ29m ZnNldCkgdmFsdWU7CisrCisgCQkJaWYgKCplbmQgPT0gJy0nKQorIAkJCQllbmQrKzsKKy0JCQlp ZiAoKmVuZCkKKy0JCQkJY3VyLmVuZCA9IGdfYXNjaWlfc3RydG91bGwgKGVuZCwgJmVuZCwgMTAp OworLQkJCWVsc2UKKysJCQlpZiAoKmVuZCkgeworKwkJCQllcnJubyA9IDA7CisrCQkJCXZhbHVl ID0gZ19hc2NpaV9zdHJ0b3VsbCAoZW5kLCAmZW5kLCAxMCk7CisrCisrCQkJCS8qIEFuIGVuZCB0 aGlzIGxhcmdlIGlzIGNsYW1wZWQgdG8gdGhlIGVuZCBvZiB0aGUKKysJCQkJICogYm9keSBiZWxv dywgbGlrZSBhbnkgb3RoZXIgZW5kIHBhc3QgaXQuCisrCQkJCSAqLworKwkJCQlpZiAoZXJybm8g PT0gRVJBTkdFIHx8IHZhbHVlID4gR19NQVhJTlQ2NCkKKysJCQkJCWN1ci5lbmQgPSBHX01BWElO VDY0OworKwkJCQllbHNlCisrCQkJCQljdXIuZW5kID0gKGdvZmZzZXQpIHZhbHVlOworKwkJCX0g ZWxzZQorIAkJCQljdXIuZW5kID0gdG90YWxfbGVuZ3RoIC0gMTsKKyAJCX0KKyAKK0BAIC0xMzMw LDE5ICsxMzc5LDI0IEBAIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9yYW5nZXNfaW50ZXJuYWwg KFNvdXBNZXNzYWdlSGVhZGVycyAgKmhkcnMsCisgCX0KKyAKKyAJaWYgKHRvdGFsX2xlbmd0aCkg eworLQkJZ3VpbnQgaTsKKysJCVNvdXBSYW5nZSAqZGF0YTsKKysJCWd1aW50IGksIGxhc3QgPSAw OworIAorIAkJZ19hcnJheV9zb3J0IChhcnJheSwgc29ydF9yYW5nZXMpOworLQkJZm9yIChpID0g MTsgaSA8IGFycmF5LT5sZW47IGkrKykgeworLQkJCVNvdXBSYW5nZSAqY3VyID0gJigoU291cFJh bmdlICopYXJyYXktPmRhdGEpW2ldOworLQkJCVNvdXBSYW5nZSAqcHJldiA9ICYoKFNvdXBSYW5n ZSAqKWFycmF5LT5kYXRhKVtpIC0gMV07CisgCistCQkJaWYgKGN1ci0+c3RhcnQgPD0gcHJldi0+ ZW5kKSB7CistCQkJCXByZXYtPmVuZCA9IE1BWCAocHJldi0+ZW5kLCBjdXItPmVuZCk7CistCQkJ CWdfYXJyYXlfcmVtb3ZlX2luZGV4IChhcnJheSwgaSk7CistCQkJCWktLTsKKy0JCQl9CisrCQkv KiBNZXJnZSBvdmVybGFwcGluZyByYW5nZXMgaW50byB0aGUgcnVuIGJlaW5nIGJ1aWx0IGF0IEBs YXN0LgorKwkJICogUmVtb3ZpbmcgdGhlIG1lcmdlZCBlbGVtZW50cyBvbmUgYXQgYSB0aW1lIGlu c3RlYWQgbWFkZSB0aGlzCisrCQkgKiBxdWFkcmF0aWMgaW4gdGhlIG51bWJlciBvZiByYW5nZXMu CisrCQkgKi8KKysJCWRhdGEgPSAoU291cFJhbmdlICopYXJyYXktPmRhdGE7CisrCQlmb3IgKGkg PSAxOyBpIDwgYXJyYXktPmxlbjsgaSsrKSB7CisrCQkJaWYgKGRhdGFbaV0uc3RhcnQgPD0gZGF0 YVtsYXN0XS5lbmQpCisrCQkJCWRhdGFbbGFzdF0uZW5kID0gTUFYIChkYXRhW2xhc3RdLmVuZCwg ZGF0YVtpXS5lbmQpOworKwkJCWVsc2UKKysJCQkJZGF0YVsrK2xhc3RdID0gZGF0YVtpXTsKKyAJ CX0KKysKKysJCWdfYXJyYXlfc2V0X3NpemUgKGFycmF5LCBsYXN0ICsgMSk7CisgCX0KKyAKKyAJ KnJhbmdlcyA9IChTb3VwUmFuZ2UgKilhcnJheS0+ZGF0YTsKK0BAIC0xMzc1LDYgKzE0MjksMTEg QEAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X3Jhbmdlc19pbnRlcm5hbCAoU291cE1lc3NhZ2VI ZWFkZXJzICAqaGRycywKKyAgKiBCZXdhcmUgdGhhdCBldmVuIGlmIGdpdmVuIGEgQHRvdGFsX2xl bmd0aCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdAorICAqIGNoZWNrIHRoYXQgdGhlIHJhbmdlcyBh cmUgc2F0aXNmaWFibGUuCisgICoKKysgKiBBIFJhbmdlIGhlYWRlciByZXF1ZXN0aW5nIG1vcmUg dGhhbiAyMDAgcmFuZ2VzIGlzIHJlamVjdGVkLCBzaW5jZSBzZXJ2aW5nCisrICogdGhhdCBtYW55 IHJhbmdlcyBjb3N0cyBmYXIgbW9yZSB0aGFuIHRoZSByZXF1ZXN0IGFza2luZyBmb3IgdGhlbS4K KysgKiBbY2xhc3NAU2VydmVyXSBhbnN3ZXJzIHN1Y2ggYSByZXF1ZXN0IHdpdGgKKysgKiAlU09V UF9TVEFUVVNfUkVRVUVTVEVEX1JBTkdFX05PVF9TQVRJU0ZJQUJMRS4KKysgKgorICAqIFtjbGFz c0BTZXJ2ZXJdIGhhcyBidWlsdC1pbiBoYW5kbGluZyBmb3IgcmFuZ2UgcmVxdWVzdHMuIElmIHlv dXIKKyAgKiBzZXJ2ZXIgaGFuZGxlciByZXR1cm5zIGEgJVNPVVBfU1RBVFVTX09LIHJlc3BvbnNl IGNvbnRhaW5pbmcgdGhlCisgICogY29tcGxldGUgcmVzcG9uc2UgYm9keSAocmF0aGVyIHRoYW4g cGF1c2luZyB0aGUgbWVzc2FnZSBhbmQKK2RpZmYgLS1naXQgYS90ZXN0cy9yYW5nZS10ZXN0LmMg Yi90ZXN0cy9yYW5nZS10ZXN0LmMKK2luZGV4IGNmZDVmNjEzLi45ZTRlZDJjOSAxMDA2NDQKKy0t LSBhL3Rlc3RzL3JhbmdlLXRlc3QuYworKysrIGIvdGVzdHMvcmFuZ2UtdGVzdC5jCitAQCAtMyw2 ICszLDggQEAKKyAjaW5jbHVkZSAiY29uZmlnLmgiCisgCisgI2luY2x1ZGUgInRlc3QtdXRpbHMu aCIKKysjaW5jbHVkZSAic291cC1tZXNzYWdlLWhlYWRlcnMtcHJpdmF0ZS5oIgorKyNpbmNsdWRl ICJzb3VwLW1pc2MuaCIKKyAKKyBHQnl0ZXMgKmZ1bGxfcmVzcG9uc2U7CisgaW50IHRvdGFsX2xl bmd0aDsKK0BAIC0xNjEsNiArMTYzLDIxIEBAIHJlcXVlc3Rfc2luZ2xlX3JhbmdlX2J5X3N0cmlu ZyAoU291cFNlc3Npb24gKnNlc3Npb24sIGNvbnN0IGNoYXIgKnVyaSwKKyAJZ19vYmplY3RfdW5y ZWYgKG1zZyk7CisgfQorIAorKy8qIExpa2UgcmVxdWVzdF9zaW5nbGVfcmFuZ2VfYnlfc3RyaW5n KCksIGJ1dCBhYmxlIHRvIGNoZWNrIHRoZSByYW5nZXMgb2YgYQorKyAqIHN1Y2Nlc3NmdWwgMjA2 IGFzIHdlbGwuICovCisrc3RhdGljIHZvaWQKKytyZXF1ZXN0X3NpbmdsZV9yYW5nZV9ieV9zdHJp bmdfZnVsbCAoU291cFNlc3Npb24gKnNlc3Npb24sIGNvbnN0IGNoYXIgKnVyaSwKKysJCQkJICAg ICBjb25zdCBjaGFyICpyYW5nZSwgU291cFN0YXR1cyBleHBlY3RlZF9zdGF0dXMsCisrCQkJCSAg ICAgaW50IGV4cGVjdGVkX3N0YXJ0LCBpbnQgZXhwZWN0ZWRfZW5kKQorK3sKKysJU291cE1lc3Nh Z2UgKm1zZzsKKysKKysJbXNnID0gc291cF9tZXNzYWdlX25ldyAoIkdFVCIsIHVyaSk7CisrCXNv dXBfbWVzc2FnZV9oZWFkZXJzX3JlcGxhY2UgKHNvdXBfbWVzc2FnZV9nZXRfcmVxdWVzdF9oZWFk ZXJzIChtc2cpLCAiUmFuZ2UiLCByYW5nZSk7CisrCisrCWRvX3NpbmdsZV9yYW5nZSAoc2Vzc2lv biwgbXNnLCAwLCAwLCBleHBlY3RlZF9zdGF0dXMsIGV4cGVjdGVkX3N0YXJ0LCBleHBlY3RlZF9l bmQpOworK30KKysKKyBzdGF0aWMgdm9pZAorIGRvX211bHRpX3JhbmdlIChTb3VwU2Vzc2lvbiAq c2Vzc2lvbiwgU291cE1lc3NhZ2UgKm1zZywKKyAJCWludCBleHBlY3RlZF9yZXR1cm5fcmFuZ2Vz KQorQEAgLTQ0NSw2ICs0NjIsMjkwIEBAIGRvX3JhbmdlX3Rlc3QgKFNvdXBTZXNzaW9uICpzZXNz aW9uLCBjb25zdCBjaGFyICp1cmksCisgCQkJCQlTT1VQX1NUQVRVU19PSyk7CisgfQorIAorKy8q IFRlc3RzIGZvciB0aGUgUmFuZ2UgcGFyc2VyIGl0c2VsZi4gVW5saWtlIHRoZSB0ZXN0cyBhYm92 ZSwgdGhlc2UgZG9uJ3QgbmVlZAorKyAqIGEgc2VydmVyLCBzbyB0aGV5IGNhbiB1c2UgdG90YWwg bGVuZ3RocyB3aGljaCB3b3VsZCBiZSBpbXByYWN0aWNhbCB0bworKyAqIGFjdHVhbGx5IHNlcnZl LCBhbmQgdGhleSBjYW4gY2hlY2sgdGhlIGV4YWN0IHN0YXR1cyB3aGljaCB0aGUgc2VydmVyIHdv dWxkCisrICogdXNlIHJhdGhlciB0aGFuIG9ubHkgdGhlIG9uZXMgYSBjbGllbnQgY2FuIGRpc3Rp bmd1aXNoLgorKyAqLworK3R5cGVkZWYgc3RydWN0IHsKKysJY29uc3QgY2hhciAqZGVzY3JpcHRp b247CisrCWNvbnN0IGNoYXIgKmJ1Z3JlZjsKKysJY29uc3QgY2hhciAqcmFuZ2U7CisrCWdvZmZz ZXQgdG90YWxfbGVuZ3RoOworKwlndWludCBleHBlY3RlZF9zdGF0dXM7CisrCWludCBleHBlY3Rl ZF9uX3JhbmdlczsKKysJU291cFJhbmdlIGV4cGVjdGVkX3Jhbmdlc1szXTsKKyt9IFJhbmdlUGFy c2luZ1Rlc3Q7CisrCisrc3RhdGljIGNvbnN0IFJhbmdlUGFyc2luZ1Rlc3QgcmFuZ2VfcGFyc2lu Z190ZXN0c1tdID0geworKwkvKiBWYWxpZCByYW5nZXMgYWdhaW5zdCBhIHRlbiBieXRlIGJvZHks IGFzIGEgYmFzZWxpbmUuICovCisrCXsgInNpbXBsZSByYW5nZSIsIE5VTEwsCisrCSAgImJ5dGVz PTAtNCIsIDEwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEsIHsgeyAwLCA0IH0gfSB9 LAorKwl7ICJ3aG9sZSBib2R5IiwgTlVMTCwKKysJICAiYnl0ZXM9MC05IiwgMTAsIFNPVVBfU1RB VFVTX1BBUlRJQUxfQ09OVEVOVCwgMSwgeyB7IDAsIDkgfSB9IH0sCisrCXsgIm9wZW4gZW5kZWQg cmFuZ2UiLCBOVUxMLAorKwkgICJieXRlcz01LSIsIDEwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NP TlRFTlQsIDEsIHsgeyA1LCA5IH0gfSB9LAorKwl7ICJmaW5hbCBieXRlIiwgTlVMTCwKKysJICAi Ynl0ZXM9OS0iLCAxMCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAxLCB7IHsgOSwgOSB9 IH0gfSwKKysJeyAiZW5kIHBhc3QgdGhlIGJvZHkgaXMgY2xhbXBlZCIsIE5VTEwsCisrCSAgImJ5 dGVzPTEtMTAwIiwgMTAsIFNPVVBfU1RBVFVTX1BBUlRJQUxfQ09OVEVOVCwgMSwgeyB7IDEsIDkg fSB9IH0sCisrCXsgInN1ZmZpeCByYW5nZSIsIE5VTEwsCisrCSAgImJ5dGVzPS01IiwgMTAsIFNP VVBfU1RBVFVTX1BBUlRJQUxfQ09OVEVOVCwgMSwgeyB7IDUsIDkgfSB9IH0sCisrCXsgInNpbmds ZSBieXRlIHN1ZmZpeCByYW5nZSIsIE5VTEwsCisrCSAgImJ5dGVzPS0xIiwgMTAsIFNPVVBfU1RB VFVTX1BBUlRJQUxfQ09OVEVOVCwgMSwgeyB7IDksIDkgfSB9IH0sCisrCXsgIndoaXRlc3BhY2Ug YXJvdW5kIHRoZSByYW5nZXMiLCBOVUxMLAorKwkgICJieXRlcyBcdCA9IFx0IDAtNCIsIDEwLCBT T1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEsIHsgeyAwLCA0IH0gfSB9LAorKworKwkvKiBV bnNhdGlzZmlhYmxlIGFuZCBpbnZhbGlkIHJhbmdlcy4gKi8KKysJeyAic3RhcnQgcGFzdCB0aGUg Ym9keSIsIE5VTEwsCisrCSAgImJ5dGVzPTEwLTIwIiwgMTAsIFNPVVBfU1RBVFVTX1JFUVVFU1RF RF9SQU5HRV9OT1RfU0FUSVNGSUFCTEUsIDAsIHsgfSB9LAorKwl7ICJlbmQgYmVmb3JlIHN0YXJ0 IiwgTlVMTCwKKysJICAiYnl0ZXM9MTAtMSIsIDEwLCBTT1VQX1NUQVRVU19PSywgMCwgeyB9IH0s CisrCXsgInplcm8gbGVuZ3RoIHN1ZmZpeCByYW5nZSIsIE5VTEwsCisrCSAgImJ5dGVzPS0wIiwg MTAsIFNPVVBfU1RBVFVTX09LLCAwLCB7IH0gfSwKKysJeyAidHJhaWxpbmcgZ2FyYmFnZSIsIE5V TEwsCisrCSAgImJ5dGVzPTAtMTAgYnV0IHdpdGggd2VpcmQgdHJhaWxpbmcgY29udGVudCIsIDEw LCBTT1VQX1NUQVRVU19PSywgMCwgeyB9IH0sCisrCXsgImludmFsaWQgcmFuZ2UgZGFzaCIsIE5V TEwsCisrCSAgImJ5dGVzPTBhMTAiLCAxMCwgU09VUF9TVEFUVVNfT0ssIDAsIHsgfSB9LAorKwl7 ICJ1bmtub3duIHJhbmdlIHVuaXQiLCBOVUxMLAorKwkgICJob3JzZXM9MC0xMCIsIDEwLCBTT1VQ X1NUQVRVU19PSywgMCwgeyB9IH0sCisrCXsgIm1pc3NpbmcgZXF1YWxzIiwgTlVMTCwKKysJICAi Ynl0ZXMgMC0xMCIsIDEwLCBTT1VQX1NUQVRVU19PSywgMCwgeyB9IH0sCisrCXsgImRlbGltaXRl cnMgYnV0IG5vIHJhbmdlcyIsIE5VTEwsCisrCSAgImJ5dGVzPSwgLCxcdCwgIiwgMTAsIFNPVVBf U1RBVFVTX09LLCAwLCB7IH0gfSwKKysKKysJLyogQSBzdWZmaXggbGVuZ3RoIGF0IGxlYXN0IGFz IGxvbmcgYXMgdGhlIGJvZHkgc2VsZWN0cyB0aGUgd2hvbGUgYm9keSwKKysJICogcGVyIFJGQyA5 MTEwIMKnMTQuMS4yLiBUaGVzZSB1c2VkIHRvIGRyaXZlIHRoZSByYW5nZSBzdGFydCBuZWdhdGl2 ZSwKKysJICogd2hpY2ggYWJvcnRlZCB0aGUgcHJvY2VzcyBhdCB0aGUgZ19hc3NlcnQoKSBiZWxv dyB0aGUgcGFyc2UuCisrCSAqLworKwl7ICJzdWZmaXggcmFuZ2UgdGhlIGxlbmd0aCBvZiB0aGUg Ym9keSIsICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81 MTYiLAorKwkgICJieXRlcz0tMTAiLCAxMCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAx LCB7IHsgMCwgOSB9IH0gfSwKKysJeyAic3VmZml4IHJhbmdlIG9uZSBsb25nZXIgdGhhbiB0aGUg Ym9keSIsICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81 MTYiLAorKwkgICJieXRlcz0tMTEiLCAxMCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAx LCB7IHsgMCwgOSB9IH0gfSwKKysJeyAic3VmZml4IHJhbmdlIG11Y2ggbG9uZ2VyIHRoYW4gdGhl IGJvZHkiLCAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnNvdXAvLS9pc3N1ZXMv NTQ4IiwKKysJICAiYnl0ZXM9LTk5OTk5OSIsIDEwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRF TlQsIDEsIHsgeyAwLCA5IH0gfSB9LAorKwl7ICJzdWZmaXggcmFuZ2Ugb2YgR19NSU5JTlQiLCAi aHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnNvdXAvLS9pc3N1ZXMvNTQ3IiwKKysJ ICAiYnl0ZXM9LTIxNDc0ODM2NDgiLCAxMCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAx LCB7IHsgMCwgOSB9IH0gfSwKKysJeyAic3VmZml4IHJhbmdlIGxhcmdlciB0aGFuIGEgZ3VpbnQz MiIsICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81NDci LAorKwkgICJieXRlcz0tNDI5NDk2NzI5NiIsIDEwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRF TlQsIDEsIHsgeyAwLCA5IH0gfSB9LAorKwl7ICJzdWZmaXggcmFuZ2Ugb2YgR19NQVhJTlQ2NCIs ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81NDciLAor KwkgICJieXRlcz0tOTIyMzM3MjAzNjg1NDc3NTgwNyIsIDEwLCBTT1VQX1NUQVRVU19QQVJUSUFM X0NPTlRFTlQsIDEsIHsgeyAwLCA5IH0gfSB9LAorKwl7ICJzdWZmaXggcmFuZ2Ugb2YgR19NSU5J TlQ2NCIsICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81 NDciLAorKwkgICJieXRlcz0tOTIyMzM3MjAzNjg1NDc3NTgwOCIsIDEwLCBTT1VQX1NUQVRVU19Q QVJUSUFMX0NPTlRFTlQsIDEsIHsgeyAwLCA5IH0gfSB9LAorKwl7ICJzdWZmaXggcmFuZ2Ugb3Zl cmZsb3dpbmcgZ2ludDY0IiwgImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJzb3Vw Ly0vaXNzdWVzLzUzNSIsCisrCSAgImJ5dGVzPS05OTk5OTk5OTk5OTk5OTk5OTk5OSIsIDEwLCBT T1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEsIHsgeyAwLCA5IH0gfSB9LAorKwl7ICJvdmVy c2l6ZWQgc3VmZml4IHJhbmdlIG1lcmdlZCB3aXRoIGEgdmFsaWQgcmFuZ2UiLCAiaHR0cHM6Ly9n aXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnNvdXAvLS9pc3N1ZXMvNTQ4IiwKKysJICAiYnl0ZXM9 LTk5OTk5OSw0LTUiLCAxMCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAxLCB7IHsgMCwg OSB9IH0gfSwKKysKKysJLyogUmFuZ2Ugc3RhcnRzIGFuZCBlbmRzIHdoaWNoIG92ZXJmbG93IHRo ZSBzaWduZWQgZ29mZnNldCB0aGV5IGFyZQorKwkgKiBwYXJzZWQgaW50by4gQW4gb3ZlcmZsb3dp bmcgc3RhcnQgaXMgdHJlYXRlZCBsaWtlIGFueSBvdGhlciBzdGFydAorKwkgKiBiZXlvbmQgdGhl IGVuZCBvZiB0aGUgYm9keSwgYW5kIGFuIG92ZXJmbG93aW5nIGVuZCBpcyBjbGFtcGVkIGxpa2UK KysJICogYW55IG90aGVyIGVuZCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgYm9keS4KKysJICovCisr CXsgInN0YXJ0IG92ZXJmbG93aW5nIGdpbnQ2NCIsICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcv R05PTUUvbGlic291cC8tL2lzc3Vlcy81MzUiLAorKwkgICJieXRlcz05ODg4ODg4ODg4ODg4MDE5 OTAwLSIsIDEwLCBTT1VQX1NUQVRVU19PSywgMCwgeyB9IH0sCisrCXsgInN0YXJ0IG92ZXJmbG93 aW5nIGdpbnQ2NCB3aXRoIG5vIGRhc2giLCAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01F L2xpYnNvdXAvLS9pc3N1ZXMvNTM1IiwKKysJICAiYnl0ZXM9OTg4ODg4ODg4ODg4ODAxOTkwMCIs IDEwLCBTT1VQX1NUQVRVU19PSywgMCwgeyB9IH0sCisrCXsgInN0YXJ0IG9mIEdfTUFYSU5UNjQg KyAxIiwgImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJzb3VwLy0vaXNzdWVzLzUz NSIsCisrCSAgImJ5dGVzPTkyMjMzNzIwMzY4NTQ3NzU4MDgtIiwgMTAsIFNPVVBfU1RBVFVTX09L LCAwLCB7IH0gfSwKKysJeyAic3RhcnQgb3ZlcmZsb3dpbmcgZ3VpbnQ2NCIsICJodHRwczovL2dp dGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81MzUiLAorKwkgICJieXRlcz0x ODQ0Njc0NDA3MzcwOTU1MTYxNi0iLCAxMCwgU09VUF9TVEFUVVNfT0ssIDAsIHsgfSB9LAorKwl7 ICJzdGFydCBhbmQgZW5kIG92ZXJmbG93aW5nIGdpbnQ2NCIsICJodHRwczovL2dpdGxhYi5nbm9t ZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81MzUiLAorKwkgICJieXRlcz05ODg4ODg4ODg4 ODg4MDE5OTAwLTk4ODg4ODg4ODg4ODgwMTk5MDEiLCAxMCwgU09VUF9TVEFUVVNfT0ssIDAsIHsg fSB9LAorKwl7ICJlbmQgb3ZlcmZsb3dpbmcgZ2ludDY0IiwgImh0dHBzOi8vZ2l0bGFiLmdub21l Lm9yZy9HTk9NRS9saWJzb3VwLy0vaXNzdWVzLzUzNSIsCisrCSAgImJ5dGVzPTAtOTg4ODg4ODg4 ODg4ODAxOTkwMCIsIDEwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEsIHsgeyAwLCA5 IH0gfSB9LAorKwl7ICJlbmQgb3ZlcmZsb3dpbmcgZ3VpbnQ2NCIsICJodHRwczovL2dpdGxhYi5n bm9tZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81MzUiLAorKwkgICJieXRlcz0wLTE4NDQ2 NzQ0MDczNzA5NTUxNjE2IiwgMTAsIFNPVVBfU1RBVFVTX1BBUlRJQUxfQ09OVEVOVCwgMSwgeyB7 IDAsIDkgfSB9IH0sCisrCisrCS8qIFplcm8gbGVuZ3RoIGJvZGllcy4gc291cF9tZXNzYWdlX2hl YWRlcnNfZ2V0X3JhbmdlcygpIGlzIHB1YmxpYyBBUEksCisrCSAqIHNvIGl0IGNhbiBiZSBjYWxs ZWQgd2l0aCBvbmUgZXZlbiB0aG91Z2ggdGhlIHNlcnZlciBuZXZlciBkb2VzLgorKwkgKi8KKysJ eyAicmFuZ2UgYWdhaW5zdCBhbiBlbXB0eSBib2R5IiwgTlVMTCwKKysJICAiYnl0ZXM9MC05Iiwg MCwgU09VUF9TVEFUVVNfUkVRVUVTVEVEX1JBTkdFX05PVF9TQVRJU0ZJQUJMRSwgMCwgeyB9IH0s CisrCXsgInN1ZmZpeCByYW5nZSBhZ2FpbnN0IGFuIGVtcHR5IGJvZHkiLCAiaHR0cHM6Ly9naXRs YWIuZ25vbWUub3JnL0dOT01FL2xpYnNvdXAvLS9pc3N1ZXMvNTQ4IiwKKysJICAiYnl0ZXM9LTUi LCAwLCBTT1VQX1NUQVRVU19PSywgMCwgeyB9IH0sCisrCisrCS8qIE1lcmdpbmcuICovCisrCXsg Im92ZXJsYXBwaW5nIHJhbmdlcyBhcmUgbWVyZ2VkIiwgTlVMTCwKKysJICAiYnl0ZXM9MC0xMCw1 LTIwIiwgMTAwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEsIHsgeyAwLCAyMCB9IH0g fSwKKysJeyAiY29udGFpbmVkIHJhbmdlcyBhcmUgbWVyZ2VkIiwgTlVMTCwKKysJICAiYnl0ZXM9 MC0yMCw1LTEwIiwgMTAwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEsIHsgeyAwLCAy MCB9IH0gfSwKKysJeyAidG91Y2hpbmcgcmFuZ2VzIGFyZSBub3QgbWVyZ2VkIiwgTlVMTCwKKysJ ICAiYnl0ZXM9MC00LDUtOSIsIDEwMCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAyLCB7 IHsgMCwgNCB9LCB7IDUsIDkgfSB9IH0sCisrCXsgInJhbmdlcyBhcmUgc29ydGVkIiwgTlVMTCwK KysJICAiYnl0ZXM9MjAtMjksMC05IiwgMTAwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQs IDIsIHsgeyAwLCA5IH0sIHsgMjAsIDI5IH0gfSB9LAorKwl7ICJpbnZhbGlkIHJhbmdlcyBkbyBu b3QgcHJldmVudCB2YWxpZCBvbmVzIiwgTlVMTCwKKysJICAiYnl0ZXM9MC05LDUwLTQwLDIwLTI5 IiwgMTAwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDIsIHsgeyAwLCA5IH0sIHsgMjAs IDI5IH0gfSB9LAorKworKwkvKiBUaGUgY29tcGFyaXNvbiBmdW5jdGlvbiB1c2VkIHRvIHNvcnQg dGhlIHJhbmdlcyBiZWZvcmUgbWVyZ2luZyB0aGVtCisrCSAqIHVzZWQgdG8gdHJ1bmNhdGUgYSBn b2Zmc2V0IGRpZmZlcmVuY2UgdG8gaW50LCB3aGljaCBmbGlwcyBpdHMgc2lnbgorKwkgKiBmb3Ig Ym9kaWVzIG92ZXIgMkdCIGFuZCBzaWxlbnRseSBkcm9wcGVkIHJhbmdlcyBmcm9tIHRoZSByZXNw b25zZS4KKysJICovCisrCXsgInJhbmdlcyBtb3JlIHRoYW4gR19NQVhJTlQgYXBhcnQiLCAiaHR0 cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnNvdXAvLS9pc3N1ZXMvNTE5IiwKKysJICAi Ynl0ZXM9MC0xMDAsIDI1MDAwMDAwMDAtMjUwMDAwMDEwMCwgNDk5OTk5OTAwMC00OTk5OTk5MTAw IiwgNTAwMDAwMDAwMCwKKysJICBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDMsCisrCSAg eyB7IDAsIDEwMCB9LCB7IDI1MDAwMDAwMDAsIDI1MDAwMDAxMDAgfSwgeyA0OTk5OTk5MDAwLCA0 OTk5OTk5MTAwIH0gfSB9LAorKwl7ICJ1bnNvcnRlZCByYW5nZXMgbW9yZSB0aGFuIEdfTUFYSU5U IGFwYXJ0IiwgImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJzb3VwLy0vaXNzdWVz LzUxOSIsCisrCSAgImJ5dGVzPTQ5OTk5OTkwMDAtNDk5OTk5OTEwMCwgMC0xMDAsIDI1MDAwMDAw MDAtMjUwMDAwMDEwMCIsIDUwMDAwMDAwMDAsCisrCSAgU09VUF9TVEFUVVNfUEFSVElBTF9DT05U RU5ULCAzLAorKwkgIHsgeyAwLCAxMDAgfSwgeyAyNTAwMDAwMDAwLCAyNTAwMDAwMTAwIH0sIHsg NDk5OTk5OTAwMCwgNDk5OTk5OTEwMCB9IH0gfSwKKyt9OworKworK3N0YXRpYyB2b2lkCisrY2hl Y2tfcGFyc2VkX3JhbmdlcyAoY29uc3QgY2hhciAqcmFuZ2UsCisrCQkgICAgIGdvZmZzZXQgICAg IHRvdGFsX2xlbmd0aCwKKysJCSAgICAgZ3VpbnQgICAgICAgZXhwZWN0ZWRfc3RhdHVzLAorKwkJ ICAgICBpbnQgICAgICAgICBleHBlY3RlZF9uX3JhbmdlcywKKysJCSAgICAgY29uc3QgU291cFJh bmdlICpleHBlY3RlZF9yYW5nZXMpCisreworKwlTb3VwTWVzc2FnZUhlYWRlcnMgKmhkcnM7Cisr CVNvdXBSYW5nZSAqcmFuZ2VzID0gTlVMTDsKKysJaW50IG5fcmFuZ2VzID0gMDsKKysJZ3VpbnQg c3RhdHVzOworKwlpbnQgaTsKKysKKysJaGRycyA9IHNvdXBfbWVzc2FnZV9oZWFkZXJzX25ldyAo U09VUF9NRVNTQUdFX0hFQURFUlNfUkVRVUVTVCk7CisrCXNvdXBfbWVzc2FnZV9oZWFkZXJzX3Jl cGxhY2UgKGhkcnMsICJSYW5nZSIsIHJhbmdlKTsKKysKKysJc3RhdHVzID0gc291cF9tZXNzYWdl X2hlYWRlcnNfZ2V0X3Jhbmdlc19pbnRlcm5hbCAoaGRycywgdG90YWxfbGVuZ3RoLCBUUlVFLAor KwkJCQkJCQkgICAmcmFuZ2VzLCAmbl9yYW5nZXMpOworKworKwlnX2Fzc2VydF9jbXB1aW50IChz dGF0dXMsID09LCBleHBlY3RlZF9zdGF0dXMpOworKworKwlpZiAoc3RhdHVzID09IFNPVVBfU1RB VFVTX1BBUlRJQUxfQ09OVEVOVCkgeworKwkJZ19hc3NlcnRfbm9ubnVsbCAocmFuZ2VzKTsKKysJ CWdfYXNzZXJ0X2NtcGludCAobl9yYW5nZXMsID09LCBleHBlY3RlZF9uX3Jhbmdlcyk7CisrCisr CQlmb3IgKGkgPSAwOyBpIDwgbl9yYW5nZXM7IGkrKykgeworKwkJCWRlYnVnX3ByaW50ZiAoMiwg IiAgICBbJWRdOiAlIiBHX0dJTlQ2NF9GT1JNQVQgIi0lIiBHX0dJTlQ2NF9GT1JNQVQgIlxuIiwK KysJCQkJICAgICAgaSwgcmFuZ2VzW2ldLnN0YXJ0LCByYW5nZXNbaV0uZW5kKTsKKysKKysJCQln X2Fzc2VydF9jbXBpbnQgKHJhbmdlc1tpXS5zdGFydCwgPT0sIGV4cGVjdGVkX3Jhbmdlc1tpXS5z dGFydCk7CisrCQkJZ19hc3NlcnRfY21waW50IChyYW5nZXNbaV0uZW5kLCA9PSwgZXhwZWN0ZWRf cmFuZ2VzW2ldLmVuZCk7CisrCisrCQkJLyogV2hhdGV2ZXIgdGhlIGlucHV0LCB0aGUgcGFyc2Vk IHJhbmdlcyBtdXN0IGJlIHVzYWJsZQorKwkJCSAqIGFzIG9mZnNldHMgaW50byBhIGJ1ZmZlciBv ZiB0b3RhbF9sZW5ndGggYnl0ZXMuCisrCQkJICovCisrCQkJZ19hc3NlcnRfY21waW50IChyYW5n ZXNbaV0uc3RhcnQsID49LCAwKTsKKysJCQlnX2Fzc2VydF9jbXBpbnQgKHJhbmdlc1tpXS5lbmQs ID49LCByYW5nZXNbaV0uc3RhcnQpOworKwkJCWdfYXNzZXJ0X2NtcGludCAocmFuZ2VzW2ldLmVu ZCwgPCwgdG90YWxfbGVuZ3RoKTsKKysJCX0KKysJfQorKworKwlzb3VwX21lc3NhZ2VfaGVhZGVy c19mcmVlX3JhbmdlcyAoaGRycywgcmFuZ2VzKTsKKysJc291cF9tZXNzYWdlX2hlYWRlcnNfdW5y ZWYgKGhkcnMpOworK30KKysKKytzdGF0aWMgdm9pZAorK2RvX3JhbmdlX3BhcnNpbmdfdGVzdCAo dm9pZCkKKyt7CisrCWd1aW50IGk7CisrCisrCWZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMg KHJhbmdlX3BhcnNpbmdfdGVzdHMpOyBpKyspIHsKKysJCWNvbnN0IFJhbmdlUGFyc2luZ1Rlc3Qg KnRlc3QgPSAmcmFuZ2VfcGFyc2luZ190ZXN0c1tpXTsKKysKKysJCWRlYnVnX3ByaW50ZiAoMSwg IiUydS4gJXM6ICclcycgYWdhaW5zdCAlIiBHX0dPRkZTRVRfRk9STUFUICIgYnl0ZXNcbiIsCisr CQkJICAgICAgaSArIDEsIHRlc3QtPmRlc2NyaXB0aW9uLCB0ZXN0LT5yYW5nZSwgdGVzdC0+dG90 YWxfbGVuZ3RoKTsKKysKKysJCWlmICh0ZXN0LT5idWdyZWYpCisrCQkJZ190ZXN0X21lc3NhZ2Ug KCJCdWcgcmVmZXJlbmNlOiAlcyIsIHRlc3QtPmJ1Z3JlZik7CisrCisrCQljaGVja19wYXJzZWRf cmFuZ2VzICh0ZXN0LT5yYW5nZSwgdGVzdC0+dG90YWxfbGVuZ3RoLAorKwkJCQkgICAgIHRlc3Qt PmV4cGVjdGVkX3N0YXR1cywgdGVzdC0+ZXhwZWN0ZWRfbl9yYW5nZXMsCisrCQkJCSAgICAgdGVz dC0+ZXhwZWN0ZWRfcmFuZ2VzKTsKKysJfQorK30KKysKKysvKiBBIHNpbmdsZSBSYW5nZSBoZWFk ZXIgY2FuIGxpc3QgZmFyIG1vcmUgcmFuZ2VzIHRoYW4gYXJlIHJlYXNvbmFibGUgdG8gc2VydmU6 CisrICogdGhlIG9ubHkgbGltaXQgb24gdGhlIHdpcmUgaXMgdGhlIG1heGltdW0gcmVxdWVzdCBo ZWFkZXIgc2l6ZS4gKi8KKytzdGF0aWMgdm9pZAorK2RvX3JhbmdlX2NvdW50X3Rlc3QgKHZvaWQp CisreworKwlzdHJ1Y3QgeworKwkJaW50IG5fcmFuZ2VzOworKwkJZ2Jvb2xlYW4gaWRlbnRpY2Fs OworKwkJZ3VpbnQgZXhwZWN0ZWRfc3RhdHVzOworKwkJaW50IGV4cGVjdGVkX25fcmFuZ2VzOwor Kwl9IHRlc3RzW10gPSB7CisrCQkvKiBEaXN0aW5jdCByYW5nZXMsIHVwIHRvIGFuZCB0aGVuIHBh c3QgdGhlIGxpbWl0LiBHb2luZyBwYXN0IGl0CisrCQkgKiBpcyByZWplY3RlZCByYXRoZXIgdGhh biBpZ25vcmVkLgorKwkJICovCisrCQl7IDEwMCwgRkFMU0UsIFNPVVBfU1RBVFVTX1BBUlRJQUxf Q09OVEVOVCwgMTAwIH0sCisrCQl7IE1BWF9SQU5HRVMsIEZBTFNFLCBTT1VQX1NUQVRVU19QQVJU SUFMX0NPTlRFTlQsIE1BWF9SQU5HRVMgfSwKKysJCXsgTUFYX1JBTkdFUyArIDEsIEZBTFNFLCBT T1VQX1NUQVRVU19SRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklBQkxFLCAwIH0sCisrCisrCQkv KiBJZGVudGljYWwgcmFuZ2VzLCB3aGljaCBhbGwgbWVyZ2UgaW50byBvbmUuIFRoaXMgaXMgdGhl CisrCQkgKiBzaGFwZSB3aGljaCB1c2VkIHRvIGJlIHF1YWRyYXRpYy4KKysJCSAqLworKwkJeyBN QVhfUkFOR0VTLCBUUlVFLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEgfSwKKysJCXsg TUFYX1JBTkdFUyArIDEsIFRSVUUsIFNPVVBfU1RBVFVTX1JFUVVFU1RFRF9SQU5HRV9OT1RfU0FU SVNGSUFCTEUsIDAgfSwKKysJCXsgMjU1ODUsIFRSVUUsIFNPVVBfU1RBVFVTX1JFUVVFU1RFRF9S QU5HRV9OT1RfU0FUSVNGSUFCTEUsIDAgfSwKKysJfTsKKysJZ3VpbnQgaTsKKysJaW50IGo7Cisr CisrCWZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKHRlc3RzKTsgaSsrKSB7CisrCQlTb3Vw TWVzc2FnZUhlYWRlcnMgKmhkcnM7CisrCQlTb3VwUmFuZ2UgKnJhbmdlcyA9IE5VTEw7CisrCQlp bnQgbl9yYW5nZXMgPSAwOworKwkJZ3VpbnQgc3RhdHVzOworKwkJR1N0cmluZyAqcmFuZ2U7Cisr CisrCQlkZWJ1Z19wcmludGYgKDEsICIlMnUuICVkICVzIHJhbmdlc1xuIiwgaSArIDEsIHRlc3Rz W2ldLm5fcmFuZ2VzLAorKwkJCSAgICAgIHRlc3RzW2ldLmlkZW50aWNhbCA/ICJpZGVudGljYWwi IDogImRpc3RpbmN0Iik7CisrCisrCQlyYW5nZSA9IGdfc3RyaW5nX25ldyAoImJ5dGVzPSIpOwor KwkJZm9yIChqID0gMDsgaiA8IHRlc3RzW2ldLm5fcmFuZ2VzOyBqKyspIHsKKysJCQlpbnQgc3Rh cnQgPSB0ZXN0c1tpXS5pZGVudGljYWwgPyAwIDogaiAqIDI7CisrCisrCQkJaWYgKGogPiAwKQor KwkJCQlnX3N0cmluZ19hcHBlbmRfYyAocmFuZ2UsICcsJyk7CisrCQkJZ19zdHJpbmdfYXBwZW5k X3ByaW50ZiAocmFuZ2UsICIlZC0lZCIsIHN0YXJ0LCBzdGFydCk7CisrCQl9CisrCisrCQloZHJz ID0gc291cF9tZXNzYWdlX2hlYWRlcnNfbmV3IChTT1VQX01FU1NBR0VfSEVBREVSU19SRVFVRVNU KTsKKysJCXNvdXBfbWVzc2FnZV9oZWFkZXJzX3JlcGxhY2UgKGhkcnMsICJSYW5nZSIsIHJhbmdl LT5zdHIpOworKwkJZ19zdHJpbmdfZnJlZSAocmFuZ2UsIFRSVUUpOworKworKwkJc3RhdHVzID0g c291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X3Jhbmdlc19pbnRlcm5hbCAoaGRycywgMTAwMDAwMCwg VFJVRSwKKysJCQkJCQkJCSAgICZyYW5nZXMsICZuX3Jhbmdlcyk7CisrCisrCQlnX2Fzc2VydF9j bXB1aW50IChzdGF0dXMsID09LCB0ZXN0c1tpXS5leHBlY3RlZF9zdGF0dXMpOworKwkJaWYgKHN0 YXR1cyA9PSBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQpCisrCQkJZ19hc3NlcnRfY21waW50 IChuX3JhbmdlcywgPT0sIHRlc3RzW2ldLmV4cGVjdGVkX25fcmFuZ2VzKTsKKysKKysJCXNvdXBf bWVzc2FnZV9oZWFkZXJzX2ZyZWVfcmFuZ2VzIChoZHJzLCByYW5nZXMpOworKwkJc291cF9tZXNz YWdlX2hlYWRlcnNfdW5yZWYgKGhkcnMpOworKwl9CisrCisrCS8qIENhbGxlcnMgd2hpY2ggZG9u J3QgYXNrIGFib3V0IHNhdGlzZmlhYmlsaXR5LCBzdWNoIGFzIHRoZSBwdWJsaWMKKysJICogc291 cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X3JhbmdlcygpLCBjYW4ndCBiZSB0b2xkIDQxNiwgc28gYW4K KysJICogb3Zlci1saW1pdCBoZWFkZXIganVzdCByZXBvcnRzIG5vIHJhbmdlcyB0byB0aGVtLgor KwkgKi8KKysJeworKwkJU291cE1lc3NhZ2VIZWFkZXJzICpoZHJzOworKwkJU291cFJhbmdlICpy YW5nZXMgPSBOVUxMOworKwkJaW50IG5fcmFuZ2VzID0gMDsKKysJCUdTdHJpbmcgKnJhbmdlOwor KworKwkJcmFuZ2UgPSBnX3N0cmluZ19uZXcgKCJieXRlcz0wLTAiKTsKKysJCWZvciAoaiA9IDA7 IGogPCBNQVhfUkFOR0VTOyBqKyspCisrCQkJZ19zdHJpbmdfYXBwZW5kIChyYW5nZSwgIiwwLTAi KTsKKysKKysJCWhkcnMgPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19uZXcgKFNPVVBfTUVTU0FHRV9I RUFERVJTX1JFUVVFU1QpOworKwkJc291cF9tZXNzYWdlX2hlYWRlcnNfcmVwbGFjZSAoaGRycywg IlJhbmdlIiwgcmFuZ2UtPnN0cik7CisrCQlnX3N0cmluZ19mcmVlIChyYW5nZSwgVFJVRSk7Cisr CisrCQlnX2Fzc2VydF9jbXB1aW50IChzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfcmFuZ2VzX2lu dGVybmFsIChoZHJzLCAxMDAwMDAwLCBGQUxTRSwKKysJCQkJCQkJCQkgICAgJnJhbmdlcywgJm5f cmFuZ2VzKSwKKysJCQkJICA9PSwgU09VUF9TVEFUVVNfT0spOworKwkJZ19hc3NlcnRfZmFsc2Ug KHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9yYW5nZXMgKGhkcnMsIDEwMDAwMDAsICZyYW5nZXMs ICZuX3JhbmdlcykpOworKworKwkJc291cF9tZXNzYWdlX2hlYWRlcnNfZnJlZV9yYW5nZXMgKGhk cnMsIHJhbmdlcyk7CisrCQlzb3VwX21lc3NhZ2VfaGVhZGVyc191bnJlZiAoaGRycyk7CisrCX0K Kyt9CisrCisgI2lmZGVmIEhBVkVfQVBBQ0hFCisgc3RhdGljIHZvaWQKKyBkb19hcGFjaGVfcmFu Z2VfdGVzdCAodm9pZCkKK0BAIC00NzMsNiArNzc0LDQ5IEBAIHNlcnZlcl9oYW5kbGVyIChTb3Vw U2VydmVyICAgICAgICAqc2VydmVyLAorIAkJCQkJZnVsbF9yZXNwb25zZSk7CisgfQorIAorK3N0 YXRpYyB2b2lkCisrZG9fbGlic291cF9vbmx5X3JhbmdlX3Rlc3QgKFNvdXBTZXNzaW9uICpzZXNz aW9uLCBjb25zdCBjaGFyICp1cmkpCisreworKwlnc2l6ZSBmdWxsX3Jlc3BvbnNlX2xlbmd0aCA9 IGdfYnl0ZXNfZ2V0X3NpemUgKGZ1bGxfcmVzcG9uc2UpOworKwlHU3RyaW5nICpyYW5nZTsKKysJ aW50IGk7CisrCisrCS8qIEEgc3VmZml4IGxlbmd0aCBhdCBsZWFzdCBhcyBsb25nIGFzIHRoZSBi b2R5IHNlbGVjdHMgdGhlIHdob2xlIGJvZHkuICovCisrCWRlYnVnX3ByaW50ZiAoMSwgIlJlcXVl c3RpbmcgKHN1ZmZpeCByYW5nZSB0aGUgbGVuZ3RoIG9mIHRoZSBib2R5KSAtJWRcbiIsCisrCQkg ICAgICAoaW50KSBmdWxsX3Jlc3BvbnNlX2xlbmd0aCk7CisrCXJlcXVlc3Rfc2luZ2xlX3Jhbmdl IChzZXNzaW9uLCB1cmksCisrCQkJICAgICAgLSgoaW50KSBmdWxsX3Jlc3BvbnNlX2xlbmd0aCks IC0xLAorKwkJCSAgICAgIFNPVVBfU1RBVFVTX1BBUlRJQUxfQ09OVEVOVCwgMCwgLTEpOworKwor KwlkZWJ1Z19wcmludGYgKDEsICJSZXF1ZXN0aW5nIChzdWZmaXggcmFuZ2UgbG9uZ2VyIHRoYW4g dGhlIGJvZHkpIC05OTk5OTlcbiIpOworKwlyZXF1ZXN0X3NpbmdsZV9yYW5nZV9ieV9zdHJpbmdf ZnVsbCAoc2Vzc2lvbiwgdXJpLCAiYnl0ZXM9LTk5OTk5OSIsCisrCQkJCQkgICAgIFNPVVBfU1RB VFVTX1BBUlRJQUxfQ09OVEVOVCwgMCwgLTEpOworKworKwlkZWJ1Z19wcmludGYgKDEsICJSZXF1 ZXN0aW5nIChzdWZmaXggcmFuZ2Ugb3ZlcmZsb3dpbmcgZ2ludDY0KSAtOTk5OTk5OTk5OTk5OTk5 OTk5OTlcbiIpOworKwlyZXF1ZXN0X3NpbmdsZV9yYW5nZV9ieV9zdHJpbmdfZnVsbCAoc2Vzc2lv biwgdXJpLCAiYnl0ZXM9LTk5OTk5OTk5OTk5OTk5OTk5OTk5IiwKKysJCQkJCSAgICAgU09VUF9T VEFUVVNfUEFSVElBTF9DT05URU5ULCAwLCAtMSk7CisrCisrCS8qIEEgc3RhcnQgd2hpY2ggb3Zl cmZsb3dzIGdpbnQ2NCBpcyB0cmVhdGVkIGxpa2UgYW55IG90aGVyIHN0YXJ0IHBhc3QKKysJICog dGhlIGVuZCBvZiB0aGUgYm9keS4KKysJICogaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01F L2xpYnNvdXAvLS9pc3N1ZXMvNTM1CisrCSAqLworKwlkZWJ1Z19wcmludGYgKDEsICJSZXF1ZXN0 aW5nIChzdGFydCBvdmVyZmxvd2luZyBnaW50NjQpIDk4ODg4ODg4ODg4ODgwMTk5MDAtXG4iKTsK KysJcmVxdWVzdF9zaW5nbGVfcmFuZ2VfYnlfc3RyaW5nIChzZXNzaW9uLCB1cmksICJieXRlcz05 ODg4ODg4ODg4ODg4MDE5OTAwLSIsCisrCQkJCQlTT1VQX1NUQVRVU19PSyk7CisrCisrCS8qIE1v cmUgcmFuZ2VzIHRoYW4gdGhlIHNlcnZlciBpcyB3aWxsaW5nIHRvIGNvYWxlc2NlLCB3aGljaCBp cworKwkgKiByZWplY3RlZCByYXRoZXIgdGhhbiBhbnN3ZXJlZCB3aXRoIHRoZSB3aG9sZSBib2R5 LgorKwkgKiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81 MzgKKysJICovCisrCWRlYnVnX3ByaW50ZiAoMSwgIlJlcXVlc3RpbmcgKG1vcmUgcmFuZ2VzIHRo YW4gdGhlIGxpbWl0KVxuIik7CisrCXJhbmdlID0gZ19zdHJpbmdfbmV3ICgiYnl0ZXM9Iik7Cisr CWZvciAoaSA9IDA7IGkgPCBNQVhfUkFOR0VTICsgMTsgaSsrKQorKwkJZ19zdHJpbmdfYXBwZW5k IChyYW5nZSwgaSA+IDAgPyAiLDAtMCIgOiAiMC0wIik7CisrCXJlcXVlc3Rfc2luZ2xlX3Jhbmdl X2J5X3N0cmluZyAoc2Vzc2lvbiwgdXJpLCByYW5nZS0+c3RyLAorKwkJCQkJU09VUF9TVEFUVVNf UkVRVUVTVEVEX1JBTkdFX05PVF9TQVRJU0ZJQUJMRSk7CisrCWdfc3RyaW5nX2ZyZWUgKHJhbmdl LCBUUlVFKTsKKyt9CisrCisgc3RhdGljIHZvaWQKKyBkb19saWJzb3VwX3JhbmdlX3Rlc3QgKHZv aWQpCisgeworQEAgLTQ4OCw2ICs4MzIsNyBAQCBkb19saWJzb3VwX3JhbmdlX3Rlc3QgKHZvaWQp CisgCWJhc2VfdXJpID0gc291cF90ZXN0X3NlcnZlcl9nZXRfdXJpIChzZXJ2ZXIsICJodHRwIiwg TlVMTCk7CisgCWJhc2VfdXJpX3N0ciA9IGdfdXJpX3RvX3N0cmluZyAoYmFzZV91cmkpOworIAlk b19yYW5nZV90ZXN0IChzZXNzaW9uLCBiYXNlX3VyaV9zdHIsIFRSVUUsIFRSVUUpOworKwlkb19s aWJzb3VwX29ubHlfcmFuZ2VfdGVzdCAoc2Vzc2lvbiwgYmFzZV91cmlfc3RyKTsKKyAJZ191cmlf dW5yZWYgKGJhc2VfdXJpKTsKKyAJZ19mcmVlIChiYXNlX3VyaV9zdHIpOworIAlzb3VwX3Rlc3Rf c2VydmVyX3F1aXRfdW5yZWYgKHNlcnZlcik7CitAQCAtNTEyLDYgKzg1Nyw4IEBAIG1haW4gKGlu dCBhcmdjLCBjaGFyICoqYXJndikKKyAJZ190ZXN0X2FkZF9mdW5jICgiL3Jhbmdlcy9hcGFjaGUi LCBkb19hcGFjaGVfcmFuZ2VfdGVzdCk7CisgI2VuZGlmCisgCWdfdGVzdF9hZGRfZnVuYyAoIi9y YW5nZXMvbGlic291cCIsIGRvX2xpYnNvdXBfcmFuZ2VfdGVzdCk7CisrCWdfdGVzdF9hZGRfZnVu YyAoIi9yYW5nZXMvcGFyc2luZyIsIGRvX3JhbmdlX3BhcnNpbmdfdGVzdCk7CisrCWdfdGVzdF9h ZGRfZnVuYyAoIi9yYW5nZXMvY291bnQiLCBkb19yYW5nZV9jb3VudF90ZXN0KTsKKyAKKyAJcmV0 ID0gZ190ZXN0X3J1biAoKTsKKyAKK2RpZmYgLS1naXQgYS90ZXN0cy9zZXJ2ZXItbWVtLWxpbWl0 LXRlc3QuYyBiL3Rlc3RzL3NlcnZlci1tZW0tbGltaXQtdGVzdC5jCitpbmRleCA2NWRjODc1ZS4u ZWUyMGJhOWIgMTAwNjQ0CistLS0gYS90ZXN0cy9zZXJ2ZXItbWVtLWxpbWl0LXRlc3QuYworKysr IGIvdGVzdHMvc2VydmVyLW1lbS1saW1pdC10ZXN0LmMKK0BAIC00LDYgKzQsNyBAQAorICAqLwor IAorICNpbmNsdWRlICJ0ZXN0LXV0aWxzLmgiCisrI2luY2x1ZGUgInNvdXAtbWVzc2FnZS1oZWFk ZXJzLXByaXZhdGUuaCIKKyAKKyAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisgCitAQCAtODEs NDYgKzgyLDY2IEBAIHNlcnZlcl9maWxlX2NhbGxiYWNrIChTb3VwU2VydmVyICAgICAgICAqc2Vy dmVyLAorIH0KKyAKKyBzdGF0aWMgdm9pZAorLWRvX3Jhbmdlc19vdmVybGFwc190ZXN0IChTZXJ2 ZXJEYXRhICpzZCwgZ2NvbnN0cG9pbnRlciB0ZXN0X2RhdGEpCisrcmVxdWVzdF9yYW5nZXMgKFNl cnZlckRhdGEgKnNkLCBjb25zdCBjaGFyICpyYW5nZSwgU291cFN0YXR1cyBleHBlY3RlZF9zdGF0 dXMpCisgeworIAlTb3VwU2Vzc2lvbiAqc2Vzc2lvbjsKKyAJU291cE1lc3NhZ2UgKm1zZzsKKy0J R1N0cmluZyAqcmFuZ2U7CisgCUdVcmkgKnVyaTsKKy0JY29uc3QgY2hhciAqY2h1bmsgPSAiLDAs MCwwLDAsMCwwLDAsMCwwLDAsMCI7CistCistCWdfdGVzdF9idWcgKCI0MjgiKTsKKy0KKy0JI2lm ZGVmIEdfT1NfV0lOMzIKKy0JZ190ZXN0X3NraXAgKCJDYW5ub3QgcnVuIHVuZGVyIHdpbmRvd3Mi KTsKKy0JcmV0dXJuOworLQkjZW5kaWYKKy0KKy0JcmFuZ2UgPSBnX3N0cmluZ19zaXplZF9uZXcg KDk5ICogMTAyNCk7CistCWdfc3RyaW5nX2FwcGVuZCAocmFuZ2UsICJieXRlcz0xMDI0Iik7Cist CXdoaWxlIChyYW5nZS0+bGVuIDwgOTkgKiAxMDI0KQorLQkJZ19zdHJpbmdfYXBwZW5kIChyYW5n ZSwgY2h1bmspOworIAorIAlzZXNzaW9uID0gc291cF90ZXN0X3Nlc3Npb25fbmV3IChOVUxMKTsK Ky0Jc2VydmVyX2FkZF9oYW5kbGVyIChzZCwgIi9maWxlIiwgc2VydmVyX2ZpbGVfY2FsbGJhY2ss IE5VTEwsIE5VTEwpOworIAorIAl1cmkgPSBnX3VyaV9wYXJzZV9yZWxhdGl2ZSAoc2QtPmJhc2Vf dXJpLCAiL2ZpbGUiLCBTT1VQX0hUVFBfVVJJX0ZMQUdTLCBOVUxMKTsKKyAKKyAJbXNnID0gc291 cF9tZXNzYWdlX25ld19mcm9tX3VyaSAoIkdFVCIsIHVyaSk7CistCXNvdXBfbWVzc2FnZV9oZWFk ZXJzX2FwcGVuZCAoc291cF9tZXNzYWdlX2dldF9yZXF1ZXN0X2hlYWRlcnMgKG1zZyksICJSYW5n ZSIsIHJhbmdlLT5zdHIpOworKwlzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQgKHNvdXBfbWVz c2FnZV9nZXRfcmVxdWVzdF9oZWFkZXJzIChtc2cpLCAiUmFuZ2UiLCByYW5nZSk7CisgCisgCXNv dXBfdGVzdF9zZXNzaW9uX3NlbmRfbWVzc2FnZSAoc2Vzc2lvbiwgbXNnKTsKKyAKKy0Jc291cF90 ZXN0X2Fzc2VydF9tZXNzYWdlX3N0YXR1cyAobXNnLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRF TlQpOworKwlzb3VwX3Rlc3RfYXNzZXJ0X21lc3NhZ2Vfc3RhdHVzIChtc2csIGV4cGVjdGVkX3N0 YXR1cyk7CisgCisgCWdfb2JqZWN0X3VucmVmIChtc2cpOworLQorLQlnX3N0cmluZ19mcmVlIChy YW5nZSwgVFJVRSk7CisgCWdfdXJpX3VucmVmICh1cmkpOworIAorIAlzb3VwX3Rlc3Rfc2Vzc2lv bl9hYm9ydF91bnJlZiAoc2Vzc2lvbik7CisgfQorIAorK3N0YXRpYyB2b2lkCisrZG9fcmFuZ2Vz X292ZXJsYXBzX3Rlc3QgKFNlcnZlckRhdGEgKnNkLCBnY29uc3Rwb2ludGVyIHRlc3RfZGF0YSkK Kyt7CisrCUdTdHJpbmcgKnJhbmdlOworKwljb25zdCBjaGFyICpjaHVuayA9ICIsMCwwLDAsMCww LDAsMCwwLDAsMCwwIjsKKysJaW50IGk7CisrCisrCWdfdGVzdF9idWcgKCI0MjgiKTsKKysKKysJ I2lmZGVmIEdfT1NfV0lOMzIKKysJZ190ZXN0X3NraXAgKCJDYW5ub3QgcnVuIHVuZGVyIHdpbmRv d3MiKTsKKysJcmV0dXJuOworKwkjZW5kaWYKKysKKysJc2VydmVyX2FkZF9oYW5kbGVyIChzZCwg Ii9maWxlIiwgc2VydmVyX2ZpbGVfY2FsbGJhY2ssIE5VTEwsIE5VTEwpOworKworKwkvKiBSZXF1 ZXN0aW5nIHRoZSBzYW1lIHJhbmdlIG1hbnkgdGltZXMgb3ZlciB1c2VkIHRvIG1ha2UgdGhlIHNl cnZlcgorKwkgKiBhbGxvY2F0ZSBhIHJlc3BvbnNlIHByb3BvcnRpb25hbCB0byB0aGUgbnVtYmVy IG9mIHJhbmdlcyBpbnN0ZWFkIG9mCisrCSAqIGNvYWxlc2NpbmcgdGhlbSBpbnRvIG9uZS4gRWFj aCAiMCIgaGVyZSBpcyBhbiBvcGVuIGVuZGVkIHJhbmdlCisrCSAqIGNvdmVyaW5nIHRoZSB3aG9s ZSBib2R5LCBzbyB0aGV5IGFsbCBjb2xsYXBzZSBpbnRvIGEgc2luZ2xlIHJhbmdlLgorKwkgKi8K KysJcmFuZ2UgPSBnX3N0cmluZ19uZXcgKCJieXRlcz0xMDI0Iik7CisrCWZvciAoaSA9IDE7IGkg PCBNQVhfUkFOR0VTOyBpKyspCisrCQlnX3N0cmluZ19hcHBlbmQgKHJhbmdlLCAiLDAiKTsKKysJ cmVxdWVzdF9yYW5nZXMgKHNkLCByYW5nZS0+c3RyLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRF TlQpOworKwlnX3N0cmluZ19mcmVlIChyYW5nZSwgVFJVRSk7CisrCisrCS8qIEEgaGVhZGVyIGxp c3RpbmcgbW9yZSByYW5nZXMgdGhhbiB0aGUgc2VydmVyIGlzIHdpbGxpbmcgdG8gY29hbGVzY2UK KysJICogaXMgcmVqZWN0ZWQgb3V0cmlnaHQuICovCisrCXJhbmdlID0gZ19zdHJpbmdfc2l6ZWRf bmV3ICgoZ3NpemUpOTkgKiAxMDI0KTsKKysJZ19zdHJpbmdfYXBwZW5kIChyYW5nZSwgImJ5dGVz PTEwMjQiKTsKKysJd2hpbGUgKHJhbmdlLT5sZW4gPCAoZ3NzaXplKTk5ICogMTAyNCkKKysJCWdf c3RyaW5nX2FwcGVuZCAocmFuZ2UsIGNodW5rKTsKKysJcmVxdWVzdF9yYW5nZXMgKHNkLCByYW5n ZS0+c3RyLCBTT1VQX1NUQVRVU19SRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklBQkxFKTsKKysJ Z19zdHJpbmdfZnJlZSAocmFuZ2UsIFRSVUUpOworK30KKysKKyBpbnQKKyBtYWluIChpbnQgYXJn YywgY2hhciAqKmFyZ3YpCisgeworLS0gCitHaXRMYWIKKwoKZGlmZiAtLWdpdCBhL2xpYnNvdXAz LnNwZWMgYi9saWJzb3VwMy5zcGVjCmluZGV4IDU4NzJhNzguLjgxZDhkZjQgMTAwNjQ0Ci0tLSBh L2xpYnNvdXAzLnNwZWMKKysrIGIvbGlic291cDMuc3BlYwpAQCAtMzMsNiArMzMsMTMgQEAgUGF0 Y2g6ICAgMDAwNC1DVkUtMjAyNi00MjcxLXNlcnZlci1wcm90ZWN0LW1lc3NhZ2UtaW8td2hpbGUt cmVhZGluZy1hbmQtd3JpdGluZy4KICMgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3df YnVnLmNnaT9pZD0yNDk5OTIxCiBQYXRjaDogICAwMDA1LUNWRS0yMDI2LTEyNDc4LXdlYnNvY2tl dC1GaXgtb3V0LW9mLWJvdW5kcy1yZWFkLXdoZW4tcmVhZGluZy11bm1hc2tlZC1mcmFtZS5wYXRj aAogCitQYXRjaDogICBDVkUtMjAyNi03NzY4MC5wYXRjaAorUGF0Y2g6ICAgQ1ZFLTIwMjYtMTU3 MTEucGF0Y2gKK1BhdGNoOiAgIENWRS0yMDI2LTE1NzE0LnBhdGNoCitQYXRjaDogICBDVkUtMjAy Ni0xNTcwOS5wYXRjaAorUGF0Y2g6ICAgQ1ZFLTIwMjYtMTU3MTMucGF0Y2gKK1BhdGNoOiAgIENW RS0yMDI2LTE1NzEyLnBhdGNoCisKIEJ1aWxkUmVxdWlyZXM6IGdjYwogQnVpbGRSZXF1aXJlczog Z2V0dGV4dAogQnVpbGRSZXF1aXJlczogZ2xpYi1uZXR3b3JraW5nID49ICV7Z2xpYjJfdmVyc2lv bn0K