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: Dmitry Belyavskiy To: git-commits@fedoraproject.org Subject: [rpms/openssl] rebase_40beta: Rebasing OpenSSL to 3.2.2 Date: Tue, 09 Jun 2026 12:45:21 GMT Message-ID: <178100912134.1.9144499299873974688.rpms-openssl-892d8e1abb3c@fedoraproject.org> List-ID: X-Git-Repo: rpms/openssl X-Git-Branch: rebase_40beta X-Git-Rev: 892d8e1abb3cd458aae76570c04eb8ae4cf49873 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb3BlbnNzbApCcmFu Y2ggOiByZWJhc2VfNDBiZXRhCkNvbW1pdCA6IDg5MmQ4ZTFhYmIzY2Q0NThhYWU3NjU3MGMwNGVi OGFlNGNmNDk4NzMKQXV0aG9yIDogRG1pdHJ5IEJlbHlhdnNraXkgPGRiZWx5YXZzQHJlZGhhdC5j b20+CkRhdGUgICA6IDIwMjQtMDYtMDZUMTA6NDA6MjMrMDI6MDAKU3RhdHMgIDogKzkzNC8tMTIx NCBpbiA5IGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBt cy9vcGVuc3NsL2MvODkyZDhlMWFiYjNjZDQ1OGFhZTc2NTcwYzA0ZWI4YWU0Y2Y0OTg3Mz9icmFu Y2g9cmViYXNlXzQwYmV0YQoKTG9nOgpSZWJhc2luZyBPcGVuU1NMIHRvIDMuMi4yCgotLS0KZGlm ZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDkxOTE5YzEuLjMxZWMzMWQg MTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtNjEsMyArNjEsNCBA QCBvcGVuc3NsLTEuMC4wYS11c2EudGFyLmJ6MgogL29wZW5zc2wtMy4xLjEudGFyLmd6CiAvb3Bl bnNzbC0zLjEuNC50YXIuZ3oKIC9vcGVuc3NsLTMuMi4xLnRhci5negorL29wZW5zc2wtMy4yLjIu dGFyLmd6CgpkaWZmIC0tZ2l0IGEvMDAzMy1GSVBTLWVtYmVkLWhtYWMucGF0Y2ggYi8wMDMzLUZJ UFMtZW1iZWQtaG1hYy5wYXRjaAppbmRleCA0ZTExZjAyLi4wYmYzYjJkIDEwMDY0NAotLS0gYS8w MDMzLUZJUFMtZW1iZWQtaG1hYy5wYXRjaAorKysgYi8wMDMzLUZJUFMtZW1iZWQtaG1hYy5wYXRj aApAQCAtMzgzLDgxICszODMsMTQgQEAgaW5kZXggMThkOWYzZDIwNC4uNzE3ODBkOGNhYSAxMDA2 NDQKIC0tLSBhL3Rlc3QvcmVjaXBlcy85MC10ZXN0X3NzbGFwaS50CiArKysgYi90ZXN0L3JlY2lw ZXMvOTAtdGVzdF9zc2xhcGkudAogQEAgLTE3LDcgKzE3LDcgQEAgc2V0dXAoInRlc3Rfc3NsYXBp Iik7Ci0gdXNlIGxpYiBzcmN0b3BfZGlyKCdDb25maWd1cmF0aW9ucycpOwotIHVzZSBsaWIgYmxk dG9wX2RpcignLicpOworIHNldHVwKCJ0ZXN0X3NzbGFwaSIpOworIH0KICAKIC1teSAkbm9fZmlw cyA9IGRpc2FibGVkKCdmaXBzJykgfHwgKCRFTlZ7Tk9fRklQU30gLy8gMCk7CiArbXkgJG5vX2Zp cHMgPSAxOyAjZGlzYWJsZWQoJ2ZpcHMnKSB8fCAoJEVOVntOT19GSVBTfSAvLyAwKTsKICBteSAk Zmlwc21vZGNmZ19maWxlbmFtZSA9ICJmaXBzbW9kdWxlLmNuZiI7CiAgbXkgJGZpcHNtb2RjZmcg PSBibGR0b3BfZmlsZSgidGVzdCIsICRmaXBzbW9kY2ZnX2ZpbGVuYW1lKTsKICAKLWRpZmYgLXVw IG9wZW5zc2wtMy4yLjEvcHJvdmlkZXJzL2ZpcHMvc2VsZl90ZXN0LmMuMDAzMy1wYXRjaC1uZXcg b3BlbnNzbC0zLjIuMS9wcm92aWRlcnMvZmlwcy9zZWxmX3Rlc3QuYwotLS0tIG9wZW5zc2wtMy4y LjEvcHJvdmlkZXJzL2ZpcHMvc2VsZl90ZXN0LmMuMDAzMy1wYXRjaC1uZXcJMjAyNC0wNi0wNCAx NDo0MjowMy43NDgyODQ1MjQgKzAyMDAKLSsrKyBvcGVuc3NsLTMuMi4xL3Byb3ZpZGVycy9maXBz L3NlbGZfdGVzdC5jCTIwMjQtMDYtMDQgMTQ6NDc6MTkuNTg5NzU4MzI0ICswMjAwCi1AQCAtMzY5 LDIzICszNjksMTIgQEAgc3RhdGljIGludCB2ZXJpZnlfaW50ZWdyaXR5KE9TU0xfQ09SRV9CSQot ICAgICBFVlBfTUFDICptYWMgPSBOVUxMOwotICAgICBFVlBfTUFDX0NUWCAqY3R4ID0gTlVMTDsK LSAgICAgT1NTTF9QQVJBTSBwYXJhbXNbMl0sICpwID0gcGFyYW1zOwotLSAgICBEbF9pbmZvIGlu Zm87Ci0tICAgIHZvaWQgKmV4dHJhX2luZm8gPSBOVUxMOwotLSAgICBzdHJ1Y3QgbGlua19tYXAg KmxtID0gTlVMTDsKLS0gICAgdW5zaWduZWQgbG9uZyBwYWRkcjsKLS0gICAgdW5zaWduZWQgbG9u ZyBvZmYgPSAwOwotIAotICAgICBpZiAoIWludGVncml0eV9zZWxmX3Rlc3QoZXYsIGxpYmN0eCkp Ci0gICAgICAgICBnb3RvIGVycjsKLSAKLSAgICAgT1NTTF9TRUxGX1RFU1Rfb25iZWdpbihldiwg ZXZlbnRfdHlwZSwgT1NTTF9TRUxGX1RFU1RfREVTQ19JTlRFR1JJVFlfSE1BQyk7Ci0gCi0tICAg IGlmICghZGxhZGRyMSAoKGNvbnN0IHZvaWQgKilmaXBzX2htYWNfY29udGFpbmVyLAotLSAgICAg ICAgICAgICAgICAmaW5mbywgJmV4dHJhX2luZm8sIFJUTERfRExfTElOS01BUCkpCi0tICAgICAg ICBnb3RvIGVycjsKLS0gICAgbG0gPSBleHRyYV9pbmZvOwotLSAgICBwYWRkciA9ICh1bnNpZ25l ZCBsb25nKWZpcHNfaG1hY19jb250YWluZXIgLSBsbS0+bF9hZGRyOwotLQotICAgICBtYWMgPSBF VlBfTUFDX2ZldGNoKGxpYmN0eCwgTUFDX05BTUUsIE5VTEwpOwotICAgICBpZiAobWFjID09IE5V TEwpCi0gICAgICAgICBnb3RvIGVycjsKLUBAIC0zOTksNDAgKzM4OCwxMiBAQCBzdGF0aWMgaW50 IHZlcmlmeV9pbnRlZ3JpdHkoT1NTTF9DT1JFX0JJCi0gICAgIGlmICghRVZQX01BQ19pbml0KGN0 eCwgZml4ZWRfa2V5LCBzaXplb2YoZml4ZWRfa2V5KSwgcGFyYW1zKSkKLSAgICAgICAgIGdvdG8g ZXJyOwotIAotLSAgICB3aGlsZSAoKG9mZiArIElOVEVHUklUWV9CVUZfU0laRSkgPD0gcGFkZHIp IHsKLS0gICAgICAgIHN0YXR1cyA9IHJlYWRfZXhfY2IoYmlvLCBidWYsIElOVEVHUklUWV9CVUZf U0laRSwgJmJ5dGVzX3JlYWQpOwotLSAgICAgICAgaWYgKHN0YXR1cyAhPSAxKQotLSAgICAgICAg ICAgIGJyZWFrOwotLSAgICAgICAgaWYgKCFFVlBfTUFDX3VwZGF0ZShjdHgsIGJ1ZiwgYnl0ZXNf cmVhZCkpCi0tICAgICAgICAgICAgZ290byBlcnI7Ci0tCW9mZiArPSBieXRlc19yZWFkOwotLSAg ICB9Ci0tCi0tICAgIGlmIChvZmYgKyBJTlRFR1JJVFlfQlVGX1NJWkUgPiBwYWRkcikgewotLSAg ICAgICAgaW50IGRlbHRhID0gcGFkZHIgLSBvZmY7Ci0tICAgICAgICBzdGF0dXMgPSByZWFkX2V4 X2NiKGJpbywgYnVmLCBkZWx0YSwgJmJ5dGVzX3JlYWQpOwotLSAgICAgICAgaWYgKHN0YXR1cyAh PSAxKQotLSAgICAgICAgICAgIGdvdG8gZXJyOwotLSAgICAgICAgaWYgKCFFVlBfTUFDX3VwZGF0 ZShjdHgsIGJ1ZiwgYnl0ZXNfcmVhZCkpCi0tICAgICAgICAgICAgZ290byBlcnI7Ci0tCW9mZiAr PSBieXRlc19yZWFkOwotLQotLSAgICAgICAgc3RhdHVzID0gcmVhZF9leF9jYihiaW8sIGJ1Ziwg SE1BQ19MRU4sICZieXRlc19yZWFkKTsKLS0gICAgICAgIG1lbXNldChidWYsIDAsIEhNQUNfTEVO KTsKLS0gICAgICAgIGlmIChzdGF0dXMgIT0gMSkKLS0gICAgICAgICAgICBnb3RvIGVycjsKLS0g ICAgICAgIGlmICghRVZQX01BQ191cGRhdGUoY3R4LCBidWYsIGJ5dGVzX3JlYWQpKQotLSAgICAg ICAgICAgIGdvdG8gZXJyOwotLQlvZmYgKz0gYnl0ZXNfcmVhZDsKLS0gICAgfQotLQotLSAgICB3 aGlsZSAoYnl0ZXNfcmVhZCA+IDApIHsKLS0gICAgICAgIHN0YXR1cyA9IHJlYWRfZXhfY2IoYmlv LCBidWYsIElOVEVHUklUWV9CVUZfU0laRSwgJmJ5dGVzX3JlYWQpOwotKyAgICB3aGlsZSAoMSkg ewotKyAgICAgICAgc3RhdHVzID0gcmVhZF9leF9jYihiaW8sIGJ1Ziwgc2l6ZW9mKGJ1ZiksICZi eXRlc19yZWFkKTsKLSAgICAgICAgIGlmIChzdGF0dXMgIT0gMSkKLSAgICAgICAgICAgICBicmVh azsKLSAgICAgICAgIGlmICghRVZQX01BQ191cGRhdGUoY3R4LCBidWYsIGJ5dGVzX3JlYWQpKQot ICAgICAgICAgICAgIGdvdG8gZXJyOwotLQlvZmYgKz0gYnl0ZXNfcmVhZDsKLSAgICAgfQotIAot ICAgICBpZiAoIUVWUF9NQUNfZmluYWwoY3R4LCBvdXQsICZvdXRfbGVuLCBzaXplb2Yob3V0KSkp CistLSAKKzIuNDQuMAorCgpkaWZmIC0tZ2l0IGEvMDA3OC1BZGQtRklQUy1pbmRpY2F0b3ItcGFy YW1ldGVyLXRvLUhLREYucGF0Y2ggYi8wMDc4LUFkZC1GSVBTLWluZGljYXRvci1wYXJhbWV0ZXIt dG8tSEtERi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg2N2UwNi4uMDAw MDAwMAotLS0gYS8wMDc4LUFkZC1GSVBTLWluZGljYXRvci1wYXJhbWV0ZXItdG8tSEtERi5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDg3NCArMCwwIEBACi1Gcm9tIGM1MDNmYTMwMjQ5MGY3NmYx OTFhZjYyNTllNDE5OTU3MjI4MDI5OGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBy cG0tYnVpbGQgPHJwbS1idWlsZD4KLURhdGU6IFdlZCwgNiBNYXIgMjAyNCAxOToxNzoxNiArMDEw MAotU3ViamVjdDogW1BBVENIIDMyLzQ5XSAwMDc4LUFkZC1GSVBTLWluZGljYXRvci1wYXJhbWV0 ZXItdG8tSEtERi5wYXRjaAotCi1QYXRjaC1uYW1lOiAwMDc4LUFkZC1GSVBTLWluZGljYXRvci1w YXJhbWV0ZXItdG8tSEtERi5wYXRjaAotUGF0Y2gtaWQ6IDc4Ci1QYXRjaC1zdGF0dXM6IHwKLSAg ICAjICMgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0yMTE0Nzcy Ci1Gcm9tLWRpc3QtZ2l0LWNvbW1pdDogNDMzNGJjODM3ZmJjNjRkMTQ4OTBmZGM1MTY3OWE4MDc3 MGQ0OThjZQotLS0tCi0gaW5jbHVkZS9jcnlwdG8vZXZwLmggICAgICAgICAgICAgICAgICAgICAg fCAgIDcgKysKLSBpbmNsdWRlL29wZW5zc2wva2RmLmggICAgICAgICAgICAgICAgICAgICB8ICAg NCArCi0gcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9rZGZzL2hrZGYuYyAgICAgfCAxMDAgKysr KysrKysrKysrKysrKysrKysrLQotIHByb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMva2Rmcy9rYmtk Zi5jICAgIHwgIDgyICsrKysrKysrKysrKysrKystLQotIHByb3ZpZGVycy9pbXBsZW1lbnRhdGlv bnMva2Rmcy9zc2hrZGYuYyAgIHwgIDc1ICsrKysrKysrKysrKysrKy0KLSBwcm92aWRlcnMvaW1w bGVtZW50YXRpb25zL2tkZnMvc3NrZGYuYyAgICB8IDEwMCArKysrKysrKysrKysrKysrKysrKyst Ci0gcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9rZGZzL3RsczFfcHJmLmMgfCAgNzQgKysrKysr KysrKysrKysrLQotIHByb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMva2Rmcy94OTQya2RmLmMgIHwg IDY2ICsrKysrKysrKysrKystCi0gdXRpbC9wZXJsL09wZW5TU0wvcGFyYW1uYW1lcy5wbSAgICAg ICAgICAgfCAgIDEgKwotIDkgZmlsZXMgY2hhbmdlZCwgNDg3IGluc2VydGlvbnMoKyksIDIyIGRl bGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9jcnlwdG8vZXZwLmggYi9pbmNsdWRl L2NyeXB0by9ldnAuaAotaW5kZXggMzRjZWEyZjlmNC4uMWU0ODk1OTU5YiAxMDA2NDQKLS0tLSBh L2luY2x1ZGUvY3J5cHRvL2V2cC5oCi0rKysgYi9pbmNsdWRlL2NyeXB0by9ldnAuaAotQEAgLTIy OCw2ICsyMjgsMTMgQEAgc3RydWN0IGV2cF9tYWNfc3QgewotICAgICBPU1NMX0ZVTkNfbWFjX3Nl dF9jdHhfcGFyYW1zX2ZuICpzZXRfY3R4X3BhcmFtczsKLSB9OwotIAotKyNpZmRlZiBGSVBTX01P RFVMRQotKy8qIEFjY29yZGluZyB0byBOSVNUIFNwZWNpYWwgUHVibGljYXRpb24gODAwLTEzMUFy MiwgU2VjdGlvbiA4OiBEZXJpdmluZwotKyAqIEFkZGl0aW9uYWwgS2V5cyBmcm9tIGEgQ3J5cHRv Z3JhcGhpYyBLZXksICJbdF1oZSBsZW5ndGggb2YgdGhlCi0rICoga2V5LWRlcml2YXRpb24ga2V5 IFtpLmUuLCB0aGUgaW5wdXQga2V5XSBzaGFsbCBiZSBhdCBsZWFzdCAxMTIgYml0cyIuICovCi0r IyBkZWZpbmUgRVZQX0tERl9GSVBTX01JTl9LRVlfTEVOICgxMTIgLyA4KQotKyNlbmRpZgotKwot IHN0cnVjdCBldnBfa2RmX3N0IHsKLSAgICAgT1NTTF9QUk9WSURFUiAqcHJvdjsKLSAgICAgaW50 IG5hbWVfaWQ7Ci1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9vcGVuc3NsL2tkZi5oIGIvaW5jbHVkZS9v cGVuc3NsL2tkZi5oCi1pbmRleCAwOTgzMjMwYTQ4Li44NjE3MTYzNWVhIDEwMDY0NAotLS0tIGEv aW5jbHVkZS9vcGVuc3NsL2tkZi5oCi0rKysgYi9pbmNsdWRlL29wZW5zc2wva2RmLmgKLUBAIC02 Myw2ICs2MywxMCBAQCBpbnQgRVZQX0tERl9uYW1lc19kb19hbGwoY29uc3QgRVZQX0tERiAqa2Rm LAotICMgZGVmaW5lIEVWUF9LREZfSEtERl9NT0RFX0VYVFJBQ1RfT05MWSAgICAgICAgMQotICMg ZGVmaW5lIEVWUF9LREZfSEtERl9NT0RFX0VYUEFORF9PTkxZICAgICAgICAgMgotIAotKyMgZGVm aW5lIEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX1VOREVURVJNSU5FRCAwCi0rIyBkZWZp bmUgRVZQX0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1JfQVBQUk9WRUQgICAgIDEKLSsjIGRlZmlu ZSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElDQVRPUl9OT1RfQVBQUk9WRUQgMgotKwotICNkZWZp bmUgRVZQX0tERl9TU0hLREZfVFlQRV9JTklUSUFMX0lWX0NMSV9UT19TUlYgICAgIDY1Ci0gI2Rl ZmluZSBFVlBfS0RGX1NTSEtERl9UWVBFX0lOSVRJQUxfSVZfU1JWX1RPX0NMSSAgICAgNjYKLSAj ZGVmaW5lIEVWUF9LREZfU1NIS0RGX1RZUEVfRU5DUllQVElPTl9LRVlfQ0xJX1RPX1NSViA2Nwot ZGlmZiAtLWdpdCBhL3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMva2Rmcy9oa2RmLmMgYi9wcm92 aWRlcnMvaW1wbGVtZW50YXRpb25zL2tkZnMvaGtkZi5jCi1pbmRleCA3ODQyNWZiYjQyLi4wZmYz NDMzMDc0IDEwMDY0NAotLS0tIGEvcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9rZGZzL2hrZGYu YwotKysrIGIvcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9rZGZzL2hrZGYuYwotQEAgLTQ0LDYg KzQ0LDcgQEAgc3RhdGljIE9TU0xfRlVOQ19rZGZfc2V0dGFibGVfY3R4X3BhcmFtc19mbiBrZGZf aGtkZl9zZXR0YWJsZV9jdHhfcGFyYW1zOwotIHN0YXRpYyBPU1NMX0ZVTkNfa2RmX3NldF9jdHhf cGFyYW1zX2ZuIGtkZl9oa2RmX3NldF9jdHhfcGFyYW1zOwotIHN0YXRpYyBPU1NMX0ZVTkNfa2Rm X2dldHRhYmxlX2N0eF9wYXJhbXNfZm4ga2RmX2hrZGZfZ2V0dGFibGVfY3R4X3BhcmFtczsKLSBz dGF0aWMgT1NTTF9GVU5DX2tkZl9nZXRfY3R4X3BhcmFtc19mbiBrZGZfaGtkZl9nZXRfY3R4X3Bh cmFtczsKLStzdGF0aWMgT1NTTF9GVU5DX2tkZl9uZXdjdHhfZm4ga2RmX3RsczFfM19uZXc7Ci0g c3RhdGljIE9TU0xfRlVOQ19rZGZfZGVyaXZlX2ZuIGtkZl90bHMxXzNfZGVyaXZlOwotIHN0YXRp YyBPU1NMX0ZVTkNfa2RmX3NldHRhYmxlX2N0eF9wYXJhbXNfZm4ga2RmX3RsczFfM19zZXR0YWJs ZV9jdHhfcGFyYW1zOwotIHN0YXRpYyBPU1NMX0ZVTkNfa2RmX3NldF9jdHhfcGFyYW1zX2ZuIGtk Zl90bHMxXzNfc2V0X2N0eF9wYXJhbXM7Ci1AQCAtODcsNiArODgsMTAgQEAgdHlwZWRlZiBzdHJ1 Y3QgewotICAgICBzaXplX3QgZGF0YV9sZW47Ci0gICAgIHVuc2lnbmVkIGNoYXIgKmluZm87Ci0g ICAgIHNpemVfdCBpbmZvX2xlbjsKLSsgICAgaW50IGlzX3RsczEzOwotKyNpZmRlZiBGSVBTX01P RFVMRQotKyAgICBpbnQgZmlwc19pbmRpY2F0b3I7Ci0rI2VuZGlmIC8qIGRlZmluZWQoRklQU19N T0RVTEUpICovCi0gfSBLREZfSEtERjsKLSAKLSBzdGF0aWMgdm9pZCAqa2RmX2hrZGZfbmV3KHZv aWQgKnByb3ZjdHgpCi1AQCAtMjAwLDYgKzIwNSwxMSBAQCBzdGF0aWMgaW50IGtkZl9oa2RmX2Rl cml2ZSh2b2lkICp2Y3R4LCB1bnNpZ25lZCBjaGFyICprZXksIHNpemVfdCBrZXlsZW4sCi0gICAg ICAgICByZXR1cm4gMDsKLSAgICAgfQotIAotKyNpZmRlZiBGSVBTX01PRFVMRQotKyAgICBpZiAo a2V5bGVuIDwgRVZQX0tERl9GSVBTX01JTl9LRVlfTEVOKQotKyAgICAgICAgY3R4LT5maXBzX2lu ZGljYXRvciA9IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRDsKLSsj ZW5kaWYgLyogZGVmaW5lZChGSVBTX01PRFVMRSkgKi8KLSsKLSAgICAgc3dpdGNoIChjdHgtPm1v ZGUpIHsKLSAgICAgY2FzZSBFVlBfS0RGX0hLREZfTU9ERV9FWFRSQUNUX0FORF9FWFBBTkQ6Ci0g ICAgIGRlZmF1bHQ6Ci1AQCAtMzA4LDE1ICszMTgsNzggQEAgc3RhdGljIGludCBrZGZfaGtkZl9n ZXRfY3R4X3BhcmFtcyh2b2lkICp2Y3R4LCBPU1NMX1BBUkFNIHBhcmFtc1tdKQotIHsKLSAgICAg S0RGX0hLREYgKmN0eCA9IChLREZfSEtERiAqKXZjdHg7Ci0gICAgIE9TU0xfUEFSQU0gKnA7Ci0r ICAgIGludCBhbnlfdmFsaWQgPSAwOyAvKiBzZXQgdG8gMSB3aGVuIGF0IGxlYXN0IG9uZSBwYXJh bWV0ZXIgd2FzIHZhbGlkICovCi0gCi0gICAgIGlmICgocCA9IE9TU0xfUEFSQU1fbG9jYXRlKHBh cmFtcywgT1NTTF9LREZfUEFSQU1fU0laRSkpICE9IE5VTEwpIHsKLSAgICAgICAgIHNpemVfdCBz eiA9IGtkZl9oa2RmX3NpemUoY3R4KTsKLSAKLS0gICAgICAgIGlmIChzeiA9PSAwKQotKyAgICAg ICAgYW55X3ZhbGlkID0gMTsKLSsKLSsgICAgICAgIGlmIChzeiA9PSAwIHx8ICFPU1NMX1BBUkFN X3NldF9zaXplX3QocCwgc3opKQotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0r I2lmZGVmIEZJUFNfTU9EVUxFCi0rICAgIGlmICgocCA9IE9TU0xfUEFSQU1fbG9jYXRlKHBhcmFt cywgT1NTTF9LREZfUEFSQU1fUkVESEFUX0ZJUFNfSU5ESUNBVE9SKSkKLSsgICAgICAgICAgICAh PSBOVUxMKSB7Ci0rICAgICAgICBpbnQgZmlwc19pbmRpY2F0b3IgPSBFVlBfS0RGX1JFREhBVF9G SVBTX0lORElDQVRPUl9BUFBST1ZFRDsKLSsgICAgICAgIGNvbnN0IEVWUF9NRCAqbWQgPSBvc3Ns X3Byb3ZfZGlnZXN0X21kKCZjdHgtPmRpZ2VzdCk7Ci0rCi0rICAgICAgICBhbnlfdmFsaWQgPSAx OwotKwotKyAgICAgICAgLyogQWNjb3JkaW5nIHRvIE5JU1QgU3BlY2lhbCBQdWJsaWNhdGlvbiA4 MDAtMTMxQXIyLCBTZWN0aW9uIDg6Ci0rICAgICAgICAgKiBEZXJpdmluZyBBZGRpdGlvbmFsIEtl eXMgZnJvbSBhIENyeXB0b2dyYXBoaWMgS2V5LCAiW3RdaGUgbGVuZ3RoIG9mCi0rICAgICAgICAg KiB0aGUga2V5LWRlcml2YXRpb24ga2V5IFtpLmUuLCB0aGUgaW5wdXQga2V5XSBzaGFsbCBiZSBh dCBsZWFzdCAxMTIKLSsgICAgICAgICAqIGJpdHMiLiAqLwotKyAgICAgICAgaWYgKGN0eC0+a2V5 X2xlbiA8IEVWUF9LREZfRklQU19NSU5fS0VZX0xFTikKLSsgICAgICAgICAgICBmaXBzX2luZGlj YXRvciA9IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRDsKLSsKLSsg ICAgICAgIC8qIEltcGxlbWVudGF0aW9uIEd1aWRhbmNlIGZvciBGSVBTIDE0MC0zIGFuZCB0aGUg Q3J5cHRvZ3JhcGhpYyBNb2R1bGUKLSsgICAgICAgICAqIFZlcmlmaWNhdGlvbiBQcm9ncmFtLCBT ZWN0aW9uIEQuQiBhbmQgTklTVCBTcGVjaWFsIFB1YmxpY2F0aW9uCi0rICAgICAgICAgKiA4MDAt MTMxQXIyLCBTZWN0aW9uIDEuMi4yIHNheSB0aGF0IGFueSBhbGdvcml0aG0gYXQgYSBzZWN1cml0 eQotKyAgICAgICAgICogc3RyZW5ndGggPCAxMTIgYml0cyBpcyBsZWdhY3kgdXNlIG9ubHksIHNv IGFsbCBkZXJpdmVkIGtleXMgc2hvdWxkCi0rICAgICAgICAgKiBiZSBsb25nZXIgdGhhbiB0aGF0 LiBJZiBhIGRlcml2ZWQga2V5IGhhcyBldmVyIGJlZW4gc2hvcnRlciB0aGFuCi0rICAgICAgICAg KiB0aGF0LCBjdHgtPm91dHB1dF9rZXllbGVuX2luZGljYXRvciB3aWxsIGJlIE5PVF9BUFBST1ZF RCwgYW5kIHdlCi0rICAgICAgICAgKiBzaG91bGQgYWxzbyBzZXQgdGhlIHJldHVybmVkIEZJUFMg aW5kaWNhdG9yIHRvIHVuYXBwcm92ZWQuICovCi0rICAgICAgICBpZiAoY3R4LT5maXBzX2luZGlj YXRvciA9PSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElDQVRPUl9OT1RfQVBQUk9WRUQpCi0rICAg ICAgICAgICAgZmlwc19pbmRpY2F0b3IgPSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElDQVRPUl9O T1RfQVBQUk9WRUQ7Ci0rCi0rICAgICAgICBpZiAoY3R4LT5pc190bHMxMykgewotKyAgICAgICAg ICAgIGlmIChtZCAhPSBOVUxMCi0rICAgICAgICAgICAgICAgICAgICAmJiAhRVZQX01EX2lzX2Eo bWQsICJTSEEyLTI1NiIpCi0rICAgICAgICAgICAgICAgICAgICAmJiAhRVZQX01EX2lzX2EobWQs ICJTSEEyLTM4NCIpKSB7Ci0rICAgICAgICAgICAgICAgIC8qIEltcGxlbWVudGF0aW9uIEd1aWRh bmNlIGZvciBGSVBTIDE0MC0zIGFuZCB0aGUgQ3J5cHRvZ3JhcGhpYwotKyAgICAgICAgICAgICAg ICAgKiBNb2R1bGUgVmFsaWRhdGlvbiBQcm9ncmFtLCBTZWN0aW9uIDIuNC5CLCAoNSk6ICJUaGUg VExTIDEuMwotKyAgICAgICAgICAgICAgICAgKiBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbiBkb2N1 bWVudGVkIGluIFNlY3Rpb24gNy4xIG9mIFJGQwotKyAgICAgICAgICAgICAgICAgKiA4NDQ2LiBU aGlzIGlzIGNvbnNpZGVyZWQgYW4gYXBwcm92ZWQgQ1ZMIGJlY2F1c2UgdGhlCi0rICAgICAgICAg ICAgICAgICAqIHVuZGVybHlpbmcgZnVuY3Rpb25zIHBlcmZvcm1lZCB3aXRoaW4gdGhlIFRMUyAx LjMgS0RGIG1hcCB0bwotKyAgICAgICAgICAgICAgICAgKiBOSVNUIGFwcHJvdmVkIHN0YW5kYXJk cywgbmFtZWx5OiBTUCA4MDAtMTMzcmV2MiAoU2VjdGlvbiA2LjMKLSsgICAgICAgICAgICAgICAg ICogT3B0aW9uICMzKSwgU1AgODAwLTU2Q3JldjIsIGFuZCBTUCA4MDAtMTA4LiIKLSsgICAgICAg ICAgICAgICAgICoKLSsgICAgICAgICAgICAgICAgICogUkZDIDg0NDYgYXBwZW5kaXggQi40IG9u bHkgbGlzdHMgU0hBLTI1NiBhbmQgU0hBLTM4NC4gKi8KLSsgICAgICAgICAgICAgICAgZmlwc19p bmRpY2F0b3IgPSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElDQVRPUl9OT1RfQVBQUk9WRUQ7Ci0r ICAgICAgICAgICAgfQotKyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICBpZiAobWQgIT0g TlVMTAotKyAgICAgICAgICAgICAgICAgICAgJiYgKEVWUF9NRF9pc19hKG1kLCAiU0hBS0UtMTI4 IikgfHwKLSsgICAgICAgICAgICAgICAgICAgICAgICBFVlBfTURfaXNfYShtZCwgIlNIQUtFLTI1 NiIpKSkgewotKyAgICAgICAgICAgICAgICAvKiBIS0RGIGlzIGEgU1AgODAwLTU2Q3IyIFR3b1N0 ZXAgS0RGLCBmb3Igd2hpY2ggYWxsIFNIQS0xLAotKyAgICAgICAgICAgICAgICAgKiBTSEEtMiBh bmQgU0hBLTMgYXJlIGFwcHJvdmVkLiBTSEFLRSBpcyBub3QgYXBwcm92ZWQsIGJlY2F1c2UKLSsg ICAgICAgICAgICAgICAgICogb2YgRklQUyAxNDAtMyBJRywgc2VjdGlvbiBDLkM6ICJUaGUgU0hB S0UxMjggYW5kIFNIQUtFMjU2Ci0rICAgICAgICAgICAgICAgICAqIGV4dGVuZGFibGUtb3V0cHV0 IGZ1bmN0aW9ucyBtYXkgb25seSBiZSB1c2VkIGFzIHRoZQotKyAgICAgICAgICAgICAgICAgKiBz dGFuZGFsb25lIGFsZ29yaXRobXMuIiAqLwotKyAgICAgICAgICAgICAgICBmaXBzX2luZGljYXRv ciA9IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRDsKLSsgICAgICAg ICAgICB9Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAoIU9TU0xfUEFSQU1fc2V0X2ludChwLCBm aXBzX2luZGljYXRvcikpCi0gICAgICAgICAgICAgcmV0dXJuIDA7Ci0tICAgICAgICByZXR1cm4g T1NTTF9QQVJBTV9zZXRfc2l6ZV90KHAsIHN6KTsKLSAgICAgfQotLSAgICByZXR1cm4gLTI7Ci0r I2VuZGlmIC8qIGRlZmluZWQoRklQU19NT0RVTEUpICovCi0rCi0rICAgIGlmICghYW55X3ZhbGlk KQotKyAgICAgICAgcmV0dXJuIC0yOwotKwotKyAgICByZXR1cm4gMTsKLSB9Ci0gCi0gc3RhdGlj IGNvbnN0IE9TU0xfUEFSQU0gKmtkZl9oa2RmX2dldHRhYmxlX2N0eF9wYXJhbXMob3NzbF91bnVz ZWQgdm9pZCAqY3R4LAotQEAgLTMyNCw2ICszOTcsOSBAQCBzdGF0aWMgY29uc3QgT1NTTF9QQVJB TSAqa2RmX2hrZGZfZ2V0dGFibGVfY3R4X3BhcmFtcyhvc3NsX3VudXNlZCB2b2lkICpjdHgsCi0g ewotICAgICBzdGF0aWMgY29uc3QgT1NTTF9QQVJBTSBrbm93bl9nZXR0YWJsZV9jdHhfcGFyYW1z W10gPSB7Ci0gICAgICAgICBPU1NMX1BBUkFNX3NpemVfdChPU1NMX0tERl9QQVJBTV9TSVpFLCBO VUxMKSwKLSsjaWZkZWYgRklQU19NT0RVTEUKLSsgICAgICAgIE9TU0xfUEFSQU1faW50KE9TU0xf S0RGX1BBUkFNX1JFREhBVF9GSVBTX0lORElDQVRPUiwgTlVMTCksCi0rI2VuZGlmIC8qIGRlZmlu ZWQoRklQU19NT0RVTEUpICovCi0gICAgICAgICBPU1NMX1BBUkFNX0VORAotICAgICB9OwotICAg ICByZXR1cm4ga25vd25fZ2V0dGFibGVfY3R4X3BhcmFtczsKLUBAIC02NTQsNiArNzMwLDE3IEBA IHN0YXRpYyBpbnQgcHJvdl90bHMxM19oa2RmX2dlbmVyYXRlX3NlY3JldChPU1NMX0xJQl9DVFgg KmxpYmN0eCwKLSAgICAgcmV0dXJuIHJldDsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgKmtkZl90bHMx XzNfbmV3KHZvaWQgKnByb3ZjdHgpCi0rewotKyAgICBLREZfSEtERiAqaGtkZiA9IGtkZl9oa2Rm X25ldyhwcm92Y3R4KTsKLSsKLSsgICAgaWYgKGhrZGYgIT0gTlVMTCkKLSsgICAgICAgIGhrZGYt PmlzX3RsczEzID0gMTsKLSsKLSsgICAgcmV0dXJuIGhrZGY7Ci0rfQotKwotKwotIHN0YXRpYyBp bnQga2RmX3RsczFfM19kZXJpdmUodm9pZCAqdmN0eCwgdW5zaWduZWQgY2hhciAqa2V5LCBzaXpl X3Qga2V5bGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgT1NTTF9QQVJB TSBwYXJhbXNbXSkKLSB7Ci1AQCAtNjY5LDYgKzc1NiwxMSBAQCBzdGF0aWMgaW50IGtkZl90bHMx XzNfZGVyaXZlKHZvaWQgKnZjdHgsIHVuc2lnbmVkIGNoYXIgKmtleSwgc2l6ZV90IGtleWxlbiwK LSAgICAgICAgIHJldHVybiAwOwotICAgICB9Ci0gCi0rI2lmZGVmIEZJUFNfTU9EVUxFCi0rICAg IGlmIChrZXlsZW4gPCBFVlBfS0RGX0ZJUFNfTUlOX0tFWV9MRU4pCi0rICAgICAgICBjdHgtPmZp cHNfaW5kaWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1JfTk9UX0FQUFJPVkVE OwotKyNlbmRpZiAvKiBkZWZpbmVkKEZJUFNfTU9EVUxFKSAqLwotKwotICAgICBzd2l0Y2ggKGN0 eC0+bW9kZSkgewotICAgICBkZWZhdWx0OgotICAgICAgICAgcmV0dXJuIDA7Ci1AQCAtNzQ2LDcg KzgzOCw3IEBAIHN0YXRpYyBjb25zdCBPU1NMX1BBUkFNICprZGZfdGxzMV8zX3NldHRhYmxlX2N0 eF9wYXJhbXMob3NzbF91bnVzZWQgdm9pZCAqY3R4LAotIH0KLSAKLSBjb25zdCBPU1NMX0RJU1BB VENIIG9zc2xfa2RmX3RsczFfM19rZGZfZnVuY3Rpb25zW10gPSB7Ci0tICAgIHsgT1NTTF9GVU5D X0tERl9ORVdDVFgsICh2b2lkKCopKHZvaWQpKWtkZl9oa2RmX25ldyB9LAotKyAgICB7IE9TU0xf RlVOQ19LREZfTkVXQ1RYLCAodm9pZCgqKSh2b2lkKSlrZGZfdGxzMV8zX25ldyB9LAotICAgICB7 IE9TU0xfRlVOQ19LREZfRFVQQ1RYLCAodm9pZCgqKSh2b2lkKSlrZGZfaGtkZl9kdXAgfSwKLSAg ICAgeyBPU1NMX0ZVTkNfS0RGX0ZSRUVDVFgsICh2b2lkKCopKHZvaWQpKWtkZl9oa2RmX2ZyZWUg fSwKLSAgICAgeyBPU1NMX0ZVTkNfS0RGX1JFU0VULCAodm9pZCgqKSh2b2lkKSlrZGZfaGtkZl9y ZXNldCB9LAotZGlmZiAtLWdpdCBhL3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMva2Rmcy9rYmtk Zi5jIGIvcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9rZGZzL2tia2RmLmMKLWluZGV4IGU2ODU1 ZDU3MzIuLmViZDlkNjQ4YTYgMTAwNjQ0Ci0tLS0gYS9wcm92aWRlcnMvaW1wbGVtZW50YXRpb25z L2tkZnMva2JrZGYuYwotKysrIGIvcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9rZGZzL2tia2Rm LmMKLUBAIC02MCw2ICs2MCw5IEBAIHR5cGVkZWYgc3RydWN0IHsKLSAgICAga2JrZGZfbW9kZSBt b2RlOwotICAgICBFVlBfTUFDX0NUWCAqY3R4X2luaXQ7Ci0gCi0rICAgIC8qIEhNQUMgZGlnZXN0 IGFsZ29yaXRobSwgaWYgYW55OyB1c2VkIHRvIGNvbXB1dGUgRklQUyBpbmRpY2F0b3IgKi8KLSsg ICAgUFJPVl9ESUdFU1QgZGlnZXN0OwotKwotICAgICAvKiBOYW1lcyBhcmUgbG93ZXJjYXNlZCB2 ZXJzaW9ucyBvZiB0aG9zZSBmb3VuZCBpbiBTUDgwMC0xMDguICovCi0gICAgIGludCByOwotICAg ICB1bnNpZ25lZCBjaGFyICpraTsKLUBAIC03Myw2ICs3Niw5IEBAIHR5cGVkZWYgc3RydWN0IHsK LSAgICAgaW50IHVzZV9sOwotICAgICBpbnQgaXNfa21hYzsKLSAgICAgaW50IHVzZV9zZXBhcmF0 b3I7Ci0rI2lmZGVmIEZJUFNfTU9EVUxFCi0rICAgIGludCBmaXBzX2luZGljYXRvcjsKLSsjZW5k aWYgLyogZGVmaW5lZChGSVBTX01PRFVMRSkgKi8KLSB9IEtCS0RGOwotIAotIC8qIERlZmluaXRp b25zIG5lZWRlZCBmb3IgdHlwZWNoZWNraW5nLiAqLwotQEAgLTE0Miw2ICsxNDgsNyBAQCBzdGF0 aWMgdm9pZCBrYmtkZl9yZXNldCh2b2lkICp2Y3R4KQotICAgICB2b2lkICpwcm92Y3R4ID0gY3R4 LT5wcm92Y3R4OwotIAotICAgICBFVlBfTUFDX0NUWF9mcmVlKGN0eC0+Y3R4X2luaXQpOwotKyAg ICBvc3NsX3Byb3ZfZGlnZXN0X3Jlc2V0KCZjdHgtPmRpZ2VzdCk7Ci0gICAgIE9QRU5TU0xfY2xl YXJfZnJlZShjdHgtPmNvbnRleHQsIGN0eC0+Y29udGV4dF9sZW4pOwotICAgICBPUEVOU1NMX2Ns ZWFyX2ZyZWUoY3R4LT5sYWJlbCwgY3R4LT5sYWJlbF9sZW4pOwotICAgICBPUEVOU1NMX2NsZWFy X2ZyZWUoY3R4LT5raSwgY3R4LT5raV9sZW4pOwotQEAgLTMwNyw2ICszMTQsMTEgQEAgc3RhdGlj IGludCBrYmtkZl9kZXJpdmUodm9pZCAqdmN0eCwgdW5zaWduZWQgY2hhciAqa2V5LCBzaXplX3Qg a2V5bGVuLAotICAgICAgICAgZ290byBkb25lOwotICAgICB9Ci0gCi0rI2lmZGVmIEZJUFNfTU9E VUxFCi0rICAgIGlmIChrZXlsZW4gPCBFVlBfS0RGX0ZJUFNfTUlOX0tFWV9MRU4pCi0rICAgICAg ICBjdHgtPmZpcHNfaW5kaWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1JfTk9U X0FQUFJPVkVEOwotKyNlbmRpZiAvKiBkZWZpbmVkKEZJUFNfTU9EVUxFKSAqLwotKwotICAgICBo ID0gRVZQX01BQ19DVFhfZ2V0X21hY19zaXplKGN0eC0+Y3R4X2luaXQpOwotICAgICBpZiAoaCA9 PSAwKQotICAgICAgICAgZ290byBkb25lOwotQEAgLTM2OSw2ICszODEsOSBAQCBzdGF0aWMgaW50 IGtia2RmX3NldF9jdHhfcGFyYW1zKHZvaWQgKnZjdHgsIGNvbnN0IE9TU0xfUEFSQU0gcGFyYW1z W10pCi0gICAgICAgICB9Ci0gICAgIH0KLSAKLSsgICAgaWYgKCFvc3NsX3Byb3ZfZGlnZXN0X2xv YWRfZnJvbV9wYXJhbXMoJmN0eC0+ZGlnZXN0LCBwYXJhbXMsIGxpYmN0eCkpCi0rICAgICAgICBy ZXR1cm4gMDsKLSsKLSAgICAgcCA9IE9TU0xfUEFSQU1fbG9jYXRlX2NvbnN0KHBhcmFtcywgT1NT TF9LREZfUEFSQU1fTU9ERSk7Ci0gICAgIGlmIChwICE9IE5VTEwKLSAgICAgICAgICYmIE9QRU5T U0xfc3RybmNhc2VjbXAoImNvdW50ZXIiLCBwLT5kYXRhLCBwLT5kYXRhX3NpemUpID09IDApIHsK LUBAIC00NTAsMjAgKzQ2NSw3NyBAQCBzdGF0aWMgY29uc3QgT1NTTF9QQVJBTSAqa2JrZGZfc2V0 dGFibGVfY3R4X3BhcmFtcyhvc3NsX3VudXNlZCB2b2lkICpjdHgsCi0gc3RhdGljIGludCBrYmtk Zl9nZXRfY3R4X3BhcmFtcyh2b2lkICp2Y3R4LCBPU1NMX1BBUkFNIHBhcmFtc1tdKQotIHsKLSAg ICAgT1NTTF9QQVJBTSAqcDsKLSsgICAgaW50IGFueV92YWxpZCA9IDA7IC8qIHNldCB0byAxIHdo ZW4gYXQgbGVhc3Qgb25lIHBhcmFtZXRlciB3YXMgdmFsaWQgKi8KLSAKLSAgICAgcCA9IE9TU0xf UEFSQU1fbG9jYXRlKHBhcmFtcywgT1NTTF9LREZfUEFSQU1fU0laRSk7Ci0tICAgIGlmIChwID09 IE5VTEwpCi0rICAgIGlmIChwICE9IE5VTEwpIHsKLSsgICAgICAgIGFueV92YWxpZCA9IDE7Ci0r Ci0rICAgICAgICAvKiBLQktERiBjYW4gcHJvZHVjZSByZXN1bHRzIGFzIGxhcmdlIGFzIHlvdSBs aWtlLiAqLwotKyAgICAgICAgaWYgKCFPU1NMX1BBUkFNX3NldF9zaXplX3QocCwgU0laRV9NQVgp KQotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rI2lmZGVmIEZJUFNfTU9EVUxF Ci0rICAgIHAgPSBPU1NMX1BBUkFNX2xvY2F0ZShwYXJhbXMsIE9TU0xfS0RGX1BBUkFNX1JFREhB VF9GSVBTX0lORElDQVRPUik7Ci0rICAgIGlmIChwICE9IE5VTEwpIHsKLSsgICAgICAgIEtCS0RG ICpjdHggPSAoS0JLREYgKil2Y3R4OwotKyAgICAgICAgaW50IGZpcHNfaW5kaWNhdG9yID0gRVZQ X0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1JfQVBQUk9WRUQ7Ci0rCi0rICAgICAgICBhbnlfdmFs aWQgPSAxOwotKwotKyAgICAgICAgLyogQWNjb3JkaW5nIHRvIE5JU1QgU3BlY2lhbCBQdWJsaWNh dGlvbiA4MDAtMTMxQXIyLCBTZWN0aW9uIDg6Ci0rICAgICAgICAgKiBEZXJpdmluZyBBZGRpdGlv bmFsIEtleXMgZnJvbSBhIENyeXB0b2dyYXBoaWMgS2V5LCAiW3RdaGUgbGVuZ3RoIG9mCi0rICAg ICAgICAgKiB0aGUga2V5LWRlcml2YXRpb24ga2V5IFtpLmUuLCB0aGUgaW5wdXQga2V5XSBzaGFs bCBiZSBhdCBsZWFzdCAxMTIKLSsgICAgICAgICAqIGJpdHMiLiAqLwotKyAgICAgICAgaWYgKGN0 eC0+a2lfbGVuIDwgRVZQX0tERl9GSVBTX01JTl9LRVlfTEVOKQotKyAgICAgICAgICAgIGZpcHNf aW5kaWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1JfTk9UX0FQUFJPVkVEOwot KwotKyAgICAgICAgLyogSW1wbGVtZW50YXRpb24gR3VpZGFuY2UgZm9yIEZJUFMgMTQwLTMgYW5k IHRoZSBDcnlwdG9ncmFwaGljIE1vZHVsZQotKyAgICAgICAgICogVmVyaWZpY2F0aW9uIFByb2dy YW0sIFNlY3Rpb24gRC5CIGFuZCBOSVNUIFNwZWNpYWwgUHVibGljYXRpb24KLSsgICAgICAgICAq IDgwMC0xMzFBcjIsIFNlY3Rpb24gMS4yLjIgc2F5IHRoYXQgYW55IGFsZ29yaXRobSBhdCBhIHNl Y3VyaXR5Ci0rICAgICAgICAgKiBzdHJlbmd0aCA8IDExMiBiaXRzIGlzIGxlZ2FjeSB1c2Ugb25s eSwgc28gYWxsIGRlcml2ZWQga2V5cyBzaG91bGQKLSsgICAgICAgICAqIGJlIGxvbmdlciB0aGFu IHRoYXQuIElmIGEgZGVyaXZlZCBrZXkgaGFzIGV2ZXIgYmVlbiBzaG9ydGVyIHRoYW4KLSsgICAg ICAgICAqIHRoYXQsIGN0eC0+b3V0cHV0X2tleWVsZW5faW5kaWNhdG9yIHdpbGwgYmUgTk9UX0FQ UFJPVkVELCBhbmQgd2UKLSsgICAgICAgICAqIHNob3VsZCBhbHNvIHNldCB0aGUgcmV0dXJuZWQg RklQUyBpbmRpY2F0b3IgdG8gdW5hcHByb3ZlZC4gKi8KLSsgICAgICAgIGlmIChjdHgtPmZpcHNf aW5kaWNhdG9yID09IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRCkK LSsgICAgICAgICAgICBmaXBzX2luZGljYXRvciA9IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNB VE9SX05PVF9BUFBST1ZFRDsKLSsKLSsgICAgICAgIC8qIEltcGxlbWVudGF0aW9uIEd1aWRhbmNl IGZvciBGSVBTIDE0MC0zIGFuZCB0aGUgQ3J5cHRvZ3JhcGhpYyBNb2R1bGUKLSsgICAgICAgICAq IFZhbGlkYXRpb24gUHJvZ3JhbSwgU2VjdGlvbiBDLkM6ICJUaGUgU0hBS0UxMjggYW5kIFNIQUtF MjU2Ci0rICAgICAgICAgKiBleHRlbmRhYmxlLW91dHB1dCBmdW5jdGlvbnMgbWF5IG9ubHkgYmUg dXNlZCBhcyB0aGUgc3RhbmRhbG9uZQotKyAgICAgICAgICogYWxnb3JpdGhtcy4iIE5vdGUgdGhh dCB0aGUgZGlnZXN0IGlzIG9ubHkgdXNlZCB3aGVuIHRoZSBNQUMKLSsgICAgICAgICAqIGFsZ29y aXRobSBpcyBITUFDLiAqLwotKyAgICAgICAgaWYgKGN0eC0+Y3R4X2luaXQgIT0gTlVMTAotKyAg ICAgICAgICAgICAgICAmJiBFVlBfTUFDX2lzX2EoRVZQX01BQ19DVFhfZ2V0MF9tYWMoY3R4LT5j dHhfaW5pdCksIE9TU0xfTUFDX05BTUVfSE1BQykpIHsKLSsgICAgICAgICAgICBjb25zdCBFVlBf TUQgKm1kID0gb3NzbF9wcm92X2RpZ2VzdF9tZCgmY3R4LT5kaWdlc3QpOwotKyAgICAgICAgICAg IGlmIChtZCAhPSBOVUxMCi0rICAgICAgICAgICAgICAgICAgICAmJiAoRVZQX01EX2lzX2EobWQs ICJTSEFLRS0xMjgiKSB8fCBFVlBfTURfaXNfYShtZCwgIlNIQUtFLTI1NiIpKSkgewotKyAgICAg ICAgICAgICAgICBmaXBzX2luZGljYXRvciA9IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9S X05PVF9BUFBST1ZFRDsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBp ZiAoIU9TU0xfUEFSQU1fc2V0X2ludChwLCBmaXBzX2luZGljYXRvcikpCi0rICAgICAgICAgICAg cmV0dXJuIDA7Ci0rICAgIH0KLSsjZW5kaWYKLSsKLSsgICAgaWYgKCFhbnlfdmFsaWQpCi0gICAg ICAgICByZXR1cm4gLTI7Ci0gCi0tICAgIC8qIEtCS0RGIGNhbiBwcm9kdWNlIHJlc3VsdHMgYXMg bGFyZ2UgYXMgeW91IGxpa2UuICovCi0tICAgIHJldHVybiBPU1NMX1BBUkFNX3NldF9zaXplX3Qo cCwgU0laRV9NQVgpOwotKyAgICByZXR1cm4gMTsKLSB9Ci0gCi0gc3RhdGljIGNvbnN0IE9TU0xf UEFSQU0gKmtia2RmX2dldHRhYmxlX2N0eF9wYXJhbXMob3NzbF91bnVzZWQgdm9pZCAqY3R4LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zc2xf dW51c2VkIHZvaWQgKnByb3ZjdHgpCi0gewotLSAgICBzdGF0aWMgY29uc3QgT1NTTF9QQVJBTSBr bm93bl9nZXR0YWJsZV9jdHhfcGFyYW1zW10gPQotLSAgICAgICAgeyBPU1NMX1BBUkFNX3NpemVf dChPU1NMX0tERl9QQVJBTV9TSVpFLCBOVUxMKSwgT1NTTF9QQVJBTV9FTkQgfTsKLSsgICAgc3Rh dGljIGNvbnN0IE9TU0xfUEFSQU0ga25vd25fZ2V0dGFibGVfY3R4X3BhcmFtc1tdID0gewotKyAg ICAgICAgT1NTTF9QQVJBTV9zaXplX3QoT1NTTF9LREZfUEFSQU1fU0laRSwgTlVMTCksCi0rI2lm ZGVmIEZJUFNfTU9EVUxFCi0rICAgICAgICBPU1NMX1BBUkFNX2ludChPU1NMX0tERl9QQVJBTV9S RURIQVRfRklQU19JTkRJQ0FUT1IsIE5VTEwpLAotKyNlbmRpZiAvKiBkZWZpbmVkKEZJUFNfTU9E VUxFKSAqLwotKyAgICAgICAgT1NTTF9QQVJBTV9FTkQKLSsgICAgfTsKLSAgICAgcmV0dXJuIGtu b3duX2dldHRhYmxlX2N0eF9wYXJhbXM7Ci0gfQotIAotZGlmZiAtLWdpdCBhL3Byb3ZpZGVycy9p bXBsZW1lbnRhdGlvbnMva2Rmcy9zc2hrZGYuYyBiL3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMv a2Rmcy9zc2hrZGYuYwotaW5kZXggOTA5ODZiYzc2Mi4uMjdjZDdmOGJkZiAxMDA2NDQKLS0tLSBh L3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMva2Rmcy9zc2hrZGYuYwotKysrIGIvcHJvdmlkZXJz L2ltcGxlbWVudGF0aW9ucy9rZGZzL3NzaGtkZi5jCi1AQCAtNDksNiArNDksOSBAQCB0eXBlZGVm IHN0cnVjdCB7Ci0gICAgIGNoYXIgdHlwZTsgLyogWCAqLwotICAgICB1bnNpZ25lZCBjaGFyICpz ZXNzaW9uX2lkOwotICAgICBzaXplX3Qgc2Vzc2lvbl9pZF9sZW47Ci0rI2lmZGVmIEZJUFNfTU9E VUxFCi0rICAgIGludCBmaXBzX2luZGljYXRvcjsKLSsjZW5kaWYgLyogZGVmaW5lZChGSVBTX01P RFVMRSkgKi8KLSB9IEtERl9TU0hLREY7Ci0gCi0gc3RhdGljIHZvaWQgKmtkZl9zc2hrZGZfbmV3 KHZvaWQgKnByb3ZjdHgpCi1AQCAtMTQ5LDYgKzE1MiwxMiBAQCBzdGF0aWMgaW50IGtkZl9zc2hr ZGZfZGVyaXZlKHZvaWQgKnZjdHgsIHVuc2lnbmVkIGNoYXIgKmtleSwgc2l6ZV90IGtleWxlbiwK LSAgICAgICAgIEVSUl9yYWlzZShFUlJfTElCX1BST1YsIFBST1ZfUl9NSVNTSU5HX1RZUEUpOwot ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSsKLSsjaWZkZWYgRklQU19NT0RVTEUKLSsgICAg aWYgKGtleWxlbiA8IEVWUF9LREZfRklQU19NSU5fS0VZX0xFTikKLSsgICAgICAgIGN0eC0+Zmlw c19pbmRpY2F0b3IgPSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElDQVRPUl9OT1RfQVBQUk9WRUQ7 Ci0rI2VuZGlmIC8qIGRlZmluZWQoRklQU19NT0RVTEUpICovCi0rCi0gICAgIHJldHVybiBTU0hL REYobWQsIGN0eC0+a2V5LCBjdHgtPmtleV9sZW4sCi0gICAgICAgICAgICAgICAgICAgY3R4LT54 Y2doYXNoLCBjdHgtPnhjZ2hhc2hfbGVuLAotICAgICAgICAgICAgICAgICAgIGN0eC0+c2Vzc2lv bl9pZCwgY3R4LT5zZXNzaW9uX2lkX2xlbiwKLUBAIC0yMTcsMTAgKzIyNiw2NyBAQCBzdGF0aWMg Y29uc3QgT1NTTF9QQVJBTSAqa2RmX3NzaGtkZl9zZXR0YWJsZV9jdHhfcGFyYW1zKG9zc2xfdW51 c2VkIHZvaWQgKmN0eCwKLSBzdGF0aWMgaW50IGtkZl9zc2hrZGZfZ2V0X2N0eF9wYXJhbXModm9p ZCAqdmN0eCwgT1NTTF9QQVJBTSBwYXJhbXNbXSkKLSB7Ci0gICAgIE9TU0xfUEFSQU0gKnA7Ci0r ICAgIGludCBhbnlfdmFsaWQgPSAwOyAvKiBzZXQgdG8gMSB3aGVuIGF0IGxlYXN0IG9uZSBwYXJh bWV0ZXIgd2FzIHZhbGlkICovCi0gCi0tICAgIGlmICgocCA9IE9TU0xfUEFSQU1fbG9jYXRlKHBh cmFtcywgT1NTTF9LREZfUEFSQU1fU0laRSkpICE9IE5VTEwpCi0tICAgICAgICByZXR1cm4gT1NT TF9QQVJBTV9zZXRfc2l6ZV90KHAsIFNJWkVfTUFYKTsKLS0gICAgcmV0dXJuIC0yOwotKyAgICBp ZiAoKHAgPSBPU1NMX1BBUkFNX2xvY2F0ZShwYXJhbXMsIE9TU0xfS0RGX1BBUkFNX1NJWkUpKSAh PSBOVUxMKSB7Ci0rICAgICAgICBhbnlfdmFsaWQgPSAxOwotKwotKyAgICAgICAgaWYgKCFPU1NM X1BBUkFNX3NldF9zaXplX3QocCwgU0laRV9NQVgpKQotKyAgICAgICAgICAgIHJldHVybiAwOwot KyAgICB9Ci0rCi0rI2lmZGVmIEZJUFNfTU9EVUxFCi0rICAgIHAgPSBPU1NMX1BBUkFNX2xvY2F0 ZShwYXJhbXMsIE9TU0xfS0RGX1BBUkFNX1JFREhBVF9GSVBTX0lORElDQVRPUik7Ci0rICAgIGlm IChwICE9IE5VTEwpIHsKLSsgICAgICAgIEtERl9TU0hLREYgKmN0eCA9IHZjdHg7Ci0rICAgICAg ICBpbnQgZmlwc19pbmRpY2F0b3IgPSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElDQVRPUl9BUFBS T1ZFRDsKLSsKLSsgICAgICAgIGFueV92YWxpZCA9IDE7Ci0rCi0rICAgICAgICAvKiBBY2NvcmRp bmcgdG8gTklTVCBTcGVjaWFsIFB1YmxpY2F0aW9uIDgwMC0xMzFBcjIsIFNlY3Rpb24gODoKLSsg ICAgICAgICAqIERlcml2aW5nIEFkZGl0aW9uYWwgS2V5cyBmcm9tIGEgQ3J5cHRvZ3JhcGhpYyBL ZXksICJbdF1oZSBsZW5ndGggb2YKLSsgICAgICAgICAqIHRoZSBrZXktZGVyaXZhdGlvbiBrZXkg W2kuZS4sIHRoZSBpbnB1dCBrZXldIHNoYWxsIGJlIGF0IGxlYXN0IDExMgotKyAgICAgICAgICog Yml0cyIuICovCi0rICAgICAgICBpZiAoY3R4LT5rZXlfbGVuIDwgRVZQX0tERl9GSVBTX01JTl9L RVlfTEVOKQotKyAgICAgICAgICAgIGZpcHNfaW5kaWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQ U19JTkRJQ0FUT1JfTk9UX0FQUFJPVkVEOwotKwotKyAgICAgICAgLyogSW1wbGVtZW50YXRpb24g R3VpZGFuY2UgZm9yIEZJUFMgMTQwLTMgYW5kIHRoZSBDcnlwdG9ncmFwaGljIE1vZHVsZQotKyAg ICAgICAgICogVmVyaWZpY2F0aW9uIFByb2dyYW0sIFNlY3Rpb24gRC5CIGFuZCBOSVNUIFNwZWNp YWwgUHVibGljYXRpb24KLSsgICAgICAgICAqIDgwMC0xMzFBcjIsIFNlY3Rpb24gMS4yLjIgc2F5 IHRoYXQgYW55IGFsZ29yaXRobSBhdCBhIHNlY3VyaXR5Ci0rICAgICAgICAgKiBzdHJlbmd0aCA8 IDExMiBiaXRzIGlzIGxlZ2FjeSB1c2Ugb25seSwgc28gYWxsIGRlcml2ZWQga2V5cyBzaG91bGQK LSsgICAgICAgICAqIGJlIGxvbmdlciB0aGFuIHRoYXQuIElmIGEgZGVyaXZlZCBrZXkgaGFzIGV2 ZXIgYmVlbiBzaG9ydGVyIHRoYW4KLSsgICAgICAgICAqIHRoYXQsIGN0eC0+b3V0cHV0X2tleWVs ZW5faW5kaWNhdG9yIHdpbGwgYmUgTk9UX0FQUFJPVkVELCBhbmQgd2UKLSsgICAgICAgICAqIHNo b3VsZCBhbHNvIHNldCB0aGUgcmV0dXJuZWQgRklQUyBpbmRpY2F0b3IgdG8gdW5hcHByb3ZlZC4g Ki8KLSsgICAgICAgIGlmIChjdHgtPmZpcHNfaW5kaWNhdG9yID09IEVWUF9LREZfUkVESEFUX0ZJ UFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRCkKLSsgICAgICAgICAgICBmaXBzX2luZGljYXRvciA9 IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRDsKLSsKLSsgICAgICAg IC8qIEltcGxlbWVudGF0aW9uIEd1aWRhbmNlIGZvciBGSVBTIDE0MC0zIGFuZCB0aGUgQ3J5cHRv Z3JhcGhpYyBNb2R1bGUKLSsgICAgICAgICAqIFZhbGlkYXRpb24gUHJvZ3JhbSwgU2VjdGlvbiBD LkM6ICJUaGUgU0hBS0UxMjggYW5kIFNIQUtFMjU2Ci0rICAgICAgICAgKiBleHRlbmRhYmxlLW91 dHB1dCBmdW5jdGlvbnMgbWF5IG9ubHkgYmUgdXNlZCBhcyB0aGUgc3RhbmRhbG9uZQotKyAgICAg ICAgICogYWxnb3JpdGhtcy4iCi0rICAgICAgICAgKgotKyAgICAgICAgICogQWRkaXRpb25hbGx5 LCBTUCA4MDAtMTM1cjEgc2VjdGlvbiA1LjIgc3BlY2lmaWVzIHRoYXQgdGhlIGhhc2gKLSsgICAg ICAgICAqIGZ1bmN0aW9uIHVzZWQgaW4gU1NIS0RGICJpcyBvbmUgb2YgdGhlIGhhc2ggZnVuY3Rp b25zIHNwZWNpZmllZCBpbgotKyAgICAgICAgICogRklQUyAxODAtMy4iLCB3aGljaCBydWxlcyBv dXQgU0hBLTMgYW5kIHRydW5jYXRlZCB2YXJpYW50cyBvZiBTSEEtMi4KLSsgICAgICAgICAqICov Ci0rICAgICAgICBpZiAoY3R4LT5kaWdlc3QubWQgIT0gTlVMTAotKyAgICAgICAgICAgICYmICFF VlBfTURfaXNfYShjdHgtPmRpZ2VzdC5tZCwgIlNIQS0xIikKLSsgICAgICAgICAgICAmJiAhRVZQ X01EX2lzX2EoY3R4LT5kaWdlc3QubWQsICJTSEEyLTIyNCIpCi0rICAgICAgICAgICAgJiYgIUVW UF9NRF9pc19hKGN0eC0+ZGlnZXN0Lm1kLCAiU0hBMi0yNTYiKQotKyAgICAgICAgICAgICYmICFF VlBfTURfaXNfYShjdHgtPmRpZ2VzdC5tZCwgIlNIQTItMzg0IikKLSsgICAgICAgICAgICAmJiAh RVZQX01EX2lzX2EoY3R4LT5kaWdlc3QubWQsICJTSEEyLTUxMiIpKSB7Ci0rICAgICAgICAgICAg Zmlwc19pbmRpY2F0b3IgPSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElDQVRPUl9OT1RfQVBQUk9W RUQ7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBpZiAoIU9TU0xfUEFSQU1fc2V0X2ludChwLCBm aXBzX2luZGljYXRvcikpCi0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsjZW5kaWYK LSsKLSsgICAgaWYgKCFhbnlfdmFsaWQpCi0rICAgICAgICByZXR1cm4gLTI7Ci0rCi0rICAgIHJl dHVybiAxOwotIH0KLSAKLSBzdGF0aWMgY29uc3QgT1NTTF9QQVJBTSAqa2RmX3NzaGtkZl9nZXR0 YWJsZV9jdHhfcGFyYW1zKG9zc2xfdW51c2VkIHZvaWQgKmN0eCwKLUBAIC0yMjgsNiArMjk0LDkg QEAgc3RhdGljIGNvbnN0IE9TU0xfUEFSQU0gKmtkZl9zc2hrZGZfZ2V0dGFibGVfY3R4X3BhcmFt cyhvc3NsX3VudXNlZCB2b2lkICpjdHgsCi0gewotICAgICBzdGF0aWMgY29uc3QgT1NTTF9QQVJB TSBrbm93bl9nZXR0YWJsZV9jdHhfcGFyYW1zW10gPSB7Ci0gICAgICAgICBPU1NMX1BBUkFNX3Np emVfdChPU1NMX0tERl9QQVJBTV9TSVpFLCBOVUxMKSwKLSsjaWZkZWYgRklQU19NT0RVTEUKLSsg ICAgICAgIE9TU0xfUEFSQU1faW50KE9TU0xfS0RGX1BBUkFNX1JFREhBVF9GSVBTX0lORElDQVRP UiwgTlVMTCksCi0rI2VuZGlmIC8qIGRlZmluZWQoRklQU19NT0RVTEUpICovCi0gICAgICAgICBP U1NMX1BBUkFNX0VORAotICAgICB9OwotICAgICByZXR1cm4ga25vd25fZ2V0dGFibGVfY3R4X3Bh cmFtczsKLWRpZmYgLS1naXQgYS9wcm92aWRlcnMvaW1wbGVtZW50YXRpb25zL2tkZnMvc3NrZGYu YyBiL3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMva2Rmcy9zc2tkZi5jCi1pbmRleCBkYjc1MGE0 ZjIzLi4xNzVmZDMwMzI3IDEwMDY0NAotLS0tIGEvcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9r ZGZzL3Nza2RmLmMKLSsrKyBiL3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMva2Rmcy9zc2tkZi5j Ci1AQCAtNjQsNiArNjQsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgewotICAgICBzaXplX3Qgc2FsdF9s ZW47Ci0gICAgIHNpemVfdCBvdXRfbGVuOyAvKiBvcHRpb25hbCBLTUFDIHBhcmFtZXRlciAqLwot ICAgICBpbnQgaXNfa21hYzsKLSsgICAgaW50IGlzX3g5NjNrZGY7Ci0rI2lmZGVmIEZJUFNfTU9E VUxFCi0rICAgIGludCBmaXBzX2luZGljYXRvcjsKLSsjZW5kaWYgLyogZGVmaW5lZChGSVBTX01P RFVMRSkgKi8KLSB9IEtERl9TU0tERjsKLSAKLSAjZGVmaW5lIFNTS0RGX01BWF9JTkxFTiAoMTw8 MzApCi1AQCAtNzQsNiArNzgsNyBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIga21hY19jdXN0b21fc3RyW10gPSB7IDB4NEIsIDB4NDQsIDB4NDYgfTsKLSAK LSBzdGF0aWMgT1NTTF9GVU5DX2tkZl9uZXdjdHhfZm4gc3NrZGZfbmV3OwotK3N0YXRpYyBPU1NM X0ZVTkNfa2RmX25ld2N0eF9mbiB4OTYza2RmX25ldzsKLSBzdGF0aWMgT1NTTF9GVU5DX2tkZl9k dXBjdHhfZm4gc3NrZGZfZHVwOwotIHN0YXRpYyBPU1NMX0ZVTkNfa2RmX2ZyZWVjdHhfZm4gc3Nr ZGZfZnJlZTsKLSBzdGF0aWMgT1NTTF9GVU5DX2tkZl9yZXNldF9mbiBzc2tkZl9yZXNldDsKLUBA IC0yOTcsNiArMzAyLDE2IEBAIHN0YXRpYyB2b2lkICpzc2tkZl9uZXcodm9pZCAqcHJvdmN0eCkK LSAgICAgcmV0dXJuIGN0eDsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgKng5NjNrZGZfbmV3KHZvaWQg KnByb3ZjdHgpCi0rewotKyAgICBLREZfU1NLREYgKmN0eCA9IHNza2RmX25ldyhwcm92Y3R4KTsK LSsKLSsgICAgaWYgKGN0eCkKLSsgICAgICAgIGN0eC0+aXNfeDk2M2tkZiA9IDE7Ci0rCi0rICAg IHJldHVybiBjdHg7Ci0rfQotKwotIHN0YXRpYyB2b2lkIHNza2RmX3Jlc2V0KHZvaWQgKnZjdHgp Ci0gewotICAgICBLREZfU1NLREYgKmN0eCA9IChLREZfU1NLREYgKil2Y3R4OwotQEAgLTM4Miw2 ICszOTcsMTEgQEAgc3RhdGljIGludCBzc2tkZl9kZXJpdmUodm9pZCAqdmN0eCwgdW5zaWduZWQg Y2hhciAqa2V5LCBzaXplX3Qga2V5bGVuLAotICAgICB9Ci0gICAgIG1kID0gb3NzbF9wcm92X2Rp Z2VzdF9tZCgmY3R4LT5kaWdlc3QpOwotIAotKyNpZmRlZiBGSVBTX01PRFVMRQotKyAgICBpZiAo a2V5bGVuIDwgRVZQX0tERl9GSVBTX01JTl9LRVlfTEVOKQotKyAgICAgICAgY3R4LT5maXBzX2lu ZGljYXRvciA9IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRDsKLSsj ZW5kaWYgLyogZGVmaW5lZChGSVBTX01PRFVMRSkgKi8KLSsKLSAgICAgaWYgKGN0eC0+bWFjY3R4 ICE9IE5VTEwpIHsKLSAgICAgICAgIC8qIEgoeCkgPSBLTUFDIG9yIEgoeCkgPSBITUFDICovCi0g ICAgICAgICBpbnQgcmV0OwotQEAgLTQ2MSw2ICs0ODEsMTEgQEAgc3RhdGljIGludCB4OTYza2Rm X2Rlcml2ZSh2b2lkICp2Y3R4LCB1bnNpZ25lZCBjaGFyICprZXksIHNpemVfdCBrZXlsZW4sCi0g ICAgICAgICByZXR1cm4gMDsKLSAgICAgfQotIAotKyNpZmRlZiBGSVBTX01PRFVMRQotKyAgICBp ZiAoa2V5bGVuIDwgRVZQX0tERl9GSVBTX01JTl9LRVlfTEVOKQotKyAgICAgICAgY3R4LT5maXBz X2luZGljYXRvciA9IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRDsK LSsjZW5kaWYgLyogZGVmaW5lZChGSVBTX01PRFVMRSkgKi8KLSsKLSAgICAgcmV0dXJuIFNTS0RG X2hhc2hfa2RtKG1kLCBjdHgtPnNlY3JldCwgY3R4LT5zZWNyZXRfbGVuLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3R4LT5pbmZvLCBjdHgtPmluZm9fbGVuLCAxLCBrZXksIGtleWxlbik7 Ci0gfQotQEAgLTUzNywxMCArNTYyLDc0IEBAIHN0YXRpYyBpbnQgc3NrZGZfZ2V0X2N0eF9wYXJh bXModm9pZCAqdmN0eCwgT1NTTF9QQVJBTSBwYXJhbXNbXSkKLSB7Ci0gICAgIEtERl9TU0tERiAq Y3R4ID0gKEtERl9TU0tERiAqKXZjdHg7Ci0gICAgIE9TU0xfUEFSQU0gKnA7Ci0rICAgIGludCBh bnlfdmFsaWQgPSAwOyAvKiBzZXQgdG8gMSB3aGVuIGF0IGxlYXN0IG9uZSBwYXJhbWV0ZXIgd2Fz IHZhbGlkICovCi0rCi0rICAgIGlmICgocCA9IE9TU0xfUEFSQU1fbG9jYXRlKHBhcmFtcywgT1NT TF9LREZfUEFSQU1fU0laRSkpICE9IE5VTEwpIHsKLSsgICAgICAgIGFueV92YWxpZCA9IDE7Ci0r Ci0rICAgICAgICBpZiAoIU9TU0xfUEFSQU1fc2V0X3NpemVfdChwLCBzc2tkZl9zaXplKGN0eCkp KQotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0gCi0tICAgIGlmICgocCA9IE9TU0xf UEFSQU1fbG9jYXRlKHBhcmFtcywgT1NTTF9LREZfUEFSQU1fU0laRSkpICE9IE5VTEwpCi0tICAg ICAgICByZXR1cm4gT1NTTF9QQVJBTV9zZXRfc2l6ZV90KHAsIHNza2RmX3NpemUoY3R4KSk7Ci0t ICAgIHJldHVybiAtMjsKLSsjaWZkZWYgRklQU19NT0RVTEUKLSsgICAgcCA9IE9TU0xfUEFSQU1f bG9jYXRlKHBhcmFtcywgT1NTTF9LREZfUEFSQU1fUkVESEFUX0ZJUFNfSU5ESUNBVE9SKTsKLSsg ICAgaWYgKHAgIT0gTlVMTCkgewotKyAgICAgICAgaW50IGZpcHNfaW5kaWNhdG9yID0gRVZQX0tE Rl9SRURIQVRfRklQU19JTkRJQ0FUT1JfQVBQUk9WRUQ7Ci0rCi0rICAgICAgICBhbnlfdmFsaWQg PSAxOwotKwotKyAgICAgICAgLyogQWNjb3JkaW5nIHRvIE5JU1QgU3BlY2lhbCBQdWJsaWNhdGlv biA4MDAtMTMxQXIyLCBTZWN0aW9uIDg6Ci0rICAgICAgICAgKiBEZXJpdmluZyBBZGRpdGlvbmFs IEtleXMgZnJvbSBhIENyeXB0b2dyYXBoaWMgS2V5LCAiW3RdaGUgbGVuZ3RoIG9mCi0rICAgICAg ICAgKiB0aGUga2V5LWRlcml2YXRpb24ga2V5IFtpLmUuLCB0aGUgaW5wdXQga2V5XSBzaGFsbCBi ZSBhdCBsZWFzdCAxMTIKLSsgICAgICAgICAqIGJpdHMiLiAqLwotKyAgICAgICAgaWYgKGN0eC0+ c2VjcmV0X2xlbiA8IEVWUF9LREZfRklQU19NSU5fS0VZX0xFTikKLSsgICAgICAgICAgICBmaXBz X2luZGljYXRvciA9IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRDsK LSsKLSsgICAgICAgIC8qIEltcGxlbWVudGF0aW9uIEd1aWRhbmNlIGZvciBGSVBTIDE0MC0zIGFu ZCB0aGUgQ3J5cHRvZ3JhcGhpYyBNb2R1bGUKLSsgICAgICAgICAqIFZlcmlmaWNhdGlvbiBQcm9n cmFtLCBTZWN0aW9uIEQuQiBhbmQgTklTVCBTcGVjaWFsIFB1YmxpY2F0aW9uCi0rICAgICAgICAg KiA4MDAtMTMxQXIyLCBTZWN0aW9uIDEuMi4yIHNheSB0aGF0IGFueSBhbGdvcml0aG0gYXQgYSBz ZWN1cml0eQotKyAgICAgICAgICogc3RyZW5ndGggPCAxMTIgYml0cyBpcyBsZWdhY3kgdXNlIG9u bHksIHNvIGFsbCBkZXJpdmVkIGtleXMgc2hvdWxkCi0rICAgICAgICAgKiBiZSBsb25nZXIgdGhh biB0aGF0LiBJZiBhIGRlcml2ZWQga2V5IGhhcyBldmVyIGJlZW4gc2hvcnRlciB0aGFuCi0rICAg ICAgICAgKiB0aGF0LCBjdHgtPm91dHB1dF9rZXllbGVuX2luZGljYXRvciB3aWxsIGJlIE5PVF9B UFBST1ZFRCwgYW5kIHdlCi0rICAgICAgICAgKiBzaG91bGQgYWxzbyBzZXQgdGhlIHJldHVybmVk IEZJUFMgaW5kaWNhdG9yIHRvIHVuYXBwcm92ZWQuICovCi0rICAgICAgICBpZiAoY3R4LT5maXBz X2luZGljYXRvciA9PSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElDQVRPUl9OT1RfQVBQUk9WRUQp Ci0rICAgICAgICAgICAgZmlwc19pbmRpY2F0b3IgPSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElD QVRPUl9OT1RfQVBQUk9WRUQ7Ci0rCi0rICAgICAgICAvKiBJbXBsZW1lbnRhdGlvbiBHdWlkYW5j ZSBmb3IgRklQUyAxNDAtMyBhbmQgdGhlIENyeXB0b2dyYXBoaWMgTW9kdWxlCi0rICAgICAgICAg KiBWYWxpZGF0aW9uIFByb2dyYW0sIFNlY3Rpb24gQy5DOiAiVGhlIFNIQUtFMTI4IGFuZCBTSEFL RTI1NgotKyAgICAgICAgICogZXh0ZW5kYWJsZS1vdXRwdXQgZnVuY3Rpb25zIG1heSBvbmx5IGJl IHVzZWQgYXMgdGhlIHN0YW5kYWxvbmUKLSsgICAgICAgICAqIGFsZ29yaXRobXMuIiAqLwotKyAg ICAgICAgaWYgKGN0eC0+bWFjY3R4ID09IE5VTEwKLSsgICAgICAgICAgICAgICAgfHwgKGN0eC0+ bWFjY3R4ICE9IE5VTEwgJiYKLSsgICAgICAgICAgICAgICAgICAgIEVWUF9NQUNfaXNfYShFVlBf TUFDX0NUWF9nZXQwX21hYyhjdHgtPm1hY2N0eCksIE9TU0xfTUFDX05BTUVfSE1BQykpKSB7Ci0r ICAgICAgICAgICAgaWYgKGN0eC0+ZGlnZXN0Lm1kICE9IE5VTEwKLSsgICAgICAgICAgICAgICAg JiYgKEVWUF9NRF9pc19hKGN0eC0+ZGlnZXN0Lm1kLCAiU0hBS0UtMTI4IikgfHwKLSsgICAgICAg ICAgICAgICAgICAgIEVWUF9NRF9pc19hKGN0eC0+ZGlnZXN0Lm1kLCAiU0hBS0UtMjU2IikpKSB7 Ci0rICAgICAgICAgICAgICAgIGZpcHNfaW5kaWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQU19J TkRJQ0FUT1JfTk9UX0FQUFJPVkVEOwotKyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICAv KiBUYWJsZSBILTMgaW4gQU5TIFg5LjYzLTIwMDEgc2F5cyB0aGF0IDE2MC1iaXQgaGFzaCBmdW5j dGlvbnMKLSsgICAgICAgICAgICAgKiBzaG91bGQgb25seSBiZSB1c2VkIGZvciA4MC1iaXQga2V5 IGFncmVlbWVudCwgYnV0IEZJUFMgMTQwLTMKLSsgICAgICAgICAgICAgKiByZXF1aXJlcyBhIHNl Y3VyaXR5IHN0cmVuZ3RoIG9mIDExMiBiaXRzLCBzbyBTSEEtMSBjYW5ub3QgYmUKLSsgICAgICAg ICAgICAgKiB1c2VkIHdpdGggWDkuNjMuIFNlZSB0aGUgZGlzY3Vzc2lvbiBpbgotKyAgICAgICAg ICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS91c25pc3Rnb3YvQUNWUC9pc3N1ZXMvMTQwMyNpc3N1 ZWNvbW1lbnQtMTQzNTMwMDM5NS4KLSsgICAgICAgICAgICAgKi8KLSsgICAgICAgICAgICBpZiAo Y3R4LT5pc194OTYza2RmCi0rICAgICAgICAgICAgICAgICAgICAmJiBjdHgtPmRpZ2VzdC5tZCAh PSBOVUxMCi0rICAgICAgICAgICAgICAgICAgICAmJiBFVlBfTURfaXNfYShjdHgtPmRpZ2VzdC5t ZCwgIlNIQS0xIikpIHsKLSsgICAgICAgICAgICAgICAgZmlwc19pbmRpY2F0b3IgPSBFVlBfS0RG X1JFREhBVF9GSVBTX0lORElDQVRPUl9OT1RfQVBQUk9WRUQ7Ci0rICAgICAgICAgICAgfQotKyAg ICAgICAgfQotKwotKyAgICAgICAgaWYgKCFPU1NMX1BBUkFNX3NldF9pbnQocCwgZmlwc19pbmRp Y2F0b3IpKQotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rI2VuZGlmCi0rCi0rICAg IGlmICghYW55X3ZhbGlkKQotKyAgICAgICAgcmV0dXJuIC0yOwotKwotKyAgICByZXR1cm4gMTsK LSB9Ci0gCi0gc3RhdGljIGNvbnN0IE9TU0xfUEFSQU0gKnNza2RmX2dldHRhYmxlX2N0eF9wYXJh bXMob3NzbF91bnVzZWQgdm9pZCAqY3R4LAotQEAgLTU0OCw2ICs2MzcsOSBAQCBzdGF0aWMgY29u c3QgT1NTTF9QQVJBTSAqc3NrZGZfZ2V0dGFibGVfY3R4X3BhcmFtcyhvc3NsX3VudXNlZCB2b2lk ICpjdHgsCi0gewotICAgICBzdGF0aWMgY29uc3QgT1NTTF9QQVJBTSBrbm93bl9nZXR0YWJsZV9j dHhfcGFyYW1zW10gPSB7Ci0gICAgICAgICBPU1NMX1BBUkFNX3NpemVfdChPU1NMX0tERl9QQVJB TV9TSVpFLCBOVUxMKSwKLSsjaWZkZWYgRklQU19NT0RVTEUKLSsgICAgICAgIE9TU0xfUEFSQU1f aW50KE9TU0xfS0RGX1BBUkFNX1JFREhBVF9GSVBTX0lORElDQVRPUiwgMCksCi0rI2VuZGlmIC8q IGRlZmluZWQoRklQU19NT0RVTEUpICovCi0gICAgICAgICBPU1NMX1BBUkFNX0VORAotICAgICB9 OwotICAgICByZXR1cm4ga25vd25fZ2V0dGFibGVfY3R4X3BhcmFtczsKLUBAIC01NjksNyArNjYx LDcgQEAgY29uc3QgT1NTTF9ESVNQQVRDSCBvc3NsX2tkZl9zc2tkZl9mdW5jdGlvbnNbXSA9IHsK LSB9OwotIAotIGNvbnN0IE9TU0xfRElTUEFUQ0ggb3NzbF9rZGZfeDk2M19rZGZfZnVuY3Rpb25z W10gPSB7Ci0tICAgIHsgT1NTTF9GVU5DX0tERl9ORVdDVFgsICh2b2lkKCopKHZvaWQpKXNza2Rm X25ldyB9LAotKyAgICB7IE9TU0xfRlVOQ19LREZfTkVXQ1RYLCAodm9pZCgqKSh2b2lkKSl4OTYz a2RmX25ldyB9LAotICAgICB7IE9TU0xfRlVOQ19LREZfRFVQQ1RYLCAodm9pZCgqKSh2b2lkKSlz c2tkZl9kdXAgfSwKLSAgICAgeyBPU1NMX0ZVTkNfS0RGX0ZSRUVDVFgsICh2b2lkKCopKHZvaWQp KXNza2RmX2ZyZWUgfSwKLSAgICAgeyBPU1NMX0ZVTkNfS0RGX1JFU0VULCAodm9pZCgqKSh2b2lk KSlzc2tkZl9yZXNldCB9LAotZGlmZiAtLWdpdCBhL3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMv a2Rmcy90bHMxX3ByZi5jIGIvcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9rZGZzL3RsczFfcHJm LmMKLWluZGV4IGZmMzA1NTc5YzMuLmU2ZjQxMDIwYTQgMTAwNjQ0Ci0tLS0gYS9wcm92aWRlcnMv aW1wbGVtZW50YXRpb25zL2tkZnMvdGxzMV9wcmYuYwotKysrIGIvcHJvdmlkZXJzL2ltcGxlbWVu dGF0aW9ucy9rZGZzL3RsczFfcHJmLmMKLUBAIC0xMDQsNiArMTA0LDEzIEBAIHR5cGVkZWYgc3Ry dWN0IHsKLSAgICAgLyogQnVmZmVyIG9mIGNvbmNhdGVuYXRlZCBzZWVkIGRhdGEgKi8KLSAgICAg dW5zaWduZWQgY2hhciBzZWVkW1RMUzFfUFJGX01BWEJVRl07Ci0gICAgIHNpemVfdCBzZWVkbGVu OwotKwotKyAgICAvKiBNQUMgZGlnZXN0IGFsZ29yaXRobTsgdXNlZCB0byBjb21wdXRlIEZJUFMg aW5kaWNhdG9yICovCi0rICAgIFBST1ZfRElHRVNUIGRpZ2VzdDsKLSsKLSsjaWZkZWYgRklQU19N T0RVTEUKLSsgICAgaW50IGZpcHNfaW5kaWNhdG9yOwotKyNlbmRpZiAvKiBkZWZpbmVkKEZJUFNf TU9EVUxFKSAqLwotIH0gVExTMV9QUkY7Ci0gCi0gc3RhdGljIHZvaWQgKmtkZl90bHMxX3ByZl9u ZXcodm9pZCAqcHJvdmN0eCkKLUBAIC0xMzcsNiArMTQ0LDcgQEAgc3RhdGljIHZvaWQga2RmX3Rs czFfcHJmX3Jlc2V0KHZvaWQgKnZjdHgpCi0gICAgIEVWUF9NQUNfQ1RYX2ZyZWUoY3R4LT5QX3No YTEpOwotICAgICBPUEVOU1NMX2NsZWFyX2ZyZWUoY3R4LT5zZWMsIGN0eC0+c2VjbGVuKTsKLSAg ICAgT1BFTlNTTF9jbGVhbnNlKGN0eC0+c2VlZCwgY3R4LT5zZWVkbGVuKTsKLSsgICAgb3NzbF9w cm92X2RpZ2VzdF9yZXNldCgmY3R4LT5kaWdlc3QpOwotICAgICBtZW1zZXQoY3R4LCAwLCBzaXpl b2YoKmN0eCkpOwotICAgICBjdHgtPnByb3ZjdHggPSBwcm92Y3R4OwotIH0KLUBAIC0xOTEsNiAr MTk5LDEwIEBAIHN0YXRpYyBpbnQga2RmX3RsczFfcHJmX2Rlcml2ZSh2b2lkICp2Y3R4LCB1bnNp Z25lZCBjaGFyICprZXksIHNpemVfdCBrZXlsZW4sCi0gICAgICAgICBFUlJfcmFpc2UoRVJSX0xJ Ql9QUk9WLCBQUk9WX1JfSU5WQUxJRF9LRVlfTEVOR1RIKTsKLSAgICAgICAgIHJldHVybiAwOwot ICAgICB9Ci0rI2lmZGVmIEZJUFNfTU9EVUxFCi0rICAgIGlmIChrZXlsZW4gPCBFVlBfS0RGX0ZJ UFNfTUlOX0tFWV9MRU4pCi0rICAgICAgICBjdHgtPmZpcHNfaW5kaWNhdG9yID0gRVZQX0tERl9S RURIQVRfRklQU19JTkRJQ0FUT1JfTk9UX0FQUFJPVkVEOwotKyNlbmRpZiAvKiBkZWZpbmVkKEZJ UFNfTU9EVUxFKSAqLwotIAotICAgICAvKgotICAgICAgKiBUaGUgc2VlZCBidWZmZXIgaXMgcHJl cGVuZGVkIHdpdGggYSBsYWJlbC4KLUBAIC0yNDAsNiArMjUyLDkgQEAgc3RhdGljIGludCBrZGZf dGxzMV9wcmZfc2V0X2N0eF9wYXJhbXModm9pZCAqdmN0eCwgY29uc3QgT1NTTF9QQVJBTSBwYXJh bXNbXSkKLSAgICAgICAgIH0KLSAgICAgfQotIAotKyAgICBpZiAoIW9zc2xfcHJvdl9kaWdlc3Rf bG9hZF9mcm9tX3BhcmFtcygmY3R4LT5kaWdlc3QsIHBhcmFtcywgbGliY3R4KSkKLSsgICAgICAg IHJldHVybiAwOwotKwotICAgICBpZiAoKHAgPSBPU1NMX1BBUkFNX2xvY2F0ZV9jb25zdChwYXJh bXMsIE9TU0xfS0RGX1BBUkFNX1NFQ1JFVCkpICE9IE5VTEwpIHsKLSAgICAgICAgIE9QRU5TU0xf Y2xlYXJfZnJlZShjdHgtPnNlYywgY3R4LT5zZWNsZW4pOwotICAgICAgICAgY3R4LT5zZWMgPSBO VUxMOwotQEAgLTI4MSwxMCArMjk2LDYwIEBAIHN0YXRpYyBjb25zdCBPU1NMX1BBUkFNICprZGZf dGxzMV9wcmZfc2V0dGFibGVfY3R4X3BhcmFtcygKLSBzdGF0aWMgaW50IGtkZl90bHMxX3ByZl9n ZXRfY3R4X3BhcmFtcyh2b2lkICp2Y3R4LCBPU1NMX1BBUkFNIHBhcmFtc1tdKQotIHsKLSAgICAg T1NTTF9QQVJBTSAqcDsKLSsjaWZkZWYgRklQU19NT0RVTEUKLSsgICAgVExTMV9QUkYgKmN0eCA9 IHZjdHg7Ci0rI2VuZGlmIC8qIGRlZmluZWQoRklQU19NT0RVTEUpICovCi0rICAgIGludCBhbnlf dmFsaWQgPSAwOyAvKiBzZXQgdG8gMSB3aGVuIGF0IGxlYXN0IG9uZSBwYXJhbWV0ZXIgd2FzIHZh bGlkICovCi0rCi0rICAgIGlmICgocCA9IE9TU0xfUEFSQU1fbG9jYXRlKHBhcmFtcywgT1NTTF9L REZfUEFSQU1fU0laRSkpICE9IE5VTEwpIHsKLSsgICAgICAgIGFueV92YWxpZCA9IDE7Ci0rCi0r ICAgICAgICBpZiAoIU9TU0xfUEFSQU1fc2V0X3NpemVfdChwLCBTSVpFX01BWCkpCi0rICAgICAg ICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsKLSsjaWZkZWYgRklQU19NT0RVTEUKLSsgICAgcCA9 IE9TU0xfUEFSQU1fbG9jYXRlKHBhcmFtcywgT1NTTF9LREZfUEFSQU1fUkVESEFUX0ZJUFNfSU5E SUNBVE9SKTsKLSsgICAgaWYgKHAgIT0gTlVMTCkgewotKyAgICAgICAgaW50IGZpcHNfaW5kaWNh dG9yID0gRVZQX0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1JfQVBQUk9WRUQ7Ci0rCi0rICAgICAg ICBhbnlfdmFsaWQgPSAxOwotKwotKyAgICAgICAgLyogQWNjb3JkaW5nIHRvIE5JU1QgU3BlY2lh bCBQdWJsaWNhdGlvbiA4MDAtMTMxQXIyLCBTZWN0aW9uIDg6Ci0rICAgICAgICAgKiBEZXJpdmlu ZyBBZGRpdGlvbmFsIEtleXMgZnJvbSBhIENyeXB0b2dyYXBoaWMgS2V5LCAiW3RdaGUgbGVuZ3Ro IG9mCi0rICAgICAgICAgKiB0aGUga2V5LWRlcml2YXRpb24ga2V5IFtpLmUuLCB0aGUgaW5wdXQg a2V5XSBzaGFsbCBiZSBhdCBsZWFzdCAxMTIKLSsgICAgICAgICAqIGJpdHMiLiAqLwotKyAgICAg ICAgaWYgKGN0eC0+c2VjbGVuIDwgRVZQX0tERl9GSVBTX01JTl9LRVlfTEVOKQotKyAgICAgICAg ICAgIGZpcHNfaW5kaWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1JfTk9UX0FQ UFJPVkVEOwotKwotKyAgICAgICAgLyogSW1wbGVtZW50YXRpb24gR3VpZGFuY2UgZm9yIEZJUFMg MTQwLTMgYW5kIHRoZSBDcnlwdG9ncmFwaGljIE1vZHVsZQotKyAgICAgICAgICogVmVyaWZpY2F0 aW9uIFByb2dyYW0sIFNlY3Rpb24gRC5CIGFuZCBOSVNUIFNwZWNpYWwgUHVibGljYXRpb24KLSsg ICAgICAgICAqIDgwMC0xMzFBcjIsIFNlY3Rpb24gMS4yLjIgc2F5IHRoYXQgYW55IGFsZ29yaXRo bSBhdCBhIHNlY3VyaXR5Ci0rICAgICAgICAgKiBzdHJlbmd0aCA8IDExMiBiaXRzIGlzIGxlZ2Fj eSB1c2Ugb25seSwgc28gYWxsIGRlcml2ZWQga2V5cyBzaG91bGQKLSsgICAgICAgICAqIGJlIGxv bmdlciB0aGFuIHRoYXQuIElmIGEgZGVyaXZlZCBrZXkgaGFzIGV2ZXIgYmVlbiBzaG9ydGVyIHRo YW4KLSsgICAgICAgICAqIHRoYXQsIGN0eC0+b3V0cHV0X2tleWVsZW5faW5kaWNhdG9yIHdpbGwg YmUgTk9UX0FQUFJPVkVELCBhbmQgd2UKLSsgICAgICAgICAqIHNob3VsZCBhbHNvIHNldCB0aGUg cmV0dXJuZWQgRklQUyBpbmRpY2F0b3IgdG8gdW5hcHByb3ZlZC4gKi8KLSsgICAgICAgIGlmIChj dHgtPmZpcHNfaW5kaWNhdG9yID09IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9B UFBST1ZFRCkKLSsgICAgICAgICAgICBmaXBzX2luZGljYXRvciA9IEVWUF9LREZfUkVESEFUX0ZJ UFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRDsKLSsKLSsgICAgICAgIC8qIFNQIDgwMC0xMzVyMSBz ZWN0aW9uIDQuMi4yIHNheXMgVExTIDEuMiBLREYgaXMgYXBwcm92ZWQgd2hlbiAiKDMpCi0rICAg ICAgICAgKiBQX0hBU0ggdXNlcyBlaXRoZXIgU0hBLTI1NiwgU0hBLTM4NCBvciBTSEEtNTEyLiIg Ki8KLSsgICAgICAgIGlmIChjdHgtPmRpZ2VzdC5tZCAhPSBOVUxMCi0rICAgICAgICAgICAgICAg ICYmICFFVlBfTURfaXNfYShjdHgtPmRpZ2VzdC5tZCwgIlNIQTItMjU2IikKLSsgICAgICAgICAg ICAgICAgJiYgIUVWUF9NRF9pc19hKGN0eC0+ZGlnZXN0Lm1kLCAiU0hBMi0zODQiKQotKyAgICAg ICAgICAgICAgICAmJiAhRVZQX01EX2lzX2EoY3R4LT5kaWdlc3QubWQsICJTSEEyLTUxMiIpKSB7 Ci0rICAgICAgICAgICAgZmlwc19pbmRpY2F0b3IgPSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElD QVRPUl9OT1RfQVBQUk9WRUQ7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBpZiAoIU9TU0xfUEFS QU1fc2V0X2ludChwLCBmaXBzX2luZGljYXRvcikpCi0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0r ICAgIH0KLSsjZW5kaWYKLSAKLS0gICAgaWYgKChwID0gT1NTTF9QQVJBTV9sb2NhdGUocGFyYW1z LCBPU1NMX0tERl9QQVJBTV9TSVpFKSkgIT0gTlVMTCkKLS0gICAgICAgIHJldHVybiBPU1NMX1BB UkFNX3NldF9zaXplX3QocCwgU0laRV9NQVgpOwotLSAgICByZXR1cm4gLTI7Ci0rICAgIGlmICgh YW55X3ZhbGlkKQotKyAgICAgICAgcmV0dXJuIC0yOwotKwotKyAgICByZXR1cm4gMTsKLSB9Ci0g Ci0gc3RhdGljIGNvbnN0IE9TU0xfUEFSQU0gKmtkZl90bHMxX3ByZl9nZXR0YWJsZV9jdHhfcGFy YW1zKAotQEAgLTI5Miw2ICszNTcsOSBAQCBzdGF0aWMgY29uc3QgT1NTTF9QQVJBTSAqa2RmX3Rs czFfcHJmX2dldHRhYmxlX2N0eF9wYXJhbXMoCi0gewotICAgICBzdGF0aWMgY29uc3QgT1NTTF9Q QVJBTSBrbm93bl9nZXR0YWJsZV9jdHhfcGFyYW1zW10gPSB7Ci0gICAgICAgICBPU1NMX1BBUkFN X3NpemVfdChPU1NMX0tERl9QQVJBTV9TSVpFLCBOVUxMKSwKLSsjaWZkZWYgRklQU19NT0RVTEUK LSsgICAgICAgIE9TU0xfUEFSQU1faW50KE9TU0xfS0RGX1BBUkFNX1JFREhBVF9GSVBTX0lORElD QVRPUiwgMCksCi0rI2VuZGlmIC8qIGRlZmluZWQoRklQU19NT0RVTEUpICovCi0gICAgICAgICBP U1NMX1BBUkFNX0VORAotICAgICB9OwotICAgICByZXR1cm4ga25vd25fZ2V0dGFibGVfY3R4X3Bh cmFtczsKLWRpZmYgLS1naXQgYS9wcm92aWRlcnMvaW1wbGVtZW50YXRpb25zL2tkZnMveDk0Mmtk Zi5jIGIvcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9rZGZzL3g5NDJrZGYuYwotaW5kZXggMTli NTQ0OTNlZi4uNzdhNjIxMDE4NCAxMDA2NDQKLS0tLSBhL3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlv bnMva2Rmcy94OTQya2RmLmMKLSsrKyBiL3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMva2Rmcy94 OTQya2RmLmMKLUBAIC0xMywxMSArMTMsMTMgQEAKLSAjaW5jbHVkZSA8b3BlbnNzbC9jb3JlX2Rp c3BhdGNoLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wv ZXZwLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wva2RmLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvcGFy YW1zLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvcHJvdmVyci5oPgotICNpbmNsdWRlICJpbnRlcm5h bC9wYWNrZXQuaCIKLSAjaW5jbHVkZSAiaW50ZXJuYWwvZGVyLmgiCi0gI2luY2x1ZGUgImludGVy bmFsL25lbGVtLmgiCi0rI2luY2x1ZGUgImNyeXB0by9ldnAuaCIKLSAjaW5jbHVkZSAicHJvdi9w cm92aWRlcl9jdHguaCIKLSAjaW5jbHVkZSAicHJvdi9wcm92aWRlcmNvbW1vbi5oIgotICNpbmNs dWRlICJwcm92L2ltcGxlbWVudGF0aW9ucy5oIgotQEAgLTQ5LDYgKzUxLDkgQEAgdHlwZWRlZiBz dHJ1Y3QgewotICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjZWtfb2lkOwotICAgICBzaXplX3Qg Y2VrX29pZF9sZW47Ci0gICAgIGludCB1c2Vfa2V5Yml0czsKLSsjaWZkZWYgRklQU19NT0RVTEUK LSsgICAgaW50IGZpcHNfaW5kaWNhdG9yOwotKyNlbmRpZiAvKiBkZWZpbmVkKEZJUFNfTU9EVUxF KSAqLwotIH0gS0RGX1g5NDI7Ci0gCi0gLyoKLUBAIC00OTUsNiArNTAwLDEwIEBAIHN0YXRpYyBp bnQgeDk0MmtkZl9kZXJpdmUodm9pZCAqdmN0eCwgdW5zaWduZWQgY2hhciAqa2V5LCBzaXplX3Qg a2V5bGVuLAotICAgICAgICAgRVJSX3JhaXNlKEVSUl9MSUJfUFJPViwgUFJPVl9SX0JBRF9FTkNP RElORyk7Ci0gICAgICAgICByZXR1cm4gMDsKLSAgICAgfQotKyNpZmRlZiBGSVBTX01PRFVMRQot KyAgICBpZiAoa2V5bGVuIDwgRVZQX0tERl9GSVBTX01JTl9LRVlfTEVOKQotKyAgICAgICAgY3R4 LT5maXBzX2luZGljYXRvciA9IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9BUFBS T1ZFRDsKLSsjZW5kaWYgLyogZGVmaW5lZChGSVBTX01PRFVMRSkgKi8KLSAgICAgcmV0ID0geDk0 MmtkZl9oYXNoX2tkbShtZCwgY3R4LT5zZWNyZXQsIGN0eC0+c2VjcmV0X2xlbiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkZXIsIGRlcl9sZW4sIGN0ciwga2V5LCBrZXlsZW4pOwotICAg ICBPUEVOU1NMX2ZyZWUoZGVyKTsKLUBAIC01OTgsMTAgKzYwNyw1OCBAQCBzdGF0aWMgaW50IHg5 NDJrZGZfZ2V0X2N0eF9wYXJhbXModm9pZCAqdmN0eCwgT1NTTF9QQVJBTSBwYXJhbXNbXSkKLSB7 Ci0gICAgIEtERl9YOTQyICpjdHggPSAoS0RGX1g5NDIgKil2Y3R4OwotICAgICBPU1NMX1BBUkFN ICpwOwotKyAgICBpbnQgYW55X3ZhbGlkID0gMDsgLyogc2V0IHRvIDEgd2hlbiBhdCBsZWFzdCBv bmUgcGFyYW1ldGVyIHdhcyB2YWxpZCAqLwotIAotLSAgICBpZiAoKHAgPSBPU1NMX1BBUkFNX2xv Y2F0ZShwYXJhbXMsIE9TU0xfS0RGX1BBUkFNX1NJWkUpKSAhPSBOVUxMKQotLSAgICAgICAgcmV0 dXJuIE9TU0xfUEFSQU1fc2V0X3NpemVfdChwLCB4OTQya2RmX3NpemUoY3R4KSk7Ci0tICAgIHJl dHVybiAtMjsKLSsgICAgaWYgKChwID0gT1NTTF9QQVJBTV9sb2NhdGUocGFyYW1zLCBPU1NMX0tE Rl9QQVJBTV9TSVpFKSkgIT0gTlVMTCkgewotKyAgICAgICAgYW55X3ZhbGlkID0gMTsKLSsKLSsg ICAgICAgIGlmICghT1NTTF9QQVJBTV9zZXRfc2l6ZV90KHAsIHg5NDJrZGZfc2l6ZShjdHgpKSkK LSsgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKyNpZmRlZiBGSVBTX01PRFVMRQot KyAgICBwID0gT1NTTF9QQVJBTV9sb2NhdGUocGFyYW1zLCBPU1NMX0tERl9QQVJBTV9SRURIQVRf RklQU19JTkRJQ0FUT1IpOwotKyAgICBpZiAocCAhPSBOVUxMKSB7Ci0rICAgICAgICBpbnQgZmlw c19pbmRpY2F0b3IgPSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElDQVRPUl9BUFBST1ZFRDsKLSsK LSsgICAgICAgIGFueV92YWxpZCA9IDE7Ci0rCi0rICAgICAgICAvKiBBY2NvcmRpbmcgdG8gTklT VCBTcGVjaWFsIFB1YmxpY2F0aW9uIDgwMC0xMzFBcjIsIFNlY3Rpb24gODoKLSsgICAgICAgICAq IERlcml2aW5nIEFkZGl0aW9uYWwgS2V5cyBmcm9tIGEgQ3J5cHRvZ3JhcGhpYyBLZXksICJbdF1o ZSBsZW5ndGggb2YKLSsgICAgICAgICAqIHRoZSBrZXktZGVyaXZhdGlvbiBrZXkgW2kuZS4sIHRo ZSBpbnB1dCBrZXldIHNoYWxsIGJlIGF0IGxlYXN0IDExMgotKyAgICAgICAgICogYml0cyIuICov Ci0rICAgICAgICBpZiAoY3R4LT5zZWNyZXRfbGVuIDwgRVZQX0tERl9GSVBTX01JTl9LRVlfTEVO KQotKyAgICAgICAgICAgIGZpcHNfaW5kaWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQU19JTkRJ Q0FUT1JfTk9UX0FQUFJPVkVEOwotKwotKyAgICAgICAgLyogSW1wbGVtZW50YXRpb24gR3VpZGFu Y2UgZm9yIEZJUFMgMTQwLTMgYW5kIHRoZSBDcnlwdG9ncmFwaGljIE1vZHVsZQotKyAgICAgICAg ICogVmVyaWZpY2F0aW9uIFByb2dyYW0sIFNlY3Rpb24gRC5CIGFuZCBOSVNUIFNwZWNpYWwgUHVi bGljYXRpb24KLSsgICAgICAgICAqIDgwMC0xMzFBcjIsIFNlY3Rpb24gMS4yLjIgc2F5IHRoYXQg YW55IGFsZ29yaXRobSBhdCBhIHNlY3VyaXR5Ci0rICAgICAgICAgKiBzdHJlbmd0aCA8IDExMiBi aXRzIGlzIGxlZ2FjeSB1c2Ugb25seSwgc28gYWxsIGRlcml2ZWQga2V5cyBzaG91bGQKLSsgICAg ICAgICAqIGJlIGxvbmdlciB0aGFuIHRoYXQuIElmIGEgZGVyaXZlZCBrZXkgaGFzIGV2ZXIgYmVl biBzaG9ydGVyIHRoYW4KLSsgICAgICAgICAqIHRoYXQsIGN0eC0+b3V0cHV0X2tleWVsZW5faW5k aWNhdG9yIHdpbGwgYmUgTk9UX0FQUFJPVkVELCBhbmQgd2UKLSsgICAgICAgICAqIHNob3VsZCBh bHNvIHNldCB0aGUgcmV0dXJuZWQgRklQUyBpbmRpY2F0b3IgdG8gdW5hcHByb3ZlZC4gKi8KLSsg ICAgICAgIGlmIChjdHgtPmZpcHNfaW5kaWNhdG9yID09IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5E SUNBVE9SX05PVF9BUFBST1ZFRCkKLSsgICAgICAgICAgICBmaXBzX2luZGljYXRvciA9IEVWUF9L REZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRDsKLSsKLSsgICAgICAgIC8qIElt cGxlbWVudGF0aW9uIEd1aWRhbmNlIGZvciBGSVBTIDE0MC0zIGFuZCB0aGUgQ3J5cHRvZ3JhcGhp YyBNb2R1bGUKLSsgICAgICAgICAqIFZhbGlkYXRpb24gUHJvZ3JhbSwgU2VjdGlvbiBDLkM6ICJU aGUgU0hBS0UxMjggYW5kIFNIQUtFMjU2Ci0rICAgICAgICAgKiBleHRlbmRhYmxlLW91dHB1dCBm dW5jdGlvbnMgbWF5IG9ubHkgYmUgdXNlZCBhcyB0aGUgc3RhbmRhbG9uZQotKyAgICAgICAgICog YWxnb3JpdGhtcy4iICovCi0rICAgICAgICBpZiAoY3R4LT5kaWdlc3QubWQgIT0gTlVMTAotKyAg ICAgICAgICAgICAgICAmJiAoRVZQX01EX2lzX2EoY3R4LT5kaWdlc3QubWQsICJTSEFLRS0xMjgi KSB8fAotKyAgICAgICAgICAgICAgICAgICAgRVZQX01EX2lzX2EoY3R4LT5kaWdlc3QubWQsICJT SEFLRS0yNTYiKSkpIHsKLSsgICAgICAgICAgICBmaXBzX2luZGljYXRvciA9IEVWUF9LREZfUkVE SEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRDsKLSsgICAgICAgIH0KLSsKLSsgICAgICAg IGlmICghT1NTTF9QQVJBTV9zZXRfaW50KHAsIGZpcHNfaW5kaWNhdG9yKSkKLSsgICAgICAgICAg ICByZXR1cm4gMDsKLSsgICAgfQotKyNlbmRpZgotKwotKyAgICBpZiAoIWFueV92YWxpZCkKLSsg ICAgICAgIHJldHVybiAtMjsKLSsKLSsgICAgcmV0dXJuIDE7Ci0gfQotIAotIHN0YXRpYyBjb25z dCBPU1NMX1BBUkFNICp4OTQya2RmX2dldHRhYmxlX2N0eF9wYXJhbXMob3NzbF91bnVzZWQgdm9p ZCAqY3R4LAotQEAgLTYwOSw2ICs2NjYsOSBAQCBzdGF0aWMgY29uc3QgT1NTTF9QQVJBTSAqeDk0 MmtkZl9nZXR0YWJsZV9jdHhfcGFyYW1zKG9zc2xfdW51c2VkIHZvaWQgKmN0eCwKLSB7Ci0gICAg IHN0YXRpYyBjb25zdCBPU1NMX1BBUkFNIGtub3duX2dldHRhYmxlX2N0eF9wYXJhbXNbXSA9IHsK LSAgICAgICAgIE9TU0xfUEFSQU1fc2l6ZV90KE9TU0xfS0RGX1BBUkFNX1NJWkUsIE5VTEwpLAot KyNpZmRlZiBGSVBTX01PRFVMRQotKyAgICAgICAgT1NTTF9QQVJBTV9pbnQoT1NTTF9LREZfUEFS QU1fUkVESEFUX0ZJUFNfSU5ESUNBVE9SLCAwKSwKLSsjZW5kaWYgLyogZGVmaW5lZChGSVBTX01P RFVMRSkgKi8KLSAgICAgICAgIE9TU0xfUEFSQU1fRU5ECi0gICAgIH07Ci0gICAgIHJldHVybiBr bm93bl9nZXR0YWJsZV9jdHhfcGFyYW1zOwotZGlmZiAtLWdpdCBhL3V0aWwvcGVybC9PcGVuU1NM L3BhcmFtbmFtZXMucG0gYi91dGlsL3BlcmwvT3BlblNTTC9wYXJhbW5hbWVzLnBtCi1pbmRleCA3 MGY3YzUwZmU0Li42NjE4MTIyNDE3IDEwMDY0NAotLS0tIGEvdXRpbC9wZXJsL09wZW5TU0wvcGFy YW1uYW1lcy5wbQotKysrIGIvdXRpbC9wZXJsL09wZW5TU0wvcGFyYW1uYW1lcy5wbQotQEAgLTE4 Myw2ICsxODMsNyBAQCBteSAlcGFyYW1zID0gKAotICAgICAnS0RGX1BBUkFNX1g5NDJfU1VQUF9Q VUJJTkZPJyA9PiAgICAic3VwcC1wdWJpbmZvIiwKLSAgICAgJ0tERl9QQVJBTV9YOTQyX1NVUFBf UFJJVklORk8nID0+ICAgInN1cHAtcHJpdmluZm8iLAotICAgICAnS0RGX1BBUkFNX1g5NDJfVVNF X0tFWUJJVFMnID0+ICAgICAidXNlLWtleWJpdHMiLAotKyAgICAnS0RGX1BBUkFNX1JFREhBVF9G SVBTX0lORElDQVRPUicgPT4gICAgICJyZWRoYXQtZmlwcy1pbmRpY2F0b3IiLAotICAgICAnS0RG X1BBUkFNX0hNQUNEUkJHX0VOVFJPUFknID0+ICAgICAiZW50cm9weSIsCi0gICAgICdLREZfUEFS QU1fSE1BQ0RSQkdfTk9OQ0UnID0+ICAgICAgICJub25jZSIsCi0gICAgICdLREZfUEFSQU1fVEhS RUFEUycgPT4gICAgICAgICJ0aHJlYWRzIiwgICAgICAgICAgICAgICAgIyB1aW50MzJfdAotLS0g Ci0yLjQ0LjAKLQoKZGlmZiAtLWdpdCBhLzAwNzgtS0RGLUFkZC1GSVBTLWluZGljYXRvcnMucGF0 Y2ggYi8wMDc4LUtERi1BZGQtRklQUy1pbmRpY2F0b3JzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjE3ZmY2M2UKLS0tIC9kZXYvbnVsbAorKysgYi8wMDc4LUtERi1B ZGQtRklQUy1pbmRpY2F0b3JzLnBhdGNoCkBAIC0wLDAgKzEsOTExIEBACitGcm9tIDIyOTAyODA2 MTcxODM4NjNlYjE1NDI1Yjg5MjU3NjU5NjY3MjM3MjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBDbGVtZW5zIExhbmcgPGNsbGFuZ0ByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAxMSBB dWcgMjAyMiAwOToyNzoxMiArMDIwMAorU3ViamVjdDogS0RGOiBBZGQgRklQUyBpbmRpY2F0b3Jz CisKK0ZJUFMgcmVxdWlyZXMgYSBudW1iZXIgb2YgcmVzdHJpY3Rpb25zIG9uIHRoZSBwYXJhbWV0 ZXJzIG9mIHRoZSB2YXJpb3VzCitrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbnMgaW1wbGVtZW50ZWQg aW4gT3BlblNTTC4gVGhlIEtERnMgdGhhdCB1c2UKK2RpZ2VzdCBhbGdvcml0aG1zIHVzdWFsbHkg c2hvdWxkIG5vdCBhbGxvdyBTSEFLRSAoZHVlIHRvIEZJUFMgMTQwLTMgSUcKK0MuQykuIEFkZGl0 aW9uYWxseSwgc29tZSBhcHBsaWNhdGlvbi1zcGVjaWZpYyBLREZzIGhhdmUgZnVydGhlcgorcmVz dHJpY3Rpb25zIGRlZmluZWQgaW4gU1AgODAwLTEzNXIxLgorCitHZW5lcmFsbHksIGFsbCBLREZz IHNoYWxsIHVzZSBhIGtleS1kZXJpdmF0aW9uIGtleSBsZW5ndGggb2YgYXQgbGVhc3QKKzExMiBi aXRzIGR1ZSB0byBTUCA4MDAtMTMxQXIyIHNlY3Rpb24gOC4gQWRkaXRpb25hbGx5IGFueSB1c2Ug b2YgYSBLREYKK3RvIGdlbmVyYXRlIGFuZCBvdXRwdXQgbGVuZ3RoIG9mIGxlc3MgdGhhbiAxMTIg Yml0cyB3aWxsIGFsc28gc2V0IHRoZQoraW5kaWNhdG9yIHRvIHVuYXBwcm92ZWQuCisKK0FkZCBl eHBsaWNpdCBpbmRpY2F0b3JzIHRvIGFsbCBLREZzIHVzYWJsZSBpbiBGSVBTIG1vZGUgZXhjZXB0 IGZvcgorUEJLREYyICh3aGljaCBoYXMgaXRzIHNwZWNpZmljIEZJUFMgbGltaXRzIGFscmVhZHkg aW1wbGVtZW50ZWQpLiBUaGUKK2luZGljYXRvciBjYW4gYmUgcXVlcmllZCB1c2luZyBFVlBfS0RG X0NUWF9nZXRfcGFyYW1zKCkgYWZ0ZXIgc2V0dGluZwordGhlIHJlcXVpcmVkIHBhcmFtZXRlcnMg YW5kIGtleXMgZm9yIHRoZSBLREYuCisKK091ciBGSVBTIHByb3ZpZGVyIGltcGxlbWVudHMgU0hB MSwgU0hBMiAoYm90aCAtMjU2IGFuZCAtNTEyLCBhbmQgdGhlCit0cnVuY2F0ZWQgdmFyaWFudHMg LTIyNCBhbmQgLTM4NCkgYW5kIFNIQTMgKC0yNTYgYW5kIC01MTIsIGFuZCB0aGUKK3RydW5jYXRl ZCB2ZXJzaW9ucyAtMjI0IGFuZCAtMzg0KSwgYXMgd2VsbCBhcyBTSEFLRS0xMjggYW5kIC0yNTYu CisKK1RoZSBTSEFLRSBmdW5jdGlvbnMgYXJlIGdlbmVyYWxseSBub3QgYWxsb3dlZCBpbiBLREZz LiBGb3IgdGhlIHJlc3QsIHRoZQorc3VwcG9ydCBtYXRyaXggaXM6CisKKyBLREYgICAgICAgICB8 IFNIQS0xIHwgU0hBLTIgfCBTSEEtMiB0cnVuY2F0ZWQgIHwgU0hBLTMgfCBTSEEtMyB0cnVuY2F0 ZWQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CitLQktERiAgICAgICAgfCAgIHggICB8ICAgeCAgIHwgICAg ICAgICB4ICAgICAgICB8ICAgeCAgIHwgICAgIHgKK0hLREYgICAgICAgICB8ICAgeCAgIHwgICB4 ICAgfCAgICAgICAgIHggICAgICAgIHwgICB4ICAgfCAgICAgeAorVExTMVBSRiAgICAgIHwgICAg ICAgfCBTSEEtezI1NiwzODQsNTEyfSBvbmx5ICAgfCAgICAgICB8CitTU0hLREYgICAgICAgfCAg IHggICB8ICAgeCAgIHwgICAgICAgICB4ICAgICAgICB8ICAgICAgIHwKK1NTS0RGICAgICAgICB8 ICAgeCAgIHwgICB4ICAgfCAgICAgICAgIHggICAgICAgIHwgICB4ICAgfCAgICAgeAorWDkuNjNL REYgICAgIHwgICAgICAgfCAgIHggICB8ICAgICAgICAgeCAgICAgICAgfCAgIHggICB8ICAgICB4 CitYOS40Mi1BU04xICAgfCAgIHggICB8ICAgeCAgIHwgICAgICAgICB4ICAgICAgICB8ICAgeCAg IHwgICAgIHgKK1RMUzEuM1BSRiAgICB8ICAgICAgIHwgU0hBLXsyNTYsMzg0fSBvbmx5ICAgICAg IHwgICAgICAgfAorCitTaWduZWQtb2ZmLWJ5OiBDbGVtZW5zIExhbmcgPGNsbGFuZ0ByZWRoYXQu Y29tPgorUmVzb2x2ZXM6IHJoYnojMjE2MDczMyByaGJ6IzIxNjQ3NjMKK1JlbGF0ZWQ6IHJoYnoj MjExNDc3MiByaGJ6IzIxNDE2OTUKKy0tLQorIGluY2x1ZGUvY3J5cHRvL2V2cC5oICAgICAgICAg ICAgICAgICAgICAgIHwgICA3ICsrCisgaW5jbHVkZS9vcGVuc3NsL2tkZi5oICAgICAgICAgICAg ICAgICAgICAgfCAgIDQgKworIHByb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMva2Rmcy9oa2RmLmMg ICAgIHwgMTAwICsrKysrKysrKysrKysrKysrKysrKy0KKyBwcm92aWRlcnMvaW1wbGVtZW50YXRp b25zL2tkZnMva2JrZGYuYyAgICB8ICA4MiArKysrKysrKysrKysrKysrLS0KKyBwcm92aWRlcnMv aW1wbGVtZW50YXRpb25zL2tkZnMvc3Noa2RmLmMgICB8ICA3NSArKysrKysrKysrKysrKystCisg cHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9rZGZzL3Nza2RmLmMgICAgfCAxMDAgKysrKysrKysr KysrKysrKysrKysrLQorIHByb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMva2Rmcy90bHMxX3ByZi5j IHwgIDc0ICsrKysrKysrKysrKysrKy0KKyBwcm92aWRlcnMvaW1wbGVtZW50YXRpb25zL2tkZnMv eDk0MmtkZi5jICB8ICA2NiArKysrKysrKysrKysrLQorIHV0aWwvcGVybC9PcGVuU1NML3BhcmFt bmFtZXMucG0gICAgICAgICAgIHwgICAxICsKKyA5IGZpbGVzIGNoYW5nZWQsIDQ4NyBpbnNlcnRp b25zKCspLCAyMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvY3J5cHRvL2V2 cC5oIGIvaW5jbHVkZS9jcnlwdG8vZXZwLmgKK2luZGV4IGU3MGQ4ZTllODQuLjc2ZmI5OTBkZTQg MTAwNjQ0CistLS0gYS9pbmNsdWRlL2NyeXB0by9ldnAuaAorKysrIGIvaW5jbHVkZS9jcnlwdG8v ZXZwLmgKK0BAIC0yMTksNiArMjE5LDEzIEBAIHN0cnVjdCBldnBfbWFjX3N0IHsKKyAgICAgT1NT TF9GVU5DX21hY19zZXRfY3R4X3BhcmFtc19mbiAqc2V0X2N0eF9wYXJhbXM7CisgfTsKKyAKKysj aWZkZWYgRklQU19NT0RVTEUKKysvKiBBY2NvcmRpbmcgdG8gTklTVCBTcGVjaWFsIFB1YmxpY2F0 aW9uIDgwMC0xMzFBcjIsIFNlY3Rpb24gODogRGVyaXZpbmcKKysgKiBBZGRpdGlvbmFsIEtleXMg ZnJvbSBhIENyeXB0b2dyYXBoaWMgS2V5LCAiW3RdaGUgbGVuZ3RoIG9mIHRoZQorKyAqIGtleS1k ZXJpdmF0aW9uIGtleSBbaS5lLiwgdGhlIGlucHV0IGtleV0gc2hhbGwgYmUgYXQgbGVhc3QgMTEy IGJpdHMiLiAqLworKyMgZGVmaW5lIEVWUF9LREZfRklQU19NSU5fS0VZX0xFTiAoMTEyIC8gOCkK KysjZW5kaWYKKysKKyBzdHJ1Y3QgZXZwX2tkZl9zdCB7CisgICAgIE9TU0xfUFJPVklERVIgKnBy b3Y7CisgICAgIGludCBuYW1lX2lkOworZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3BlbnNzbC9rZGYu aCBiL2luY2x1ZGUvb3BlbnNzbC9rZGYuaAoraW5kZXggMDk4MzIzMGE0OC4uODYxNzE2MzVlYSAx MDA2NDQKKy0tLSBhL2luY2x1ZGUvb3BlbnNzbC9rZGYuaAorKysrIGIvaW5jbHVkZS9vcGVuc3Ns L2tkZi5oCitAQCAtNjMsNiArNjMsMTAgQEAgaW50IEVWUF9LREZfbmFtZXNfZG9fYWxsKGNvbnN0 IEVWUF9LREYgKmtkZiwKKyAjIGRlZmluZSBFVlBfS0RGX0hLREZfTU9ERV9FWFRSQUNUX09OTFkg ICAgICAgIDEKKyAjIGRlZmluZSBFVlBfS0RGX0hLREZfTU9ERV9FWFBBTkRfT05MWSAgICAgICAg IDIKKyAKKysjIGRlZmluZSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElDQVRPUl9VTkRFVEVSTUlO RUQgMAorKyMgZGVmaW5lIEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX0FQUFJPVkVEICAg ICAxCisrIyBkZWZpbmUgRVZQX0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1JfTk9UX0FQUFJPVkVE IDIKKysKKyAjZGVmaW5lIEVWUF9LREZfU1NIS0RGX1RZUEVfSU5JVElBTF9JVl9DTElfVE9fU1JW ICAgICA2NQorICNkZWZpbmUgRVZQX0tERl9TU0hLREZfVFlQRV9JTklUSUFMX0lWX1NSVl9UT19D TEkgICAgIDY2CisgI2RlZmluZSBFVlBfS0RGX1NTSEtERl9UWVBFX0VOQ1JZUFRJT05fS0VZX0NM SV9UT19TUlYgNjcKK2RpZmYgLS1naXQgYS9wcm92aWRlcnMvaW1wbGVtZW50YXRpb25zL2tkZnMv aGtkZi5jIGIvcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9rZGZzL2hrZGYuYworaW5kZXggZGZh Nzc4NmJkZS4uZjAxZTQwZmY1YSAxMDA2NDQKKy0tLSBhL3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlv bnMva2Rmcy9oa2RmLmMKKysrKyBiL3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMva2Rmcy9oa2Rm LmMKK0BAIC00Miw2ICs0Miw3IEBAIHN0YXRpYyBPU1NMX0ZVTkNfa2RmX3NldHRhYmxlX2N0eF9w YXJhbXNfZm4ga2RmX2hrZGZfc2V0dGFibGVfY3R4X3BhcmFtczsKKyBzdGF0aWMgT1NTTF9GVU5D X2tkZl9zZXRfY3R4X3BhcmFtc19mbiBrZGZfaGtkZl9zZXRfY3R4X3BhcmFtczsKKyBzdGF0aWMg T1NTTF9GVU5DX2tkZl9nZXR0YWJsZV9jdHhfcGFyYW1zX2ZuIGtkZl9oa2RmX2dldHRhYmxlX2N0 eF9wYXJhbXM7Cisgc3RhdGljIE9TU0xfRlVOQ19rZGZfZ2V0X2N0eF9wYXJhbXNfZm4ga2RmX2hr ZGZfZ2V0X2N0eF9wYXJhbXM7Cisrc3RhdGljIE9TU0xfRlVOQ19rZGZfbmV3Y3R4X2ZuIGtkZl90 bHMxXzNfbmV3OworIHN0YXRpYyBPU1NMX0ZVTkNfa2RmX2Rlcml2ZV9mbiBrZGZfdGxzMV8zX2Rl cml2ZTsKKyBzdGF0aWMgT1NTTF9GVU5DX2tkZl9zZXR0YWJsZV9jdHhfcGFyYW1zX2ZuIGtkZl90 bHMxXzNfc2V0dGFibGVfY3R4X3BhcmFtczsKKyBzdGF0aWMgT1NTTF9GVU5DX2tkZl9zZXRfY3R4 X3BhcmFtc19mbiBrZGZfdGxzMV8zX3NldF9jdHhfcGFyYW1zOworQEAgLTg1LDYgKzg2LDEwIEBA IHR5cGVkZWYgc3RydWN0IHsKKyAgICAgc2l6ZV90IGRhdGFfbGVuOworICAgICB1bnNpZ25lZCBj aGFyICppbmZvOworICAgICBzaXplX3QgaW5mb19sZW47CisrICAgIGludCBpc190bHMxMzsKKysj aWZkZWYgRklQU19NT0RVTEUKKysgICAgaW50IGZpcHNfaW5kaWNhdG9yOworKyNlbmRpZiAvKiBk ZWZpbmVkKEZJUFNfTU9EVUxFKSAqLworIH0gS0RGX0hLREY7CisgCisgc3RhdGljIHZvaWQgKmtk Zl9oa2RmX25ldyh2b2lkICpwcm92Y3R4KQorQEAgLTE3MCw2ICsxNzUsMTEgQEAgc3RhdGljIGlu dCBrZGZfaGtkZl9kZXJpdmUodm9pZCAqdmN0eCwgdW5zaWduZWQgY2hhciAqa2V5LCBzaXplX3Qg a2V5bGVuLAorICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKyAKKysjaWZkZWYgRklQU19NT0RV TEUKKysgICAgaWYgKGtleWxlbiA8IEVWUF9LREZfRklQU19NSU5fS0VZX0xFTikKKysgICAgICAg IGN0eC0+Zmlwc19pbmRpY2F0b3IgPSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElDQVRPUl9OT1Rf QVBQUk9WRUQ7CisrI2VuZGlmIC8qIGRlZmluZWQoRklQU19NT0RVTEUpICovCisrCisgICAgIHN3 aXRjaCAoY3R4LT5tb2RlKSB7CisgICAgIGNhc2UgRVZQX0tERl9IS0RGX01PREVfRVhUUkFDVF9B TkRfRVhQQU5EOgorICAgICBkZWZhdWx0OgorQEAgLTMxOCwyMiArMzE4LDg1IEBAIHN0YXRpYyBp bnQga2RmX2hrZGZfZ2V0X2N0eF9wYXJhbXModm9pZAorIHsKKyAgICAgS0RGX0hLREYgKmN0eCA9 IChLREZfSEtERiAqKXZjdHg7CisgICAgIE9TU0xfUEFSQU0gKnA7CisrICAgIGludCBhbnlfdmFs aWQgPSAwOyAvKiBzZXQgdG8gMSB3aGVuIGF0IGxlYXN0IG9uZSBwYXJhbWV0ZXIgd2FzIHZhbGlk ICovCisgCisgICAgIGlmICgocCA9IE9TU0xfUEFSQU1fbG9jYXRlKHBhcmFtcywgT1NTTF9LREZf UEFSQU1fU0laRSkpICE9IE5VTEwpIHsKKyAgICAgICAgIHNpemVfdCBzeiA9IGtkZl9oa2RmX3Np emUoY3R4KTsKKyAKKysgICAgICAgIGFueV92YWxpZCA9IDE7CisgICAgICAgICBpZiAoc3ogPT0g MCkKKyAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgIHJldHVybiBPU1NMX1BBUkFNX3Nl dF9zaXplX3QocCwgc3opOworICAgICB9CisgICAgIGlmICgocCA9IE9TU0xfUEFSQU1fbG9jYXRl KHBhcmFtcywgT1NTTF9LREZfUEFSQU1fSU5GTykpICE9IE5VTEwpIHsKKysgICAgICAgIGFueV92 YWxpZCA9IDE7CisgICAgICAgICBpZiAoY3R4LT5pbmZvID09IE5VTEwgfHwgY3R4LT5pbmZvX2xl biA9PSAwKSB7CisgICAgICAgICAgICAgcC0+cmV0dXJuX3NpemUgPSAwOworICAgICAgICAgICAg IHJldHVybiAxOworICAgICAgICAgfQorICAgICAgICAgcmV0dXJuIE9TU0xfUEFSQU1fc2V0X29j dGV0X3N0cmluZyhwLCBjdHgtPmluZm8sIGN0eC0+aW5mb19sZW4pOworICAgICB9CistICAgIHJl dHVybiAtMjsKKysjaWZkZWYgRklQU19NT0RVTEUKKysgICAgaWYgKChwID0gT1NTTF9QQVJBTV9s b2NhdGUocGFyYW1zLCBPU1NMX0tERl9QQVJBTV9SRURIQVRfRklQU19JTkRJQ0FUT1IpKQorKyAg ICAgICAgICAgICE9IE5VTEwpIHsKKysgICAgICAgIGludCBmaXBzX2luZGljYXRvciA9IEVWUF9L REZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX0FQUFJPVkVEOworKyAgICAgICAgY29uc3QgRVZQX01E ICptZCA9IG9zc2xfcHJvdl9kaWdlc3RfbWQoJmN0eC0+ZGlnZXN0KTsKKysKKysgICAgICAgIGFu eV92YWxpZCA9IDE7CisrCisrICAgICAgICAvKiBBY2NvcmRpbmcgdG8gTklTVCBTcGVjaWFsIFB1 YmxpY2F0aW9uIDgwMC0xMzFBcjIsIFNlY3Rpb24gODoKKysgICAgICAgICAqIERlcml2aW5nIEFk ZGl0aW9uYWwgS2V5cyBmcm9tIGEgQ3J5cHRvZ3JhcGhpYyBLZXksICJbdF1oZSBsZW5ndGggb2YK KysgICAgICAgICAqIHRoZSBrZXktZGVyaXZhdGlvbiBrZXkgW2kuZS4sIHRoZSBpbnB1dCBrZXld IHNoYWxsIGJlIGF0IGxlYXN0IDExMgorKyAgICAgICAgICogYml0cyIuICovCisrICAgICAgICBp ZiAoY3R4LT5rZXlfbGVuIDwgRVZQX0tERl9GSVBTX01JTl9LRVlfTEVOKQorKyAgICAgICAgICAg IGZpcHNfaW5kaWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1JfTk9UX0FQUFJP VkVEOworKworKyAgICAgICAgLyogSW1wbGVtZW50YXRpb24gR3VpZGFuY2UgZm9yIEZJUFMgMTQw LTMgYW5kIHRoZSBDcnlwdG9ncmFwaGljIE1vZHVsZQorKyAgICAgICAgICogVmVyaWZpY2F0aW9u IFByb2dyYW0sIFNlY3Rpb24gRC5CIGFuZCBOSVNUIFNwZWNpYWwgUHVibGljYXRpb24KKysgICAg ICAgICAqIDgwMC0xMzFBcjIsIFNlY3Rpb24gMS4yLjIgc2F5IHRoYXQgYW55IGFsZ29yaXRobSBh dCBhIHNlY3VyaXR5CisrICAgICAgICAgKiBzdHJlbmd0aCA8IDExMiBiaXRzIGlzIGxlZ2FjeSB1 c2Ugb25seSwgc28gYWxsIGRlcml2ZWQga2V5cyBzaG91bGQKKysgICAgICAgICAqIGJlIGxvbmdl ciB0aGFuIHRoYXQuIElmIGEgZGVyaXZlZCBrZXkgaGFzIGV2ZXIgYmVlbiBzaG9ydGVyIHRoYW4K KysgICAgICAgICAqIHRoYXQsIGN0eC0+b3V0cHV0X2tleWVsZW5faW5kaWNhdG9yIHdpbGwgYmUg Tk9UX0FQUFJPVkVELCBhbmQgd2UKKysgICAgICAgICAqIHNob3VsZCBhbHNvIHNldCB0aGUgcmV0 dXJuZWQgRklQUyBpbmRpY2F0b3IgdG8gdW5hcHByb3ZlZC4gKi8KKysgICAgICAgIGlmIChjdHgt PmZpcHNfaW5kaWNhdG9yID09IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9BUFBS T1ZFRCkKKysgICAgICAgICAgICBmaXBzX2luZGljYXRvciA9IEVWUF9LREZfUkVESEFUX0ZJUFNf SU5ESUNBVE9SX05PVF9BUFBST1ZFRDsKKysKKysgICAgICAgIGlmIChjdHgtPmlzX3RsczEzKSB7 CisrICAgICAgICAgICAgaWYgKG1kICE9IE5VTEwKKysgICAgICAgICAgICAgICAgICAgICYmICFF VlBfTURfaXNfYShtZCwgIlNIQTItMjU2IikKKysgICAgICAgICAgICAgICAgICAgICYmICFFVlBf TURfaXNfYShtZCwgIlNIQTItMzg0IikpIHsKKysgICAgICAgICAgICAgICAgLyogSW1wbGVtZW50 YXRpb24gR3VpZGFuY2UgZm9yIEZJUFMgMTQwLTMgYW5kIHRoZSBDcnlwdG9ncmFwaGljCisrICAg ICAgICAgICAgICAgICAqIE1vZHVsZSBWYWxpZGF0aW9uIFByb2dyYW0sIFNlY3Rpb24gMi40LkIs ICg1KTogIlRoZSBUTFMgMS4zCisrICAgICAgICAgICAgICAgICAqIGtleSBkZXJpdmF0aW9uIGZ1 bmN0aW9uIGRvY3VtZW50ZWQgaW4gU2VjdGlvbiA3LjEgb2YgUkZDCisrICAgICAgICAgICAgICAg ICAqIDg0NDYuIFRoaXMgaXMgY29uc2lkZXJlZCBhbiBhcHByb3ZlZCBDVkwgYmVjYXVzZSB0aGUK KysgICAgICAgICAgICAgICAgICogdW5kZXJseWluZyBmdW5jdGlvbnMgcGVyZm9ybWVkIHdpdGhp biB0aGUgVExTIDEuMyBLREYgbWFwIHRvCisrICAgICAgICAgICAgICAgICAqIE5JU1QgYXBwcm92 ZWQgc3RhbmRhcmRzLCBuYW1lbHk6IFNQIDgwMC0xMzNyZXYyIChTZWN0aW9uIDYuMworKyAgICAg ICAgICAgICAgICAgKiBPcHRpb24gIzMpLCBTUCA4MDAtNTZDcmV2MiwgYW5kIFNQIDgwMC0xMDgu IgorKyAgICAgICAgICAgICAgICAgKgorKyAgICAgICAgICAgICAgICAgKiBSRkMgODQ0NiBhcHBl bmRpeCBCLjQgb25seSBsaXN0cyBTSEEtMjU2IGFuZCBTSEEtMzg0LiAqLworKyAgICAgICAgICAg ICAgICBmaXBzX2luZGljYXRvciA9IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9B UFBST1ZFRDsKKysgICAgICAgICAgICB9CisrICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAg IGlmIChtZCAhPSBOVUxMCisrICAgICAgICAgICAgICAgICAgICAmJiAoRVZQX01EX2lzX2EobWQs ICJTSEFLRS0xMjgiKSB8fAorKyAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9NRF9pc19hKG1k LCAiU0hBS0UtMjU2IikpKSB7CisrICAgICAgICAgICAgICAgIC8qIEhLREYgaXMgYSBTUCA4MDAt NTZDcjIgVHdvU3RlcCBLREYsIGZvciB3aGljaCBhbGwgU0hBLTEsCisrICAgICAgICAgICAgICAg ICAqIFNIQS0yIGFuZCBTSEEtMyBhcmUgYXBwcm92ZWQuIFNIQUtFIGlzIG5vdCBhcHByb3ZlZCwg YmVjYXVzZQorKyAgICAgICAgICAgICAgICAgKiBvZiBGSVBTIDE0MC0zIElHLCBzZWN0aW9uIEMu QzogIlRoZSBTSEFLRTEyOCBhbmQgU0hBS0UyNTYKKysgICAgICAgICAgICAgICAgICogZXh0ZW5k YWJsZS1vdXRwdXQgZnVuY3Rpb25zIG1heSBvbmx5IGJlIHVzZWQgYXMgdGhlCisrICAgICAgICAg ICAgICAgICAqIHN0YW5kYWxvbmUgYWxnb3JpdGhtcy4iICovCisrICAgICAgICAgICAgICAgIGZp cHNfaW5kaWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1JfTk9UX0FQUFJPVkVE OworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgICAgIGlmICghT1NTTF9QQVJBTV9z ZXRfaW50KHAsIGZpcHNfaW5kaWNhdG9yKSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAg fQorKyNlbmRpZiAvKiBkZWZpbmVkKEZJUFNfTU9EVUxFKSAqLworKworKyAgICBpZiAoIWFueV92 YWxpZCkKKysgICAgICAgIHJldHVybiAtMjsKKysKKysgICAgcmV0dXJuIDE7CisgfQorIAorIHN0 YXRpYyBjb25zdCBPU1NMX1BBUkFNICprZGZfaGtkZl9nZXR0YWJsZV9jdHhfcGFyYW1zKG9zc2xf dW51c2VkIHZvaWQgKmN0eCwKK0BAIC0zNDgsNiArNDIxLDkgQEAgc3RhdGljIGNvbnN0IE9TU0xf UEFSQU0gKmtkZl9oa2RmX2dldHRhYmxlX2N0eF9wYXJhbXMob3NzbF91bnVzZWQgdm9pZCAqY3R4 LAorICAgICBzdGF0aWMgY29uc3QgT1NTTF9QQVJBTSBrbm93bl9nZXR0YWJsZV9jdHhfcGFyYW1z W10gPSB7CisgICAgICAgICBPU1NMX1BBUkFNX3NpemVfdChPU1NMX0tERl9QQVJBTV9TSVpFLCBO VUxMKSwKKyAgICAgICAgIE9TU0xfUEFSQU1fb2N0ZXRfc3RyaW5nKE9TU0xfS0RGX1BBUkFNX0lO Rk8sIE5VTEwsIDApLAorKyNpZmRlZiBGSVBTX01PRFVMRQorKyAgICAgICAgT1NTTF9QQVJBTV9p bnQoT1NTTF9LREZfUEFSQU1fUkVESEFUX0ZJUFNfSU5ESUNBVE9SLCBOVUxMKSwKKysjZW5kaWYg LyogZGVmaW5lZChGSVBTX01PRFVMRSkgKi8KKyAgICAgICAgIE9TU0xfUEFSQU1fRU5ECisgICAg IH07CisgICAgIHJldHVybiBrbm93bl9nZXR0YWJsZV9jdHhfcGFyYW1zOworQEAgLTY3Nyw2ICs3 NTMsMTcgQEAgc3RhdGljIGludCBwcm92X3RsczEzX2hrZGZfZ2VuZXJhdGVfc2VjcmV0KE9TU0xf TElCX0NUWCAqbGliY3R4LAorICAgICByZXR1cm4gcmV0OworIH0KKyAKKytzdGF0aWMgdm9pZCAq a2RmX3RsczFfM19uZXcodm9pZCAqcHJvdmN0eCkKKyt7CisrICAgIEtERl9IS0RGICpoa2RmID0g a2RmX2hrZGZfbmV3KHByb3ZjdHgpOworKworKyAgICBpZiAoaGtkZiAhPSBOVUxMKQorKyAgICAg ICAgaGtkZi0+aXNfdGxzMTMgPSAxOworKworKyAgICByZXR1cm4gaGtkZjsKKyt9CisrCisrCisg c3RhdGljIGludCBrZGZfdGxzMV8zX2Rlcml2ZSh2b2lkICp2Y3R4LCB1bnNpZ25lZCBjaGFyICpr ZXksIHNpemVfdCBrZXlsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBP U1NMX1BBUkFNIHBhcmFtc1tdKQorIHsKK0BAIC02OTIsNiArNzc5LDExIEBAIHN0YXRpYyBpbnQg a2RmX3RsczFfM19kZXJpdmUodm9pZCAqdmN0eCwgdW5zaWduZWQgY2hhciAqa2V5LCBzaXplX3Qg a2V5bGVuLAorICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKyAKKysjaWZkZWYgRklQU19NT0RV TEUKKysgICAgaWYgKGtleWxlbiA8IEVWUF9LREZfRklQU19NSU5fS0VZX0xFTikKKysgICAgICAg IGN0eC0+Zmlwc19pbmRpY2F0b3IgPSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElDQVRPUl9OT1Rf QVBQUk9WRUQ7CisrI2VuZGlmIC8qIGRlZmluZWQoRklQU19NT0RVTEUpICovCisrCisgICAgIHN3 aXRjaCAoY3R4LT5tb2RlKSB7CisgICAgIGRlZmF1bHQ6CisgICAgICAgICByZXR1cm4gMDsKK0BA IC03NjksNyArODYxLDcgQEAgc3RhdGljIGNvbnN0IE9TU0xfUEFSQU0gKmtkZl90bHMxXzNfc2V0 dGFibGVfY3R4X3BhcmFtcyhvc3NsX3VudXNlZCB2b2lkICpjdHgsCisgfQorIAorIGNvbnN0IE9T U0xfRElTUEFUQ0ggb3NzbF9rZGZfdGxzMV8zX2tkZl9mdW5jdGlvbnNbXSA9IHsKKy0gICAgeyBP U1NMX0ZVTkNfS0RGX05FV0NUWCwgKHZvaWQoKikodm9pZCkpa2RmX2hrZGZfbmV3IH0sCisrICAg IHsgT1NTTF9GVU5DX0tERl9ORVdDVFgsICh2b2lkKCopKHZvaWQpKWtkZl90bHMxXzNfbmV3IH0s CisgICAgIHsgT1NTTF9GVU5DX0tERl9EVVBDVFgsICh2b2lkKCopKHZvaWQpKWtkZl9oa2RmX2R1 cCB9LAorICAgICB7IE9TU0xfRlVOQ19LREZfRlJFRUNUWCwgKHZvaWQoKikodm9pZCkpa2RmX2hr ZGZfZnJlZSB9LAorICAgICB7IE9TU0xfRlVOQ19LREZfUkVTRVQsICh2b2lkKCopKHZvaWQpKWtk Zl9oa2RmX3Jlc2V0IH0sCitkaWZmIC0tZ2l0IGEvcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9r ZGZzL2tia2RmLmMgYi9wcm92aWRlcnMvaW1wbGVtZW50YXRpb25zL2tkZnMva2JrZGYuYworaW5k ZXggYTU0MmY4NGRmYS4uNmI2ZGZiOTRhYyAxMDA2NDQKKy0tLSBhL3Byb3ZpZGVycy9pbXBsZW1l bnRhdGlvbnMva2Rmcy9rYmtkZi5jCisrKysgYi9wcm92aWRlcnMvaW1wbGVtZW50YXRpb25zL2tk ZnMva2JrZGYuYworQEAgLTU5LDYgKzU5LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgeworICAgICBrYmtk Zl9tb2RlIG1vZGU7CisgICAgIEVWUF9NQUNfQ1RYICpjdHhfaW5pdDsKKyAKKysgICAgLyogSE1B QyBkaWdlc3QgYWxnb3JpdGhtLCBpZiBhbnk7IHVzZWQgdG8gY29tcHV0ZSBGSVBTIGluZGljYXRv ciAqLworKyAgICBQUk9WX0RJR0VTVCBkaWdlc3Q7CisrCisgICAgIC8qIE5hbWVzIGFyZSBsb3dl cmNhc2VkIHZlcnNpb25zIG9mIHRob3NlIGZvdW5kIGluIFNQODAwLTEwOC4gKi8KKyAgICAgaW50 IHI7CisgICAgIHVuc2lnbmVkIGNoYXIgKmtpOworQEAgLTczLDYgKzc2LDkgQEAgdHlwZWRlZiBz dHJ1Y3QgeworICAgICBpbnQgdXNlX2w7CisgICAgIGludCBpc19rbWFjOworICAgICBpbnQgdXNl X3NlcGFyYXRvcjsKKysjaWZkZWYgRklQU19NT0RVTEUKKysgICAgaW50IGZpcHNfaW5kaWNhdG9y OworKyNlbmRpZiAvKiBkZWZpbmVkKEZJUFNfTU9EVUxFKSAqLworIH0gS0JLREY7CisgCisgLyog RGVmaW5pdGlvbnMgbmVlZGVkIGZvciB0eXBlY2hlY2tpbmcuICovCitAQCAtMTM4LDYgKzE0NCw3 IEBAIHN0YXRpYyB2b2lkIGtia2RmX3Jlc2V0KHZvaWQgKnZjdHgpCisgICAgIHZvaWQgKnByb3Zj dHggPSBjdHgtPnByb3ZjdHg7CisgCisgICAgIEVWUF9NQUNfQ1RYX2ZyZWUoY3R4LT5jdHhfaW5p dCk7CisrICAgIG9zc2xfcHJvdl9kaWdlc3RfcmVzZXQoJmN0eC0+ZGlnZXN0KTsKKyAgICAgT1BF TlNTTF9jbGVhcl9mcmVlKGN0eC0+Y29udGV4dCwgY3R4LT5jb250ZXh0X2xlbik7CisgICAgIE9Q RU5TU0xfY2xlYXJfZnJlZShjdHgtPmxhYmVsLCBjdHgtPmxhYmVsX2xlbik7CisgICAgIE9QRU5T U0xfY2xlYXJfZnJlZShjdHgtPmtpLCBjdHgtPmtpX2xlbik7CitAQCAtMjQwLDYgKzI0NywxMSBA QCBzdGF0aWMgaW50IGtia2RmX2Rlcml2ZSh2b2lkICp2Y3R4LCB1bnNpZ25lZCBjaGFyICprZXks IHNpemVfdCBrZXlsZW4sCisgICAgICAgICBnb3RvIGRvbmU7CisgICAgIH0KKyAKKysjaWZkZWYg RklQU19NT0RVTEUKKysgICAgaWYgKGtleWxlbiA8IEVWUF9LREZfRklQU19NSU5fS0VZX0xFTikK KysgICAgICAgIGN0eC0+Zmlwc19pbmRpY2F0b3IgPSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElD QVRPUl9OT1RfQVBQUk9WRUQ7CisrI2VuZGlmIC8qIGRlZmluZWQoRklQU19NT0RVTEUpICovCisr CisgICAgIGggPSBFVlBfTUFDX0NUWF9nZXRfbWFjX3NpemUoY3R4LT5jdHhfaW5pdCk7CisgICAg IGlmIChoID09IDApCisgICAgICAgICBnb3RvIGRvbmU7CitAQCAtMjk3LDYgKzMwOSw5IEBAIHN0 YXRpYyBpbnQga2JrZGZfc2V0X2N0eF9wYXJhbXModm9pZCAqdmN0eCwgY29uc3QgT1NTTF9QQVJB TSBwYXJhbXNbXSkKKyAgICAgICAgIH0KKyAgICAgfQorIAorKyAgICBpZiAoIW9zc2xfcHJvdl9k aWdlc3RfbG9hZF9mcm9tX3BhcmFtcygmY3R4LT5kaWdlc3QsIHBhcmFtcywgbGliY3R4KSkKKysg ICAgICAgIHJldHVybiAwOworKworICAgICBwID0gT1NTTF9QQVJBTV9sb2NhdGVfY29uc3QocGFy YW1zLCBPU1NMX0tERl9QQVJBTV9NT0RFKTsKKyAgICAgaWYgKHAgIT0gTlVMTAorICAgICAgICAg JiYgT1BFTlNTTF9zdHJuY2FzZWNtcCgiY291bnRlciIsIHAtPmRhdGEsIHAtPmRhdGFfc2l6ZSkg PT0gMCkgeworQEAgLTM2MywyMCArMzc4LDc3IEBAIHN0YXRpYyBjb25zdCBPU1NMX1BBUkFNICpr YmtkZl9zZXR0YWJsZV9jdHhfcGFyYW1zKG9zc2xfdW51c2VkIHZvaWQgKmN0eCwKKyBzdGF0aWMg aW50IGtia2RmX2dldF9jdHhfcGFyYW1zKHZvaWQgKnZjdHgsIE9TU0xfUEFSQU0gcGFyYW1zW10p CisgeworICAgICBPU1NMX1BBUkFNICpwOworKyAgICBpbnQgYW55X3ZhbGlkID0gMDsgLyogc2V0 IHRvIDEgd2hlbiBhdCBsZWFzdCBvbmUgcGFyYW1ldGVyIHdhcyB2YWxpZCAqLworIAorICAgICBw ID0gT1NTTF9QQVJBTV9sb2NhdGUocGFyYW1zLCBPU1NMX0tERl9QQVJBTV9TSVpFKTsKKy0gICAg aWYgKHAgPT0gTlVMTCkKKysgICAgaWYgKHAgIT0gTlVMTCkgeworKyAgICAgICAgYW55X3ZhbGlk ID0gMTsKKysKKysgICAgICAgIC8qIEtCS0RGIGNhbiBwcm9kdWNlIHJlc3VsdHMgYXMgbGFyZ2Ug YXMgeW91IGxpa2UuICovCisrICAgICAgICBpZiAoIU9TU0xfUEFSQU1fc2V0X3NpemVfdChwLCBT SVpFX01BWCkpCisrICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKysjaWZkZWYgRklQ U19NT0RVTEUKKysgICAgcCA9IE9TU0xfUEFSQU1fbG9jYXRlKHBhcmFtcywgT1NTTF9LREZfUEFS QU1fUkVESEFUX0ZJUFNfSU5ESUNBVE9SKTsKKysgICAgaWYgKHAgIT0gTlVMTCkgeworKyAgICAg ICAgS0JLREYgKmN0eCA9IChLQktERiAqKXZjdHg7CisrICAgICAgICBpbnQgZmlwc19pbmRpY2F0 b3IgPSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElDQVRPUl9BUFBST1ZFRDsKKysKKysgICAgICAg IGFueV92YWxpZCA9IDE7CisrCisrICAgICAgICAvKiBBY2NvcmRpbmcgdG8gTklTVCBTcGVjaWFs IFB1YmxpY2F0aW9uIDgwMC0xMzFBcjIsIFNlY3Rpb24gODoKKysgICAgICAgICAqIERlcml2aW5n IEFkZGl0aW9uYWwgS2V5cyBmcm9tIGEgQ3J5cHRvZ3JhcGhpYyBLZXksICJbdF1oZSBsZW5ndGgg b2YKKysgICAgICAgICAqIHRoZSBrZXktZGVyaXZhdGlvbiBrZXkgW2kuZS4sIHRoZSBpbnB1dCBr ZXldIHNoYWxsIGJlIGF0IGxlYXN0IDExMgorKyAgICAgICAgICogYml0cyIuICovCisrICAgICAg ICBpZiAoY3R4LT5raV9sZW4gPCBFVlBfS0RGX0ZJUFNfTUlOX0tFWV9MRU4pCisrICAgICAgICAg ICAgZmlwc19pbmRpY2F0b3IgPSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElDQVRPUl9OT1RfQVBQ Uk9WRUQ7CisrCisrICAgICAgICAvKiBJbXBsZW1lbnRhdGlvbiBHdWlkYW5jZSBmb3IgRklQUyAx NDAtMyBhbmQgdGhlIENyeXB0b2dyYXBoaWMgTW9kdWxlCisrICAgICAgICAgKiBWZXJpZmljYXRp b24gUHJvZ3JhbSwgU2VjdGlvbiBELkIgYW5kIE5JU1QgU3BlY2lhbCBQdWJsaWNhdGlvbgorKyAg ICAgICAgICogODAwLTEzMUFyMiwgU2VjdGlvbiAxLjIuMiBzYXkgdGhhdCBhbnkgYWxnb3JpdGht IGF0IGEgc2VjdXJpdHkKKysgICAgICAgICAqIHN0cmVuZ3RoIDwgMTEyIGJpdHMgaXMgbGVnYWN5 IHVzZSBvbmx5LCBzbyBhbGwgZGVyaXZlZCBrZXlzIHNob3VsZAorKyAgICAgICAgICogYmUgbG9u Z2VyIHRoYW4gdGhhdC4gSWYgYSBkZXJpdmVkIGtleSBoYXMgZXZlciBiZWVuIHNob3J0ZXIgdGhh bgorKyAgICAgICAgICogdGhhdCwgY3R4LT5vdXRwdXRfa2V5ZWxlbl9pbmRpY2F0b3Igd2lsbCBi ZSBOT1RfQVBQUk9WRUQsIGFuZCB3ZQorKyAgICAgICAgICogc2hvdWxkIGFsc28gc2V0IHRoZSBy ZXR1cm5lZCBGSVBTIGluZGljYXRvciB0byB1bmFwcHJvdmVkLiAqLworKyAgICAgICAgaWYgKGN0 eC0+Zmlwc19pbmRpY2F0b3IgPT0gRVZQX0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1JfTk9UX0FQ UFJPVkVEKQorKyAgICAgICAgICAgIGZpcHNfaW5kaWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQ U19JTkRJQ0FUT1JfTk9UX0FQUFJPVkVEOworKworKyAgICAgICAgLyogSW1wbGVtZW50YXRpb24g R3VpZGFuY2UgZm9yIEZJUFMgMTQwLTMgYW5kIHRoZSBDcnlwdG9ncmFwaGljIE1vZHVsZQorKyAg ICAgICAgICogVmFsaWRhdGlvbiBQcm9ncmFtLCBTZWN0aW9uIEMuQzogIlRoZSBTSEFLRTEyOCBh bmQgU0hBS0UyNTYKKysgICAgICAgICAqIGV4dGVuZGFibGUtb3V0cHV0IGZ1bmN0aW9ucyBtYXkg b25seSBiZSB1c2VkIGFzIHRoZSBzdGFuZGFsb25lCisrICAgICAgICAgKiBhbGdvcml0aG1zLiIg Tm90ZSB0aGF0IHRoZSBkaWdlc3QgaXMgb25seSB1c2VkIHdoZW4gdGhlIE1BQworKyAgICAgICAg ICogYWxnb3JpdGhtIGlzIEhNQUMuICovCisrICAgICAgICBpZiAoY3R4LT5jdHhfaW5pdCAhPSBO VUxMCisrICAgICAgICAgICAgICAgICYmIEVWUF9NQUNfaXNfYShFVlBfTUFDX0NUWF9nZXQwX21h YyhjdHgtPmN0eF9pbml0KSwgT1NTTF9NQUNfTkFNRV9ITUFDKSkgeworKyAgICAgICAgICAgIGNv bnN0IEVWUF9NRCAqbWQgPSBvc3NsX3Byb3ZfZGlnZXN0X21kKCZjdHgtPmRpZ2VzdCk7CisrICAg ICAgICAgICAgaWYgKG1kICE9IE5VTEwKKysgICAgICAgICAgICAgICAgICAgICYmIChFVlBfTURf aXNfYShtZCwgIlNIQUtFLTEyOCIpIHx8IEVWUF9NRF9pc19hKG1kLCAiU0hBS0UtMjU2IikpKSB7 CisrICAgICAgICAgICAgICAgIGZpcHNfaW5kaWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQU19J TkRJQ0FUT1JfTk9UX0FQUFJPVkVEOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysKKysg ICAgICAgIGlmICghT1NTTF9QQVJBTV9zZXRfaW50KHAsIGZpcHNfaW5kaWNhdG9yKSkKKysgICAg ICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyNlbmRpZgorKworKyAgICBpZiAoIWFueV92YWxp ZCkKKyAgICAgICAgIHJldHVybiAtMjsKKyAKKy0gICAgLyogS0JLREYgY2FuIHByb2R1Y2UgcmVz dWx0cyBhcyBsYXJnZSBhcyB5b3UgbGlrZS4gKi8KKy0gICAgcmV0dXJuIE9TU0xfUEFSQU1fc2V0 X3NpemVfdChwLCBTSVpFX01BWCk7CisrICAgIHJldHVybiAxOworIH0KKyAKKyBzdGF0aWMgY29u c3QgT1NTTF9QQVJBTSAqa2JrZGZfZ2V0dGFibGVfY3R4X3BhcmFtcyhvc3NsX3VudXNlZCB2b2lk ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb3NzbF91bnVzZWQgdm9pZCAqcHJvdmN0eCkKKyB7CistICAgIHN0YXRpYyBjb25zdCBPU1NM X1BBUkFNIGtub3duX2dldHRhYmxlX2N0eF9wYXJhbXNbXSA9CistICAgICAgICB7IE9TU0xfUEFS QU1fc2l6ZV90KE9TU0xfS0RGX1BBUkFNX1NJWkUsIE5VTEwpLCBPU1NMX1BBUkFNX0VORCB9Owor KyAgICBzdGF0aWMgY29uc3QgT1NTTF9QQVJBTSBrbm93bl9nZXR0YWJsZV9jdHhfcGFyYW1zW10g PSB7CisrICAgICAgICBPU1NMX1BBUkFNX3NpemVfdChPU1NMX0tERl9QQVJBTV9TSVpFLCBOVUxM KSwKKysjaWZkZWYgRklQU19NT0RVTEUKKysgICAgICAgIE9TU0xfUEFSQU1faW50KE9TU0xfS0RG X1BBUkFNX1JFREhBVF9GSVBTX0lORElDQVRPUiwgTlVMTCksCisrI2VuZGlmIC8qIGRlZmluZWQo RklQU19NT0RVTEUpICovCisrICAgICAgICBPU1NMX1BBUkFNX0VORAorKyAgICB9OworICAgICBy ZXR1cm4ga25vd25fZ2V0dGFibGVfY3R4X3BhcmFtczsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcHJv dmlkZXJzL2ltcGxlbWVudGF0aW9ucy9rZGZzL3NzaGtkZi5jIGIvcHJvdmlkZXJzL2ltcGxlbWVu dGF0aW9ucy9rZGZzL3NzaGtkZi5jCitpbmRleCBjNTkyYmE3MmYxLi40YTUyYjM4MjY2IDEwMDY0 NAorLS0tIGEvcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9rZGZzL3NzaGtkZi5jCisrKysgYi9w cm92aWRlcnMvaW1wbGVtZW50YXRpb25zL2tkZnMvc3Noa2RmLmMKK0BAIC00OCw2ICs0OCw5IEBA IHR5cGVkZWYgc3RydWN0IHsKKyAgICAgY2hhciB0eXBlOyAvKiBYICovCisgICAgIHVuc2lnbmVk IGNoYXIgKnNlc3Npb25faWQ7CisgICAgIHNpemVfdCBzZXNzaW9uX2lkX2xlbjsKKysjaWZkZWYg RklQU19NT0RVTEUKKysgICAgaW50IGZpcHNfaW5kaWNhdG9yOworKyNlbmRpZiAvKiBkZWZpbmVk KEZJUFNfTU9EVUxFKSAqLworIH0gS0RGX1NTSEtERjsKKyAKKyBzdGF0aWMgdm9pZCAqa2RmX3Nz aGtkZl9uZXcodm9pZCAqcHJvdmN0eCkKK0BAIC0xMjYsNiArMTI5LDEyIEBAIHN0YXRpYyBpbnQg a2RmX3NzaGtkZl9kZXJpdmUodm9pZCAqdmN0eCwgdW5zaWduZWQgY2hhciAqa2V5LCBzaXplX3Qg a2V5bGVuLAorICAgICAgICAgRVJSX3JhaXNlKEVSUl9MSUJfUFJPViwgUFJPVl9SX01JU1NJTkdf VFlQRSk7CisgICAgICAgICByZXR1cm4gMDsKKyAgICAgfQorKworKyNpZmRlZiBGSVBTX01PRFVM RQorKyAgICBpZiAoa2V5bGVuIDwgRVZQX0tERl9GSVBTX01JTl9LRVlfTEVOKQorKyAgICAgICAg Y3R4LT5maXBzX2luZGljYXRvciA9IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9B UFBST1ZFRDsKKysjZW5kaWYgLyogZGVmaW5lZChGSVBTX01PRFVMRSkgKi8KKysKKyAgICAgcmV0 dXJuIFNTSEtERihtZCwgY3R4LT5rZXksIGN0eC0+a2V5X2xlbiwKKyAgICAgICAgICAgICAgICAg ICBjdHgtPnhjZ2hhc2gsIGN0eC0+eGNnaGFzaF9sZW4sCisgICAgICAgICAgICAgICAgICAgY3R4 LT5zZXNzaW9uX2lkLCBjdHgtPnNlc3Npb25faWRfbGVuLAorQEAgLTE5NCwxMCArMjAzLDY3IEBA IHN0YXRpYyBjb25zdCBPU1NMX1BBUkFNICprZGZfc3Noa2RmX3NldHRhYmxlX2N0eF9wYXJhbXMo b3NzbF91bnVzZWQgdm9pZCAqY3R4LAorIHN0YXRpYyBpbnQga2RmX3NzaGtkZl9nZXRfY3R4X3Bh cmFtcyh2b2lkICp2Y3R4LCBPU1NMX1BBUkFNIHBhcmFtc1tdKQorIHsKKyAgICAgT1NTTF9QQVJB TSAqcDsKKysgICAgaW50IGFueV92YWxpZCA9IDA7IC8qIHNldCB0byAxIHdoZW4gYXQgbGVhc3Qg b25lIHBhcmFtZXRlciB3YXMgdmFsaWQgKi8KKyAKKy0gICAgaWYgKChwID0gT1NTTF9QQVJBTV9s b2NhdGUocGFyYW1zLCBPU1NMX0tERl9QQVJBTV9TSVpFKSkgIT0gTlVMTCkKKy0gICAgICAgIHJl dHVybiBPU1NMX1BBUkFNX3NldF9zaXplX3QocCwgU0laRV9NQVgpOworLSAgICByZXR1cm4gLTI7 CisrICAgIGlmICgocCA9IE9TU0xfUEFSQU1fbG9jYXRlKHBhcmFtcywgT1NTTF9LREZfUEFSQU1f U0laRSkpICE9IE5VTEwpIHsKKysgICAgICAgIGFueV92YWxpZCA9IDE7CisrCisrICAgICAgICBp ZiAoIU9TU0xfUEFSQU1fc2V0X3NpemVfdChwLCBTSVpFX01BWCkpCisrICAgICAgICAgICAgcmV0 dXJuIDA7CisrICAgIH0KKysKKysjaWZkZWYgRklQU19NT0RVTEUKKysgICAgcCA9IE9TU0xfUEFS QU1fbG9jYXRlKHBhcmFtcywgT1NTTF9LREZfUEFSQU1fUkVESEFUX0ZJUFNfSU5ESUNBVE9SKTsK KysgICAgaWYgKHAgIT0gTlVMTCkgeworKyAgICAgICAgS0RGX1NTSEtERiAqY3R4ID0gdmN0eDsK KysgICAgICAgIGludCBmaXBzX2luZGljYXRvciA9IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNB VE9SX0FQUFJPVkVEOworKworKyAgICAgICAgYW55X3ZhbGlkID0gMTsKKysKKysgICAgICAgIC8q IEFjY29yZGluZyB0byBOSVNUIFNwZWNpYWwgUHVibGljYXRpb24gODAwLTEzMUFyMiwgU2VjdGlv biA4OgorKyAgICAgICAgICogRGVyaXZpbmcgQWRkaXRpb25hbCBLZXlzIGZyb20gYSBDcnlwdG9n cmFwaGljIEtleSwgIlt0XWhlIGxlbmd0aCBvZgorKyAgICAgICAgICogdGhlIGtleS1kZXJpdmF0 aW9uIGtleSBbaS5lLiwgdGhlIGlucHV0IGtleV0gc2hhbGwgYmUgYXQgbGVhc3QgMTEyCisrICAg ICAgICAgKiBiaXRzIi4gKi8KKysgICAgICAgIGlmIChjdHgtPmtleV9sZW4gPCBFVlBfS0RGX0ZJ UFNfTUlOX0tFWV9MRU4pCisrICAgICAgICAgICAgZmlwc19pbmRpY2F0b3IgPSBFVlBfS0RGX1JF REhBVF9GSVBTX0lORElDQVRPUl9OT1RfQVBQUk9WRUQ7CisrCisrICAgICAgICAvKiBJbXBsZW1l bnRhdGlvbiBHdWlkYW5jZSBmb3IgRklQUyAxNDAtMyBhbmQgdGhlIENyeXB0b2dyYXBoaWMgTW9k dWxlCisrICAgICAgICAgKiBWZXJpZmljYXRpb24gUHJvZ3JhbSwgU2VjdGlvbiBELkIgYW5kIE5J U1QgU3BlY2lhbCBQdWJsaWNhdGlvbgorKyAgICAgICAgICogODAwLTEzMUFyMiwgU2VjdGlvbiAx LjIuMiBzYXkgdGhhdCBhbnkgYWxnb3JpdGhtIGF0IGEgc2VjdXJpdHkKKysgICAgICAgICAqIHN0 cmVuZ3RoIDwgMTEyIGJpdHMgaXMgbGVnYWN5IHVzZSBvbmx5LCBzbyBhbGwgZGVyaXZlZCBrZXlz IHNob3VsZAorKyAgICAgICAgICogYmUgbG9uZ2VyIHRoYW4gdGhhdC4gSWYgYSBkZXJpdmVkIGtl eSBoYXMgZXZlciBiZWVuIHNob3J0ZXIgdGhhbgorKyAgICAgICAgICogdGhhdCwgY3R4LT5vdXRw dXRfa2V5ZWxlbl9pbmRpY2F0b3Igd2lsbCBiZSBOT1RfQVBQUk9WRUQsIGFuZCB3ZQorKyAgICAg ICAgICogc2hvdWxkIGFsc28gc2V0IHRoZSByZXR1cm5lZCBGSVBTIGluZGljYXRvciB0byB1bmFw cHJvdmVkLiAqLworKyAgICAgICAgaWYgKGN0eC0+Zmlwc19pbmRpY2F0b3IgPT0gRVZQX0tERl9S RURIQVRfRklQU19JTkRJQ0FUT1JfTk9UX0FQUFJPVkVEKQorKyAgICAgICAgICAgIGZpcHNfaW5k aWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1JfTk9UX0FQUFJPVkVEOworKwor KyAgICAgICAgLyogSW1wbGVtZW50YXRpb24gR3VpZGFuY2UgZm9yIEZJUFMgMTQwLTMgYW5kIHRo ZSBDcnlwdG9ncmFwaGljIE1vZHVsZQorKyAgICAgICAgICogVmFsaWRhdGlvbiBQcm9ncmFtLCBT ZWN0aW9uIEMuQzogIlRoZSBTSEFLRTEyOCBhbmQgU0hBS0UyNTYKKysgICAgICAgICAqIGV4dGVu ZGFibGUtb3V0cHV0IGZ1bmN0aW9ucyBtYXkgb25seSBiZSB1c2VkIGFzIHRoZSBzdGFuZGFsb25l CisrICAgICAgICAgKiBhbGdvcml0aG1zLiIKKysgICAgICAgICAqCisrICAgICAgICAgKiBBZGRp dGlvbmFsbHksIFNQIDgwMC0xMzVyMSBzZWN0aW9uIDUuMiBzcGVjaWZpZXMgdGhhdCB0aGUgaGFz aAorKyAgICAgICAgICogZnVuY3Rpb24gdXNlZCBpbiBTU0hLREYgImlzIG9uZSBvZiB0aGUgaGFz aCBmdW5jdGlvbnMgc3BlY2lmaWVkIGluCisrICAgICAgICAgKiBGSVBTIDE4MC0zLiIsIHdoaWNo IHJ1bGVzIG91dCBTSEEtMyBhbmQgdHJ1bmNhdGVkIHZhcmlhbnRzIG9mIFNIQS0yLgorKyAgICAg ICAgICogKi8KKysgICAgICAgIGlmIChjdHgtPmRpZ2VzdC5tZCAhPSBOVUxMCisrICAgICAgICAg ICAgJiYgIUVWUF9NRF9pc19hKGN0eC0+ZGlnZXN0Lm1kLCAiU0hBLTEiKQorKyAgICAgICAgICAg ICYmICFFVlBfTURfaXNfYShjdHgtPmRpZ2VzdC5tZCwgIlNIQTItMjI0IikKKysgICAgICAgICAg ICAmJiAhRVZQX01EX2lzX2EoY3R4LT5kaWdlc3QubWQsICJTSEEyLTI1NiIpCisrICAgICAgICAg ICAgJiYgIUVWUF9NRF9pc19hKGN0eC0+ZGlnZXN0Lm1kLCAiU0hBMi0zODQiKQorKyAgICAgICAg ICAgICYmICFFVlBfTURfaXNfYShjdHgtPmRpZ2VzdC5tZCwgIlNIQTItNTEyIikpIHsKKysgICAg ICAgICAgICBmaXBzX2luZGljYXRvciA9IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05P VF9BUFBST1ZFRDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmICghT1NTTF9QQVJBTV9zZXRf aW50KHAsIGZpcHNfaW5kaWNhdG9yKSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgfQor KyNlbmRpZgorKworKyAgICBpZiAoIWFueV92YWxpZCkKKysgICAgICAgIHJldHVybiAtMjsKKysK KysgICAgcmV0dXJuIDE7CisgfQorIAorIHN0YXRpYyBjb25zdCBPU1NMX1BBUkFNICprZGZfc3No a2RmX2dldHRhYmxlX2N0eF9wYXJhbXMob3NzbF91bnVzZWQgdm9pZCAqY3R4LAorQEAgLTIwNSw2 ICsyNzEsOSBAQCBzdGF0aWMgY29uc3QgT1NTTF9QQVJBTSAqa2RmX3NzaGtkZl9nZXR0YWJsZV9j dHhfcGFyYW1zKG9zc2xfdW51c2VkIHZvaWQgKmN0eCwKKyB7CisgICAgIHN0YXRpYyBjb25zdCBP U1NMX1BBUkFNIGtub3duX2dldHRhYmxlX2N0eF9wYXJhbXNbXSA9IHsKKyAgICAgICAgIE9TU0xf UEFSQU1fc2l6ZV90KE9TU0xfS0RGX1BBUkFNX1NJWkUsIE5VTEwpLAorKyNpZmRlZiBGSVBTX01P RFVMRQorKyAgICAgICAgT1NTTF9QQVJBTV9pbnQoT1NTTF9LREZfUEFSQU1fUkVESEFUX0ZJUFNf SU5ESUNBVE9SLCBOVUxMKSwKKysjZW5kaWYgLyogZGVmaW5lZChGSVBTX01PRFVMRSkgKi8KKyAg ICAgICAgIE9TU0xfUEFSQU1fRU5ECisgICAgIH07CisgICAgIHJldHVybiBrbm93bl9nZXR0YWJs ZV9jdHhfcGFyYW1zOworZGlmZiAtLWdpdCBhL3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMva2Rm cy9zc2tkZi5jIGIvcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9rZGZzL3Nza2RmLmMKK2luZGV4 IGViNTQ5NzJlMWMuLjIzODY1Y2Q3MGYgMTAwNjQ0CistLS0gYS9wcm92aWRlcnMvaW1wbGVtZW50 YXRpb25zL2tkZnMvc3NrZGYuYworKysrIGIvcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9rZGZz L3Nza2RmLmMKK0BAIC02NCw2ICs2NCwxMCBAQCB0eXBlZGVmIHN0cnVjdCB7CisgICAgIHNpemVf dCBzYWx0X2xlbjsKKyAgICAgc2l6ZV90IG91dF9sZW47IC8qIG9wdGlvbmFsIEtNQUMgcGFyYW1l dGVyICovCisgICAgIGludCBpc19rbWFjOworKyAgICBpbnQgaXNfeDk2M2tkZjsKKysjaWZkZWYg RklQU19NT0RVTEUKKysgICAgaW50IGZpcHNfaW5kaWNhdG9yOworKyNlbmRpZiAvKiBkZWZpbmVk KEZJUFNfTU9EVUxFKSAqLworIH0gS0RGX1NTS0RGOworIAorICNkZWZpbmUgU1NLREZfTUFYX0lO TEVOICgxPDwzMCkKK0BAIC03Myw2ICs3Nyw3IEBAIHR5cGVkZWYgc3RydWN0IHsKKyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBrbWFjX2N1c3RvbV9zdHJbXSA9IHsgMHg0QiwgMHg0NCwgMHg0 NiB9OworIAorIHN0YXRpYyBPU1NMX0ZVTkNfa2RmX25ld2N0eF9mbiBzc2tkZl9uZXc7Cisrc3Rh dGljIE9TU0xfRlVOQ19rZGZfbmV3Y3R4X2ZuIHg5NjNrZGZfbmV3OworIHN0YXRpYyBPU1NMX0ZV TkNfa2RmX2R1cGN0eF9mbiBzc2tkZl9kdXA7Cisgc3RhdGljIE9TU0xfRlVOQ19rZGZfZnJlZWN0 eF9mbiBzc2tkZl9mcmVlOworIHN0YXRpYyBPU1NMX0ZVTkNfa2RmX3Jlc2V0X2ZuIHNza2RmX3Jl c2V0OworQEAgLTI5Niw2ICszMDEsMTYgQEAgc3RhdGljIHZvaWQgKnNza2RmX25ldyh2b2lkICpw cm92Y3R4KQorICAgICByZXR1cm4gY3R4OworIH0KKyAKKytzdGF0aWMgdm9pZCAqeDk2M2tkZl9u ZXcodm9pZCAqcHJvdmN0eCkKKyt7CisrICAgIEtERl9TU0tERiAqY3R4ID0gc3NrZGZfbmV3KHBy b3ZjdHgpOworKworKyAgICBpZiAoY3R4KQorKyAgICAgICAgY3R4LT5pc194OTYza2RmID0gMTsK KysKKysgICAgcmV0dXJuIGN0eDsKKyt9CisrCisgc3RhdGljIHZvaWQgc3NrZGZfcmVzZXQodm9p ZCAqdmN0eCkKKyB7CisgICAgIEtERl9TU0tERiAqY3R4ID0gKEtERl9TU0tERiAqKXZjdHg7CitA QCAtMzYxLDYgKzM3NiwxMSBAQCBzdGF0aWMgaW50IHNza2RmX2Rlcml2ZSh2b2lkICp2Y3R4LCB1 bnNpZ25lZCBjaGFyICprZXksIHNpemVfdCBrZXlsZW4sCisgICAgIH0KKyAgICAgbWQgPSBvc3Ns X3Byb3ZfZGlnZXN0X21kKCZjdHgtPmRpZ2VzdCk7CisgCisrI2lmZGVmIEZJUFNfTU9EVUxFCisr ICAgIGlmIChrZXlsZW4gPCBFVlBfS0RGX0ZJUFNfTUlOX0tFWV9MRU4pCisrICAgICAgICBjdHgt PmZpcHNfaW5kaWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1JfTk9UX0FQUFJP VkVEOworKyNlbmRpZiAvKiBkZWZpbmVkKEZJUFNfTU9EVUxFKSAqLworKworICAgICBpZiAoY3R4 LT5tYWNjdHggIT0gTlVMTCkgeworICAgICAgICAgLyogSCh4KSA9IEtNQUMgb3IgSCh4KSA9IEhN QUMgKi8KKyAgICAgICAgIGludCByZXQ7CitAQCAtNDQyLDYgKzQ2MiwxMSBAQCBzdGF0aWMgaW50 IHg5NjNrZGZfZGVyaXZlKHZvaWQgKnZjdHgsIHVuc2lnbmVkIGNoYXIgKmtleSwgc2l6ZV90IGtl eWxlbiwKKyAgICAgICAgIHJldHVybiAwOworICAgICB9CisgCisrI2lmZGVmIEZJUFNfTU9EVUxF CisrICAgIGlmIChrZXlsZW4gPCBFVlBfS0RGX0ZJUFNfTUlOX0tFWV9MRU4pCisrICAgICAgICBj dHgtPmZpcHNfaW5kaWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1JfTk9UX0FQ UFJPVkVEOworKyNlbmRpZiAvKiBkZWZpbmVkKEZJUFNfTU9EVUxFKSAqLworKworICAgICByZXR1 cm4gU1NLREZfaGFzaF9rZG0obWQsIGN0eC0+c2VjcmV0LCBjdHgtPnNlY3JldF9sZW4sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBjdHgtPmluZm8sIGN0eC0+aW5mb19sZW4sIDEsIGtleSwg a2V5bGVuKTsKKyB9CitAQCAtNTE0LDEwICs1MzksNzQgQEAgc3RhdGljIGludCBzc2tkZl9nZXRf Y3R4X3BhcmFtcyh2b2lkICp2Y3R4LCBPU1NMX1BBUkFNIHBhcmFtc1tdKQorIHsKKyAgICAgS0RG X1NTS0RGICpjdHggPSAoS0RGX1NTS0RGICopdmN0eDsKKyAgICAgT1NTTF9QQVJBTSAqcDsKKysg ICAgaW50IGFueV92YWxpZCA9IDA7IC8qIHNldCB0byAxIHdoZW4gYXQgbGVhc3Qgb25lIHBhcmFt ZXRlciB3YXMgdmFsaWQgKi8KKysKKysgICAgaWYgKChwID0gT1NTTF9QQVJBTV9sb2NhdGUocGFy YW1zLCBPU1NMX0tERl9QQVJBTV9TSVpFKSkgIT0gTlVMTCkgeworKyAgICAgICAgYW55X3ZhbGlk ID0gMTsKKysKKysgICAgICAgIGlmICghT1NTTF9QQVJBTV9zZXRfc2l6ZV90KHAsIHNza2RmX3Np emUoY3R4KSkpCisrICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKyAKKy0gICAgaWYgKChw ID0gT1NTTF9QQVJBTV9sb2NhdGUocGFyYW1zLCBPU1NMX0tERl9QQVJBTV9TSVpFKSkgIT0gTlVM TCkKKy0gICAgICAgIHJldHVybiBPU1NMX1BBUkFNX3NldF9zaXplX3QocCwgc3NrZGZfc2l6ZShj dHgpKTsKKy0gICAgcmV0dXJuIC0yOworKyNpZmRlZiBGSVBTX01PRFVMRQorKyAgICBwID0gT1NT TF9QQVJBTV9sb2NhdGUocGFyYW1zLCBPU1NMX0tERl9QQVJBTV9SRURIQVRfRklQU19JTkRJQ0FU T1IpOworKyAgICBpZiAocCAhPSBOVUxMKSB7CisrICAgICAgICBpbnQgZmlwc19pbmRpY2F0b3Ig PSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElDQVRPUl9BUFBST1ZFRDsKKysKKysgICAgICAgIGFu eV92YWxpZCA9IDE7CisrCisrICAgICAgICAvKiBBY2NvcmRpbmcgdG8gTklTVCBTcGVjaWFsIFB1 YmxpY2F0aW9uIDgwMC0xMzFBcjIsIFNlY3Rpb24gODoKKysgICAgICAgICAqIERlcml2aW5nIEFk ZGl0aW9uYWwgS2V5cyBmcm9tIGEgQ3J5cHRvZ3JhcGhpYyBLZXksICJbdF1oZSBsZW5ndGggb2YK KysgICAgICAgICAqIHRoZSBrZXktZGVyaXZhdGlvbiBrZXkgW2kuZS4sIHRoZSBpbnB1dCBrZXld IHNoYWxsIGJlIGF0IGxlYXN0IDExMgorKyAgICAgICAgICogYml0cyIuICovCisrICAgICAgICBp ZiAoY3R4LT5zZWNyZXRfbGVuIDwgRVZQX0tERl9GSVBTX01JTl9LRVlfTEVOKQorKyAgICAgICAg ICAgIGZpcHNfaW5kaWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1JfTk9UX0FQ UFJPVkVEOworKworKyAgICAgICAgLyogSW1wbGVtZW50YXRpb24gR3VpZGFuY2UgZm9yIEZJUFMg MTQwLTMgYW5kIHRoZSBDcnlwdG9ncmFwaGljIE1vZHVsZQorKyAgICAgICAgICogVmVyaWZpY2F0 aW9uIFByb2dyYW0sIFNlY3Rpb24gRC5CIGFuZCBOSVNUIFNwZWNpYWwgUHVibGljYXRpb24KKysg ICAgICAgICAqIDgwMC0xMzFBcjIsIFNlY3Rpb24gMS4yLjIgc2F5IHRoYXQgYW55IGFsZ29yaXRo bSBhdCBhIHNlY3VyaXR5CisrICAgICAgICAgKiBzdHJlbmd0aCA8IDExMiBiaXRzIGlzIGxlZ2Fj eSB1c2Ugb25seSwgc28gYWxsIGRlcml2ZWQga2V5cyBzaG91bGQKKysgICAgICAgICAqIGJlIGxv bmdlciB0aGFuIHRoYXQuIElmIGEgZGVyaXZlZCBrZXkgaGFzIGV2ZXIgYmVlbiBzaG9ydGVyIHRo YW4KKysgICAgICAgICAqIHRoYXQsIGN0eC0+b3V0cHV0X2tleWVsZW5faW5kaWNhdG9yIHdpbGwg YmUgTk9UX0FQUFJPVkVELCBhbmQgd2UKKysgICAgICAgICAqIHNob3VsZCBhbHNvIHNldCB0aGUg cmV0dXJuZWQgRklQUyBpbmRpY2F0b3IgdG8gdW5hcHByb3ZlZC4gKi8KKysgICAgICAgIGlmIChj dHgtPmZpcHNfaW5kaWNhdG9yID09IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9B UFBST1ZFRCkKKysgICAgICAgICAgICBmaXBzX2luZGljYXRvciA9IEVWUF9LREZfUkVESEFUX0ZJ UFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRDsKKysKKysgICAgICAgIC8qIEltcGxlbWVudGF0aW9u IEd1aWRhbmNlIGZvciBGSVBTIDE0MC0zIGFuZCB0aGUgQ3J5cHRvZ3JhcGhpYyBNb2R1bGUKKysg ICAgICAgICAqIFZhbGlkYXRpb24gUHJvZ3JhbSwgU2VjdGlvbiBDLkM6ICJUaGUgU0hBS0UxMjgg YW5kIFNIQUtFMjU2CisrICAgICAgICAgKiBleHRlbmRhYmxlLW91dHB1dCBmdW5jdGlvbnMgbWF5 IG9ubHkgYmUgdXNlZCBhcyB0aGUgc3RhbmRhbG9uZQorKyAgICAgICAgICogYWxnb3JpdGhtcy4i ICovCisrICAgICAgICBpZiAoY3R4LT5tYWNjdHggPT0gTlVMTAorKyAgICAgICAgICAgICAgICB8 fCAoY3R4LT5tYWNjdHggIT0gTlVMTCAmJgorKyAgICAgICAgICAgICAgICAgICAgRVZQX01BQ19p c19hKEVWUF9NQUNfQ1RYX2dldDBfbWFjKGN0eC0+bWFjY3R4KSwgT1NTTF9NQUNfTkFNRV9ITUFD KSkpIHsKKysgICAgICAgICAgICBpZiAoY3R4LT5kaWdlc3QubWQgIT0gTlVMTAorKyAgICAgICAg ICAgICAgICAmJiAoRVZQX01EX2lzX2EoY3R4LT5kaWdlc3QubWQsICJTSEFLRS0xMjgiKSB8fAor KyAgICAgICAgICAgICAgICAgICAgRVZQX01EX2lzX2EoY3R4LT5kaWdlc3QubWQsICJTSEFLRS0y NTYiKSkpIHsKKysgICAgICAgICAgICAgICAgZmlwc19pbmRpY2F0b3IgPSBFVlBfS0RGX1JFREhB VF9GSVBTX0lORElDQVRPUl9OT1RfQVBQUk9WRUQ7CisrICAgICAgICAgICAgfQorKworKyAgICAg ICAgICAgIC8qIFRhYmxlIEgtMyBpbiBBTlMgWDkuNjMtMjAwMSBzYXlzIHRoYXQgMTYwLWJpdCBo YXNoIGZ1bmN0aW9ucworKyAgICAgICAgICAgICAqIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIDgw LWJpdCBrZXkgYWdyZWVtZW50LCBidXQgRklQUyAxNDAtMworKyAgICAgICAgICAgICAqIHJlcXVp cmVzIGEgc2VjdXJpdHkgc3RyZW5ndGggb2YgMTEyIGJpdHMsIHNvIFNIQS0xIGNhbm5vdCBiZQor KyAgICAgICAgICAgICAqIHVzZWQgd2l0aCBYOS42My4gU2VlIHRoZSBkaXNjdXNzaW9uIGluCisr ICAgICAgICAgICAgICogaHR0cHM6Ly9naXRodWIuY29tL3VzbmlzdGdvdi9BQ1ZQL2lzc3Vlcy8x NDAzI2lzc3VlY29tbWVudC0xNDM1MzAwMzk1LgorKyAgICAgICAgICAgICAqLworKyAgICAgICAg ICAgIGlmIChjdHgtPmlzX3g5NjNrZGYKKysgICAgICAgICAgICAgICAgICAgICYmIGN0eC0+ZGln ZXN0Lm1kICE9IE5VTEwKKysgICAgICAgICAgICAgICAgICAgICYmIEVWUF9NRF9pc19hKGN0eC0+ ZGlnZXN0Lm1kLCAiU0hBLTEiKSkgeworKyAgICAgICAgICAgICAgICBmaXBzX2luZGljYXRvciA9 IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRDsKKysgICAgICAgICAg ICB9CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAoIU9TU0xfUEFSQU1fc2V0X2ludChwLCBm aXBzX2luZGljYXRvcikpCisrICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysjZW5kaWYK KysKKysgICAgaWYgKCFhbnlfdmFsaWQpCisrICAgICAgICByZXR1cm4gLTI7CisrCisrICAgIHJl dHVybiAxOworIH0KKyAKKyBzdGF0aWMgY29uc3QgT1NTTF9QQVJBTSAqc3NrZGZfZ2V0dGFibGVf Y3R4X3BhcmFtcyhvc3NsX3VudXNlZCB2b2lkICpjdHgsCitAQCAtNTI1LDYgKzYxNCw5IEBAIHN0 YXRpYyBjb25zdCBPU1NMX1BBUkFNICpzc2tkZl9nZXR0YWJsZV9jdHhfcGFyYW1zKG9zc2xfdW51 c2VkIHZvaWQgKmN0eCwKKyB7CisgICAgIHN0YXRpYyBjb25zdCBPU1NMX1BBUkFNIGtub3duX2dl dHRhYmxlX2N0eF9wYXJhbXNbXSA9IHsKKyAgICAgICAgIE9TU0xfUEFSQU1fc2l6ZV90KE9TU0xf S0RGX1BBUkFNX1NJWkUsIE5VTEwpLAorKyNpZmRlZiBGSVBTX01PRFVMRQorKyAgICAgICAgT1NT TF9QQVJBTV9pbnQoT1NTTF9LREZfUEFSQU1fUkVESEFUX0ZJUFNfSU5ESUNBVE9SLCAwKSwKKysj ZW5kaWYgLyogZGVmaW5lZChGSVBTX01PRFVMRSkgKi8KKyAgICAgICAgIE9TU0xfUEFSQU1fRU5E CisgICAgIH07CisgICAgIHJldHVybiBrbm93bl9nZXR0YWJsZV9jdHhfcGFyYW1zOworQEAgLTU0 NSw3ICs2MzcsNyBAQCBjb25zdCBPU1NMX0RJU1BBVENIIG9zc2xfa2RmX3Nza2RmX2Z1bmN0aW9u c1tdID0geworIH07CisgCisgY29uc3QgT1NTTF9ESVNQQVRDSCBvc3NsX2tkZl94OTYzX2tkZl9m dW5jdGlvbnNbXSA9IHsKKy0gICAgeyBPU1NMX0ZVTkNfS0RGX05FV0NUWCwgKHZvaWQoKikodm9p ZCkpc3NrZGZfbmV3IH0sCisrICAgIHsgT1NTTF9GVU5DX0tERl9ORVdDVFgsICh2b2lkKCopKHZv aWQpKXg5NjNrZGZfbmV3IH0sCisgICAgIHsgT1NTTF9GVU5DX0tERl9EVVBDVFgsICh2b2lkKCop KHZvaWQpKXNza2RmX2R1cCB9LAorICAgICB7IE9TU0xfRlVOQ19LREZfRlJFRUNUWCwgKHZvaWQo Kikodm9pZCkpc3NrZGZfZnJlZSB9LAorICAgICB7IE9TU0xfRlVOQ19LREZfUkVTRVQsICh2b2lk KCopKHZvaWQpKXNza2RmX3Jlc2V0IH0sCitkaWZmIC0tZ2l0IGEvcHJvdmlkZXJzL2ltcGxlbWVu dGF0aW9ucy9rZGZzL3RsczFfcHJmLmMgYi9wcm92aWRlcnMvaW1wbGVtZW50YXRpb25zL2tkZnMv dGxzMV9wcmYuYworaW5kZXggYTRkNjRiOTM1Mi4uZjY3ODJhNmNhMiAxMDA2NDQKKy0tLSBhL3By b3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMva2Rmcy90bHMxX3ByZi5jCisrKysgYi9wcm92aWRlcnMv aW1wbGVtZW50YXRpb25zL2tkZnMvdGxzMV9wcmYuYworQEAgLTkzLDYgKzkzLDEzIEBAIHR5cGVk ZWYgc3RydWN0IHsKKyAgICAgLyogQnVmZmVyIG9mIGNvbmNhdGVuYXRlZCBzZWVkIGRhdGEgKi8K KyAgICAgdW5zaWduZWQgY2hhciBzZWVkW1RMUzFfUFJGX01BWEJVRl07CisgICAgIHNpemVfdCBz ZWVkbGVuOworKworKyAgICAvKiBNQUMgZGlnZXN0IGFsZ29yaXRobTsgdXNlZCB0byBjb21wdXRl IEZJUFMgaW5kaWNhdG9yICovCisrICAgIFBST1ZfRElHRVNUIGRpZ2VzdDsKKysKKysjaWZkZWYg RklQU19NT0RVTEUKKysgICAgaW50IGZpcHNfaW5kaWNhdG9yOworKyNlbmRpZiAvKiBkZWZpbmVk KEZJUFNfTU9EVUxFKSAqLworIH0gVExTMV9QUkY7CisgCisgc3RhdGljIHZvaWQgKmtkZl90bHMx X3ByZl9uZXcodm9pZCAqcHJvdmN0eCkKK0BAIC0xMjksNiArMTM2LDcgQEAgc3RhdGljIHZvaWQg a2RmX3RsczFfcHJmX3Jlc2V0KHZvaWQgKnZjdHgpCisgICAgIEVWUF9NQUNfQ1RYX2ZyZWUoY3R4 LT5QX3NoYTEpOworICAgICBPUEVOU1NMX2NsZWFyX2ZyZWUoY3R4LT5zZWMsIGN0eC0+c2VjbGVu KTsKKyAgICAgT1BFTlNTTF9jbGVhbnNlKGN0eC0+c2VlZCwgY3R4LT5zZWVkbGVuKTsKKysgICAg b3NzbF9wcm92X2RpZ2VzdF9yZXNldCgmY3R4LT5kaWdlc3QpOworICAgICBtZW1zZXQoY3R4LCAw LCBzaXplb2YoKmN0eCkpOworICAgICBjdHgtPnByb3ZjdHggPSBwcm92Y3R4OworIH0KK0BAIC0x NTcsNiArMTY1LDEwIEBAIHN0YXRpYyBpbnQga2RmX3RsczFfcHJmX2Rlcml2ZSh2b2lkICp2Y3R4 LCB1bnNpZ25lZCBjaGFyICprZXksIHNpemVfdCBrZXlsZW4sCisgICAgICAgICBFUlJfcmFpc2Uo RVJSX0xJQl9QUk9WLCBQUk9WX1JfSU5WQUxJRF9LRVlfTEVOR1RIKTsKKyAgICAgICAgIHJldHVy biAwOworICAgICB9CisrI2lmZGVmIEZJUFNfTU9EVUxFCisrICAgIGlmIChrZXlsZW4gPCBFVlBf S0RGX0ZJUFNfTUlOX0tFWV9MRU4pCisrICAgICAgICBjdHgtPmZpcHNfaW5kaWNhdG9yID0gRVZQ X0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1JfTk9UX0FQUFJPVkVEOworKyNlbmRpZiAvKiBkZWZp bmVkKEZJUFNfTU9EVUxFKSAqLworIAorICAgICAvKgorICAgICAgKiBUaGUgc2VlZCBidWZmZXIg aXMgcHJlcGVuZGVkIHdpdGggYSBsYWJlbC4KK0BAIC0xOTEsNiArMjAzLDkgQEAgc3RhdGljIGlu dCBrZGZfdGxzMV9wcmZfc2V0X2N0eF9wYXJhbXModm9pZCAqdmN0eCwgY29uc3QgT1NTTF9QQVJB TSBwYXJhbXNbXSkKKyAgICAgICAgIH0KKyAgICAgfQorIAorKyAgICBpZiAoIW9zc2xfcHJvdl9k aWdlc3RfbG9hZF9mcm9tX3BhcmFtcygmY3R4LT5kaWdlc3QsIHBhcmFtcywgbGliY3R4KSkKKysg ICAgICAgIHJldHVybiAwOworKworICAgICBpZiAoKHAgPSBPU1NMX1BBUkFNX2xvY2F0ZV9jb25z dChwYXJhbXMsIE9TU0xfS0RGX1BBUkFNX1NFQ1JFVCkpICE9IE5VTEwpIHsKKyAgICAgICAgIE9Q RU5TU0xfY2xlYXJfZnJlZShjdHgtPnNlYywgY3R4LT5zZWNsZW4pOworICAgICAgICAgY3R4LT5z ZWMgPSBOVUxMOworQEAgLTIzMiwxMCArMjQ3LDYwIEBAIHN0YXRpYyBjb25zdCBPU1NMX1BBUkFN ICprZGZfdGxzMV9wcmZfc2V0dGFibGVfY3R4X3BhcmFtcygKKyBzdGF0aWMgaW50IGtkZl90bHMx X3ByZl9nZXRfY3R4X3BhcmFtcyh2b2lkICp2Y3R4LCBPU1NMX1BBUkFNIHBhcmFtc1tdKQorIHsK KyAgICAgT1NTTF9QQVJBTSAqcDsKKysjaWZkZWYgRklQU19NT0RVTEUKKysgICAgVExTMV9QUkYg KmN0eCA9IHZjdHg7CisrI2VuZGlmIC8qIGRlZmluZWQoRklQU19NT0RVTEUpICovCisrICAgIGlu dCBhbnlfdmFsaWQgPSAwOyAvKiBzZXQgdG8gMSB3aGVuIGF0IGxlYXN0IG9uZSBwYXJhbWV0ZXIg d2FzIHZhbGlkICovCisrCisrICAgIGlmICgocCA9IE9TU0xfUEFSQU1fbG9jYXRlKHBhcmFtcywg T1NTTF9LREZfUEFSQU1fU0laRSkpICE9IE5VTEwpIHsKKysgICAgICAgIGFueV92YWxpZCA9IDE7 CisrCisrICAgICAgICBpZiAoIU9TU0xfUEFSQU1fc2V0X3NpemVfdChwLCBTSVpFX01BWCkpCisr ICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKysjaWZkZWYgRklQU19NT0RVTEUKKysg ICAgcCA9IE9TU0xfUEFSQU1fbG9jYXRlKHBhcmFtcywgT1NTTF9LREZfUEFSQU1fUkVESEFUX0ZJ UFNfSU5ESUNBVE9SKTsKKysgICAgaWYgKHAgIT0gTlVMTCkgeworKyAgICAgICAgaW50IGZpcHNf aW5kaWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1JfQVBQUk9WRUQ7CisrCisr ICAgICAgICBhbnlfdmFsaWQgPSAxOworKworKyAgICAgICAgLyogQWNjb3JkaW5nIHRvIE5JU1Qg U3BlY2lhbCBQdWJsaWNhdGlvbiA4MDAtMTMxQXIyLCBTZWN0aW9uIDg6CisrICAgICAgICAgKiBE ZXJpdmluZyBBZGRpdGlvbmFsIEtleXMgZnJvbSBhIENyeXB0b2dyYXBoaWMgS2V5LCAiW3RdaGUg bGVuZ3RoIG9mCisrICAgICAgICAgKiB0aGUga2V5LWRlcml2YXRpb24ga2V5IFtpLmUuLCB0aGUg aW5wdXQga2V5XSBzaGFsbCBiZSBhdCBsZWFzdCAxMTIKKysgICAgICAgICAqIGJpdHMiLiAqLwor KyAgICAgICAgaWYgKGN0eC0+c2VjbGVuIDwgRVZQX0tERl9GSVBTX01JTl9LRVlfTEVOKQorKyAg ICAgICAgICAgIGZpcHNfaW5kaWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQU19JTkRJQ0FUT1Jf Tk9UX0FQUFJPVkVEOworKworKyAgICAgICAgLyogSW1wbGVtZW50YXRpb24gR3VpZGFuY2UgZm9y IEZJUFMgMTQwLTMgYW5kIHRoZSBDcnlwdG9ncmFwaGljIE1vZHVsZQorKyAgICAgICAgICogVmVy aWZpY2F0aW9uIFByb2dyYW0sIFNlY3Rpb24gRC5CIGFuZCBOSVNUIFNwZWNpYWwgUHVibGljYXRp b24KKysgICAgICAgICAqIDgwMC0xMzFBcjIsIFNlY3Rpb24gMS4yLjIgc2F5IHRoYXQgYW55IGFs Z29yaXRobSBhdCBhIHNlY3VyaXR5CisrICAgICAgICAgKiBzdHJlbmd0aCA8IDExMiBiaXRzIGlz IGxlZ2FjeSB1c2Ugb25seSwgc28gYWxsIGRlcml2ZWQga2V5cyBzaG91bGQKKysgICAgICAgICAq IGJlIGxvbmdlciB0aGFuIHRoYXQuIElmIGEgZGVyaXZlZCBrZXkgaGFzIGV2ZXIgYmVlbiBzaG9y dGVyIHRoYW4KKysgICAgICAgICAqIHRoYXQsIGN0eC0+b3V0cHV0X2tleWVsZW5faW5kaWNhdG9y IHdpbGwgYmUgTk9UX0FQUFJPVkVELCBhbmQgd2UKKysgICAgICAgICAqIHNob3VsZCBhbHNvIHNl dCB0aGUgcmV0dXJuZWQgRklQUyBpbmRpY2F0b3IgdG8gdW5hcHByb3ZlZC4gKi8KKysgICAgICAg IGlmIChjdHgtPmZpcHNfaW5kaWNhdG9yID09IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9S X05PVF9BUFBST1ZFRCkKKysgICAgICAgICAgICBmaXBzX2luZGljYXRvciA9IEVWUF9LREZfUkVE SEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRDsKKysKKysgICAgICAgIC8qIFNQIDgwMC0x MzVyMSBzZWN0aW9uIDQuMi4yIHNheXMgVExTIDEuMiBLREYgaXMgYXBwcm92ZWQgd2hlbiAiKDMp CisrICAgICAgICAgKiBQX0hBU0ggdXNlcyBlaXRoZXIgU0hBLTI1NiwgU0hBLTM4NCBvciBTSEEt NTEyLiIgKi8KKysgICAgICAgIGlmIChjdHgtPmRpZ2VzdC5tZCAhPSBOVUxMCisrICAgICAgICAg ICAgICAgICYmICFFVlBfTURfaXNfYShjdHgtPmRpZ2VzdC5tZCwgIlNIQTItMjU2IikKKysgICAg ICAgICAgICAgICAgJiYgIUVWUF9NRF9pc19hKGN0eC0+ZGlnZXN0Lm1kLCAiU0hBMi0zODQiKQor KyAgICAgICAgICAgICAgICAmJiAhRVZQX01EX2lzX2EoY3R4LT5kaWdlc3QubWQsICJTSEEyLTUx MiIpKSB7CisrICAgICAgICAgICAgZmlwc19pbmRpY2F0b3IgPSBFVlBfS0RGX1JFREhBVF9GSVBT X0lORElDQVRPUl9OT1RfQVBQUk9WRUQ7CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAoIU9T U0xfUEFSQU1fc2V0X2ludChwLCBmaXBzX2luZGljYXRvcikpCisrICAgICAgICAgICAgcmV0dXJu IDA7CisrICAgIH0KKysjZW5kaWYKKyAKKy0gICAgaWYgKChwID0gT1NTTF9QQVJBTV9sb2NhdGUo cGFyYW1zLCBPU1NMX0tERl9QQVJBTV9TSVpFKSkgIT0gTlVMTCkKKy0gICAgICAgIHJldHVybiBP U1NMX1BBUkFNX3NldF9zaXplX3QocCwgU0laRV9NQVgpOworLSAgICByZXR1cm4gLTI7CisrICAg IGlmICghYW55X3ZhbGlkKQorKyAgICAgICAgcmV0dXJuIC0yOworKworKyAgICByZXR1cm4gMTsK KyB9CisgCisgc3RhdGljIGNvbnN0IE9TU0xfUEFSQU0gKmtkZl90bHMxX3ByZl9nZXR0YWJsZV9j dHhfcGFyYW1zKAorQEAgLTI0Myw2ICszMDgsOSBAQCBzdGF0aWMgY29uc3QgT1NTTF9QQVJBTSAq a2RmX3RsczFfcHJmX2dldHRhYmxlX2N0eF9wYXJhbXMoCisgeworICAgICBzdGF0aWMgY29uc3Qg T1NTTF9QQVJBTSBrbm93bl9nZXR0YWJsZV9jdHhfcGFyYW1zW10gPSB7CisgICAgICAgICBPU1NM X1BBUkFNX3NpemVfdChPU1NMX0tERl9QQVJBTV9TSVpFLCBOVUxMKSwKKysjaWZkZWYgRklQU19N T0RVTEUKKysgICAgICAgIE9TU0xfUEFSQU1faW50KE9TU0xfS0RGX1BBUkFNX1JFREhBVF9GSVBT X0lORElDQVRPUiwgMCksCisrI2VuZGlmIC8qIGRlZmluZWQoRklQU19NT0RVTEUpICovCisgICAg ICAgICBPU1NMX1BBUkFNX0VORAorICAgICB9OworICAgICByZXR1cm4ga25vd25fZ2V0dGFibGVf Y3R4X3BhcmFtczsKK2RpZmYgLS1naXQgYS9wcm92aWRlcnMvaW1wbGVtZW50YXRpb25zL2tkZnMv eDk0MmtkZi5jIGIvcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9rZGZzL3g5NDJrZGYuYworaW5k ZXggYjFiYzZmN2UxYi4uODE3M2ZjMmNjNyAxMDA2NDQKKy0tLSBhL3Byb3ZpZGVycy9pbXBsZW1l bnRhdGlvbnMva2Rmcy94OTQya2RmLmMKKysrKyBiL3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMv a2Rmcy94OTQya2RmLmMKK0BAIC0xMywxMSArMTMsMTMgQEAKKyAjaW5jbHVkZSA8b3BlbnNzbC9j b3JlX2Rpc3BhdGNoLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisgI2luY2x1ZGUgPG9w ZW5zc2wvZXZwLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wva2RmLmg+CisgI2luY2x1ZGUgPG9wZW5z c2wvcGFyYW1zLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvcHJvdmVyci5oPgorICNpbmNsdWRlICJp bnRlcm5hbC9wYWNrZXQuaCIKKyAjaW5jbHVkZSAiaW50ZXJuYWwvZGVyLmgiCisgI2luY2x1ZGUg ImludGVybmFsL25lbGVtLmgiCisrI2luY2x1ZGUgImNyeXB0by9ldnAuaCIKKyAjaW5jbHVkZSAi cHJvdi9wcm92aWRlcl9jdHguaCIKKyAjaW5jbHVkZSAicHJvdi9wcm92aWRlcmNvbW1vbi5oIgor ICNpbmNsdWRlICJwcm92L2ltcGxlbWVudGF0aW9ucy5oIgorQEAgLTQ3LDYgKzUwLDkgQEAgdHlw ZWRlZiBzdHJ1Y3QgeworICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjZWtfb2lkOworICAgICBz aXplX3QgY2VrX29pZF9sZW47CisgICAgIGludCB1c2Vfa2V5Yml0czsKKysjaWZkZWYgRklQU19N T0RVTEUKKysgICAgaW50IGZpcHNfaW5kaWNhdG9yOworKyNlbmRpZiAvKiBkZWZpbmVkKEZJUFNf TU9EVUxFKSAqLworIH0gS0RGX1g5NDI7CisgCisgLyoKK0BAIC00NjAsNiArNDY2LDEwIEBAIHN0 YXRpYyBpbnQgeDk0MmtkZl9kZXJpdmUodm9pZCAqdmN0eCwgdW5zaWduZWQgY2hhciAqa2V5LCBz aXplX3Qga2V5bGVuLAorICAgICAgICAgRVJSX3JhaXNlKEVSUl9MSUJfUFJPViwgUFJPVl9SX0JB RF9FTkNPRElORyk7CisgICAgICAgICByZXR1cm4gMDsKKyAgICAgfQorKyNpZmRlZiBGSVBTX01P RFVMRQorKyAgICBpZiAoa2V5bGVuIDwgRVZQX0tERl9GSVBTX01JTl9LRVlfTEVOKQorKyAgICAg ICAgY3R4LT5maXBzX2luZGljYXRvciA9IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05P VF9BUFBST1ZFRDsKKysjZW5kaWYgLyogZGVmaW5lZChGSVBTX01PRFVMRSkgKi8KKyAgICAgcmV0 ID0geDk0MmtkZl9oYXNoX2tkbShtZCwgY3R4LT5zZWNyZXQsIGN0eC0+c2VjcmV0X2xlbiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXIsIGRlcl9sZW4sIGN0ciwga2V5LCBrZXlsZW4p OworICAgICBPUEVOU1NMX2ZyZWUoZGVyKTsKK0BAIC01NjMsMTAgKzU3Myw1OCBAQCBzdGF0aWMg aW50IHg5NDJrZGZfZ2V0X2N0eF9wYXJhbXModm9pZCAqdmN0eCwgT1NTTF9QQVJBTSBwYXJhbXNb XSkKKyB7CisgICAgIEtERl9YOTQyICpjdHggPSAoS0RGX1g5NDIgKil2Y3R4OworICAgICBPU1NM X1BBUkFNICpwOworKyAgICBpbnQgYW55X3ZhbGlkID0gMDsgLyogc2V0IHRvIDEgd2hlbiBhdCBs ZWFzdCBvbmUgcGFyYW1ldGVyIHdhcyB2YWxpZCAqLworIAorLSAgICBpZiAoKHAgPSBPU1NMX1BB UkFNX2xvY2F0ZShwYXJhbXMsIE9TU0xfS0RGX1BBUkFNX1NJWkUpKSAhPSBOVUxMKQorLSAgICAg ICAgcmV0dXJuIE9TU0xfUEFSQU1fc2V0X3NpemVfdChwLCB4OTQya2RmX3NpemUoY3R4KSk7Cist ICAgIHJldHVybiAtMjsKKysgICAgaWYgKChwID0gT1NTTF9QQVJBTV9sb2NhdGUocGFyYW1zLCBP U1NMX0tERl9QQVJBTV9TSVpFKSkgIT0gTlVMTCkgeworKyAgICAgICAgYW55X3ZhbGlkID0gMTsK KysKKysgICAgICAgIGlmICghT1NTTF9QQVJBTV9zZXRfc2l6ZV90KHAsIHg5NDJrZGZfc2l6ZShj dHgpKSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyNpZmRlZiBGSVBTX01P RFVMRQorKyAgICBwID0gT1NTTF9QQVJBTV9sb2NhdGUocGFyYW1zLCBPU1NMX0tERl9QQVJBTV9S RURIQVRfRklQU19JTkRJQ0FUT1IpOworKyAgICBpZiAocCAhPSBOVUxMKSB7CisrICAgICAgICBp bnQgZmlwc19pbmRpY2F0b3IgPSBFVlBfS0RGX1JFREhBVF9GSVBTX0lORElDQVRPUl9BUFBST1ZF RDsKKysKKysgICAgICAgIGFueV92YWxpZCA9IDE7CisrCisrICAgICAgICAvKiBBY2NvcmRpbmcg dG8gTklTVCBTcGVjaWFsIFB1YmxpY2F0aW9uIDgwMC0xMzFBcjIsIFNlY3Rpb24gODoKKysgICAg ICAgICAqIERlcml2aW5nIEFkZGl0aW9uYWwgS2V5cyBmcm9tIGEgQ3J5cHRvZ3JhcGhpYyBLZXks ICJbdF1oZSBsZW5ndGggb2YKKysgICAgICAgICAqIHRoZSBrZXktZGVyaXZhdGlvbiBrZXkgW2ku ZS4sIHRoZSBpbnB1dCBrZXldIHNoYWxsIGJlIGF0IGxlYXN0IDExMgorKyAgICAgICAgICogYml0 cyIuICovCisrICAgICAgICBpZiAoY3R4LT5zZWNyZXRfbGVuIDwgRVZQX0tERl9GSVBTX01JTl9L RVlfTEVOKQorKyAgICAgICAgICAgIGZpcHNfaW5kaWNhdG9yID0gRVZQX0tERl9SRURIQVRfRklQ U19JTkRJQ0FUT1JfTk9UX0FQUFJPVkVEOworKworKyAgICAgICAgLyogSW1wbGVtZW50YXRpb24g R3VpZGFuY2UgZm9yIEZJUFMgMTQwLTMgYW5kIHRoZSBDcnlwdG9ncmFwaGljIE1vZHVsZQorKyAg ICAgICAgICogVmVyaWZpY2F0aW9uIFByb2dyYW0sIFNlY3Rpb24gRC5CIGFuZCBOSVNUIFNwZWNp YWwgUHVibGljYXRpb24KKysgICAgICAgICAqIDgwMC0xMzFBcjIsIFNlY3Rpb24gMS4yLjIgc2F5 IHRoYXQgYW55IGFsZ29yaXRobSBhdCBhIHNlY3VyaXR5CisrICAgICAgICAgKiBzdHJlbmd0aCA8 IDExMiBiaXRzIGlzIGxlZ2FjeSB1c2Ugb25seSwgc28gYWxsIGRlcml2ZWQga2V5cyBzaG91bGQK KysgICAgICAgICAqIGJlIGxvbmdlciB0aGFuIHRoYXQuIElmIGEgZGVyaXZlZCBrZXkgaGFzIGV2 ZXIgYmVlbiBzaG9ydGVyIHRoYW4KKysgICAgICAgICAqIHRoYXQsIGN0eC0+b3V0cHV0X2tleWVs ZW5faW5kaWNhdG9yIHdpbGwgYmUgTk9UX0FQUFJPVkVELCBhbmQgd2UKKysgICAgICAgICAqIHNo b3VsZCBhbHNvIHNldCB0aGUgcmV0dXJuZWQgRklQUyBpbmRpY2F0b3IgdG8gdW5hcHByb3ZlZC4g Ki8KKysgICAgICAgIGlmIChjdHgtPmZpcHNfaW5kaWNhdG9yID09IEVWUF9LREZfUkVESEFUX0ZJ UFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRCkKKysgICAgICAgICAgICBmaXBzX2luZGljYXRvciA9 IEVWUF9LREZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRDsKKysKKysgICAgICAg IC8qIEltcGxlbWVudGF0aW9uIEd1aWRhbmNlIGZvciBGSVBTIDE0MC0zIGFuZCB0aGUgQ3J5cHRv Z3JhcGhpYyBNb2R1bGUKKysgICAgICAgICAqIFZhbGlkYXRpb24gUHJvZ3JhbSwgU2VjdGlvbiBD LkM6ICJUaGUgU0hBS0UxMjggYW5kIFNIQUtFMjU2CisrICAgICAgICAgKiBleHRlbmRhYmxlLW91 dHB1dCBmdW5jdGlvbnMgbWF5IG9ubHkgYmUgdXNlZCBhcyB0aGUgc3RhbmRhbG9uZQorKyAgICAg ICAgICogYWxnb3JpdGhtcy4iICovCisrICAgICAgICBpZiAoY3R4LT5kaWdlc3QubWQgIT0gTlVM TAorKyAgICAgICAgICAgICAgICAmJiAoRVZQX01EX2lzX2EoY3R4LT5kaWdlc3QubWQsICJTSEFL RS0xMjgiKSB8fAorKyAgICAgICAgICAgICAgICAgICAgRVZQX01EX2lzX2EoY3R4LT5kaWdlc3Qu bWQsICJTSEFLRS0yNTYiKSkpIHsKKysgICAgICAgICAgICBmaXBzX2luZGljYXRvciA9IEVWUF9L REZfUkVESEFUX0ZJUFNfSU5ESUNBVE9SX05PVF9BUFBST1ZFRDsKKysgICAgICAgIH0KKysKKysg ICAgICAgIGlmICghT1NTTF9QQVJBTV9zZXRfaW50KHAsIGZpcHNfaW5kaWNhdG9yKSkKKysgICAg ICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyNlbmRpZgorKworKyAgICBpZiAoIWFueV92YWxp ZCkKKysgICAgICAgIHJldHVybiAtMjsKKysKKysgICAgcmV0dXJuIDE7CisgfQorIAorIHN0YXRp YyBjb25zdCBPU1NMX1BBUkFNICp4OTQya2RmX2dldHRhYmxlX2N0eF9wYXJhbXMob3NzbF91bnVz ZWQgdm9pZCAqY3R4LAorQEAgLTU3NCw2ICs2MzIsOSBAQCBzdGF0aWMgY29uc3QgT1NTTF9QQVJB TSAqeDk0MmtkZl9nZXR0YWJsZV9jdHhfcGFyYW1zKG9zc2xfdW51c2VkIHZvaWQgKmN0eCwKKyB7 CisgICAgIHN0YXRpYyBjb25zdCBPU1NMX1BBUkFNIGtub3duX2dldHRhYmxlX2N0eF9wYXJhbXNb XSA9IHsKKyAgICAgICAgIE9TU0xfUEFSQU1fc2l6ZV90KE9TU0xfS0RGX1BBUkFNX1NJWkUsIE5V TEwpLAorKyNpZmRlZiBGSVBTX01PRFVMRQorKyAgICAgICAgT1NTTF9QQVJBTV9pbnQoT1NTTF9L REZfUEFSQU1fUkVESEFUX0ZJUFNfSU5ESUNBVE9SLCAwKSwKKysjZW5kaWYgLyogZGVmaW5lZChG SVBTX01PRFVMRSkgKi8KKyAgICAgICAgIE9TU0xfUEFSQU1fRU5ECisgICAgIH07CisgICAgIHJl dHVybiBrbm93bl9nZXR0YWJsZV9jdHhfcGFyYW1zOworZGlmZiAtLWdpdCBhL3V0aWwvcGVybC9P cGVuU1NML3BhcmFtbmFtZXMucG0gYi91dGlsL3BlcmwvT3BlblNTTC9wYXJhbW5hbWVzLnBtCitp bmRleCA3MGY3YzUwZmU0Li42NjE4MTIyNDE3IDEwMDY0NAorLS0tIGEvdXRpbC9wZXJsL09wZW5T U0wvcGFyYW1uYW1lcy5wbQorKysrIGIvdXRpbC9wZXJsL09wZW5TU0wvcGFyYW1uYW1lcy5wbQor QEAgLTE4Myw2ICsxODMsNyBAQCBteSAlcGFyYW1zID0gKAorICAgICAnS0RGX1BBUkFNX1g5NDJf U1VQUF9QVUJJTkZPJyA9PiAgICAic3VwcC1wdWJpbmZvIiwKKyAgICAgJ0tERl9QQVJBTV9YOTQy X1NVUFBfUFJJVklORk8nID0+ICAgInN1cHAtcHJpdmluZm8iLAorICAgICAnS0RGX1BBUkFNX1g5 NDJfVVNFX0tFWUJJVFMnID0+ICAgICAidXNlLWtleWJpdHMiLAorKyAgICAnS0RGX1BBUkFNX1JF REhBVF9GSVBTX0lORElDQVRPUicgPT4gICAgICJyZWRoYXQtZmlwcy1pbmRpY2F0b3IiLAorICAg ICAnS0RGX1BBUkFNX0hNQUNEUkJHX0VOVFJPUFknID0+ICAgICAiZW50cm9weSIsCisgICAgICdL REZfUEFSQU1fSE1BQ0RSQkdfTk9OQ0UnID0+ICAgICAgICJub25jZSIsCisgICAgICdLREZfUEFS QU1fVEhSRUFEUycgPT4gICAgICAgICJ0aHJlYWRzIiwgICAgICAgICAgICAgICAgIyB1aW50MzJf dAorLS0gCisyLjM5LjIKKwoKZGlmZiAtLWdpdCBhLzAxMTctaWdub3JlLXVua25vd24tc2lnYWxn b3JpdGhtcy1ncm91cHMucGF0Y2ggYi8wMTE3LWlnbm9yZS11bmtub3duLXNpZ2FsZ29yaXRobXMt Z3JvdXBzLnBhdGNoCmluZGV4IDNjNTIyNzcuLmRkNDBlMTEgMTAwNjQ0Ci0tLSBhLzAxMTctaWdu b3JlLXVua25vd24tc2lnYWxnb3JpdGhtcy1ncm91cHMucGF0Y2gKKysrIGIvMDExNy1pZ25vcmUt dW5rbm93bi1zaWdhbGdvcml0aG1zLWdyb3Vwcy5wYXRjaApAQCAtMTExLDcgKzExMSw3IEBAIGlu ZGV4IDA1NmFhZTM4NjMuLmZlNjgwNDQ5YzUgMTAwNjQ0CiArICAgIH0KICAgICAgaWYgKGdhcmct PmdpZGNudCA9PSBnYXJnLT5naWRtYXgpIHsKICAgICAgICAgIHVpbnQxNl90ICp0bXAgPQotICAg ICAgICAgICAgIE9QRU5TU0xfcmVhbGxvYyhnYXJnLT5naWRfYXJyLCBnYXJnLT5naWRtYXggKyBH Uk9VUExJU1RfSU5DUkVNRU5UKTsKKyAgICAgICAgICAgICBPUEVOU1NMX3JlYWxsb2MoZ2FyZy0+ Z2lkX2FyciwKIEBAIC0xMDcwLDEzICsxMDc2LDE0IEBAIHN0YXRpYyBpbnQgZ2lkX2NiKGNvbnN0 IGNoYXIgKmVsZW0sIGludCBsZW4sIHZvaWQgKmFyZykKICAKICAgICAgZ2lkID0gdGxzMV9ncm91 cF9uYW1lMmlkKGdhcmctPmN0eCwgZXRtcCk7CkBAIC0xNjEsMTggKzE2MSwxOCBAQCBpbmRleCAw NTZhYWUzODYzLi5mZTY4MDQ0OWM1IDEwMDY0NAogICAgICAgICAgcmV0dXJuIDA7CiAgICAgIGlm IChsZW4gPiAoaW50KShzaXplb2YoZXRtcCkgLSAxKSkKIEBAIC0yOTMxLDggKzI5NTAsMTAgQEAg c3RhdGljIGludCBzaWdfY2IoY29uc3QgY2hhciAqZWxlbSwgaW50IGxlbiwgdm9pZCAqYXJnKQot ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGlmIChpID09IE9T U0xfTkVMRU0oc2lnYWxnX2xvb2t1cF90YmwpKQorLSAgICAgICAgICAgICAgICByZXR1cm4gMDsK KysgICAgICAgICAgICBpZiAoaSA9PSBPU1NMX05FTEVNKHNpZ2FsZ19sb29rdXBfdGJsKSkgewor KyAgICAgICAgICAgICAgICAvKiBJZ25vcmUgdW5rbm93biBhbGdvcml0aG1zIGlmIGlnbm9yZV91 bmtub3duICovCisrICAgICAgICAgICAgICAgIHJldHVybiBpZ25vcmVfdW5rbm93bjsKKysgICAg ICAgICAgICB9CiAgICAgICAgICB9Ci0tICAgICAgICBpZiAoaSA9PSBPU1NMX05FTEVNKHNpZ2Fs Z19sb29rdXBfdGJsKSkKLS0gICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgIGlmIChpID09 IE9TU0xfTkVMRU0oc2lnYWxnX2xvb2t1cF90YmwpKSB7Ci0rICAgICAgICAgICAgLyogSWdub3Jl IHVua25vd24gYWxnb3JpdGhtcyBpZiBpZ25vcmVfdW5rbm93biAqLwotKyAgICAgICAgICAgIHJl dHVybiBpZ25vcmVfdW5rbm93bjsKLSsgICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICAg ICpwID0gMDsKLSAgICAgICAgIHArKzsKIEBAIC0yOTQwLDggKzI5NjEsMTAgQEAgc3RhdGljIGlu dCBzaWdfY2IoY29uc3QgY2hhciAqZWxlbSwgaW50IGxlbiwgdm9pZCAqYXJnKQogICAgICAgICAg ICAgIHJldHVybiAwOwogICAgICAgICAgZ2V0X3NpZ29yaGFzaCgmc2lnX2FsZywgJmhhc2hfYWxn LCBldG1wKTsKQEAgLTIwOSw3ICsyMDksNyBAQCBpbmRleCAwNTZhYWUzODYzLi5mZTY4MDQ0OWM1 IDEwMDY0NAogICAgICB9CiAgICAgIHJldHVybiAxOwogQEAgLTI5NzMsNiArMjk5OCwxMSBAQCBp bnQgdGxzMV9zZXRfc2lnYWxnc19saXN0KENFUlQgKmMsIGNvbnN0IGNoYXIgKnN0ciwgaW50IGNs aWVudCkKLSAgICAgc2lnLnNpZ2FsZ2NudCA9IDA7CisgICAgIH0KICAgICAgaWYgKCFDT05GX3Bh cnNlX2xpc3Qoc3RyLCAnOicsIDEsIHNpZ19jYiwgJnNpZykpCiAgICAgICAgICByZXR1cm4gMDsK ICsgICAgaWYgKHNpZy5zaWdhbGdjbnQgPT0gMCkgewoKZGlmZiAtLWdpdCBhLzAxMTgtbm8tY3Js LW1lbWxlYWsucGF0Y2ggYi8wMTE4LW5vLWNybC1tZW1sZWFrLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBlZTdlNzQ1Li4wMDAwMDAwCi0tLSBhLzAxMTgtbm8tY3JsLW1lbWxl YWsucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi1Gcm9tIDEwNTIxN2M3ZDU4 YzcyNmY0ZTY0NjE3N2UwYWFlZmI2MTE1YWFkM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBEbWl0cnkgQmVseWF2c2tpeSA8YmVsZG1pdEBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI3 IEZlYiAyMDI0IDE1OjIyOjU4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggNDgvNDldIDAxMTgtbm8t Y3JsLW1lbWxlYWsucGF0Y2gKLQotUGF0Y2gtbmFtZTogMDExOC1uby1jcmwtbWVtbGVhay5wYXRj aAotUGF0Y2gtaWQ6IDExOAotUGF0Y2gtc3RhdHVzOiB8Ci0gICAgIyBodHRwczovL2dpdGh1Yi5j b20vb3BlbnNzbC9vcGVuc3NsL2lzc3Vlcy8yMzc3MAotLS0tCi0gY3J5cHRvL3g1MDkvYnlfZmls ZS5jICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHRlc3QvcmVjaXBlcy82MC10ZXN0X3g1 MDlfbG9hZF9jZXJ0X2ZpbGUudCB8IDMgKystCi0gdGVzdC94NTA5X2xvYWRfY2VydF9maWxlX3Rl c3QuYyAgICAgICAgICAgIHwgOCArKysrKysrLQotIDMgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NyeXB0by94NTA5L2J5X2Zp bGUuYyBiL2NyeXB0by94NTA5L2J5X2ZpbGUuYwotaW5kZXggNTA3M2MxMzdhMi4uODU5MjM4MDRh YyAxMDA2NDQKLS0tLSBhL2NyeXB0by94NTA5L2J5X2ZpbGUuYwotKysrIGIvY3J5cHRvL3g1MDkv YnlfZmlsZS5jCi1AQCAtMTk4LDYgKzE5OCw4IEBAIGludCBYNTA5X2xvYWRfY3JsX2ZpbGUoWDUw OV9MT09LVVAgKmN0eCwgY29uc3QgY2hhciAqZmlsZSwgaW50IHR5cGUpCi0gICAgICAgICAgICAg ICAgIGdvdG8gZXJyOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBjb3VudCsrOwotKyAg ICAgICAgICAgIFg1MDlfQ1JMX2ZyZWUoeCk7Ci0rICAgICAgICAgICAgeCA9IE5VTEw7Ci0gICAg ICAgICB9Ci0gICAgIH0gZWxzZSBpZiAodHlwZSA9PSBYNTA5X0ZJTEVUWVBFX0FTTjEpIHsKLSAg ICAgICAgIHggPSBkMmlfWDUwOV9DUkxfYmlvKGluLCBOVUxMKTsKLWRpZmYgLS1naXQgYS90ZXN0 L3JlY2lwZXMvNjAtdGVzdF94NTA5X2xvYWRfY2VydF9maWxlLnQgYi90ZXN0L3JlY2lwZXMvNjAt dGVzdF94NTA5X2xvYWRfY2VydF9maWxlLnQKLWluZGV4IDc1YWVhYzM2MmMuLmUzMjlkNzY3NWMg MTAwNjQ0Ci0tLS0gYS90ZXN0L3JlY2lwZXMvNjAtdGVzdF94NTA5X2xvYWRfY2VydF9maWxlLnQK LSsrKyBiL3Rlc3QvcmVjaXBlcy82MC10ZXN0X3g1MDlfbG9hZF9jZXJ0X2ZpbGUudAotQEAgLTEy LDQgKzEyLDUgQEAgc2V0dXAoInRlc3RfbG9hZF9jZXJ0X2ZpbGUiKTsKLSAKLSBwbGFuIHRlc3Rz ID0+IDE7Ci0gCi0tb2socnVuKHRlc3QoWyJ4NTA5X2xvYWRfY2VydF9maWxlX3Rlc3QiLCBzcmN0 b3BfZmlsZSgidGVzdCIsICJjZXJ0cyIsICJsZWFmLWNoYWluLnBlbSIpXSkpKTsKLStvayhydW4o dGVzdChbIng1MDlfbG9hZF9jZXJ0X2ZpbGVfdGVzdCIsIHNyY3RvcF9maWxlKCJ0ZXN0IiwgImNl cnRzIiwgImxlYWYtY2hhaW4ucGVtIiksCi0rICAgICAgICAgICAgIHNyY3RvcF9maWxlKCJ0ZXN0 IiwgImNlcnRzIiwgImN5cmlsbGljX2NybC5wZW0iKV0pKSk7Ci1kaWZmIC0tZ2l0IGEvdGVzdC94 NTA5X2xvYWRfY2VydF9maWxlX3Rlc3QuYyBiL3Rlc3QveDUwOV9sb2FkX2NlcnRfZmlsZV90ZXN0 LmMKLWluZGV4IDRhNzM2MDcxYWUuLmMwN2QzMjk5MTUgMTAwNjQ0Ci0tLS0gYS90ZXN0L3g1MDlf bG9hZF9jZXJ0X2ZpbGVfdGVzdC5jCi0rKysgYi90ZXN0L3g1MDlfbG9hZF9jZXJ0X2ZpbGVfdGVz dC5jCi1AQCAtMTIsNiArMTIsNyBAQAotICNpbmNsdWRlICJ0ZXN0dXRpbC5oIgotIAotIHN0YXRp YyBjb25zdCBjaGFyICpjaGFpbjsKLStzdGF0aWMgY29uc3QgY2hhciAqY3JsOwotIAotIHN0YXRp YyBpbnQgdGVzdF9sb2FkX2NlcnRfZmlsZSh2b2lkKQotIHsKLUBAIC0yNywxMiArMjgsMTUgQEAg c3RhdGljIGludCB0ZXN0X2xvYWRfY2VydF9maWxlKHZvaWQpCi0gICAgICAgICAmJiBURVNUX2lu dF9lcShza19YNTA5X251bShjZXJ0cyksIDQpKQotICAgICAgICAgcmV0ID0gMTsKLSAKLSsgICAg aWYgKGNybCAhPSBOVUxMICYmICFURVNUX3RydWUoWDUwOV9sb2FkX2NybF9maWxlKGxvb2t1cCwg Y3JsLCBYNTA5X0ZJTEVUWVBFX1BFTSkpKQotKyAgICAgICAgcmV0ID0gMDsKLSsKLSAgICAgT1NT TF9TVEFDS19PRl9YNTA5X2ZyZWUoY2VydHMpOwotICAgICBYNTA5X1NUT1JFX2ZyZWUoc3RvcmUp OwotICAgICByZXR1cm4gcmV0OwotIH0KLSAKLS1PUFRfVEVTVF9ERUNMQVJFX1VTQUdFKCJjZXJ0 LnBlbS4uLlxuIikKLStPUFRfVEVTVF9ERUNMQVJFX1VTQUdFKCJjZXJ0LnBlbSBbY3JsLnBlbV1c biIpCi0gCi0gaW50IHNldHVwX3Rlc3RzKHZvaWQpCi0gewotQEAgLTQ1LDYgKzQ5LDggQEAgaW50 IHNldHVwX3Rlc3RzKHZvaWQpCi0gICAgIGlmIChjaGFpbiA9PSBOVUxMKQotICAgICAgICAgcmV0 dXJuIDA7Ci0gCi0rICAgIGNybCA9IHRlc3RfZ2V0X2FyZ3VtZW50KDEpOwotKwotICAgICBBRERf VEVTVCh0ZXN0X2xvYWRfY2VydF9maWxlKTsKLSAgICAgcmV0dXJuIDE7Ci0gfQotLS0gCi0yLjQ0 LjAKLQoKZGlmZiAtLWdpdCBhLzAxMTktcHJvdmlkZXItc2lnYWxncy1pbi1zaWduYXR1cmVhbGdv cml0aG1zLWNvbmYucGF0Y2ggYi8wMTE5LXByb3ZpZGVyLXNpZ2FsZ3MtaW4tc2lnbmF0dXJlYWxn b3JpdGhtcy1jb25mLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzYzMjIz Li4wMDAwMDAwCi0tLSBhLzAxMTktcHJvdmlkZXItc2lnYWxncy1pbi1zaWduYXR1cmVhbGdvcml0 aG1zLWNvbmYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotRnJvbSBmNWI0 ODYwNDc3OTM2MmM5MWEyMjA4MGI2OTA1NDEzZmJiYTI4Yjc0IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogRG1pdHJ5IEJlbHlhdnNraXkgPGRiZWx5YXZzQHJlZGhhdC5jb20+Ci1EYXRl OiBGcmksIDggTWFyIDIwMjQgMTE6MTg6MTIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCA0OS80OV0g MDExOS1wcm92aWRlci1zaWdhbGdzLWluLXNpZ25hdHVyZWFsZ29yaXRobXMtY29uZi5wYXRjaAot Ci1QYXRjaC1uYW1lOiAwMTE5LXByb3ZpZGVyLXNpZ2FsZ3MtaW4tc2lnbmF0dXJlYWxnb3JpdGht cy1jb25mLnBhdGNoCi1QYXRjaC1pZDogMTE5Ci1QYXRjaC1zdGF0dXM6IHwKLSAgICAjIGh0dHBz Oi8vZ2l0aHViLmNvbS9vcGVuc3NsL29wZW5zc2wvaXNzdWVzLzIyNzc5Ci0tLS0KLSBzc2wvczNf bGliLmMgICAgfCAgOCArKysrLS0tLQotIHNzbC9zc2xfbGliLmMgICB8ICAyICstCi0gc3NsL3Nz bF9sb2NhbC5oIHwgIDIgKy0KLSBzc2wvdDFfbGliLmMgICAgfCA0NSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDQwIGluc2Vy dGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3NsL3MzX2xpYi5jIGIv c3NsL3MzX2xpYi5jCi1pbmRleCBlOGVjOThjMjIxLi40OGExYWEwZTYxIDEwMDY0NAotLS0tIGEv c3NsL3MzX2xpYi5jCi0rKysgYi9zc2wvczNfbGliLmMKLUBAIC0zNjg1LDEzICszNjg1LDEzIEBA IGxvbmcgc3NsM19jdHJsKFNTTCAqcywgaW50IGNtZCwgbG9uZyBsYXJnLCB2b2lkICpwYXJnKQot ICAgICAgICAgcmV0dXJuIHRsczFfc2V0X3NpZ2FsZ3Moc2MtPmNlcnQsIHBhcmcsIGxhcmcsIDAp OwotIAotICAgICBjYXNlIFNTTF9DVFJMX1NFVF9TSUdBTEdTX0xJU1Q6Ci0tICAgICAgICByZXR1 cm4gdGxzMV9zZXRfc2lnYWxnc19saXN0KHNjLT5jZXJ0LCBwYXJnLCAwKTsKLSsgICAgICAgIHJl dHVybiB0bHMxX3NldF9zaWdhbGdzX2xpc3Qocy0+Y3R4LCBzYy0+Y2VydCwgcGFyZywgMCk7Ci0g Ci0gICAgIGNhc2UgU1NMX0NUUkxfU0VUX0NMSUVOVF9TSUdBTEdTOgotICAgICAgICAgcmV0dXJu IHRsczFfc2V0X3NpZ2FsZ3Moc2MtPmNlcnQsIHBhcmcsIGxhcmcsIDEpOwotIAotICAgICBjYXNl IFNTTF9DVFJMX1NFVF9DTElFTlRfU0lHQUxHU19MSVNUOgotLSAgICAgICAgcmV0dXJuIHRsczFf c2V0X3NpZ2FsZ3NfbGlzdChzYy0+Y2VydCwgcGFyZywgMSk7Ci0rICAgICAgICByZXR1cm4gdGxz MV9zZXRfc2lnYWxnc19saXN0KHMtPmN0eCwgc2MtPmNlcnQsIHBhcmcsIDEpOwotIAotICAgICBj YXNlIFNTTF9DVFJMX0dFVF9DTElFTlRfQ0VSVF9UWVBFUzoKLSAgICAgICAgIHsKLUBAIC0zOTY4 LDEzICszOTY4LDEzIEBAIGxvbmcgc3NsM19jdHhfY3RybChTU0xfQ1RYICpjdHgsIGludCBjbWQs IGxvbmcgbGFyZywgdm9pZCAqcGFyZykKLSAgICAgICAgIHJldHVybiB0bHMxX3NldF9zaWdhbGdz KGN0eC0+Y2VydCwgcGFyZywgbGFyZywgMCk7Ci0gCi0gICAgIGNhc2UgU1NMX0NUUkxfU0VUX1NJ R0FMR1NfTElTVDoKLS0gICAgICAgIHJldHVybiB0bHMxX3NldF9zaWdhbGdzX2xpc3QoY3R4LT5j ZXJ0LCBwYXJnLCAwKTsKLSsgICAgICAgIHJldHVybiB0bHMxX3NldF9zaWdhbGdzX2xpc3QoY3R4 LCBjdHgtPmNlcnQsIHBhcmcsIDApOwotIAotICAgICBjYXNlIFNTTF9DVFJMX1NFVF9DTElFTlRf U0lHQUxHUzoKLSAgICAgICAgIHJldHVybiB0bHMxX3NldF9zaWdhbGdzKGN0eC0+Y2VydCwgcGFy ZywgbGFyZywgMSk7Ci0gCi0gICAgIGNhc2UgU1NMX0NUUkxfU0VUX0NMSUVOVF9TSUdBTEdTX0xJ U1Q6Ci0tICAgICAgICByZXR1cm4gdGxzMV9zZXRfc2lnYWxnc19saXN0KGN0eC0+Y2VydCwgcGFy ZywgMSk7Ci0rICAgICAgICByZXR1cm4gdGxzMV9zZXRfc2lnYWxnc19saXN0KGN0eCwgY3R4LT5j ZXJ0LCBwYXJnLCAxKTsKLSAKLSAgICAgY2FzZSBTU0xfQ1RSTF9TRVRfQ0xJRU5UX0NFUlRfVFlQ RVM6Ci0gICAgICAgICByZXR1cm4gc3NsM19zZXRfcmVxX2NlcnRfdHlwZShjdHgtPmNlcnQsIHBh cmcsIGxhcmcpOwotZGlmZiAtLWdpdCBhL3NzbC9zc2xfbGliLmMgYi9zc2wvc3NsX2xpYi5jCi1p bmRleCAxMzI5ODQxYWFmLi40ZDk1YWI3MWNkIDEwMDY0NAotLS0tIGEvc3NsL3NzbF9saWIuYwot KysrIGIvc3NsL3NzbF9saWIuYwotQEAgLTMwNzgsNyArMzA3OCw3IEBAIGxvbmcgU1NMX0NUWF9j dHJsKFNTTF9DVFggKmN0eCwgaW50IGNtZCwgbG9uZyBsYXJnLCB2b2lkICpwYXJnKQotICAgICAg ICAgICAgIHJldHVybiB0bHMxX3NldF9ncm91cHNfbGlzdChjdHgsIE5VTEwsIE5VTEwsIHBhcmcp OwotICAgICAgICAgY2FzZSBTU0xfQ1RSTF9TRVRfU0lHQUxHU19MSVNUOgotICAgICAgICAgY2Fz ZSBTU0xfQ1RSTF9TRVRfQ0xJRU5UX1NJR0FMR1NfTElTVDoKLS0gICAgICAgICAgICByZXR1cm4g dGxzMV9zZXRfc2lnYWxnc19saXN0KE5VTEwsIHBhcmcsIDApOwotKyAgICAgICAgICAgIHJldHVy biB0bHMxX3NldF9zaWdhbGdzX2xpc3QoY3R4LCBOVUxMLCBwYXJnLCAwKTsKLSAgICAgICAgIGRl ZmF1bHQ6Ci0gICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICB9Ci1kaWZmIC0tZ2l0IGEv c3NsL3NzbF9sb2NhbC5oIGIvc3NsL3NzbF9sb2NhbC5oCi1pbmRleCAwZDNhY2ZiZTY2Li5hNzNi MmM0NzcwIDEwMDY0NAotLS0tIGEvc3NsL3NzbF9sb2NhbC5oCi0rKysgYi9zc2wvc3NsX2xvY2Fs LmgKLUBAIC0yNzk2LDcgKzI3OTYsNyBAQCBfX293dXIgaW50IHRsc191c2VfdGlja2V0KFNTTF9D T05ORUNUSU9OICpzKTsKLSAKLSB2b2lkIHNzbF9zZXRfc2lnX21hc2sodWludDMyX3QgKnBtYXNr X2EsIFNTTF9DT05ORUNUSU9OICpzLCBpbnQgb3ApOwotIAotLV9fb3d1ciBpbnQgdGxzMV9zZXRf c2lnYWxnc19saXN0KENFUlQgKmMsIGNvbnN0IGNoYXIgKnN0ciwgaW50IGNsaWVudCk7Ci0rX19v d3VyIGludCB0bHMxX3NldF9zaWdhbGdzX2xpc3QoU1NMX0NUWCAqY3R4LCBDRVJUICpjLCBjb25z dCBjaGFyICpzdHIsIGludCBjbGllbnQpOwotIF9fb3d1ciBpbnQgdGxzMV9zZXRfcmF3X3NpZ2Fs Z3MoQ0VSVCAqYywgY29uc3QgdWludDE2X3QgKnBzaWdzLCBzaXplX3Qgc2FsZ2xlbiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbGllbnQpOwotIF9fb3d1ciBpbnQgdGxz MV9zZXRfc2lnYWxncyhDRVJUICpjLCBjb25zdCBpbnQgKnNhbGcsIHNpemVfdCBzYWxnbGVuLAot ZGlmZiAtLWdpdCBhL3NzbC90MV9saWIuYyBiL3NzbC90MV9saWIuYwotaW5kZXggZmU2ODA0NDlj NS4uODdmMmFlNzAwMCAxMDA2NDQKLS0tLSBhL3NzbC90MV9saWIuYwotKysrIGIvc3NsL3QxX2xp Yi5jCi1AQCAtNzE2LDYgKzcxNiw3IEBAIGludCBzc2xfbG9hZF9zaWdhbGdzKFNTTF9DVFggKmN0 eCkKLSAKLSAgICAgLyogbm93IHBvcHVsYXRlIGN0eC0+c3NsX2NlcnRfaW5mbyAqLwotICAgICBp ZiAoY3R4LT5zaWdhbGdfbGlzdF9sZW4gPiAwKSB7Ci0rICAgICAgICBPUEVOU1NMX2ZyZWUoY3R4 LT5zc2xfY2VydF9pbmZvKTsKLSAgICAgICAgIGN0eC0+c3NsX2NlcnRfaW5mbyA9IE9QRU5TU0xf emFsbG9jKHNpemVvZihsdSkgKiBjdHgtPnNpZ2FsZ19saXN0X2xlbik7Ci0gICAgICAgICBpZiAo Y3R4LT5zc2xfY2VydF9pbmZvID09IE5VTEwpCi0gICAgICAgICAgICAgcmV0dXJuIDA7Ci1AQCAt Mjg4OSw2ICsyODkwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgewotICAgICBzaXplX3Qgc2lnYWxnY250 OwotICAgICAvKiBUTFNFWFRfU0lHQUxHX1hYWCB2YWx1ZXMgKi8KLSAgICAgdWludDE2X3Qgc2ln YWxnc1tUTFNfTUFYX1NJR0FMR0NOVF07Ci0rICAgIFNTTF9DVFggKmN0eDsKLSB9IHNpZ19jYl9z dDsKLSAKLSBzdGF0aWMgdm9pZCBnZXRfc2lnb3JoYXNoKGludCAqcHNpZywgaW50ICpwaGFzaCwg Y29uc3QgY2hhciAqc3RyKQotQEAgLTI5MTMsNyArMjkxNSw4IEBAIHN0YXRpYyB2b2lkIGdldF9z aWdvcmhhc2goaW50ICpwc2lnLCBpbnQgKnBoYXNoLCBjb25zdCBjaGFyICpzdHIpCi0gc3RhdGlj IGludCBzaWdfY2IoY29uc3QgY2hhciAqZWxlbSwgaW50IGxlbiwgdm9pZCAqYXJnKQotIHsKLSAg ICAgc2lnX2NiX3N0ICpzYXJnID0gYXJnOwotLSAgICBzaXplX3QgaTsKLSsgICAgc2l6ZV90IGkg PSAwOwotKyAgICBpbnQgbG9hZF9zdWNjZXNzID0gMDsKLSAgICAgY29uc3QgU0lHQUxHX0xPT0tV UCAqczsKLSAgICAgY2hhciBldG1wW1RMU19NQVhfU0lHU1RSSU5HX0xFTl0sICpwOwotICAgICBp bnQgc2lnX2FsZyA9IE5JRF91bmRlZiwgaGFzaF9hbGcgPSBOSURfdW5kZWY7Ci1AQCAtMjk0Mywx NyArMjk0NiwzNiBAQCBzdGF0aWMgaW50IHNpZ19jYihjb25zdCBjaGFyICplbGVtLCBpbnQgbGVu LCB2b2lkICphcmcpCi0gICAgICAqIGluIHRoZSB0YWJsZS4KLSAgICAgICovCi0gICAgIGlmIChw ID09IE5VTEwpIHsKLS0gICAgICAgIGZvciAoaSA9IDAsIHMgPSBzaWdhbGdfbG9va3VwX3RibDsg aSA8IE9TU0xfTkVMRU0oc2lnYWxnX2xvb2t1cF90YmwpOwotLSAgICAgICAgICAgICBpKyssIHMr KykgewotLSAgICAgICAgICAgIGlmIChzLT5uYW1lICE9IE5VTEwgJiYgc3RyY21wKGV0bXAsIHMt Pm5hbWUpID09IDApIHsKLS0gICAgICAgICAgICAgICAgc2FyZy0+c2lnYWxnc1tzYXJnLT5zaWdh bGdjbnQrK10gPSBzLT5zaWdhbGc7Ci0tICAgICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAg ICAgIH0KLSsgICAgICAgIC8qIExvYWQgcHJvdmlkZXIgc2lnYWxncyAqLwotKyAgICAgICAgaWYg KHNhcmctPmN0eCkgewotKyAgICAgICAgICAgIGxvYWRfc3VjY2VzcyA9IHNzbF9sb2FkX3NpZ2Fs Z3Moc2FyZy0+Y3R4KTsKLSAgICAgICAgIH0KLS0gICAgICAgIGlmIChpID09IE9TU0xfTkVMRU0o c2lnYWxnX2xvb2t1cF90YmwpKSB7Ci0tICAgICAgICAgICAgLyogSWdub3JlIHVua25vd24gYWxn b3JpdGhtcyBpZiBpZ25vcmVfdW5rbm93biAqLwotLSAgICAgICAgICAgIHJldHVybiBpZ25vcmVf dW5rbm93bjsKLSsgICAgICAgIGlmIChsb2FkX3N1Y2Nlc3MpIHsKLSsgICAgICAgICAgICAvKiBD aGVjayBpZiBhIHByb3ZpZGVyIHN1cHBvcnRzIHRoZSBzaWdhbGcgKi8KLSsgICAgICAgICAgICBm b3IgKGkgPSAwOyBpIDwgc2FyZy0+Y3R4LT5zaWdhbGdfbGlzdF9sZW47IGkrKykgewotKyAgICAg ICAgICAgICAgICBpZiAoc2FyZy0+Y3R4LT5zaWdhbGdfbGlzdFtpXS5zaWdhbGdfbmFtZSAhPSBO VUxMCi0rICAgICAgICAgICAgICAgICAgICAmJiBzdHJjbXAoZXRtcCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzYXJnLT5jdHgtPnNpZ2FsZ19saXN0W2ldLnNpZ2FsZ19uYW1lKSA9 PSAwKSB7Ci0rICAgICAgICAgICAgICAgICAgICBzYXJnLT5zaWdhbGdzW3NhcmctPnNpZ2FsZ2Nu dCsrXSA9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhcmctPmN0eC0+c2lnYWxnX2xp c3RbaV0uY29kZV9wb2ludDsKLSsgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAg ICAgICAgICB9Ci0rICAgICAgICAgICAgfQotICAgICAgICAgfQotKyAgICAgICAgLyogQ2hlY2sg dGhlIGJ1aWx0LWluIHNpZ2FsZ3MgKi8KLSsgICAgICAgIGlmICghc2FyZy0+Y3R4IHx8ICFsb2Fk X3N1Y2Nlc3MgfHwgaSA9PSBzYXJnLT5jdHgtPnNpZ2FsZ19saXN0X2xlbikgewotKyAgICAgICAg ICAgIGZvciAoaSA9IDAsIHMgPSBzaWdhbGdfbG9va3VwX3RibDsKLSsgICAgICAgICAgICAgICAg IGkgPCBPU1NMX05FTEVNKHNpZ2FsZ19sb29rdXBfdGJsKTsgaSsrLCBzKyspIHsKLSsgICAgICAg ICAgICAgICAgaWYgKHMtPm5hbWUgIT0gTlVMTCAmJiBzdHJjbXAoZXRtcCwgcy0+bmFtZSkgPT0g MCkgewotKyAgICAgICAgICAgICAgICAgICAgc2FyZy0+c2lnYWxnc1tzYXJnLT5zaWdhbGdjbnQr K10gPSBzLT5zaWdhbGc7Ci0rICAgICAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAg ICAgICAgfQotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBpZiAoaSA9PSBPU1NMX05FTEVN KHNpZ2FsZ19sb29rdXBfdGJsKSkgewotKyAgICAgICAgICAgICAgICAvKiBJZ25vcmUgdW5rbm93 biBhbGdvcml0aG1zIGlmIGlnbm9yZV91bmtub3duICovCi0rICAgICAgICAgICAgICAgIHJldHVy biBpZ25vcmVfdW5rbm93bjsKLSsgICAgICAgICAgICB9Ci0rCX0KLSAgICAgfSBlbHNlIHsKLSAg ICAgICAgICpwID0gMDsKLSAgICAgICAgIHArKzsKLUBAIC0yOTkyLDEwICszMDE0LDExIEBAIHN0 YXRpYyBpbnQgc2lnX2NiKGNvbnN0IGNoYXIgKmVsZW0sIGludCBsZW4sIHZvaWQgKmFyZykKLSAg KiBTZXQgc3VwcG9ydGVkIHNpZ25hdHVyZSBhbGdvcml0aG1zIGJhc2VkIG9uIGEgY29sb24gc2Vw YXJhdGVkIGxpc3Qgb2YgdGhlCi0gICogZm9ybSBzaWcraGFzaCBlLmcuIFJTQStTSEE1MTI6RFNB K1NIQTUxMgotICAqLwotLWludCB0bHMxX3NldF9zaWdhbGdzX2xpc3QoQ0VSVCAqYywgY29uc3Qg Y2hhciAqc3RyLCBpbnQgY2xpZW50KQotK2ludCB0bHMxX3NldF9zaWdhbGdzX2xpc3QoU1NMX0NU WCAqY3R4LCBDRVJUICpjLCBjb25zdCBjaGFyICpzdHIsIGludCBjbGllbnQpCi0gewotICAgICBz aWdfY2Jfc3Qgc2lnOwotICAgICBzaWcuc2lnYWxnY250ID0gMDsKLSsgICAgc2lnLmN0eCA9IGN0 eDsKLSAgICAgaWYgKCFDT05GX3BhcnNlX2xpc3Qoc3RyLCAnOicsIDEsIHNpZ19jYiwgJnNpZykp Ci0gICAgICAgICByZXR1cm4gMDsKLSAgICAgaWYgKHNpZy5zaWdhbGdjbnQgPT0gMCkgewotLS0g Ci0yLjQ0LjAKLQoKZGlmZiAtLWdpdCBhL29wZW5zc2wuc3BlYyBiL29wZW5zc2wuc3BlYwppbmRl eCBmYWRhODhmLi4xMDU1MDk5IDEwMDY0NAotLS0gYS9vcGVuc3NsLnNwZWMKKysrIGIvb3BlbnNz bC5zcGVjCkBAIC0yOCw4ICsyOCw4IEBAIHByaW50KHN0cmluZy5zdWIoaGFzaCwgMCwgMTYpKQog CiBTdW1tYXJ5OiBVdGlsaXRpZXMgZnJvbSB0aGUgZ2VuZXJhbCBwdXJwb3NlIGNyeXB0b2dyYXBo eSBsaWJyYXJ5IHdpdGggVExTIGltcGxlbWVudGF0aW9uCiBOYW1lOiBvcGVuc3NsCi1WZXJzaW9u OiAzLjIuMQotUmVsZWFzZTogMTAlez9kaXN0fQorVmVyc2lvbjogMy4yLjIKK1JlbGVhc2U6IDEl ez9kaXN0fQogRXBvY2g6IDEKIFNvdXJjZTogb3BlbnNzbC0le3ZlcnNpb259LnRhci5negogU291 cmNlMjogTWFrZWZpbGUuY2VydGlmaWNhdGUKQEAgLTExNSw3ICsxMTUsNyBAQCBQYXRjaDc2OiAg MDA3Ni1GSVBTLTE0MC0zLURSQkcucGF0Y2gKICMgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29t L3Nob3dfYnVnLmNnaT9pZD0yMTAyNTQyCiBQYXRjaDc3OiAgMDA3Ny1GSVBTLTE0MC0zLXplcm9p emF0aW9uLnBhdGNoCiAjIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/ aWQ9MjExNDc3MgotUGF0Y2g3ODogIDAwNzgtQWRkLUZJUFMtaW5kaWNhdG9yLXBhcmFtZXRlci10 by1IS0RGLnBhdGNoCitQYXRjaDc4OiAgMDA3OC1LREYtQWRkLUZJUFMtaW5kaWNhdG9ycy5wYXRj aAogIyBXZSBiZWxpZXZlIHRoYXQgc29tZSBjaGFuZ2VzIHByZXNlbnQgaW4gQ2VudE9TIGFyZSBu b3QgbmVjZXNzYXJ5CiAjIGJlY2F1c2UgdXN0cmVhbSBoYXMgYSBjaGVjayBmb3IgRklQUyB2ZXJz aW9uCiBQYXRjaDgwOiAgMDA4MC1yYW5kLUZvcmJpZC10cnVuY2F0ZWQtaGFzaGVzLVNIQS0zLWlu LUZJUFMtcHJvdi5wYXRjaApAQCAtMTQ5LDEwICsxNDksNiBAQCBQYXRjaDExNTogMDExNS1za2lw LXF1aWMtcGFpcndpc2UucGF0Y2gKIFBhdGNoMTE2OiAwMTE2LXZlcnNpb24tYWxpYXNpbmcucGF0 Y2gKICMgaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2wvb3BlbnNzbC9pc3N1ZXMvMjMwNTAKIFBh dGNoMTE3OiAwMTE3LWlnbm9yZS11bmtub3duLXNpZ2FsZ29yaXRobXMtZ3JvdXBzLnBhdGNoCi0j IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NsL29wZW5zc2wvaXNzdWVzLzIzNzcwCi1QYXRjaDEx ODogMDExOC1uby1jcmwtbWVtbGVhay5wYXRjaAotIyBodHRwczovL2dpdGh1Yi5jb20vb3BlbnNz bC9vcGVuc3NsL2lzc3Vlcy8yMjc3OQotUGF0Y2gxMTk6IDAxMTktcHJvdmlkZXItc2lnYWxncy1p bi1zaWduYXR1cmVhbGdvcml0aG1zLWNvbmYucGF0Y2gKICMgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0 Lm9yZy93aWtpL0NoYW5nZXMvT3BlblNTTERpc3RydXN0U0hBMVNpZ1ZlcgogUGF0Y2gxMjA6IDAx MjAtQWxsb3ctZGlzYWJsaW5nLW9mLVNIQTEtc2lnbmF0dXJlcy5wYXRjaAogIyBGcm9tIENlbnRP UyA5CkBAIC01MDksNiArNTA1LDkgQEAgbG4gLXMgL2V0Yy9jcnlwdG8tcG9saWNpZXMvYmFjay1l bmRzL29wZW5zc2xfZmlwcy5jb25maWcgJFJQTV9CVUlMRF9ST09UJXtfc3lzY28KICVsZGNvbmZp Z19zY3JpcHRsZXRzIGxpYnMKIAogJWNoYW5nZWxvZworKiBUaHUgSnVuIDA2IDIwMjQgRG1pdHJ5 IEJlbHlhdnNraXkgPGRiZWx5YXZzQHJlZGhhdC5jb20+IC0gMTozLjIuMi0xCistIFJlYmFzZSB0 byAzLjIuMgorCiAqIFdlZCBKdW4gMDUgMjAyNCBZYWFrb3YgU2Vsa293aXR6IDx5c2Vsa293aUBy ZWRoYXQuY29tPiAtIDE6My4yLjEtMTAKIC0gRG8gbm90IHJlcXVpcmUgb3BlbnNzbC1maXBzLXBy b3ZpZGVyIG9uIEVMTgogCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggMjFk NjZkMS4uNmQzZGM5NiAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xICsx IEBACi1TSEE1MTIgKG9wZW5zc2wtMy4yLjEudGFyLmd6KSA9IDI5ZWE3NTk2NGY3OGVmNWJiZTU3 ODNlZDYwZDMyOTE3NDA4YWU0Y2I3ZDRhZWNkYmJmMjI4MGJmZGJjMjYwYzdjYmFiYmMwM2JkMTc5 ZmM5OTRmYmVlODVjZWJjNzIxM2VlYjViZmNkZTVjMjJkYjVlODNlZGYyY2ViZTcxMTNmCitTSEE1 MTIgKG9wZW5zc2wtMy4yLjIudGFyLmd6KSA9IGViYzk0NTA2NWY2MmE4YTJlYTRlMmYxMzZhMmFm YWVhNGQzOGEwM2JiMDdhMTQ4ZjdmYjczYzM0YTY0NDc1YTQwNjlkZTEyMmViZWUxMWE2NmU0MjFk YmQ1ODc1NmFkN2FiMmQzZjkwNWRjOTBhY2VlNzJkNjI3NTdkOGMwYTJkCg==