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: Mattias Ellert To: git-commits@fedoraproject.org Subject: [rpms/globus-io] rawhide: Fix compiler warnings Date: Sun, 14 Jun 2026 08:54:09 GMT Message-ID: <178142724962.1.8591267008299697646.rpms-globus-io-91702c86c60a@fedoraproject.org> List-ID: X-Git-Repo: rpms/globus-io X-Git-Branch: rawhide X-Git-Rev: 91702c86c60a2c30e4e704e2fe6cf6ba19ac9a01 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2xvYnVzLWlvCkJy YW5jaCA6IHJhd2hpZGUKQ29tbWl0IDogOTE3MDJjODZjNjBhMmMzMGU0ZTcwNGUyZmU2Y2Y2YmEx OWFjOWEwMQpBdXRob3IgOiBNYXR0aWFzIEVsbGVydCA8bWF0dGlhcy5lbGxlcnRAcGh5c2ljcy51 dS5zZT4KRGF0ZSAgIDogMjAyNi0wNi0xNFQxMDozOToxMyswMjowMApTdGF0cyAgOiArNDAyMS8t MSBpbiAzIGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBt cy9nbG9idXMtaW8vYy85MTcwMmM4NmM2MGEyYzMwZTRlNzA0ZTJmZTZjZjZiYTE5YWM5YTAxP2Jy YW5jaD1yYXdoaWRlCgpMb2c6CkZpeCBjb21waWxlciB3YXJuaW5ncwoKLS0tCmRpZmYgLS1naXQg YS8wMDAxLVVudGFiaWZ5LWFuZC1yZW1vdmUtdHJhaWxpbmctd2hpdGUtc3BhY2UucGF0Y2ggYi8w MDAxLVVudGFiaWZ5LWFuZC1yZW1vdmUtdHJhaWxpbmctd2hpdGUtc3BhY2UucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVmN2VmMAotLS0gL2Rldi9udWxsCisrKyBi LzAwMDEtVW50YWJpZnktYW5kLXJlbW92ZS10cmFpbGluZy13aGl0ZS1zcGFjZS5wYXRjaApAQCAt MCwwICsxLDM5NzIgQEAKK0Zyb20gM2NjZGFhMDIzNjIzMGJiY2JjYmYzMzllN2RmZGZhZjIzYzEw YmQ2ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHRpYXMgRWxsZXJ0IDxtYXR0 aWFzLmVsbGVydEBwaHlzaWNzLnV1LnNlPgorRGF0ZTogV2VkLCAyMCBNYXkgMjAyNiAwMDoxNToz NyArMDIwMAorU3ViamVjdDogW1BBVENIIDEvMl0gVW50YWJpZnkgYW5kIHJlbW92ZSB0cmFpbGlu ZyB3aGl0ZS1zcGFjZQorCistLS0KKyBpby9jb21wYXQvZ2xvYnVzX2lvX3hpb19jb21wYXQuYyB8 IDEzMDQgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDY1 MiBpbnNlcnRpb25zKCspLCA2NTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9pby9jb21w YXQvZ2xvYnVzX2lvX3hpb19jb21wYXQuYyBiL2lvL2NvbXBhdC9nbG9idXNfaW9feGlvX2NvbXBh dC5jCitpbmRleCA4NGNmNjI2NGQuLmJhYzQzM2EwMCAxMDA2NDQKKy0tLSBhL2lvL2NvbXBhdC9n bG9idXNfaW9feGlvX2NvbXBhdC5jCisrKysgYi9pby9jb21wYXQvZ2xvYnVzX2lvX3hpb19jb21w YXQuYworQEAgLTEzOCw4ICsxMzgsOCBAQCB0eXBlZGVmIHN0cnVjdCBnbG9idXNfbF9pb19zZWN1 cmVfYXV0aG9yaXphdGlvbl9kYXRhX3MKKyB7CisgICAgIGdzc19uYW1lX3QgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWRlbnRpdHk7CisgICAgIGdsb2J1c19pb19zZWN1cmVfYXV0 aG9yaXphdGlvbl9jYWxsYmFja190ICAgY2FsbGJhY2s7CistICAgIHZvaWQgKgkJCQkgICAgICAg IGNhbGxiYWNrX2FyZzsKKy19IGdsb2J1c19sX2lvX3NlY3VyZV9hdXRob3JpemF0aW9uX2RhdGFf dDsgCisrICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fs bGJhY2tfYXJnOworK30gZ2xvYnVzX2xfaW9fc2VjdXJlX2F1dGhvcml6YXRpb25fZGF0YV90Owor IAorIHR5cGVkZWYgc3RydWN0IGdsb2J1c19sX2lvX2F0dHJfcworIHsKK0BAIC0xNjIsMTIgKzE2 MiwxMiBAQCB0eXBlZGVmIHN0cnVjdCBnbG9idXNfbF9pb19oYW5kbGVfcworICAgICBnbG9idXNf aW9faGFuZGxlX3QgKiAgICAgICAgICAgICAgICAgICAgICAgIGlvX2hhbmRsZTsKKyAgICAgZ2xv YnVzX3hpb19oYW5kbGVfdCAgICAgICAgICAgICAgICAgICAgICAgICB4aW9faGFuZGxlOworICAg ICBnbG9idXNfY2FsbGJhY2tfc3BhY2VfdCAgICAgICAgICAgICAgICAgICAgIHNwYWNlOworLSAg ICAKKysKKyAgICAgZ2xvYnVzX2xpc3RfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw ZW5kaW5nX29wczsKKyAgICAgZ2xvYnVzX211dGV4X3QgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwZW5kaW5nX2xvY2s7CisgICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdXNlcl9wb2ludGVyOworICAgICBnbG9idXNfaW9fYXR0cl90ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGF0dHI7CistICAgIAorKworICAgICAvKiB1c2VkIG9ubHkgZm9y IGxpc3RlbmVyICovCisgICAgIGdsb2J1c194aW9fc2VydmVyX3QgICAgICAgICAgICAgICAgICAg ICAgICAgeGlvX3NlcnZlcjsKKyAgICAgZ2xvYnVzX3hpb19oYW5kbGVfdCAgICAgICAgICAgICAg ICAgICAgICAgICBhY2NlcHRlZF9oYW5kbGU7CitAQCAtMjQ3LDcgKzI0Nyw3IEBAIGludAorIGds b2J1c19sX2lvX2FjdGl2YXRlKHZvaWQpCisgeworICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAg ICAgICAgICAgICAgICByZXN1bHQ7CistICAgIAorKworICAgICBpZihnbG9idXNfbW9kdWxlX2Fj dGl2YXRlKEdMT0JVU19YSU9fTU9EVUxFKSAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworICAg ICAgICAgZ290byBlcnJvcl9hY3RpdmF0ZTsKK0BAIC0yNTgsNyArMjU4LDcgQEAgZ2xvYnVzX2xf aW9fYWN0aXZhdGUodm9pZCkKKyAgICAgeworICAgICAgICAgZ290byBlcnJvcl9sb2FkX2ZpbGU7 CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKGdsb2J1c194aW9fZHJpdmVyX2xvYWQoCisgICAg ICAgICAidGNwIiwgJmdsb2J1c19sX2lvX3RjcF9kcml2ZXIpICE9IEdMT0JVU19TVUNDRVNTKQor ICAgICB7CitAQCAtMjcwLDc4ICsyNzAsNzggQEAgZ2xvYnVzX2xfaW9fYWN0aXZhdGUodm9pZCkK KyAgICAgeworICAgICAgICAgZ290byBlcnJvcl9sb2FkX2dzaTsKKyAgICAgfQorLSAgICAKKysK KyAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19zdGFja19pbml0KCZnbG9idXNfbF9pb19maWxlX3N0 YWNrLCBHTE9CVVNfTlVMTCk7CisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAg ICAgeworICAgICAgICAgZ290byBlcnJvcl9maWxlX3N0YWNrOworICAgICB9CistICAgIAorKwor ICAgICByZXN1bHQgPSBnbG9idXNfeGlvX3N0YWNrX3B1c2hfZHJpdmVyKAorICAgICAgICAgZ2xv YnVzX2xfaW9fZmlsZV9zdGFjaywgZ2xvYnVzX2xfaW9fZmlsZV9kcml2ZXIpOworICAgICBpZihy ZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGdvdG8gZXJyb3JfZmls ZV9wdXNoOworICAgICB9CistICAgIAorKworICAgICByZXN1bHQgPSBnbG9idXNfeGlvX3N0YWNr X2luaXQoJmdsb2J1c19sX2lvX3RjcF9zdGFjaywgR0xPQlVTX05VTEwpOworICAgICBpZihyZXN1 bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGdvdG8gZXJyb3JfdGNwX3N0 YWNrOworICAgICB9CistICAgIAorKworICAgICByZXN1bHQgPSBnbG9idXNfeGlvX3N0YWNrX3B1 c2hfZHJpdmVyKAorICAgICAgICAgZ2xvYnVzX2xfaW9fdGNwX3N0YWNrLCBnbG9idXNfbF9pb190 Y3BfZHJpdmVyKTsKKyAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICB7Cisg ICAgICAgICBnb3RvIGVycm9yX3RjcF9wdXNoOworICAgICB9CistICAgIAorKworICAgICByZXN1 bHQgPSBnbG9idXNfeGlvX3N0YWNrX2luaXQoJmdsb2J1c19sX2lvX2dzaV9zdGFjaywgR0xPQlVT X05VTEwpOworICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAg ICAgIGdvdG8gZXJyb3JfZ3NpX3N0YWNrOworICAgICB9CistICAgIAorKworICAgICByZXN1bHQg PSBnbG9idXNfeGlvX3N0YWNrX3B1c2hfZHJpdmVyKAorICAgICAgICAgZ2xvYnVzX2xfaW9fZ3Np X3N0YWNrLCBnbG9idXNfbF9pb190Y3BfZHJpdmVyKTsKKyAgICAgaWYocmVzdWx0ICE9IEdMT0JV U19TVUNDRVNTKQorICAgICB7CisgICAgICAgICBnb3RvIGVycm9yX2dzaV9wdXNoOworICAgICB9 CistICAgIAorKworICAgICByZXN1bHQgPSBnbG9idXNfeGlvX3N0YWNrX3B1c2hfZHJpdmVyKAor ICAgICAgICAgZ2xvYnVzX2xfaW9fZ3NpX3N0YWNrLCBnbG9idXNfbF9pb19nc2lfZHJpdmVyKTsK KyAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICB7CisgICAgICAgICBnb3Rv IGVycm9yX2dzaV9wdXNoOworICAgICB9CistICAgIAorKworICAgICByZXR1cm4gR0xPQlVTX1NV Q0NFU1M7CisgCisgZXJyb3JfZ3NpX3B1c2g6CisgICAgIGdsb2J1c194aW9fc3RhY2tfZGVzdHJv eShnbG9idXNfbF9pb19nc2lfc3RhY2spOworLSAgICAKKysKKyBlcnJvcl9nc2lfc3RhY2s6Cisg ZXJyb3JfdGNwX3B1c2g6CisgICAgIGdsb2J1c194aW9fc3RhY2tfZGVzdHJveShnbG9idXNfbF9p b190Y3Bfc3RhY2spOworLSAgICAKKysKKyBlcnJvcl90Y3Bfc3RhY2s6CisgZXJyb3JfZmlsZV9w dXNoOgorICAgICBnbG9idXNfeGlvX3N0YWNrX2Rlc3Ryb3koZ2xvYnVzX2xfaW9fZmlsZV9zdGFj ayk7CistICAgIAorKworIGVycm9yX2ZpbGVfc3RhY2s6CisgICAgIGdsb2J1c194aW9fZHJpdmVy X3VubG9hZChnbG9idXNfbF9pb19nc2lfZHJpdmVyKTsKKy0gICAgCisrCisgZXJyb3JfbG9hZF9n c2k6CisgICAgIGdsb2J1c194aW9fZHJpdmVyX3VubG9hZChnbG9idXNfbF9pb190Y3BfZHJpdmVy KTsKKyAKKyAgZXJyb3JfbG9hZF90Y3A6CisgICAgIGdsb2J1c194aW9fZHJpdmVyX3VubG9hZChn bG9idXNfbF9pb19maWxlX2RyaXZlcik7CistIAorKworIGVycm9yX2xvYWRfZmlsZToKKyAgICAg Z2xvYnVzX21vZHVsZV9kZWFjdGl2YXRlKEdMT0JVU19YSU9fTU9EVUxFKTsKKy0gICAgCisrCisg ZXJyb3JfYWN0aXZhdGU6CisgICAgIHJldHVybiBHTE9CVVNfRkFJTFVSRTsKKyB9CitAQCAtMzUz LDExICszNTMsMTEgQEAgZ2xvYnVzX2xfaW9fZGVhY3RpdmF0ZSh2b2lkKQorICAgICBnbG9idXNf eGlvX3N0YWNrX2Rlc3Ryb3koZ2xvYnVzX2xfaW9fZ3NpX3N0YWNrKTsKKyAgICAgZ2xvYnVzX3hp b19zdGFja19kZXN0cm95KGdsb2J1c19sX2lvX3RjcF9zdGFjayk7CisgICAgIGdsb2J1c194aW9f c3RhY2tfZGVzdHJveShnbG9idXNfbF9pb19maWxlX3N0YWNrKTsKKy0gICAgCisrCisgICAgIGds b2J1c194aW9fZHJpdmVyX3VubG9hZChnbG9idXNfbF9pb19nc2lfZHJpdmVyKTsKKyAgICAgZ2xv YnVzX3hpb19kcml2ZXJfdW5sb2FkKGdsb2J1c19sX2lvX3RjcF9kcml2ZXIpOworICAgICBnbG9i dXNfeGlvX2RyaXZlcl91bmxvYWQoZ2xvYnVzX2xfaW9fZmlsZV9kcml2ZXIpOworLSAgICAKKysK KyAgICAgcmV0dXJuIGdsb2J1c19tb2R1bGVfZGVhY3RpdmF0ZShHTE9CVVNfWElPX01PRFVMRSk7 CisgfQorIAorQEAgLTM3MiwxMyArMzcyLDEzIEBAIGdsb2J1c19sX2lvX2hhbmRsZV9pbml0KAor ICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAgIGds b2J1c19sX2lvX2hhbmRsZV90ICogICAgICAgICAgICAgIGloYW5kbGU7CisgICAgIEdsb2J1c0lP TmFtZShnbG9idXNfbF9pb19oYW5kbGVfaW5pdCk7CistICAgIAorKworICAgICByZXN1bHQgPSBH bG9idXNMSU9NYWxsb2MoaWhhbmRsZSwgZ2xvYnVzX2xfaW9faGFuZGxlX3QpOworICAgICBpZihy ZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGdvdG8gZXJyb3JfYWxs b2M7CisgICAgIH0KKy0gICAgCisrCisgICAgIGloYW5kbGUtPnR5cGUgICAgICAgICAgICAgICA9 IHR5cGU7CisgICAgIGloYW5kbGUtPnJlZnMgICAgICAgICAgICAgICA9IDE7CisgICAgIGloYW5k bGUtPmlvX2hhbmRsZSAgICAgICAgICA9IGlvX2hhbmRsZTsKK0BAIC0zOTEsMTEgKzM5MSwxMSBA QCBnbG9idXNfbF9pb19oYW5kbGVfaW5pdCgKKyAgICAgaWhhbmRsZS0+dXNlcl9wb2ludGVyICAg ICAgID0gR0xPQlVTX05VTEw7CisgICAgIGdsb2J1c19tdXRleF9pbml0KCZpaGFuZGxlLT5wZW5k aW5nX2xvY2ssIEdMT0JVU19OVUxMKTsKKyAgICAgZ2xvYnVzX2NhbGxiYWNrX3NwYWNlX3JlZmVy ZW5jZShpaGFuZGxlLT5zcGFjZSk7CistICAgIAorKworICAgICAqX2loYW5kbGUgPSBpaGFuZGxl OworLSAgICAKKysKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworLSAgICAKKysKKyBlcnJv cl9hbGxvYzoKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CitAQCAtNDA3LDcgKzQwNyw3IEBAIGds b2J1c19sX2lvX2hhbmRsZV9kZXN0cm95KAorIHsKKyAgICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAg ICAgICAgICAgICAgICAgZGVzdHJveTsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19sX2lvX2hh bmRsZV9kZXN0cm95KTsKKy0gICAgCisrCisgICAgIGdsb2J1c19tdXRleF9sb2NrKCZpaGFuZGxl LT5wZW5kaW5nX2xvY2spOworICAgICB7CisgICAgICAgICBpZigtLWloYW5kbGUtPnJlZnMgPT0g MCkKK0BAIC00MjAsNyArNDIwLDcgQEAgZ2xvYnVzX2xfaW9faGFuZGxlX2Rlc3Ryb3koCisgICAg ICAgICB9CisgICAgIH0KKyAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmaWhhbmRsZS0+cGVuZGlu Z19sb2NrKTsKKy0gICAgCisrCisgICAgIGlmKGRlc3Ryb3kpCisgICAgIHsKKyAgICAgICAgIGlm KGloYW5kbGUtPmF0dHIpCitAQCAtNDUyLDcgKzQ1Miw3IEBAIGdsb2J1c19sX2lvX2F0dHJfY2hl Y2soCisgICAgIGNvbnN0IGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNfbmFtZSkK KyB7CisgICAgIGdsb2J1c19sX2lvX2F0dHJfdCAqICAgICAgICAgICAgICAgIGlhdHRyOworLSAg ICAKKysKKyAgICAgaWYoIWF0dHIpCisgICAgIHsKKyAgICAgICAgIHJldHVybiBnbG9idXNfZXJy b3JfcHV0KAorQEAgLTQ2Myw5ICs0NjMsOSBAQCBnbG9idXNfbF9pb19hdHRyX2NoZWNrKAorICAg ICAgICAgICAgICAgICAxLAorICAgICAgICAgICAgICAgICAoY2hhciAqKSBmdW5jX25hbWUpKTsK KyAgICAgfQorLSAgICAKKysKKyAgICAgaWF0dHIgPSAoZ2xvYnVzX2xfaW9fYXR0cl90ICopICph dHRyOworLSAgICAKKysKKyAgICAgaWYoIWlhdHRyIHx8ICEoaWF0dHItPnR5cGUgJiB0eXBlcykp CisgICAgIHsKKyAgICAgICAgIHJldHVybiBnbG9idXNfZXJyb3JfcHV0KAorQEAgLTQ3Niw3ICs0 NzYsNyBAQCBnbG9idXNfbF9pb19hdHRyX2NoZWNrKAorICAgICAgICAgICAgICAgICAxLAorICAg ICAgICAgICAgICAgICAoY2hhciAqKSBmdW5jX25hbWUpKTsKKyAgICAgfQorLSAgICAKKysKKyAg ICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworIH0KKyAKK0BAIC00OTEsMTcgKzQ5MSwxNyBAQCBn bG9idXNfbF9pb19pYXR0cl9jb3B5KAorICAgICBnbG9idXNfaW9fc2VjdXJlX2F1dGhvcml6YXRp b25fZGF0YV90IGRhdGE7CisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAg IHJlc3VsdDsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19sX2lvX2lhdHRyX2NvcHkpOworLSAg ICAKKysKKyAgICAgc291cmNlX2lhdHRyID0gKGdsb2J1c19sX2lvX2F0dHJfdCAqKSAqc291cmNl OworLSAgICAKKysKKyAgICAgcmVzdWx0ID0gR2xvYnVzTElPTWFsbG9jKGRlc3RfaWF0dHIsIGds b2J1c19sX2lvX2F0dHJfdCk7CisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAg ICAgeworICAgICAgICAgZ290byBlcnJvcl9hbGxvYzsKKyAgICAgfQorLSAgICAKKysKKyAgICAg bWVtc2V0KGRlc3RfaWF0dHIsIDAsIHNpemVvZihnbG9idXNfbF9pb19hdHRyX3QpKTsKKy0gICAg CisrCisgICAgIGRlc3RfaWF0dHItPnR5cGUgPSBzb3VyY2VfaWF0dHItPnR5cGU7CisgICAgIGlm KGRlc3RfaWF0dHItPnR5cGUgPT0gR0xPQlVTX0lfSU9fVENQX0FUVFIpCisgICAgIHsKK0BAIC01 MTcsNyArNTE3LDcgQEAgZ2xvYnVzX2xfaW9faWF0dHJfY29weSgKKyAgICAgICAgIHsKKyAgICAg ICAgICAgICBnb3RvIGVycm9yX2F1dGhfY29weTsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKwor ICAgICAgICAgZGVzdF9pYXR0ci0+YXV0aHpfZGF0YS5pZGVudGl0eSA9IGRhdGEtPmlkZW50aXR5 OworICAgICAgICAgZGVzdF9pYXR0ci0+YXV0aHpfZGF0YS5jYWxsYmFjayA9IGRhdGEtPmNhbGxi YWNrOworICAgICAgICAgZGVzdF9pYXR0ci0+YXV0aHpfZGF0YS5jYWxsYmFja19hcmcgPSBkYXRh LT5jYWxsYmFja19hcmc7CitAQCAtNTI4LDcgKzUyOCw3IEBAIGdsb2J1c19sX2lvX2lhdHRyX2Nv cHkoCisgICAgICAgICBnbG9idXNfYXNzZXJ0KGRlc3RfaWF0dHItPnR5cGUgPT0gR0xPQlVTX0lf SU9fRklMRV9BVFRSKTsKKyAgICAgICAgIGRlc3RfaWF0dHItPmZpbGVfZmxhZ3MgPSBzb3VyY2Vf aWF0dHItPmZpbGVfZmxhZ3M7CisgICAgIH0KKy0gICAgCisrCisgICAgIHJlc3VsdCA9IGdsb2J1 c194aW9fYXR0cl9jb3B5KCZkZXN0X2lhdHRyLT5hdHRyLCBzb3VyY2VfaWF0dHItPmF0dHIpOwor ICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKK0BAIC01NDUsNyArNTQ1 LDcgQEAgZ2xvYnVzX2xfaW9faWF0dHJfY29weSgKKyAgICAgfQorICAgICBkZXN0X2lhdHRyLT5z cGFjZSA9IHNvdXJjZV9pYXR0ci0+c3BhY2U7CisgICAgIGdsb2J1c19jYWxsYmFja19zcGFjZV9y ZWZlcmVuY2UoZGVzdF9pYXR0ci0+c3BhY2UpOworLSAgICAKKysKKyAgICAgKmRlc3QgPSBkZXN0 X2lhdHRyOworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgCitAQCAtNTU4LDEwICs1NTgs MTAgQEAgZXJyb3JfeGlvX2NvcHk6CisgCisgICAgICAgICBnc3NfcmVsZWFzZV9uYW1lKCZtaW5v cl9zdGF0dXMsICZkZXN0X2lhdHRyLT5hdXRoel9kYXRhLmlkZW50aXR5KTsKKyAgICAgfQorLSAg ICAKKysKKyBlcnJvcl9hdXRoX2NvcHk6CisgICAgIGdsb2J1c19mcmVlKGRlc3RfaWF0dHIpOwor LSAgICAKKysKKyBlcnJvcl9hbGxvYzoKKyAgICAgKmRlc3QgPSBHTE9CVVNfTlVMTDsKKyAgICAg cmV0dXJuIHJlc3VsdDsKK0BAIC01ODQsOSArNTg0LDkgQEAgZ2xvYnVzX2xfaW9fY2FuY2VsX3By ZWNhbGxiYWNrKAorIHsKKyAgICAgZ2xvYnVzX2xfaW9faGFuZGxlX3QgKiAgICAgICAgICAgICAg aWhhbmRsZTsKKyAgICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9y bV9jYWxsYmFjazsKKy0gICAgCisrCisgICAgIGloYW5kbGUgPSBib3VuY2VfaW5mby0+aGFuZGxl OworLSAgICAKKysKKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJmloYW5kbGUtPnBlbmRpbmdfbG9j ayk7CisgICAgIHsKKyAgICAgICAgIHBlcmZvcm1fY2FsbGJhY2sgPSBHTE9CVVNfVFJVRTsKK0BA IC02MDUsNyArNjA1LDcgQEAgZ2xvYnVzX2xfaW9fY2FuY2VsX3ByZWNhbGxiYWNrKAorICAgICAg ICAgfQorICAgICB9CisgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmloYW5kbGUtPnBlbmRpbmdf bG9jayk7CistICAgIAorKworICAgICByZXR1cm4gcGVyZm9ybV9jYWxsYmFjazsKKyB9CisgCitA QCAtNjE1LDkgKzYxNSw5IEBAIGdsb2J1c19sX2lvX2NhbmNlbF9raWNrb3V0KAorICAgICB2b2lk ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2FyZykKKyB7CisgICAgIGdsb2J1 c19sX2lvX2NhbmNlbF9pbmZvX3QgKiAgICAgICAgIGNhbmNlbF9pbmZvOworLSAgICAKKysKKyAg ICAgY2FuY2VsX2luZm8gPSAoZ2xvYnVzX2xfaW9fY2FuY2VsX2luZm9fdCAqKSB1c2VyX2FyZzsK Ky0gICAgCisrCisgICAgIGlmKGNhbmNlbF9pbmZvLT5jYWxsYmFjaykKKyAgICAgeworICAgICAg ICAgY2FuY2VsX2luZm8tPmNhbGxiYWNrKAorQEAgLTYyNSw3ICs2MjUsNyBAQCBnbG9idXNfbF9p b19jYW5jZWxfa2lja291dCgKKyAgICAgICAgICAgICBjYW5jZWxfaW5mby0+aGFuZGxlLAorICAg ICAgICAgICAgIEdMT0JVU19TVUNDRVNTKTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgZ2xvYnVz X2ZyZWUoY2FuY2VsX2luZm8pOworIH0KKyAKK0BAIC02MzgsMTAgKzYzOCwxMCBAQCBnbG9idXNf bF9pb19jYW5jZWxfY29tcGxldGUoCisgICAgIGdsb2J1c19sX2lvX2NhbmNlbF9pbmZvX3QgKiAg ICAgICAgIGNhbmNlbF9pbmZvOworICAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAg ICAgICBjYWxsX2NhbmNlbDsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19sX2lvX2NhbmNlbF9j b21wbGV0ZSk7CistICAgIAorKworICAgICBpaGFuZGxlID0gYm91bmNlX2luZm8tPmhhbmRsZTsK KyAgICAgY2FuY2VsX2luZm8gPSBib3VuY2VfaW5mby0+Y2FuY2VsX2luZm87CistICAgIAorKwor ICAgICBnbG9idXNfbXV0ZXhfbG9jaygmaWhhbmRsZS0+cGVuZGluZ19sb2NrKTsKKyAgICAgewor ICAgICAgICAgaWYoY2FuY2VsX2luZm8gJiYgLS1jYW5jZWxfaW5mby0+cmVmcyA9PSAwKQorQEAg LTY1NCwxOCArNjU0LDE4IEBAIGdsb2J1c19sX2lvX2NhbmNlbF9jb21wbGV0ZSgKKyAgICAgICAg IH0KKyAgICAgfQorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZpaGFuZGxlLT5wZW5kaW5nX2xv Y2spOworLSAgICAKKysKKyAgICAgaWYoY2FsbF9jYW5jZWwpCisgICAgIHsKKyAgICAgICAgIGds b2J1c19jYWxsYmFja19zcGFjZV90ICAgICAgICAgc3BhY2U7CistICAgICAgICAKKysKKyAgICAg ICAgIGlmKGloYW5kbGUtPnNwYWNlICE9IEdMT0JVU19DQUxMQkFDS19HTE9CQUxfU1BBQ0UgJiYK KyAgICAgICAgICAgICBnbG9idXNfY2FsbGJhY2tfc3BhY2VfZ2V0KCZzcGFjZSkgPT0gR0xPQlVT X1NVQ0NFU1MgJiYgKAorICAgICAgICAgICAgIChjYW5jZWxfaW5mby0+YmxvY2tpbmcgJiYgc3Bh Y2UgIT0gR0xPQlVTX0NBTExCQUNLX0dMT0JBTF9TUEFDRSkgfHwKKyAgICAgICAgICAgICAoIWNh bmNlbF9pbmZvLT5ibG9ja2luZyAmJiBzcGFjZSAhPSBpaGFuZGxlLT5zcGFjZSkpKQorICAgICAg ICAgeworICAgICAgICAgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICByZXN1bHQ7Cist ICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2NhbGxiYWNrX3Nw YWNlX3JlZ2lzdGVyX29uZXNob3QoCisgICAgICAgICAgICAgICAgIEdMT0JVU19OVUxMLAorICAg ICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKK0BAIC02OTIsMTEgKzY5MiwxMSBAQCBnbG9idXNf bF9pb19jYW5jZWxfY29tcGxldGUoCisgICAgICAgICAgICAgICAgICAgICBjYW5jZWxfaW5mby0+ aGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX1NVQ0NFU1MpOworICAgICAgICAg ICAgIH0KKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBnbG9idXNfZnJlZShjYW5jZWxf aW5mbyk7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCisrCisgICAgIC8qIHJlbW92ZXMgcmVm ZXJlbmNlIGFkZGVkIGluIGNhbmNlbF9pbnNlcnQgYW5kIGRlc3Ryb3lzIGlmIG5lY2Vzc2FyeSAq LworICAgICBnbG9idXNfbF9pb19oYW5kbGVfZGVzdHJveShpaGFuZGxlKTsKKyB9CitAQCAtNzA3 LDcgKzcwNyw3IEBAIGdsb2J1c19sX2lvX3Nob3VsZF9ib3VuY2UoCisgICAgIGdsb2J1c19sX2lv X2JvdW5jZV90ICogICAgICAgICAgICAgIGJvdW5jZV9pbmZvKQorIHsKKyAgICAgZ2xvYnVzX2Nh bGxiYWNrX3NwYWNlX3QgICAgICAgICAgICAgc3BhY2U7CistICAgICAgICAKKysKKyAgICAgaWYo Ym91bmNlX2luZm8tPmhhbmRsZS0+c3BhY2UgIT0gR0xPQlVTX0NBTExCQUNLX0dMT0JBTF9TUEFD RSAmJgorICAgICAgICAgZ2xvYnVzX2NhbGxiYWNrX3NwYWNlX2dldCgmc3BhY2UpID09IEdMT0JV U19TVUNDRVNTICYmCisgICAgICAgICAoKGJvdW5jZV9pbmZvLT5ibG9ja2luZyAmJiBzcGFjZSAh PSBHTE9CVVNfQ0FMTEJBQ0tfR0xPQkFMX1NQQUNFKSB8fAorQEAgLTcxNSwxOCArNzE1LDE4IEBA IGdsb2J1c19sX2lvX3Nob3VsZF9ib3VuY2UoCisgICAgIHsKKyAgICAgICAgIHJldHVybiBHTE9C VVNfVFJVRTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgcmV0dXJuIEdMT0JVU19GQUxTRTsKKyB9 CisgCisgc3RhdGljCisgdm9pZAorIGdsb2J1c19sX2lvX2JvdW5jZV9pb19jYigKKy0gICAgZ2xv YnVzX3hpb19oYW5kbGVfdCAgICAgICAgICAgICAgICAgeGlvX2hhbmRsZSwgCisrICAgIGdsb2J1 c194aW9faGFuZGxlX3QgICAgICAgICAgICAgICAgIHhpb19oYW5kbGUsCisgICAgIGdsb2J1c19y ZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwKKyAgICAgZ2xvYnVzX2J5dGVfdCAq ICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLAorICAgICBnbG9idXNfc2l6ZV90ICAgICAgICAg ICAgICAgICAgICAgICBsZW4sCistICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAg ICAgIG5ieXRlcywgCisrICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgIG5i eXRlcywKKyAgICAgZ2xvYnVzX3hpb19kYXRhX2Rlc2NyaXB0b3JfdCAgICAgICAgZGF0YV9kZXNj LAorICAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2FyZyk7Cisg CitAQCAtNzM3LDExICs3MzcsMTEgQEAgZ2xvYnVzX2xfaW9fYm91bmNlX2lvX2tpY2tvdXQoCisg eworICAgICBnbG9idXNfbF9pb19ib3VuY2VfdCAqICAgICAgICAgICAgICBib3VuY2VfaW5mbzsK KyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19sX2lvX2JvdW5jZV9pb19raWNrb3V0KTsKKy0gICAg CisrCisgICAgIGJvdW5jZV9pbmZvID0gKGdsb2J1c19sX2lvX2JvdW5jZV90ICopIHVzZXJfYXJn OworICAgICBnbG9idXNfbF9pb19ib3VuY2VfaW9fY2IoCisgICAgICAgICBHTE9CVVNfTlVMTCwK Ky0gICAgICAgIGJvdW5jZV9pbmZvLT5lcnJvciAKKysgICAgICAgIGJvdW5jZV9pbmZvLT5lcnJv cgorICAgICAgICAgICAgID8gZ2xvYnVzX2Vycm9yX3B1dChib3VuY2VfaW5mby0+ZXJyb3IpIDog R0xPQlVTX1NVQ0NFU1MsCisgICAgICAgICBib3VuY2VfaW5mby0+YnVmZmVyLAorICAgICAgICAg MCwKK0BAIC03NTMsMjQgKzc1MywyNCBAQCBnbG9idXNfbF9pb19ib3VuY2VfaW9fa2lja291dCgK KyBzdGF0aWMKKyB2b2lkCisgZ2xvYnVzX2xfaW9fYm91bmNlX2lvX2NiKAorLSAgICBnbG9idXNf eGlvX2hhbmRsZV90ICAgICAgICAgICAgICAgICB4aW9faGFuZGxlLCAKKysgICAgZ2xvYnVzX3hp b19oYW5kbGVfdCAgICAgICAgICAgICAgICAgeGlvX2hhbmRsZSwKKyAgICAgZ2xvYnVzX3Jlc3Vs dF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LAorICAgICBnbG9idXNfYnl0ZV90ICogICAg ICAgICAgICAgICAgICAgICBidWZmZXIsCisgICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAg ICAgICAgICAgIGxlbiwKKy0gICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAg bmJ5dGVzLCAKKysgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgbmJ5dGVz LAorICAgICBnbG9idXNfeGlvX2RhdGFfZGVzY3JpcHRvcl90ICAgICAgICBkYXRhX2Rlc2MsCisg ICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfYXJnKQorIHsKKyAg ICAgZ2xvYnVzX2xfaW9fYm91bmNlX3QgKiAgICAgICAgICAgICAgYm91bmNlX2luZm87CisgICAg IGdsb2J1c19sX2lvX2hhbmRsZV90ICogICAgICAgICAgICAgIGloYW5kbGU7CisgICAgIEdsb2J1 c0lPTmFtZShnbG9idXNfbF9pb19ib3VuY2VfaW9fY2IpOworLSAgICAKKysKKyAgICAgYm91bmNl X2luZm8gPSAoZ2xvYnVzX2xfaW9fYm91bmNlX3QgKikgdXNlcl9hcmc7CisgICAgIGloYW5kbGUg PSBib3VuY2VfaW5mby0+aGFuZGxlOworLSAgICAKKysKKyAgICAgaWYoZ2xvYnVzX2xfaW9fc2hv dWxkX2JvdW5jZShib3VuY2VfaW5mbykpCisgICAgIHsKKy0gICAgICAgIGJvdW5jZV9pbmZvLT5l cnJvciA9IHJlc3VsdCA9PSBHTE9CVVNfU1VDQ0VTUyAKKysgICAgICAgIGJvdW5jZV9pbmZvLT5l cnJvciA9IHJlc3VsdCA9PSBHTE9CVVNfU1VDQ0VTUworICAgICAgICAgICAgID8gR0xPQlVTX05V TEwgOiBnbG9idXNfZXJyb3JfZ2V0KHJlc3VsdCk7CisgICAgICAgICBib3VuY2VfaW5mby0+YnVm ZmVyID0gYnVmZmVyOworICAgICAgICAgYm91bmNlX2luZm8tPm5ieXRlcyA9IG5ieXRlczsKK0BA IC03OTEsNyArNzkxLDcgQEAgZ2xvYnVzX2xfaW9fYm91bmNlX2lvX2NiKAorICAgICAgICAgfQor ICAgICAgICAgcmV0dXJuOworICAgICB9CistICAgIAorKworICAgICBpZihyZXN1bHQgIT0gR0xP QlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGlmKGdsb2J1c194aW9fZXJyb3JfaXNfZW9m KHJlc3VsdCkpCitAQCAtODExLDcgKzgxMSw3IEBAIGdsb2J1c19sX2lvX2JvdW5jZV9pb19jYigK KyAgICAgICAgICAgICAgICAgICAgIGloYW5kbGUtPmlvX2hhbmRsZSkpOworICAgICAgICAgfQor ICAgICB9CistICAgIAorKworICAgICBpZihnbG9idXNfbF9pb19jYW5jZWxfcHJlY2FsbGJhY2so Ym91bmNlX2luZm8pKQorICAgICB7CisgICAgICAgICBib3VuY2VfaW5mby0+Y2IucmVhZF93cml0 ZSgKK0BAIC04MjEsNyArODIxLDcgQEAgZ2xvYnVzX2xfaW9fYm91bmNlX2lvX2NiKAorICAgICAg ICAgICAgIGJ1ZmZlciwKKyAgICAgICAgICAgICBuYnl0ZXMpOworICAgICB9CistICAgIAorKwor ICAgICBnbG9idXNfbF9pb19jYW5jZWxfY29tcGxldGUoYm91bmNlX2luZm8pOworICAgICBnbG9i dXNfZnJlZShib3VuY2VfaW5mbyk7CisgfQorQEAgLTg0NCwxMSArODQ0LDExIEBAIGdsb2J1c19s X2lvX2JvdW5jZV9pb3ZlY19raWNrb3V0KAorIHsKKyAgICAgZ2xvYnVzX2xfaW9fYm91bmNlX3Qg KiAgICAgICAgICAgICAgYm91bmNlX2luZm87CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfbF9p b19ib3VuY2VfaW92ZWNfa2lja291dCk7CistICAgIAorKworICAgICBib3VuY2VfaW5mbyA9IChn bG9idXNfbF9pb19ib3VuY2VfdCAqKSB1c2VyX2FyZzsKKyAgICAgZ2xvYnVzX2xfaW9fYm91bmNl X2lvdmVjX2NiKAorICAgICAgICAgR0xPQlVTX05VTEwsCistICAgICAgICBib3VuY2VfaW5mby0+ ZXJyb3IgCisrICAgICAgICBib3VuY2VfaW5mby0+ZXJyb3IKKyAgICAgICAgICAgICA/IGdsb2J1 c19lcnJvcl9wdXQoYm91bmNlX2luZm8tPmVycm9yKSA6IEdMT0JVU19TVUNDRVNTLAorICAgICAg ICAgYm91bmNlX2luZm8tPmlvdiwKKyAgICAgICAgIGJvdW5jZV9pbmZvLT5pb3ZjLAorQEAgLTg3 MSwxMyArODcxLDEzIEBAIGdsb2J1c19sX2lvX2JvdW5jZV9pb3ZlY19jYigKKyAgICAgZ2xvYnVz X2xfaW9fYm91bmNlX3QgKiAgICAgICAgICAgICAgYm91bmNlX2luZm87CisgICAgIGdsb2J1c19s X2lvX2hhbmRsZV90ICogICAgICAgICAgICAgIGloYW5kbGU7CisgICAgIEdsb2J1c0lPTmFtZShn bG9idXNfbF9pb19ib3VuY2VfaW92ZWNfY2IpOworLSAgICAKKysKKyAgICAgYm91bmNlX2luZm8g PSAoZ2xvYnVzX2xfaW9fYm91bmNlX3QgKikgdXNlcl9hcmc7CisgICAgIGloYW5kbGUgPSBib3Vu Y2VfaW5mby0+aGFuZGxlOworLSAgICAKKysKKyAgICAgaWYoZ2xvYnVzX2xfaW9fc2hvdWxkX2Jv dW5jZShib3VuY2VfaW5mbykpCisgICAgIHsKKy0gICAgICAgIGJvdW5jZV9pbmZvLT5lcnJvciA9 IHJlc3VsdCA9PSBHTE9CVVNfU1VDQ0VTUyAKKysgICAgICAgIGJvdW5jZV9pbmZvLT5lcnJvciA9 IHJlc3VsdCA9PSBHTE9CVVNfU1VDQ0VTUworICAgICAgICAgICAgID8gR0xPQlVTX05VTEwgOiBn bG9idXNfZXJyb3JfZ2V0KHJlc3VsdCk7CisgICAgICAgICBib3VuY2VfaW5mby0+aW92ID0gaW92 ZWM7CisgICAgICAgICBib3VuY2VfaW5mby0+aW92YyA9IGNvdW50OworQEAgLTg5OSw3ICs4OTks NyBAQCBnbG9idXNfbF9pb19ib3VuY2VfaW92ZWNfY2IoCisgICAgICAgICB9CisgICAgICAgICBy ZXR1cm47CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VT UykKKyAgICAgeworICAgICAgICAgaWYoZ2xvYnVzX3hpb19lcnJvcl9pc19lb2YocmVzdWx0KSkK K0BAIC05MTksNyArOTE5LDcgQEAgZ2xvYnVzX2xfaW9fYm91bmNlX2lvdmVjX2NiKAorICAgICAg ICAgICAgICAgICAgICAgaWhhbmRsZS0+aW9faGFuZGxlKSk7CisgICAgICAgICB9CisgICAgIH0K Ky0gICAgCisrCisgICAgIGlmKGdsb2J1c19sX2lvX2NhbmNlbF9wcmVjYWxsYmFjayhib3VuY2Vf aW5mbykpCisgICAgIHsKKyAgICAgICAgIGJvdW5jZV9pbmZvLT5jYi53cml0ZXYoCitAQCAtOTMw LDcgKzkzMCw3IEBAIGdsb2J1c19sX2lvX2JvdW5jZV9pb3ZlY19jYigKKyAgICAgICAgICAgICBj b3VudCwKKyAgICAgICAgICAgICBuYnl0ZXMpOworICAgICB9CistICAgIAorKworICAgICBnbG9i dXNfbF9pb19jYW5jZWxfY29tcGxldGUoYm91bmNlX2luZm8pOworICAgICBnbG9idXNfZnJlZShi b3VuY2VfaW5mbyk7CisgfQorQEAgLTk0OSwxMiArOTQ5LDEyIEBAIGdsb2J1c19sX2lvX2JvdW5j ZV9hdXRoel9raWNrb3V0KAorIHsKKyAgICAgZ2xvYnVzX2xfaW9fYm91bmNlX3QgKiAgICAgICAg ICAgICAgYm91bmNlX2luZm87CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfbF9pb19ib3VuY2Vf YXV0aHpfa2lja291dCk7CistICAgIAorKworICAgICBib3VuY2VfaW5mbyA9IChnbG9idXNfbF9p b19ib3VuY2VfdCAqKSB1c2VyX2FyZzsKKy0gICAgCisrCisgICAgIGdsb2J1c19sX2lvX2JvdW5j ZV9hdXRoel9jYigKKyAgICAgICAgIEdMT0JVU19OVUxMLAorLSAgICAgICAgYm91bmNlX2luZm8t PmVycm9yIAorKyAgICAgICAgYm91bmNlX2luZm8tPmVycm9yCisgICAgICAgICAgICAgPyBnbG9i dXNfZXJyb3JfcHV0KGJvdW5jZV9pbmZvLT5lcnJvcikgOiBHTE9CVVNfU1VDQ0VTUywKKyAgICAg ICAgIHVzZXJfYXJnKTsKKyB9CitAQCAtOTc1LDEzICs5NzUsMTMgQEAgZ2xvYnVzX2xfaW9fYm91 bmNlX2F1dGh6X2NiKAorICAgICBnc3NfY3R4X2lkX3QgICAgICAgICAgICAgICAgICAgICAgICBj b250ZXh0OworICAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3Jt X2NhbGxiYWNrOworICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2xfaW9fYm91bmNlX2F1dGh6X2Ni KTsKKy0gICAgCisrCisgICAgIGJvdW5jZV9pbmZvID0gKGdsb2J1c19sX2lvX2JvdW5jZV90ICop IHVzZXJfYXJnOworLSAgICAKKysKKyAgICAgaWYoZ2xvYnVzX2xfaW9fc2hvdWxkX2JvdW5jZShi b3VuY2VfaW5mbykgfHwKKyAgICAgICAgKGhhbmRsZSAhPSBOVUxMICYmIGJvdW5jZV9pbmZvLT5o YW5kbGUtPmF0dHItPmF1dGh6X2RhdGEuY2FsbGJhY2spKQorICAgICB7CistICAgICAgICBib3Vu Y2VfaW5mby0+ZXJyb3IgPSByZXN1bHQgPT0gR0xPQlVTX1NVQ0NFU1MgCisrICAgICAgICBib3Vu Y2VfaW5mby0+ZXJyb3IgPSByZXN1bHQgPT0gR0xPQlVTX1NVQ0NFU1MKKyAgICAgICAgICAgICA/ IEdMT0JVU19OVUxMIDogZ2xvYnVzX2Vycm9yX2dldChyZXN1bHQpOworICAgICAgICAgcmVzdWx0 ID0gZ2xvYnVzX2NhbGxiYWNrX3NwYWNlX3JlZ2lzdGVyX29uZXNob3QoCisgICAgICAgICAgICAg R0xPQlVTX05VTEwsCitAQCAtMTAwMSwxMiArMTAwMSwxMiBAQCBnbG9idXNfbF9pb19ib3VuY2Vf YXV0aHpfY2IoCisgICAgICAgICB9CisgICAgICAgICByZXR1cm47CisgICAgIH0KKy0gICAgCisr CisgICAgIGloYW5kbGUgPSBib3VuY2VfaW5mby0+aGFuZGxlOworICAgICBwZXJmb3JtX2NhbGxi YWNrID0gZ2xvYnVzX2xfaW9fY2FuY2VsX3ByZWNhbGxiYWNrKGJvdW5jZV9pbmZvKTsKKy0gICAg CisrCisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKy0gICAgeyAKKysgICAgewor ICAgICAgICAgaWYoZ2xvYnVzX3hpb19lcnJvcl9pc19lb2YocmVzdWx0KSkKKyAgICAgICAgIHsK KyAgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNfZXJyb3JfcHV0KAorQEAgLTEwMjMsNyArMTAy Myw3IEBAIGdsb2J1c19sX2lvX2JvdW5jZV9hdXRoel9jYigKKyAgICAgICAgICAgICAgICAgICAg IGdsb2J1c19lcnJvcl9nZXQocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgIGloYW5kbGUt PmlvX2hhbmRsZSkpOworICAgICAgICAgfQorLSAgICAgICAgZWxzZSAKKysgICAgICAgIGVsc2UK KyAgICAgICAgIHsKKyAgICAgICAgICAgICBnbG9idXNfb2JqZWN0X3QgKiBlcnJvciA9IGdsb2J1 c19lcnJvcl9nZXQocmVzdWx0KTsKKyAgICAgICAgICAgICBpZihnbG9idXNfZXJyb3JfZ3NzYXBp X21hdGNoKGVycm9yLAorQEAgLTEwMzMsNyArMTAzMyw3IEBAIGdsb2J1c19sX2lvX2JvdW5jZV9h dXRoel9jYigKKyAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfaW9fZ3NpX2RyaXZlciwKKyAg ICAgICAgICAgICAgICAgICAgZXJyb3IsCisgICAgICAgICAgICAgICAgICAgIEdMT0JVU19YSU9f R1NJX0FVVEhPUklaQVRJT05fRkFJTEVEKSkKKy0gICAgICAgICAgICB7IAorKyAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2Vycm9yX3B1dCgKKyAgICAgICAg ICAgICAgICAgICAgIGdsb2J1c19pb19lcnJvcl9jb25zdHJ1Y3RfYXV0aG9yaXphdGlvbl9mYWls ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0lPX01PRFVMRSwKK0BAIC0xMDYz LDI0ICsxMDYzLDI0IEBAIGdsb2J1c19sX2lvX2JvdW5jZV9hdXRoel9jYigKKyAgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19lcnJvcl9wdXQoZXJyb3IpOwor ICAgICAgICAgICAgIH0KKy0gICAgICAgIH0gICAgICAgIAorKyAgICAgICAgfQorICAgICAgICAg Z290byBkb25lOworICAgICB9CisgCisgICAgIGlmKGloYW5kbGUtPmF0dHItPmF1dGhvcml6YXRp b25fbW9kZSA9PQorICAgICAgICBHTE9CVVNfSU9fU0VDVVJFX0FVVEhPUklaQVRJT05fTU9ERV9D QUxMQkFDSykKKy0gICAgeyAKKysgICAgeworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19o YW5kbGVfY250bCgKKyAgICAgICAgICAgICBpaGFuZGxlLT54aW9faGFuZGxlLAorICAgICAgICAg ICAgIGdsb2J1c19sX2lvX2dzaV9kcml2ZXIsCisgICAgICAgICAgICAgR0xPQlVTX1hJT19HU0lf R0VUX1BFRVJfTkFNRSwKKyAgICAgICAgICAgICAmcGVlcl9pZGVudGl0eSk7CistICAgICAgICAK KysKKyAgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgIHsKKyAg ICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAg IHJlc3VsdCA9IGdsb2J1c194aW9faGFuZGxlX2NudGwoCisgICAgICAgICAgICAgaWhhbmRsZS0+ eGlvX2hhbmRsZSwKKyAgICAgICAgICAgICBnbG9idXNfbF9pb19nc2lfZHJpdmVyLAorQEAgLTEx MDQsNyArMTEwNCw3IEBAIGdsb2J1c19sX2lvX2JvdW5jZV9hdXRoel9jYigKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3Jfc3RhdHVzKTsKKyAg ICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAg IGlmKCFwZXJmb3JtX2NhbGxiYWNrIHx8ICFpaGFuZGxlLT5hdHRyLT5hdXRoel9kYXRhLmNhbGxi YWNrKAorICAgICAgICAgICAgaWhhbmRsZS0+YXR0ci0+YXV0aHpfZGF0YS5jYWxsYmFja19hcmcs CisgICAgICAgICAgICBpaGFuZGxlLT5pb19oYW5kbGUsCitAQCAtMTExOSwyMSArMTExOSwyMSBA QCBnbG9idXNfbF9pb19ib3VuY2VfYXV0aHpfY2IoCisgICAgICAgICAgICAgICAgICAgICBpaGFu ZGxlLT5pb19oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAg ICAgICAgMCwKKy0gICAgICAgICAgICAgICAgICAgIDApKTsgICAKKysgICAgICAgICAgICAgICAg ICAgIDApKTsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIGZyZWUocGVlcl9uYW1lX2J1ZmZlci52 YWx1ZSk7CisgICAgIH0KKy0gICAgCisrCisgZG9uZToKKy0gICAgCisrCisgICAgIGlmKHJlc3Vs dCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworICAgICAgICAgZ2xvYnVzX3hpb19jbG9zZShp aGFuZGxlLT54aW9faGFuZGxlLCBHTE9CVVNfTlVMTCk7CisgICAgICAgICBpaGFuZGxlLT54aW9f aGFuZGxlID0gR0xPQlVTX05VTEw7CisgICAgICAgICAqaWhhbmRsZS0+aW9faGFuZGxlID0gR0xP QlVTX05VTEw7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKHBlcmZvcm1fY2FsbGJhY2spCisg ICAgIHsKKyAgICAgICAgIGJvdW5jZV9pbmZvLT5jYi5ub25faW8oCitAQCAtMTE0MSwxMCArMTE0 MSwxMCBAQCBkb25lOgorICAgICAgICAgICAgIGloYW5kbGUtPmlvX2hhbmRsZSwKKyAgICAgICAg ICAgICByZXN1bHQpOworICAgICB9CistICAgIAorKworICAgICBnbG9idXNfbF9pb19jYW5jZWxf Y29tcGxldGUoYm91bmNlX2luZm8pOworICAgICBnbG9idXNfZnJlZShib3VuY2VfaW5mbyk7Cist ICAgIAorKworICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAg ICAgIGdsb2J1c19sX2lvX2hhbmRsZV9kZXN0cm95KGloYW5kbGUpOworQEAgLTExNjYsMTMgKzEx NjYsMTMgQEAgZ2xvYnVzX2xfaW9fYm91bmNlX2xpc3Rlbl9raWNrb3V0KAorIHsKKyAgICAgZ2xv YnVzX2xfaW9fYm91bmNlX3QgKiAgICAgICAgICAgICAgYm91bmNlX2luZm87CisgICAgIEdsb2J1 c0lPTmFtZShnbG9idXNfbF9pb19ib3VuY2VfYXV0aHpfa2lja291dCk7CistICAgIAorKworICAg ICBib3VuY2VfaW5mbyA9IChnbG9idXNfbF9pb19ib3VuY2VfdCAqKSB1c2VyX2FyZzsKKy0gICAg CisrCisgICAgIGdsb2J1c19sX2lvX2JvdW5jZV9saXN0ZW5fY2IoCisgICAgICAgICBHTE9CVVNf TlVMTCwKKyAgICAgICAgIGJvdW5jZV9pbmZvLT5oYW5kbGUtPmFjY2VwdGVkX2hhbmRsZSwKKy0g ICAgICAgIGJvdW5jZV9pbmZvLT5lcnJvciAKKysgICAgICAgIGJvdW5jZV9pbmZvLT5lcnJvcgor ICAgICAgICAgICAgID8gZ2xvYnVzX2Vycm9yX3B1dChib3VuY2VfaW5mby0+ZXJyb3IpIDogR0xP QlVTX1NVQ0NFU1MsCisgICAgICAgICB1c2VyX2FyZyk7CisgfQorQEAgLTExODgsMTQgKzExODgs MTQgQEAgZ2xvYnVzX2xfaW9fYm91bmNlX2xpc3Rlbl9jYigKKyAgICAgZ2xvYnVzX2xfaW9fYm91 bmNlX3QgKiAgICAgICAgICAgICAgYm91bmNlX2luZm87CisgICAgIGdsb2J1c19sX2lvX2hhbmRs ZV90ICogICAgICAgICAgICAgIGloYW5kbGU7CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfbF9p b19ib3VuY2VfbGlzdGVuX2NiKTsKKy0gICAgCisrCisgICAgIGJvdW5jZV9pbmZvID0gKGdsb2J1 c19sX2lvX2JvdW5jZV90ICopIHVzZXJfYXJnOworICAgICBpaGFuZGxlID0gYm91bmNlX2luZm8t PmhhbmRsZTsKKyAgICAgaWhhbmRsZS0+YWNjZXB0ZWRfaGFuZGxlID0gaGFuZGxlOworLSAgICAK KysKKyAgICAgaWYoZ2xvYnVzX2xfaW9fc2hvdWxkX2JvdW5jZShib3VuY2VfaW5mbykpCisgICAg IHsKKy0gICAgICAgIGJvdW5jZV9pbmZvLT5lcnJvciA9IHJlc3VsdCA9PSBHTE9CVVNfU1VDQ0VT UyAKKysgICAgICAgIGJvdW5jZV9pbmZvLT5lcnJvciA9IHJlc3VsdCA9PSBHTE9CVVNfU1VDQ0VT UworICAgICAgICAgICAgID8gR0xPQlVTX05VTEwgOiBnbG9idXNfZXJyb3JfZ2V0KHJlc3VsdCk7 CisgICAgICAgICByZXN1bHQgPSBnbG9idXNfY2FsbGJhY2tfc3BhY2VfcmVnaXN0ZXJfb25lc2hv dCgKKyAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKK0BAIC0xMjE1LDcgKzEyMTUsNyBAQCBnbG9i dXNfbF9pb19ib3VuY2VfbGlzdGVuX2NiKAorICAgICAgICAgfQorICAgICAgICAgcmV0dXJuOwor ICAgICB9CistICAgIAorKworICAgICBpZihnbG9idXNfbF9pb19jYW5jZWxfcHJlY2FsbGJhY2so Ym91bmNlX2luZm8pKQorICAgICB7CisgICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NF U1MgJiYgZ2xvYnVzX3hpb19lcnJvcl9pc19jYW5jZWxlZChyZXN1bHQpKQorQEAgLTEyMjYsNyAr MTIyNiw3IEBAIGdsb2J1c19sX2lvX2JvdW5jZV9saXN0ZW5fY2IoCisgICAgICAgICAgICAgICAg ICAgICBnbG9idXNfZXJyb3JfZ2V0KHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICBpaGFu ZGxlLT5pb19oYW5kbGUpKTsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgYm91 bmNlX2luZm8tPmNiLm5vbl9pbygKKyAgICAgICAgICAgICBib3VuY2VfaW5mby0+dXNlcl9hcmcs CisgICAgICAgICAgICAgaWhhbmRsZS0+aW9faGFuZGxlLAorQEAgLTEyNDYsOSArMTI0Niw5IEBA IGdsb2J1c19sX2lvX2Jsb2NraW5nX2NiKAorIHsKKyAgICAgZ2xvYnVzX2xfaW9fbW9uaXRvcl90 ICogICAgICAgICAgICAgbW9uaXRvcjsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19sX2lvX2Js b2NraW5nX2NiKTsKKy0gICAgCisrCisgICAgIG1vbml0b3IgPSAoZ2xvYnVzX2xfaW9fbW9uaXRv cl90ICopIHVzZXJfYXJnOworLSAgICAKKysKKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJm1vbml0 b3ItPmxvY2spOworICAgICB7CisgICAgICAgICBtb25pdG9yLT5kb25lID0gR0xPQlVTX1RSVUU7 CitAQCAtMTI2NCwxMyArMTI2NCwxMyBAQCBnbG9idXNfaW9fYXR0cl9zZXRfY2FsbGJhY2tfc3Bh Y2UoCisgICAgIGdsb2J1c19jYWxsYmFja19zcGFjZV90ICAgICAgICAgICAgIHNwYWNlKQorIHsK KyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19pb19hdHRyX3NldF9jYWxsYmFja19zcGFjZSk7Cist ICAgIAorKworICAgICBHbG9idXNMSU9DaGVja0F0dHIoYXR0ciwgR0xPQlVTX0lfSU9fRklMRV9B VFRSIHwgR0xPQlVTX0lfSU9fVENQX0FUVFIpOworLSAgICAKKysKKyAgICAgZ2xvYnVzX2NhbGxi YWNrX3NwYWNlX2Rlc3Ryb3koKCphdHRyKS0+c3BhY2UpOworICAgICBnbG9idXNfY2FsbGJhY2tf c3BhY2VfcmVmZXJlbmNlKHNwYWNlKTsKKyAgICAgKCphdHRyKS0+c3BhY2UgPSBzcGFjZTsKKy0g ICAgCisrCisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyB9CisgCitAQCAtMTI4MCwxMCAr MTI4MCwxMCBAQCBnbG9idXNfaW9fYXR0cl9nZXRfY2FsbGJhY2tfc3BhY2UoCisgICAgIGdsb2J1 c19jYWxsYmFja19zcGFjZV90ICogICAgICAgICAgIHNwYWNlKQorIHsKKyAgICAgR2xvYnVzSU9O YW1lKGdsb2J1c19pb19hdHRyX2dldF9jYWxsYmFja19zcGFjZSk7CistICAgIAorKworICAgICBH bG9idXNMSU9DaGVja0F0dHIoYXR0ciwgR0xPQlVTX0lfSU9fRklMRV9BVFRSIHwgR0xPQlVTX0lf SU9fVENQX0FUVFIpOworICAgICBHbG9idXNMSU9DaGVja051bGxQYXJhbShzcGFjZSk7CistICAg IAorKworICAgICAqc3BhY2UgPSAoKmF0dHIpLT5zcGFjZTsKKyAgICAgcmV0dXJuIEdMT0JVU19T VUNDRVNTOworIH0KK0BAIC0xMjk3LDMyICsxMjk3LDMyIEBAIGdsb2J1c19pb19maWxlYXR0cl9p bml0KAorICAgICBnbG9idXNfbF9pb19hdHRyX3QgKiAgICAgICAgICAgICAgICBpYXR0cjsKKyAg ICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OworICAgICBHbG9i dXNJT05hbWUoZ2xvYnVzX2lvX2ZpbGVhdHRyX2luaXQpOworLSAgICAKKysKKyAgICAgR2xvYnVz TElPQ2hlY2tOdWxsUGFyYW0oYXR0cik7CistICAgIAorKworICAgICByZXN1bHQgPSBHbG9idXNM SU9NYWxsb2MoaWF0dHIsIGdsb2J1c19sX2lvX2F0dHJfdCk7CisgICAgIGlmKHJlc3VsdCAhPSBH TE9CVVNfU1VDQ0VTUykKKyAgICAgeworICAgICAgICAgZ290byBlcnJvcl9hbGxvYzsKKyAgICAg fQorLSAgICAKKysKKyAgICAgaWF0dHItPnR5cGUgPSBHTE9CVVNfSV9JT19GSUxFX0FUVFI7Cisg ICAgIGlhdHRyLT5zcGFjZSA9IEdMT0JVU19DQUxMQkFDS19HTE9CQUxfU1BBQ0U7CistICAgIAor KworICAgICByZXN1bHQgPSBnbG9idXNfeGlvX2F0dHJfaW5pdCgmaWF0dHItPmF0dHIpOworICAg ICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGdvdG8gZXJy b3JfYXR0cjsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaWF0dHItPmZpbGVfZmxhZ3MgPSBHTE9C VVNfSU9fRklMRV9UWVBFX0JJTkFSWTsKKyAgICAgKmF0dHIgPSBpYXR0cjsKKy0gICAgCisrCisg ICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAKKyBlcnJvcl9hdHRyOgorICAgICBnbG9idXNf ZnJlZShpYXR0cik7CistICAgIAorKworIGVycm9yX2FsbG9jOgorICAgICAqYXR0ciA9IEdMT0JV U19OVUxMOworICAgICByZXR1cm4gcmVzdWx0OworQEAgLTEzMzQsMTEgKzEzMzQsMTEgQEAgZ2xv YnVzX2lvX2ZpbGVhdHRyX2Rlc3Ryb3koCisgeworICAgICBnbG9idXNfbF9pb19hdHRyX3QgKiAg ICAgICAgICAgICAgICBpYXR0cjsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19pb19maWxlYXR0 cl9kZXN0cm95KTsKKy0gICAgCisrCisgICAgIEdsb2J1c0xJT0NoZWNrQXR0cihhdHRyLCBHTE9C VVNfSV9JT19GSUxFX0FUVFIpOworLSAgICAKKysKKyAgICAgaWF0dHIgPSAoZ2xvYnVzX2xfaW9f YXR0cl90ICopICphdHRyOworLSAgICAKKysKKyAgICAgZ2xvYnVzX2NhbGxiYWNrX3NwYWNlX2Rl c3Ryb3koaWF0dHItPnNwYWNlKTsKKyAgICAgZ2xvYnVzX3hpb19hdHRyX2Rlc3Ryb3koaWF0dHIt PmF0dHIpOworICAgICBpZihpYXR0ci0+c3RhY2spCitAQCAtMTM0Nyw3ICsxMzQ3LDcgQEAgZ2xv YnVzX2lvX2ZpbGVhdHRyX2Rlc3Ryb3koCisgICAgIH0KKyAgICAgZ2xvYnVzX2ZyZWUoaWF0dHIp OworICAgICAqYXR0ciA9IEdMT0JVU19OVUxMOworLSAgICAKKysKKyAgICAgcmV0dXJuIEdMT0JV U19TVUNDRVNTOworIH0KKyAKK0BAIC0xMzU3LDExICsxMzU3LDExIEBAIGdsb2J1c19pb19hdHRy X3NldF9maWxlX3R5cGUoCisgICAgIGdsb2J1c19pb19maWxlX3R5cGVfdCAgICAgICAgICAgICAg IGZpbGVfdHlwZSkKKyB7CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfaW9fYXR0cl9zZXRfZmls ZV90eXBlKTsKKy0gICAgCisrCisgICAgIEdsb2J1c0xJT0NoZWNrQXR0cihhdHRyLCBHTE9CVVNf SV9JT19GSUxFX0FUVFIpOworLSAgICAKKysKKyAgICAgKCphdHRyKS0+ZmlsZV9mbGFncyA9IGZp bGVfdHlwZTsKKy0gICAgCisrCisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyB9CisgCitA QCAtMTM3MSwxMSArMTM3MSwxMSBAQCBnbG9idXNfaW9fYXR0cl9nZXRfZmlsZV90eXBlKAorICAg ICBnbG9idXNfaW9fZmlsZV90eXBlX3QgKiAgICAgICAgICAgICBmaWxlX3R5cGUpCisgeworICAg ICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX2F0dHJfZ2V0X2ZpbGVfdHlwZSk7CistICAgIAorKwor ICAgICBHbG9idXNMSU9DaGVja0F0dHIoYXR0ciwgR0xPQlVTX0lfSU9fRklMRV9BVFRSKTsKKy0g ICAgCisrCisgICAgICpmaWxlX3R5cGUgPSAoKmF0dHIpLT5maWxlX2ZsYWdzOworLSAgICAKKysK KyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworIH0KKyAKK0BAIC0xMzg4LDE1ICsxMzg4LDE1 IEBAIGdsb2J1c19pb190Y3BhdHRyX2luaXQoCisgICAgIGdsb2J1c19sX2lvX2F0dHJfdCAqICAg ICAgICAgICAgICAgIGlhdHRyOworICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAg ICAgICByZXN1bHQ7CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfaW9fdGNwYXR0cl9pbml0KTsK Ky0gICAgCisrCisgICAgIEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKGF0dHIpOworLSAgICAKKysK KyAgICAgcmVzdWx0ID0gR2xvYnVzTElPTWFsbG9jKGlhdHRyLCBnbG9idXNfbF9pb19hdHRyX3Qp OworICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGdv dG8gZXJyb3JfYWxsb2M7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlhdHRyLT50eXBlID0gR0xP QlVTX0lfSU9fVENQX0FUVFI7CisgICAgIGlhdHRyLT5zcGFjZSA9IEdMT0JVU19DQUxMQkFDS19H TE9CQUxfU1BBQ0U7CisgICAgIGlhdHRyLT5maWxlX2ZsYWdzID0gMDsKK0BAIC0xNDEyLDggKzE0 MTIsOCBAQCBnbG9idXNfaW9fdGNwYXR0cl9pbml0KAorICAgICB9CisgCisgICAgIHJlc3VsdCA9 IGdsb2J1c194aW9fYXR0cl9jbnRsKAorLSAgICAgICAgICAgIGlhdHRyLT5hdHRyLCAKKy0gICAg ICAgICAgICBnbG9idXNfbF9pb19nc2lfZHJpdmVyLCAKKysgICAgICAgICAgICBpYXR0ci0+YXR0 ciwKKysgICAgICAgICAgICBnbG9idXNfbF9pb19nc2lfZHJpdmVyLAorICAgICAgICAgICAgIEdM T0JVU19YSU9fR1NJX1NFVF9QUk9URUNUSU9OX0xFVkVMLAorICAgICAgICAgICAgIEdMT0JVU19Y SU9fR1NJX1BST1RFQ1RJT05fTEVWRUxfTk9ORSk7CisgCitAQCAtMTQyMSwxNyArMTQyMSwxNyBA QCBnbG9idXNfaW9fdGNwYXR0cl9pbml0KAorICAgICB7CisgICAgICAgICBnb3RvIGVycm9yX3hp b19hdHRyOworICAgICB9CistICAgIAorKworICAgICAqYXR0ciA9IGlhdHRyOworLSAgICAKKysK KyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworIAorICBlcnJvcl94aW9fYXR0cjoKKyAgICAg Z2xvYnVzX3hpb19hdHRyX2Rlc3Ryb3koaWF0dHItPmF0dHIpOworLSAgICAKKysKKyAgZXJyb3Jf YXR0cjoKKyAgICAgZ2xvYnVzX2ZyZWUoaWF0dHIpOworLSAgICAKKysKKyAgZXJyb3JfYWxsb2M6 CisgICAgICphdHRyID0gR0xPQlVTX05VTEw7CisgICAgIHJldHVybiByZXN1bHQ7CitAQCAtMTQ0 MywxOCArMTQ0MywxOCBAQCBnbG9idXNfaW9fdGNwYXR0cl9kZXN0cm95KAorIHsKKyAgICAgZ2xv YnVzX2xfaW9fYXR0cl90ICogICAgICAgICAgICAgICAgaWF0dHI7CisgICAgIEdsb2J1c0lPTmFt ZShnbG9idXNfaW9fdGNwYXR0cl9kZXN0cm95KTsKKy0gICAgCisrCisgICAgIEdsb2J1c0xJT0No ZWNrQXR0cihhdHRyLCBHTE9CVVNfSV9JT19UQ1BfQVRUUik7CistICAgIAorKworICAgICBpYXR0 ciA9IChnbG9idXNfbF9pb19hdHRyX3QgKikgKmF0dHI7CistICAgIAorKworICAgICBpZihpYXR0 ci0+YXV0aHpfZGF0YS5pZGVudGl0eSAhPSBHU1NfQ19OT19OQU1FKQorICAgICB7CisgICAgICAg ICBPTV91aW50MzIgICAgICAgICAgICAgICAgICAgICAgIG1pbm9yX3N0YXR1czsKKyAKKyAgICAg ICAgIGdzc19yZWxlYXNlX25hbWUoJm1pbm9yX3N0YXR1cywgJmlhdHRyLT5hdXRoel9kYXRhLmlk ZW50aXR5KTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgZ2xvYnVzX2NhbGxiYWNrX3NwYWNlX2Rl c3Ryb3koaWF0dHItPnNwYWNlKTsKKyAgICAgZ2xvYnVzX3hpb19hdHRyX2Rlc3Ryb3koaWF0dHIt PmF0dHIpOworICAgICBpZihpYXR0ci0+c3RhY2spCitAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgZ2xv YnVzX2lvX3RjcGF0dHJfZGVzdHJveSgKKyAgICAgfQorICAgICBnbG9idXNfZnJlZShpYXR0cik7 CisgICAgICphdHRyID0gR0xPQlVTX05VTEw7CistICAgIAorKworICAgICByZXR1cm4gR0xPQlVT X1NVQ0NFU1M7CisgfQorIAorQEAgLTE0NzMsMTMgKzE0NzMsMTMgQEAgZ2xvYnVzX2lvX2F0dHJf c2V0X3RjcF9yZXN0cmljdF9wb3J0KAorICAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAg ICAgICAgICByZXN0cmljdF9wb3J0KQorIHsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19pb19h dHRyX3NldF90Y3BfcmVzdHJpY3RfcG9ydCk7CistICAgIAorKworICAgICBHbG9idXNMSU9DaGVj a0F0dHIoYXR0ciwgR0xPQlVTX0lfSU9fVENQX0FUVFIpOworLSAgICAKKysKKyAgICAgcmV0dXJu IGdsb2J1c194aW9fYXR0cl9jbnRsKAorLSAgICAgICAgKCphdHRyKS0+YXR0ciwgCistICAgICAg ICBnbG9idXNfbF9pb190Y3BfZHJpdmVyLCAKKy0gICAgICAgIEdMT0JVU19YSU9fVENQX1NFVF9S RVNUUklDVF9QT1JULCAKKysgICAgICAgICgqYXR0ciktPmF0dHIsCisrICAgICAgICBnbG9idXNf bF9pb190Y3BfZHJpdmVyLAorKyAgICAgICAgR0xPQlVTX1hJT19UQ1BfU0VUX1JFU1RSSUNUX1BP UlQsCisgICAgICAgICByZXN0cmljdF9wb3J0KTsKKyB9CisgCitAQCAtMTQ4OSwxMyArMTQ4OSwx MyBAQCBnbG9idXNfaW9fYXR0cl9nZXRfdGNwX3Jlc3RyaWN0X3BvcnQoCisgICAgIGdsb2J1c19i b29sX3QgKiAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0X3BvcnQpCisgeworICAgICBHbG9i dXNJT05hbWUoZ2xvYnVzX2lvX2F0dHJfZ2V0X3RjcF9yZXN0cmljdF9wb3J0KTsKKy0gICAgCisr CisgICAgIEdsb2J1c0xJT0NoZWNrQXR0cihhdHRyLCBHTE9CVVNfSV9JT19UQ1BfQVRUUik7Cist ICAgIAorKworICAgICByZXR1cm4gZ2xvYnVzX3hpb19hdHRyX2NudGwoCistICAgICAgICAoKmF0 dHIpLT5hdHRyLCAKKy0gICAgICAgIGdsb2J1c19sX2lvX3RjcF9kcml2ZXIsIAorLSAgICAgICAg R0xPQlVTX1hJT19UQ1BfR0VUX1JFU1RSSUNUX1BPUlQsIAorKyAgICAgICAgKCphdHRyKS0+YXR0 ciwKKysgICAgICAgIGdsb2J1c19sX2lvX3RjcF9kcml2ZXIsCisrICAgICAgICBHTE9CVVNfWElP X1RDUF9HRVRfUkVTVFJJQ1RfUE9SVCwKKyAgICAgICAgIHJlc3RyaWN0X3BvcnQpOworIH0KKyAK K0BAIC0xNTA1LDEzICsxNTA1LDEzIEBAIGdsb2J1c19pb19hdHRyX3NldF90Y3Bfbm9kZWxheSgK KyAgICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICAgICAgbm9kZWxheSkKKyB7Cisg ICAgIEdsb2J1c0lPTmFtZShnbG9idXNfaW9fYXR0cl9zZXRfdGNwX25vZGVsYXkpOworLSAgICAK KysKKyAgICAgR2xvYnVzTElPQ2hlY2tBdHRyKGF0dHIsIEdMT0JVU19JX0lPX1RDUF9BVFRSKTsK Ky0gICAgCisrCisgICAgIHJldHVybiBnbG9idXNfeGlvX2F0dHJfY250bCgKKy0gICAgICAgICgq YXR0ciktPmF0dHIsIAorLSAgICAgICAgZ2xvYnVzX2xfaW9fdGNwX2RyaXZlciwgCistICAgICAg ICBHTE9CVVNfWElPX1RDUF9TRVRfTk9ERUxBWSwgCisrICAgICAgICAoKmF0dHIpLT5hdHRyLAor KyAgICAgICAgZ2xvYnVzX2xfaW9fdGNwX2RyaXZlciwKKysgICAgICAgIEdMT0JVU19YSU9fVENQ X1NFVF9OT0RFTEFZLAorICAgICAgICAgbm9kZWxheSk7CisgfQorIAorQEAgLTE1MjEsMTMgKzE1 MjEsMTMgQEAgZ2xvYnVzX2lvX2F0dHJfZ2V0X3RjcF9ub2RlbGF5KAorICAgICBnbG9idXNfYm9v bF90ICogICAgICAgICAgICAgICAgICAgICBub2RlbGF5KQorIHsKKyAgICAgR2xvYnVzSU9OYW1l KGdsb2J1c19pb19hdHRyX2dldF90Y3Bfbm9kZWxheSk7CistICAgIAorKworICAgICBHbG9idXNM SU9DaGVja0F0dHIoYXR0ciwgR0xPQlVTX0lfSU9fVENQX0FUVFIpOworLSAgICAKKysKKyAgICAg cmV0dXJuIGdsb2J1c194aW9fYXR0cl9jbnRsKAorLSAgICAgICAgKCphdHRyKS0+YXR0ciwgCist ICAgICAgICBnbG9idXNfbF9pb190Y3BfZHJpdmVyLCAKKy0gICAgICAgIEdMT0JVU19YSU9fVENQ X0dFVF9OT0RFTEFZLCAKKysgICAgICAgICgqYXR0ciktPmF0dHIsCisrICAgICAgICBnbG9idXNf bF9pb190Y3BfZHJpdmVyLAorKyAgICAgICAgR0xPQlVTX1hJT19UQ1BfR0VUX05PREVMQVksCisg ICAgICAgICBub2RlbGF5KTsKKyB9CisgCitAQCAtMTUzNywxMyArMTUzNywxMyBAQCBnbG9idXNf aW9fYXR0cl9zZXRfdGNwX2ludGVyZmFjZSgKKyAgICAgY29uc3QgY2hhciAqICAgICAgICAgICAg ICAgICAgICAgICAgaW50ZXJmYWNlX2FkZHIpCisgeworICAgICBHbG9idXNJT05hbWUoZ2xvYnVz X2lvX2F0dHJfc2V0X3RjcF9pbnRlcmZhY2UpOworLSAgICAKKysKKyAgICAgR2xvYnVzTElPQ2hl Y2tBdHRyKGF0dHIsIEdMT0JVU19JX0lPX1RDUF9BVFRSKTsKKy0gICAgCisrCisgICAgIHJldHVy biBnbG9idXNfeGlvX2F0dHJfY250bCgKKy0gICAgICAgICgqYXR0ciktPmF0dHIsIAorLSAgICAg ICAgZ2xvYnVzX2xfaW9fdGNwX2RyaXZlciwgCistICAgICAgICBHTE9CVVNfWElPX1RDUF9TRVRf SU5URVJGQUNFLCAKKysgICAgICAgICgqYXR0ciktPmF0dHIsCisrICAgICAgICBnbG9idXNfbF9p b190Y3BfZHJpdmVyLAorKyAgICAgICAgR0xPQlVTX1hJT19UQ1BfU0VUX0lOVEVSRkFDRSwKKyAg ICAgICAgIGludGVyZmFjZV9hZGRyKTsKKyB9CisgCitAQCAtMTU1MywxMyArMTU1MywxMyBAQCBn bG9idXNfaW9fYXR0cl9nZXRfdGNwX2ludGVyZmFjZSgKKyAgICAgY2hhciAqKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlX2FkZHIpCisgeworICAgICBHbG9idXNJT05hbWUo Z2xvYnVzX2lvX2F0dHJfZ2V0X3RjcF9pbnRlcmZhY2UpOworLSAgICAKKysKKyAgICAgR2xvYnVz TElPQ2hlY2tBdHRyKGF0dHIsIEdMT0JVU19JX0lPX1RDUF9BVFRSKTsKKy0gICAgCisrCisgICAg IHJldHVybiBnbG9idXNfeGlvX2F0dHJfY250bCgKKy0gICAgICAgICgqYXR0ciktPmF0dHIsIAor LSAgICAgICAgZ2xvYnVzX2xfaW9fdGNwX2RyaXZlciwgCistICAgICAgICBHTE9CVVNfWElPX1RD UF9HRVRfSU5URVJGQUNFLCAKKysgICAgICAgICgqYXR0ciktPmF0dHIsCisrICAgICAgICBnbG9i dXNfbF9pb190Y3BfZHJpdmVyLAorKyAgICAgICAgR0xPQlVTX1hJT19UQ1BfR0VUX0lOVEVSRkFD RSwKKyAgICAgICAgIGludGVyZmFjZV9hZGRyKTsKKyB9CisgCitAQCAtMTU3MCw5ICsxNTcwLDkg QEAgZ2xvYnVzX2lvX2F0dHJfc2V0X3RjcF9hbGxvd19pcHY2KAorIHsKKyAgICAgZ2xvYnVzX2xf aW9fYXR0cl90ICogICAgICAgICAgICAgICAgaWF0dHI7CisgICAgIEdsb2J1c0lPTmFtZShnbG9i dXNfaW9fYXR0cl9zZXRfdGNwX2FsbG93X2lwdjYpOworLSAgICAKKysKKyAgICAgR2xvYnVzTElP Q2hlY2tBdHRyKGF0dHIsIEdMT0JVU19JX0lPX1RDUF9BVFRSKTsKKy0gICAgCisrCisgICAgIGlh dHRyID0gKGdsb2J1c19sX2lvX2F0dHJfdCAqKSAqYXR0cjsKKyAgICAgaWF0dHItPmFsbG93X2lw djYgPSBhbGxvdzsKKyAKK0BAIC0xNTg2LDEyICsxNTg2LDEyIEBAIGdsb2J1c19pb19hdHRyX3Nl dF9zb2NrZXRfcmV1c2VhZGRyKAorICAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAg ICAgICByZXVzZWFkZHIpCisgeworICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX2F0dHJfc2V0 X3NvY2tldF9yZXVzZWFkZHIpOworLSAgICAKKysKKyAgICAgR2xvYnVzTElPQ2hlY2tBdHRyKGF0 dHIsIEdMT0JVU19JX0lPX1RDUF9BVFRSKTsKKy0gICAgCisrCisgICAgIHJldHVybiBnbG9idXNf eGlvX2F0dHJfY250bCgKKy0gICAgICAgICgqYXR0ciktPmF0dHIsIAorLSAgICAgICAgZ2xvYnVz X2xfaW9fdGNwX2RyaXZlciwgCisrICAgICAgICAoKmF0dHIpLT5hdHRyLAorKyAgICAgICAgZ2xv YnVzX2xfaW9fdGNwX2RyaXZlciwKKyAgICAgICAgIEdMT0JVU19YSU9fVENQX1NFVF9SRVVTRUFE RFIsCisgICAgICAgICByZXVzZWFkZHIpOworIH0KK0BAIC0xNjAyLDEyICsxNjAyLDEyIEBAIGds b2J1c19pb19hdHRyX2dldF9zb2NrZXRfcmV1c2VhZGRyKAorICAgICBnbG9idXNfYm9vbF90ICog ICAgICAgICAgICAgICAgICAgICByZXVzZWFkZHIpCisgeworICAgICBHbG9idXNJT05hbWUoZ2xv YnVzX2lvX2F0dHJfZ2V0X3NvY2tldF9yZXVzZWFkZHIpOworLSAgICAKKysKKyAgICAgR2xvYnVz TElPQ2hlY2tBdHRyKGF0dHIsIEdMT0JVU19JX0lPX1RDUF9BVFRSKTsKKyAKKyAgICAgcmV0dXJu IGdsb2J1c194aW9fYXR0cl9jbnRsKAorLSAgICAgICAgKCphdHRyKS0+YXR0ciwgCistICAgICAg ICBnbG9idXNfbF9pb190Y3BfZHJpdmVyLCAKKysgICAgICAgICgqYXR0ciktPmF0dHIsCisrICAg ICAgICBnbG9idXNfbF9pb190Y3BfZHJpdmVyLAorICAgICAgICAgR0xPQlVTX1hJT19UQ1BfR0VU X1JFVVNFQUREUiwKKyAgICAgICAgIHJldXNlYWRkcik7CisgfQorQEAgLTE2MTgsMTMgKzE2MTgs MTMgQEAgZ2xvYnVzX2lvX2F0dHJfc2V0X3NvY2tldF9rZWVwYWxpdmUoCisgICAgIGdsb2J1c19i b29sX3QgICAgICAgICAgICAgICAgICAgICAgIGtlZXBhbGl2ZSkKKyB7CisgICAgIEdsb2J1c0lP TmFtZShnbG9idXNfaW9fYXR0cl9zZXRfc29ja2V0X2tlZXBhbGl2ZSk7CistICAgIAorKworICAg ICBHbG9idXNMSU9DaGVja0F0dHIoYXR0ciwgR0xPQlVTX0lfSU9fVENQX0FUVFIpOworLSAgICAK KysKKyAgICAgcmV0dXJuIGdsb2J1c194aW9fYXR0cl9jbnRsKAorLSAgICAgICAgKCphdHRyKS0+ YXR0ciwgCistICAgICAgICBnbG9idXNfbF9pb190Y3BfZHJpdmVyLCAKKy0gICAgICAgIEdMT0JV U19YSU9fVENQX1NFVF9LRUVQQUxJVkUsIAorKyAgICAgICAgKCphdHRyKS0+YXR0ciwKKysgICAg ICAgIGdsb2J1c19sX2lvX3RjcF9kcml2ZXIsCisrICAgICAgICBHTE9CVVNfWElPX1RDUF9TRVRf S0VFUEFMSVZFLAorICAgICAgICAga2VlcGFsaXZlKTsKKyB9CisgCitAQCAtMTYzNCwxMyArMTYz NCwxMyBAQCBnbG9idXNfaW9fYXR0cl9nZXRfc29ja2V0X2tlZXBhbGl2ZSgKKyAgICAgZ2xvYnVz X2Jvb2xfdCAqICAgICAgICAgICAgICAgICAgICAga2VlcGFsaXZlKQorIHsKKyAgICAgR2xvYnVz SU9OYW1lKGdsb2J1c19pb19hdHRyX2dldF9zb2NrZXRfa2VlcGFsaXZlKTsKKy0gICAgCisrCisg ICAgIEdsb2J1c0xJT0NoZWNrQXR0cihhdHRyLCBHTE9CVVNfSV9JT19UQ1BfQVRUUik7CistICAg IAorKworICAgICByZXR1cm4gZ2xvYnVzX3hpb19hdHRyX2NudGwoCistICAgICAgICAoKmF0dHIp LT5hdHRyLCAKKy0gICAgICAgIGdsb2J1c19sX2lvX3RjcF9kcml2ZXIsIAorLSAgICAgICAgR0xP QlVTX1hJT19UQ1BfR0VUX0tFRVBBTElWRSwgCisrICAgICAgICAoKmF0dHIpLT5hdHRyLAorKyAg ICAgICAgZ2xvYnVzX2xfaW9fdGNwX2RyaXZlciwKKysgICAgICAgIEdMT0JVU19YSU9fVENQX0dF VF9LRUVQQUxJVkUsCisgICAgICAgICBrZWVwYWxpdmUpOworIH0KKyAKK0BAIC0xNjUxLDEyICsx NjUxLDEyIEBAIGdsb2J1c19pb19hdHRyX3NldF9zb2NrZXRfbGluZ2VyKAorICAgICBpbnQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5nZXJfdGltZSkKKyB7CisgICAgIEdsb2J1 c0lPTmFtZShnbG9idXNfaW9fYXR0cl9zZXRfc29ja2V0X2xpbmdlcik7CistICAgIAorKworICAg ICBHbG9idXNMSU9DaGVja0F0dHIoYXR0ciwgR0xPQlVTX0lfSU9fVENQX0FUVFIpOworIAorICAg ICByZXR1cm4gZ2xvYnVzX3hpb19hdHRyX2NudGwoCistICAgICAgICAoKmF0dHIpLT5hdHRyLCAK Ky0gICAgICAgIGdsb2J1c19sX2lvX3RjcF9kcml2ZXIsIAorKyAgICAgICAgKCphdHRyKS0+YXR0 ciwKKysgICAgICAgIGdsb2J1c19sX2lvX3RjcF9kcml2ZXIsCisgICAgICAgICBHTE9CVVNfWElP X1RDUF9TRVRfTElOR0VSLAorICAgICAgICAgbGluZ2VyLAorICAgICAgICAgbGluZ2VyX3RpbWUp OworQEAgLTE2NjksMTIgKzE2NjksMTIgQEAgZ2xvYnVzX2lvX2F0dHJfZ2V0X3NvY2tldF9saW5n ZXIoCisgICAgIGludCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmdlcl90aW1l KQorIHsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19pb19hdHRyX2dldF9zb2NrZXRfbGluZ2Vy KTsKKy0gICAgCisrCisgICAgIEdsb2J1c0xJT0NoZWNrQXR0cihhdHRyLCBHTE9CVVNfSV9JT19U Q1BfQVRUUik7CistICAgIAorKworICAgICByZXR1cm4gZ2xvYnVzX3hpb19hdHRyX2NudGwoCist ICAgICAgICAoKmF0dHIpLT5hdHRyLCAKKy0gICAgICAgIGdsb2J1c19sX2lvX3RjcF9kcml2ZXIs IAorKyAgICAgICAgKCphdHRyKS0+YXR0ciwKKysgICAgICAgIGdsb2J1c19sX2lvX3RjcF9kcml2 ZXIsCisgICAgICAgICBHTE9CVVNfWElPX1RDUF9HRVRfTElOR0VSLAorICAgICAgICAgbGluZ2Vy LAorICAgICAgICAgbGluZ2VyX3RpbWUpOworQEAgLTE2ODYsMTIgKzE2ODYsMTIgQEAgZ2xvYnVz X2lvX2F0dHJfc2V0X3NvY2tldF9vb2JpbmxpbmUoCisgICAgIGdsb2J1c19ib29sX3QgICAgICAg ICAgICAgICAgICAgICAgIG9vYmlubGluZSkKKyB7CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNf aW9fYXR0cl9zZXRfc29ja2V0X29vYmlubGluZSk7CistICAgIAorKworICAgICBHbG9idXNMSU9D aGVja0F0dHIoYXR0ciwgR0xPQlVTX0lfSU9fVENQX0FUVFIpOworLSAgICAKKysKKyAgICAgcmV0 dXJuIGdsb2J1c194aW9fYXR0cl9jbnRsKAorLSAgICAgICAgKCphdHRyKS0+YXR0ciwgCistICAg ICAgICBnbG9idXNfbF9pb190Y3BfZHJpdmVyLCAKKysgICAgICAgICgqYXR0ciktPmF0dHIsCisr ICAgICAgICBnbG9idXNfbF9pb190Y3BfZHJpdmVyLAorICAgICAgICAgR0xPQlVTX1hJT19UQ1Bf U0VUX09PQklOTElORSwKKyAgICAgICAgIG9vYmlubGluZSk7CisgfQorQEAgLTE3MDIsMTMgKzE3 MDIsMTMgQEAgZ2xvYnVzX2lvX2F0dHJfZ2V0X3NvY2tldF9vb2JpbmxpbmUoCisgICAgIGdsb2J1 c19ib29sX3QgKiAgICAgICAgICAgICAgICAgICAgIG9vYmlubGluZSkKKyB7CisgICAgIEdsb2J1 c0lPTmFtZShnbG9idXNfaW9fYXR0cl9nZXRfc29ja2V0X29vYmlubGluZSk7CistICAgIAorKwor ICAgICBHbG9idXNMSU9DaGVja0F0dHIoYXR0ciwgR0xPQlVTX0lfSU9fVENQX0FUVFIpOworLSAg ICAKKysKKyAgICAgcmV0dXJuIGdsb2J1c194aW9fYXR0cl9jbnRsKAorLSAgICAgICAgKCphdHRy KS0+YXR0ciwgCistICAgICAgICBnbG9idXNfbF9pb190Y3BfZHJpdmVyLCAKKy0gICAgICAgIEdM T0JVU19YSU9fVENQX0dFVF9PT0JJTkxJTkUsIAorKyAgICAgICAgKCphdHRyKS0+YXR0ciwKKysg ICAgICAgIGdsb2J1c19sX2lvX3RjcF9kcml2ZXIsCisrICAgICAgICBHTE9CVVNfWElPX1RDUF9H RVRfT09CSU5MSU5FLAorICAgICAgICAgb29iaW5saW5lKTsKKyB9CisgCitAQCAtMTcxOCwxMiAr MTcxOCwxMiBAQCBnbG9idXNfaW9fYXR0cl9zZXRfc29ja2V0X3NuZGJ1ZigKKyAgICAgaW50ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25kYnVmKQorIHsKKyAgICAgR2xvYnVzSU9O YW1lKGdsb2J1c19pb19hdHRyX3NldF9zb2NrZXRfc25kYnVmKTsKKy0gICAgCisrCisgICAgIEds b2J1c0xJT0NoZWNrQXR0cihhdHRyLCBHTE9CVVNfSV9JT19UQ1BfQVRUUik7CistICAgIAorKwor ICAgICByZXR1cm4gZ2xvYnVzX3hpb19hdHRyX2NudGwoCistICAgICAgICAoKmF0dHIpLT5hdHRy LCAKKy0gICAgICAgIGdsb2J1c19sX2lvX3RjcF9kcml2ZXIsIAorKyAgICAgICAgKCphdHRyKS0+ YXR0ciwKKysgICAgICAgIGdsb2J1c19sX2lvX3RjcF9kcml2ZXIsCisgICAgICAgICBHTE9CVVNf WElPX1RDUF9TRVRfU05EQlVGLAorICAgICAgICAgc25kYnVmKTsKKyB9CitAQCAtMTczNCwxMiAr MTczNCwxMiBAQCBnbG9idXNfaW9fYXR0cl9nZXRfc29ja2V0X3NuZGJ1ZigKKyAgICAgaW50ICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25kYnVmKQorIHsKKyAgICAgR2xvYnVzSU9O YW1lKGdsb2J1c19pb19hdHRyX2dldF9zb2NrZXRfc25kYnVmKTsKKy0gICAgCisrCisgICAgIEds b2J1c0xJT0NoZWNrQXR0cihhdHRyLCBHTE9CVVNfSV9JT19UQ1BfQVRUUik7CistICAgIAorKwor ICAgICByZXR1cm4gZ2xvYnVzX3hpb19hdHRyX2NudGwoCistICAgICAgICAoKmF0dHIpLT5hdHRy LCAKKy0gICAgICAgIGdsb2J1c19sX2lvX3RjcF9kcml2ZXIsIAorKyAgICAgICAgKCphdHRyKS0+ YXR0ciwKKysgICAgICAgIGdsb2J1c19sX2lvX3RjcF9kcml2ZXIsCisgICAgICAgICBHTE9CVVNf WElPX1RDUF9HRVRfU05EQlVGLAorICAgICAgICAgc25kYnVmKTsKKyB9CitAQCAtMTc1MCwxMiAr MTc1MCwxMiBAQCBnbG9idXNfaW9fYXR0cl9zZXRfc29ja2V0X3JjdmJ1ZigKKyAgICAgaW50ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmN2YnVmKQorIHsKKyAgICAgR2xvYnVzSU9O YW1lKGdsb2J1c19pb19hdHRyX3NldF9zb2NrZXRfcmN2YnVmKTsKKy0gICAgCisrCisgICAgIEds b2J1c0xJT0NoZWNrQXR0cihhdHRyLCBHTE9CVVNfSV9JT19UQ1BfQVRUUik7CistICAgIAorKwor ICAgICByZXR1cm4gZ2xvYnVzX3hpb19hdHRyX2NudGwoCistICAgICAgICAoKmF0dHIpLT5hdHRy LCAKKy0gICAgICAgIGdsb2J1c19sX2lvX3RjcF9kcml2ZXIsIAorKyAgICAgICAgKCphdHRyKS0+ YXR0ciwKKysgICAgICAgIGdsb2J1c19sX2lvX3RjcF9kcml2ZXIsCisgICAgICAgICBHTE9CVVNf WElPX1RDUF9TRVRfUkNWQlVGLAorICAgICAgICAgcmN2YnVmKTsKKyB9CitAQCAtMTc2NiwxMiAr MTc2NiwxMiBAQCBnbG9idXNfaW9fYXR0cl9nZXRfc29ja2V0X3JjdmJ1ZigKKyAgICAgaW50ICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmN2YnVmKQorIHsKKyAgICAgR2xvYnVzSU9O YW1lKGdsb2J1c19pb19hdHRyX2dldF9zb2NrZXRfcmN2YnVmKTsKKy0gICAgCisrCisgICAgIEds b2J1c0xJT0NoZWNrQXR0cihhdHRyLCBHTE9CVVNfSV9JT19UQ1BfQVRUUik7CistICAgIAorKwor ICAgICByZXR1cm4gZ2xvYnVzX3hpb19hdHRyX2NudGwoCistICAgICAgICAoKmF0dHIpLT5hdHRy LCAKKy0gICAgICAgIGdsb2J1c19sX2lvX3RjcF9kcml2ZXIsIAorKyAgICAgICAgKCphdHRyKS0+ YXR0ciwKKysgICAgICAgIGdsb2J1c19sX2lvX3RjcF9kcml2ZXIsCisgICAgICAgICBHTE9CVVNf WElPX1RDUF9HRVRfUkNWQlVGLAorICAgICAgICAgcmN2YnVmKTsKKyB9CitAQCAtMTc4NCw3ICsx Nzg0LDcgQEAgZ2xvYnVzX2lvX2hhbmRsZV9nZXRfc29ja2V0X2J1ZigKKyB7CisgICAgIGdsb2J1 c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlcyA9IEdMT0JVU19TVUNDRVNTOworICAg ICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX2hhbmRsZV9nZXRfc29ja2V0X2J1Zik7CistICAgIAor KworICAgICBHbG9idXNMSU9DaGVja0hhbmRsZShoYW5kbGUsIEdMT0JVU19JX0lPX1RDUF9IQU5E TEUpOworIAorICAgICBpZihyY3ZidWYgIT0gTlVMTCkKK0BAIC0xODM1LDEwICsxODM1LDEwIEBA IGdsb2J1c19sX2lvX2ZpbGVfb3BlbigKKyAgICAgZ2xvYnVzX2xfaW9fYXR0cl90ICogICAgICAg ICAgICAgICAgaWF0dHI7CisgICAgIGdsb2J1c19sX2lvX2hhbmRsZV90ICogICAgICAgICAgICAg IGloYW5kbGU7CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfbF9pb19maWxlX29wZW4pOworLSAg ICAKKysKKyAgICAgR2xvYnVzTElPQ2hlY2tOdWxsUGFyYW0oaGFuZGxlKTsKKyAgICAgKmhhbmRs ZSA9IEdMT0JVU19OVUxMOworLSAgICAKKysKKyAgICAgaWYoYXR0cikKKyAgICAgeworICAgICAg ICAgR2xvYnVzTElPQ2hlY2tBdHRyKGF0dHIsIEdMT0JVU19JX0lPX0ZJTEVfQVRUUik7CitAQCAt MTg1Myw3ICsxODUzLDcgQEAgZ2xvYnVzX2xfaW9fZmlsZV9vcGVuKAorICAgICAgICAgZ290byBl cnJvcl9hdHRyOworICAgICB9CisgICAgIGlhdHRyID0gKGdsb2J1c19sX2lvX2F0dHJfdCAqKSBt eWF0dHI7CistICAgIAorKworICAgICBpZihwYXRoKQorICAgICB7CisgICAgICAgICByZXN1bHQg PSBnbG9idXNfeGlvX2F0dHJfY250bCgKK0BAIC0xODY1LDcgKzE4NjUsNyBAQCBnbG9idXNfbF9p b19maWxlX29wZW4oCisgICAgICAgICB7CisgICAgICAgICAgICAgZ290byBlcnJvcl9jbnRsOwor ICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICByZXN1bHQgPSBnbG9idXNfeGlvX2F0 dHJfY250bCgKKyAgICAgICAgICAgICBpYXR0ci0+YXR0ciwKKyAgICAgICAgICAgICBnbG9idXNf bF9pb19maWxlX2RyaXZlciwKK0BAIC0xOTAyLDIxICsxOTAyLDIxIEBAIGdsb2J1c19sX2lvX2Zp bGVfb3BlbigKKyAgICAgICAgICAgICBnb3RvIGVycm9yX2NudGw7CisgICAgICAgICB9CisgICAg IH0KKy0gICAgCisrCisgICAgIHJlc3VsdCA9IGdsb2J1c19sX2lvX2hhbmRsZV9pbml0KAorICAg ICAgICAgJmloYW5kbGUsIGhhbmRsZSwgR0xPQlVTX0lfSU9fRklMRV9IQU5ETEUsIGlhdHRyLT5z cGFjZSk7CisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworICAgICAg ICAgZ290byBlcnJvcl9hbGxvYzsKKyAgICAgfQorLSAgICAKKysKKyAgICAgcmVzdWx0ID0gZ2xv YnVzX3hpb19oYW5kbGVfY3JlYXRlKAorICAgICAgICAgJmloYW5kbGUtPnhpb19oYW5kbGUsIGds b2J1c19sX2lvX2ZpbGVfc3RhY2spOworICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1Mp CisgICAgIHsKKyAgICAgICAgIGdvdG8gZXJyb3JfaGFuZGxlOworICAgICB9CistICAgIAorKwor ICAgICByZXN1bHQgPSBnbG9idXNfeGlvX29wZW4oCisgICAgICAgICBpaGFuZGxlLT54aW9faGFu ZGxlLAorICAgICAgICAgcGF0aCwKK0BAIC0xOTI1LDEwICsxOTI1LDEwIEBAIGdsb2J1c19sX2lv X2ZpbGVfb3BlbigKKyAgICAgeworICAgICAgICAgZ290byBlcnJvcl9vcGVuOworICAgICB9Cist ICAgIAorKworICAgICAqaGFuZGxlID0gaWhhbmRsZTsKKyAgICAgZ2xvYnVzX2lvX2ZpbGVhdHRy X2Rlc3Ryb3koJm15YXR0cik7CistICAgIAorKworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7 CisgCisgZXJyb3Jfb3BlbjoKK0BAIC0xOTUxLDkgKzE5NTEsOSBAQCBnbG9idXNfaW9fZmlsZV9v cGVuKAorICAgICBnbG9idXNfaW9faGFuZGxlX3QgKiAgICAgICAgICAgICAgICBoYW5kbGUpCisg eworICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX2ZpbGVfb3Blbik7CistICAgIAorKworICAg ICBHbG9idXNMSU9DaGVja051bGxQYXJhbShwYXRoKTsKKy0gICAgCisrCisgICAgIHJldHVybiBn bG9idXNfbF9pb19maWxlX29wZW4oaGFuZGxlLCBhdHRyLCBwYXRoLCBmbGFncywgbW9kZSwgLTEs IDApOworIH0KKyAKK0BAIC0xOTY0LDkgKzE5NjQsOSBAQCBnbG9idXNfaW9fZmlsZV9zZWVrKAor ICAgICBnbG9idXNfaW9fd2hlbmNlX3QgICAgICAgICAgICAgICAgICB3aGVuY2UpCisgeworICAg ICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX2ZpbGVfc2Vlayk7CistICAgIAorKworICAgICBHbG9i dXNMSU9DaGVja0hhbmRsZShoYW5kbGUsIEdMT0JVU19JX0lPX0ZJTEVfSEFORExFKTsKKy0gICAg CisrCisgICAgIHJldHVybiBnbG9idXNfeGlvX2hhbmRsZV9jbnRsKAorICAgICAgICAgKCpoYW5k bGUpLT54aW9faGFuZGxlLAorICAgICAgICAgZ2xvYnVzX2xfaW9fZmlsZV9kcml2ZXIsCitAQCAt MTk4Miw3ICsxOTgyLDcgQEAgZ2xvYnVzX2lvX2ZpbGVfcG9zaXhfY29udmVydCgKKyAgICAgZ2xv YnVzX2lvX2hhbmRsZV90ICogICAgICAgICAgICAgICAgaGFuZGxlKQorIHsKKyAgICAgR2xvYnVz SU9OYW1lKGdsb2J1c19pb19maWxlX3Bvc2l4X2NvbnZlcnQpOworLSAgICAKKysKKyAgICAgcmV0 dXJuIGdsb2J1c19sX2lvX2ZpbGVfb3BlbigKKyAgICAgICAgIGhhbmRsZSwKKyAgICAgICAgIGF0 dHIsCitAQCAtMjAwMSw3ICsyMDAxLDcgQEAgZ2xvYnVzX2lvX2ZpbGVfd2luZG93c19jb252ZXJ0 KAorICAgICBnbG9idXNfaW9faGFuZGxlX3QgKiAgICAgICAgICAgICAgICBoYW5kbGUpCisgewor ICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX2ZpbGVfcG9zaXhfY29udmVydCk7CistICAgIAor KworICAgICByZXR1cm4gZ2xvYnVzX2xfaW9fZmlsZV9vcGVuKAorICAgICAgICAgaGFuZGxlLAor ICAgICAgICAgYXR0ciwKK0BAIC0yMDY0LDIxICsyMDY0LDIxIEBAIGdsb2J1c19sX2lvX3RjcF9y ZWdpc3Rlcl9jb25uZWN0KAorICAgICBnbG9idXNfeGlvX3N0YWNrX3QgICAgICAgICAgICAgICAg ICBzdGFjazsKKyAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3MgPSBH TE9CVVNfTlVMTDsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19sX2lvX3RjcF9yZWdpc3Rlcl9j b25uZWN0KTsKKy0gICAgCisrCisgICAgIEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKGhhbmRsZSk7 CisgICAgIEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKGNhbGxiYWNrKTsKKy0gICAgCisrCisgICAg IGlmKGF0dHIpCisgICAgIHsKKyAgICAgICAgIEdsb2J1c0xJT0NoZWNrQXR0cihhdHRyLCBHTE9C VVNfSV9JT19UQ1BfQVRUUik7CisgICAgIH0KKy0gICAgCisrCisgICAgIHJlc3VsdCA9IEdsb2J1 c0xJT01hbGxvYyhib3VuY2VfaW5mbywgZ2xvYnVzX2xfaW9fYm91bmNlX3QpOworICAgICBpZihy ZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGdvdG8gZXJyb3JfYm91 bmNlOworICAgICB9CistICAgIAorKworICAgICByZXN1bHQgPSBnbG9idXNfbF9pb19oYW5kbGVf aW5pdCgKKyAgICAgICAgICZpaGFuZGxlLCBoYW5kbGUsIEdMT0JVU19JX0lPX1RDUF9IQU5ETEUs CisgICAgICAgICBhdHRyID8gKCphdHRyKS0+c3BhY2UgOiBHTE9CVVNfQ0FMTEJBQ0tfR0xPQkFM X1NQQUNFKTsKK0BAIC0yMTE2LDcgKzIxMTYsNyBAQCBnbG9idXNfbF9pb190Y3BfcmVnaXN0ZXJf Y29ubmVjdCgKKyAgICAgICAgICAgICBnb3RvIGVycm9yX2F0dHI7CisgICAgICAgICB9CisgICAg IH0KKy0gICAgCisrCisgICAgIGlmKCFpaGFuZGxlLT5hdHRyLT5hbGxvd19pcHY2KQorICAgICB7 CisgICAgICAgICByZXN1bHQgPSBnbG9idXNfeGlvX2F0dHJfY250bCgKK0BAIC0yMTI5LDcgKzIx MjksNyBAQCBnbG9idXNfbF9pb190Y3BfcmVnaXN0ZXJfY29ubmVjdCgKKyAgICAgICAgICAgICBn b3RvIGVycm9yX2F0dHI7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCisrCisgICAgIHJlc3Vs dCA9IGdsb2J1c194aW9fYXR0cl9jbnRsKAorICAgICAgICAgaWhhbmRsZS0+YXR0ci0+YXR0ciwK KyAgICAgICAgIEdMT0JVU19OVUxMLAorQEAgLTIxNDEsNyArMjE0MSw3IEBAIGdsb2J1c19sX2lv X3RjcF9yZWdpc3Rlcl9jb25uZWN0KAorICAgICB7CisgICAgICAgICBnb3RvIGVycm9yX2F0dHI7 CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKGhvc3QpCisgICAgIHsKKyAgICAgICAgIGlmKHN0 cmNocihob3N0LCAnOicpKQorQEAgLTIxNjYsNyArMjE2Niw3IEBAIGdsb2J1c19sX2lvX3RjcF9y ZWdpc3Rlcl9jb25uZWN0KAorICAgICAgICAgICAgIGdvdG8gZXJyb3JfYXR0cjsKKyAgICAgICAg IH0KKyAgICAgfQorLSAgICAKKysKKyAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19oYW5kbGVfY3Jl YXRlKCZpaGFuZGxlLT54aW9faGFuZGxlLCBzdGFjayk7CisgICAgIGlmKHJlc3VsdCAhPSBHTE9C VVNfU1VDQ0VTUykKKyAgICAgeworQEAgLTIxNzksNyArMjE3OSw3IEBAIGdsb2J1c19sX2lvX3Rj cF9yZWdpc3Rlcl9jb25uZWN0KAorICAgICBib3VuY2VfaW5mby0+YmxvY2tpbmcgPSBibG9ja2lu ZzsKKyAgICAgYm91bmNlX2luZm8tPmNhbmNlbF9pbmZvID0gR0xPQlVTX05VTEw7CisgICAgICpo YW5kbGUgPSBpaGFuZGxlOworLSAgICAKKysKKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJmloYW5k bGUtPnBlbmRpbmdfbG9jayk7CisgICAgIHsKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c194aW9f cmVnaXN0ZXJfb3BlbigKK0BAIC0yMTkzLDExICsyMTkzLDExIEBAIGdsb2J1c19sX2lvX3RjcF9y ZWdpc3Rlcl9jb25uZWN0KAorICAgICAgICAgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmloYW5k bGUtPnBlbmRpbmdfbG9jayk7CisgICAgICAgICAgICAgZ290byBlcnJvcl9vcGVuOworICAgICAg ICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBnbG9idXNfbF9pb19jYW5jZWxfaW5zZXJ0KGJv dW5jZV9pbmZvKTsKKyAgICAgfQorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZpaGFuZGxlLT5w ZW5kaW5nX2xvY2spOworLSAgICAKKysKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworIAor IGVycm9yX29wZW46CitAQCAtMjIyMiw5ICsyMjIyLDkgQEAgZ2xvYnVzX2lvX3RjcF9yZWdpc3Rl cl9jb25uZWN0KAorICAgICBnbG9idXNfaW9faGFuZGxlX3QgKiAgICAgICAgICAgICAgICBoYW5k bGUpCisgeworICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX3RjcF9yZWdpc3Rlcl9jb25uZWN0 KTsKKy0gICAgCisrCisgICAgIEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKGhvc3QpOworLSAgICAK KysKKyAgICAgcmV0dXJuIGdsb2J1c19sX2lvX3RjcF9yZWdpc3Rlcl9jb25uZWN0KAorICAgICAg ICAgaG9zdCwKKyAgICAgICAgIHBvcnQsCitAQCAtMjI0OCwxMSArMjI0OCwxMSBAQCBnbG9idXNf bF9pb190Y3BfY29ubmVjdCgKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAg ICAgcmVzdWx0OworICAgICBnbG9idXNfbF9pb19tb25pdG9yX3QgICAgICAgICAgICAgICBtb25p dG9yOworICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2xfaW9fdGNwX2Nvbm5lY3QpOworLSAgICAK KysKKyAgICAgbW9uaXRvci5kb25lID0gR0xPQlVTX0ZBTFNFOworICAgICBnbG9idXNfbXV0ZXhf aW5pdCgmbW9uaXRvci5sb2NrLCBHTE9CVVNfTlVMTCk7CisgICAgIGdsb2J1c19jb25kX2luaXQo Jm1vbml0b3IuY29uZCwgR0xPQlVTX05VTEwpOworLSAgICAKKysKKyAgICAgcmVzdWx0ID0gZ2xv YnVzX2xfaW9fdGNwX3JlZ2lzdGVyX2Nvbm5lY3QoCisgICAgICAgICBob3N0LAorICAgICAgICAg cG9ydCwKK0BAIC0yMjY3LDcgKzIyNjcsNyBAQCBnbG9idXNfbF9pb190Y3BfY29ubmVjdCgKKyAg ICAgICAgIG1vbml0b3IuZG9uZSA9IEdMT0JVU19UUlVFOworICAgICAgICAgbW9uaXRvci5lcnJv ciA9IGdsb2J1c19lcnJvcl9nZXQocmVzdWx0KTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgZ2xv YnVzX211dGV4X2xvY2soJm1vbml0b3IubG9jayk7CisgICAgIHsKKyAgICAgICAgIHdoaWxlKCFt b25pdG9yLmRvbmUpCitAQCAtMjI3NiwxOCArMjI3NiwxOCBAQCBnbG9idXNfbF9pb190Y3BfY29u bmVjdCgKKyAgICAgICAgIH0KKyAgICAgfQorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZtb25p dG9yLmxvY2spOworLSAgICAKKysKKyAgICAgZ2xvYnVzX211dGV4X2Rlc3Ryb3koJm1vbml0b3Iu bG9jayk7CisgICAgIGdsb2J1c19jb25kX2Rlc3Ryb3koJm1vbml0b3IuY29uZCk7CistICAgIAor KworICAgICBpZihtb25pdG9yLmVycm9yICE9IEdMT0JVU19OVUxMKQorICAgICB7CisgICAgICAg ICByZXN1bHQgPSBnbG9idXNfZXJyb3JfcHV0KG1vbml0b3IuZXJyb3IpOworICAgICAgICAgZ290 byBlcnJvcl9yZWdpc3RlcjsKKyAgICAgfQorLSAgICAKKysKKyAgICAgcmV0dXJuIEdMT0JVU19T VUNDRVNTOworLSAgICAKKysKKyBlcnJvcl9yZWdpc3RlcjoKKyAgICAgKmhhbmRsZSA9IEdMT0JV U19OVUxMOworICAgICByZXR1cm4gcmVzdWx0OworQEAgLTIzMDEsOSArMjMwMSw5IEBAIGdsb2J1 c19pb190Y3BfY29ubmVjdCgKKyAgICAgZ2xvYnVzX2lvX2hhbmRsZV90ICogICAgICAgICAgICAg ICAgaGFuZGxlKQorIHsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19pb190Y3BfY29ubmVjdCk7 CistICAgIAorKworICAgICBHbG9idXNMSU9DaGVja051bGxQYXJhbShob3N0KTsKKy0gICAgCisr CisgICAgIHJldHVybiBnbG9idXNfbF9pb190Y3BfY29ubmVjdChob3N0LCBwb3J0LCAtMSwgYXR0 ciwgaGFuZGxlKTsKKyB9CisgCitAQCAtMjMyMiw5ICsyMzIyLDkgQEAgZ2xvYnVzX2xfaW9fdGNw X2NyZWF0ZV9saXN0ZW5lcigKKyAgICAgZ2xvYnVzX2xfaW9faGFuZGxlX3QgKiAgICAgICAgICAg ICAgaWhhbmRsZTsKKyAgICAgZ2xvYnVzX3hpb19zdGFja190ICAgICAgICAgICAgICAgICAgc3Rh Y2s7CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfbF9pb190Y3BfY3JlYXRlX2xpc3RlbmVyKTsK Ky0gICAgCisrCisgICAgIEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKGhhbmRsZSk7CistICAgIAor KworICAgICBpZihhdHRyKQorICAgICB7CisgICAgICAgICBHbG9idXNMSU9DaGVja0F0dHIoYXR0 ciwgR0xPQlVTX0lfSU9fVENQX0FUVFIpOworQEAgLTIzMzQsMTIgKzIzMzQsMTIgQEAgZ2xvYnVz X2xfaW9fdGNwX2NyZWF0ZV9saXN0ZW5lcigKKyAgICAgeworICAgICAgICAgcmVzdWx0ID0gZ2xv YnVzX2lvX3RjcGF0dHJfaW5pdCgmbXlhdHRyKTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaWYo cmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICB7CisgICAgICAgICBnb3RvIGVycm9yX2F0 dHI7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlhdHRyID0gKGdsb2J1c19sX2lvX2F0dHJfdCAq KSBteWF0dHI7CisgICAgIGlmKHBvcnQpCisgICAgIHsKK0BAIC0yMzUyLDcgKzIzNTIsNyBAQCBn bG9idXNfbF9pb190Y3BfY3JlYXRlX2xpc3RlbmVyKAorICAgICAgICAgeworICAgICAgICAgICAg IGdvdG8gZXJyb3JfY250bDsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgcmVz dWx0ID0gZ2xvYnVzX3hpb19hdHRyX2NudGwoCisgICAgICAgICAgICAgaWF0dHItPmF0dHIsCisg ICAgICAgICAgICAgZ2xvYnVzX2xfaW9fdGNwX2RyaXZlciwKK0BAIC0yMzcxLDcgKzIzNzEsNyBA QCBnbG9idXNfbF9pb190Y3BfY3JlYXRlX2xpc3RlbmVyKAorICAgICB7CisgICAgICAgICBnb3Rv IGVycm9yX2NudGw7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKCFpYXR0ci0+YWxsb3dfaXB2 NikKKyAgICAgeworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19hdHRyX2NudGwoCitAQCAt MjM4NCw3ICsyMzg0LDcgQEAgZ2xvYnVzX2xfaW9fdGNwX2NyZWF0ZV9saXN0ZW5lcigKKyAgICAg ICAgICAgICBnb3RvIGVycm9yX2NudGw7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCisrCisg ICAgIHJlc3VsdCA9IGdsb2J1c19sX2lvX2hhbmRsZV9pbml0KAorICAgICAgICAgJmloYW5kbGUs IGhhbmRsZSwgR0xPQlVTX0lfSU9fVENQX0hBTkRMRSwgaWF0dHItPnNwYWNlKTsKKyAgICAgaWYo cmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorQEAgLTIzOTUsNyArMjM5NSw3IEBAIGdsb2J1c19s X2lvX3RjcF9jcmVhdGVfbGlzdGVuZXIoCisgICAgIGlmKGlhdHRyLT5zdGFjayAhPSBOVUxMKQor ICAgICB7CisgICAgICAgICBzdGFjayA9IGlhdHRyLT5zdGFjazsKKy0gICAgfSAKKysgICAgfQor ICAgICBlbHNlIGlmKGlhdHRyLT5hdXRoZW50aWNhdGlvbl9tb2RlID09CisgICAgICAgICBHTE9C VVNfSU9fU0VDVVJFX0FVVEhFTlRJQ0FUSU9OX01PREVfTk9ORSkKKyAgICAgeworQEAgLTI0MDUs NDggKzI0MDUsNDggQEAgZ2xvYnVzX2xfaW9fdGNwX2NyZWF0ZV9saXN0ZW5lcigKKyAgICAgewor ICAgICAgICAgc3RhY2sgPSBnbG9idXNfbF9pb19nc2lfc3RhY2s7CisgICAgIH0KKy0gICAgCisr CisgICAgIHJlc3VsdCA9IGdsb2J1c194aW9fc2VydmVyX2NyZWF0ZSgKKyAgICAgICAgICZpaGFu ZGxlLT54aW9fc2VydmVyLCBpYXR0ci0+YXR0ciwgc3RhY2spOworICAgICBpZihyZXN1bHQgIT0g R0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGdvdG8gZXJyb3Jfc2VydmVyOworICAg ICB9CistICAgIAorKworICAgICBpZihwb3J0ICYmICEqcG9ydCkKKyAgICAgeworICAgICAgICAg Y2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWN0X3N0cmluZzsKKyAgICAgICAg IGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgczsKKy0gICAgICAgIAorKworICAgICAg ICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19zZXJ2ZXJfZ2V0X2NvbnRhY3Rfc3RyaW5nKAorICAgICAg ICAgICAgIGloYW5kbGUtPnhpb19zZXJ2ZXIsICZjb250YWN0X3N0cmluZyk7CisgICAgICAgICBp ZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICB7CisgICAgICAgICAgICAgZ290 byBlcnJvcl9zZXJ2ZXJfY250bDsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAg cyA9IHN0cnJjaHIoY29udGFjdF9zdHJpbmcsICc6Jyk7CisgICAgICAgICBnbG9idXNfYXNzZXJ0 KHMpOworICAgICAgICAgKnBvcnQgPSBhdG9pKHMgKyAxKTsKKy0gICAgICAgIAorKworICAgICAg ICAgZ2xvYnVzX2ZyZWUoY29udGFjdF9zdHJpbmcpOworICAgICB9CistICAgIAorKworICAgICBp aGFuZGxlLT5hdHRyID0gaWF0dHI7CisgICAgICpoYW5kbGUgPSBpaGFuZGxlOworLSAgICAKKysK KyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworIAorIGVycm9yX3NlcnZlcl9jbnRsOgorICAg ICBnbG9idXNfeGlvX3NlcnZlcl9jbG9zZShpaGFuZGxlLT54aW9fc2VydmVyKTsKKy0gICAgCisr CisgZXJyb3Jfc2VydmVyOgorICAgICBnbG9idXNfbF9pb19oYW5kbGVfZGVzdHJveShpaGFuZGxl KTsKKy0gICAgCisrCisgZXJyb3JfYWxsb2M6CisgZXJyb3JfY250bDoKKyAgICAgZ2xvYnVzX2lv X3RjcGF0dHJfZGVzdHJveSgmbXlhdHRyKTsKKy0gICAgCisrCisgZXJyb3JfYXR0cjoKKyAgICAg KmhhbmRsZSA9IEdMT0JVU19OVUxMOworICAgICByZXR1cm4gcmVzdWx0OworQEAgLTI0NjAsOSAr MjQ2MCw5IEBAIGdsb2J1c19pb190Y3BfY3JlYXRlX2xpc3RlbmVyKAorICAgICBnbG9idXNfaW9f aGFuZGxlX3QgKiAgICAgICAgICAgICAgICBoYW5kbGUpCisgeworICAgICBHbG9idXNJT05hbWUo Z2xvYnVzX2lvX3RjcF9jcmVhdGVfbGlzdGVuZXIpOworLSAgICAKKysKKyAgICAgR2xvYnVzTElP Q2hlY2tOdWxsUGFyYW0ocG9ydCk7CistICAgIAorKworICAgICByZXR1cm4gZ2xvYnVzX2xfaW9f dGNwX2NyZWF0ZV9saXN0ZW5lcigKKyAgICAgICAgIHBvcnQsIGJhY2tsb2csIC0xLCBhdHRyLCBo YW5kbGUpOworIH0KK0BAIC0yNDc5LDEwICsyNDc5LDEwIEBAIGdsb2J1c19sX2lvX3RjcF9yZWdp c3Rlcl9saXN0ZW4oCisgICAgIGdsb2J1c19sX2lvX2hhbmRsZV90ICogICAgICAgICAgICAgIGlo YW5kbGU7CisgICAgIGdsb2J1c19sX2lvX2JvdW5jZV90ICogICAgICAgICAgICAgIGJvdW5jZV9p bmZvOworICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2xfaW9fdGNwX3JlZ2lzdGVyX2xpc3Rlbik7 CistICAgIAorKworICAgICBHbG9idXNMSU9DaGVja051bGxQYXJhbShjYWxsYmFjayk7CisgICAg IEdsb2J1c0xJT0NoZWNrSGFuZGxlKGhhbmRsZSwgR0xPQlVTX0lfSU9fVENQX0hBTkRMRSk7Cist ICAgIAorKworICAgICBpaGFuZGxlID0gKmhhbmRsZTsKKyAgICAgaWYoaWhhbmRsZS0+YWNjZXB0 ZWRfaGFuZGxlKQorICAgICB7CitAQCAtMjQ5MiwyMiArMjQ5MiwyMiBAQCBnbG9idXNfbF9pb190 Y3BfcmVnaXN0ZXJfbGlzdGVuKAorICAgICAgICAgICAgICAgICBHTE9CVVNfSU9fTU9EVUxFLAor ICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKKyAgICAgICAgICAgICAgICAgaWhhbmRsZS0+ aW9faGFuZGxlKSk7CistICAgICAgICAKKysKKyAgICAgICAgIGdvdG8gZXJyb3JfcmVnaXN0ZXJl ZDsKKyAgICAgfQorLSAgICAKKysKKyAgICAgcmVzdWx0ID0gR2xvYnVzTElPTWFsbG9jKGJvdW5j ZV9pbmZvLCBnbG9idXNfbF9pb19ib3VuY2VfdCk7CisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNf U1VDQ0VTUykKKyAgICAgeworICAgICAgICAgZ290byBlcnJvcl9ib3VuY2U7CisgICAgIH0KKy0g ICAgCisrCisgICAgIGJvdW5jZV9pbmZvLT5oYW5kbGUgPSBpaGFuZGxlOworICAgICBib3VuY2Vf aW5mby0+Y2Iubm9uX2lvID0gY2FsbGJhY2s7CisgICAgIGJvdW5jZV9pbmZvLT51c2VyX2FyZyA9 IGNhbGxiYWNrX2FyZzsKKyAgICAgYm91bmNlX2luZm8tPmJsb2NraW5nID0gYmxvY2tpbmc7Cisg ICAgIGJvdW5jZV9pbmZvLT5jYW5jZWxfaW5mbyA9IEdMT0JVU19OVUxMOworLSAgICAKKysKKyAg ICAgZ2xvYnVzX211dGV4X2xvY2soJmloYW5kbGUtPnBlbmRpbmdfbG9jayk7CisgICAgIHsKKyAg ICAgICAgIHJlc3VsdCA9IGdsb2J1c194aW9fc2VydmVyX3JlZ2lzdGVyX2FjY2VwdCgKK0BAIC0y NTE5LDE2ICsyNTE5LDE2IEBAIGdsb2J1c19sX2lvX3RjcF9yZWdpc3Rlcl9saXN0ZW4oCisgICAg ICAgICAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmaWhhbmRsZS0+cGVuZGluZ19sb2NrKTsKKyAg ICAgICAgICAgICBnb3RvIGVycm9yX3JlZ2lzdGVyOworICAgICAgICAgfQorLSAgICAgICAgCisr CisgICAgICAgICBnbG9idXNfbF9pb19jYW5jZWxfaW5zZXJ0KGJvdW5jZV9pbmZvKTsKKyAgICAg fQorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZpaGFuZGxlLT5wZW5kaW5nX2xvY2spOworLSAg ICAKKysKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworIAorIGVycm9yX3JlZ2lzdGVyOgor ICAgICBnbG9idXNfZnJlZShib3VuY2VfaW5mbyk7CistICAgIAorKworIGVycm9yX2JvdW5jZToK KyBlcnJvcl9yZWdpc3RlcmVkOgorICAgICByZXR1cm4gcmVzdWx0OworQEAgLTI1NTEsMTEgKzI1 NTEsMTEgQEAgZ2xvYnVzX2lvX3RjcF9saXN0ZW4oCisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAg ICAgICAgICAgICAgICAgIHJlc3VsdDsKKyAgICAgZ2xvYnVzX2xfaW9fbW9uaXRvcl90ICAgICAg ICAgICAgICAgbW9uaXRvcjsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19pb190Y3BfbGlzdGVu KTsKKy0gICAgCisrCisgICAgIG1vbml0b3IuZG9uZSA9IEdMT0JVU19GQUxTRTsKKyAgICAgZ2xv YnVzX211dGV4X2luaXQoJm1vbml0b3IubG9jaywgR0xPQlVTX05VTEwpOworICAgICBnbG9idXNf Y29uZF9pbml0KCZtb25pdG9yLmNvbmQsIEdMT0JVU19OVUxMKTsKKy0gICAgCisrCisgICAgIHJl c3VsdCA9IGdsb2J1c19sX2lvX3RjcF9yZWdpc3Rlcl9saXN0ZW4oCisgICAgICAgICBoYW5kbGUs IGdsb2J1c19sX2lvX2Jsb2NraW5nX2NiLCAmbW9uaXRvciwgR0xPQlVTX1RSVUUpOworICAgICBp ZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCitAQCAtMjU2Myw3ICsyNTYzLDcgQEAgZ2xvYnVz X2lvX3RjcF9saXN0ZW4oCisgICAgICAgICBtb25pdG9yLmRvbmUgPSBHTE9CVVNfVFJVRTsKKyAg ICAgICAgIG1vbml0b3IuZXJyb3IgPSBnbG9idXNfZXJyb3JfZ2V0KHJlc3VsdCk7CisgICAgIH0K Ky0gICAgCisrCisgICAgIGdsb2J1c19tdXRleF9sb2NrKCZtb25pdG9yLmxvY2spOworICAgICB7 CisgICAgICAgICB3aGlsZSghbW9uaXRvci5kb25lKQorQEAgLTI1NzIsMTggKzI1NzIsMTggQEAg Z2xvYnVzX2lvX3RjcF9saXN0ZW4oCisgICAgICAgICB9CisgICAgIH0KKyAgICAgZ2xvYnVzX211 dGV4X3VubG9jaygmbW9uaXRvci5sb2NrKTsKKy0gICAgCisrCisgICAgIGdsb2J1c19tdXRleF9k ZXN0cm95KCZtb25pdG9yLmxvY2spOworICAgICBnbG9idXNfY29uZF9kZXN0cm95KCZtb25pdG9y LmNvbmQpOworLSAgICAKKysKKyAgICAgaWYobW9uaXRvci5lcnJvciAhPSBHTE9CVVNfTlVMTCkK KyAgICAgeworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2Vycm9yX3B1dChtb25pdG9yLmVycm9y KTsKKyAgICAgICAgIGdvdG8gZXJyb3JfcmVnaXN0ZXI7CisgICAgIH0KKy0gICAgCisrCisgICAg IHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKy0gICAgCisrCisgZXJyb3JfcmVnaXN0ZXI6CisgICAg IHJldHVybiByZXN1bHQ7CisgfQorQEAgLTI2MDksMTEgKzI2MDksMTEgQEAgZ2xvYnVzX2xfaW9f dGNwX3JlZ2lzdGVyX2FjY2VwdCgKKyAgICAgZ2xvYnVzX2xfaW9fYm91bmNlX3QgKiAgICAgICAg ICAgICAgYm91bmNlX2luZm87CisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRhY3Rfc3RyaW5nID0gR0xPQlVTX05VTEw7CisgICAgIEdsb2J1c0lPTmFtZShnbG9i dXNfaW9fdGNwX3JlZ2lzdGVyX2FjY2VwdCk7CistICAgIAorKworICAgICBHbG9idXNMSU9DaGVj a051bGxQYXJhbShuZXdfaGFuZGxlKTsKKyAgICAgR2xvYnVzTElPQ2hlY2tOdWxsUGFyYW0oY2Fs bGJhY2spOworICAgICBHbG9idXNMSU9DaGVja0hhbmRsZShsaXN0ZW5lcl9oYW5kbGUsIEdMT0JV U19JX0lPX1RDUF9IQU5ETEUpOworLSAgICAKKysKKyAgICAgaWxpc3RlbmVyX2hhbmRsZSA9ICps aXN0ZW5lcl9oYW5kbGU7CisgICAgIGlmKCFpbGlzdGVuZXJfaGFuZGxlLT5hY2NlcHRlZF9oYW5k bGUpCisgICAgIHsKK0BAIC0yNjI0LDE1ICsyNjI0LDE1IEBAIGdsb2J1c19sX2lvX3RjcF9yZWdp c3Rlcl9hY2NlcHQoCisgICAgICAgICAgICAgICAgICJsaXN0ZW5lcl9oYW5kbGUiLAorICAgICAg ICAgICAgICAgICAxLAorICAgICAgICAgICAgICAgICAoY2hhciAqKSBfaW9fbmFtZSkpOworLSAg ICAgICAgICAgICAgICAKKysKKyAgICAgICAgIGdvdG8gZXJyb3JfaGFuZGxlOworICAgICB9Cist ICAgIAorKworICAgICBpZihhdHRyKQorICAgICB7CisgICAgICAgICBHbG9idXNMSU9DaGVja0F0 dHIoYXR0ciwgR0xPQlVTX0lfSU9fVENQX0FUVFIpOworICAgICB9CistICAgIAorKworICAgICBy ZXN1bHQgPSBnbG9idXNfbF9pb19oYW5kbGVfaW5pdCgKKyAgICAgICAgICZpaGFuZGxlLCBuZXdf aGFuZGxlLCBHTE9CVVNfSV9JT19UQ1BfSEFORExFLAorICAgICAgICAgYXR0ciA/ICgqYXR0cikt PnNwYWNlIDogaWxpc3RlbmVyX2hhbmRsZS0+c3BhY2UpOworQEAgLTI2NDAsMjAgKzI2NDAsMjAg QEAgZ2xvYnVzX2xfaW9fdGNwX3JlZ2lzdGVyX2FjY2VwdCgKKyAgICAgeworICAgICAgICAgZ290 byBlcnJvcl9oYW5kbGU7CisgICAgIH0KKy0gICAgCisrCisgICAgIHJlc3VsdCA9IEdsb2J1c0xJ T01hbGxvYyhib3VuY2VfaW5mbywgZ2xvYnVzX2xfaW9fYm91bmNlX3QpOworICAgICBpZihyZXN1 bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGdvdG8gZXJyb3JfYm91bmNl OworICAgICB9CistICAgIAorKworICAgICBib3VuY2VfaW5mby0+aGFuZGxlID0gaWhhbmRsZTsK KyAgICAgYm91bmNlX2luZm8tPmNiLm5vbl9pbyA9IGNhbGxiYWNrOworICAgICBib3VuY2VfaW5m by0+dXNlcl9hcmcgPSBjYWxsYmFja19hcmc7CisgICAgIGJvdW5jZV9pbmZvLT5ibG9ja2luZyA9 IGJsb2NraW5nOworICAgICBib3VuY2VfaW5mby0+Y2FuY2VsX2luZm8gPSBHTE9CVVNfTlVMTDsK KyAgICAgKm5ld19oYW5kbGUgPSBpaGFuZGxlOworLSAgICAKKysKKyAgICAgaWYoYXR0cikKKyAg ICAgeworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2xfaW9faWF0dHJfY29weSgmaWhhbmRsZS0+ YXR0ciwgYXR0cik7CitAQCAtMjY2MSwxMiArMjY2MSwxMiBAQCBnbG9idXNfbF9pb190Y3BfcmVn aXN0ZXJfYWNjZXB0KAorICAgICAgICAgeworICAgICAgICAgICAgIGdvdG8gZXJyb3JfZ3NpOwor ICAgICAgICAgfQorLSAgICAgICAgCistICAgICAgICBpZigoaWxpc3RlbmVyX2hhbmRsZS0+YXR0 ci0+YXV0aGVudGljYXRpb25fbW9kZSA9PSAKKysKKysgICAgICAgIGlmKChpbGlzdGVuZXJfaGFu ZGxlLT5hdHRyLT5hdXRoZW50aWNhdGlvbl9tb2RlID09CisgICAgICAgICAgICAgR0xPQlVTX0lP X1NFQ1VSRV9BVVRIRU5USUNBVElPTl9NT0RFX05PTkUgfHwKKy0gICAgICAgICAgICBpaGFuZGxl LT5hdHRyLT5hdXRoZW50aWNhdGlvbl9tb2RlID09IAorKyAgICAgICAgICAgIGloYW5kbGUtPmF0 dHItPmF1dGhlbnRpY2F0aW9uX21vZGUgPT0KKyAgICAgICAgICAgICAgICAgR0xPQlVTX0lPX1NF Q1VSRV9BVVRIRU5USUNBVElPTl9NT0RFX05PTkUpICYmCistICAgICAgICAgICAgaWxpc3RlbmVy X2hhbmRsZS0+YXR0ci0+YXV0aGVudGljYXRpb25fbW9kZSAhPSAKKysgICAgICAgICAgICBpbGlz dGVuZXJfaGFuZGxlLT5hdHRyLT5hdXRoZW50aWNhdGlvbl9tb2RlICE9CisgICAgICAgICAgICAg ICAgIGloYW5kbGUtPmF0dHItPmF1dGhlbnRpY2F0aW9uX21vZGUpCisgICAgICAgICB7CisgICAg ICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2Vycm9yX3B1dCgKK0BAIC0yNjkzLDcgKzI2OTMsNyBA QCBnbG9idXNfbF9pb190Y3BfcmVnaXN0ZXJfYWNjZXB0KAorICAgICAgICAgICAgIGdvdG8gZXJy b3JfZ3NpOworICAgICAgICAgfQorICAgICB9CistICAgIAorKworICAgICBpaGFuZGxlLT54aW9f aGFuZGxlID0gaWxpc3RlbmVyX2hhbmRsZS0+YWNjZXB0ZWRfaGFuZGxlOworICAgICBpbGlzdGVu ZXJfaGFuZGxlLT5hY2NlcHRlZF9oYW5kbGUgPSBHTE9CVVNfTlVMTDsKKyAKK0BAIC0yNzA4LDcg KzI3MDgsNyBAQCBnbG9idXNfbF9pb190Y3BfcmVnaXN0ZXJfYWNjZXB0KAorICAgICB7CisgICAg ICAgICBnb3RvIGVycm9yX2dzaTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgZ2xvYnVzX211dGV4 X2xvY2soJmloYW5kbGUtPnBlbmRpbmdfbG9jayk7CisgICAgIHsKKyAgICAgICAgIHJlc3VsdCA9 IGdsb2J1c194aW9fcmVnaXN0ZXJfb3BlbigKK0BAIC0yNzE5LDIwICsyNzE5LDIwIEBAIGdsb2J1 c19sX2lvX3RjcF9yZWdpc3Rlcl9hY2NlcHQoCisgICAgICAgICAgICAgYm91bmNlX2luZm8pOwor IAorICAgICAgICAgaWYoY29udGFjdF9zdHJpbmcgIT0gR0xPQlVTX05VTEwpCistICAgICAgICB7 IAorKyAgICAgICAgeworICAgICAgICAgICAgIGdsb2J1c19mcmVlKGNvbnRhY3Rfc3RyaW5nKTsK KyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19T VUNDRVNTKQorICAgICAgICAgeworICAgICAgICAgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmlo YW5kbGUtPnBlbmRpbmdfbG9jayk7CisgICAgICAgICAgICAgZ290byBlcnJvcl9vcGVuOworICAg ICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBnbG9idXNfbF9pb19jYW5jZWxfaW5zZXJ0 KGJvdW5jZV9pbmZvKTsKKyAgICAgfQorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZpaGFuZGxl LT5wZW5kaW5nX2xvY2spOworLSAgICAKKysKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOwor IAorIGVycm9yX29wZW46CitAQCAtMjc3MiwxMSArMjc3MiwxMSBAQCBnbG9idXNfaW9fdGNwX2Fj Y2VwdCgKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Owor ICAgICBnbG9idXNfbF9pb19tb25pdG9yX3QgICAgICAgICAgICAgICBtb25pdG9yOworICAgICBH bG9idXNJT05hbWUoZ2xvYnVzX2lvX3RjcF9hY2NlcHQpOworLSAgICAKKysKKyAgICAgbW9uaXRv ci5kb25lID0gR0xPQlVTX0ZBTFNFOworICAgICBnbG9idXNfbXV0ZXhfaW5pdCgmbW9uaXRvci5s b2NrLCBHTE9CVVNfTlVMTCk7CisgICAgIGdsb2J1c19jb25kX2luaXQoJm1vbml0b3IuY29uZCwg R0xPQlVTX05VTEwpOworLSAgICAKKysKKyAgICAgcmVzdWx0ID0gZ2xvYnVzX2xfaW9fdGNwX3Jl Z2lzdGVyX2FjY2VwdCgKKyAgICAgICAgIGxpc3RlbmVyX2hhbmRsZSwKKyAgICAgICAgIGF0dHIs CitAQCAtMjc4OSw3ICsyNzg5LDcgQEAgZ2xvYnVzX2lvX3RjcF9hY2NlcHQoCisgICAgICAgICBt b25pdG9yLmRvbmUgPSBHTE9CVVNfVFJVRTsKKyAgICAgICAgIG1vbml0b3IuZXJyb3IgPSBnbG9i dXNfZXJyb3JfZ2V0KHJlc3VsdCk7CisgICAgIH0KKy0gICAgCisrCisgICAgIGdsb2J1c19tdXRl eF9sb2NrKCZtb25pdG9yLmxvY2spOworICAgICB7CisgICAgICAgICB3aGlsZSghbW9uaXRvci5k b25lKQorQEAgLTI3OTgsMTggKzI3OTgsMTggQEAgZ2xvYnVzX2lvX3RjcF9hY2NlcHQoCisgICAg ICAgICB9CisgICAgIH0KKyAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmbW9uaXRvci5sb2NrKTsK Ky0gICAgCisrCisgICAgIGdsb2J1c19tdXRleF9kZXN0cm95KCZtb25pdG9yLmxvY2spOworICAg ICBnbG9idXNfY29uZF9kZXN0cm95KCZtb25pdG9yLmNvbmQpOworLSAgICAKKysKKyAgICAgaWYo bW9uaXRvci5lcnJvciAhPSBHTE9CVVNfTlVMTCkKKyAgICAgeworICAgICAgICAgcmVzdWx0ID0g Z2xvYnVzX2Vycm9yX3B1dChtb25pdG9yLmVycm9yKTsKKyAgICAgICAgIGdvdG8gZXJyb3JfcmVn aXN0ZXI7CisgICAgIH0KKy0gICAgCisrCisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKy0g ICAgCisrCisgZXJyb3JfcmVnaXN0ZXI6CisgICAgIHJldHVybiByZXN1bHQ7CisgfQorQEAgLTI4 MjcsMTIgKzI4MjcsMTIgQEAgZ2xvYnVzX2lvX3RjcF9nZXRfbG9jYWxfYWRkcmVzc19leCgKKyAg ICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OworICAgICBjaGFy ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjczsKKyAgICAgR2xvYnVzSU9OYW1lKGds b2J1c19pb190Y3BfZ2V0X2xvY2FsX2FkZHJlc3NfZXgpOworLSAgICAKKysKKyAgICAgR2xvYnVz TElPQ2hlY2tOdWxsUGFyYW0oaG9zdCk7CisgICAgIEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKGNv dW50KTsKKyAgICAgR2xvYnVzTElPQ2hlY2tOdWxsUGFyYW0ocG9ydCk7CisgICAgIEdsb2J1c0xJ T0NoZWNrSGFuZGxlKGhhbmRsZSwgR0xPQlVTX0lfSU9fVENQX0hBTkRMRSk7CistICAgIAorKwor ICAgICBpZigoKmhhbmRsZSktPnhpb19oYW5kbGUpCisgICAgIHsKKyAgICAgICAgIHJlc3VsdCA9 IGdsb2J1c194aW9faGFuZGxlX2NudGwoCitAQCAtMjg1MywyMCArMjg1MywyMCBAQCBnbG9idXNf aW9fdGNwX2dldF9sb2NhbF9hZGRyZXNzX2V4KAorICAgICB7CisgICAgICAgICBnb3RvIGVycm9y X2NudGw7CisgICAgIH0KKy0gICAgCisrCisgICAgIHJlc3VsdCA9IGdsb2J1c19saWJjX2NvbnRh Y3Rfc3RyaW5nX3RvX2ludHMoY3MsIGhvc3QsIGNvdW50LCBwb3J0KTsKKyAgICAgaWYocmVzdWx0 ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICB7CisgICAgICAgICBnb3RvIGVycm9yX3BhcnNlOwor ICAgICB9CistICAgIAorKworICAgICBnbG9idXNfZnJlZShjcyk7CistICAgIAorKworICAgICBy ZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgCisgZXJyb3JfcGFyc2U6CisgICAgIGdsb2J1c19mcmVl KGNzKTsKKy0gICAgCisrCisgZXJyb3JfY250bDoKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CitA QCAtMjg4MSwxMiArMjg4MSwxMiBAQCBnbG9idXNfaW9fdGNwX2dldF9yZW1vdGVfYWRkcmVzc19l eCgKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OworICAg ICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjczsKKyAgICAgR2xvYnVzSU9O YW1lKGdsb2J1c19pb190Y3BfZ2V0X3JlbW90ZV9hZGRyZXNzX2V4KTsKKy0gICAgCisrCisgICAg IEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKGhvc3QpOworICAgICBHbG9idXNMSU9DaGVja051bGxQ YXJhbShjb3VudCk7CisgICAgIEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKHBvcnQpOworICAgICBH bG9idXNMSU9DaGVja0hhbmRsZShoYW5kbGUsIEdMT0JVU19JX0lPX1RDUF9IQU5ETEUpOworLSAg ICAKKysKKyAgICAgaWYoKCpoYW5kbGUpLT54aW9faGFuZGxlKQorICAgICB7CisgICAgICAgICBy ZXN1bHQgPSBnbG9idXNfeGlvX2hhbmRsZV9jbnRsKAorQEAgLTI5MDcsMjAgKzI5MDcsMjAgQEAg Z2xvYnVzX2lvX3RjcF9nZXRfcmVtb3RlX2FkZHJlc3NfZXgoCisgICAgIHsKKyAgICAgICAgIGdv dG8gZXJyb3JfY250bDsKKyAgICAgfQorLSAgICAKKysKKyAgICAgcmVzdWx0ID0gZ2xvYnVzX2xp YmNfY29udGFjdF9zdHJpbmdfdG9faW50cyhjcywgaG9zdCwgY291bnQsIHBvcnQpOworICAgICBp ZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGdvdG8gZXJyb3Jf cGFyc2U7CisgICAgIH0KKy0gICAgCisrCisgICAgIGdsb2J1c19mcmVlKGNzKTsKKy0gICAgCisr CisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAKKyBlcnJvcl9wYXJzZToKKyAgICAgZ2xv YnVzX2ZyZWUoY3MpOworLSAgICAKKysKKyBlcnJvcl9jbnRsOgorICAgICByZXR1cm4gcmVzdWx0 OworIH0KK0BAIC0yOTM1LDE3ICsyOTM1LDE3IEBAIGdsb2J1c19pb190Y3BfZ2V0X2xvY2FsX2Fk ZHJlc3MoCisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50Owor ICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAgIEds b2J1c0lPTmFtZShnbG9idXNfaW9fdGNwX2dldF9sb2NhbF9hZGRyZXNzKTsKKy0gICAgCisrCisg ICAgIEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKGhvc3QpOworICAgICBHbG9idXNMSU9DaGVja051 bGxQYXJhbShwb3J0KTsKKyAgICAgR2xvYnVzTElPQ2hlY2tIYW5kbGUoaGFuZGxlLCBHTE9CVVNf SV9JT19UQ1BfSEFORExFKTsKKy0gICAgCisrCisgICAgIHJlc3VsdCA9IGdsb2J1c19pb190Y3Bf Z2V0X2xvY2FsX2FkZHJlc3NfZXgoaGFuZGxlLCBteWhvc3QsICZjb3VudCwgcG9ydCk7CisgICAg IGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworICAgICAgICAgZ290byBlcnJv cl9jbnRsOworICAgICB9CistICAgIAorKworICAgICBpZihjb3VudCAhPSA0KQorICAgICB7Cisg ICAgICAgICAvKiBpbnRlcmZhY2UgZG9lc250IHN1cHBvcnQgaXB2NiBhZGRyZXNzZXMgKi8KK0BA IC0yOTU0LDE1ICsyOTU0LDE1IEBAIGdsb2J1c19pb190Y3BfZ2V0X2xvY2FsX2FkZHJlc3MoCisg ICAgICAgICAgICAgR0xPQlVTX0lPX01PRFVMRSwKKyAgICAgICAgICAgICBHTE9CVVNfTlVMTCwK KyAgICAgICAgICAgICAoY2hhciAqKSBfaW9fbmFtZSkpOworLSAgICAgICAgICAgIAorKworICAg ICAgICAgZ290byBlcnJvcl9pcHY2OworICAgICB9CistICAgIAorKworICAgICB3aGlsZShjb3Vu dC0tKQorICAgICB7CisgICAgICAgICBob3N0W2NvdW50XSA9IG15aG9zdFtjb3VudF07CisgICAg IH0KKy0gICAgCisrCisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAKKyBlcnJvcl9pcHY2 OgorQEAgLTI5ODAsMTcgKzI5ODAsMTcgQEAgZ2xvYnVzX2lvX3RjcF9nZXRfcmVtb3RlX2FkZHJl c3MoCisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50OworICAg ICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAgIEdsb2J1 c0lPTmFtZShnbG9idXNfaW9fdGNwX2dldF9yZW1vdGVfYWRkcmVzcyk7CistICAgIAorKworICAg ICBHbG9idXNMSU9DaGVja051bGxQYXJhbShob3N0KTsKKyAgICAgR2xvYnVzTElPQ2hlY2tOdWxs UGFyYW0ocG9ydCk7CisgICAgIEdsb2J1c0xJT0NoZWNrSGFuZGxlKGhhbmRsZSwgR0xPQlVTX0lf SU9fVENQX0hBTkRMRSk7CistICAgIAorKworICAgICByZXN1bHQgPSBnbG9idXNfaW9fdGNwX2dl dF9yZW1vdGVfYWRkcmVzc19leChoYW5kbGUsIG15aG9zdCwgJmNvdW50LCBwb3J0KTsKKyAgICAg aWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICB7CisgICAgICAgICBnb3RvIGVycm9y X2NudGw7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKGNvdW50ICE9IDQpCisgICAgIHsKKyAg ICAgICAgIC8qIGludGVyZmFjZSBkb2VzbnQgc3VwcG9ydCBpcHY2IGFkZHJlc3NlcyAqLworQEAg LTI5OTksMTUgKzI5OTksMTUgQEAgZ2xvYnVzX2lvX3RjcF9nZXRfcmVtb3RlX2FkZHJlc3MoCisg ICAgICAgICAgICAgR0xPQlVTX0lPX01PRFVMRSwKKyAgICAgICAgICAgICBHTE9CVVNfTlVMTCwK KyAgICAgICAgICAgICAoY2hhciAqKSBfaW9fbmFtZSkpOworLSAgICAgICAgICAgIAorKworICAg ICAgICAgZ290byBlcnJvcl9pcHY2OworICAgICB9CistICAgIAorKworICAgICB3aGlsZShjb3Vu dC0tKQorICAgICB7CisgICAgICAgICBob3N0W2NvdW50XSA9IG15aG9zdFtjb3VudF07CisgICAg IH0KKy0gICAgCisrCisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAKKyBlcnJvcl9pcHY2 OgorQEAgLTMwMzAsMjMgKzMwMzAsMjMgQEAgZ2xvYnVzX2lvX3JlZ2lzdGVyX3JlYWQoCisgICAg IGdsb2J1c19sX2lvX2hhbmRsZV90ICogICAgICAgICAgICAgIGloYW5kbGU7CisgICAgIGdsb2J1 c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsKKyAgICAgR2xvYnVzSU9OYW1l KGdsb2J1c19pb19yZWdpc3Rlcl9yZWFkKTsKKy0gICAgCisrCisgICAgIEdsb2J1c0xJT0NoZWNr TnVsbFBhcmFtKGNhbGxiYWNrKTsKKyAgICAgR2xvYnVzTElPQ2hlY2tIYW5kbGUoaGFuZGxlLCAw KTsKKy0gICAgCisrCisgICAgIGloYW5kbGUgPSAqaGFuZGxlOworICAgICByZXN1bHQgPSBHbG9i dXNMSU9NYWxsb2MoYm91bmNlX2luZm8sIGdsb2J1c19sX2lvX2JvdW5jZV90KTsKKyAgICAgaWYo cmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICB7CisgICAgICAgICBnb3RvIGVycm9yX2Fs bG9jOworICAgICB9CistICAgIAorKworICAgICBib3VuY2VfaW5mby0+aGFuZGxlID0gaWhhbmRs ZTsKKyAgICAgYm91bmNlX2luZm8tPmNiLnJlYWRfd3JpdGUgPSBjYWxsYmFjazsKKyAgICAgYm91 bmNlX2luZm8tPnVzZXJfYXJnID0gY2FsbGJhY2tfYXJnOworICAgICBib3VuY2VfaW5mby0+Ymxv Y2tpbmcgPSBHTE9CVVNfRkFMU0U7CisgICAgIGJvdW5jZV9pbmZvLT5jYW5jZWxfaW5mbyA9IEdM T0JVU19OVUxMOworLSAgICAKKysKKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJmloYW5kbGUtPnBl bmRpbmdfbG9jayk7CisgICAgIHsKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c194aW9fcmVnaXN0 ZXJfcmVhZCgKK0BAIC0zMDYyLDE2ICszMDYyLDE2IEBAIGdsb2J1c19pb19yZWdpc3Rlcl9yZWFk KAorICAgICAgICAgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmloYW5kbGUtPnBlbmRpbmdfbG9j ayk7CisgICAgICAgICAgICAgZ290byBlcnJvcl9yZWdpc3RlcjsKKyAgICAgICAgIH0KKy0gICAg ICAgIAorKworICAgICAgICAgZ2xvYnVzX2xfaW9fY2FuY2VsX2luc2VydChib3VuY2VfaW5mbyk7 CisgICAgIH0KKyAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmaWhhbmRsZS0+cGVuZGluZ19sb2Nr KTsKKy0gICAgCisrCisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAKKyBlcnJvcl9yZWdp c3RlcjoKKyAgICAgZ2xvYnVzX2ZyZWUoYm91bmNlX2luZm8pOworLSAgICAKKysKKyBlcnJvcl9h bGxvYzoKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CitAQCAtMzA4NSwxMSArMzA4NSwxMSBAQCBn bG9idXNfaW9fdHJ5X3JlYWQoCisgeworICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAg ICAgICAgICByZXN1bHQ7CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfaW9fdHJ5X3JlYWQpOwor LSAgICAKKysKKyAgICAgR2xvYnVzTElPQ2hlY2tOdWxsUGFyYW0obmJ5dGVzX3JlYWQpOworICAg ICAqbmJ5dGVzX3JlYWQgPSAwOworICAgICBHbG9idXNMSU9DaGVja0hhbmRsZShoYW5kbGUsIDAp OworLSAgICAKKysKKyAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19yZWFkKAorICAgICAgICAgKCpo YW5kbGUpLT54aW9faGFuZGxlLAorICAgICAgICAgYnVmLAorQEAgLTMxMDEsOSArMzEwMSw5IEBA IGdsb2J1c19pb190cnlfcmVhZCgKKyAgICAgeworICAgICAgICAgZ290byBlcnJvcl9yZWFkOwor ICAgICB9CistICAgIAorKworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CistICAgIAorKwor IGVycm9yX3JlYWQ6CisgICAgIGlmKGdsb2J1c194aW9fZXJyb3JfaXNfZW9mKHJlc3VsdCkpCisg ICAgIHsKK0BAIC0zMTIxLDcgKzMxMjEsNyBAQCBlcnJvcl9yZWFkOgorICAgICAgICAgICAgICAg ICBnbG9idXNfZXJyb3JfZ2V0KHJlc3VsdCksCisgICAgICAgICAgICAgICAgICgqaGFuZGxlKS0+ aW9faGFuZGxlKSk7CisgICAgIH0KKy0gICAgCisrCisgICAgIHJldHVybiByZXN1bHQ7CisgfQor IAorQEAgLTMxMzUsMTEgKzMxMzUsMTEgQEAgZ2xvYnVzX2lvX3JlYWQoCisgeworICAgICBnbG9i dXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAgIEdsb2J1c0lPTmFt ZShnbG9idXNfaW9fcmVhZCk7CistICAgIAorKworICAgICBHbG9idXNMSU9DaGVja051bGxQYXJh bShuYnl0ZXNfcmVhZCk7CisgICAgICpuYnl0ZXNfcmVhZCA9IDA7CisgICAgIEdsb2J1c0xJT0No ZWNrSGFuZGxlKGhhbmRsZSwgMCk7CistICAgIAorKworICAgICByZXN1bHQgPSBnbG9idXNfeGlv X3JlYWQoCisgICAgICAgICAoKmhhbmRsZSktPnhpb19oYW5kbGUsCisgICAgICAgICBidWYsCitA QCAtMzE1MSw5ICszMTUxLDkgQEAgZ2xvYnVzX2lvX3JlYWQoCisgICAgIHsKKyAgICAgICAgIGdv dG8gZXJyb3JfcmVhZDsKKyAgICAgfQorLSAgICAKKysKKyAgICAgcmV0dXJuIEdMT0JVU19TVUND RVNTOworLSAgICAKKysKKyBlcnJvcl9yZWFkOgorICAgICBpZihnbG9idXNfeGlvX2Vycm9yX2lz X2VvZihyZXN1bHQpKQorICAgICB7CitAQCAtMzE3MSw3ICszMTcxLDcgQEAgZXJyb3JfcmVhZDoK KyAgICAgICAgICAgICAgICAgZ2xvYnVzX2Vycm9yX2dldChyZXN1bHQpLAorICAgICAgICAgICAg ICAgICAoKmhhbmRsZSktPmlvX2hhbmRsZSkpOworICAgICB9CistICAgIAorKworICAgICByZXR1 cm4gcmVzdWx0OworIH0KKyAKK0BAIC0zMTg5LDIzICszMTg5LDIzIEBAIGdsb2J1c19pb19yZWdp c3Rlcl93cml0ZSgKKyAgICAgZ2xvYnVzX2xfaW9faGFuZGxlX3QgKiAgICAgICAgICAgICAgaWhh bmRsZTsKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Owor ICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX3JlZ2lzdGVyX3dyaXRlKTsKKy0gICAgCisrCisg ICAgIEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKHdyaXRlX2NhbGxiYWNrKTsKKyAgICAgR2xvYnVz TElPQ2hlY2tIYW5kbGUoaGFuZGxlLCAwKTsKKy0gICAgCisrCisgICAgIGloYW5kbGUgPSAqaGFu ZGxlOworICAgICByZXN1bHQgPSBHbG9idXNMSU9NYWxsb2MoYm91bmNlX2luZm8sIGdsb2J1c19s X2lvX2JvdW5jZV90KTsKKyAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICB7 CisgICAgICAgICBnb3RvIGVycm9yX2FsbG9jOworICAgICB9CistICAgIAorKworICAgICBib3Vu Y2VfaW5mby0+aGFuZGxlID0gaWhhbmRsZTsKKyAgICAgYm91bmNlX2luZm8tPmNiLnJlYWRfd3Jp dGUgPSB3cml0ZV9jYWxsYmFjazsKKyAgICAgYm91bmNlX2luZm8tPnVzZXJfYXJnID0gY2FsbGJh Y2tfYXJnOworICAgICBib3VuY2VfaW5mby0+YmxvY2tpbmcgPSBHTE9CVVNfRkFMU0U7CisgICAg IGJvdW5jZV9pbmZvLT5jYW5jZWxfaW5mbyA9IEdMT0JVU19OVUxMOworLSAgICAKKysKKyAgICAg Z2xvYnVzX211dGV4X2xvY2soJmloYW5kbGUtPnBlbmRpbmdfbG9jayk7CisgICAgIHsKKyAgICAg ICAgIHJlc3VsdCA9IGdsb2J1c194aW9fcmVnaXN0ZXJfd3JpdGUoCitAQCAtMzIyMSwxNiArMzIy MSwxNiBAQCBnbG9idXNfaW9fcmVnaXN0ZXJfd3JpdGUoCisgICAgICAgICAgICAgZ2xvYnVzX211 dGV4X3VubG9jaygmaWhhbmRsZS0+cGVuZGluZ19sb2NrKTsKKyAgICAgICAgICAgICBnb3RvIGVy cm9yX3JlZ2lzdGVyOworICAgICAgICAgfQorLSAgICAKKysKKyAgICAgICAgIGdsb2J1c19sX2lv X2NhbmNlbF9pbnNlcnQoYm91bmNlX2luZm8pOworICAgICB9CisgICAgIGdsb2J1c19tdXRleF91 bmxvY2soJmloYW5kbGUtPnBlbmRpbmdfbG9jayk7CistICAgIAorKworICAgICByZXR1cm4gR0xP QlVTX1NVQ0NFU1M7CisgCisgZXJyb3JfcmVnaXN0ZXI6CisgICAgIGdsb2J1c19mcmVlKGJvdW5j ZV9pbmZvKTsKKy0gICAgCisrCisgZXJyb3JfYWxsb2M6CisgICAgIHJldHVybiByZXN1bHQ7Cisg fQorQEAgLTMyNDksMTcgKzMyNDksMTcgQEAgZ2xvYnVzX2lvX3JlZ2lzdGVyX3NlbmQoCisgICAg IGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsKKyAgICAgZ2xvYnVz X3hpb19kYXRhX2Rlc2NyaXB0b3JfdCAgICAgICAgZGQ7CisgICAgIEdsb2J1c0lPTmFtZShnbG9i dXNfaW9fcmVnaXN0ZXJfc2VuZCk7CistICAgIAorKworICAgICBHbG9idXNMSU9DaGVja051bGxQ YXJhbSh3cml0ZV9jYWxsYmFjayk7CisgICAgIEdsb2J1c0xJT0NoZWNrSGFuZGxlKGhhbmRsZSwg R0xPQlVTX0lfSU9fVENQX0hBTkRMRSk7CistICAgIAorKworICAgICBpaGFuZGxlID0gKmhhbmRs ZTsKKyAgICAgcmVzdWx0ID0gR2xvYnVzTElPTWFsbG9jKGJvdW5jZV9pbmZvLCBnbG9idXNfbF9p b19ib3VuY2VfdCk7CisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgewor ICAgICAgICAgZ290byBlcnJvcl9hbGxvYzsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaWYoZmxh Z3MpCisgICAgIHsKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c194aW9fZGF0YV9kZXNjcmlwdG9y X2luaXQoJmRkLCBpaGFuZGxlLT54aW9faGFuZGxlKTsKK0BAIC0zMjY3LDcgKzMyNjcsNyBAQCBn bG9idXNfaW9fcmVnaXN0ZXJfc2VuZCgKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBnb3RvIGVy cm9yX2RkOworICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICByZXN1bHQgPSBnbG9i dXNfeGlvX2RhdGFfZGVzY3JpcHRvcl9jbnRsKAorICAgICAgICAgICAgIGRkLAorICAgICAgICAg ICAgIGdsb2J1c19sX2lvX3RjcF9kcml2ZXIsCitAQCAtMzI4MiwxMyArMzI4MiwxMyBAQCBnbG9i dXNfaW9fcmVnaXN0ZXJfc2VuZCgKKyAgICAgeworICAgICAgICAgZGQgPSBHTE9CVVNfTlVMTDsK KyAgICAgfQorLSAgICAKKysKKyAgICAgYm91bmNlX2luZm8tPmhhbmRsZSA9IGloYW5kbGU7Cisg ICAgIGJvdW5jZV9pbmZvLT5jYi5yZWFkX3dyaXRlID0gd3JpdGVfY2FsbGJhY2s7CisgICAgIGJv dW5jZV9pbmZvLT51c2VyX2FyZyA9IGNhbGxiYWNrX2FyZzsKKyAgICAgYm91bmNlX2luZm8tPmJs b2NraW5nID0gR0xPQlVTX0ZBTFNFOworICAgICBib3VuY2VfaW5mby0+Y2FuY2VsX2luZm8gPSBH TE9CVVNfTlVMTDsKKy0gICAgCisrCisgICAgIGdsb2J1c19tdXRleF9sb2NrKCZpaGFuZGxlLT5w ZW5kaW5nX2xvY2spOworICAgICB7CisgICAgICAgICByZXN1bHQgPSBnbG9idXNfeGlvX3JlZ2lz dGVyX3dyaXRlKAorQEAgLTMzMDUsMTEgKzMzMDUsMTEgQEAgZ2xvYnVzX2lvX3JlZ2lzdGVyX3Nl bmQoCisgICAgICAgICAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmaWhhbmRsZS0+cGVuZGluZ19s b2NrKTsKKyAgICAgICAgICAgICBnb3RvIGVycm9yX3JlZ2lzdGVyOworICAgICAgICAgfQorLSAg ICAKKysKKyAgICAgICAgIGdsb2J1c19sX2lvX2NhbmNlbF9pbnNlcnQoYm91bmNlX2luZm8pOwor ICAgICB9CisgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmloYW5kbGUtPnBlbmRpbmdfbG9jayk7 CistICAgIAorKworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgCisgZXJyb3JfcmVnaXN0 ZXI6CitAQCAtMzMxOCwxMCArMzMxOCwxMCBAQCBlcnJvcl9kZF9jbnRsOgorICAgICB7CisgICAg ICAgICBnbG9idXNfeGlvX2RhdGFfZGVzY3JpcHRvcl9kZXN0cm95KGRkKTsKKyAgICAgfQorLSAg ICAKKysKKyBlcnJvcl9kZDoKKyAgICAgZ2xvYnVzX2ZyZWUoYm91bmNlX2luZm8pOworLSAgICAK KysKKyBlcnJvcl9hbGxvYzoKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CitAQCAtMzM0MCwzMCAr MzM0MCwzMCBAQCBnbG9idXNfaW9fcmVnaXN0ZXJfd3JpdGV2KAorICAgICBpbnQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpOworICAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAg ICAgICAgICAgICBuYnl0ZXM7CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfaW9fcmVnaXN0ZXJf d3JpdGV2KTsKKy0gICAgCisrCisgICAgIEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKHdyaXRldl9j YWxsYmFjayk7CisgICAgIEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKGlvdik7CisgICAgIEdsb2J1 c0xJT0NoZWNrSGFuZGxlKGhhbmRsZSwgMCk7CistICAgIAorKworICAgICBpaGFuZGxlID0gKmhh bmRsZTsKKyAgICAgcmVzdWx0ID0gR2xvYnVzTElPTWFsbG9jKGJvdW5jZV9pbmZvLCBnbG9idXNf bF9pb19ib3VuY2VfdCk7CisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAg eworICAgICAgICAgZ290byBlcnJvcl9hbGxvYzsKKyAgICAgfQorLSAgICAKKysKKyAgICAgYm91 bmNlX2luZm8tPmhhbmRsZSA9IGloYW5kbGU7CisgICAgIGJvdW5jZV9pbmZvLT5jYi53cml0ZXYg PSB3cml0ZXZfY2FsbGJhY2s7CisgICAgIGJvdW5jZV9pbmZvLT51c2VyX2FyZyA9IGNhbGxiYWNr X2FyZzsKKyAgICAgYm91bmNlX2luZm8tPmJsb2NraW5nID0gR0xPQlVTX0ZBTFNFOworICAgICBi b3VuY2VfaW5mby0+Y2FuY2VsX2luZm8gPSBHTE9CVVNfTlVMTDsKKy0gICAgCisrCisgICAgIG5i eXRlcyA9IDA7CisgICAgIGZvcihpID0gMDsgaSA8IGlvdmNudDsgaSsrKQorICAgICB7CisgICAg ICAgICBuYnl0ZXMgKz0gaW92W2ldLmlvdl9sZW47CisgICAgIH0KKy0gICAgCisrCisgICAgIGds b2J1c19tdXRleF9sb2NrKCZpaGFuZGxlLT5wZW5kaW5nX2xvY2spOworICAgICB7CisgICAgICAg ICByZXN1bHQgPSBnbG9idXNfeGlvX3JlZ2lzdGVyX3dyaXRldigKK0BAIC0zMzc5LDE2ICszMzc5 LDE2IEBAIGdsb2J1c19pb19yZWdpc3Rlcl93cml0ZXYoCisgICAgICAgICAgICAgZ2xvYnVzX211 dGV4X3VubG9jaygmaWhhbmRsZS0+cGVuZGluZ19sb2NrKTsKKyAgICAgICAgICAgICBnb3RvIGVy cm9yX3JlZ2lzdGVyOworICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBnbG9idXNf bF9pb19jYW5jZWxfaW5zZXJ0KGJvdW5jZV9pbmZvKTsKKyAgICAgfQorICAgICBnbG9idXNfbXV0 ZXhfdW5sb2NrKCZpaGFuZGxlLT5wZW5kaW5nX2xvY2spOworLSAgICAKKysKKyAgICAgcmV0dXJu IEdMT0JVU19TVUNDRVNTOworIAorIGVycm9yX3JlZ2lzdGVyOgorICAgICBnbG9idXNfZnJlZShi b3VuY2VfaW5mbyk7CistICAgIAorKworIGVycm9yX2FsbG9jOgorICAgICByZXR1cm4gcmVzdWx0 OworIH0KK0BAIC0zNDAyLDExICszNDAyLDExIEBAIGdsb2J1c19pb190cnlfd3JpdGUoCisgewor ICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAgIEds b2J1c0lPTmFtZShnbG9idXNfaW9fdHJ5X3dyaXRlKTsKKy0gICAgCisrCisgICAgIEdsb2J1c0xJ T0NoZWNrTnVsbFBhcmFtKG5ieXRlc193cml0dGVuKTsKKyAgICAgKm5ieXRlc193cml0dGVuID0g MDsKKyAgICAgR2xvYnVzTElPQ2hlY2tIYW5kbGUoaGFuZGxlLCAwKTsKKy0gICAgCisrCisgICAg IHJlc3VsdCA9IGdsb2J1c194aW9fd3JpdGUoCisgICAgICAgICAoKmhhbmRsZSktPnhpb19oYW5k bGUsCisgICAgICAgICBidWYsCitAQCAtMzQxOCw5ICszNDE4LDkgQEAgZ2xvYnVzX2lvX3RyeV93 cml0ZSgKKyAgICAgeworICAgICAgICAgZ290byBlcnJvcl93cml0ZTsKKyAgICAgfQorLSAgICAK KysKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworLSAgICAKKysKKyBlcnJvcl93cml0ZToK KyAgICAgaWYoZ2xvYnVzX3hpb19lcnJvcl9pc19jYW5jZWxlZChyZXN1bHQpKQorICAgICB7CitA QCAtMzQzMCw3ICszNDMwLDcgQEAgZXJyb3Jfd3JpdGU6CisgICAgICAgICAgICAgICAgIGdsb2J1 c19lcnJvcl9nZXQocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgKCpoYW5kbGUpLT5pb19oYW5k bGUpKTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CisgCitAQCAt MzQ0NSwxMSArMzQ0NSwxMSBAQCBnbG9idXNfaW9fdHJ5X3NlbmQoCisgICAgIGdsb2J1c19yZXN1 bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsKKyAgICAgZ2xvYnVzX3hpb19kYXRhX2Rl c2NyaXB0b3JfdCAgICAgICAgZGQ7CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfaW9fdHJ5X3Nl bmQpOworLSAgICAKKysKKyAgICAgR2xvYnVzTElPQ2hlY2tOdWxsUGFyYW0obmJ5dGVzX3NlbnQp OworICAgICAqbmJ5dGVzX3NlbnQgPSAwOworICAgICBHbG9idXNMSU9DaGVja0hhbmRsZShoYW5k bGUsIEdMT0JVU19JX0lPX1RDUF9IQU5ETEUpOworLSAgICAKKysKKyAgICAgaWYoZmxhZ3MpCisg ICAgIHsKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c194aW9fZGF0YV9kZXNjcmlwdG9yX2luaXQo JmRkLCAoKmhhbmRsZSktPnhpb19oYW5kbGUpOworQEAgLTM0NTcsNyArMzQ1Nyw3IEBAIGdsb2J1 c19pb190cnlfc2VuZCgKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBnb3RvIGVycm9yX2RkOwor ICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICByZXN1bHQgPSBnbG9idXNfeGlvX2Rh dGFfZGVzY3JpcHRvcl9jbnRsKAorICAgICAgICAgICAgIGRkLAorICAgICAgICAgICAgIGdsb2J1 c19sX2lvX3RjcF9kcml2ZXIsCitAQCAtMzQ3Miw3ICszNDcyLDcgQEAgZ2xvYnVzX2lvX3RyeV9z ZW5kKAorICAgICB7CisgICAgICAgICBkZCA9IEdMT0JVU19OVUxMOworICAgICB9CistICAgIAor KworICAgICByZXN1bHQgPSBnbG9idXNfeGlvX3dyaXRlKAorICAgICAgICAgKCpoYW5kbGUpLT54 aW9faGFuZGxlLAorICAgICAgICAgYnVmLAorQEAgLTM0ODYsNyArMzQ4Niw3IEBAIGdsb2J1c19p b190cnlfc2VuZCgKKyAgICAgICAgIGdvdG8gZXJyb3Jfd3JpdGU7CisgICAgIH0KKyAgICAgcmV0 dXJuIEdMT0JVU19TVUNDRVNTOworLSAgICAKKysKKyBlcnJvcl93cml0ZToKKyAgICAgaWYoZ2xv YnVzX3hpb19lcnJvcl9pc19jYW5jZWxlZChyZXN1bHQpKQorICAgICB7CitAQCAtMzUwMiw3ICsz NTAyLDcgQEAgZXJyb3JfZGRfY250bDoKKyAgICAgeworICAgICAgICAgZ2xvYnVzX3hpb19kYXRh X2Rlc2NyaXB0b3JfZGVzdHJveShkZCk7CisgICAgIH0KKy0gICAgCisrCisgZXJyb3JfZGQ6Cisg ICAgIHJldHVybiByZXN1bHQ7CisgfQorQEAgLTM1MTYsMTEgKzM1MTYsMTEgQEAgZ2xvYnVzX2lv X3dyaXRlKAorIHsKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVz dWx0OworICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX3dyaXRlKTsKKy0gICAgCisrCisgICAg IEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKG5ieXRlc193cml0dGVuKTsKKyAgICAgKm5ieXRlc193 cml0dGVuID0gMDsKKyAgICAgR2xvYnVzTElPQ2hlY2tIYW5kbGUoaGFuZGxlLCAwKTsKKy0gICAg CisrCisgICAgIHJlc3VsdCA9IGdsb2J1c194aW9fd3JpdGUoCisgICAgICAgICAoKmhhbmRsZSkt Pnhpb19oYW5kbGUsCisgICAgICAgICBidWYsCitAQCAtMzUzMiw5ICszNTMyLDkgQEAgZ2xvYnVz X2lvX3dyaXRlKAorICAgICB7CisgICAgICAgICBnb3RvIGVycm9yX3dyaXRlOworICAgICB9Cist ICAgIAorKworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CistICAgIAorKworIGVycm9yX3dy aXRlOgorICAgICBpZihnbG9idXNfeGlvX2Vycm9yX2lzX2NhbmNlbGVkKHJlc3VsdCkpCisgICAg IHsKK0BAIC0zNTQ0LDcgKzM1NDQsNyBAQCBlcnJvcl93cml0ZToKKyAgICAgICAgICAgICAgICAg Z2xvYnVzX2Vycm9yX2dldChyZXN1bHQpLAorICAgICAgICAgICAgICAgICAoKmhhbmRsZSktPmlv X2hhbmRsZSkpOworICAgICB9CistICAgIAorKworICAgICByZXR1cm4gcmVzdWx0OworIH0KKyAK K0BAIC0zNTU5LDExICszNTU5LDExIEBAIGdsb2J1c19pb19zZW5kKAorICAgICBnbG9idXNfcmVz dWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAgIGdsb2J1c194aW9fZGF0YV9k ZXNjcmlwdG9yX3QgICAgICAgIGRkOworICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX3NlbmQp OworLSAgICAKKysKKyAgICAgR2xvYnVzTElPQ2hlY2tOdWxsUGFyYW0obmJ5dGVzX3NlbnQpOwor ICAgICAqbmJ5dGVzX3NlbnQgPSAwOworICAgICBHbG9idXNMSU9DaGVja0hhbmRsZShoYW5kbGUs IEdMT0JVU19JX0lPX1RDUF9IQU5ETEUpOworLSAgICAKKysKKyAgICAgaWYoZmxhZ3MpCisgICAg IHsKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c194aW9fZGF0YV9kZXNjcmlwdG9yX2luaXQoJmRk LCAoKmhhbmRsZSktPnhpb19oYW5kbGUpOworQEAgLTM1NzEsNyArMzU3MSw3IEBAIGdsb2J1c19p b19zZW5kKAorICAgICAgICAgeworICAgICAgICAgICAgIGdvdG8gZXJyb3JfZGQ7CisgICAgICAg ICB9CistICAgICAgICAKKysKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c194aW9fZGF0YV9kZXNj cmlwdG9yX2NudGwoCisgICAgICAgICAgICAgZGQsCisgICAgICAgICAgICAgZ2xvYnVzX2xfaW9f dGNwX2RyaXZlciwKK0BAIC0zNTg2LDcgKzM1ODYsNyBAQCBnbG9idXNfaW9fc2VuZCgKKyAgICAg eworICAgICAgICAgZGQgPSBHTE9CVVNfTlVMTDsKKyAgICAgfQorLSAgICAKKysKKyAgICAgcmVz dWx0ID0gZ2xvYnVzX3hpb193cml0ZSgKKyAgICAgICAgICgqaGFuZGxlKS0+eGlvX2hhbmRsZSwK KyAgICAgICAgIGJ1ZiwKK0BAIC0zNjAxLDcgKzM2MDEsNyBAQCBnbG9idXNfaW9fc2VuZCgKKyAg ICAgfQorIAorICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CistICAgIAorKworIGVycm9yX3dy aXRlOgorICAgICBpZihnbG9idXNfeGlvX2Vycm9yX2lzX2NhbmNlbGVkKHJlc3VsdCkpCisgICAg IHsKK0BAIC0zNjE3LDcgKzM2MTcsNyBAQCBlcnJvcl9kZF9jbnRsOgorICAgICB7CisgICAgICAg ICBnbG9idXNfeGlvX2RhdGFfZGVzY3JpcHRvcl9kZXN0cm95KGRkKTsKKyAgICAgfQorLSAgICAK KysKKyBlcnJvcl9kZDoKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CitAQCAtMzYzMywxOCArMzYz MywxOCBAQCBnbG9idXNfaW9fd3JpdGV2KAorICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpOworICAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICBu Ynl0ZXM7CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfaW9fd3JpdGV2KTsKKy0gICAgCisrCisg ICAgIEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKGJ5dGVzX3dyaXR0ZW4pOworICAgICAqYnl0ZXNf d3JpdHRlbiA9IDA7CisgICAgIEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKGlvdik7CisgICAgIEds b2J1c0xJT0NoZWNrSGFuZGxlKGhhbmRsZSwgMCk7CistICAgIAorKworICAgICBuYnl0ZXMgPSAw OworICAgICBmb3IoaSA9IDA7IGkgPCBpb3ZjbnQ7IGkrKykKKyAgICAgeworICAgICAgICAgbmJ5 dGVzICs9IGlvdltpXS5pb3ZfbGVuOworICAgICB9CistICAgIAorKworICAgICByZXN1bHQgPSBn bG9idXNfeGlvX3dyaXRldigKKyAgICAgICAgICgqaGFuZGxlKS0+eGlvX2hhbmRsZSwKKyAgICAg ICAgIGlvdiwKK0BAIC0zNjU2LDkgKzM2NTYsOSBAQCBnbG9idXNfaW9fd3JpdGV2KAorICAgICB7 CisgICAgICAgICBnb3RvIGVycm9yX3dyaXRlOworICAgICB9CistICAgIAorKworICAgICByZXR1 cm4gR0xPQlVTX1NVQ0NFU1M7CistICAgIAorKworIGVycm9yX3dyaXRlOgorICAgICBpZihnbG9i dXNfeGlvX2Vycm9yX2lzX2NhbmNlbGVkKHJlc3VsdCkpCisgICAgIHsKK0BAIC0zNjY4LDcgKzM2 NjgsNyBAQCBlcnJvcl93cml0ZToKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2Vycm9yX2dldChy ZXN1bHQpLAorICAgICAgICAgICAgICAgICAoKmhhbmRsZSktPmlvX2hhbmRsZSkpOworICAgICB9 CistICAgIAorKworICAgICByZXR1cm4gcmVzdWx0OworIH0KKyAKK0BAIC0zNjgwLDcgKzM2ODAs NyBAQCBnbG9idXNfbF9pb19ib3VuY2VfY2xvc2VfY2IoCisgICAgIGdsb2J1c194aW9faGFuZGxl X3QgICAgICAgICAgICAgICAgIGhhbmRsZSwKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAg ICAgICAgICAgICAgcmVzdWx0LAorICAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1c2VyX2FyZyk7CistICAgIAorKworIHN0YXRpYworIHZvaWQKKyBnbG9idXNfbF9pb19i b3VuY2VfY2xvc2Vfa2lja291dCgKK0BAIC0zNjg4LDEyICszNjg4LDEyIEBAIGdsb2J1c19sX2lv X2JvdW5jZV9jbG9zZV9raWNrb3V0KAorIHsKKyAgICAgZ2xvYnVzX2xfaW9fYm91bmNlX3QgKiAg ICAgICAgICAgICAgYm91bmNlX2luZm87CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfbF9pb19i b3VuY2VfY2xvc2Vfa2lja291dCk7CistICAgIAorKworICAgICBib3VuY2VfaW5mbyA9IChnbG9i dXNfbF9pb19ib3VuY2VfdCAqKSB1c2VyX2FyZzsKKy0gICAgICAgIAorKworICAgICBnbG9idXNf bF9pb19ib3VuY2VfY2xvc2VfY2IoCisgICAgICAgICBHTE9CVVNfTlVMTCwKKy0gICAgICAgIGJv dW5jZV9pbmZvLT5lcnJvciAKKysgICAgICAgIGJvdW5jZV9pbmZvLT5lcnJvcgorICAgICAgICAg ICAgID8gZ2xvYnVzX2Vycm9yX3B1dChib3VuY2VfaW5mby0+ZXJyb3IpIDogR0xPQlVTX1NVQ0NF U1MsCisgICAgICAgICB1c2VyX2FyZyk7CisgfQorQEAgLTM3MDcsMTIgKzM3MDcsMTIgQEAgZ2xv YnVzX2xfaW9fYm91bmNlX2Nsb3NlX2NiKAorIHsKKyAgICAgZ2xvYnVzX2xfaW9fYm91bmNlX3Qg KiAgICAgICAgICAgICAgYm91bmNlX2luZm87CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfbF9p b19ib3VuY2VfY2xvc2VfY2IpOworLSAgICAKKysKKyAgICAgYm91bmNlX2luZm8gPSAoZ2xvYnVz X2xfaW9fYm91bmNlX3QgKikgdXNlcl9hcmc7CistICAgIAorKworICAgICBpZihnbG9idXNfbF9p b19zaG91bGRfYm91bmNlKGJvdW5jZV9pbmZvKSkKKyAgICAgeworLSAgICAgICAgYm91bmNlX2lu Zm8tPmVycm9yID0gcmVzdWx0ID09IEdMT0JVU19TVUNDRVNTIAorKyAgICAgICAgYm91bmNlX2lu Zm8tPmVycm9yID0gcmVzdWx0ID09IEdMT0JVU19TVUNDRVNTCisgICAgICAgICAgICAgPyBHTE9C VVNfTlVMTCA6IGdsb2J1c19lcnJvcl9nZXQocmVzdWx0KTsKKyAgICAgICAgIHJlc3VsdCA9IGds b2J1c19jYWxsYmFja19zcGFjZV9yZWdpc3Rlcl9vbmVzaG90KAorICAgICAgICAgICAgIEdMT0JV U19OVUxMLAorQEAgLTM3MzIsMTggKzM3MzIsMTggQEAgZ2xvYnVzX2xfaW9fYm91bmNlX2Nsb3Nl X2NiKAorICAgICAgICAgfQorICAgICAgICAgcmV0dXJuOworICAgICB9CistICAgIAorKworICAg ICBib3VuY2VfaW5mby0+Y2Iubm9uX2lvKAorICAgICAgICAgYm91bmNlX2luZm8tPnVzZXJfYXJn LAorICAgICAgICAgYm91bmNlX2luZm8tPmhhbmRsZS0+aW9faGFuZGxlLAorICAgICAgICAgcmVz dWx0KTsKKy0gICAgCisrCisgICAgIGdsb2J1c19tdXRleF9sb2NrKCZib3VuY2VfaW5mby0+aGFu ZGxlLT5wZW5kaW5nX2xvY2spOworICAgICB7CisgICAgICAgICBib3VuY2VfaW5mby0+aGFuZGxl LT5yZWZzLS07CisgICAgIH0KKyAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmYm91bmNlX2luZm8t PmhhbmRsZS0+cGVuZGluZ19sb2NrKTsKKy0gICAgCisrCisgICAgIGdsb2J1c19sX2lvX2hhbmRs ZV9kZXN0cm95KGJvdW5jZV9pbmZvLT5oYW5kbGUpOworICAgICBnbG9idXNfZnJlZShib3VuY2Vf aW5mbyk7CisgfQorQEAgLTM3NTMsNyArMzc1Myw3IEBAIHZvaWQKKyBnbG9idXNfbF9pb19zZXJ2 ZXJfY2xvc2VfY2IoCisgICAgIGdsb2J1c194aW9fc2VydmVyX3QgICAgICAgICAgICAgICAgIHhp b19zZXJ2ZXIsCisgICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJf YXJnKTsKKy0gICAgCisrCisgc3RhdGljCisgdm9pZAorIGdsb2J1c19sX2lvX3NlcnZlcl9jbG9z ZV9raWNrb3V0KAorQEAgLTM3NjEsOSArMzc2MSw5IEBAIGdsb2J1c19sX2lvX3NlcnZlcl9jbG9z ZV9raWNrb3V0KAorIHsKKyAgICAgZ2xvYnVzX2xfaW9fYm91bmNlX3QgKiAgICAgICAgICAgICAg Ym91bmNlX2luZm87CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfbF9pb19zZXJ2ZXJfY2xvc2Vf a2lja291dCk7CistICAgIAorKworICAgICBib3VuY2VfaW5mbyA9IChnbG9idXNfbF9pb19ib3Vu Y2VfdCAqKSB1c2VyX2FyZzsKKy0gICAgICAgIAorKworICAgICBnbG9idXNfbF9pb19zZXJ2ZXJf Y2xvc2VfY2IoR0xPQlVTX05VTEwsIHVzZXJfYXJnKTsKKyB9CisgCitAQCAtMzc3NSwxMyArMzc3 NSwxMyBAQCBnbG9idXNfbF9pb19zZXJ2ZXJfY2xvc2VfY2IoCisgeworICAgICBnbG9idXNfbF9p b19ib3VuY2VfdCAqICAgICAgICAgICAgICBib3VuY2VfaW5mbzsKKyAgICAgR2xvYnVzSU9OYW1l KGdsb2J1c19sX2lvX3NlcnZlcl9jbG9zZV9jYik7CistICAgIAorKworICAgICBib3VuY2VfaW5m byA9IChnbG9idXNfbF9pb19ib3VuY2VfdCAqKSB1c2VyX2FyZzsKKy0gICAgCisrCisgICAgIGlm KGdsb2J1c19sX2lvX3Nob3VsZF9ib3VuY2UoYm91bmNlX2luZm8pKQorICAgICB7CisgICAgICAg ICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgIHJlc3VsdDsKKy0gICAgICAgIAorKwor ICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2NhbGxiYWNrX3NwYWNlX3JlZ2lzdGVyX29uZXNob3Qo CisgICAgICAgICAgICAgR0xPQlVTX05VTEwsCisgICAgICAgICAgICAgR0xPQlVTX05VTEwsCitA QCAtMzgwMCwxOCArMzgwMCwxOCBAQCBnbG9idXNfbF9pb19zZXJ2ZXJfY2xvc2VfY2IoCisgICAg ICAgICB9CisgICAgICAgICByZXR1cm47CisgICAgIH0KKy0gICAgCisrCisgICAgIGJvdW5jZV9p bmZvLT5jYi5ub25faW8oCisgICAgICAgICBib3VuY2VfaW5mby0+dXNlcl9hcmcsCisgICAgICAg ICBib3VuY2VfaW5mby0+aGFuZGxlLT5pb19oYW5kbGUsCisgICAgICAgICBHTE9CVVNfU1VDQ0VT Uyk7CistICAgIAorKworICAgICBnbG9idXNfbXV0ZXhfbG9jaygmYm91bmNlX2luZm8tPmhhbmRs ZS0+cGVuZGluZ19sb2NrKTsKKyAgICAgeworICAgICAgICAgYm91bmNlX2luZm8tPmhhbmRsZS0+ cmVmcy0tOworICAgICB9CisgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmJvdW5jZV9pbmZvLT5o YW5kbGUtPnBlbmRpbmdfbG9jayk7CistICAgIAorKworICAgICBnbG9idXNfbF9pb19oYW5kbGVf ZGVzdHJveShib3VuY2VfaW5mby0+aGFuZGxlKTsKKyAgICAgZ2xvYnVzX2ZyZWUoYm91bmNlX2lu Zm8pOworIH0KK0BAIC0zODI3LDMxICszODI3LDMxIEBAIGdsb2J1c19sX2lvX3JlZ2lzdGVyX2Ns b3NlKAorICAgICBnbG9idXNfbF9pb19oYW5kbGVfdCAqICAgICAgICAgICAgICBpaGFuZGxlOwor ICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAgIEds b2J1c0lPTmFtZShnbG9idXNfaW9fcmVnaXN0ZXJfY2xvc2UpOworLSAgICAKKysKKyAgICAgR2xv YnVzTElPQ2hlY2tOdWxsUGFyYW0oY2FsbGJhY2spOworICAgICBHbG9idXNMSU9DaGVja0hhbmRs ZShoYW5kbGUsIDApOworICAgICBpaGFuZGxlID0gKmhhbmRsZTsKKy0gICAgCisrCisgICAgIHJl c3VsdCA9IEdsb2J1c0xJT01hbGxvYyhib3VuY2VfaW5mbywgZ2xvYnVzX2xfaW9fYm91bmNlX3Qp OworICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGdv dG8gZXJyb3JfYWxsb2M7CisgICAgIH0KKy0gICAgCisrCisgICAgIGJvdW5jZV9pbmZvLT5oYW5k bGUgPSBpaGFuZGxlOworICAgICBib3VuY2VfaW5mby0+Y2Iubm9uX2lvID0gY2FsbGJhY2s7Cisg ICAgIGJvdW5jZV9pbmZvLT51c2VyX2FyZyA9IGNhbGxiYWNrX2FyZzsKKyAgICAgYm91bmNlX2lu Zm8tPmJsb2NraW5nID0gYmxvY2tpbmc7CistICAgIAorKworICAgICBnbG9idXNfbXV0ZXhfbG9j aygmaWhhbmRsZS0+cGVuZGluZ19sb2NrKTsKKyAgICAgeworICAgICAgICAgaWYoaWhhbmRsZS0+ eGlvX2hhbmRsZSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBnbG9idXNfeGlvX2hhbmRsZV90 ICAgICAgICAgICAgIHhpb19oYW5kbGU7CistICAgICAgICAgICAgCisrCisgICAgICAgICAgICAg eGlvX2hhbmRsZSA9IGloYW5kbGUtPnhpb19oYW5kbGU7CisgICAgICAgICAgICAgaWhhbmRsZS0+ eGlvX2hhbmRsZSA9IEdMT0JVU19OVUxMOworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAg IHJlc3VsdCA9IGdsb2J1c194aW9fcmVnaXN0ZXJfY2xvc2UoCisgICAgICAgICAgICAgICAgIHhp b19oYW5kbGUsCisgICAgICAgICAgICAgICAgIEdMT0JVU19OVUxMLAorQEAgLTM4NjEsMTAgKzM4 NjEsMTAgQEAgZ2xvYnVzX2xfaW9fcmVnaXN0ZXJfY2xvc2UoCisgICAgICAgICBlbHNlIGlmKGlo YW5kbGUtPnhpb19zZXJ2ZXIpCisgICAgICAgICB7CisgICAgICAgICAgICAgZ2xvYnVzX3hpb19z ZXJ2ZXJfdCAgICAgICAgICAgICB4aW9fc2VydmVyOworLSAgICAgICAgICAgIAorKworICAgICAg ICAgICAgIHhpb19zZXJ2ZXIgPSBpaGFuZGxlLT54aW9fc2VydmVyOworICAgICAgICAgICAgIGlo YW5kbGUtPnhpb19zZXJ2ZXIgPSBHTE9CVVNfTlVMTDsKKy0gICAgICAgICAgICAKKysKKyAgICAg ICAgICAgICByZXN1bHQgPSBnbG9idXNfeGlvX3NlcnZlcl9yZWdpc3Rlcl9jbG9zZSgKKyAgICAg ICAgICAgICAgICAgeGlvX3NlcnZlciwKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfaW9fc2Vy dmVyX2Nsb3NlX2NiLAorQEAgLTM4ODAsMjQgKzM4ODAsMjQgQEAgZ2xvYnVzX2xfaW9fcmVnaXN0 ZXJfY2xvc2UoCisgICAgICAgICAgICAgICAgICAgICAxLAorICAgICAgICAgICAgICAgICAgICAg KGNoYXIgKikgX2lvX25hbWUpKTsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAg aWYocmVzdWx0ID09IEdMT0JVU19TVUNDRVNTKQorICAgICAgICAgeworICAgICAgICAgICAgIGlo YW5kbGUtPnJlZnMrKzsKKyAgICAgICAgIH0KKyAgICAgfQorICAgICBnbG9idXNfbXV0ZXhfdW5s b2NrKCZpaGFuZGxlLT5wZW5kaW5nX2xvY2spOworLSAgICAKKysKKyAgICAgaWYocmVzdWx0ICE9 IEdMT0JVU19TVUNDRVNTKQorICAgICB7CisgICAgICAgICBnb3RvIGVycm9yX3JlZ2lzdGVyOwor ICAgICB9CistICAgIAorKworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgCisgZXJyb3Jf cmVnaXN0ZXI6CisgICAgIGdsb2J1c19mcmVlKGJvdW5jZV9pbmZvKTsKKy0gICAgCisrCisgZXJy b3JfYWxsb2M6CisgICAgICpoYW5kbGUgPSBHTE9CVVNfTlVMTDsKKyAgICAgcmV0dXJuIHJlc3Vs dDsKK0BAIC0zOTIwLDExICszOTIwLDExIEBAIGdsb2J1c19pb19jbG9zZSgKKyAgICAgZ2xvYnVz X3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OworICAgICBnbG9idXNfbF9pb19t b25pdG9yX3QgICAgICAgICAgICAgICBtb25pdG9yOworICAgICBHbG9idXNJT05hbWUoZ2xvYnVz X2lvX2Nsb3NlKTsKKy0gICAgCisrCisgICAgIG1vbml0b3IuZG9uZSA9IEdMT0JVU19GQUxTRTsK KyAgICAgZ2xvYnVzX211dGV4X2luaXQoJm1vbml0b3IubG9jaywgR0xPQlVTX05VTEwpOworICAg ICBnbG9idXNfY29uZF9pbml0KCZtb25pdG9yLmNvbmQsIEdMT0JVU19OVUxMKTsKKy0gICAgCisr CisgICAgIHJlc3VsdCA9IGdsb2J1c19sX2lvX3JlZ2lzdGVyX2Nsb3NlKAorICAgICAgICAgaGFu ZGxlLCBnbG9idXNfbF9pb19ibG9ja2luZ19jYiwgJm1vbml0b3IsIEdMT0JVU19UUlVFKTsKKyAg ICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorQEAgLTM5MzIsNyArMzkzMiw3IEBAIGds b2J1c19pb19jbG9zZSgKKyAgICAgICAgIG1vbml0b3IuZG9uZSA9IEdMT0JVU19UUlVFOworICAg ICAgICAgbW9uaXRvci5lcnJvciA9IGdsb2J1c19lcnJvcl9nZXQocmVzdWx0KTsKKyAgICAgfQor LSAgICAKKysKKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJm1vbml0b3IubG9jayk7CisgICAgIHsK KyAgICAgICAgIHdoaWxlKCFtb25pdG9yLmRvbmUpCitAQCAtMzk0MSwxOCArMzk0MSwxOCBAQCBn bG9idXNfaW9fY2xvc2UoCisgICAgICAgICB9CisgICAgIH0KKyAgICAgZ2xvYnVzX211dGV4X3Vu bG9jaygmbW9uaXRvci5sb2NrKTsKKy0gICAgCisrCisgICAgIGdsb2J1c19tdXRleF9kZXN0cm95 KCZtb25pdG9yLmxvY2spOworICAgICBnbG9idXNfY29uZF9kZXN0cm95KCZtb25pdG9yLmNvbmQp OworLSAgICAKKysKKyAgICAgaWYobW9uaXRvci5lcnJvciAhPSBHTE9CVVNfTlVMTCkKKyAgICAg eworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2Vycm9yX3B1dChtb25pdG9yLmVycm9yKTsKKyAg ICAgICAgIGdvdG8gZXJyb3JfcmVnaXN0ZXI7CisgICAgIH0KKy0gICAgCisrCisgICAgIHJldHVy biBHTE9CVVNfU1VDQ0VTUzsKKy0gICAgCisrCisgZXJyb3JfcmVnaXN0ZXI6CisgICAgIHJldHVy biByZXN1bHQ7CisgfQorQEAgLTM5NjIsNyArMzk2Miw3IEBAIGdsb2J1c19pb19lb2YoCisgICAg IGdsb2J1c19vYmplY3RfdCAqICAgICAgICAgICAgICAgICAgIGVvZikKKyB7CisgICAgIEdsb2J1 c0lPTmFtZShnbG9idXNfaW9fZW9mKTsKKy0gICAgCisrCisgICAgIGlmKGVvZiAmJiBnbG9idXNf b2JqZWN0X2dldF90eXBlKGVvZikgPT0gR0xPQlVTX0lPX0VSUk9SX1RZUEVfRU9GKQorICAgICB7 CisgICAgICAgICByZXR1cm4gR0xPQlVTX1RSVUU7CitAQCAtMzk4MCw3ICszOTgwLDcgQEAgZ2xv YnVzX2lvX3RjcF9wb3NpeF9jb252ZXJ0KAorICAgICBnbG9idXNfaW9faGFuZGxlX3QgKiAgICAg ICAgICAgICAgICBoYW5kbGUpCisgeworICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX3RjcF9w b3NpeF9jb252ZXJ0KTsKKy0gICAgCisrCisgICAgIHJldHVybiBnbG9idXNfbF9pb190Y3BfY29u bmVjdChHTE9CVVNfTlVMTCwgMCwgc29ja2V0LCBhdHRyLCBoYW5kbGUpOworIH0KKyAKK0BAIC0z OTkxLDcgKzM5OTEsNyBAQCBnbG9idXNfaW9fdGNwX3Bvc2l4X2NvbnZlcnRfbGlzdGVuZXIoCisg ICAgIGdsb2J1c19pb19oYW5kbGVfdCAqICAgICAgICAgICAgICAgIGhhbmRsZSkKKyB7CisgICAg IEdsb2J1c0lPTmFtZShnbG9idXNfaW9fdGNwX3Bvc2l4X2NvbnZlcnRfbGlzdGVuZXIpOworLSAg ICAKKysKKyAgICAgcmV0dXJuIGdsb2J1c19sX2lvX3RjcF9jcmVhdGVfbGlzdGVuZXIoCisgICAg ICAgICBHTE9CVVNfTlVMTCwgMCwgc29ja2V0LCBhdHRyLCBoYW5kbGUpOworIH0KK0BAIC00MDEw LDIzICs0MDEwLDIzIEBAIGdsb2J1c19sX2lvX3JlZ2lzdGVyX2NhbmNlbCgKKyAgICAgZ2xvYnVz X2xfaW9fY2FuY2VsX2luZm9fdCAqICAgICAgICAgY2FuY2VsX2luZm87CisgICAgIGdsb2J1c19s X2lvX2JvdW5jZV90ICogICAgICAgICAgICAgIGJvdW5jZV9pbmZvOworICAgICBHbG9idXNJT05h bWUoZ2xvYnVzX2lvX3JlZ2lzdGVyX2NhbmNlbCk7CistICAgIAorKworICAgICBHbG9idXNMSU9D aGVja0hhbmRsZShoYW5kbGUsIDApOworICAgICBpaGFuZGxlID0gKmhhbmRsZTsKKy0gICAgCisr CisgICAgIHJlc3VsdCA9IEdsb2J1c0xJT01hbGxvYyhjYW5jZWxfaW5mbywgZ2xvYnVzX2xfaW9f Y2FuY2VsX2luZm9fdCk7CisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAg eworICAgICAgICAgZ290byBlcnJvcl9jYW5jZWxfaW5mbzsKKyAgICAgfQorLSAgICAKKysKKyAg ICAgY2FuY2VsX2luZm8tPmhhbmRsZSA9IGhhbmRsZTsKKyAgICAgY2FuY2VsX2luZm8tPnJlZnMg PSAwOworICAgICBjYW5jZWxfaW5mby0+YmxvY2tpbmcgPSBibG9ja2luZzsKKyAgICAgY2FuY2Vs X2luZm8tPnBlcmZvcm1fY2FsbGJhY2tzID0gcGVyZm9ybV9jYWxsYmFja3M7CisgICAgIGNhbmNl bF9pbmZvLT5jYWxsYmFjayA9IGNhbmNlbF9jYWxsYmFjazsKKyAgICAgY2FuY2VsX2luZm8tPnVz ZXJfYXJnID0gY2FuY2VsX2FyZzsKKy0gICAgCisrCisgICAgIGdsb2J1c19tdXRleF9sb2NrKCZp aGFuZGxlLT5wZW5kaW5nX2xvY2spOworICAgICB7CisgICAgICAgICBpZihpaGFuZGxlLT54aW9f aGFuZGxlKQorQEAgLTQwNDgsMTYgKzQwNDgsMTYgQEAgZ2xvYnVzX2xfaW9fcmVnaXN0ZXJfY2Fu Y2VsKAorICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX05VTEwsCisgICAgICAgICAgICAgICAg ICAgICAiaGFuZGxlIiwKKyAgICAgICAgICAgICAgICAgICAgIDEsCistICAgICAgICAgICAgICAg ICAgICAoY2hhciAqKSBfaW9fbmFtZSkpOyAKKysgICAgICAgICAgICAgICAgICAgIChjaGFyICop IF9pb19uYW1lKSk7CisgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAgIGlmKHJlc3Vs dCA9PSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBnbG9idXNfbGlz dF90ICogICAgICAgICAgICAgcGVuZGluZzsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAg ICBwZW5kaW5nID0gaWhhbmRsZS0+cGVuZGluZ19vcHM7CisgICAgICAgICAgICAgaWhhbmRsZS0+ cGVuZGluZ19vcHMgPSBHTE9CVVNfTlVMTDsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAg ICB3aGlsZSghZ2xvYnVzX2xpc3RfZW1wdHkocGVuZGluZykpCisgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICBib3VuY2VfaW5mbyA9IGdsb2J1c19saXN0X3JlbW92ZSgmcGVuZGluZywg cGVuZGluZyk7CitAQCAtNDA2NSw3ICs0MDY1LDcgQEAgZ2xvYnVzX2xfaW9fcmVnaXN0ZXJfY2Fu Y2VsKAorICAgICAgICAgICAgICAgICBjYW5jZWxfaW5mby0+cmVmcysrOworICAgICAgICAgICAg IH0KKyAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgCisrCisgICAgICAgICBpZihjYW5jZWxf aW5mby0+cmVmcyA9PSAwKQorICAgICAgICAgeworICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1 c19jYWxsYmFja19zcGFjZV9yZWdpc3Rlcl9vbmVzaG90KAorQEAgLTQwODIsMTMgKzQwODIsMTMg QEAgZ2xvYnVzX2xfaW9fcmVnaXN0ZXJfY2FuY2VsKAorICAgICAgICAgfQorICAgICB9CisgICAg IGdsb2J1c19tdXRleF91bmxvY2soJmloYW5kbGUtPnBlbmRpbmdfbG9jayk7CistICAgIAorKwor ICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgCisgZXJyb3Jfb25lc2hvdDoKKyAgICAgZ2xv YnVzX211dGV4X3VubG9jaygmaWhhbmRsZS0+cGVuZGluZ19sb2NrKTsKKyAgICAgZ2xvYnVzX2Zy ZWUoY2FuY2VsX2luZm8pOworLSAgICAKKysKKyBlcnJvcl9jYW5jZWxfaW5mbzoKKyAgICAgcmV0 dXJuIHJlc3VsdDsKKyB9CitAQCAtNDExMiwxMSArNDExMiwxMSBAQCBnbG9idXNfaW9fY2FuY2Vs KAorICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAg IGdsb2J1c19sX2lvX21vbml0b3JfdCAgICAgICAgICAgICAgIG1vbml0b3I7CisgICAgIEdsb2J1 c0lPTmFtZShnbG9idXNfaW9fY2FuY2VsKTsKKy0gICAgCisrCisgICAgIG1vbml0b3IuZG9uZSA9 IEdMT0JVU19GQUxTRTsKKyAgICAgZ2xvYnVzX211dGV4X2luaXQoJm1vbml0b3IubG9jaywgR0xP QlVTX05VTEwpOworICAgICBnbG9idXNfY29uZF9pbml0KCZtb25pdG9yLmNvbmQsIEdMT0JVU19O VUxMKTsKKy0gICAgCisrCisgICAgIHJlc3VsdCA9IGdsb2J1c19sX2lvX3JlZ2lzdGVyX2NhbmNl bCgKKyAgICAgICAgIGhhbmRsZSwKKyAgICAgICAgIHBlcmZvcm1fY2FsbGJhY2tzLAorQEAgLTQx MjgsNyArNDEyOCw3IEBAIGdsb2J1c19pb19jYW5jZWwoCisgICAgICAgICBtb25pdG9yLmRvbmUg PSBHTE9CVVNfVFJVRTsKKyAgICAgICAgIG1vbml0b3IuZXJyb3IgPSBnbG9idXNfZXJyb3JfZ2V0 KHJlc3VsdCk7CisgICAgIH0KKy0gICAgCisrCisgICAgIGdsb2J1c19tdXRleF9sb2NrKCZtb25p dG9yLmxvY2spOworICAgICB7CisgICAgICAgICB3aGlsZSghbW9uaXRvci5kb25lKQorQEAgLTQx MzcsMTggKzQxMzcsMTggQEAgZ2xvYnVzX2lvX2NhbmNlbCgKKyAgICAgICAgIH0KKyAgICAgfQor ICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZtb25pdG9yLmxvY2spOworLSAgICAKKysKKyAgICAg Z2xvYnVzX211dGV4X2Rlc3Ryb3koJm1vbml0b3IubG9jayk7CisgICAgIGdsb2J1c19jb25kX2Rl c3Ryb3koJm1vbml0b3IuY29uZCk7CistICAgIAorKworICAgICBpZihtb25pdG9yLmVycm9yICE9 IEdMT0JVU19OVUxMKQorICAgICB7CisgICAgICAgICByZXN1bHQgPSBnbG9idXNfZXJyb3JfcHV0 KG1vbml0b3IuZXJyb3IpOworICAgICAgICAgZ290byBlcnJvcl9yZWdpc3RlcjsKKyAgICAgfQor LSAgICAKKysKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworLSAgICAKKysKKyBlcnJvcl9y ZWdpc3RlcjoKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CitAQCAtNDE2MywxMCArNDE2MywxMCBA QCBnbG9idXNfbF9pb19ib3VuY2Vfc2VsZWN0X2NiKAorICAgICBnbG9idXNfc2l6ZV90ICAgICAg ICAgICAgICAgICAgICAgICBuYnl0ZXMpCisgeworICAgICBnbG9idXNfaW9fY2FsbGJhY2tfdCAg ICAgICAgICAgICAgICBjYjsKKy0gICAgCisrCisgICAgIC8qIGNhbGxiYWNrIGlzIGJ1cmllZCBp biBidWZmZXIuLi4gYmFkIG1lICovCisgICAgIGNiID0gKGdsb2J1c19pb19jYWxsYmFja190KSBi dWY7CistICAgIAorKworICAgICBjYihhcmcsIGhhbmRsZSwgcmVzdWx0KTsKKyB9CisgCitAQCAt NDE4MywxMCArNDE4MywxMCBAQCBnbG9idXNfaW9fcmVnaXN0ZXJfc2VsZWN0KAorICAgICBnbG9i dXNfbF9pb19oYW5kbGVfdCAqICAgICAgICAgICAgICBpaGFuZGxlOworICAgICBnbG9idXNfcmVz dWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAgIEdsb2J1c0lPTmFtZShnbG9i dXNfaW9fcmVnaXN0ZXJfc2VsZWN0KTsKKy0gICAgCisrCisgICAgIEdsb2J1c0xJT0NoZWNrSGFu ZGxlKGhhbmRsZSwgMCk7CisgICAgIGloYW5kbGUgPSAqaGFuZGxlOworLSAgICAKKysKKyAgICAg aWYoZXhjZXB0X2NhbGxiYWNrX2Z1bmMpCisgICAgIHsKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1 c19lcnJvcl9wdXQoCitAQCAtNDIwMCw3ICs0MjAwLDcgQEAgZ2xvYnVzX2lvX3JlZ2lzdGVyX3Nl bGVjdCgKKyAgICAgICAgICAgICAgICAgX0lPU0woIkdsb2J1cyBJTy1YSU8gZG9lcyBub3Qgc3Vw cG9ydCB1c2Ugb2YgdGhlIGV4Y2VwdCBjYWxsYmFjayIpKSk7CisgICAgICAgICBnb3RvIGVycm9y X25vdHN1cHBvcnRlZDsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaWYocmVhZF9jYWxsYmFja19m dW5jKQorICAgICB7CisgICAgICAgICByZXN1bHQgPSBnbG9idXNfaW9fcmVnaXN0ZXJfcmVhZCgK K0BAIC00MjE1LDcgKzQyMTUsNyBAQCBnbG9idXNfaW9fcmVnaXN0ZXJfc2VsZWN0KAorICAgICAg ICAgICAgIGdvdG8gZXJyb3JfcmVnaXN0ZXI7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCisr CisgICAgIGlmKHdyaXRlX2NhbGxiYWNrX2Z1bmMpCisgICAgIHsKKyAgICAgICAgIHJlc3VsdCA9 IGdsb2J1c19pb19yZWdpc3Rlcl93cml0ZSgKK0BAIC00MjMyLDcgKzQyMzIsNyBAQCBnbG9idXNf aW9fcmVnaXN0ZXJfc2VsZWN0KAorICAgICAgICAgICAgIGdvdG8gZXJyb3JfcmVnaXN0ZXI7Cisg ICAgICAgICB9CisgICAgIH0KKy0gICAgCisrCisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsK KyAKKyBlcnJvcl9yZWdpc3RlcjoKK0BAIC00MjQ2LDEwICs0MjQ2LDEwIEBAIGdsb2J1c19pb19n ZXRfaGFuZGxlX3R5cGUoCisgeworICAgICBnbG9idXNfbF9pb19oYW5kbGVfdCAqICAgICAgICAg ICAgICBpaGFuZGxlOworICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX2dldF9oYW5kbGVfdHlw ZSk7CistICAgIAorKworICAgICBHbG9idXNMSU9DaGVja0hhbmRsZShoYW5kbGUsIDApOworICAg ICBpaGFuZGxlID0gKmhhbmRsZTsKKy0gICAgCisrCisgICAgIGlmKGloYW5kbGUtPnR5cGUgPT0g R0xPQlVTX0lfSU9fRklMRV9IQU5ETEUpCisgICAgICAgICByZXR1cm4gR0xPQlVTX0lPX0hBTkRM RV9UWVBFX0ZJTEU7CisgICAgIGVsc2UKK0BAIC00MjYyLDEyICs0MjYyLDEyIEBAIGdsb2J1c19p b19oYW5kbGVfZ2V0X3VzZXJfcG9pbnRlcigKKyAgICAgdm9pZCAqKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdXNlcl9wb2ludGVyKQorIHsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19p b19oYW5kbGVfZ2V0X3VzZXJfcG9pbnRlcik7CistICAgIAorKworICAgICBHbG9idXNMSU9DaGVj a0hhbmRsZShoYW5kbGUsIDApOworICAgICBHbG9idXNMSU9DaGVja051bGxQYXJhbSh1c2VyX3Bv aW50ZXIpOworLSAgICAKKysKKyAgICAgKnVzZXJfcG9pbnRlciA9ICgqaGFuZGxlKS0+dXNlcl9w b2ludGVyOworLSAgICAKKysKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworIH0KKyAKK0BA IC00Mjc3LDExICs0Mjc3LDExIEBAIGdsb2J1c19pb19oYW5kbGVfc2V0X3VzZXJfcG9pbnRlcigK KyAgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9wb2ludGVyKQor IHsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19pb19oYW5kbGVfc2V0X3VzZXJfcG9pbnRlcik7 CistICAgIAorKworICAgICBHbG9idXNMSU9DaGVja0hhbmRsZShoYW5kbGUsIDApOworLSAgICAK KysKKyAgICAgKCpoYW5kbGUpLT51c2VyX3BvaW50ZXIgPSB1c2VyX3BvaW50ZXI7CistICAgIAor KworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgfQorIAorQEAgLTQyOTEsMTIgKzQyOTEs MTIgQEAgZ2xvYnVzX2lvX2hhbmRsZV9nZXRfeGlvX2hhbmRsZSgKKyAgICAgZ2xvYnVzX3hpb19o YW5kbGVfdCAqICAgICAgICAgICAgICAgeGlvX2hhbmRsZSkKKyB7CisgICAgIEdsb2J1c0lPTmFt ZShnbG9idXNfaW9faGFuZGxlX2dldF94aW9faGFuZGxlKTsKKy0gICAgCisrCisgICAgIEdsb2J1 c0xJT0NoZWNrSGFuZGxlKGhhbmRsZSwgMCk7CisgICAgIEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFt KHhpb19oYW5kbGUpOworLSAgICAKKysKKyAgICAgKnhpb19oYW5kbGUgPSAoKmhhbmRsZSktPnhp b19oYW5kbGU7CistICAgIAorKworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgfQorIAor QEAgLTQzMDYsMTAgKzQzMDYsMTAgQEAgZ2xvYnVzX2lvX3RjcF9nZXRfc2VjdXJpdHlfY29udGV4 dCgKKyAgICAgZ3NzX2N0eF9pZF90ICogICAgICAgICAgICAgICAgICAgICAgY29udGV4dCkKKyB7 CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfaW9fdGNwX2dldF9zZWN1cml0eV9jb250ZXh0KTsK Ky0gICAgCisrCisgICAgIEdsb2J1c0xJT0NoZWNrSGFuZGxlKGhhbmRsZSwgR0xPQlVTX0lfSU9f VENQX0hBTkRMRSk7CisgICAgIEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKGNvbnRleHQpOworLSAg ICAKKysKKyAgICAgcmV0dXJuIGdsb2J1c194aW9faGFuZGxlX2NudGwoCisgICAgICAgICAoKmhh bmRsZSktPnhpb19oYW5kbGUsCisgICAgICAgICBnbG9idXNfbF9pb19nc2lfZHJpdmVyLAorQEAg LTQzMjMsMTAgKzQzMjMsMTAgQEAgZ2xvYnVzX2lvX3RjcF9nZXRfZGVsZWdhdGVkX2NyZWRlbnRp YWwoCisgICAgIGdzc19jcmVkX2lkX3QgKiAgICAgICAgICAgICAgICAgICAgIGNyZWQpCisgewor ICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX3RjcF9nZXRfZGVsZWdhdGVkX2NyZWRlbnRpYWwp OworLSAgICAKKysKKyAgICAgR2xvYnVzTElPQ2hlY2tIYW5kbGUoaGFuZGxlLCBHTE9CVVNfSV9J T19UQ1BfSEFORExFKTsKKyAgICAgR2xvYnVzTElPQ2hlY2tOdWxsUGFyYW0oY3JlZCk7CistICAg IAorKworICAgICByZXR1cm4gZ2xvYnVzX3hpb19oYW5kbGVfY250bCgKKyAgICAgICAgICgqaGFu ZGxlKS0+eGlvX2hhbmRsZSwKKyAgICAgICAgIGdsb2J1c19sX2lvX2dzaV9kcml2ZXIsCitAQCAt NDM0MSwyMyArNDM0MSwyMyBAQCBnbG9idXNfaW9fdGNwX3NldF9jcmVkZW50aWFsKAorICAgICBn c3NfY3JlZF9pZF90ICAgICAgICAgICAgICAgICAgICAgICBjcmVkZW50aWFsKQorIHsKKyAgICAg R2xvYnVzSU9OYW1lKGdsb2J1c19pb190Y3Bfc2V0X2NyZWRlbnRpYWwpOworLSAgICAKKysKKyAg ICAgR2xvYnVzTElPQ2hlY2tIYW5kbGUoaGFuZGxlLCBHTE9CVVNfSV9JT19UQ1BfSEFORExFKTsK Ky0gICAgCisrCisgICAgIGlmICgoKmhhbmRsZSktPnhpb19oYW5kbGUpCisgICAgIHsKKyAgICAg ICAgIHJldHVybiBnbG9idXNfeGlvX2hhbmRsZV9jbnRsKAorLSAgICAgICAgICAgICgqaGFuZGxl KS0+eGlvX2hhbmRsZSwgCistICAgICAgICAgICAgZ2xvYnVzX2xfaW9fZ3NpX2RyaXZlciwgCist ICAgICAgICAgICAgR0xPQlVTX1hJT19HU0lfU0VUX0NSRURFTlRJQUwsIAorKyAgICAgICAgICAg ICgqaGFuZGxlKS0+eGlvX2hhbmRsZSwKKysgICAgICAgICAgICBnbG9idXNfbF9pb19nc2lfZHJp dmVyLAorKyAgICAgICAgICAgIEdMT0JVU19YSU9fR1NJX1NFVF9DUkVERU5USUFMLAorICAgICAg ICAgICAgIGNyZWRlbnRpYWwpOworICAgICB9CisgICAgIGVsc2UKKyAgICAgeworICAgICAgICAg cmV0dXJuIGdsb2J1c194aW9fYXR0cl9jbnRsKAorLSAgICAgICAgICAgICgqaGFuZGxlKS0+YXR0 ci0+YXR0ciwgCistICAgICAgICAgICAgZ2xvYnVzX2xfaW9fZ3NpX2RyaXZlciwgCistICAgICAg ICAgICAgR0xPQlVTX1hJT19HU0lfU0VUX0NSRURFTlRJQUwsIAorKyAgICAgICAgICAgICgqaGFu ZGxlKS0+YXR0ci0+YXR0ciwKKysgICAgICAgICAgICBnbG9idXNfbF9pb19nc2lfZHJpdmVyLAor KyAgICAgICAgICAgIEdMT0JVU19YSU9fR1NJX1NFVF9DUkVERU5USUFMLAorICAgICAgICAgICAg IGNyZWRlbnRpYWwpOworICAgICB9CisgfQorQEAgLTQzNjksMjIgKzQzNjksMjIgQEAgZ2xvYnVz X2lvX3RjcF9nZXRfY3JlZGVudGlhbCgKKyAgICAgZ3NzX2NyZWRfaWRfdCAqICAgICAgICAgICAg ICAgICAgICAgY3JlZGVudGlhbCkKKyB7CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfaW9fdGNw X2dldF9jcmVkZW50aWFsKTsKKy0gICAgCisrCisgICAgIEdsb2J1c0xJT0NoZWNrSGFuZGxlKGhh bmRsZSwgR0xPQlVTX0lfSU9fVENQX0hBTkRMRSk7CisgICAgIEdsb2J1c0xJT0NoZWNrTnVsbFBh cmFtKGNyZWRlbnRpYWwpOworLSAgICAKKysKKyAgICAgcmV0dXJuIGdsb2J1c194aW9faGFuZGxl X2NudGwoCistICAgICAgICAoKmhhbmRsZSktPnhpb19oYW5kbGUsIAorLSAgICAgICAgZ2xvYnVz X2xfaW9fZ3NpX2RyaXZlciwgCisrICAgICAgICAoKmhhbmRsZSktPnhpb19oYW5kbGUsCisrICAg ICAgICBnbG9idXNfbF9pb19nc2lfZHJpdmVyLAorICAgICAgICAgR0xPQlVTX1hJT19HU0lfR0VU X0NSRURFTlRJQUwsCisgICAgICAgICBjcmVkZW50aWFsKTsKKyB9CisgCisgc3RhdGljCistdm9p ZCAKKyt2b2lkCisgZ2xvYnVzX2xfaW9faW5pdF9kZWxlZ2F0aW9uX2NiKAorLSAgICBnbG9idXNf cmVzdWx0X3QJCQlyZXN1bHQsCistICAgIHZvaWQgKgkJCQl1c2VyX2FyZykKKysgICAgZ2xvYnVz X3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LAorKyAgICB2b2lkICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2FyZykKKyB7CisgICAgIGdsb2J1c19sX2lvX2Rl bGVnYXRpb25fY2JfYXJnX3QgKiAgIHdyYXBwZXI7CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNf bF9pb19pbml0X2RlbGVnYXRpb25fY2IpOworQEAgLTQ0MDMsMTYgKzQ0MDMsMTYgQEAgZ2xvYnVz X2xfaW9faW5pdF9kZWxlZ2F0aW9uX2NiKAorIH0KKyAKKyBzdGF0aWMKKy12b2lkIAorK3ZvaWQK KyBnbG9idXNfbF9pb19hY2NlcHRfZGVsZWdhdGlvbl9jYigKKy0gICAgZ2xvYnVzX3Jlc3VsdF90 CQkJcmVzdWx0LAorKyAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1 bHQsCisgICAgIGdzc19jcmVkX2lkX3QgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlZF9j cmVkLAorICAgICBPTV91aW50MzIgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lX3JlYywK Ky0gICAgdm9pZCAqCQkJCXVzZXJfYXJnKQorKyAgICB2b2lkICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1c2VyX2FyZykKKyB7CisgICAgIGdsb2J1c19sX2lvX2RlbGVnYXRpb25fY2Jf YXJnX3QgKiAgIHdyYXBwZXI7CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfbF9pb19hY2NlcHRf ZGVsZWdhdGlvbl9jYik7CistICAgIAorKworICAgICB3cmFwcGVyID0gKGdsb2J1c19sX2lvX2Rl bGVnYXRpb25fY2JfYXJnX3QgKikgdXNlcl9hcmc7CisgCisgICAgIHdyYXBwZXItPmNhbGxiYWNr KHdyYXBwZXItPnVzZXJfYXJnLAorQEAgLTQ0NTQsNyArNDQ1NCw3IEBAIGdsb2J1c19pb19yZWdp c3Rlcl9pbml0X2RlbGVnYXRpb24oCisgICAgIHdyYXBwZXItPmhhbmRsZSA9IGhhbmRsZTsKKyAg ICAgd3JhcHBlci0+dXNlcl9hcmcgPSBjYWxsYmFja19hcmc7CisgICAgIHdyYXBwZXItPmNhbGxi YWNrID0gY2FsbGJhY2s7CistICAgIAorKworICAgICByZXN1bHQgPSBnbG9idXNfeGlvX2hhbmRs ZV9jbnRsKAorICAgICAgICAgaWhhbmRsZS0+eGlvX2hhbmRsZSwKKyAgICAgICAgIGdsb2J1c19s X2lvX2dzaV9kcml2ZXIsCitAQCAtNDQ2OSw3ICs0NDY5LDcgQEAgZ2xvYnVzX2lvX3JlZ2lzdGVy X2luaXRfZGVsZWdhdGlvbigKKyAgICAgeworICAgICAgICAgZnJlZSh3cmFwcGVyKTsKKyAgICAg fQorLSAgICAKKysKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CisgCitAQCAtNDQ4MiwxMiArNDQ4 MiwxMiBAQCBnbG9idXNfaW9faW5pdF9kZWxlZ2F0aW9uKAorICAgICBPTV91aW50MzIgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aW1lX3JlcSkKKyB7CisgICAgIGdsb2J1c19yZXN1bHRfdCAg ICAgICAgICAgICAgICAgICAgIHJlc3VsdDsKKy0gICAgZ2xvYnVzX2xfaW9faGFuZGxlX3QgKiAg ICAgICAgICAgICAgaWhhbmRsZTsgICAgCisrICAgIGdsb2J1c19sX2lvX2hhbmRsZV90ICogICAg ICAgICAgICAgIGloYW5kbGU7CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfaW9faW5pdF9kZWxl Z2F0aW9uKTsKKy0gICAgCisrCisgICAgIEdsb2J1c0xJT0NoZWNrSGFuZGxlKGhhbmRsZSwgR0xP QlVTX0lfSU9fVENQX0hBTkRMRSk7CisgICAgIGloYW5kbGUgPSAqaGFuZGxlOworLSAgICAKKysK KyAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19oYW5kbGVfY250bCgKKyAgICAgICAgIGloYW5kbGUt Pnhpb19oYW5kbGUsCisgICAgICAgICBnbG9idXNfbF9pb19nc2lfZHJpdmVyLAorQEAgLTQ0OTUs OCArNDQ5NSw4IEBAIGdsb2J1c19pb19pbml0X2RlbGVnYXRpb24oCisgICAgICAgICBjcmVkX2hh bmRsZSwKKyAgICAgICAgIHJlc3RyaWN0aW9uX29pZHMsCisgICAgICAgICByZXN0cmljdGlvbl9i dWZmZXJzLAorLSAgICAgICAgdGltZV9yZXEpOyAgICAKKy0gICAgCisrICAgICAgICB0aW1lX3Jl cSk7CisrCisgICAgIHJldHVybiByZXN1bHQ7CisgfQorIAorQEAgLTQ1MTMsNyArNDUxMyw3IEBA IGdsb2J1c19pb19yZWdpc3Rlcl9hY2NlcHRfZGVsZWdhdGlvbigKKyAgICAgZ2xvYnVzX2xfaW9f aGFuZGxlX3QgKiAgICAgICAgICAgICAgaWhhbmRsZTsKKyAgICAgZ2xvYnVzX2xfaW9fZGVsZWdh dGlvbl9jYl9hcmdfdCAqICAgd3JhcHBlcjsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19pb19y ZWdpc3Rlcl9hY2NlcHRfZGVsZWdhdGlvbik7CistICAgIAorKworICAgICBHbG9idXNMSU9DaGVj a051bGxQYXJhbShjYWxsYmFjayk7CisgICAgIEdsb2J1c0xJT0NoZWNrSGFuZGxlKGhhbmRsZSwg R0xPQlVTX0lfSU9fVENQX0hBTkRMRSk7CisgICAgIGloYW5kbGUgPSAqaGFuZGxlOworQEAgLTQ1 MzYsNyArNDUzNiw3IEBAIGdsb2J1c19pb19yZWdpc3Rlcl9hY2NlcHRfZGVsZWdhdGlvbigKKyAg ICAgICAgIHJlc3RyaWN0aW9uX2J1ZmZlcnMsCisgICAgICAgICB0aW1lX3JlcSwKKyAgICAgICAg IGdsb2J1c19sX2lvX2FjY2VwdF9kZWxlZ2F0aW9uX2NiLAorLSAgICAgICAgd3JhcHBlcik7ICAg IAorKyAgICAgICAgd3JhcHBlcik7CisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykK KyAgICAgeworICAgICAgICAgZnJlZSh3cmFwcGVyKTsKK0BAIC00NTU1LDEyICs0NTU1LDEyIEBA IGdsb2J1c19pb19hY2NlcHRfZGVsZWdhdGlvbigKKyAgICAgT01fdWludDMyICogICAgICAgICAg ICAgICAgICAgICAgICAgdGltZV9yZWMpCisgeworICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAg ICAgICAgICAgICAgICByZXN1bHQ7CistICAgIGdsb2J1c19sX2lvX2hhbmRsZV90ICogICAgICAg ICAgICAgIGloYW5kbGU7ICAgIAorKyAgICBnbG9idXNfbF9pb19oYW5kbGVfdCAqICAgICAgICAg ICAgICBpaGFuZGxlOworICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX2FjY2VwdF9kZWxlZ2F0 aW9uKTsKKy0gICAgCisrCisgICAgIEdsb2J1c0xJT0NoZWNrSGFuZGxlKGhhbmRsZSwgR0xPQlVT X0lfSU9fVENQX0hBTkRMRSk7CisgICAgIGloYW5kbGUgPSAqaGFuZGxlOworLSAgICAKKysKKyAg ICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19oYW5kbGVfY250bCgKKyAgICAgICAgIGloYW5kbGUtPnhp b19oYW5kbGUsCisgICAgICAgICBnbG9idXNfbF9pb19nc2lfZHJpdmVyLAorQEAgLTQ1NzAsOSAr NDU3MCw5IEBAIGdsb2J1c19pb19hY2NlcHRfZGVsZWdhdGlvbigKKyAgICAgICAgIHJlc3RyaWN0 aW9uX2J1ZmZlcnMsCisgICAgICAgICB0aW1lX3JlcSwKKyAgICAgICAgIHRpbWVfcmVjKTsKKy0g ICAgCisrCisgICAgIHJldHVybiByZXN1bHQ7CistICAgIAorKworIH0KKyAKKyBnbG9idXNfcmVz dWx0X3QKK0BAIC00NTg0LDcgKzQ1ODQsNyBAQCBnbG9idXNfaW9fYXR0cl9zZXRfc2VjdXJlX2F1 dGhlbnRpY2F0aW9uX21vZGUoCisgeworICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAg ICAgICAgICByZXN1bHQgPSBHTE9CVVNfU1VDQ0VTUzsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1 c19pb19hdHRyX3NldF9zZWN1cmVfYXV0aGVudGljYXRpb25fbW9kZSk7CistICAgIAorKworICAg ICBHbG9idXNMSU9DaGVja0F0dHIoYXR0ciwgR0xPQlVTX0lfSU9fVENQX0FUVFIpOworICAgICAo KmF0dHIpLT5hdXRoZW50aWNhdGlvbl9tb2RlID0gbW9kZTsKKyAKK0BAIC00NTkzLDE4ICs0NTkz LDE4IEBAIGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfYXV0aGVudGljYXRpb25fbW9kZSgKKyAg ICAgICBjYXNlIEdMT0JVU19JT19TRUNVUkVfQVVUSEVOVElDQVRJT05fTU9ERV9HU1NBUEk6Cisg ICAgICAgY2FzZSBHTE9CVVNfSU9fU0VDVVJFX0FVVEhFTlRJQ0FUSU9OX01PREVfTVVUVUFMOgor ICAgICAgICAgaWYoY3JlZGVudGlhbCAhPSBHU1NfQ19OT19DUkVERU5USUFMKQorLSAgICAgICAg eyAKKysgICAgICAgIHsKKyAgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNfeGlvX2F0dHJfY250 bCgKKy0gICAgICAgICAgICAgICAgKCphdHRyKS0+YXR0ciwgCistICAgICAgICAgICAgICAgIGds b2J1c19sX2lvX2dzaV9kcml2ZXIsIAorLSAgICAgICAgICAgICAgICBHTE9CVVNfWElPX0dTSV9T RVRfQ1JFREVOVElBTCwgCisrICAgICAgICAgICAgICAgICgqYXR0ciktPmF0dHIsCisrICAgICAg ICAgICAgICAgIGdsb2J1c19sX2lvX2dzaV9kcml2ZXIsCisrICAgICAgICAgICAgICAgIEdMT0JV U19YSU9fR1NJX1NFVF9DUkVERU5USUFMLAorICAgICAgICAgICAgICAgICBjcmVkZW50aWFsKTsK KyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworICAgICAgIGNhc2UgR0xPQlVTX0lPX1NFQ1VS RV9BVVRIRU5USUNBVElPTl9NT0RFX0FOT05ZTU9VUzoKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1 c194aW9fYXR0cl9jbnRsKAorLSAgICAgICAgICAgICgqYXR0ciktPmF0dHIsIAorLSAgICAgICAg ICAgIGdsb2J1c19sX2lvX2dzaV9kcml2ZXIsIAorKyAgICAgICAgICAgICgqYXR0ciktPmF0dHIs CisrICAgICAgICAgICAgZ2xvYnVzX2xfaW9fZ3NpX2RyaXZlciwKKyAgICAgICAgICAgICBHTE9C VVNfWElPX0dTSV9TRVRfQU5PTik7CisgICAgICAgICBicmVhazsKKyAgICAgICBjYXNlIEdMT0JV U19JT19TRUNVUkVfQVVUSEVOVElDQVRJT05fTU9ERV9OT05FOgorQEAgLTQ2MTMsNyArNDYxMyw3 IEBAIGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfYXV0aGVudGljYXRpb25fbW9kZSgKKyAgICAg ICAgIGdsb2J1c19hc3NlcnQoMCAmJiAiVW5leHBlY3RlZCBzdGF0ZSIpOworICAgICAgICAgYnJl YWs7CisgICAgIH0KKy0gICAgCisrCisgICAgIHJldHVybiByZXN1bHQ7CisgfQorIAorQEAgLTQ2 MjUsMTAgKzQ2MjUsMTAgQEAgZ2xvYnVzX2lvX2F0dHJfZ2V0X3NlY3VyZV9hdXRoZW50aWNhdGlv bl9tb2RlKAorICAgICBnc3NfY3JlZF9pZF90ICogICAgICAgICAgICAgICAgICAgICBjcmVkZW50 aWFsKQorIHsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19pb19hdHRyX2dldF9zZWN1cmVfYXV0 aGVudGljYXRpb25fbW9kZSk7CistICAgIAorKworICAgICBHbG9idXNMSU9DaGVja0F0dHIoYXR0 ciwgR0xPQlVTX0lfSU9fVENQX0FUVFIpOworICAgICBHbG9idXNMSU9DaGVja051bGxQYXJhbSht b2RlKTsKKy0gICAgCisrCisgICAgICptb2RlID0gKCphdHRyKS0+YXV0aGVudGljYXRpb25fbW9k ZTsKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworIH0KK0BAIC00NjQ1LDcgKzQ2NDUsNyBA QCBnbG9idXNfaW9fYXR0cl9zZXRfc2VjdXJlX2F1dGhvcml6YXRpb25fbW9kZSgKKyAgICAgT01f dWludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFqb3Jfc3RhdHVzOworICAgICBPTV91 aW50MzIgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5vcl9zdGF0dXM7CisgICAgIEdsb2J1 c0lPTmFtZShnbG9idXNfaW9fYXR0cl9zZXRfc2VjdXJlX2F1dGhvcml6YXRpb25fbW9kZSk7Cist ICAgIAorKworICAgICBHbG9idXNMSU9DaGVja0F0dHIoYXR0ciwgR0xPQlVTX0lfSU9fVENQX0FU VFIpOworICAgICAoKmF0dHIpLT5hdXRob3JpemF0aW9uX21vZGUgPSBtb2RlOworIAorQEAgLTQ2 NjEsOSArNDY2MSw5IEBAIGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfYXV0aG9yaXphdGlvbl9t b2RlKAorICAgICAgICAgICAgICgqYXR0ciktPmF1dGh6X2RhdGEuaWRlbnRpdHkgPSBHU1NfQ19O T19OQU1FOworICAgICAgICAgfQorICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19hdHRyX2Nu dGwoCistICAgICAgICAgICAgKCphdHRyKS0+YXR0ciwgCistICAgICAgICAgICAgZ2xvYnVzX2xf aW9fZ3NpX2RyaXZlciwgCistICAgICAgICAgICAgR0xPQlVTX1hJT19HU0lfU0VUX0FVVEhPUkla QVRJT05fTU9ERSwgCisrICAgICAgICAgICAgKCphdHRyKS0+YXR0ciwKKysgICAgICAgICAgICBn bG9idXNfbF9pb19nc2lfZHJpdmVyLAorKyAgICAgICAgICAgIEdMT0JVU19YSU9fR1NJX1NFVF9B VVRIT1JJWkFUSU9OX01PREUsCisgICAgICAgICAgICAgbW9kZSk7CisgICAgICAgICBicmVhazsK KyAgICAgICBjYXNlIEdMT0JVU19JT19TRUNVUkVfQVVUSE9SSVpBVElPTl9NT0RFX0lERU5USVRZ OgorQEAgLTQ2NzIsNyArNDY3Miw3IEBAIGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfYXV0aG9y aXphdGlvbl9tb2RlKAorICAgICAgICAgeworICAgICAgICAgICAgIGdzc19yZWxlYXNlX25hbWUo Jm1pbm9yX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoKmF0dHIpLT5h dXRoel9kYXRhLmlkZW50aXR5KTsKKy0gICAgICAgIH0gICAgICAgIAorKyAgICAgICAgfQorIAor ICAgICAgICAgbWFqb3Jfc3RhdHVzID0gZ3NzX2R1cGxpY2F0ZV9uYW1lKCZtaW5vcl9zdGF0dXMs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpkYXRhKS0+aWRl bnRpdHksCitAQCAtNDY4NSwzNCArNDY4NSwzNCBAQCBnbG9idXNfaW9fYXR0cl9zZXRfc2VjdXJl X2F1dGhvcml6YXRpb25fbW9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWlub3Jfc3RhdHVzKTsKKyAgICAgICAgICAgICBnb3RvIGVycm9yOwor ICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICByZXN1bHQgPSBnbG9idXNfeGlvX2F0 dHJfY250bCgKKy0gICAgICAgICAgICAoKmF0dHIpLT5hdHRyLCAKKy0gICAgICAgICAgICBnbG9i dXNfbF9pb19nc2lfZHJpdmVyLCAKKy0gICAgICAgICAgICBHTE9CVVNfWElPX0dTSV9TRVRfQVVU SE9SSVpBVElPTl9NT0RFLCAKKysgICAgICAgICAgICAoKmF0dHIpLT5hdHRyLAorKyAgICAgICAg ICAgIGdsb2J1c19sX2lvX2dzaV9kcml2ZXIsCisrICAgICAgICAgICAgR0xPQlVTX1hJT19HU0lf U0VUX0FVVEhPUklaQVRJT05fTU9ERSwKKyAgICAgICAgICAgICBtb2RlKTsKKyAKKyAgICAgICAg IGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBn b3RvIGVycm9yOworICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICByZXN1bHQgPSBn bG9idXNfeGlvX2F0dHJfY250bCgKKy0gICAgICAgICAgICAoKmF0dHIpLT5hdHRyLCAKKy0gICAg ICAgICAgICBnbG9idXNfbF9pb19nc2lfZHJpdmVyLCAKKy0gICAgICAgICAgICBHTE9CVVNfWElP X0dTSV9TRVRfVEFSR0VUX05BTUUsIAorKyAgICAgICAgICAgICgqYXR0ciktPmF0dHIsCisrICAg ICAgICAgICAgZ2xvYnVzX2xfaW9fZ3NpX2RyaXZlciwKKysgICAgICAgICAgICBHTE9CVVNfWElP X0dTSV9TRVRfVEFSR0VUX05BTUUsCisgICAgICAgICAgICAgKCphdHRyKS0+YXV0aHpfZGF0YS5p ZGVudGl0eSk7CistCWJyZWFrOworKyAgICAgICAgYnJlYWs7CisgICAgICAgY2FzZSBHTE9CVVNf SU9fU0VDVVJFX0FVVEhPUklaQVRJT05fTU9ERV9DQUxMQkFDSzoKKyAgICAgICAgIEdsb2J1c0xJ T0NoZWNrTnVsbFBhcmFtKGRhdGEpOworLQkoKmF0dHIpLT5hdXRoel9kYXRhLmNhbGxiYWNrID0g KCpkYXRhKS0+Y2FsbGJhY2s7CistCSgqYXR0ciktPmF1dGh6X2RhdGEuY2FsbGJhY2tfYXJnID0g KCpkYXRhKS0+Y2FsbGJhY2tfYXJnOworKyAgICAgICAgKCphdHRyKS0+YXV0aHpfZGF0YS5jYWxs YmFjayA9ICgqZGF0YSktPmNhbGxiYWNrOworKyAgICAgICAgKCphdHRyKS0+YXV0aHpfZGF0YS5j YWxsYmFja19hcmcgPSAoKmRhdGEpLT5jYWxsYmFja19hcmc7CisgICAgICAgICByZXN1bHQgPSBn bG9idXNfeGlvX2F0dHJfY250bCgKKy0gICAgICAgICAgICAoKmF0dHIpLT5hdHRyLCAKKy0gICAg ICAgICAgICBnbG9idXNfbF9pb19nc2lfZHJpdmVyLCAKKy0gICAgICAgICAgICBHTE9CVVNfWElP X0dTSV9TRVRfQVVUSE9SSVpBVElPTl9NT0RFLCAKKysgICAgICAgICAgICAoKmF0dHIpLT5hdHRy LAorKyAgICAgICAgICAgIGdsb2J1c19sX2lvX2dzaV9kcml2ZXIsCisrICAgICAgICAgICAgR0xP QlVTX1hJT19HU0lfU0VUX0FVVEhPUklaQVRJT05fTU9ERSwKKyAgICAgICAgICAgICBHTE9CVVNf SU9fU0VDVVJFX0FVVEhPUklaQVRJT05fTU9ERV9OT05FKTsKKy0JYnJlYWs7CisrICAgICAgICBi cmVhazsKKyAgICAgfQorIAorICBlcnJvcjoKK0BAIC00NzMxLDI4ICs0NzMxLDI4IEBAIGdsb2J1 c19pb19hdHRyX2dldF9zZWN1cmVfYXV0aG9yaXphdGlvbl9tb2RlKAorICAgICBPTV91aW50MzIg ICAgICAgICAgICAgICAgICAgICAgICAgICBtYWpvcl9zdGF0dXM7CisgICAgIE9NX3VpbnQzMiAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1pbm9yX3N0YXR1czsKKyAgICAgR2xvYnVzSU9OYW1l KGdsb2J1c19pb19hdHRyX2dldF9zZWN1cmVfYXV0aG9yaXphdGlvbl9tb2RlKTsKKy0gICAgCisr CisgICAgIEdsb2J1c0xJT0NoZWNrQXR0cihhdHRyLCBHTE9CVVNfSV9JT19UQ1BfQVRUUik7Cisg ICAgIEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKGRhdGEpOworICAgICBHbG9idXNMSU9DaGVja051 bGxQYXJhbShtb2RlKTsKKy0gICAgCisrCisgICAgIHJlc3VsdCA9IEdsb2J1c0xJT01hbGxvYygq ZGF0YSwgZ2xvYnVzX2xfaW9fc2VjdXJlX2F1dGhvcml6YXRpb25fZGF0YV90KTsKKyAgICAgaWYo cmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICB7CisgICAgICAgICBnb3RvIGRvbmU7Cisg ICAgIH0KKy0gICAgCisrCisgICAgIG1lbXNldCgqZGF0YSwgMCwgc2l6ZW9mKGdsb2J1c19sX2lv X3NlY3VyZV9hdXRob3JpemF0aW9uX2RhdGFfdCkpOworICAgICAqbW9kZSA9ICgqYXR0ciktPmF1 dGhvcml6YXRpb25fbW9kZTsKKyAKKyAgICAgc3dpdGNoKCgqYXR0ciktPmF1dGhvcml6YXRpb25f bW9kZSkKKyAgICAgeworICAgICAgIGNhc2UgR0xPQlVTX0lPX1NFQ1VSRV9BVVRIT1JJWkFUSU9O X01PREVfTk9ORToKKy0JYnJlYWs7CisrICAgICAgICBicmVhazsKKyAgICAgICBjYXNlIEdMT0JV U19JT19TRUNVUkVfQVVUSE9SSVpBVElPTl9NT0RFX1NFTEY6CistCWJyZWFrOworKyAgICAgICAg YnJlYWs7CisgICAgICAgY2FzZSBHTE9CVVNfSU9fU0VDVVJFX0FVVEhPUklaQVRJT05fTU9ERV9I T1NUOgorLQlicmVhazsKKysgICAgICAgIGJyZWFrOworICAgICAgIGNhc2UgR0xPQlVTX0lPX1NF Q1VSRV9BVVRIT1JJWkFUSU9OX01PREVfSURFTlRJVFk6CisgICAgICAgICBtYWpvcl9zdGF0dXMg PSBnc3NfZHVwbGljYXRlX25hbWUoJm1pbm9yX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKmF0dHIpLT5hdXRoel9kYXRhLmlkZW50aXR5LAorQEAg LTQ3NjMsMTUgKzQ3NjMsMTUgQEAgZ2xvYnVzX2lvX2F0dHJfZ2V0X3NlY3VyZV9hdXRob3JpemF0 aW9uX21vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1ham9yX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWlub3Jfc3RhdHVzKTsKKyAgICAgICAgIH0KKy0JYnJlYWs7CisrICAgICAg ICBicmVhazsKKyAgICAgICBjYXNlIEdMT0JVU19JT19TRUNVUkVfQVVUSE9SSVpBVElPTl9NT0RF X0NBTExCQUNLOgorLQkoKmRhdGEpLT5jYWxsYmFjayA9ICgqYXR0ciktPmF1dGh6X2RhdGEuY2Fs bGJhY2s7CistCSgqZGF0YSktPmNhbGxiYWNrX2FyZyA9ICgqYXR0ciktPmF1dGh6X2RhdGEuY2Fs bGJhY2tfYXJnOworLQlicmVhazsKKysgICAgICAgICgqZGF0YSktPmNhbGxiYWNrID0gKCphdHRy KS0+YXV0aHpfZGF0YS5jYWxsYmFjazsKKysgICAgICAgICgqZGF0YSktPmNhbGxiYWNrX2FyZyA9 ICgqYXR0ciktPmF1dGh6X2RhdGEuY2FsbGJhY2tfYXJnOworKyAgICAgICAgYnJlYWs7CisgICAg IH0KKyAKKyAgZG9uZToKKy0gICAgCisrCisgICAgIHJldHVybiByZXN1bHQ7CisgfQorIAorQEAg LTQ3ODEsNyArNDc4MSw3IEBAIGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfZXh0ZW5zaW9uX29p ZHMoCisgICAgIGdzc19PSURfc2V0ICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9v aWRzKQorIHsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfZXh0 ZW5zaW9uX29pZHMpOworLSAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7ICAgIAorKyAgICByZXR1 cm4gR0xPQlVTX1NVQ0NFU1M7CisgfQorIAorIGdsb2J1c19yZXN1bHRfdAorQEAgLTQ3OTAsNyAr NDc5MCw3IEBAIGdsb2J1c19pb19hdHRyX2dldF9zZWN1cmVfZXh0ZW5zaW9uX29pZHMoCisgICAg IGdzc19PSURfc2V0ICogICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9vaWRzKQorIHsK KyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19pb19hdHRyX2dldF9zZWN1cmVfZXh0ZW5zaW9uX29p ZHMpOworLSAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7ICAgIAorKyAgICByZXR1cm4gR0xPQlVT X1NVQ0NFU1M7CisgfQorIAorIGdsb2J1c19yZXN1bHRfdAorQEAgLTQ4MDEsMTMgKzQ4MDEsMTMg QEAgZ2xvYnVzX2lvX3NlY3VyZV9hdXRob3JpemF0aW9uX2RhdGFfaW5pdGlhbGl6ZSgKKyAgICAg R2xvYnVzSU9OYW1lKGdsb2J1c19pb19zZWN1cmVfYXV0aG9yaXphdGlvbl9kYXRhX2luaXRpYWxp emUpOworIAorICAgICBHbG9idXNMSU9DaGVja051bGxQYXJhbShkYXRhKTsKKy0gICAgCisrCisg ICAgIHJlc3VsdCA9IEdsb2J1c0xJT01hbGxvYygqZGF0YSwgZ2xvYnVzX2xfaW9fc2VjdXJlX2F1 dGhvcml6YXRpb25fZGF0YV90KTsKKyAgICAgaWYocmVzdWx0ID09IEdMT0JVU19TVUNDRVNTKQor ICAgICB7CisgICAgICAgICBtZW1zZXQoKmRhdGEsIDAsIHNpemVvZihnbG9idXNfbF9pb19zZWN1 cmVfYXV0aG9yaXphdGlvbl9kYXRhX3QpKTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgcmV0dXJu IHJlc3VsdDsKKyB9CisgCitAQCAtNDgxNyw5ICs0ODE3LDkgQEAgZ2xvYnVzX2lvX3NlY3VyZV9h dXRob3JpemF0aW9uX2RhdGFfZGVzdHJveSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YSkKKyB7CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfaW9fc2VjdXJl X2F1dGhvcml6YXRpb25fZGF0YV9kZXN0cm95KTsKKy0gICAgCisrCisgICAgIEdsb2J1c0xJT0No ZWNrTnVsbFBhcmFtKGRhdGEpOworLSAgICAKKysKKyAgICAgaWYoKCpkYXRhKS0+aWRlbnRpdHkg IT0gR1NTX0NfTk9fTkFNRSkKKyAgICAgeworICAgICAgICAgT01fdWludDMyICAgICAgICAgICAg ICAgICAgICAgICBtaW5vcl9zdGF0dXM7CitAQCAtNDgzMCw3ICs0ODMwLDcgQEAgZ2xvYnVzX2lv X3NlY3VyZV9hdXRob3JpemF0aW9uX2RhdGFfZGVzdHJveSgKKyAKKyAgICAgZ2xvYnVzX2ZyZWUo KmRhdGEpOworICAgICAqZGF0YSA9IEdMT0JVU19OVUxMOworLSAgICAKKysKKyAgICAgcmV0dXJu IEdMT0JVU19TVUNDRVNTOworIH0KKyAKK0BAIC00ODQ5LDcgKzQ4NDksNyBAQCBnbG9idXNfaW9f c2VjdXJlX2F1dGhvcml6YXRpb25fZGF0YV9zZXRfaWRlbnRpdHkoCisgCisgICAgIEdsb2J1c0xJ T0NoZWNrTnVsbFBhcmFtKGRhdGEpOworICAgICBHbG9idXNMSU9DaGVja051bGxQYXJhbShpZGVu dGl0eSk7CistICAgIAorKworICAgICBpZighc3RybmNtcCgiR1NJLU5PLVRBUkdFVCIsIGlkZW50 aXR5LCAxMykpCisgICAgIHsKKyAgICAgICAgICgqZGF0YSktPmlkZW50aXR5ID0gR1NTX0NfTk9f TkFNRTsKK0BAIC00ODU4LDI0ICs0ODU4LDI0IEBAIGdsb2J1c19pb19zZWN1cmVfYXV0aG9yaXph dGlvbl9kYXRhX3NldF9pZGVudGl0eSgKKyAgICAgeworICAgICAgICAgbmFtZV9idWZmZXIudmFs dWUgPSBpZGVudGl0eTsKKyAgICAgICAgIG5hbWVfYnVmZmVyLmxlbmd0aCA9IHN0cmxlbihpZGVu dGl0eSk7CistICAgICAgICAgIAorLSAgICAgICAgLyogCisrCisrICAgICAgICAvKgorICAgICAg ICAgICogQSAgR1NTX0NfTlRfSE9TVEJBU0VEX1NFUlZJQ0UgaXMgb2YgdGhlIGZvcm0gc2Vydmlj ZUBGUUROCistICAgICAgICAgKiBBdCBsZWFzdCB0aGUgR2xvYnVzIGdzc2FwaSwgYW5kIHRoZSBL ZXJiZXJvcyBnc3NhcGkgCistICAgICAgICAgKiB1c2UgdGhlIHNhbWUgZm9ybS4gV2Ugd2lsbCBj aGVjayBmb3IgCisrICAgICAgICAgKiBBdCBsZWFzdCB0aGUgR2xvYnVzIGdzc2FwaSwgYW5kIHRo ZSBLZXJiZXJvcyBnc3NhcGkKKysgICAgICAgICAqIHVzZSB0aGUgc2FtZSBmb3JtLiBXZSB3aWxs IGNoZWNrIGZvcgorICAgICAgICAgICogdHdvIHNwZWNpYWwgZm9ybXMgaGVyZTogaG9zdEBGUURO IGFuZCBmdHBARlFETgorICAgICAgICAgICovCisgCistICAgICAgICBpZiAoc3RyY2hyKGlkZW50 aXR5LCdAJykgJiYgCisrICAgICAgICBpZiAoc3RyY2hyKGlkZW50aXR5LCdAJykgJiYKKyAgICAg ICAgICAgICAhc3Ryc3RyKGlkZW50aXR5LCJDTj0iKSkKKy0gICAgICAgIHsgCisrICAgICAgICB7 CisgICAgICAgICAgICAgbmFtZV90eXBlID0gR1NTX0NfTlRfSE9TVEJBU0VEX1NFUlZJQ0U7Cisg ICAgICAgICB9CisgICAgICAgICBlbHNlIGlmKCFzdHJuY21wKCI8YW5vbnltb3VzPiIsaWRlbnRp dHksIDExKSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBuYW1lX3R5cGUgPSBHU1NfQ19OVF9B Tk9OWU1PVVM7CisgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAgIG1ham9yX3N0YXR1 cyA9IGdzc19pbXBvcnRfbmFtZSgmbWlub3Jfc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZuYW1lX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBuYW1lX3R5cGUsCitAQCAtNDg4Nyw3ICs0ODg3LDcgQEAgZ2xvYnVz X2lvX3NlY3VyZV9hdXRob3JpemF0aW9uX2RhdGFfc2V0X2lkZW50aXR5KAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5vcl9zdGF0dXMpOworICAg ICAgICAgfQorICAgICB9CistICAgIAorKworICAgICByZXR1cm4gcmVzdWx0OworIH0KKyAKK0BA IC00ODk5LDE2ICs0ODk5LDE2IEBAIGdsb2J1c19pb19zZWN1cmVfYXV0aG9yaXphdGlvbl9kYXRh X2dldF9pZGVudGl0eSgKKyB7CisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAg ICAgIHJlc3VsdCA9IEdMT0JVU19TVUNDRVNTOworICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2lv X3NlY3VyZV9hdXRob3JpemF0aW9uX2RhdGFfZ2V0X2lkZW50aXR5KTsKKy0gICAgCisrCisgICAg IEdsb2J1c0xJT0NoZWNrTnVsbFBhcmFtKGRhdGEpOworICAgICBHbG9idXNMSU9DaGVja051bGxQ YXJhbShpZGVudGl0eSk7CistICAgIAorKworICAgICBpZigoKmRhdGEpLT5pZGVudGl0eSAhPSBH U1NfQ19OT19OQU1FKQorLSAgICB7IAorKyAgICB7CisgICAgICAgICBPTV91aW50MzIgICAgICAg ICAgICAgICAgICAgICAgIG1ham9yX3N0YXR1czsKKyAgICAgICAgIE9NX3VpbnQzMiAgICAgICAg ICAgICAgICAgICAgICAgbWlub3Jfc3RhdHVzOworICAgICAgICAgZ3NzX2J1ZmZlcl9kZXNjICAg ICAgICAgICAgICAgICBuYW1lX2J1ZmZlcjsKKy0gICAgICAgIAorKworICAgICAgICAgbWFqb3Jf c3RhdHVzID0gZ3NzX2Rpc3BsYXlfbmFtZSgmbWlub3Jfc3RhdHVzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKmRhdGEpLT5pZGVudGl0eSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWVfYnVmZmVyLAorQEAgLTQ5MjIsNyAr NDkyMiw3IEBAIGdsb2J1c19pb19zZWN1cmVfYXV0aG9yaXphdGlvbl9kYXRhX2dldF9pZGVudGl0 eSgKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIC8qIGNvdWxkIHByb2JhYmx5IGp1c3QgcmVhbGxv YyB0aGUgYnVmZmVyIGNvbnRlbnRzICovCistICAgICAgICAKKysKKyAgICAgICAgIHJlc3VsdCA9 IEdsb2J1c0xJT01hbGxvY1NpemUoKmlkZW50aXR5LCBuYW1lX2J1ZmZlci5sZW5ndGggKyAxKTsK KyAKKyAgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKK0BAIC00OTQ1LDcgKzQ5 NDUsNyBAQCBnbG9idXNfaW9fc2VjdXJlX2F1dGhvcml6YXRpb25fZGF0YV9nZXRfaWRlbnRpdHko CisgICAgIH0KKyAKKyAgZG9uZToKKy0gICAgCisrCisgICAgIHJldHVybiByZXN1bHQ7CisgfQor IAorQEAgLTQ5NTgsMTIgKzQ5NTgsMTIgQEAgZ2xvYnVzX2lvX3NlY3VyZV9hdXRob3JpemF0aW9u X2RhdGFfc2V0X2NhbGxiYWNrKAorICAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjYWxsYmFja19hcmcpCisgeworICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX3NlY3Vy ZV9hdXRob3JpemF0aW9uX2RhdGFfc2V0X2NhbGxiYWNrKTsKKy0gICAgCisrCisgICAgIEdsb2J1 c0xJT0NoZWNrTnVsbFBhcmFtKGRhdGEpOworLSAgICAKKysKKyAgICAgKCpkYXRhKS0+Y2FsbGJh Y2sgPSBjYWxsYmFjazsKKyAgICAgKCpkYXRhKS0+Y2FsbGJhY2tfYXJnID0gY2FsbGJhY2tfYXJn OworLSAgICAKKysKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworIH0KKyAKK0BAIC00OTc2 LDE0ICs0OTc2LDE0IEBAIGdsb2J1c19pb19zZWN1cmVfYXV0aG9yaXphdGlvbl9kYXRhX2dldF9j YWxsYmFjaygKKyAgICAgdm9pZCAqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJh Y2tfYXJnKQorIHsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19pb19zZWN1cmVfYXV0aG9yaXph dGlvbl9kYXRhX2dldF9jYWxsYmFjayk7CistICAgIAorKworICAgICBHbG9idXNMSU9DaGVja051 bGxQYXJhbShkYXRhKTsKKyAgICAgR2xvYnVzTElPQ2hlY2tOdWxsUGFyYW0oY2FsbGJhY2spOwor ICAgICBHbG9idXNMSU9DaGVja051bGxQYXJhbShjYWxsYmFja19hcmcpOworLSAgICAKKysKKyAg ICAgKmNhbGxiYWNrID0gKCpkYXRhKS0+Y2FsbGJhY2s7CisgICAgICpjYWxsYmFja19hcmcgPSAo KmRhdGEpLT5jYWxsYmFja19hcmc7CistICAgIAorKworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NF U1M7CisgfQorIAorQEAgLTQ5OTQsMTggKzQ5OTQsMTggQEAgZ2xvYnVzX2lvX2F0dHJfc2V0X3Nl Y3VyZV9jaGFubmVsX21vZGUoCisgeworICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAg ICAgICAgICByZXN1bHQgPSBHTE9CVVNfU1VDQ0VTUzsKKyAgICAgZ2xvYnVzX3hpb19nc2lfcHJv dGVjdGlvbl9sZXZlbF90ICAgcHJvdGVjdGlvbl9sZXZlbDsKKy0gICAgCisrCisgICAgIEdsb2J1 c0lPTmFtZShnbG9idXNfaW9fYXR0cl9zZXRfc2VjdXJlX2NoYW5uZWxfbW9kZSk7CistICAgIAor KworICAgICBHbG9idXNMSU9DaGVja0F0dHIoYXR0ciwgR0xPQlVTX0lfSU9fVENQX0FUVFIpOwor LSAgICAKKysKKyAgICAgKCphdHRyKS0+Y2hhbm5lbF9tb2RlID0gbW9kZTsKKyAgICAgc3dpdGNo KG1vZGUpCisgICAgIHsKKyAgICAgICBjYXNlIEdMT0JVU19JT19TRUNVUkVfQ0hBTk5FTF9NT0RF X0NMRUFSOgorICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19hdHRyX2NudGwoCistICAgICAg ICAgICAgKCphdHRyKS0+YXR0ciwgCistICAgICAgICAgICAgZ2xvYnVzX2xfaW9fZ3NpX2RyaXZl ciwgCisrICAgICAgICAgICAgKCphdHRyKS0+YXR0ciwKKysgICAgICAgICAgICBnbG9idXNfbF9p b19nc2lfZHJpdmVyLAorICAgICAgICAgICAgIEdMT0JVU19YSU9fR1NJX1NFVF9TU0xfQ09NUEFU SUJMRSwKKyAgICAgICAgICAgICBHTE9CVVNfRkFMU0UpOworICAgICAgICAgaWYocmVzdWx0ICE9 IEdMT0JVU19TVUNDRVNTKQorQEAgLTUwMTQsOCArNTAxNCw4IEBAIGdsb2J1c19pb19hdHRyX3Nl dF9zZWN1cmVfY2hhbm5lbF9tb2RlKAorICAgICAgICAgfQorIAorICAgICAgICAgcmVzdWx0ID0g Z2xvYnVzX3hpb19hdHRyX2NudGwoCistICAgICAgICAgICAgKCphdHRyKS0+YXR0ciwgCistICAg ICAgICAgICAgZ2xvYnVzX2xfaW9fZ3NpX2RyaXZlciwgCisrICAgICAgICAgICAgKCphdHRyKS0+ YXR0ciwKKysgICAgICAgICAgICBnbG9idXNfbF9pb19nc2lfZHJpdmVyLAorICAgICAgICAgICAg IEdMT0JVU19YSU9fR1NJX1NFVF9QUk9URUNUSU9OX0xFVkVMLAorICAgICAgICAgICAgIEdMT0JV U19YSU9fR1NJX1BST1RFQ1RJT05fTEVWRUxfTk9ORSk7CisgICAgICAgICBicmVhazsKK0BAIC01 MDMyLDE4ICs1MDMyLDE4IEBAIGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfY2hhbm5lbF9tb2Rl KAorIAorICAgICAgIGNhc2UgR0xPQlVTX0lPX1NFQ1VSRV9DSEFOTkVMX01PREVfR1NJX1dSQVA6 CisgICAgICAgICByZXN1bHQgPSBnbG9idXNfeGlvX2F0dHJfY250bCgKKy0gICAgICAgICAgICAo KmF0dHIpLT5hdHRyLCAKKy0gICAgICAgICAgICBnbG9idXNfbF9pb19nc2lfZHJpdmVyLCAKKysg ICAgICAgICAgICAoKmF0dHIpLT5hdHRyLAorKyAgICAgICAgICAgIGdsb2J1c19sX2lvX2dzaV9k cml2ZXIsCisgICAgICAgICAgICAgR0xPQlVTX1hJT19HU0lfU0VUX1dSQVBfTU9ERSwKKyAgICAg ICAgICAgICBHTE9CVVNfVFJVRSk7CisgICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NF U1MpCisgICAgICAgICB7CisgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgIH0KKy0g ICAgICAgIAorKworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19hdHRyX2NudGwoCistICAg ICAgICAgICAgKCphdHRyKS0+YXR0ciwgCistICAgICAgICAgICAgZ2xvYnVzX2xfaW9fZ3NpX2Ry aXZlciwgCisrICAgICAgICAgICAgKCphdHRyKS0+YXR0ciwKKysgICAgICAgICAgICBnbG9idXNf bF9pb19nc2lfZHJpdmVyLAorICAgICAgICAgICAgIEdMT0JVU19YSU9fR1NJX0dFVF9QUk9URUNU SU9OX0xFVkVMLAorICAgICAgICAgICAgICZwcm90ZWN0aW9uX2xldmVsKTsKKyAKK0BAIC01MDUz LDEwICs1MDUzLDEwIEBAIGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfY2hhbm5lbF9tb2RlKAor ICAgICAgICAgfQorIAorICAgICAgICAgaWYocHJvdGVjdGlvbl9sZXZlbCA9PSBHTE9CVVNfWElP X0dTSV9QUk9URUNUSU9OX0xFVkVMX05PTkUpCistICAgICAgICB7ICAgICAgICAKKysgICAgICAg IHsKKyAgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNfeGlvX2F0dHJfY250bCgKKy0gICAgICAg ICAgICAgICAgKCphdHRyKS0+YXR0ciwgCistICAgICAgICAgICAgICAgIGdsb2J1c19sX2lvX2dz aV9kcml2ZXIsIAorKyAgICAgICAgICAgICAgICAoKmF0dHIpLT5hdHRyLAorKyAgICAgICAgICAg ICAgICBnbG9idXNfbF9pb19nc2lfZHJpdmVyLAorICAgICAgICAgICAgICAgICBHTE9CVVNfWElP X0dTSV9TRVRfUFJPVEVDVElPTl9MRVZFTCwKKyAgICAgICAgICAgICAgICAgR0xPQlVTX1hJT19H U0lfUFJPVEVDVElPTl9MRVZFTF9JTlRFR1JJVFkpOworICAgICAgICAgfQorQEAgLTUwNjQsMTgg KzUwNjQsMTggQEAgZ2xvYnVzX2lvX2F0dHJfc2V0X3NlY3VyZV9jaGFubmVsX21vZGUoCisgCisg ICAgICAgY2FzZSBHTE9CVVNfSU9fU0VDVVJFX0NIQU5ORUxfTU9ERV9TU0xfV1JBUDoKKyAgICAg ICAgIHJlc3VsdCA9IGdsb2J1c194aW9fYXR0cl9jbnRsKAorLSAgICAgICAgICAgICgqYXR0cikt PmF0dHIsIAorLSAgICAgICAgICAgIGdsb2J1c19sX2lvX2dzaV9kcml2ZXIsIAorKyAgICAgICAg ICAgICgqYXR0ciktPmF0dHIsCisrICAgICAgICAgICAgZ2xvYnVzX2xfaW9fZ3NpX2RyaXZlciwK KyAgICAgICAgICAgICBHTE9CVVNfWElPX0dTSV9TRVRfU1NMX0NPTVBBVElCTEUsCisgICAgICAg ICAgICAgR0xPQlVTX1RSVUUpOworICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNT KQorICAgICAgICAgeworICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICB9CistICAg ICAgICAKKysKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c194aW9fYXR0cl9jbnRsKAorLSAgICAg ICAgICAgICgqYXR0ciktPmF0dHIsIAorLSAgICAgICAgICAgIGdsb2J1c19sX2lvX2dzaV9kcml2 ZXIsIAorKyAgICAgICAgICAgICgqYXR0ciktPmF0dHIsCisrICAgICAgICAgICAgZ2xvYnVzX2xf aW9fZ3NpX2RyaXZlciwKKyAgICAgICAgICAgICBHTE9CVVNfWElPX0dTSV9HRVRfUFJPVEVDVElP Tl9MRVZFTCwKKyAgICAgICAgICAgICAmcHJvdGVjdGlvbl9sZXZlbCk7CisgCitAQCAtNTA4NSwx NiArNTA4NSwxNiBAQCBnbG9idXNfaW9fYXR0cl9zZXRfc2VjdXJlX2NoYW5uZWxfbW9kZSgKKyAg ICAgICAgIH0KKyAKKyAgICAgICAgIGlmKHByb3RlY3Rpb25fbGV2ZWwgPT0gR0xPQlVTX1hJT19H U0lfUFJPVEVDVElPTl9MRVZFTF9OT05FKQorLSAgICAgICAgeyAgICAgICAgCisrICAgICAgICB7 CisgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19hdHRyX2NudGwoCistICAgICAgICAg ICAgICAgICgqYXR0ciktPmF0dHIsIAorLSAgICAgICAgICAgICAgICBnbG9idXNfbF9pb19nc2lf ZHJpdmVyLCAKKysgICAgICAgICAgICAgICAgKCphdHRyKS0+YXR0ciwKKysgICAgICAgICAgICAg ICAgZ2xvYnVzX2xfaW9fZ3NpX2RyaXZlciwKKyAgICAgICAgICAgICAgICAgR0xPQlVTX1hJT19H U0lfU0VUX1BST1RFQ1RJT05fTEVWRUwsCisgICAgICAgICAgICAgICAgIEdMT0JVU19YSU9fR1NJ X1BST1RFQ1RJT05fTEVWRUxfSU5URUdSSVRZKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFr OworICAgICB9CistICAgIAorKworICBlcnJvcjoKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CitA QCAtNTEwNSwxMCArNTEwNSwxMCBAQCBnbG9idXNfaW9fYXR0cl9nZXRfc2VjdXJlX2NoYW5uZWxf bW9kZSgKKyAgICAgZ2xvYnVzX2lvX3NlY3VyZV9jaGFubmVsX21vZGVfdCAqICAgbW9kZSkKKyB7 CisgICAgIEdsb2J1c0lPTmFtZShnbG9idXNfaW9fYXR0cl9nZXRfc2VjdXJlX2NoYW5uZWxfbW9k ZSk7CistICAgIAorKworICAgICBHbG9idXNMSU9DaGVja0F0dHIoYXR0ciwgR0xPQlVTX0lfSU9f VENQX0FUVFIpOworICAgICBHbG9idXNMSU9DaGVja051bGxQYXJhbShtb2RlKTsKKy0gICAgCisr CisgICAgICptb2RlID0gKCphdHRyKS0+Y2hhbm5lbF9tb2RlOworICAgICByZXR1cm4gR0xPQlVT X1NVQ0NFU1M7CisgfQorQEAgLTUxMTksMTIgKzUxMTksMTIgQEAgZ2xvYnVzX2lvX2F0dHJfc2V0 X3NlY3VyZV9wcm90ZWN0aW9uX21vZGUoCisgICAgIGdsb2J1c19pb19zZWN1cmVfcHJvdGVjdGlv bl9tb2RlX3QgIG1vZGUpCisgeworICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX2F0dHJfc2V0 X3NlY3VyZV9wcm90ZWN0aW9uX21vZGUpOworLSAgICAKKysKKyAgICAgR2xvYnVzTElPQ2hlY2tB dHRyKGF0dHIsIEdMT0JVU19JX0lPX1RDUF9BVFRSKTsKKy0gICAgCisrCisgICAgIHJldHVybiBn bG9idXNfeGlvX2F0dHJfY250bCgKKy0gICAgICAgICAgICAoKmF0dHIpLT5hdHRyLCAKKy0gICAg ICAgICAgICBnbG9idXNfbF9pb19nc2lfZHJpdmVyLCAKKysgICAgICAgICAgICAoKmF0dHIpLT5h dHRyLAorKyAgICAgICAgICAgIGdsb2J1c19sX2lvX2dzaV9kcml2ZXIsCisgICAgICAgICAgICAg R0xPQlVTX1hJT19HU0lfU0VUX1BST1RFQ1RJT05fTEVWRUwsCisgICAgICAgICAgICAgbW9kZSk7 CisgfQorQEAgLTUxMzUsMTMgKzUxMzUsMTMgQEAgZ2xvYnVzX2lvX2F0dHJfZ2V0X3NlY3VyZV9w cm90ZWN0aW9uX21vZGUoCisgICAgIGdsb2J1c19pb19zZWN1cmVfcHJvdGVjdGlvbl9tb2RlX3Qg Km1vZGUpCisgeworICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX2F0dHJfZ2V0X3NlY3VyZV9w cm90ZWN0aW9uX21vZGUpOworLSAgICAKKysKKyAgICAgR2xvYnVzTElPQ2hlY2tBdHRyKGF0dHIs IEdMT0JVU19JX0lPX1RDUF9BVFRSKTsKKyAgICAgR2xvYnVzTElPQ2hlY2tOdWxsUGFyYW0obW9k ZSk7CistICAgIAorKworICAgICByZXR1cm4gZ2xvYnVzX3hpb19hdHRyX2NudGwoCistICAgICAg ICAgICAgKCphdHRyKS0+YXR0ciwgCistICAgICAgICAgICAgZ2xvYnVzX2xfaW9fZ3NpX2RyaXZl ciwgCisrICAgICAgICAgICAgKCphdHRyKS0+YXR0ciwKKysgICAgICAgICAgICBnbG9idXNfbF9p b19nc2lfZHJpdmVyLAorICAgICAgICAgICAgIEdMT0JVU19YSU9fR1NJX0dFVF9QUk9URUNUSU9O X0xFVkVMLAorICAgICAgICAgICAgIG1vZGUpOworIH0KK0BAIC01MTUyLDEyICs1MTUyLDEyIEBA IGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfZGVsZWdhdGlvbl9tb2RlKAorICAgICBnbG9idXNf aW9fc2VjdXJlX2RlbGVnYXRpb25fbW9kZV90ICBtb2RlKQorIHsKKyAgICAgR2xvYnVzSU9OYW1l KGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfZGVsZWdhdGlvbl9tb2RlKTsKKy0gICAgCisrCisg ICAgIEdsb2J1c0xJT0NoZWNrQXR0cihhdHRyLCBHTE9CVVNfSV9JT19UQ1BfQVRUUik7CistICAg IAorKworICAgICByZXR1cm4gZ2xvYnVzX3hpb19hdHRyX2NudGwoCistICAgICAgICAgICAgKCph dHRyKS0+YXR0ciwgCistICAgICAgICAgICAgZ2xvYnVzX2xfaW9fZ3NpX2RyaXZlciwgCisrICAg ICAgICAgICAgKCphdHRyKS0+YXR0ciwKKysgICAgICAgICAgICBnbG9idXNfbF9pb19nc2lfZHJp dmVyLAorICAgICAgICAgICAgIEdMT0JVU19YSU9fR1NJX1NFVF9ERUxFR0FUSU9OX01PREUsCisg ICAgICAgICAgICAgbW9kZSk7CisgfQorQEAgLTUxNzAsMTMgKzUxNzAsMTMgQEAgZ2xvYnVzX2lv X2F0dHJfZ2V0X3NlY3VyZV9kZWxlZ2F0aW9uX21vZGUoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1vZGUpCisgeworICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2lv X2F0dHJfc2V0X3NlY3VyZV9kZWxlZ2F0aW9uX21vZGUpOworLSAgICAKKysKKyAgICAgR2xvYnVz TElPQ2hlY2tBdHRyKGF0dHIsIEdMT0JVU19JX0lPX1RDUF9BVFRSKTsKKyAgICAgR2xvYnVzTElP Q2hlY2tOdWxsUGFyYW0obW9kZSk7CistICAgIAorKworICAgICByZXR1cm4gZ2xvYnVzX3hpb19h dHRyX2NudGwoCistICAgICAgICAgICAgKCphdHRyKS0+YXR0ciwgCistICAgICAgICAgICAgZ2xv YnVzX2xfaW9fZ3NpX2RyaXZlciwgCisrICAgICAgICAgICAgKCphdHRyKS0+YXR0ciwKKysgICAg ICAgICAgICBnbG9idXNfbF9pb19nc2lfZHJpdmVyLAorICAgICAgICAgICAgIEdMT0JVU19YSU9f R1NJX0dFVF9ERUxFR0FUSU9OX01PREUsCisgICAgICAgICAgICAgbW9kZSk7CisgfQorQEAgLTUx ODcsMTIgKzUxODcsMTIgQEAgZ2xvYnVzX2lvX2F0dHJfc2V0X3NlY3VyZV9wcm94eV9tb2RlKAor ICAgICBnbG9idXNfaW9fc2VjdXJlX3Byb3h5X21vZGVfdCAgICAgICBtb2RlKQorIHsKKyAgICAg R2xvYnVzSU9OYW1lKGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfcHJveHlfbW9kZSk7CistICAg IAorKworICAgICBHbG9idXNMSU9DaGVja0F0dHIoYXR0ciwgR0xPQlVTX0lfSU9fVENQX0FUVFIp OworLSAgICAKKysKKyAgICAgcmV0dXJuIGdsb2J1c194aW9fYXR0cl9jbnRsKAorLSAgICAgICAg ICAgICgqYXR0ciktPmF0dHIsIAorLSAgICAgICAgICAgIGdsb2J1c19sX2lvX2dzaV9kcml2ZXIs IAorKyAgICAgICAgICAgICgqYXR0ciktPmF0dHIsCisrICAgICAgICAgICAgZ2xvYnVzX2xfaW9f Z3NpX2RyaXZlciwKKyAgICAgICAgICAgICBHTE9CVVNfWElPX0dTSV9TRVRfUFJPWFlfTU9ERSwK KyAgICAgICAgICAgICBtb2RlKTsKKyB9CitAQCAtNTIwMywxMyArNTIwMywxMyBAQCBnbG9idXNf aW9fYXR0cl9nZXRfc2VjdXJlX3Byb3h5X21vZGUoCisgICAgIGdsb2J1c19pb19zZWN1cmVfcHJv eHlfbW9kZV90ICogICAgIG1vZGUpCisgeworICAgICBHbG9idXNJT05hbWUoZ2xvYnVzX2lvX2F0 dHJfZ2V0X3NlY3VyZV9wcm94eV9tb2RlKTsKKy0gICAgCisrCisgICAgIEdsb2J1c0xJT0NoZWNr QXR0cihhdHRyLCBHTE9CVVNfSV9JT19UQ1BfQVRUUik7CisgICAgIEdsb2J1c0xJT0NoZWNrTnVs bFBhcmFtKG1vZGUpOworLSAgICAKKysKKyAgICAgcmV0dXJuIGdsb2J1c194aW9fYXR0cl9jbnRs KAorLSAgICAgICAgICAgICgqYXR0ciktPmF0dHIsIAorLSAgICAgICAgICAgIGdsb2J1c19sX2lv X2dzaV9kcml2ZXIsIAorKyAgICAgICAgICAgICgqYXR0ciktPmF0dHIsCisrICAgICAgICAgICAg Z2xvYnVzX2xfaW9fZ3NpX2RyaXZlciwKKyAgICAgICAgICAgICBHTE9CVVNfWElPX0dTSV9HRVRf UFJPWFlfTU9ERSwKKyAgICAgICAgICAgICBtb2RlKTsKKyB9CistLSAKKzIuNTQuMAorCgpkaWZm IC0tZ2l0IGEvMDAwMi1GaXgtY29tcGlsZXItYW5kLWRveHlnZW4td2FybmluZ3MucGF0Y2ggYi8w MDAyLUZpeC1jb21waWxlci1hbmQtZG94eWdlbi13YXJuaW5ncy5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjZhYWViCi0tLSAvZGV2L251bGwKKysrIGIvMDAwMi1G aXgtY29tcGlsZXItYW5kLWRveHlnZW4td2FybmluZ3MucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAor RnJvbSA0ZWUwOGQxM2UyOTYzMzA5ZTIwNjNkYzQ1ZGVkZDA2NzMzN2QzYjc2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dGlhcyBFbGxlcnQgPG1hdHRpYXMuZWxsZXJ0QHBoeXNp Y3MudXUuc2U+CitEYXRlOiBXZWQsIDIwIE1heSAyMDI2IDAwOjE1OjM3ICswMjAwCitTdWJqZWN0 OiBbUEFUQ0ggMi8yXSBGaXggY29tcGlsZXIgYW5kIGRveHlnZW4gd2FybmluZ3MKKworLS0tCisg aW8vY29tcGF0L2dsb2J1c19pb194aW9fY29tcGF0LmMgfCA1IC0tLS0tCisgMSBmaWxlIGNoYW5n ZWQsIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9pby9jb21wYXQvZ2xvYnVzX2lvX3hp b19jb21wYXQuYyBiL2lvL2NvbXBhdC9nbG9idXNfaW9feGlvX2NvbXBhdC5jCitpbmRleCBiYWM0 MzNhMDAuLjVjZGEwODIzMiAxMDA2NDQKKy0tLSBhL2lvL2NvbXBhdC9nbG9idXNfaW9feGlvX2Nv bXBhdC5jCisrKysgYi9pby9jb21wYXQvZ2xvYnVzX2lvX3hpb19jb21wYXQuYworQEAgLTM3NTks MTEgKzM3NTksOCBAQCB2b2lkCisgZ2xvYnVzX2xfaW9fc2VydmVyX2Nsb3NlX2tpY2tvdXQoCisg ICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfYXJnKQorIHsKKy0g ICAgZ2xvYnVzX2xfaW9fYm91bmNlX3QgKiAgICAgICAgICAgICAgYm91bmNlX2luZm87CisgICAg IEdsb2J1c0lPTmFtZShnbG9idXNfbF9pb19zZXJ2ZXJfY2xvc2Vfa2lja291dCk7CisgCistICAg IGJvdW5jZV9pbmZvID0gKGdsb2J1c19sX2lvX2JvdW5jZV90ICopIHVzZXJfYXJnOworLQorICAg ICBnbG9idXNfbF9pb19zZXJ2ZXJfY2xvc2VfY2IoR0xPQlVTX05VTEwsIHVzZXJfYXJnKTsKKyB9 CisgCitAQCAtNDE4MCwxMiArNDE3NywxMCBAQCBnbG9idXNfaW9fcmVnaXN0ZXJfc2VsZWN0KAor ICAgICBnbG9idXNfaW9fY2FsbGJhY2tfdCAgICAgICAgICAgICAgICBleGNlcHRfY2FsbGJhY2tf ZnVuYywKKyAgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0X2Nh bGxiYWNrX2FyZykKKyB7CistICAgIGdsb2J1c19sX2lvX2hhbmRsZV90ICogICAgICAgICAgICAg IGloYW5kbGU7CisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3Vs dDsKKyAgICAgR2xvYnVzSU9OYW1lKGdsb2J1c19pb19yZWdpc3Rlcl9zZWxlY3QpOworIAorICAg ICBHbG9idXNMSU9DaGVja0hhbmRsZShoYW5kbGUsIDApOworLSAgICBpaGFuZGxlID0gKmhhbmRs ZTsKKyAKKyAgICAgaWYoZXhjZXB0X2NhbGxiYWNrX2Z1bmMpCisgICAgIHsKKy0tIAorMi41NC4w CisKCmRpZmYgLS1naXQgYS9nbG9idXMtaW8uc3BlYyBiL2dsb2J1cy1pby5zcGVjCmluZGV4IGJi MDEzODIuLmJjMjE2NmUgMTAwNjQ0Ci0tLSBhL2dsb2J1cy1pby5zcGVjCisrKyBiL2dsb2J1cy1p by5zcGVjCkBAIC0xLDEzICsxLDE1IEBACiBOYW1lOgkJZ2xvYnVzLWlvCiAlZ2xvYmFsIF9uYW1l ICUodHIgLSBfIDw8PCAle25hbWV9KQogVmVyc2lvbjoJMTIuNAotUmVsZWFzZToJMTAlez9kaXN0 fQorUmVsZWFzZToJMTElez9kaXN0fQogU3VtbWFyeToJR3JpZCBDb21tdW5pdHkgVG9vbGtpdCAt IHVuaWZvcm0gSS9PIGludGVyZmFjZQogCiBMaWNlbnNlOglBcGFjaGUtMi4wCiBVUkw6CQlodHRw czovL2dpdGh1Yi5jb20vZ3JpZGNmL2djdC8KIFNvdXJjZToJCWh0dHBzOi8vcmVwby5ncmlkY2Yu b3JnL2djdDYvc291cmNlcy8le19uYW1lfS0le3ZlcnNpb259LnRhci5negogU291cmNlODoJUkVB RE1FCitQYXRjaDA6CQkwMDAxLVVudGFiaWZ5LWFuZC1yZW1vdmUtdHJhaWxpbmctd2hpdGUtc3Bh Y2UucGF0Y2gKK1BhdGNoMToJCTAwMDItRml4LWNvbXBpbGVyLWFuZC1kb3h5Z2VuLXdhcm5pbmdz LnBhdGNoCiAKIEJ1aWxkUmVxdWlyZXM6CW1ha2UKIEJ1aWxkUmVxdWlyZXM6CWdjYwpAQCAtNTQs NiArNTYsOCBAQCB1bmlmb3JtIEkvTyBpbnRlcmZhY2UgRGV2ZWxvcG1lbnQgRmlsZXMKIAogJXBy ZXAKICVzZXR1cCAtcSAtbiAle19uYW1lfS0le3ZlcnNpb259CislcGF0Y2ggLVAwIC1wMworJXBh dGNoIC1QMSAtcDMKIAogJWJ1aWxkCiAjIFJlZHVjZSBvdmVybGlua2luZwpAQCAtOTgsNiArMTAy LDkgQEAgR0xPQlVTX0hPU1ROQU1FPWxvY2FsaG9zdCAlbWFrZV9idWlsZCBjaGVjawogJXtfbGli ZGlyfS9wa2djb25maWcvJXtuYW1lfS5wYwogCiAlY2hhbmdlbG9nCisqIFN1biBKdW4gMTQgMjAy NiBNYXR0aWFzIEVsbGVydCA8bWF0dGlhcy5lbGxlcnRAcGh5c2ljcy51dS5zZT4gLSAxMi40LTEx CistIEZpeCBjb21waWxlciB3YXJuaW5ncworCiAqIEZyaSBKYW4gMTYgMjAyNiBGZWRvcmEgUmVs ZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDEyLjQtMTAKIC0g UmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV80NF9NYXNz X1JlYnVpbGQKIAo=