Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v2ngL-007YX2-My for pgsql-hackers@arkaria.postgresql.org; Sun, 28 Sep 2025 09:27:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1v2ngI-00Dy4C-Tv for pgsql-hackers@arkaria.postgresql.org; Sun, 28 Sep 2025 09:26:59 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v2ngI-00Dy42-2O for pgsql-hackers@lists.postgresql.org; Sun, 28 Sep 2025 09:26:58 +0000 Received: from mail-vk1-xa2e.google.com ([2607:f8b0:4864:20::a2e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v2ngE-000WX9-1k for pgsql-hackers@postgresql.org; Sun, 28 Sep 2025 09:26:58 +0000 Received: by mail-vk1-xa2e.google.com with SMTP id 71dfb90a1353d-54bd3158f7bso2667459e0c.0 for ; Sun, 28 Sep 2025 02:26:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759051613; x=1759656413; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=FPw6i1ujK5rnsOYUZvQdrcG46UA1lbV93crEVV0Wx38=; b=kHosNAk2/Ct7N68TCejOICbFogFXFI3NpdpD0GH0+usAo+DEKjn1oT44A7gDWykTKh shXF2kDx7C6ipQCZRa2tJnSNlF5bntZyGUiFBDmHly5ReQZ6uGGAzTL5DhkbHZRQIIKH rEBJ7ysm7Z2YpH1J2hK0JHRln7kqJXCbKzLPuxwWgZMwXNGIQCGGUoXMJfXnSnc5XPb+ JfxMTJYSkbqFUUMRBzMbGjdUyJEJeH7AJOgMlBeuE2WhKM6Wkfv/cJw0j86Z+GB0/geW HQq9+U5pMyU9JH09L3IR13OFUF2VStjqijE24V6+rwGq3en8mvfRzg/H+C9A4na1TyAl opQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759051613; x=1759656413; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=FPw6i1ujK5rnsOYUZvQdrcG46UA1lbV93crEVV0Wx38=; b=IYLICN2ePwh47NXJI+wJOKyXYrwGqDfBnB0zjiuY8aImj9n9vMk9duG+Zt4rb/Jaac hhZa49jZghYjBetGb+KWdtpOEjF3DJ/5eDX9r4BcesnbrdhDfisPJFtpUrynsos87l3f oJ0HDHcy3Uln/VOQBEtby4Tzzt+T7q9mZTZCYJhEaFrOg4/Zw49an0Yav6IhowSreFtz 6sxeks3R7pXzgJLj+3IhnI68rFL7xMmbVd+aQFcCtq53untdFsKhMYerIEb3PYVMqEd5 O2uqjoLkfhP4Tp7LUW+kShy5T3we/5mfUHPiEqQ6eKHlLJq0g/kEYoEDedaVIMaFgj3u oVSA== X-Forwarded-Encrypted: i=1; AJvYcCUAcWvx/yZqoej72Xyq85EmUvdgRB0A04iTQs5w9Pii4i/l2j0rklCaf7rLyA1Bwn0ndqGoNb/EKL+RaRm8@postgresql.org X-Gm-Message-State: AOJu0YybbcLcicNW4Q4M46wwHMTApi5LOPBAHEzuJqCRstNsLJd3jsuj 2UAfQZaXFWAzKlSMWRNXdRNWTdeif6QFn3tRWMsrVLpi6g40CmaXUU7husTS3EPH2mNpgJQxwOp NnaGtWfgFCq/9y41z/ln/KCORP16mBs8= X-Gm-Gg: ASbGnculSZdIakuwYkqfXHjA5c6Yoqwy6DB7xwdUn7b0lD5iZljBuXClRfq3uGhTyLv znIRs0kv2UCOQEBwAOck0tvJ8ekN+3KiXHQVZiTT64iKVPha6JQBe7pzK1/6UB2L3JJS+6j15hT aB6hrnGivkAH0KpgktUNLuhv0hogRP7IoylT/RFuUSvfmlH4DCq9hpgv3gTa3W3qGUWDV8ZKMP+ li58Td5v8fWo3NVoZfC7u5v0/h3fW2PjjgYVqs0DBA9sQw36OnTyf3eLwmPyZs= X-Google-Smtp-Source: AGHT+IGPWuyoh8UTUtoYp/qcLay87VzzFHUu6VxZvMzsvyrfInbsQ5N9snc5hqSldoegBjYdx++U686lOuXXNKG5sCA= X-Received: by 2002:a05:6122:1806:b0:54a:8ad7:59eb with SMTP id 71dfb90a1353d-54bea2f50b1mr5529532e0c.9.1759051612765; Sun, 28 Sep 2025 02:26:52 -0700 (PDT) MIME-Version: 1.0 References: <202505181556.3n6oiowvntyr@alvherre.pgsql> In-Reply-To: From: Mihail Nikalayeu Date: Sun, 28 Sep 2025 11:26:00 +0200 X-Gm-Features: AS18NWCBtsyDUDUeQMZs2O-woUKY2z2fotPsA8bIPd4yV9iiGG5F6gIb5enTTMY Message-ID: Subject: Re: Revisiting {CREATE INDEX, REINDEX} CONCURRENTLY improvements To: Sergey Sargsyan Cc: =?UTF-8?Q?=C3=81lvaro_Herrera?= , Andres Freund , Michael Paquier , PostgreSQL Hackers , Andrey Borodin , Melanie Plageman , Matthias van de Meent Content-Type: multipart/mixed; boundary="000000000000857292063fd91e50" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000857292063fd91e50 Content-Type: text/plain; charset="UTF-8" Hello, everyone! Rebased, patch structure and comments available here [0]. Quick introduction poster - here [1]. [0]: https://www.postgresql.org/message-id/flat/CADzfLwVOcZ9mg8gOG%2BKXWurt%3DMHRcqNv3XSECYoXyM3ENrxyfQ%40mail.gmail.com#52c97e004b8f628473124c05e3bf2da1 [1]: https://www.postgresql.org/message-id/attachment/176651/STIR-poster.pdf Best regards, Mikhail. --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="nocfbot-v24-only-part-3-0005-Optimize-auxiliary-index-handling.patch" Content-Disposition: attachment; filename="nocfbot-v24-only-part-3-0005-Optimize-auxiliary-index-handling.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm0m4 RnJvbSAxYjFjZTcyODZjMTcyMDcwYjRhMWQwZDU4NTIyZjk4ZWU3YjBlNDg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAzMCBEZWMgMjAyNCAxNjozNzoxMiArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI0LW9ubHktcGFydC0zIDUvNl0gT3B0aW1pemUgYXV4aWxpYXJ5IGluZGV4IGhhbmRs aW5nCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1V VEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpTa2lwIHVubmVjZXNzYXJ5IGNv bXB1dGF0aW9ucyBmb3IgYXV4aWxpYXJ5IGluZGljZXMgYnk6Ci0gaW4gdGhlIGluZGV44oCQaW5z ZXJ0IHBhdGgsIGRldGVjdCBhdXhpbGlhcnkgaW5kZXhlcyBhbmQgYnlwYXNzIERhdHVtIHZhbHVl IGNvbXB1dGF0aW9uCi0gc2V0IGluZGV4VW5jaGFuZ2VkPWZhbHNlIGZvciBhdXhpbGlhcnkgaW5k aWNlcyB0byBhdm9pZCByZWR1bmRhbnQgY2hlY2tzCgpUaGVzZSBvcHRpbWl6YXRpb25zIHJlZHVj ZSBvdmVyaGVhZCBkdXJpbmcgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25zLgotLS0KIHNyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgIHwgMTEgKysrKysrKysrKysKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIHwgMTEgKysrKysrKy0tLS0KIDIgZmlsZXMgY2hh bmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5k ZXggOTk3ODE5MmYyZDguLjk3NmU0ZDZlOTgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0yOTE2LDYg KzI5MTYsMTcgQEAgRm9ybUluZGV4RGF0dW0oSW5kZXhJbmZvICppbmRleEluZm8sCiAJTGlzdENl bGwgICAqaW5kZXhwcl9pdGVtOwogCWludAkJCWk7CiAKKwkvKiBBdXhpbGlhcnkgaW5kZXggZG9l cyBub3QgbmVlZCBhbnkgdmFsdWVzIHRvIGJlIGNvbXB1dGVkICovCisJaWYgKHVubGlrZWx5KGlu ZGV4SW5mby0+aWlfQXV4aWxpYXJ5KSkKKwl7CisJCWZvciAoaSA9IDA7IGkgPCBpbmRleEluZm8t PmlpX051bUluZGV4QXR0cnM7IGkrKykKKwkJeworCQkJdmFsdWVzW2ldID0gUG9pbnRlckdldERh dHVtKE5VTEwpOworCQkJaXNudWxsW2ldID0gdHJ1ZTsKKwkJfQorCQlyZXR1cm47CisJfQorCiAJ aWYgKGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMgIT0gTklMICYmCiAJCWluZGV4SW5mby0+aWlf RXhwcmVzc2lvbnNTdGF0ZSA9PSBOSUwpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0luZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcu YwppbmRleCAwZWRmNTRlODUyZC4uMDliOWI4MTFkZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jCkBAIC00NDAsMTEgKzQ0MCwxNCBAQCBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJICogVGhlcmUncyBkZWZpbml0ZWx5IGdvaW5n IHRvIGJlIGFuIGluZGV4X2luc2VydCgpIGNhbGwgZm9yIHRoaXMKIAkJICogaW5kZXguICBJZiB3 ZSdyZSBiZWluZyBjYWxsZWQgYXMgcGFydCBvZiBhbiBVUERBVEUgc3RhdGVtZW50LAogCQkgKiBj b25zaWRlciBpZiB0aGUgJ2luZGV4VW5jaGFuZ2VkJyA9IHRydWUgaGludCBzaG91bGQgYmUgcGFz c2VkLgorCQkgKgorCQkgKiBJbiBjYXNlIG9mIGF1eGlsaWFyeSBpbmRleCBhbHdheXMgcGFzcyBm YWxzZSBhcyBvcHRpbWlzYXRpb24uCiAJCSAqLwotCQlpbmRleFVuY2hhbmdlZCA9IHVwZGF0ZSAm JiBpbmRleF91bmNoYW5nZWRfYnlfdXBkYXRlKHJlc3VsdFJlbEluZm8sCi0JCQkJCQkJCQkJCQkJ CQkgZXN0YXRlLAotCQkJCQkJCQkJCQkJCQkJIGluZGV4SW5mbywKLQkJCQkJCQkJCQkJCQkJCSBp bmRleFJlbGF0aW9uKTsKKwkJaW5kZXhVbmNoYW5nZWQgPSB1cGRhdGUgJiYgbGlrZWx5KCFpbmRl eEluZm8tPmlpX0F1eGlsaWFyeSkgJiYKKwkJCQkJCQkJCWluZGV4X3VuY2hhbmdlZF9ieV91cGRh dGUocmVzdWx0UmVsSW5mbywKKwkJCQkJCQkJCQkJCQkJCSAgZXN0YXRlLAorCQkJCQkJCQkJCQkJ CQkJICBpbmRleEluZm8sCisJCQkJCQkJCQkJCQkJCQkgIGluZGV4UmVsYXRpb24pOwogCiAJCXNh dGlzZmllc0NvbnN0cmFpbnQgPQogCQkJaW5kZXhfaW5zZXJ0KGluZGV4UmVsYXRpb24sIC8qIGlu ZGV4IHJlbGF0aW9uICovCi0tIAoyLjQzLjAKCg== --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="nocfbot-v24-only-part-3-0001-Add-STIR-access-method-and-flags-rel.patch" Content-Disposition: attachment; filename="nocfbot-v24-only-part-3-0001-Add-STIR-access-method-and-flags-rel.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm090 RnJvbSA5NzVjMWMxNGUzN2RhYmI2MGNhZDI4M2M1OGE0NDZkMjdlNGIxOWQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAyMSBEZWMgMjAyNCAxODozNjoxMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI0LW9ubHktcGFydC0zIDEvNl0gQWRkIFNUSVIgYWNjZXNzIG1ldGhvZCBhbmQgZmxh Z3MgcmVsYXRlZAogdG8gYXV4aWxpYXJ5IGluZGV4ZXMKClRoaXMgcGF0Y2ggcHJvdmlkZXMgaW5m cmFzdHJ1Y3R1cmUgZm9yIGZvbGxvd2luZyBlbmhhbmNlbWVudHMgdG8gY29uY3VycmVudCBpbmRl eCBidWlsZHMgYnk6Ci0gaWlfQXV4aWxpYXJ5IGluIEluZGV4SW5mbzogaW5kaWNhdGVzIHRoYXQg YW4gaW5kZXggaXMgYW4gYXV4aWxpYXJ5IGluZGV4IHVzZWQgZHVyaW5nIGNvbmN1cnJlbnQgaW5k ZXggYnVpbGQKLSB2YWxpZGF0ZV9pbmRleCBpbiBJbmRleFZhY3V1bUluZm86IHNldCBpZiBpbmRl eF9idWxrX2RlbGV0ZSBjYWxsZWQgZHVyaW5nIHRoZSB2YWxpZGF0aW9uIHBoYXNlIG9mIGNvbmN1 cnJlbnQgaW5kZXggYnVpbGQKLSBTVElSKFNob3J0LVRlcm0gSW5kZXggUmVwbGFjZW1lbnQpIGFj Y2VzcyBtZXRob2QgaXMgaW50cm9kdWNlZCwgaW50ZW5kZWQgc29sZWx5IGZvciBzaG9ydC1saXZl ZCwgYXV4aWxpYXJ5IHVzYWdlCgpTVElSIGZ1bmN0aW9ucyBkZXNpZ25lZCBhcyBhbiBlcGhlbWVy YWwgaGVscGVyIGR1cmluZyBjb25jdXJyZW50IGluZGV4IGJ1aWxkcywgdGVtcG9yYXJpbHkgc3Rv cmluZyBUSURzIHdpdGhvdXQgcHJvdmlkaW5nIHRoZSBmdWxsIGZlYXR1cmVzIG9mIGEgdHlwaWNh bCBhY2Nlc3MgbWV0aG9kLiBBcyBzdWNoLCBpdCByYWlzZXMgd2FybmluZ3Mgb3IgZXJyb3JzIHdo ZW4gYWNjZXNzZWQgb3V0c2lkZSBpdHMgc3BlY2lhbGl6ZWQgdXNhZ2UgcGF0aC4KClBsYW5uZWQg dG8gYmUgdXNlZCBpbiBmb2xsb3dpbmcgY29tbWl0cy4KLS0tCiBjb250cmliL3Bnc3RhdHR1cGxl L3Bnc3RhdHR1cGxlLmMgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmls ZSAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYyAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZSAgICAgICAgIHwgIDE4 ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29uLmJ1aWxkICAgICAgfCAgIDUgKwogc3Jj L2JhY2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5jICAgICAgICAgICB8IDU4MSArKysrKysrKysrKysr KysrKysrKysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAgICAgICAgIHwgICAxICsKIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tl bmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9ub2Rl cy9tYWtlZnVuY3MuYyAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9nZW5h bS5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMu aCAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaCAgICAgICAgICAg ICAgICB8IDExNyArKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5kYXQgICAgICAgICAg ICB8ICAgMyArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0ICAgICAgIHwgICA0 ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1pbHkuZGF0ICAgICAgfCAgIDIgKwogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgIHwgICA3ICstCiBzcmMvaW5jbHVkZS91dGls cy9pbmRleF9zZWxmdW5jcy5oICAgICAgIHwgICA4ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvYW11dGlscy5vdXQgICAgfCAgIDggKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3By X3Nhbml0eS5vdXQgfCAgIDcgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQg ICAgICAgfCAgMjQgKy0KIDI0IGZpbGVzIGNoYW5nZWQsIDc4NiBpbnNlcnRpb25zKCspLCAxOSBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9N YWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29u LmJ1aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaAoKZGlmZiAtLWdp dCBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYyBiL2NvbnRyaWIvcGdzdGF0dHVw bGUvcGdzdGF0dHVwbGUuYwppbmRleCBiNWRlNjhiNzIzMi4uNmJmZDE5MDYwNWIgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYworKysgYi9jb250cmliL3Bnc3Rh dHR1cGxlL3Bnc3RhdHR1cGxlLmMKQEAgLTI4NSw2ICsyODUsOSBAQCBwZ3N0YXRfcmVsYXRpb24o UmVsYXRpb24gcmVsLCBGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKIAkJCWNhc2UgU1BHSVNUX0FN X09JRDoKIAkJCQllcnIgPSAic3BnaXN0IGluZGV4IjsKIAkJCQlicmVhazsKKwkJCWNhc2UgU1RJ Ul9BTV9PSUQ6CisJCQkJZXJyID0gInN0aXIgaW5kZXgiOworCQkJCWJyZWFrOwogCQkJY2FzZSBC UklOX0FNX09JRDoKIAkJCQllcnIgPSAiYnJpbiBpbmRleCI7CiAJCQkJYnJlYWs7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9hY2Nlc3MvTWFr ZWZpbGUKaW5kZXggMTkzMmQxMWQxNTQuLmNkNjUyNGE1NGFiIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL01ha2VmaWxlCkBA IC05LDYgKzksNiBAQCB0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgogaW5jbHVkZSAkKHRvcF9idWls ZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCiBTVUJESVJTCSAgICA9IGJyaW4gY29tbW9uIGdp biBnaXN0IGhhc2ggaGVhcCBpbmRleCBuYnRyZWUgcm1ncmRlc2Mgc3BnaXN0IFwKLQkJCSAgc2Vx dWVuY2UgdGFibGUgdGFibGVzYW1wbGUgdHJhbnNhbQorCQkJICBzdGlyIHNlcXVlbmNlIHRhYmxl IHRhYmxlc2FtcGxlIHRyYW5zYW0KIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5k L2NvbW1vbi5tawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDk4MWQ5Mzgw YTkyLi5kMDI3NmJmNDgzYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAt MzA4Nyw2ICszMDg3LDcgQEAgbGF6eV92YWN1dW1fb25lX2luZGV4KFJlbGF0aW9uIGluZHJlbCwg SW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAlpdmluZm8ubWVzc2FnZV9sZXZlbCA9IERF QlVHMjsKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCWl2aW5mby5zdHJh dGVneSA9IHZhY3JlbC0+YnN0cmF0ZWd5OworCWl2aW5mby52YWxpZGF0ZV9pbmRleCA9IGZhbHNl OwogCiAJLyoKIAkgKiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNrIGluZm9ybWF0aW9uLgpAQCAtMzEz OCw2ICszMTM5LDcgQEAgbGF6eV9jbGVhbnVwX29uZV9pbmRleChSZWxhdGlvbiBpbmRyZWwsIElu ZGV4QnVsa0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiAKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0g cmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IHZhY3JlbC0+YnN0cmF0ZWd5OworCWl2aW5m by52YWxpZGF0ZV9pbmRleCA9IGZhbHNlOwogCiAJLyoKIAkgKiBVcGRhdGUgZXJyb3IgdHJhY2Vi YWNrIGluZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1 aWxkIGIvc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkCmluZGV4IDdhMmQwZGRiNjg5Li5h MTU2Y2RkZmYzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5idWlsZApAQCAtMTEsNiArMTEsNyBAQCBzdWJk aXIoJ25idHJlZScpCiBzdWJkaXIoJ3JtZ3JkZXNjJykKIHN1YmRpcignc2VxdWVuY2UnKQogc3Vi ZGlyKCdzcGdpc3QnKQorc3ViZGlyKCdzdGlyJykKIHN1YmRpcigndGFibGUnKQogc3ViZGlyKCd0 YWJsZXNhbXBsZScpCiBzdWJkaXIoJ3RyYW5zYW0nKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3N0aXIvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmFlNTg5OGI4ZDcKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZQpAQCAtMCwwICsx LDE4IEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBNYWtlZmlsZS0tCisjICAgIE1ha2VmaWxl IGZvciBhY2Nlc3Mvc3RpcgorIworIyBJREVOVElGSUNBVElPTgorIyAgICBzcmMvYmFja2VuZC9h Y2Nlc3Mvc3Rpci9NYWtlZmlsZQorIworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3ViZGlyID0gc3Jj L2JhY2tlbmQvYWNjZXNzL3N0aXIKK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uLy4uCitpbmNsdWRl ICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCisKK09CSlMgPSBcCisJc3Rpci5v CisKK2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9jb21tb24ubWsKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9t ZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29uLmJ1aWxkCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zOWM2ZWNhODQ4ZAotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsNSBA QAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisKK2JhY2tlbmRfc291cmNlcyArPSBmaWxlcygKKwknc3Rpci5jJywKKykKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9z dGlyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJlMDgzZDk1MmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5jCkBAIC0wLDAgKzEsNTgxIEBACisvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCisgKiBzdGlyLmMKKyAqCSAgSW1wbGVtZW50YXRpb24gb2YgU2hvcnQtVGVy bSBJbmRleCBSZXBsYWNlbWVudC4KKyAqCisgKiBTVElSIGlzIGEgc3BlY2lhbGl6ZWQgYWNjZXNz IG1ldGhvZCB0eXBlIGRlc2lnbmVkIGZvciB0ZW1wb3Jhcnkgc3RvcmFnZQorICogb2YgVElEIHZh bHVlcyBkdXJpbmcgY29uY3VyZXJudCBpbmRleCBidWlsZCBvcGVyYXRpb25zLgorICoKKyAqIFRo ZSB0eXBpY2FsIGxpZmVjeWNsZSBvZiBhIFNUSVIgaW5kZXggaXM6CisgKiAxLiBjcmVhdGVkIGFz IGFuIGF1eGlsaWFyeSBpbmRleCBmb3IgQ0lDL1JJQworICogMi4gYWNjZXB0cyBpbnNlcnRzIGZv ciBhIHBlcmlvZAorICogMy4gc3RpcmJ1bGtkZWxldGUgY2FsbGVkIGR1cmluZyBpbmRleCB2YWxp ZGF0aW9uIHBoYXNlCisgKiA1LiBnZXRzIGRyb3BwZWQKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICog SURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5jCisgKgor ICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVk ZSAiYWNjZXNzL3N0aXIuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJhY2Nl c3MvYW12YWxpZGF0ZS5oIgorI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNs dWRlICJhY2Nlc3MvdGFibGVhbS5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX2Ftb3AuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvdmFj dXVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9jYXRj YWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKKyNpbmNsdWRlICJ1dGlscy9p bmRleF9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAi dXRpbHMvcmVncHJvYy5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKy8qCisgKiBT dGlyIGhhbmRsZXIgZnVuY3Rpb246IHJldHVybiBJbmRleEFtUm91dGluZSB3aXRoIGFjY2VzcyBt ZXRob2QgcGFyYW1ldGVycworICogYW5kIGNhbGxiYWNrcy4KKyAqLworRGF0dW0KK3N0aXJoYW5k bGVyKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJSW5kZXhBbVJvdXRpbmUgKmFtcm91dGluZSA9IG1h a2VOb2RlKEluZGV4QW1Sb3V0aW5lKTsKKworCS8qIFNldCBTVElSLXNwZWNpZmljIHN0cmF0ZWd5 IGFuZCBwcm9jZWR1cmUgbnVtYmVycyAqLworCWFtcm91dGluZS0+YW1zdHJhdGVnaWVzID0gU1RJ Ul9OU1RSQVRFR0lFUzsKKwlhbXJvdXRpbmUtPmFtc3VwcG9ydCA9IFNUSVJfTlBST0M7CisJYW1y b3V0aW5lLT5hbW9wdHNwcm9jbnVtID0gU1RJUl9PUFRJT05TX1BST0M7CisKKwkvKiBTVElSIGRv ZXNuJ3Qgc3VwcG9ydCBtb3N0IGluZGV4IG9wZXJhdGlvbnMgKi8KKwlhbXJvdXRpbmUtPmFtY2Fu b3JkZXIgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2Fub3JkZXJieW9wID0gZmFsc2U7CisJYW1y b3V0aW5lLT5hbWNhbmJhY2t3YXJkID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNhbnVuaXF1ZSA9 IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5tdWx0aWNvbCA9IHRydWU7CisJYW1yb3V0aW5lLT5h bW9wdGlvbmFsa2V5ID0gdHJ1ZTsKKwlhbXJvdXRpbmUtPmFtc2VhcmNoYXJyYXkgPSBmYWxzZTsK KwlhbXJvdXRpbmUtPmFtc2VhcmNobnVsbHMgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtc3RvcmFn ZSA9IGZhbHNlOworCWFtcm91dGluZS0+YW1jbHVzdGVyYWJsZSA9IGZhbHNlOworCWFtcm91dGlu ZS0+YW1wcmVkbG9ja3MgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2FucGFyYWxsZWwgPSBmYWxz ZTsKKwlhbXJvdXRpbmUtPmFtY2FuYnVpbGRwYXJhbGxlbCA9IGZhbHNlOworCWFtcm91dGluZS0+ YW1jYW5pbmNsdWRlID0gdHJ1ZTsKKwlhbXJvdXRpbmUtPmFtdXNlbWFpbnRlbmFuY2V3b3JrbWVt ID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbXBhcmFsbGVsdmFjdXVtb3B0aW9ucyA9CisJCQlWQUNV VU1fT1BUSU9OX1BBUkFMTEVMX0JVTEtERUwgfCBWQUNVVU1fT1BUSU9OX1BBUkFMTEVMX0NMRUFO VVA7CisJYW1yb3V0aW5lLT5hbWtleXR5cGUgPSBJbnZhbGlkT2lkOworCisJLyogU2V0IHVwIGZ1 bmN0aW9uIGNhbGxiYWNrcyAqLworCWFtcm91dGluZS0+YW1idWlsZCA9IHN0aXJidWlsZDsKKwlh bXJvdXRpbmUtPmFtYnVpbGRlbXB0eSA9IHN0aXJidWlsZGVtcHR5OworCWFtcm91dGluZS0+YW1p bnNlcnQgPSBzdGlyaW5zZXJ0OworCWFtcm91dGluZS0+YW1pbnNlcnRjbGVhbnVwID0gTlVMTDsK KwlhbXJvdXRpbmUtPmFtYnVsa2RlbGV0ZSA9IHN0aXJidWxrZGVsZXRlOworCWFtcm91dGluZS0+ YW12YWN1dW1jbGVhbnVwID0gc3RpcnZhY3V1bWNsZWFudXA7CisJYW1yb3V0aW5lLT5hbWNhbnJl dHVybiA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWNvc3Rlc3RpbWF0ZSA9IHN0aXJjb3N0ZXN0aW1h dGU7CisJYW1yb3V0aW5lLT5hbW9wdGlvbnMgPSBzdGlyb3B0aW9uczsKKwlhbXJvdXRpbmUtPmFt cHJvcGVydHkgPSBOVUxMOworCWFtcm91dGluZS0+YW1idWlsZHBoYXNlbmFtZSA9IE5VTEw7CisJ YW1yb3V0aW5lLT5hbXZhbGlkYXRlID0gc3RpcnZhbGlkYXRlOworCWFtcm91dGluZS0+YW1hZGp1 c3RtZW1iZXJzID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtYmVnaW5zY2FuID0gc3RpcmJlZ2luc2Nh bjsKKwlhbXJvdXRpbmUtPmFtcmVzY2FuID0gc3RpcnJlc2NhbjsKKwlhbXJvdXRpbmUtPmFtZ2V0 dHVwbGUgPSBOVUxMOworCWFtcm91dGluZS0+YW1nZXRiaXRtYXAgPSBOVUxMOworCWFtcm91dGlu ZS0+YW1lbmRzY2FuID0gc3RpcmVuZHNjYW47CisJYW1yb3V0aW5lLT5hbW1hcmtwb3MgPSBOVUxM OworCWFtcm91dGluZS0+YW1yZXN0cnBvcyA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWVzdGltYXRl cGFyYWxsZWxzY2FuID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtaW5pdHBhcmFsbGVsc2NhbiA9IE5V TEw7CisJYW1yb3V0aW5lLT5hbXBhcmFsbGVscmVzY2FuID0gTlVMTDsKKworCVBHX1JFVFVSTl9Q T0lOVEVSKGFtcm91dGluZSk7Cit9CisKKy8qCisgKiBWYWxpZGF0ZXMgb3BlcmF0b3IgY2xhc3Mg Zm9yIFNUSVIgaW5kZXguCisgKgorICogU1RJUiBpcyBub3QgYW4gcmVhbCBpbmRleCwgc28gdmFs aWRhdGlvIG1heSBiZSBza2lwcGVkLgorICogQnV0IHdlIGRvIGl0IGp1c3QgZm9yIGNvbnNpc3Rl bmN5LgorICovCitib29sCitzdGlydmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCit7CisJYm9vbCBy ZXN1bHQgPSB0cnVlOworCUhlYXBUdXBsZSBjbGFzc3R1cDsKKwlGb3JtX3BnX29wY2xhc3MgY2xh c3Nmb3JtOworCU9pZCBvcGZhbWlseW9pZDsKKwlIZWFwVHVwbGUgZmFtaWx5dHVwOworCUZvcm1f cGdfb3BmYW1pbHkgZmFtaWx5Zm9ybTsKKwljaGFyICpvcGZhbWlseW5hbWU7CisJQ2F0Q0xpc3Qg KnByb2NsaXN0LAorCQkJKm9wcmxpc3Q7CisJaW50IGk7CisKKwkvKiBGZXRjaCBvcGNsYXNzIGlu Zm9ybWF0aW9uICovCisJY2xhc3N0dXAgPSBTZWFyY2hTeXNDYWNoZTEoQ0xBT0lELCBPYmplY3RJ ZEdldERhdHVtKG9wY2xhc3NvaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY2xhc3N0dXAp KQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BlcmF0b3IgY2xhc3Mg JXUiLCBvcGNsYXNzb2lkKTsKKwljbGFzc2Zvcm0gPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJV Q1QoY2xhc3N0dXApOworCisJb3BmYW1pbHlvaWQgPSBjbGFzc2Zvcm0tPm9wY2ZhbWlseTsKKwor CisJLyogRmV0Y2ggb3BmYW1pbHkgaW5mb3JtYXRpb24gKi8KKwlmYW1pbHl0dXAgPSBTZWFyY2hT eXNDYWNoZTEoT1BGQU1JTFlPSUQsIE9iamVjdElkR2V0RGF0dW0ob3BmYW1pbHlvaWQpKTsKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQoZmFtaWx5dHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIG9wZXJhdG9yIGZhbWlseSAldSIsIG9wZmFtaWx5b2lkKTsKKwlmYW1p bHlmb3JtID0gKEZvcm1fcGdfb3BmYW1pbHkpIEdFVFNUUlVDVChmYW1pbHl0dXApOworCisJb3Bm YW1pbHluYW1lID0gTmFtZVN0cihmYW1pbHlmb3JtLT5vcGZuYW1lKTsKKworCS8qIEZldGNoIGFs bCBvcGVyYXRvcnMgYW5kIHN1cHBvcnQgZnVuY3Rpb25zIG9mIHRoZSBvcGZhbWlseSAqLworCW9w cmxpc3QgPSBTZWFyY2hTeXNDYWNoZUxpc3QxKEFNT1BTVFJBVEVHWSwgT2JqZWN0SWRHZXREYXR1 bShvcGZhbWlseW9pZCkpOworCXByb2NsaXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0MShBTVBST0NO VU0sIE9iamVjdElkR2V0RGF0dW0ob3BmYW1pbHlvaWQpKTsKKworCS8qIENoZWNrIGluZGl2aWR1 YWwgb3BlcmF0b3JzICovCisJZm9yIChpID0gMDsgaSA8IG9wcmxpc3QtPm5fbWVtYmVyczsgaSsr KQorCXsKKwkJSGVhcFR1cGxlIG9wcnR1cCA9ICZvcHJsaXN0LT5tZW1iZXJzW2ldLT50dXBsZTsK KwkJRm9ybV9wZ19hbW9wIG9wcmZvcm0gPSAoRm9ybV9wZ19hbW9wKSBHRVRTVFJVQ1Qob3BydHVw KTsKKworCQkvKiBDaGVjayBpdCdzIGFsbG93ZWQgc3RyYXRlZ3kgZm9yIHN0aXIgKi8KKwkJaWYg KG9wcmZvcm0tPmFtb3BzdHJhdGVneSA8IDEgfHwKKwkJCW9wcmZvcm0tPmFtb3BzdHJhdGVneSA+ IFNUSVJfTlNUUkFURUdJRVMpCisJCXsKKwkJCWVyZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIg b3BmYW1pbHkgJXMgY29udGFpbnMgb3BlcmF0b3IgJXMgd2l0aCBpbnZhbGlkIHN0cmF0ZWd5IG51 bWJlciAlZCIsCisJCQkJCQkJCSAgIG9wZmFtaWx5bmFtZSwKKwkJCQkJCQkJICAgZm9ybWF0X29w ZXJhdG9yKG9wcmZvcm0tPmFtb3BvcHIpLAorCQkJCQkJCQkgICBvcHJmb3JtLT5hbW9wc3RyYXRl Z3kpKSk7CisJCQlyZXN1bHQgPSBmYWxzZTsKKwkJfQorCisJCS8qIHN0aXIgZG9lc24ndCBzdXBw b3J0IE9SREVSIEJZIG9wZXJhdG9ycyAqLworCQlpZiAob3ByZm9ybS0+YW1vcHB1cnBvc2UgIT0g QU1PUF9TRUFSQ0ggfHwKKwkJCU9pZElzVmFsaWQob3ByZm9ybS0+YW1vcHNvcnRmYW1pbHkpKQor CQl7CisJCQllcmVwb3J0KElORk8sCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpF Q1RfREVGSU5JVElPTiksCisJCQkJCQkJZXJybXNnKCJzdGlyIG9wZmFtaWx5ICVzIGNvbnRhaW5z IGludmFsaWQgT1JERVIgQlkgc3BlY2lmaWNhdGlvbiBmb3Igb3BlcmF0b3IgJXMiLAorCQkJCQkJ CQkgICBvcGZhbWlseW5hbWUsCisJCQkJCQkJCSAgIGZvcm1hdF9vcGVyYXRvcihvcHJmb3JtLT5h bW9wb3ByKSkpKTsKKwkJCXJlc3VsdCA9IGZhbHNlOworCQl9CisKKwkJLyogQ2hlY2sgb3BlcmF0 b3Igc2lnbmF0dXJlIC0tLSBzYW1lIGZvciBhbGwgc3RpciBzdHJhdGVnaWVzICovCisJCWlmICgh Y2hlY2tfYW1vcF9zaWduYXR1cmUob3ByZm9ybS0+YW1vcG9wciwgQk9PTE9JRCwKKwkJCQkJCQkJ ICBvcHJmb3JtLT5hbW9wbGVmdHR5cGUsCisJCQkJCQkJCSAgb3ByZm9ybS0+YW1vcHJpZ2h0dHlw ZSkpCisJCXsKKwkJCWVyZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIgb3BmYW1pbHkgJXMgY29u dGFpbnMgb3BlcmF0b3IgJXMgd2l0aCB3cm9uZyBzaWduYXR1cmUiLAorCQkJCQkJCQkgICBvcGZh bWlseW5hbWUsCisJCQkJCQkJCSAgIGZvcm1hdF9vcGVyYXRvcihvcHJmb3JtLT5hbW9wb3ByKSkp KTsKKwkJCXJlc3VsdCA9IGZhbHNlOworCQl9CisJfQorCisKKwlSZWxlYXNlQ2F0Q2FjaGVMaXN0 KHByb2NsaXN0KTsKKwlSZWxlYXNlQ2F0Q2FjaGVMaXN0KG9wcmxpc3QpOworCVJlbGVhc2VTeXND YWNoZShmYW1pbHl0dXApOworCVJlbGVhc2VTeXNDYWNoZShjbGFzc3R1cCk7CisKKwlyZXR1cm4g cmVzdWx0OworfQorCisKKy8qCisgKiBJbml0aWFsaXplIG1ldGFwYWdlIG9mIGEgU1RJUiBpbmRl eC4KKyAqIFRoZSBza2lwSW5zZXJ0cyBmbGFnIGRldGVybWluZXMgaWYgbmV3IGluc2VydHMgd2ls bCBiZSBhY2NlcHRlZCBvciBza2lwcGVkLgorICovCit2b2lkCitTdGlyRmlsbE1ldGFwYWdlKFJl bGF0aW9uIGluZGV4LCBQYWdlIG1ldGFQYWdlLCBib29sIHNraXBJbnNlcnRzKQoreworCVN0aXJN ZXRhUGFnZURhdGEgKm1ldGFkYXRhOworCisJU3RpckluaXRQYWdlKG1ldGFQYWdlLCBTVElSX01F VEEpOworCW1ldGFkYXRhID0gU3RpclBhZ2VHZXRNZXRhKG1ldGFQYWdlKTsKKwltZW1zZXQobWV0 YWRhdGEsIDAsIHNpemVvZihTdGlyTWV0YVBhZ2VEYXRhKSk7CisJbWV0YWRhdGEtPm1hZ2lja051 bWJlciA9IFNUSVJfTUFHSUNLX05VTUJFUjsKKwltZXRhZGF0YS0+c2tpcEluc2VydHMgPSBza2lw SW5zZXJ0czsKKwkoKFBhZ2VIZWFkZXIpIG1ldGFQYWdlKS0+cGRfbG93ZXIgKz0gc2l6ZW9mKFN0 aXJNZXRhUGFnZURhdGEpOworfQorCisvKgorICogQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBt ZXRhcGFnZSBmb3IgYSBTVElSIGluZGV4LgorICogVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGluZGV4 IGNyZWF0aW9uLgorICovCit2b2lkCitTdGlySW5pdE1ldGFwYWdlKFJlbGF0aW9uIGluZGV4LCBG b3JrTnVtYmVyIGZvcmtudW0pCit7CisJQnVmZmVyIG1ldGFCdWZmZXI7CisJUGFnZSBtZXRhUGFn ZTsKKworCUFzc2VydCghUmVsYXRpb25OZWVkc1dBTChpbmRleCkpOworCS8qCisJICogTWFrZSBh IG5ldyBwYWdlOyBzaW5jZSBpdCBpcyBmaXJzdCBwYWdlIGl0IHNob3VsZCBiZSBhc3NvY2lhdGVk IHdpdGgKKwkgKiBibG9jayBudW1iZXIgMCAoU1RJUl9NRVRBUEFHRV9CTEtOTykuICBObyBuZWVk IHRvIGhvbGQgdGhlIGV4dGVuc2lvbgorCSAqIGxvY2sgYmVjYXVzZSB0aGVyZSBjYW5ub3QgYmUg Y29uY3VycmVudCBpbnNlcnRlcnMgeWV0LgorCSAqLworCW1ldGFCdWZmZXIgPSBSZWFkQnVmZmVy RXh0ZW5kZWQoaW5kZXgsIGZvcmtudW0sIFBfTkVXLCBSQk1fTk9STUFMLCBOVUxMKTsKKwlTVEFS VF9DUklUX1NFQ1RJT04oKTsKKwlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX0VY Q0xVU0lWRSk7CisJQXNzZXJ0KEJ1ZmZlckdldEJsb2NrTnVtYmVyKG1ldGFCdWZmZXIpID09IFNU SVJfTUVUQVBBR0VfQkxLTk8pOworCisJbWV0YVBhZ2UgPSAgQnVmZmVyR2V0UGFnZShtZXRhQnVm ZmVyKTsKKwlTdGlyRmlsbE1ldGFwYWdlKGluZGV4LCBtZXRhUGFnZSwgZm9ya251bSA9PSBJTklU X0ZPUktOVU0pOworCisJTWFya0J1ZmZlckRpcnR5KG1ldGFCdWZmZXIpOworCUVORF9DUklUX1NF Q1RJT04oKTsKKwlVbmxvY2tSZWxlYXNlQnVmZmVyKG1ldGFCdWZmZXIpOworfQorCisvKgorICog SW5pdGlhbGl6ZSBhbnkgcGFnZSBvZiBhIHN0aXIgaW5kZXguCisgKi8KK3ZvaWQKK1N0aXJJbml0 UGFnZShQYWdlIHBhZ2UsIHVpbnQxNiBmbGFncykKK3sKKwlTdGlyUGFnZU9wYXF1ZSBvcGFxdWU7 CisKKwlQYWdlSW5pdChwYWdlLCBCTENLU1osIHNpemVvZihTdGlyUGFnZU9wYXF1ZURhdGEpKTsK KworCW9wYXF1ZSA9IFN0aXJQYWdlR2V0T3BhcXVlKHBhZ2UpOworCW9wYXF1ZS0+ZmxhZ3MgPSBm bGFnczsKKwlvcGFxdWUtPnN0aXJfcGFnZV9pZCA9IFNUSVJfUEFHRV9JRDsKK30KKworLyoKKyAq IEFkZCBhIHR1cGxlIHRvIGEgU1RJUiBwYWdlLiBSZXR1cm5zIGZhbHNlIGlmIHR1cGxlIGRvZXNu J3QgZml0LgorICogVGhlIHR1cGxlIGlzIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIHBhZ2UuCisg Ki8KK3N0YXRpYyBib29sCitTdGlyUGFnZUFkZEl0ZW0oUGFnZSBwYWdlLCBTdGlyVHVwbGUgKnR1 cGxlKQoreworCVN0aXJUdXBsZSAqaXR1cDsKKwlTdGlyUGFnZU9wYXF1ZSBvcGFxdWU7CisJUG9p bnRlciBwdHI7CisKKwkvKiBXZSBzaG91bGRuJ3QgYmUgcG9pbnRlZCB0byBhbiBpbnZhbGlkIHBh Z2UgKi8KKwlBc3NlcnQoIVBhZ2VJc05ldyhwYWdlKSk7CisKKwkvKiBEb2VzIG5ldyB0dXBsZSBm aXQgb24gdGhlIHBhZ2U/ICovCisJaWYgKFN0aXJQYWdlR2V0RnJlZVNwYWNlKHN0YXRlLCBwYWdl KSA8IHNpemVvZihTdGlyVHVwbGUpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBDb3B5IG5ldyB0 dXBsZSB0byB0aGUgZW5kIG9mIHBhZ2UgKi8KKwlvcGFxdWUgPSBTdGlyUGFnZUdldE9wYXF1ZShw YWdlKTsKKwlpdHVwID0gU3RpclBhZ2VHZXRUdXBsZShwYWdlLCBvcGFxdWUtPm1heG9mZiArIDEp OworCW1lbWNweSgoUG9pbnRlcikgaXR1cCwgKFBvaW50ZXIpIHR1cGxlLCBzaXplb2YoU3RpclR1 cGxlKSk7CisKKwkvKiBBZGp1c3QgbWF4b2ZmIGFuZCBwZF9sb3dlciAqLworCW9wYXF1ZS0+bWF4 b2ZmKys7CisJcHRyID0gKFBvaW50ZXIpIFN0aXJQYWdlR2V0VHVwbGUocGFnZSwgb3BhcXVlLT5t YXhvZmYgKyAxKTsKKwkoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9sb3dlciA9IHB0ciAtIHBhZ2U7 CisKKwkvKiBBc3NlcnQgd2UgZGlkbid0IG92ZXJydW4gYXZhaWxhYmxlIHNwYWNlICovCisJQXNz ZXJ0KCgoUGFnZUhlYWRlcikgcGFnZSktPnBkX2xvd2VyIDw9ICgoUGFnZUhlYWRlcikgcGFnZSkt PnBkX3VwcGVyKTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIEluc2VydCBhIG5ldyB0dXBs ZSBpbnRvIGEgU1RJUiBpbmRleC4KKyAqLworYm9vbAorc3Rpcmluc2VydChSZWxhdGlvbiBpbmRl eCwgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsLAorCQkgIEl0ZW1Qb2ludGVyIGh0X2N0aWQs IFJlbGF0aW9uIGhlYXBSZWwsCisJCSAgSW5kZXhVbmlxdWVDaGVjayBjaGVja1VuaXF1ZSwKKwkJ ICBib29sIGluZGV4VW5jaGFuZ2VkLAorCQkgIHN0cnVjdCBJbmRleEluZm8gKmluZGV4SW5mbykK K3sKKwlTdGlyVHVwbGUgKml0dXA7CisJTWVtb3J5Q29udGV4dCBvbGRDdHg7CisJTWVtb3J5Q29u dGV4dCBpbnNlcnRDdHg7CisJU3Rpck1ldGFQYWdlRGF0YSAqbWV0YURhdGE7CisJQnVmZmVyIGJ1 ZmZlciwKKwkJCW1ldGFCdWZmZXI7CisJUGFnZSBwYWdlOworCXVpbnQxNiBibGtObzsKKworCS8q IENyZWF0ZSB0ZW1wb3JhcnkgY29udGV4dCBmb3IgaW5zZXJ0IG9wZXJhdGlvbiAqLworCWluc2Vy dEN0eCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJ CQkJCSAgIlN0aXIgaW5zZXJ0IHRlbXBvcmFyeSBjb250ZXh0IiwKKwkJCQkJCQkJCSAgQUxMT0NT RVRfREVGQVVMVF9TSVpFUyk7CisKKwlvbGRDdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oaW5z ZXJ0Q3R4KTsKKworCS8qIENyZWF0ZSBuZXcgdHVwbGUgd2l0aCBoZWFwIHBvaW50ZXIgKi8KKwlp dHVwID0gKFN0aXJUdXBsZSAqKSBwYWxsb2MwKHNpemVvZihTdGlyVHVwbGUpKTsKKwlpdHVwLT5o ZWFwUHRyID0gKmh0X2N0aWQ7CisKKwlBc3NlcnQoIVJlbGF0aW9uTmVlZHNXQUwoaW5kZXgpKTsK KwltZXRhQnVmZmVyID0gUmVhZEJ1ZmZlcihpbmRleCwgU1RJUl9NRVRBUEFHRV9CTEtOTyk7CisK Kwlmb3IgKDs7KQorCXsKKwkJTG9ja0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19TSEFS RSk7CisJCW1ldGFEYXRhID0gU3RpclBhZ2VHZXRNZXRhKEJ1ZmZlckdldFBhZ2UobWV0YUJ1ZmZl cikpOworCQkvKiBDaGVjayBpZiBpbnNlcnRzIGFyZSBhbGxvd2VkICovCisJCWlmIChtZXRhRGF0 YS0+c2tpcEluc2VydHMpCisJCXsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YUJ1ZmZlcik7 CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwkJYmxrTm8gPSBtZXRhRGF0YS0+bGFzdEJsa05vOwor CQkvKiBEb24ndCBob2xkIG1ldGFidWZmZXIgbG9jayB3aGlsZSBkb2luZyBpbnNlcnQgKi8KKwkJ TG9ja0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCisJCWlmIChibGtO byA+IDApCisJCXsKKwkJCWJ1ZmZlciA9IFJlYWRCdWZmZXIoaW5kZXgsIGJsa05vKTsKKwkJCUxv Y2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCQkJU1RBUlRfQ1JJVF9T RUNUSU9OKCk7CisKKwkJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CisKKwkJCUFzc2Vy dCghUGFnZUlzTmV3KHBhZ2UpKTsKKworCQkJLyogVHJ5IHRvIGFkZCB0dXBsZSB0byBleGlzdGlu ZyBwYWdlICovCisJCQlpZiAoU3RpclBhZ2VBZGRJdGVtKHBhZ2UsIGl0dXApKQorCQkJeworCQkJ CS8qIFN1Y2Nlc3MhICBBcHBseSB0aGUgY2hhbmdlLCBjbGVhbiB1cCwgYW5kIGV4aXQgKi8KKwkJ CQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKwkJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CisKKwkJ CQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJCQkJUmVsZWFzZUJ1ZmZlcihtZXRhQnVm ZmVyKTsKKwkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4KTsKKwkJCQlNZW1vcnlDb250 ZXh0RGVsZXRlKGluc2VydEN0eCk7CisJCQkJcmV0dXJuIGZhbHNlOworCQkJfQorCisJCQlFTkRf Q1JJVF9TRUNUSU9OKCk7CisJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJCX0KKwor CQkvKiBOZWVkIHRvIGFkZCBuZXcgcGFnZSAtIGdldCBleGNsdXNpdmUgbG9jayBvbiBtZXRhIHBh Z2UgKi8KKwkJTG9ja0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOwor CisJCW1ldGFEYXRhID0gU3RpclBhZ2VHZXRNZXRhKEJ1ZmZlckdldFBhZ2UobWV0YUJ1ZmZlcikp OworCQkvKiBDaGVjayBpZiBhbm90aGVyIGJhY2tlbmQgYWxyZWFkeSBleHRlbmRlZCB0aGUgaW5k ZXggKi8KKworCQlpZiAoYmxrTm8gIT0gbWV0YURhdGEtPmxhc3RCbGtObykKKwkJeworCQkJQXNz ZXJ0KGJsa05vIDwgbWV0YURhdGEtPmxhc3RCbGtObyk7CisJCQkvKiBTb21lb25lIGVsc2UgaW5z ZXJ0ZWQgdGhlIG5ldyBwYWdlIGludG8gdGhlIGluZGV4LCBsZXRzIHRyeSBhZ2FpbiAqLworCQkJ TG9ja0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCQkJY29udGludWU7 CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBNdXN0IGV4dGVuZCB0aGUgZmlsZSAqLworCQkJYnVm ZmVyID0gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChpbmRleCksIE1BSU5fRk9SS05VTSwgTlVM TCwKKwkJCQkJCQkJCSAgIEVCX0xPQ0tfRklSU1QpOworCQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2Uo YnVmZmVyKTsKKwkJCVNUQVJUX0NSSVRfU0VDVElPTigpOworCisJCQlTdGlySW5pdFBhZ2UocGFn ZSwgMCk7CisKKwkJCWlmICghU3RpclBhZ2VBZGRJdGVtKHBhZ2UsIGl0dXApKQorCQkJeworCQkJ CS8qIFdlIHNob3VsZG4ndCBiZSBoZXJlIHNpbmNlIHdlJ3JlIGluc2VydGluZyB0byBhbiBlbXB0 eSBwYWdlICovCisJCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBhZGQgbmV3IHN0aXIgdHVwbGUg dG8gZW1wdHkgcGFnZSIpOworCQkJfQorCisJCQkvKiBVcGRhdGUgbWV0YSBwYWdlIHdpdGggbmV3 IGxhc3QgYmxvY2sgbnVtYmVyICovCisJCQltZXRhRGF0YS0+bGFzdEJsa05vID0gQnVmZmVyR2V0 QmxvY2tOdW1iZXIoYnVmZmVyKTsKKworCQkJTWFya0J1ZmZlckRpcnR5KG1ldGFCdWZmZXIpOwor CQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisKKwkJCUVORF9DUklUX1NFQ1RJT04oKTsKKwor CQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlciht ZXRhQnVmZmVyKTsKKworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7CisJCQlNZW1v cnlDb250ZXh0RGVsZXRlKGluc2VydEN0eCk7CisKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0K K30KKworLyoKKyAqIFNUSVIgZG9lc24ndCBzdXBwb3J0IHNjYW5zIC0gdGhlc2UgZnVuY3Rpb25z IGFsbCBlcnJvciBvdXQKKyAqLworSW5kZXhTY2FuRGVzYworc3RpcmJlZ2luc2NhbihSZWxhdGlv biByLCBpbnQgbmtleXMsIGludCBub3JkZXJieXMpCit7CisJZXJlcG9ydChFUlJPUiwgKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBpcyBub3Qg YSBub3QgaW1wbGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30KKwordm9pZAorc3RpcnJlc2NhbihJ bmRleFNjYW5EZXNjIHNjYW4sIFNjYW5LZXkgc2NhbmtleSwgaW50IG5zY2Fua2V5cywKKwkJICBT Y2FuS2V5IG9yZGVyYnlzLCBpbnQgbm9yZGVyYnlzKQoreworCWVyZXBvcnQoRVJST1IsIChlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJcIiVzXCIgaXMgbm90 IGEgbm90IGltcGxlbWVudGVkIiwgX19mdW5jX18pKSk7Cit9CisKK3ZvaWQgc3RpcmVuZHNjYW4o SW5kZXhTY2FuRGVzYyBzY2FuKQoreworCWVyZXBvcnQoRVJST1IsIChlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgbm90IGltcGxl bWVudGVkIiwgX19mdW5jX18pKSk7Cit9CisKKy8qCisgKiBCdWlsZCBhIFNUSVIgaW5kZXggLSBv bmx5IGFsbG93ZWQgZm9yIGF1eGlsaWFyeSBpbmRleGVzLgorICogSnVzdCBpbml0aWFsaXplcyB0 aGUgbWV0YSBwYWdlIHdpdGhvdXQgYW55IGhlYXAgc2NhbnMuCisgKi8KK0luZGV4QnVpbGRSZXN1 bHQgKgorc3RpcmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAorCQkJCQkJICAg c3RydWN0IEluZGV4SW5mbyAqaW5kZXhJbmZvKQoreworCUluZGV4QnVpbGRSZXN1bHQgKnJlc3Vs dDsKKworCWlmICghaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpCisJCWVyZXBvcnQoRVJST1IsIChl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJTVElSIGluZGV4 ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgdG8gYmUgYnVpbHQiKSkpOworCisJU3RpckluaXRNZXRhcGFn ZShpbmRleCwgTUFJTl9GT1JLTlVNKTsKKworCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0ICop IHBhbGxvYyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOworCXJlc3VsdC0+aGVhcF90dXBsZXMg PSAwOworCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gMDsKKwlyZXR1cm4gcmVzdWx0OworfQorCit2 b2lkIHN0aXJidWlsZGVtcHR5KFJlbGF0aW9uIGluZGV4KQoreworCVN0aXJJbml0TWV0YXBhZ2Uo aW5kZXgsIElOSVRfRk9SS05VTSk7Cit9CisKK0luZGV4QnVsa0RlbGV0ZVJlc3VsdCAqCitzdGly YnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sCisJCQkJCQkJCQkgSW5kZXhCdWxrRGVs ZXRlUmVzdWx0ICpzdGF0cywKKwkJCQkJCQkJCSBJbmRleEJ1bGtEZWxldGVDYWxsYmFjayBjYWxs YmFjaywKKwkJCQkJCQkJCSB2b2lkICpjYWxsYmFja19zdGF0ZSkKK3sKKwlSZWxhdGlvbiBpbmRl eCA9IGluZm8tPmluZGV4OworCUJsb2NrTnVtYmVyIGJsa25vLCBucGFnZXM7CisJQnVmZmVyIGJ1 ZmZlcjsKKwlQYWdlIHBhZ2U7CisKKwkvKiBGb3Igbm9ybWFsIFZBQ1VVTSwgbWFyayB0byBza2lw IGluc2VydHMgYW5kIHdhcm4gYWJvdXQgaW5kZXggZHJvcCBuZWVkZWQgKi8KKwlpZiAoIWluZm8t PnZhbGlkYXRlX2luZGV4KQorCXsKKwkJU3Rpck1hcmtBc1NraXBJbnNlcnRzKGluZGV4KTsKKwor CQllcmVwb3J0KFdBUk5JTkcsIChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQllcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1wbGVtZW50ZWQsIHNlZW1zIGxp a2UgdGhpcyBpbmRleCBuZWVkIHRvIGJlIGRyb3BwZWQiLCBfX2Z1bmNfXykpKTsKKwkJcmV0dXJu IE5VTEw7CisJfQorCisJaWYgKHN0YXRzID09IE5VTEwpCisJCXN0YXRzID0gKEluZGV4QnVsa0Rl bGV0ZVJlc3VsdCAqKSBwYWxsb2MwKHNpemVvZihJbmRleEJ1bGtEZWxldGVSZXN1bHQpKTsKKwor CS8qCisJICogSXRlcmF0ZSBvdmVyIHRoZSBwYWdlcy4gV2UgZG9uJ3QgY2FyZSBhYm91dCBjb25j dXJyZW50bHkgYWRkZWQgcGFnZXMsCisJICogYmVjYXVzZSBpbmRleCBpcyBtYXJrZWQgYXMgbm90 LXJlYWR5IGZvciB0aGF0IG1vbW1lbnQgYW5kIGluZGV4IG5vdAorCSAqIHVzZWQgZm9yIGluc2Vy dC4KKwkgKi8KKwlucGFnZXMgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzKGluZGV4KTsKKwlm b3IgKGJsa25vID0gU1RJUl9IRUFEX0JMS05POyBibGtubyA8IG5wYWdlczsgYmxrbm8rKykKKwl7 CisJCVN0aXJUdXBsZSAqaXR1cCwgKml0dXBFbmQ7CisKKwkJdmFjdXVtX2RlbGF5X3BvaW50KGZh bHNlKTsKKworCQlidWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoaW5kZXgsIE1BSU5fRk9SS05V TSwgYmxrbm8sCisJCQkJCQkJCQlSQk1fTk9STUFMLCBpbmZvLT5zdHJhdGVneSk7CisKKwkJTG9j a0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1NIQVJFKTsKKwkJcGFnZSA9IEJ1ZmZlckdldFBh Z2UoYnVmZmVyKTsKKworCQlpZiAoUGFnZUlzTmV3KHBhZ2UpKQorCQl7CisJCQlVbmxvY2tSZWxl YXNlQnVmZmVyKGJ1ZmZlcik7CisJCQljb250aW51ZTsKKwkJfQorCisJCWl0dXAgPSBTdGlyUGFn ZUdldFR1cGxlKHBhZ2UsIEZpcnN0T2Zmc2V0TnVtYmVyKTsKKwkJaXR1cEVuZCA9IFN0aXJQYWdl R2V0VHVwbGUocGFnZSwgT2Zmc2V0TnVtYmVyTmV4dChTdGlyUGFnZUdldE1heE9mZnNldChwYWdl KSkpOworCQl3aGlsZSAoaXR1cCA8IGl0dXBFbmQpCisJCXsKKwkJCS8qIERvIHdlIGhhdmUgdG8g ZGVsZXRlIHRoaXMgdHVwbGU/ICovCisJCQlpZiAoY2FsbGJhY2soJml0dXAtPmhlYXBQdHIsIGNh bGxiYWNrX3N0YXRlKSkKKwkJCXsKKwkJCQllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygid2UgbmV2ZXIgZGVsZXRlIGluIHN0aXIi KSkpOworCQkJfQorCisJCQlpdHVwID0gU3RpclBhZ2VHZXROZXh0VHVwbGUoaXR1cCk7CisJCX0K KworCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJfQorCisJcmV0dXJuIHN0YXRzOwor fQorCisvKgorICogTWFyayBhIFNUSVIgaW5kZXggdG8gc2tpcCBmdXR1cmUgaW5zZXJ0cworICov Cit2b2lkCitTdGlyTWFya0FzU2tpcEluc2VydHMoUmVsYXRpb24gaW5kZXgpCit7CisJU3Rpck1l dGFQYWdlRGF0YSAqbWV0YURhdGE7CisJQnVmZmVyIG1ldGFCdWZmZXI7CisJUGFnZSBtZXRhUGFn ZTsKKworCUFzc2VydCghUmVsYXRpb25OZWVkc1dBTChpbmRleCkpOworCW1ldGFCdWZmZXIgPSBS ZWFkQnVmZmVyKGluZGV4LCBTVElSX01FVEFQQUdFX0JMS05PKTsKKwlMb2NrQnVmZmVyKG1ldGFC dWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CisK KwltZXRhUGFnZSA9IEJ1ZmZlckdldFBhZ2UobWV0YUJ1ZmZlcik7CisJbWV0YURhdGEgPSBTdGly UGFnZUdldE1ldGEobWV0YVBhZ2UpOworCisJaWYgKCFtZXRhRGF0YS0+c2tpcEluc2VydHMpCisJ eworCQltZXRhRGF0YS0+c2tpcEluc2VydHMgPSB0cnVlOworCQlNYXJrQnVmZmVyRGlydHkobWV0 YUJ1ZmZlcik7CisJfQorCUVORF9DUklUX1NFQ1RJT04oKTsKKwlVbmxvY2tSZWxlYXNlQnVmZmVy KG1ldGFCdWZmZXIpOworfQorCitJbmRleEJ1bGtEZWxldGVSZXN1bHQgKgorc3RpcnZhY3V1bWNs ZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLAorCQkJCQkJCQkJCUluZGV4QnVsa0RlbGV0ZVJl c3VsdCAqc3RhdHMpCit7CisJU3Rpck1hcmtBc1NraXBJbnNlcnRzKGluZm8tPmluZGV4KTsKKwll cmVwb3J0KFdBUk5JTkcsIChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIG5vdCBpbXBsZW1lbnRlZCwgc2VlbXMgbGlrZSB0 aGlzIGluZGV4IG5lZWQgdG8gYmUgZHJvcHBlZCIsIF9fZnVuY19fKSkpOworCXJldHVybiBOVUxM OworfQorCitieXRlYSAqCitzdGlyb3B0aW9ucyhEYXR1bSByZWxvcHRpb25zLCBib29sIHZhbGlk YXRlKQoreworCXJldHVybiBOVUxMOworfQorCit2b2lkCitzdGlyY29zdGVzdGltYXRlKFBsYW5u ZXJJbmZvICpyb290LCBJbmRleFBhdGggKnBhdGgsCisJCQkJCSBkb3VibGUgbG9vcF9jb3VudCwg Q29zdCAqaW5kZXhTdGFydHVwQ29zdCwKKwkJCQkJIENvc3QgKmluZGV4VG90YWxDb3N0LCBTZWxl Y3Rpdml0eSAqaW5kZXhTZWxlY3Rpdml0eSwKKwkJCQkJIGRvdWJsZSAqaW5kZXhDb3JyZWxhdGlv biwgZG91YmxlICppbmRleFBhZ2VzKQoreworCWVyZXBvcnQoRVJST1IsIChlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgbm90IGlt cGxlbWVudGVkIiwgX19mdW5jX18pKSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggNWQ5ZGIxNjdl NTkuLjhlNTA5YTUxYzExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0zNDExLDYgKzM0MTEsNyBAQCB2 YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3Qp CiAJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBERUJVRzI7CiAJaXZpbmZvLm51bV9oZWFwX3R1cGxl cyA9IGhlYXBSZWxhdGlvbi0+cmRfcmVsLT5yZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0g TlVMTDsKKwlpdmluZm8udmFsaWRhdGVfaW5kZXggPSB0cnVlOwogCiAJLyoKIAkgKiBFbmNvZGUg VElEcyBhcyBpbnQ4IHZhbHVlcyBmb3IgdGhlIHNvcnQsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHNv cnRpbmcKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwppbmRleCA4NzRhOGZjODlhZC4uOWNjNGYwNmRhOWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKQEAgLTMwNyw2ICszMDcsNyBAQCBjcmVhdGVfdG9hc3Rf dGFibGUoUmVsYXRpb24gcmVsLCBPaWQgdG9hc3RPaWQsIE9pZCB0b2FzdEluZGV4T2lkLAogCWlu ZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzID0gMDsKIAlpbmRleEluZm8tPmlpX0FtID0gQlRS RUVfQU1fT0lEOwogCWluZGV4SW5mby0+aWlfQW1DYWNoZSA9IE5VTEw7CisJaW5kZXhJbmZvLT5p aV9BdXhpbGlhcnkgPSBmYWxzZTsKIAlpbmRleEluZm8tPmlpX0NvbnRleHQgPSBDdXJyZW50TWVt b3J5Q29udGV4dDsKIAogCWNvbGxhdGlvbklkc1swXSA9IEludmFsaWRPaWQ7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9h bmFseXplLmMKaW5kZXggMTJiNGYzZmQzNmUuLmI3NDdjNmU3ODA0IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5h bHl6ZS5jCkBAIC03MTksNiArNzE5LDcgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVs LCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCQkJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBl bGV2ZWw7CiAJCQlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gb25lcmVsLT5yZF9yZWwtPnJlbHR1 cGxlczsKIAkJCWl2aW5mby5zdHJhdGVneSA9IHZhY19zdHJhdGVneTsKKwkJCWl2aW5mby52YWxp ZGF0ZV9pbmRleCA9IGZhbHNlOwogCiAJCQlzdGF0cyA9IGluZGV4X3ZhY3V1bV9jbGVhbnVwKCZp dmluZm8sIE5VTEwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1w YXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCAw ZmVlYTFkMzBlYy4uNTgyZGI3N2RkYzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYwpAQCAtODg0LDYgKzg4NCw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX29uZV9pbmRl eChQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIFJlbGF0aW9uIGluZHJlbCwKIAlpdmluZm8uZXN0 aW1hdGVkX2NvdW50ID0gcHZzLT5zaGFyZWQtPmVzdGltYXRlZF9jb3VudDsKIAlpdmluZm8ubnVt X2hlYXBfdHVwbGVzID0gcHZzLT5zaGFyZWQtPnJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kg PSBwdnMtPmJzdHJhdGVneTsKKwlpdmluZm8udmFsaWRhdGVfaW5kZXggPSBmYWxzZTsKIAogCS8q IFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24gKi8KIAlwdnMtPmluZG5hbWUgPSBw c3RyZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZHJlbCkpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3Mu YwppbmRleCBlMmQ5ZTliZTQxYS4uZTk3ZTA5NDNmNWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBA IC04NzUsNiArODc1LDcgQEAgbWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlh dHRycywgT2lkIGFtb2lkLCBMaXN0ICpleHByZXNzaW9ucywKIAkvKiBpbml0aWFsaXplIGluZGV4 LWJ1aWxkIHN0YXRlIHRvIGRlZmF1bHQgKi8KIAluLT5paV9Ccm9rZW5Ib3RDaGFpbiA9IGZhbHNl OwogCW4tPmlpX1BhcmFsbGVsV29ya2VycyA9IDA7CisJbi0+aWlfQXV4aWxpYXJ5ID0gZmFsc2U7 CiAKIAkvKiBzZXQgdXAgZm9yIHBvc3NpYmxlIHVzZSBieSBpbmRleCBBTSAqLwogCW4tPmlpX0Ft ID0gYW1vaWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9nZW5hbS5oCmluZGV4IGFjNjJmNmE2YWJkLi4wZDBhMGY4ZDczZiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2dlbmFtLmgKQEAgLTc1LDYgKzc1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhWYWN1dW1J bmZvCiAJYm9vbAkJZXN0aW1hdGVkX2NvdW50OwkvKiBudW1faGVhcF90dXBsZXMgaXMgYW4gZXN0 aW1hdGUgKi8KIAlpbnQJCQltZXNzYWdlX2xldmVsOwkvKiBlcmVwb3J0IGxldmVsIGZvciBwcm9n cmVzcyBtZXNzYWdlcyAqLwogCWRvdWJsZQkJbnVtX2hlYXBfdHVwbGVzOwkvKiB0dXBsZXMgcmVt YWluaW5nIGluIGhlYXAgKi8KKwlib29sCQl2YWxpZGF0ZV9pbmRleDsgLyogdmFsaWRhdGluZyBj b25jdXJyZW50bHkgYnVpbHQgaW5kZXg/ICovCiAJQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRl Z3k7CS8qIGFjY2VzcyBzdHJhdGVneSBmb3IgcmVhZHMgKi8KIH0gSW5kZXhWYWN1dW1JbmZvOwog CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaAppbmRleCBhNjA0YTQ3MDJjMy4uMzEyNzczMWY5YzYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25zLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaApAQCAtNTEsOCArNTEsOSBAQCB0eXBlZGVmIGVudW0gcmVs b3B0X2tpbmQKIAlSRUxPUFRfS0lORF9WSUVXID0gKDEgPDwgOSksCiAJUkVMT1BUX0tJTkRfQlJJ TiA9ICgxIDw8IDEwKSwKIAlSRUxPUFRfS0lORF9QQVJUSVRJT05FRCA9ICgxIDw8IDExKSwKKwlS RUxPUFRfS0lORF9TVElSID0gKDEgPDwgMTIpLAogCS8qIGlmIHlvdSBhZGQgYSBuZXcga2luZCwg bWFrZSBzdXJlIHlvdSB1cGRhdGUgImxhc3RfZGVmYXVsdCIgdG9vICovCi0JUkVMT1BUX0tJTkRf TEFTVF9ERUZBVUxUID0gUkVMT1BUX0tJTkRfUEFSVElUSU9ORUQsCisJUkVMT1BUX0tJTkRfTEFT VF9ERUZBVUxUID0gUkVMT1BUX0tJTkRfU1RJUiwKIAkvKiBzb21lIGNvbXBpbGVycyB0cmVhdCBl bnVtcyBhcyBzaWduZWQgaW50cywgc28gd2UgY2FuJ3QgdXNlIDEgPDwgMzEgKi8KIAlSRUxPUFRf S0lORF9NQVggPSAoMSA8PCAzMCkKIH0gcmVsb3B0X2tpbmQ7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3Mvc3Rpci5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTk0M2M0MmE5N2UKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCkBAIC0wLDAgKzEsMTE3IEBACisvKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiBzdGlyLmgKKyAqCSAgaGVhZGVyIGZpbGUgZm9yIHBvc3RncmVz IHN0aXIgYWNjZXNzIG1ldGhvZCBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKgorICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAor ICoKKyAqIHNyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqLworI2lmbmRlZiBfU1RJUl9IXworI2RlZmluZSBfU1RJUl9IXworCisjaW5jbHVkZSAiYW1h cGkuaCIKKyNpbmNsdWRlICJ4bG9nLmgiCisjaW5jbHVkZSAiZ2VuZXJpY194bG9nLmgiCisjaW5j bHVkZSAiaXR1cC5oIgorI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXRobm9k ZXMuaCIKKworLyogU3VwcG9ydCBwcm9jZWR1cmVzIG51bWJlcnMgKi8KKyNkZWZpbmUgU1RJUl9O UFJPQwkJCQkwCisKKy8qIFNjYW4gc3RyYXRlZ2llcyAqLworI2RlZmluZSBTVElSX05TVFJBVEVH SUVTCQkxCisKKyNkZWZpbmUgU1RJUl9PUFRJT05TX1BST0MJCQkJMAorCisvKiBNYWNyb3MgZm9y IGFjY2Vzc2luZyBzdGlyIHBhZ2Ugc3RydWN0dXJlcyAqLworI2RlZmluZSBTdGlyUGFnZUdldE9w YXF1ZShwYWdlKSAoKFN0aXJQYWdlT3BhcXVlKSBQYWdlR2V0U3BlY2lhbFBvaW50ZXIocGFnZSkp CisjZGVmaW5lIFN0aXJQYWdlR2V0TWF4T2Zmc2V0KHBhZ2UpIChTdGlyUGFnZUdldE9wYXF1ZShw YWdlKS0+bWF4b2ZmKQorI2RlZmluZSBTdGlyUGFnZUlzTWV0YShwYWdlKSBcCisJKChTdGlyUGFn ZUdldE9wYXF1ZShwYWdlKS0+ZmxhZ3MgJiBTVElSX01FVEEpICE9IDApCisjZGVmaW5lIFN0aXJQ YWdlR2V0RGF0YShwYWdlKQkJKChTdGlyVHVwbGUgKilQYWdlR2V0Q29udGVudHMocGFnZSkpCisj ZGVmaW5lIFN0aXJQYWdlR2V0VHVwbGUocGFnZSwgb2Zmc2V0KSBcCisJKChTdGlyVHVwbGUgKiko UGFnZUdldENvbnRlbnRzKHBhZ2UpIFwKKwkJKyBzaXplb2YoU3RpclR1cGxlKSAqICgob2Zmc2V0 KSAtIDEpKSkKKyNkZWZpbmUgU3RpclBhZ2VHZXROZXh0VHVwbGUodHVwbGUpIFwKKwkoKFN0aXJU dXBsZSAqKSgoUG9pbnRlcikodHVwbGUpICsgc2l6ZW9mKFN0aXJUdXBsZSkpKQorCisKKworLyog UHJlc2VydmVkIHBhZ2UgbnVtYmVycyAqLworI2RlZmluZSBTVElSX01FVEFQQUdFX0JMS05PCSgw KQorI2RlZmluZSBTVElSX0hFQURfQkxLTk8JCSgxKSAvKiBmaXJzdCBkYXRhIHBhZ2UgKi8KKwor CisvKiBPcGFxdWUgZm9yIHN0aXIgcGFnZXMgKi8KK3R5cGVkZWYgc3RydWN0IFN0aXJQYWdlT3Bh cXVlRGF0YQoreworCU9mZnNldE51bWJlciBtYXhvZmY7CQkvKiBudW1iZXIgb2YgaW5kZXggdHVw bGVzIG9uIHBhZ2UgKi8KKwl1aW50MTYJCWZsYWdzOwkJCS8qIHNlZSBiaXQgZGVmaW5pdGlvbnMg YmVsb3cgKi8KKwl1aW50MTYJCXVudXNlZDsJCQkvKiBwbGFjZWhvbGRlciB0byBmb3JjZSBtYXhh bGlnbmluZyBvZiBzaXplIG9mCisJCQkJCQkJCSAqIFN0aXJQYWdlT3BhcXVlRGF0YSBhbmQgdG8g cGxhY2UKKwkJCQkJCQkJICogc3Rpcl9wYWdlX2lkIGV4YWN0bHkgYXQgdGhlIGVuZCBvZiBwYWdl ICovCisJdWludDE2CQlzdGlyX3BhZ2VfaWQ7CS8qIGZvciBpZGVudGlmaWNhdGlvbiBvZiBTVElS IGluZGV4ZXMgKi8KK30gU3RpclBhZ2VPcGFxdWVEYXRhOworCisvKiBTdGlyIHBhZ2UgZmxhZ3Mg Ki8KKyNkZWZpbmUgU1RJUl9NRVRBCQkoMTw8MCkKKwordHlwZWRlZiBTdGlyUGFnZU9wYXF1ZURh dGEgKlN0aXJQYWdlT3BhcXVlOworCisjZGVmaW5lIFNUSVJfUEFHRV9JRAkJMHhGRjg0CisKKy8q IE1ldGFkYXRhIG9mIHN0aXIgaW5kZXggKi8KK3R5cGVkZWYgc3RydWN0IFN0aXJNZXRhUGFnZURh dGEKK3sKKwl1aW50MzIJCW1hZ2lja051bWJlcjsKKwl1aW50MTYJCWxhc3RCbGtObzsKKwlib29s CQlza2lwSW5zZXJ0czsJLyogc2hvdWxkIHdlIGp1c3QgZXhpdCB3aXRob3V0IGFueSBpbnNlcnRz ICovCit9IFN0aXJNZXRhUGFnZURhdGE7CisKKy8qIE1hZ2ljIG51bWJlciB0byBkaXN0aW5ndWlz aCBzdGlyIHBhZ2VzIGZyb20gb3RoZXJzICovCisjZGVmaW5lIFNUSVJfTUFHSUNLX05VTUJFUiAo MHhEQkFDMERFRikKKworI2RlZmluZSBTdGlyUGFnZUdldE1ldGEocGFnZSkJKChTdGlyTWV0YVBh Z2VEYXRhICopIFBhZ2VHZXRDb250ZW50cyhwYWdlKSkKKwordHlwZWRlZiBzdHJ1Y3QgU3RpclR1 cGxlCit7CisJSXRlbVBvaW50ZXJEYXRhIGhlYXBQdHI7Cit9IFN0aXJUdXBsZTsKKworI2RlZmlu ZSBTdGlyUGFnZUdldEZyZWVTcGFjZShzdGF0ZSwgcGFnZSkgXAorCShCTENLU1ogLSBNQVhBTElH TihTaXplT2ZQYWdlSGVhZGVyRGF0YSkgXAorCQktIFN0aXJQYWdlR2V0TWF4T2Zmc2V0KHBhZ2Up ICogKHNpemVvZihTdGlyVHVwbGUpKSBcCisJCS0gTUFYQUxJR04oc2l6ZW9mKFN0aXJQYWdlT3Bh cXVlRGF0YSkpKQorCitleHRlcm4gdm9pZCBTdGlyRmlsbE1ldGFwYWdlKFJlbGF0aW9uIGluZGV4 LCBQYWdlIG1ldGFQYWdlLCBib29sIHNraXBJbnNlcnRzKTsKK2V4dGVybiB2b2lkIFN0aXJJbml0 TWV0YXBhZ2UoUmVsYXRpb24gaW5kZXgsIEZvcmtOdW1iZXIgZm9ya251bSk7CitleHRlcm4gdm9p ZCBTdGlySW5pdFBhZ2UoUGFnZSBwYWdlLCB1aW50MTYgZmxhZ3MpOworZXh0ZXJuIHZvaWQgU3Rp ck1hcmtBc1NraXBJbnNlcnRzKFJlbGF0aW9uIGluZGV4KTsKKworLyogaW5kZXggYWNjZXNzIG1l dGhvZCBpbnRlcmZhY2UgZnVuY3Rpb25zICovCitleHRlcm4gYm9vbCBzdGlydmFsaWRhdGUoT2lk IG9wY2xhc3NvaWQpOworZXh0ZXJuIGJvb2wgc3Rpcmluc2VydChSZWxhdGlvbiBpbmRleCwgRGF0 dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsLAorCQkJCQkgSXRlbVBvaW50ZXIgaHRfY3RpZCwgUmVs YXRpb24gaGVhcFJlbCwKKwkJCQkJIEluZGV4VW5pcXVlQ2hlY2sgY2hlY2tVbmlxdWUsCisJCQkJ CSBib29sIGluZGV4VW5jaGFuZ2VkLAorCQkJCQkgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhJbmZv KTsKK2V4dGVybiBJbmRleFNjYW5EZXNjIHN0aXJiZWdpbnNjYW4oUmVsYXRpb24gciwgaW50IG5r ZXlzLCBpbnQgbm9yZGVyYnlzKTsKK2V4dGVybiB2b2lkIHN0aXJyZXNjYW4oSW5kZXhTY2FuRGVz YyBzY2FuLCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2NhbmtleXMsCisJCQkJCSBTY2FuS2V5IG9y ZGVyYnlzLCBpbnQgbm9yZGVyYnlzKTsKK2V4dGVybiB2b2lkIHN0aXJlbmRzY2FuKEluZGV4U2Nh bkRlc2Mgc2Nhbik7CitleHRlcm4gSW5kZXhCdWlsZFJlc3VsdCAqc3RpcmJ1aWxkKFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LAorCQkJCQkJCQkgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhJ bmZvKTsKK2V4dGVybiB2b2lkIHN0aXJidWlsZGVtcHR5KFJlbGF0aW9uIGluZGV4KTsKK2V4dGVy biBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0aXJidWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAq aW5mbywKKwkJCQkJCQkJCQkgICBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLCBJbmRleEJ1 bGtEZWxldGVDYWxsYmFjayBjYWxsYmFjaywKKwkJCQkJCQkJCQkgICB2b2lkICpjYWxsYmFja19z dGF0ZSk7CitleHRlcm4gSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGlydmFjdXVtY2xlYW51cChJ bmRleFZhY3V1bUluZm8gKmluZm8sCisJCQkJCQkJCQkJCSAgSW5kZXhCdWxrRGVsZXRlUmVzdWx0 ICpzdGF0cyk7CitleHRlcm4gYnl0ZWEgKnN0aXJvcHRpb25zKERhdHVtIHJlbG9wdGlvbnMsIGJv b2wgdmFsaWRhdGUpOworCisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfYW0uZGF0CmluZGV4IDI2ZDE1OTI4YTE1Li5hNWVjZjkyMDhhZCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19hbS5kYXQKQEAgLTMzLDUgKzMzLDggQEAKIHsgb2lkID0+ICczNTgwJywgb2lkX3N5bWJvbCA9 PiAnQlJJTl9BTV9PSUQnLAogICBkZXNjciA9PiAnYmxvY2sgcmFuZ2UgaW5kZXggKEJSSU4pIGFj Y2VzcyBtZXRob2QnLAogICBhbW5hbWUgPT4gJ2JyaW4nLCBhbWhhbmRsZXIgPT4gJ2JyaW5oYW5k bGVyJywgYW10eXBlID0+ICdpJyB9LAoreyBvaWQgPT4gJzU1NTUnLCBvaWRfc3ltYm9sID0+ICdT VElSX0FNX09JRCcsCisgIGRlc2NyID0+ICdzaG9ydCB0ZXJtIGluZGV4IHJlcGxhY2VtZW50IGFj Y2VzcyBtZXRob2QnLAorICBhbW5hbWUgPT4gJ3N0aXInLCBhbWhhbmRsZXIgPT4gJ3N0aXJoYW5k bGVyJywgYW10eXBlID0+ICdpJyB9LAogCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX29wY2xhc3MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGNsYXNzLmRhdApp bmRleCA0YTk2MjQ4MDJhYS4uNjIyN2M1NjU4ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfb3BjbGFzcy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGNsYXNz LmRhdApAQCAtNDg4LDQgKzQ4OCw4IEBACiAKICMgbm8gYnJpbiBvcGNsYXNzIGZvciB0aGUgZ2Vv bWV0cmljIHR5cGVzIGV4Y2VwdCBib3gKIAorIyBhbGxvdyBhbnkgdHlwZXMgZm9yIFNUSVIKK3sg b3BjbWV0aG9kID0+ICdzdGlyJywgb2lkX3N5bWJvbCA9PiAnQU5ZX1NUSVJfT1BTX09JRCcsIG9w Y25hbWUgPT4gJ3N0aXJfb3BzJywKKyAgb3BjZmFtaWx5ID0+ICdzdGlyL2FueV9vcHMnLCBvcGNp bnR5cGUgPT4gJ2FueSd9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X29wZmFtaWx5LmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1pbHkuZGF0CmluZGV4 IGY3ZGNiOTZiNDNjLi44MzhhZDMyYzkzMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19vcGZhbWlseS5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5k YXQKQEAgLTMwNCw1ICszMDQsNyBAQAogICBvcGZtZXRob2QgPT4gJ2hhc2gnLCBvcGZuYW1lID0+ ICdtdWx0aXJhbmdlX29wcycgfSwKIHsgb2lkID0+ICc2MTU4JywKICAgb3BmbWV0aG9kID0+ICdn aXN0Jywgb3BmbmFtZSA9PiAnbXVsdGlyYW5nZV9vcHMnIH0sCit7IG9pZCA9PiAnNTU1OCcsCisg IG9wZm1ldGhvZCA9PiAnc3RpcicsIG9wZm5hbWUgPT4gJ2FueV9vcHMnIH0sCiAKIF0KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CmluZGV4IDAxZWJhM2I1YTE5Li4wZDI5MTE1ZjIwMCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CkBAIC05MzUsNiArOTM1LDEwIEBACiAgIHByb25hbWUgPT4gJ2JyaW5o YW5kbGVyJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9yZXR0eXBlID0+ICdpbmRleF9hbV9o YW5kbGVyJywgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsJywKICAgcHJvc3JjID0+ICdicmluaGFu ZGxlcicgfSwKK3sgb2lkID0+ICc1NTU2JywgZGVzY3IgPT4gJ3Nob3J0IHRlcm0gaW5kZXggcmVw bGFjZW1lbnQgYWNjZXNzIG1ldGhvZCBoYW5kbGVyJywKKyAgcHJvbmFtZSA9PiAnc3RpcmhhbmRs ZXInLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ2luZGV4X2FtX2hhbmRs ZXInLCBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLAorICBwcm9zcmMgPT4gJ3N0aXJoYW5kbGVy JyB9LAogeyBvaWQgPT4gJzM5NTInLCBkZXNjciA9PiAnYnJpbjogc3RhbmRhbG9uZSBzY2FuIG5l dyB0YWJsZSBwYWdlcycsCiAgIHByb25hbWUgPT4gJ2JyaW5fc3VtbWFyaXplX25ld192YWx1ZXMn LCBwcm92b2xhdGlsZSA9PiAndicsCiAgIHByb3BhcmFsbGVsID0+ICd1JywgcHJvcmV0dHlwZSA9 PiAnaW50NCcsIHByb2FyZ3R5cGVzID0+ICdyZWdjbGFzcycsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmlu ZGV4IGEzNjY1M2MzN2Y5Li43MjYzYzVlMjlhOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTE1 NSw4ICsxNTUsOCBAQCB0eXBlZGVmIHN0cnVjdCBFeHByU3RhdGUKICAqCQllbnRyaWVzIGZvciBh IHBhcnRpY3VsYXIgaW5kZXguICBVc2VkIGZvciBib3RoIGluZGV4X2J1aWxkIGFuZAogICoJCXJl dGFpbCBjcmVhdGlvbiBvZiBpbmRleCBlbnRyaWVzLgogICoKLSAqIGlpX0NvbmN1cnJlbnQsIGlp X0Jyb2tlbkhvdENoYWluLCBhbmQgaWlfUGFyYWxsZWxXb3JrZXJzIGFyZSB1c2VkIG9ubHkKLSAq IGR1cmluZyBpbmRleCBidWlsZDsgdGhleSdyZSBjb252ZW50aW9uYWxseSB6ZXJvZWQgb3RoZXJ3 aXNlLgorICogaWlfQ29uY3VycmVudCwgaWlfQnJva2VuSG90Q2hhaW4sIGlpX0F1eGlsaWFyeSBh bmQgaWlfUGFyYWxsZWxXb3JrZXJzCisgKiBhcmUgdXNlZCBvbmx5IGR1cmluZyBpbmRleCBidWls ZDsgdGhleSdyZSBjb252ZW50aW9uYWxseSB6ZXJvZWQgb3RoZXJ3aXNlCiAgKiAtLS0tLS0tLS0t LS0tLS0tCiAgKi8KIHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbwpAQCAtMjE2LDcgKzIxNiw4IEBA IHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbwogCWJvb2wJCWlpX1dpdGhvdXRPdmVybGFwczsKIAkv KiAjIG9mIHdvcmtlcnMgcmVxdWVzdGVkIChleGNsdWRlcyBsZWFkZXIpICovCiAJaW50CQkJaWlf UGFyYWxsZWxXb3JrZXJzOwotCisJLyogaXMgYXV4aWxpYXJ5IGZvciBjb25jdXJyZW50IGluZGV4 IGJ1aWxkPyAqLworCWJvb2wJCWlpX0F1eGlsaWFyeTsKIAkvKiBPaWQgb2YgaW5kZXggQU0gKi8K IAlPaWQJCQlpaV9BbTsKIAkvKiBwcml2YXRlIGNhY2hlIGFyZWEgZm9yIGluZGV4IEFNICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9pbmRleF9zZWxmdW5jcy5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvaW5kZXhfc2VsZnVuY3MuaAppbmRleCA2YzY0ZGI2ZDQ1Ni4uZTBkOTM5ZDY4NTcg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2luZGV4X3NlbGZ1bmNzLmgKKysrIGIvc3Jj L2luY2x1ZGUvdXRpbHMvaW5kZXhfc2VsZnVuY3MuaApAQCAtNjIsNiArNjIsMTQgQEAgZXh0ZXJu IHZvaWQgc3BnY29zdGVzdGltYXRlKHN0cnVjdCBQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQlT ZWxlY3Rpdml0eSAqaW5kZXhTZWxlY3Rpdml0eSwKIAkJCQkJCQlkb3VibGUgKmluZGV4Q29ycmVs YXRpb24sCiAJCQkJCQkJZG91YmxlICppbmRleFBhZ2VzKTsKK2V4dGVybiB2b2lkIHN0aXJjb3N0 ZXN0aW1hdGUoc3RydWN0IFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCXN0cnVjdCBJbmRleFBh dGggKnBhdGgsCisJCQkJCQkJZG91YmxlIGxvb3BfY291bnQsCisJCQkJCQkJQ29zdCAqaW5kZXhT dGFydHVwQ29zdCwKKwkJCQkJCQlDb3N0ICppbmRleFRvdGFsQ29zdCwKKwkJCQkJCQlTZWxlY3Rp dml0eSAqaW5kZXhTZWxlY3Rpdml0eSwKKwkJCQkJCQlkb3VibGUgKmluZGV4Q29ycmVsYXRpb24s CisJCQkJCQkJZG91YmxlICppbmRleFBhZ2VzKTsKIGV4dGVybiB2b2lkIGdpbmNvc3Rlc3RpbWF0 ZShzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJc3RydWN0IEluZGV4UGF0aCAqcGF0 aCwKIAkJCQkJCQlkb3VibGUgbG9vcF9jb3VudCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvYW11dGlscy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRp bHMub3V0CmluZGV4IDdhYjYxMTNjNjE5Li45MmMwMzNhMjAxMCAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9hbXV0aWxzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2FtdXRpbHMub3V0CkBAIC0xNzMsNyArMTczLDEzIEBAIHNlbGVjdCBhbW5hbWUsIHBy b3AsIHBnX2luZGV4YW1faGFzX3Byb3BlcnR5KGEub2lkLCBwcm9wKSBhcyBwCiAgc3BnaXN0IHwg Y2FuX2V4Y2x1ZGUgICB8IHQKICBzcGdpc3QgfCBjYW5faW5jbHVkZSAgIHwgdAogIHNwZ2lzdCB8 IGJvZ3VzICAgICAgICAgfCAKLSgzNiByb3dzKQorIHN0aXIgICB8IGNhbl9vcmRlciAgICAgfCBm Cisgc3RpciAgIHwgY2FuX3VuaXF1ZSAgICB8IGYKKyBzdGlyICAgfCBjYW5fbXVsdGlfY29sIHwg dAorIHN0aXIgICB8IGNhbl9leGNsdWRlICAgfCBmCisgc3RpciAgIHwgY2FuX2luY2x1ZGUgICB8 IHQKKyBzdGlyICAgfCBib2d1cyAgICAgICAgIHwgCisoNDIgcm93cykKIAogLS0KIC0tIGFkZGl0 aW9uYWwgY2hlY2tzIGZvciBwZ19pbmRleF9jb2x1bW5faGFzX3Byb3BlcnR5CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dAppbmRleCAyMGJmOWVhOWNkZi4uZmMxMTZiODRh MjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dApAQCAtMjEyMiw5 ICsyMTIyLDEwIEBAIEZST00gcGdfb3BjbGFzcyBBUyBjMQogV0hFUkUgTk9UIEVYSVNUUyhTRUxF Q1QgMSBGUk9NIHBnX2Ftb3AgQVMgYTEKICAgICAgICAgICAgICAgICAgV0hFUkUgYTEuYW1vcGZh bWlseSA9IGMxLm9wY2ZhbWlseQogICAgICAgICAgICAgICAgICAgIEFORCBiaW5hcnlfY29lcmNp YmxlKGMxLm9wY2ludHlwZSwgYTEuYW1vcGxlZnR0eXBlKSk7Ci0gb3BjbmFtZSB8IG9wY2ZhbWls eSAKLS0tLS0tLS0tLSstLS0tLS0tLS0tLQotKDAgcm93cykKKyBvcGNuYW1lICB8IG9wY2ZhbWls eSAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBzdGlyX29wcyB8ICAgICAgNTU1OAorKDEgcm93 KQogCiAtLSBDaGVjayB0aGF0IGVhY2ggb3BlcmF0b3IgbGlzdGVkIGluIHBnX2Ftb3AgaGFzIGFu IGFzc29jaWF0ZWQgb3BjbGFzcywKIC0tIHRoYXQgaXMgb25lIHdob3NlIG9wY2ludHlwZSBtYXRj aGVzIG9wcmxlZnQgKHBvc3NpYmx5IGJ5IGNvZXJjaW9uKS4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bz cWwub3V0CmluZGV4IGE3OTMyNWU4YTJmLi44ZTdjOWRlMTJiYiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BzcWwub3V0CkBAIC01MTM5LDcgKzUxMzksOCBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2Rz CiAgaGVhcCAgIHwgVGFibGUKICBoZWFwMiAgfCBUYWJsZQogIHNwZ2lzdCB8IEluZGV4Ci0oOCBy b3dzKQorIHN0aXIgICB8IEluZGV4CisoOSByb3dzKQogCiBcZEEgKgogTGlzdCBvZiBhY2Nlc3Mg bWV0aG9kcwpAQCAtNTE1Myw3ICs1MTU0LDggQEAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogIGhl YXAgICB8IFRhYmxlCiAgaGVhcDIgIHwgVGFibGUKICBzcGdpc3QgfCBJbmRleAotKDggcm93cykK KyBzdGlyICAgfCBJbmRleAorKDkgcm93cykKIAogXGRBIGgqCiBMaXN0IG9mIGFjY2VzcyBtZXRo b2RzCkBAIC01MTc4LDkgKzUxODAsOSBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAKIFxkQTog ZXh0cmEgYXJndW1lbnQgImJhciIgaWdub3JlZAogXGRBKwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCi0gIE5hbWUgIHwgVHlwZSAgfCAgICAgICBI YW5kbGVyICAgICAgICB8ICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgIAot LS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIGFjY2VzcyBtZXRob2RzCisgIE5hbWUgIHwgVHlwZSAgfCAgICAgICBIYW5kbGVyICAg ICAgICB8ICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGJyaW4gICB8IEluZGV4IHwgYnJpbmhhbmRsZXIgICAg ICAgICAgfCBibG9jayByYW5nZSBpbmRleCAoQlJJTikgYWNjZXNzIG1ldGhvZAogIGJ0cmVlICB8 IEluZGV4IHwgYnRoYW5kbGVyICAgICAgICAgICAgfCBiLXRyZWUgaW5kZXggYWNjZXNzIG1ldGhv ZAogIGdpbiAgICB8IEluZGV4IHwgZ2luaGFuZGxlciAgICAgICAgICAgfCBHSU4gaW5kZXggYWNj ZXNzIG1ldGhvZApAQCAtNTE4OSwxMiArNTE5MSwxMyBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2Rz CiAgaGVhcCAgIHwgVGFibGUgfCBoZWFwX3RhYmxlYW1faGFuZGxlciB8IGhlYXAgdGFibGUgYWNj ZXNzIG1ldGhvZAogIGhlYXAyICB8IFRhYmxlIHwgaGVhcF90YWJsZWFtX2hhbmRsZXIgfCAKICBz cGdpc3QgfCBJbmRleCB8IHNwZ2hhbmRsZXIgICAgICAgICAgIHwgU1AtR2lTVCBpbmRleCBhY2Nl c3MgbWV0aG9kCi0oOCByb3dzKQorIHN0aXIgICB8IEluZGV4IHwgc3RpcmhhbmRsZXIgICAgICAg ICAgfCBzaG9ydCB0ZXJtIGluZGV4IHJlcGxhY2VtZW50IGFjY2VzcyBtZXRob2QKKyg5IHJvd3Mp CiAKIFxkQSsgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFjY2VzcyBt ZXRob2RzCi0gIE5hbWUgIHwgVHlwZSAgfCAgICAgICBIYW5kbGVyICAgICAgICB8ICAgICAgICAg ICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgIAotLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCisg IE5hbWUgIHwgVHlwZSAgfCAgICAgICBIYW5kbGVyICAgICAgICB8ICAgICAgICAgICAgICAgIERl c2NyaXB0aW9uICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog IGJyaW4gICB8IEluZGV4IHwgYnJpbmhhbmRsZXIgICAgICAgICAgfCBibG9jayByYW5nZSBpbmRl eCAoQlJJTikgYWNjZXNzIG1ldGhvZAogIGJ0cmVlICB8IEluZGV4IHwgYnRoYW5kbGVyICAgICAg ICAgICAgfCBiLXRyZWUgaW5kZXggYWNjZXNzIG1ldGhvZAogIGdpbiAgICB8IEluZGV4IHwgZ2lu aGFuZGxlciAgICAgICAgICAgfCBHSU4gaW5kZXggYWNjZXNzIG1ldGhvZApAQCAtNTIwMyw3ICs1 MjA2LDggQEAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogIGhlYXAgICB8IFRhYmxlIHwgaGVhcF90 YWJsZWFtX2hhbmRsZXIgfCBoZWFwIHRhYmxlIGFjY2VzcyBtZXRob2QKICBoZWFwMiAgfCBUYWJs ZSB8IGhlYXBfdGFibGVhbV9oYW5kbGVyIHwgCiAgc3BnaXN0IHwgSW5kZXggfCBzcGdoYW5kbGVy ICAgICAgICAgICB8IFNQLUdpU1QgaW5kZXggYWNjZXNzIG1ldGhvZAotKDggcm93cykKKyBzdGly ICAgfCBJbmRleCB8IHN0aXJoYW5kbGVyICAgICAgICAgIHwgc2hvcnQgdGVybSBpbmRleCByZXBs YWNlbWVudCBhY2Nlc3MgbWV0aG9kCisoOSByb3dzKQogCiBcZEErIGgqCiAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCi0tIAoyLjQzLjAKCg== --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="nocfbot-v24-only-part-3-0003-Use-auxiliary-indexes-for-concurrent.patch" Content-Disposition: attachment; filename="nocfbot-v24-only-part-3-0003-Use-auxiliary-indexes-for-concurrent.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm0i2 RnJvbSA3OGRlNjg5OWIxNmM5OTJiOGY4YTM1Yzc2NjUxZDYwN2IwNzMzODg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNTowMzoxMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI0LW9ubHktcGFydC0zIDMvNl0gVXNlIGF1eGlsaWFyeSBpbmRleGVzIGZvciBjb25j dXJyZW50CiBpbmRleCBvcGVyYXRpb25zCgpSZXBsYWNlIHRoZSBzZWNvbmQgdGFibGUgZnVsbCBz Y2FuIGluIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHdpdGggYW4gYXV4aWxpYXJ5IGluZGV4IGFw cHJvYWNoOgotIGNyZWF0ZSBhIFNUSVIgIGF1eGlsaWFyeSBpbmRleCB3aXRoIHRoZSBzYW1lIHBy ZWRpY2F0ZSAoaWYgZXhpc3RzKSBhcyBpbiBtYWluIGluZGV4Ci0gdXNlIGl0IHRvIHRyYWNrIHR1 cGxlcyBpbnNlcnRlZCBkdXJpbmcgdGhlIGZpcnN0IHBoYXNlCi0gbWVyZ2UgYXV4aWxpYXJ5IGlu ZGV4IHdpdGggbWFpbiBpbmRleCBkdXJpbmcgdmFsaWRhdGlvbiB0byBjYXRjaCB1cCBuZXcgaW5k ZXggd2l0aCBhbnkgdHVwbGVzIG1pc3NlZCBkdXJpbmcgdGhlIGZpcnN0IHBoYXNlCi0gYXV0b21h dGljYWxseSBkcm9wIGF1eGlsaWFyeSB3aGVuIG1haW4gaW5kZXggaXMgcmVhZHkKClRvIG1lcmdl IG1haW4gYW5kIGF1eGlsaWFyeSBpbmRleGVzOgotIGluZGV4X2J1bGtfZGVsZXRlIGNhbGxlZCBm b3IgYm90aCwgVElEcyBwdXQgaW50byB0dXBsZXNvcnQKLSBib3RoIHR1cGxlc29ydCBhcmUgYmVp bmcgc29ydGVkCi0gYm90aCB0dXBsZXNvcnQgc2Nhbm5lZCB3aXRoIHR3byBwb2ludGVycyBsb29r aW5nIGZvciB0aGUgVElEcyBwcmVzZW50IGluIGF1eGlsaWFyeSBpbmRleCwgYnV0IGFic2VudCBp biBtYWluIG9uZQotIGFsbCBzdWNoIFRJRHMgYXJlIHB1dCBpbnRvIHR1cGxlc3RvcmUKLSBhbGwg VElEcyBpbiB0dXBsZXN0b3JlIGFyZSBmZXRjaGVkIHVzaW5nIHRoZSBzdHJlYW0sIHR1cGxlc3Rv cmUgdXNlZCBpbiBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9yZWFkX3N0cmVhbV9uZXh0IHRv IHByb3ZpZGUgdGhlIG5leHQgcGFnZSB0byBwcmVmZXRjaAotIGlmIGZldGNoZWQgdHVwbGUgaXMg YWxpdmUgLSBpdCBpcyBpbnNlcnRlZCBpbnRvIHRoZSBtYWluIGluZGV4CgpUaGlzIGVsaW1pbmF0 ZXMgdGhlIG5lZWQgZm9yIGEgc2Vjb25kIGZ1bGwgdGFibGUgc2NhbiBkdXJpbmcgdmFsaWRhdGlv biwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGVzcGVjaWFsbHkgZm9yIGxhcmdlIHRhYmxlcy4gQWZm ZWN0cyBib3RoIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgYW5kIFJFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIG9wZXJhdGlvbnMuCi0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAg ICAgICAgICAgICAgIHwgIDI2ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21s ICAgICAgICAgfCAgMzQgKy0KIGRvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sICAgICAgICAg ICAgICB8ICA0MSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCAgICAgICAg IHwgIDEzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgfCA1 NDQgKysrKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAg ICAgICAgICAgICAgfCAzMTMgKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV92aWV3cy5zcWwgICAgICAgfCAgMTcgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21k cy5jICAgICAgICAgICB8IDM0NCArKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9ub2Rlcy9tYWtl ZnVuY3MuYyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFt LmggICAgICAgICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAg ICAgICAgICAgICAgIHwgICA5ICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oICAg ICAgICAgICAgfCAgMTMgKy0KIHNyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oICAgICAgICAg ICAgICB8ICAgMyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0 IHwgIDQyICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dCAgICAgfCAg IDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgICB8ICAxNyAr LQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCAgICAgIHwgIDIxICsKIDE3 IGZpbGVzIGNoYW5nZWQsIDExMjIgaW5zZXJ0aW9ucygrKSwgMzM0IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9u aXRvcmluZy5zZ21sCmluZGV4IDNmNGEyN2E3MzZlLi41YzQ4ZTUyOWU0YSAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmlu Zy5zZ21sCkBAIC02MzI3LDYgKzYzMjcsMTggQEAgRlJPTSBwZ19zdGF0X2dldF9iYWNrZW5kX2lk c2V0KCkgQVMgYmFja2VuZGlkOwogICAgICAgIGluZm9ybWF0aW9uIGZvciB0aGlzIHBoYXNlLgog ICAgICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxp dGVyYWw+d2FpdGluZyBmb3Igd3JpdGVycyB0byB1c2UgYXV4aWxpYXJ5IGluZGV4PC9saXRlcmFs PjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENP TkNVUlJFTlRMWTwvY29tbWFuZD4gb3IgPGNvbW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2Nv bW1hbmQ+IGlzIHdhaXRpbmcgZm9yIHRyYW5zYWN0aW9ucworICAgICAgIHdpdGggd3JpdGUgbG9j a3MgdGhhdCBjYW4gcG90ZW50aWFsbHkgc2VlIHRoZSB0YWJsZSB0byBmaW5pc2gsIHRvIGVuc3Vy ZSB1c2Ugb2YgYXV4aWxpYXJ5IGluZGV4IGZvciBuZXcgdHVwbGVzIGluCisgICAgICAgZnV0dXJl IHRyYW5zYWN0aW9ucy4KKyAgICAgICBUaGlzIHBoYXNlIGlzIHNraXBwZWQgd2hlbiBub3QgaW4g Y29uY3VycmVudCBtb2RlLgorICAgICAgIENvbHVtbnMgPHN0cnVjdG5hbWU+bG9ja2Vyc190b3Rh bDwvc3RydWN0bmFtZT4sIDxzdHJ1Y3RuYW1lPmxvY2tlcnNfZG9uZTwvc3RydWN0bmFtZT4KKyAg ICAgICBhbmQgPHN0cnVjdG5hbWU+Y3VycmVudF9sb2NrZXJfcGlkPC9zdHJ1Y3RuYW1lPiBjb250 YWluIHRoZSBwcm9ncmVzcworICAgICAgIGluZm9ybWF0aW9uIGZvciB0aGlzIHBoYXNlLgorICAg ICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnk+PGxpdGVy YWw+YnVpbGRpbmcgaW5kZXg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT4KQEAgLTYz NjcsMTMgKzYzNzksMTIgQEAgRlJPTSBwZ19zdGF0X2dldF9iYWNrZW5kX2lkc2V0KCkgQVMgYmFj a2VuZGlkOwogICAgICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CiAgICAgIDxyb3c+Ci0gICAgICA8 ZW50cnk+PGxpdGVyYWw+aW5kZXggdmFsaWRhdGlvbjogc2Nhbm5pbmcgdGFibGU8L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5pbmRleCB2YWxpZGF0aW9uOiBtZXJnaW5n IGluZGV4ZXM8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT4KLSAgICAgICA8Y29tbWFu ZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBpcyBzY2FubmluZyB0aGUgdGFi bGUKLSAgICAgICB0byB2YWxpZGF0ZSB0aGUgaW5kZXggdHVwbGVzIGNvbGxlY3RlZCBpbiB0aGUg cHJldmlvdXMgdHdvIHBoYXNlcy4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZPC9jb21tYW5kPiBtZXJnaW5nIGNvbnRlbnQgb2YgYXV4aWxpYXJ5IGluZGV4IHdpdGgg dGhlIHRhcmdldCBpbmRleC4KICAgICAgICBUaGlzIHBoYXNlIGlzIHNraXBwZWQgd2hlbiBub3Qg aW4gY29uY3VycmVudCBtb2RlLgotICAgICAgIENvbHVtbnMgPHN0cnVjdG5hbWU+YmxvY2tzX3Rv dGFsPC9zdHJ1Y3RuYW1lPiAoc2V0IHRvIHRoZSB0b3RhbCBzaXplIG9mIHRoZSB0YWJsZSkKLSAg ICAgICBhbmQgPHN0cnVjdG5hbWU+YmxvY2tzX2RvbmU8L3N0cnVjdG5hbWU+IGNvbnRhaW4gdGhl IHByb2dyZXNzIGluZm9ybWF0aW9uIGZvciB0aGlzIHBoYXNlLgorICAgICAgIENvbHVtbnMgPHN0 cnVjdG5hbWU+dHVwbGVzX3RvdGFsPC9zdHJ1Y3RuYW1lPiAoc2V0IHRvIHRoZSBudW1iZXIgb2Yg dHVwbGVzIHRvIGJlIG1lcmdlZCkKKyAgICAgICBhbmQgPHN0cnVjdG5hbWU+dHVwbGVzX2RvbmU8 L3N0cnVjdG5hbWU+IGNvbnRhaW4gdGhlIHByb2dyZXNzIGluZm9ybWF0aW9uIGZvciB0aGlzIHBo YXNlLgogICAgICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CiAgICAgIDxyb3c+CkBAIC02MzkwLDgg KzY0MDEsOSBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7 CiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnk+PGxpdGVyYWw+d2FpdGluZyBmb3IgcmVhZGVycyBi ZWZvcmUgbWFya2luZyBkZWFkPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICA8ZW50cnk+Ci0gICAg ICAgPGNvbW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGlzIHdhaXRpbmcgZm9y IHRyYW5zYWN0aW9ucwotICAgICAgIHdpdGggcmVhZCBsb2NrcyBvbiB0aGUgdGFibGUgdG8gZmlu aXNoLCBiZWZvcmUgbWFya2luZyB0aGUgb2xkIGluZGV4IGRlYWQuCisgICAgICAgPGNvbW1hbmQ+ Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgd2FpdGluZyBmb3IgdHJhbnNh Y3Rpb25zCisgICAgICAgIHdpdGggcmVhZCBsb2NrcyBvbiB0aGUgdGFibGUgdG8gZmluaXNoLCBi ZWZvcmUgbWFya2luZyB0aGUgYXV4aWxpYXJ5IGluZGV4IGFzIGRlYWQuCisgICAgICAgPGNvbW1h bmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGlzIGFsc28gd2FpdGluZyBiZWZvcmUg bWFya2luZyB0aGUgb2xkIGluZGV4IGFzIGRlYWQuCiAgICAgICAgVGhpcyBwaGFzZSBpcyBza2lw cGVkIHdoZW4gbm90IGluIGNvbmN1cnJlbnQgbW9kZS4KICAgICAgICBDb2x1bW5zIDxzdHJ1Y3Ru YW1lPmxvY2tlcnNfdG90YWw8L3N0cnVjdG5hbWU+LCA8c3RydWN0bmFtZT5sb2NrZXJzX2RvbmU8 L3N0cnVjdG5hbWU+CiAgICAgICAgYW5kIDxzdHJ1Y3RuYW1lPmN1cnJlbnRfbG9ja2VyX3BpZDwv c3RydWN0bmFtZT4gY29udGFpbiB0aGUgcHJvZ3Jlc3MKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5z Z21sCmluZGV4IGI5YzY3OWM0MWU4Li4zMGRiMDc5YzhkOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9p bmRleC5zZ21sCkBAIC02MjAsMTAgKzYyMCwxMCBAQCBDUkVBVEUgWyBVTklRVUUgXSBJTkRFWCBb IENPTkNVUlJFTlRMWSBdIFsgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPQog ICAgIG91dCB3cml0ZXMuICBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHNwZWNpZnlpbmcgdGhl CiAgICAgPGxpdGVyYWw+Q09OQ1VSUkVOVExZPC9saXRlcmFsPiBvcHRpb24gb2YgPGNvbW1hbmQ+ Q1JFQVRFIElOREVYPC9jb21tYW5kPi4KICAgICBXaGVuIHRoaXMgb3B0aW9uIGlzIHVzZWQsCi0g ICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBtdXN0IHBlcmZvcm0gdHdv IHNjYW5zIG9mIHRoZSB0YWJsZSwgYW5kIGluCi0gICAgYWRkaXRpb24gaXQgbXVzdCB3YWl0IGZv ciBhbGwgZXhpc3RpbmcgdHJhbnNhY3Rpb25zIHRoYXQgY291bGQgcG90ZW50aWFsbHkKLSAgICBt b2RpZnkgb3IgdXNlIHRoZSBpbmRleCB0byB0ZXJtaW5hdGUuICBUaHVzCi0gICAgdGhpcyBtZXRo b2QgcmVxdWlyZXMgbW9yZSB0b3RhbCB3b3JrIHRoYW4gYSBzdGFuZGFyZCBpbmRleCBidWlsZCBh bmQgdGFrZXMKKyAgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11c3Qg cGVyZm9ybSB0YWJsZSBzY2FuIGZvbGxvd2VkIGJ5CisgICAgdmFsaWRhdGlvbiBwaGFzZSwgYW5k IGluIGFkZGl0aW9uIGl0IG11c3Qgd2FpdCBmb3IgYWxsIGV4aXN0aW5nIHRyYW5zYWN0aW9ucwor ICAgIHRoYXQgY291bGQgcG90ZW50aWFsbHkgbW9kaWZ5IG9yIHVzZSB0aGUgaW5kZXggdG8gdGVy bWluYXRlLiAgVGh1cworICAgIHRoaXMgbWV0aG9kIHJlcXVpcmVzIG1vcmUgdG90YWwgd29yayB0 aGFuIGEgc3RhbmRhcmQgaW5kZXggYnVpbGQgYW5kIG1heSB0YWtlCiAgICAgc2lnbmlmaWNhbnRs eSBsb25nZXIgdG8gY29tcGxldGUuICBIb3dldmVyLCBzaW5jZSBpdCBhbGxvd3Mgbm9ybWFsCiAg ICAgb3BlcmF0aW9ucyB0byBjb250aW51ZSB3aGlsZSB0aGUgaW5kZXggaXMgYnVpbHQsIHRoaXMg bWV0aG9kIGlzIHVzZWZ1bCBmb3IKICAgICBhZGRpbmcgbmV3IGluZGV4ZXMgaW4gYSBwcm9kdWN0 aW9uIGVudmlyb25tZW50LiAgT2YgY291cnNlLCB0aGUgZXh0cmEgQ1BVCkBAIC02MzEsMTQgKzYz MSwxNCBAQCBDUkVBVEUgWyBVTklRVUUgXSBJTkRFWCBbIENPTkNVUlJFTlRMWSBdIFsgWyBJRiBO T1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPQogICAgPC9wYXJhPgogCiAgICA8cGFyYT4K LSAgICBJbiBhIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsIHRoZSBpbmRleCBpcyBhY3R1YWxseSBl bnRlcmVkIGFzIGFuCi0gICAgPHF1b3RlPmludmFsaWQ8L3F1b3RlPiBpbmRleCBpbnRvCi0gICAg dGhlIHN5c3RlbSBjYXRhbG9ncyBpbiBvbmUgdHJhbnNhY3Rpb24sIHRoZW4gdHdvIHRhYmxlIHNj YW5zIG9jY3VyIGluCi0gICAgdHdvIG1vcmUgdHJhbnNhY3Rpb25zLiAgQmVmb3JlIGVhY2ggdGFi bGUgc2NhbiwgdGhlIGluZGV4IGJ1aWxkIG11c3QKKyAgICBJbiBhIGNvbmN1cnJlbnQgaW5kZXgg YnVpbGQsIHRoZSBtYWluIGFuZCBhdXhpbGlhcnkgaW5kZXhlcyBpcyBhY3R1YWxseQorICAgIGVu dGVyZWQgYXMgYW4gPHF1b3RlPmludmFsaWQ8L3F1b3RlPiBpbmRleCBpbnRvCisgICAgdGhlIHN5 c3RlbSBjYXRhbG9ncyBpbiBvbmUgdHJhbnNhY3Rpb24sIHRoZW4gdHdvIHBoYXNlcyBvY2N1ciBp bgorICAgIG11bHRpcGxlIHRyYW5zYWN0aW9ucy4gIEJlZm9yZSBlYWNoIHBoYXNlLCB0aGUgaW5k ZXggYnVpbGQgbXVzdAogICAgIHdhaXQgZm9yIGV4aXN0aW5nIHRyYW5zYWN0aW9ucyB0aGF0IGhh dmUgbW9kaWZpZWQgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4KLSAgICBBZnRlciB0aGUgc2Vjb25k IHNjYW4sIHRoZSBpbmRleCBidWlsZCBtdXN0IHdhaXQgZm9yIGFueSB0cmFuc2FjdGlvbnMKKyAg ICBBZnRlciB0aGUgc2Vjb25kIHBoYXNlLCB0aGUgaW5kZXggYnVpbGQgbXVzdCB3YWl0IGZvciBh bnkgdHJhbnNhY3Rpb25zCiAgICAgdGhhdCBoYXZlIGEgc25hcHNob3QgKHNlZSA8eHJlZiBsaW5r ZW5kPSJtdmNjIi8+KSBwcmVkYXRpbmcgdGhlIHNlY29uZAotICAgIHNjYW4gdG8gdGVybWluYXRl LCBpbmNsdWRpbmcgdHJhbnNhY3Rpb25zIHVzZWQgYnkgYW55IHBoYXNlIG9mIGNvbmN1cnJlbnQK KyAgICBwaGFzZSB0byB0ZXJtaW5hdGUsIGluY2x1ZGluZyB0cmFuc2FjdGlvbnMgdXNlZCBieSBh bnkgcGhhc2Ugb2YgY29uY3VycmVudAogICAgIGluZGV4IGJ1aWxkcyBvbiBvdGhlciB0YWJsZXMs IGlmIHRoZSBpbmRleGVzIGludm9sdmVkIGFyZSBwYXJ0aWFsIG9yIGhhdmUKICAgICBjb2x1bW5z IHRoYXQgYXJlIG5vdCBzaW1wbGUgY29sdW1uIHJlZmVyZW5jZXMuCiAgICAgVGhlbiBmaW5hbGx5 IHRoZSBpbmRleCBjYW4gYmUgbWFya2VkIDxxdW90ZT52YWxpZDwvcXVvdGU+IGFuZCByZWFkeSBm b3IgdXNlLApAQCAtNjUxLDEwICs2NTEsMTEgQEAgQ1JFQVRFIFsgVU5JUVVFIF0gSU5ERVggWyBD T05DVVJSRU5UTFkgXSBbIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0KICAg IDxwYXJhPgogICAgIElmIGEgcHJvYmxlbSBhcmlzZXMgd2hpbGUgc2Nhbm5pbmcgdGhlIHRhYmxl LCBzdWNoIGFzIGEgZGVhZGxvY2sgb3IgYQogICAgIHVuaXF1ZW5lc3MgdmlvbGF0aW9uIGluIGEg dW5pcXVlIGluZGV4LCB0aGUgPGNvbW1hbmQ+Q1JFQVRFIElOREVYPC9jb21tYW5kPgotICAgIGNv bW1hbmQgd2lsbCBmYWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1b3RlPmludmFsaWQ8L3F1b3Rl PiBpbmRleC4gVGhpcyBpbmRleAotICAgIHdpbGwgYmUgaWdub3JlZCBmb3IgcXVlcnlpbmcgcHVy cG9zZXMgYmVjYXVzZSBpdCBtaWdodCBiZSBpbmNvbXBsZXRlOwotICAgIGhvd2V2ZXIgaXQgd2ls bCBzdGlsbCBjb25zdW1lIHVwZGF0ZSBvdmVyaGVhZC4gVGhlIDxhcHBsaWNhdGlvbj5wc3FsPC9h cHBsaWNhdGlvbj4KLSAgICA8Y29tbWFuZD5cZDwvY29tbWFuZD4gY29tbWFuZCB3aWxsIHJlcG9y dCBzdWNoIGFuIGluZGV4IGFzIDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+OgorICAgIGNvbW1h bmQgd2lsbCBmYWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1b3RlPmludmFsaWQ8L3F1b3RlPiBp bmRleCBhbmQgaXRzCisgICAgYXNzb2NpYXRlZCBhdXhpbGlhcnkgaW5kZXguIFRoZXNlIGluZGV4 ZXMKKyAgICB3aWxsIGJlIGlnbm9yZWQgZm9yIHF1ZXJ5aW5nIHB1cnBvc2VzIGJlY2F1c2UgdGhl eSBtaWdodCBiZSBpbmNvbXBsZXRlOworICAgIGhvd2V2ZXIgdGhleSB3aWxsIHN0aWxsIGNvbnN1 bWUgdXBkYXRlIG92ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9uPgor ICAgIDxjb21tYW5kPlxkPC9jb21tYW5kPiBjb21tYW5kIHdpbGwgcmVwb3J0IHN1Y2ggaW5kZXhl cyBhcyA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPjoKIAogPHByb2dyYW1saXN0aW5nPgogcG9z dGdyZXM9IyBcZCB0YWIKQEAgLTY2NCwxMSArNjY1LDEyIEBAIHBvc3RncmVzPSMgXGQgdGFiCiAg Y29sICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwKIEluZGV4ZXM6CiAgICAg ImlkeCIgYnRyZWUgKGNvbCkgSU5WQUxJRAorICAgICJpZHhfY2NhdXgiIHN0aXIgKGNvbCkgSU5W QUxJRAogPC9wcm9ncmFtbGlzdGluZz4KIAogICAgIFRoZSByZWNvbW1lbmRlZCByZWNvdmVyeQot ICAgIG1ldGhvZCBpbiBzdWNoIGNhc2VzIGlzIHRvIGRyb3AgdGhlIGluZGV4IGFuZCB0cnkgYWdh aW4gdG8gcGVyZm9ybQotICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFk8L2Nv bW1hbmQ+LiAgKEFub3RoZXIgcG9zc2liaWxpdHkgaXMKKyAgICBtZXRob2QgaW4gc3VjaCBjYXNl cyBpcyB0byBkcm9wIHRoZXNlIGluZGV4ZXMgYW5kIHRyeSBhZ2FpbiB0byBwZXJmb3JtCisgICAg PGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4uIChBbm90aGVyIHBv c3NpYmlsaXR5IGlzCiAgICAgdG8gcmVidWlsZCB0aGUgaW5kZXggd2l0aCA8Y29tbWFuZD5SRUlO REVYIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4pLgogICAgPC9wYXJhPgogCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcmVp bmRleC5zZ21sCmluZGV4IGM0MDU1Mzk3MTQ2Li40ZWQzYzk2OTAxMiAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4 LnNnbWwKQEAgLTM2OCw5ICszNjgsOCBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogICAgIDxw cm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gc3VwcG9ydHMgcmVidWlsZGluZyBp bmRleGVzIHdpdGggbWluaW11bSBsb2NraW5nCiAgICAgb2Ygd3JpdGVzLiAgVGhpcyBtZXRob2Qg aXMgaW52b2tlZCBieSBzcGVjaWZ5aW5nIHRoZQogICAgIDxsaXRlcmFsPkNPTkNVUlJFTlRMWTwv bGl0ZXJhbD4gb3B0aW9uIG9mIDxjb21tYW5kPlJFSU5ERVg8L2NvbW1hbmQ+LiBXaGVuIHRoaXMg b3B0aW9uCi0gICAgaXMgdXNlZCwgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1l PiBtdXN0IHBlcmZvcm0gdHdvIHNjYW5zIG9mIHRoZSB0YWJsZQotICAgIGZvciBlYWNoIGluZGV4 IHRoYXQgbmVlZHMgdG8gYmUgcmVidWlsdCBhbmQgd2FpdCBmb3IgdGVybWluYXRpb24gb2YKLSAg ICBhbGwgZXhpc3RpbmcgdHJhbnNhY3Rpb25zIHRoYXQgY291bGQgcG90ZW50aWFsbHkgdXNlIHRo ZSBpbmRleC4KKyAgICBpcyB1c2VkLCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5h bWU+IG11c3QgcGVyZm9ybSBzZXZlcmFsIHN0ZXBzIHRvIGVuc3VyZSBkYXRhCisgICAgY29uc2lz dGVuY3kgd2hpbGUgYWxsb3dpbmcgbm9ybWFsIG9wZXJhdGlvbnMgdG8gY29udGludWUuCiAgICAg VGhpcyBtZXRob2QgcmVxdWlyZXMgbW9yZSB0b3RhbCB3b3JrIHRoYW4gYSBzdGFuZGFyZCBpbmRl eAogICAgIHJlYnVpbGQgYW5kIHRha2VzIHNpZ25pZmljYW50bHkgbG9uZ2VyIHRvIGNvbXBsZXRl IGFzIGl0IG5lZWRzIHRvIHdhaXQKICAgICBmb3IgdW5maW5pc2hlZCB0cmFuc2FjdGlvbnMgdGhh dCBtaWdodCBtb2RpZnkgdGhlIGluZGV4LiBIb3dldmVyLCBzaW5jZQpAQCAtMzg4LDcgKzM4Nyw3 IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3Jl cGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAgICAgPG9yZGVyZWRsaXN0PgogICAgICA8bGlz dGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBBIG5ldyB0cmFuc2llbnQgaW5kZXggZGVmaW5p dGlvbiBpcyBhZGRlZCB0byB0aGUgY2F0YWxvZworICAgICAgIEEgbmV3IHRyYW5zaWVudCBpbmRl eCBkZWZpbml0aW9uIGFuZCBhbiBhdXhpbGlhcnkgaW5kZXggYXJlIGFkZGVkIHRvIHRoZSBjYXRh bG9nCiAgICAgICAgPGxpdGVyYWw+cGdfaW5kZXg8L2xpdGVyYWw+LiAgVGhpcyBkZWZpbml0aW9u IHdpbGwgYmUgdXNlZCB0byByZXBsYWNlCiAgICAgICAgdGhlIG9sZCBpbmRleC4gIEEgPGxpdGVy YWw+U0hBUkUgVVBEQVRFIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBhdAogICAgICAgIHNlc3Np b24gbGV2ZWwgaXMgdGFrZW4gb24gdGhlIGluZGV4ZXMgYmVpbmcgcmVpbmRleGVkIGFzIHdlbGwg YXMgdGhlaXIKQEAgLTM5OCw3ICszOTcsMTUgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgREEKIAog ICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBBIGZpcnN0IHBhc3MgdG8gYnVp bGQgdGhlIGluZGV4IGlzIGRvbmUgZm9yIGVhY2ggbmV3IGluZGV4LiAgT25jZSB0aGUKKyAgICAg ICBUaGUgYXV4aWxpYXJ5IGluZGV4IGlzIG1hcmtlZCBhcyAicmVhZHkgZm9yIGluc2VydHMiLCBt YWtpbmcKKyAgICAgICBpdCB2aXNpYmxlIHRvIG90aGVyIHNlc3Npb25zLiBUaGlzIGluZGV4IGVm ZmljaWVudGx5IHRyYWNrcyBhbGwgbmV3CisgICAgICAgdHVwbGVzIGR1cmluZyB0aGUgcmVpbmRl eCBwcm9jZXNzLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorCisgICAgIDxsaXN0 aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBuZXcgbWFpbiBpbmRleCBpcyBidWlsdCBi eSBzY2FubmluZyB0aGUgdGFibGUuICBPbmNlIHRoZQogICAgICAgIGluZGV4IGlzIGJ1aWx0LCBp dHMgZmxhZyA8bGl0ZXJhbD5wZ19pbmRleC5pbmRpc3JlYWR5PC9saXRlcmFsPiBpcwogICAgICAg IHN3aXRjaGVkIHRvIDxxdW90ZT50cnVlPC9xdW90ZT4gdG8gbWFrZSBpdCByZWFkeSBmb3IgaW5z ZXJ0cywgbWFraW5nIGl0CiAgICAgICAgdmlzaWJsZSB0byBvdGhlciBzZXNzaW9ucyBvbmNlIHRo ZSB0cmFuc2FjdGlvbiB0aGF0IHBlcmZvcm1lZCB0aGUgYnVpbGQKQEAgLTQwOSw5ICs0MTYsOSBA QCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBs YWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJh PgotICAgICAgIFRoZW4gYSBzZWNvbmQgcGFzcyBpcyBwZXJmb3JtZWQgdG8gYWRkIHR1cGxlcyB0 aGF0IHdlcmUgYWRkZWQgd2hpbGUgdGhlCi0gICAgICAgZmlyc3QgcGFzcyB3YXMgcnVubmluZy4g IFRoaXMgc3RlcCBpcyBhbHNvIGRvbmUgaW4gYSBzZXBhcmF0ZQotICAgICAgIHRyYW5zYWN0aW9u IGZvciBlYWNoIGluZGV4LgorICAgICAgIEEgdmFsaWRhdGlvbiBwaGFzZSBtZXJnZXMgYW55IG1p c3NpbmcgZW50cmllcyBmcm9tIHRoZSBhdXhpbGlhcnkgaW5kZXgKKyAgICAgICBpbnRvIHRoZSBt YWluIGluZGV4LCBlbnN1cmluZyBhbGwgY29uY3VycmVudCBjaGFuZ2VzIGFyZSBjYXB0dXJlZC4K KyAgICAgICBUaGlzIHN0ZXAgaXMgYWxzbyBkb25lIGluIGEgc2VwYXJhdGUgdHJhbnNhY3Rpb24g Zm9yIGVhY2ggaW5kZXguCiAgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAKQEAgLTQy OCw3ICs0MzUsNyBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAgIDxsaXN0aXRlbT4K ICAgICAgIDxwYXJhPgotICAgICAgIFRoZSBvbGQgaW5kZXhlcyBoYXZlIDxsaXRlcmFsPnBnX2lu ZGV4LmluZGlzcmVhZHk8L2xpdGVyYWw+IHN3aXRjaGVkIHRvCisgICAgICAgVGhlIG9sZCBhbmQg YXV4aWxpYXJ5IGluZGV4ZXMgaGF2ZSA8bGl0ZXJhbD5wZ19pbmRleC5pbmRpc3JlYWR5PC9saXRl cmFsPiBzd2l0Y2hlZCB0bwogICAgICAgIDxxdW90ZT5mYWxzZTwvcXVvdGU+IHRvIHByZXZlbnQg YW55IG5ldyB0dXBsZSBpbnNlcnRpb25zLCBhZnRlciB3YWl0aW5nCiAgICAgICAgZm9yIHJ1bm5p bmcgcXVlcmllcyB0aGF0IG1pZ2h0IHJlZmVyZW5jZSB0aGUgb2xkIGluZGV4IHRvIGNvbXBsZXRl LgogICAgICAgPC9wYXJhPgpAQCAtNDM2LDcgKzQ0Myw3IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7 IERBCiAKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Ci0gICAgICAgVGhlIG9sZCBpbmRl eGVzIGFyZSBkcm9wcGVkLiAgVGhlIDxsaXRlcmFsPlNIQVJFIFVQREFURQorICAgICAgIFRoZSBv bGQgYW5kIGF1eGlsaWFyeSBpbmRleGVzIGFyZSBkcm9wcGVkLiAgVGhlIDxsaXRlcmFsPlNIQVJF IFVQREFURQogICAgICAgIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gc2Vzc2lvbiBsb2NrcyBmb3IgdGhl IGluZGV4ZXMgYW5kIHRoZSB0YWJsZSBhcmUKICAgICAgICByZWxlYXNlZC4KICAgICAgIDwvcGFy YT4KQEAgLTQ0NywxMSArNDU0LDExIEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAgICA8cGFy YT4KICAgICBJZiBhIHByb2JsZW0gYXJpc2VzIHdoaWxlIHJlYnVpbGRpbmcgdGhlIGluZGV4ZXMs IHN1Y2ggYXMgYQogICAgIHVuaXF1ZW5lc3MgdmlvbGF0aW9uIGluIGEgdW5pcXVlIGluZGV4LCB0 aGUgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFuZD4KLSAgICBjb21tYW5kIHdpbGwgZmFpbCBidXQg bGVhdmUgYmVoaW5kIGFuIDxxdW90ZT5pbnZhbGlkPC9xdW90ZT4gbmV3IGluZGV4IGluIGFkZGl0 aW9uIHRvCi0gICAgdGhlIHByZS1leGlzdGluZyBvbmUuIFRoaXMgaW5kZXggd2lsbCBiZSBpZ25v cmVkIGZvciBxdWVyeWluZyBwdXJwb3NlcwotICAgIGJlY2F1c2UgaXQgbWlnaHQgYmUgaW5jb21w bGV0ZTsgaG93ZXZlciBpdCB3aWxsIHN0aWxsIGNvbnN1bWUgdXBkYXRlCisgICAgY29tbWFuZCB3 aWxsIGZhaWwgYnV0IGxlYXZlIGJlaGluZCBhbiA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IG5ldyBp bmRleCBhbmQgaXRzIGF1eGlsaWFyeSBpbmRleCBpbiBhZGRpdGlvbiB0bworICAgIHRoZSBwcmUt ZXhpc3Rpbmcgb25lLiBUaGVzZSBpbmRleGVzIHdpbGwgYmUgaWdub3JlZCBmb3IgcXVlcnlpbmcg cHVycG9zZXMKKyAgICBiZWNhdXNlIHRoZXkgbWlnaHQgYmUgaW5jb21wbGV0ZTsgaG93ZXZlciB0 aGV5IHdpbGwgc3RpbGwgY29uc3VtZSB1cGRhdGUKICAgICBvdmVyaGVhZC4gVGhlIDxhcHBsaWNh dGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4gPGNvbW1hbmQ+XGQ8L2NvbW1hbmQ+IGNvbW1hbmQgd2ls bCByZXBvcnQKLSAgICBzdWNoIGFuIGluZGV4IGFzIDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+ OgorICAgIHN1Y2ggaW5kZXhlcyBhcyA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPjoKIAogPHBy b2dyYW1saXN0aW5nPgogcG9zdGdyZXM9IyBcZCB0YWIKQEAgLTQ2MiwxMiArNDY5LDE0IEBAIHBv c3RncmVzPSMgXGQgdGFiCiBJbmRleGVzOgogICAgICJpZHgiIGJ0cmVlIChjb2wpCiAgICAgImlk eF9jY25ldyIgYnRyZWUgKGNvbCkgSU5WQUxJRAorICAgICJpZHhfY2NhdXgiIHN0aXIgKGNvbCkg SU5WQUxJRAorCiA8L3Byb2dyYW1saXN0aW5nPgogCiAgICAgSWYgdGhlIGluZGV4IG1hcmtlZCA8 bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPiBpcyBzdWZmaXhlZAotICAgIDxsaXRlcmFsPl9jY25l dzwvbGl0ZXJhbD4sIHRoZW4gaXQgY29ycmVzcG9uZHMgdG8gdGhlIHRyYW5zaWVudAorICAgIDxs aXRlcmFsPl9jY25ldzwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+X2NjYXV4PC9saXRlcmFsPiwgdGhl biBpdCBjb3JyZXNwb25kcyB0byB0aGUgdHJhbnNpZW50IG9yIGF1eGlsaWFyeQogICAgIGluZGV4 IGNyZWF0ZWQgZHVyaW5nIHRoZSBjb25jdXJyZW50IG9wZXJhdGlvbiwgYW5kIHRoZSByZWNvbW1l bmRlZAotICAgIHJlY292ZXJ5IG1ldGhvZCBpcyB0byBkcm9wIGl0IHVzaW5nIDxsaXRlcmFsPkRS T1AgSU5ERVg8L2xpdGVyYWw+LAorICAgIHJlY292ZXJ5IG1ldGhvZCBpcyB0byBkcm9wIHRoZXNl IGluZGV4ZXMgdXNpbmcgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0ZXJhbD4sCiAgICAgdGhlbiBh dHRlbXB0IDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBhZ2Fpbi4KICAg ICBJZiB0aGUgaW52YWxpZCBpbmRleCBpcyBpbnN0ZWFkIHN1ZmZpeGVkIDxsaXRlcmFsPl9jY29s ZDwvbGl0ZXJhbD4sCiAgICAgaXQgY29ycmVzcG9uZHMgdG8gdGhlIG9yaWdpbmFsIGluZGV4IHdo aWNoIGNvdWxkIG5vdCBiZSBkcm9wcGVkOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvUkVBRE1FLkhPVCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5k ZXggNzRlNDA3ZjM3NWEuLjI4ZTJhMTYwNGM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9SRUFETUUuSE9UCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5I T1QKQEAgLTM3NSw2ICszNzUsMTEgQEAgY29uc3RyYWludCBvbiB3aGljaCB1cGRhdGVzIGNhbiBi ZSBIT1QuICBPdGhlciB0cmFuc2FjdGlvbnMgbXVzdCBpbmNsdWRlCiBzdWNoIGFuIGluZGV4IHdo ZW4gZGV0ZXJtaW5pbmcgSE9ULXNhZmV0eSBvZiB1cGRhdGVzLCBldmVuIHRob3VnaCB0aGV5CiBt dXN0IGlnbm9yZSBpdCBmb3IgYm90aCBpbnNlcnRpb24gYW5kIHNlYXJjaGluZyBwdXJwb3Nlcy4K IAorQWxzbywgc3BlY2lhbCBhdXhpbGlhcnkgaW5kZXggaXMgY3JlYXRlZCB0aGUgc2FtZSB3YXku IEl0IG1hcmtlZCBhcworInJlYWR5IGZvciBpbnNlcnRzIiB3aXRob3V0IGFueSBhY3R1YWwgdGFi bGUgc2Nhbi4gSXRzIHB1cnBvc2UgaXMgY29sbGVjdAorbmV3IHR1cGxlcyBpbnNlcnRlZCBpbnRv IHRhYmxlIHdoaWxlIG91ciB0YXJnZXQgaW5kZXggaXMgc3RpbGwgIm5vdCByZWFkeQorZm9yIGlu c2VydHMiCisKIFdlIG11c3QgZG8gdGhpcyB0byBhdm9pZCBtYWtpbmcgaW5jb3JyZWN0IGluZGV4 IGVudHJpZXMuICBGb3IgZXhhbXBsZSwKIHN1cHBvc2Ugd2UgYXJlIGJ1aWxkaW5nIGFuIGluZGV4 IG9uIGNvbHVtbiBYIGFuZCB3ZSBtYWtlIGFuIGluZGV4IGVudHJ5IGZvcgogYSBub24tSE9UIHR1 cGxlIHdpdGggWD0xLiAgVGhlbiBzb21lIG90aGVyIGJhY2tlbmQsIHVuYXdhcmUgdGhhdCBYIGlz IGFuCkBAIC0zOTQsMTAgKzM5OSwxMCBAQCBlbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVw ZGF0ZSBjaGFpbiBidXQgd2UgdXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUKIGxpdmUgdHVwbGUu CiAKIFdlIG1hcmsgdGhlIGluZGV4IG9wZW4gZm9yIGluc2VydHMgKGJ1dCBzdGlsbCBub3QgcmVh ZHkgZm9yIHJlYWRzKSB0aGVuCi13ZSBhZ2FpbiB3YWl0IGZvciB0cmFuc2FjdGlvbnMgd2hpY2gg aGF2ZSB0aGUgdGFibGUgb3Blbi4gIFRoZW4gd2UgdGFrZQotYSBzZWNvbmQgcmVmZXJlbmNlIHNu YXBzaG90IGFuZCB2YWxpZGF0ZSB0aGUgaW5kZXguICBUaGlzIHNlYXJjaGVzIGZvcgotdHVwbGVz IG1pc3NpbmcgZnJvbSB0aGUgaW5kZXgsIGFuZCBpbnNlcnRzIGFueSBtaXNzaW5nIG9uZXMuICBB Z2FpbiwKLXRoZSBpbmRleCBlbnRyaWVzIGhhdmUgdG8gaGF2ZSBUSURzIGVxdWFsIHRvIEhPVC1j aGFpbiByb290IFRJRHMsIGJ1dAord2UgYWdhaW4gd2FpdCBmb3IgdHJhbnNhY3Rpb25zIHdoaWNo IGhhdmUgdGhlIHRhYmxlIG9wZW4uICBUaGVuIHZhbGlkYXRlCit0aGUgaW5kZXguICBUaGlzIHNl YXJjaGVzIGZvciB0dXBsZXMgbWlzc2luZyBmcm9tIHRoZSBpbmRleCBpbiBhdXhpbGlhcnkKK2lu ZGV4LCBhbmQgaW5zZXJ0cyBhbnkgbWlzc2luZyBvbmVzIGlmIHRoZW0gdmlzaWJsZSB0byByZWZl cmVuY2Ugc25hcHNob3QuCitBZ2FpbiwgdGhlIGluZGV4IGVudHJpZXMgaGF2ZSB0byBoYXZlIFRJ RHMgZXF1YWwgdG8gSE9ULWNoYWluIHJvb3QgVElEcywgYnV0CiB0aGUgdmFsdWUgdG8gYmUgaW5z ZXJ0ZWQgaXMgdGhlIG9uZSBmcm9tIHRoZSBsaXZlIHR1cGxlLgogCiBUaGVuIHdlIHdhaXQgdW50 aWwgZXZlcnkgdHJhbnNhY3Rpb24gdGhhdCBjb3VsZCBoYXZlIGEgc25hcHNob3Qgb2xkZXIgdGhh bgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggYmNiYWM4NDRi YjYuLmM4NWU1MzMyYmEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVy LmMKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKICNpbmNs dWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgorI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAj aW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAg LTE3NDMsMjQyICsxNzQ0LDQwNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxh dGlvbiBoZWFwUmVsYXRpb24sCiAJcmV0dXJuIHJlbHR1cGxlczsKIH0KIAorLyoKKyAqIENhbGN1 bGF0ZSBzZXQgZGlmZmVyZW5jZSAocmVsYXRpdmUgY29tcGxlbWVudCkgb2YgbWFpbiBhbmQgYXV4 CisgKiBzZXRzLgorICoKKyAqIEFsbCByZWNvcmRzIHdoaWNoIGFyZSBwcmVzZW50IGluIGF1eGxp YXJ5IHR1cGxlc29ydCBidXQgbm90IGlzCisgKiBtYWluIGFyZSBhZGRlZCB0byB0aGUgc3RvcmUu CisgKgorICogSW4gc2V0IHRoZW9yeSBub3RhdGlvbiBzdG9yZSA9IGF1eCAtIG1haW4gb3Igc3Rv cmUgPSBhdXggLyBtYWluLgorICoKKyAqIHJldHVybnMgbnVtYmVyIG9mIGl0ZW1zIGFkZGVkIHRv IHN0b3JlCisgKi8KK3N0YXRpYyBpbnQKK2hlYXBhbV9pbmRleF92YWxpZGF0ZV90dXBsZXNvcnRf ZGlmZmVyZW5jZShUdXBsZXNvcnRzdGF0ZSAgKm1haW4sCisJCQkJCQkJCQkJICAgVHVwbGVzb3J0 c3RhdGUgICphdXgsCisJCQkJCQkJCQkJICAgVHVwbGVzdG9yZXN0YXRlICpzdG9yZSkKK3sKKwlp bnQJCQkJbnVtID0gMDsKKwkvKiBzdGF0ZSB2YXJpYWJsZXMgZm9yIHRoZSBtZXJnZSAqLworCUl0 ZW1Qb2ludGVyIAlpbmRleGN1cnNvciA9IE5VTEwsCisJCQkJCWF1eGluZGV4Y3Vyc29yID0gTlVM TDsKKwlJdGVtUG9pbnRlckRhdGEgZGVjb2RlZCwKKwkJCQkJYXV4ZGVjb2RlZDsKKwlib29sCQkJ dHVwbGVzb3J0X2VtcHR5ID0gZmFsc2UsCisJCQkJCWF1eHR1cGxlc29ydF9lbXB0eSA9IGZhbHNl OworCisJLyogSW5pdGlhbGl6ZSBwb2ludGVycy4gKi8KKwlJdGVtUG9pbnRlclNldEludmFsaWQo JmRlY29kZWQpOworCUl0ZW1Qb2ludGVyU2V0SW52YWxpZCgmYXV4ZGVjb2RlZCk7CisKKwkvKgor CSAqIE1haW4gbG9vcDogd2Ugc3RlcCB0aHJvdWdoIHRoZSBhdXhpbGlhcnkgc29ydCAoYXV4U3Rh dGUtPnR1cGxlc29ydCksCisJICogd2hpY2ggaG9sZHMgVElEcyB0aGF0IG11c3QgY29tcGFyZWQg dG8gdGhvc2UgZnJvbSB0aGUgIm1haW4iIHNvcnQKKwkgKiAoc3RhdGUtPnR1cGxlc29ydCkuCisJ ICovCisJd2hpbGUgKCFhdXh0dXBsZXNvcnRfZW1wdHkpCisJeworCQlEYXR1bQkJdHNfdmFsOwor CQlib29sCQl0c19pc251bGw7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyoKKwkJ KiBBdHRlbXB0IHRvIGZldGNoIHRoZSBuZXh0IFRJRCBmcm9tIHRoZSBhdXhpbGlhcnkgc29ydC4g SWYgaXQncworCQkqIGVtcHR5LCB3ZSBzZXQgYXV4aW5kZXhjdXJzb3IgdG8gTlVMTC4KKwkJKi8K KwkJYXV4dHVwbGVzb3J0X2VtcHR5ID0gIXR1cGxlc29ydF9nZXRkYXR1bShhdXgsIHRydWUsCisJ CQkJCQkJCQkJCQkgZmFsc2UsICZ0c192YWwsICZ0c19pc251bGwsCisJCQkJCQkJCQkJCQkgTlVM TCk7CisJCUFzc2VydChhdXh0dXBsZXNvcnRfZW1wdHkgfHwgIXRzX2lzbnVsbCk7CisJCWlmICgh YXV4dHVwbGVzb3J0X2VtcHR5KQorCQl7CisJCQlpdGVtcHRyX2RlY29kZSgmYXV4ZGVjb2RlZCwg RGF0dW1HZXRJbnQ2NCh0c192YWwpKTsKKwkJCWF1eGluZGV4Y3Vyc29yID0gJmF1eGRlY29kZWQ7 CisJCX0KKwkJZWxzZQorCQl7CisJCQlhdXhpbmRleGN1cnNvciA9IE5VTEw7CisJCX0KKworCQkv KgorCQkqIElmIHRoZSBhdXhpbGlhcnkgc29ydCBpcyBub3QgeWV0IGVtcHR5LCB3ZSBub3cgdHJ5 IHRvIHN5bmNocm9uaXplCisJCSogdGhlICJtYWluIiBzb3J0IGN1cnNvciAoaW5kZXhjdXJzb3Ip IHdpdGggYXV4aW5kZXhjdXJzb3IuIFdlIGFkdmFuY2UKKwkJKiB0aGUgbWFpbiBzb3J0IGN1cnNv ciB1bnRpbCB3ZSd2ZSByZWFjaGVkIG9yIHBhc3NlZCB0aGUgYXV4aWxpYXJ5IFRJRC4KKwkJKi8K KwkJaWYgKCFhdXh0dXBsZXNvcnRfZW1wdHkpCisJCXsKKwkJCS8qCisJCQkgKiBNb3ZlIHRoZSBt YWluIHNvcnQgZm9yd2FyZCB3aGlsZToKKwkJCSAqICAgKDEpIEl0J3Mgbm90IGV4aGF1c3RlZCAo dHVwbGVzb3J0X2VtcHR5ID09IGZhbHNlKSwgYW5kCisJCQkgKiAgICgyKSBFaXRoZXIgaW5kZXhj dXJzb3IgaXMgTlVMTCAoZmlyc3QgaXRlcmF0aW9uKSBvcgorCQkJICogICAgICAgaW5kZXhjdXJz b3IgPCBhdXhpbmRleGN1cnNvciBpbiBUSUQgb3JkZXIuCisJCQkgKi8KKwkJCXdoaWxlICghdHVw bGVzb3J0X2VtcHR5ICYmIChpbmRleGN1cnNvciA9PSBOVUxMIHx8IC8qIG51bGwgb24gZmlyc3Qg dGltZSBoZXJlICovCisJCQkJCQlJdGVtUG9pbnRlckNvbXBhcmUoaW5kZXhjdXJzb3IsIGF1eGlu ZGV4Y3Vyc29yKSA8IDApKQorCQkJeworCQkJCS8qCisJCQkJICogR2V0IHRoZSBuZXh0IFRJRCBm cm9tIHRoZSBtYWluIHNvcnQuIElmIGl0J3MgZW1wdHksCisJCQkJICogd2Ugc2V0IGluZGV4Y3Vy c29yIHRvIE5VTEwuCisJCQkJICovCisJCQkJdHVwbGVzb3J0X2VtcHR5ID0gIXR1cGxlc29ydF9n ZXRkYXR1bShtYWluLCB0cnVlLAorCQkJCQkJCQkJCQkJCSAgZmFsc2UsICZ0c192YWwsICZ0c19p c251bGwsCisJCQkJCQkJCQkJCQkJICBOVUxMKTsKKwkJCQlBc3NlcnQodHVwbGVzb3J0X2VtcHR5 IHx8ICF0c19pc251bGwpOworCisJCQkJaWYgKCF0dXBsZXNvcnRfZW1wdHkpCisJCQkJeworCQkJ CQlpdGVtcHRyX2RlY29kZSgmZGVjb2RlZCwgRGF0dW1HZXRJbnQ2NCh0c192YWwpKTsKKwkJCQkJ aW5kZXhjdXJzb3IgPSAmZGVjb2RlZDsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJaW5k ZXhjdXJzb3IgPSBOVUxMOworCQkJCX0KKworCQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJ CQl9CisKKwkJCS8qCisJCQkgKiBOb3csIGlmIGVpdGhlcjoKKwkJCSAqICAtIHRoZSBtYWluIHNv cnQgaXMgZW1wdHksIG9yCisJCQkgKiAgLSBpbmRleGN1cnNvciA+IGF1eGluZGV4Y3Vyc29yLAor CQkJICoKKwkJCSAqIHRoZW4gYXV4aW5kZXhjdXJzb3IgaWRlbnRpZmllcyBhIFRJRCB0aGF0IGRv ZXNuJ3QgYXBwZWFyIGluCisJCQkgKiB0aGUgbWFpbiBzb3J0LiBXZSBsaWtlbHkgbmVlZCB0byBp bnNlcnQgaXQKKwkJCSAqIGludG8gdGhlIHRhcmdldCBpbmRleCBpZiBpdOKAmXMgdmlzaWJsZSBp biB0aGUgaGVhcC4KKwkJCSAqLworCQkJaWYgKHR1cGxlc29ydF9lbXB0eSB8fCBJdGVtUG9pbnRl ckNvbXBhcmUoaW5kZXhjdXJzb3IsIGF1eGluZGV4Y3Vyc29yKSA+IDApCisJCQl7CisJCQkJdHVw bGVzdG9yZV9wdXRkYXR1bShzdG9yZSwgSW50NjRHZXREYXR1bShpdGVtcHRyX2VuY29kZShhdXhp bmRleGN1cnNvcikpKTsKKwkJCQludW0rKzsKKwkJCX0KKwkJfQorCX0KKworCXJldHVybiBudW07 Cit9CisKK3R5cGVkZWYgc3RydWN0IFZhbGlkYXRlSW5kZXhTY2FuU3RhdGUKK3sKKwlUdXBsZXN0 b3Jlc3RhdGUJCSpzdG9yZTsKKwlCbG9ja051bWJlcgkJCXByZXZfYmxvY2tfbnVtYmVyOworCU9m ZnNldE51bWJlcgkJcHJldl9vZmZfb2Zmc2V0X251bWJlcjsKK30gVmFsaWRhdGVJbmRleFNjYW5T dGF0ZTsKKworLyoKKyAqIFRoaXMgaXMgUmVhZFN0cmVhbUJsb2NrTnVtYmVyQ0IgaW1wbGVtZW50 YXRpb24gd2hpY2ggd29ya3MgYXMgZm9sbG93czoKKyAqCisgKiAxKSBJdCBpdGVyYXRlcyBvdmVy IGEgc29ydGVkIHR1cGxlc3RvcmUsIHdoZXJlIGVhY2ggZWxlbWVudCBpcyBhbiBlbmNvZGVkCisg KiAgICBJdGVtUG9pbnRlcgorICoKKyAqIDIpIEl0IHJldHVybnMgdGhlIGN1cnJlbnQgQmxvY2tO dW1iZXIgYW5kIGNvbGxlY3RzIGFsbCBPZmZzZXROdW1iZXJzCisgKiAgICBmb3IgdGhhdCBibG9j ayBpbiBwZXJfYnVmZmVyX2RhdGEuCisgKgorICogMykgT25jZSB0aGUgY29kZSBlbmNvdW50ZXJz IGEgbmV3IEJsb2NrTnVtYmVyLCBpdCBzdG9wcyByZWFkaW5nIG1vcmUKKyAqICAgIG9mZnNldHMg YW5kIHNhdmVzIHRoZSBPZmZzZXROdW1iZXIgb2YgdGhlIG5ldyBibG9jayBmb3IgdGhlIG5leHQg Y2FsbC4KKyAqCisgKiA0KSBUaGUgbGlzdCBvZiBvZmZzZXRzIGZvciBhIGJsb2NrIGlzIGFsd2F5 cyB0ZXJtaW5hdGVkIHdpdGggSW52YWxpZE9mZnNldE51bWJlci4KKyAqCisgKiBUaGlzIGZ1bmN0 aW9uIGlzIGludGVuZGVkIHRvIGJlIHJlcGVhdGVkbHkgY2FsbGVkLCBlYWNoIHRpbWUgcmV0dXJu aW5nCisgKiB0aGUgbmV4dCBibG9jayBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgc2V0IG9mIG9mZnNl dHMuCisgKi8KK3N0YXRpYyBCbG9ja051bWJlcgoraGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5f cmVhZF9zdHJlYW1fbmV4dCgKKwkJCQkJCQkJICBSZWFkU3RyZWFtICpzdHJlYW0sCisJCQkJCQkJ CSAgdm9pZCAqdm9pZF9jYWxsYmFja19wcml2YXRlX2RhdGEsCisJCQkJCQkJCSAgdm9pZCAqdm9p ZF9wZXJfYnVmZmVyX2RhdGEKKwkJCQkJCQkJICApCit7CisJYm9vbCBzaG91ZF9mcmVlOworCURh dHVtIGRhdHVtOworCUJsb2NrTnVtYmVyIHJlc3VsdCA9IEludmFsaWRCbG9ja051bWJlcjsKKwlp bnQgaSA9IDA7CisKKwkvKgorCSAqIFJldHJpZXZlIHRoZSBzcGVjaWFsaXplZCBjYWxsYmFjayBz dGF0ZSBhbmQgdGhlIG91dHB1dCBidWZmZXIuCisJICogY2FsbGJhY2tfcHJpdmF0ZV9kYXRhIGtl ZXBzIHRyYWNrIG9mIHRoZSBwcmV2aW91cyBibG9jayBhbmQgb2Zmc2V0CisJICogZnJvbSBhIHBy aW9yIGludm9jYXRpb24sIGlmIGFueS4KKwkgKi8KKwlWYWxpZGF0ZUluZGV4U2NhblN0YXRlICpj YWxsYmFja19wcml2YXRlX2RhdGEgPSB2b2lkX2NhbGxiYWNrX3ByaXZhdGVfZGF0YTsKKwlPZmZz ZXROdW1iZXIgKnBlcl9idWZmZXJfZGF0YSA9IHZvaWRfcGVyX2J1ZmZlcl9kYXRhOworCisJLyoK KwkgKiBJZiB0aGVyZSBpcyBhICJsZWZ0b3ZlciIgb2Zmc2V0IG51bWJlciBmcm9tIHRoZSBwcmV2 aW91cyBpbnZvY2F0aW9uLAorCSAqIGl0IG1lYW5zIHdlIGhhZCBzd2l0Y2hlZCB0byBhIG5ldyBi bG9jayBpbiB0aGUgbWlkZGxlIG9mIHRoZSBsYXN0IGNhbGwuCisJICogV2UgcGxhY2UgdGhhdCBs ZWZ0b3ZlciBvZmZzZXQgbnVtYmVyIGludG8gdGhlIGJ1ZmZlciBmaXJzdC4KKwkgKi8KKwlpZiAo Y2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X29mZl9vZmZzZXRfbnVtYmVyICE9IEludmFsaWRP ZmZzZXROdW1iZXIpCisJeworCQlBc3NlcnQoY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Js b2NrX251bWJlciAhPSBJbnZhbGlkQmxvY2tOdW1iZXIpOworCQkvKgorCQkgKiAncmVzdWx0JyBp cyB0aGUgYmxvY2sgbnVtYmVyIHRvIHJldHVybi4gV2Ugc2V0IGl0IHRvIHRoZSBibG9jaworCQkg KiBmcm9tIHRoZSBwcmV2aW91cyBsZWZ0b3ZlciBvZmZzZXQuCisJCSAqLworCQlyZXN1bHQgPSBj YWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVyOworCQkvKiBQbGFjZSBsZWZ0 b3ZlciBvZmZzZXQgbnVtYmVyIGluIHRoZSBvdXRwdXQgYnVmZmVyLiAqLworCQlwZXJfYnVmZmVy X2RhdGFbaSsrXSA9IGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9vZmZfb2Zmc2V0X251bWJl cjsKKwkJLyoKKwkJICogQ2xlYXIgdGhlIGxlZnRvdmVyIG9mZnNldCBudW1iZXIgc28gaXQgd29u J3QgYmUgcmV1c2VkIHVubGVzcworCQkgKiB3ZSBlbmNvdW50ZXIgYW5vdGhlciBibG9jayBjaGFu Z2UuCisJCSAqLworCQljYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfb2ZmX29mZnNldF9udW1i ZXIgPSBJbnZhbGlkT2Zmc2V0TnVtYmVyOworCX0KKworCS8qCisJICogUmVhZCBmcm9tIHRoZSB0 dXBsZXN0b3JlIHVudGlsIHdlIGVpdGhlciBydW4gb3V0IG9mIHR1cGxlcyBvciB3ZQorCSAqIGVu Y291bnRlciBhIGJsb2NrIGNoYW5nZS4gRm9yIGVhY2ggdHVwbGU6CisJICoKKwkgKiAgIDEpIERl Y29kZSBpdHMgYmxvY2svb2Zmc2V0IGZyb20gdGhlIERhdHVtLgorCSAqICAgMikgSWYgaXQncyB0 aGUgZmlyc3QgdGltZSBpbiB0aGlzIGNhbGwgKHByZXZfYmxvY2tfbnVtYmVyID09IEludmFsaWRC bG9ja051bWJlciksCisJICogICAgICBpbml0aWFsaXplIHByZXZfYmxvY2tfbnVtYmVyLgorCSAq ICAgMykgSWYgdGhlIGJsb2NrIG51bWJlciBtYXRjaGVzIHRoZSBjdXJyZW50IGJsb2NrLCBjb2xs ZWN0IHRoZSBvZmZzZXQuCisJICogICA0KSBJZiB0aGUgYmxvY2sgbnVtYmVyIGRpZmZlcnMsIHNh dmUgdGhhdCBvZmZzZXQgYXMgbGVmdG92ZXIgYW5kIGJyZWFrCisJICogICAgICBzbyB0aGF0IHRo ZSBuZXh0IGNhbGwgY2FuIGhhbmRsZSB0aGUgbmV3IGJsb2NrLgorCSAqLworCXdoaWxlICh0dXBs ZXN0b3JlX2dldGRhdHVtKGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+c3RvcmUsIHRydWUsICZzaG91 ZF9mcmVlLCAmZGF0dW0pKQorCXsKKwkJQmxvY2tOdW1iZXIgbmV4dF9ibG9ja19udW1iZXI7CisJ CUl0ZW1Qb2ludGVyRGF0YSBuZXh0X2RhdGE7CisKKwkJLyogRGVjb2RlIHRoZSBkYXR1bSBpbnRv IGFuIEl0ZW1Qb2ludGVyIChibG9jayArIG9mZnNldCkuICovCisJCWl0ZW1wdHJfZGVjb2RlKCZu ZXh0X2RhdGEsIERhdHVtR2V0SW50NjQoZGF0dW0pKTsKKwkJbmV4dF9ibG9ja19udW1iZXIgPSBJ dGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZuZXh0X2RhdGEpOworCisJCS8qCisJCSAqIElmIHdl IGhhdmVuJ3Qgc2V0IGEgYmxvY2sgbnVtYmVyIHlldCB0aGlzIHJvdW5kLCBpbml0aWFsaXplIGl0 CisJCSAqIHVzaW5nIHRoZSBmaXJzdCB0dXBsZSB3ZSByZWFkLgorCQkgKi8KKwkJaWYgKGNhbGxi YWNrX3ByaXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXIgPT0gSW52YWxpZEJsb2NrTnVtYmVy KQorCQkJY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJlciA9IG5leHRfYmxv Y2tfbnVtYmVyOworCisJCS8qCisJCSAqIEFsd2F5cyBzZXQgdGhlIHJlc3VsdCB0byBiZSB0aGUg ImN1cnJlbnQiIGJsb2NrIG51bWJlcgorCQkgKiB3ZSBhcmUgZmlsbGluZyBvZmZzZXRzIGZvci4K KwkJICovCisJCXJlc3VsdCA9IGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1i ZXI7CisKKwkJLyoKKwkJICogSWYgdGhpcyB0dXBsZSBpcyBmcm9tIHRoZSBzYW1lIGJsb2NrLCBq dXN0IHN0b3JlIGl0cyBvZmZzZXQKKwkJICogaW4gb3VyIHBlcl9idWZmZXJfZGF0YSBhcnJheS4K KwkJICovCisJCWlmIChuZXh0X2Jsb2NrX251bWJlciA9PSBjYWxsYmFja19wcml2YXRlX2RhdGEt PnByZXZfYmxvY2tfbnVtYmVyKQorCQl7CisJCQlwZXJfYnVmZmVyX2RhdGFbaSsrXSA9IEl0ZW1Q b2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZuZXh0X2RhdGEpOworCisJCQkvKiBGcmVlIHRoZSBkYXR1 bSBpZiBuZWVkZWQuICovCisJCQlpZiAoc2hvdWRfZnJlZSkKKwkJCQlwZnJlZShEYXR1bUdldFBv aW50ZXIoZGF0dW0pKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBJZiB0aGUgYmxv Y2sganVzdCBjaGFuZ2VkLCBzdG9yZSB0aGUgb2Zmc2V0IG9mIHRoZSBuZXcgYmxvY2sKKwkJCSAq IGFzIGxlZnRvdmVyIGZvciB0aGUgbmV4dCBpbnZvY2F0aW9uIGFuZCBicmVhayBvdXQuCisJCQkg Ki8KKwkJCWNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXIgPSBuZXh0X2Js b2NrX251bWJlcjsKKwkJCWNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9vZmZfb2Zmc2V0X251 bWJlciA9ICBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmbmV4dF9kYXRhKTsKKworCQkJLyog RnJlZSB0aGUgZGF0dW0gaWYgbmVlZGVkLiAqLworCQkJaWYgKHNob3VkX2ZyZWUpCisJCQkJcGZy ZWUoRGF0dW1HZXRQb2ludGVyKGRhdHVtKSk7CisKKwkJCS8qIEJyZWFrIHRvIGxldCB0aGUgbmV4 dCBjYWxsIGhhbmRsZSB0aGUgbmV3IGJsb2NrLiAqLworCQkJYnJlYWs7CisJCX0KKwl9CisKKwkv KgorCSAqIFRlcm1pbmF0ZSB0aGUgbGlzdCBvZiBvZmZzZXRzIGZvciB0aGlzIGJsb2NrIHdpdGgg YW4gSW52YWxpZE9mZnNldE51bWJlci4KKwkgKi8KKwlwZXJfYnVmZmVyX2RhdGFbaV0gPSBJbnZh bGlkT2Zmc2V0TnVtYmVyOworCXJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyB2b2lkCiBoZWFw YW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkgICBS ZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQkJCQkJICAgSW5kZXhJbmZvICppbmRleEluZm8sCiAJ CQkJCQkgICBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0ZSAq c3RhdGUpCisJCQkJCQkgICBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlLAorCQkJCQkJICAgVmFs aWRhdGVJbmRleFN0YXRlICphdXhTdGF0ZSkKIHsKLQlUYWJsZVNjYW5EZXNjIHNjYW47Ci0JSGVh cFNjYW5EZXNjIGhzY2FuOwotCUhlYXBUdXBsZQloZWFwVHVwbGU7CiAJRGF0dW0JCXZhbHVlc1tJ TkRFWF9NQVhfS0VZU107CiAJYm9vbAkJaXNudWxsW0lOREVYX01BWF9LRVlTXTsKLQlFeHByU3Rh dGUgICpwcmVkaWNhdGU7Ci0JVHVwbGVUYWJsZVNsb3QgKnNsb3Q7Ci0JRVN0YXRlCSAgICplc3Rh dGU7Ci0JRXhwckNvbnRleHQgKmVjb250ZXh0OwotCUJsb2NrTnVtYmVyIHJvb3RfYmxrbm8gPSBJ bnZhbGlkQmxvY2tOdW1iZXI7Ci0JT2Zmc2V0TnVtYmVyIHJvb3Rfb2Zmc2V0c1tNYXhIZWFwVHVw bGVzUGVyUGFnZV07Ci0JYm9vbAkJaW5faW5kZXhbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwotCUJs b2NrTnVtYmVyIHByZXZpb3VzX2Jsa25vID0gSW52YWxpZEJsb2NrTnVtYmVyOwotCi0JLyogc3Rh dGUgdmFyaWFibGVzIGZvciB0aGUgbWVyZ2UgKi8KLQlJdGVtUG9pbnRlciBpbmRleGN1cnNvciA9 IE5VTEw7Ci0JSXRlbVBvaW50ZXJEYXRhIGRlY29kZWQ7Ci0JYm9vbAkJdHVwbGVzb3J0X2VtcHR5 ID0gZmFsc2U7CisKKwlUdXBsZVRhYmxlU2xvdCAgKnNsb3Q7CisJRVN0YXRlCQkJKmVzdGF0ZTsK KwlFeHByQ29udGV4dAkJKmVjb250ZXh0OworCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVn eSA9IEdldEFjY2Vzc1N0cmF0ZWd5KEJBU19CVUxLUkVBRCk7CisKKwlpbnQJCQkJbnVtX3RvX2No ZWNrOworCVR1cGxlc3RvcmVzdGF0ZSAqdHVwbGVzX2Zvcl9jaGVjazsKKwlWYWxpZGF0ZUluZGV4 U2NhblN0YXRlIGNhbGxiYWNrX3ByaXZhdGVfZGF0YTsKKworCUJ1ZmZlciBidWY7CisJT2Zmc2V0 TnVtYmVyKiB0dXBsZXM7CisJUmVhZFN0cmVhbSAqcmVhZF9zdHJlYW07CisKKwkvKiBVc2UgMTAl IG9mIG1lbW9yeSBmb3IgdHVwbGUgc3RvcmUuICovCisJaW50CQlzdG9yZV93b3JrX21lbV9wYXJ0 ID0gbWFpbnRlbmFuY2Vfd29ya19tZW0gLyAxMDsKKworCS8qCisJICogRW5jb2RlIFRJRHMgYXMg aW50OCB2YWx1ZXMgZm9yIHRoZSBzb3J0LCByYXRoZXIgdGhhbiBkaXJlY3RseSBzb3J0aW5nCisJ ICogaXRlbSBwb2ludGVycy4gIFRoaXMgY2FuIGJlIHNpZ25pZmljYW50bHkgZmFzdGVyLCBwcmlt YXJpbHkgYmVjYXVzZSBUSUQKKwkgKiBpcyBhIHBhc3MtYnktcmVmZXJlbmNlIHR5cGUgb24gYWxs IHBsYXRmb3Jtcywgd2hlcmVhcyBpbnQ4IGlzCisJICogcGFzcy1ieS12YWx1ZSBvbiBtb3N0IHBs YXRmb3Jtcy4KKwkgKi8KKwl0dXBsZXNfZm9yX2NoZWNrID0gIHR1cGxlc3RvcmVfYmVnaW5fZGF0 dW0oSU5UOE9JRCwgZmFsc2UsIGZhbHNlLCBzdG9yZV93b3JrX21lbV9wYXJ0KTsKIAogCS8qCiAJ ICogc2FuaXR5IGNoZWNrcwogCSAqLwogCUFzc2VydChPaWRJc1ZhbGlkKGluZGV4UmVsYXRpb24t PnJkX3JlbC0+cmVsYW0pKTsKIAotCS8qCi0JICogTmVlZCBhbiBFU3RhdGUgZm9yIGV2YWx1YXRp b24gb2YgaW5kZXggZXhwcmVzc2lvbnMgYW5kIHBhcnRpYWwtaW5kZXgKLQkgKiBwcmVkaWNhdGVz LiAgQWxzbyBhIHNsb3QgdG8gaG9sZCB0aGUgY3VycmVudCB0dXBsZS4KLQkgKi8KKwludW1fdG9f Y2hlY2sgPSBoZWFwYW1faW5kZXhfdmFsaWRhdGVfdHVwbGVzb3J0X2RpZmZlcmVuY2Uoc3RhdGUt PnR1cGxlc29ydCwKKwkJCQkJCQkJCQkJCQkJIGF1eFN0YXRlLT50dXBsZXNvcnQsCisJCQkJCQkJ CQkJCQkJCSB0dXBsZXNfZm9yX2NoZWNrKTsKKworCS8qIEl0IGlzIG91ciByZXNwb25zaWJpbGl0 eSB0byBjbG9zZSB0dXBsZSBzb3J0IGFzIGZhc3QgYXMgd2UgY2FuICovCisJdHVwbGVzb3J0X2Vu ZChzdGF0ZS0+dHVwbGVzb3J0KTsKKwl0dXBsZXNvcnRfZW5kKGF1eFN0YXRlLT50dXBsZXNvcnQp OworCisJc3RhdGUtPnR1cGxlc29ydCA9IGF1eFN0YXRlLT50dXBsZXNvcnQgPSBOVUxMOworCiAJ ZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOwogCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVF eHByQ29udGV4dChlc3RhdGUpOwogCXNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVs YXRpb25HZXREZXNjcihoZWFwUmVsYXRpb24pLAotCQkJCQkJCQkJJlRUU09wc0hlYXBUdXBsZSk7 CisJCQkJCQkJCQkmVFRTT3BzQnVmZmVySGVhcFR1cGxlKTsKIAogCS8qIEFycmFuZ2UgZm9yIGVj b250ZXh0J3Mgc2NhbiB0dXBsZSB0byBiZSB0aGUgdHVwbGUgdW5kZXIgdGVzdCAqLwogCWVjb250 ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNsb3Q7CiAKLQkvKiBTZXQgdXAgZXhlY3V0aW9uIHN0YXRl IGZvciBwcmVkaWNhdGUsIGlmIGFueS4gKi8KLQlwcmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1YWwo aW5kZXhJbmZvLT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7CisJY2FsbGJhY2tfcHJpdmF0ZV9kYXRh LnByZXZfYmxvY2tfbnVtYmVyID0gSW52YWxpZEJsb2NrTnVtYmVyOworCWNhbGxiYWNrX3ByaXZh dGVfZGF0YS5zdG9yZSA9IHR1cGxlc19mb3JfY2hlY2s7CisJY2FsbGJhY2tfcHJpdmF0ZV9kYXRh LnByZXZfb2ZmX29mZnNldF9udW1iZXIgPSBJbnZhbGlkT2Zmc2V0TnVtYmVyOwogCi0JLyoKLQkg KiBQcmVwYXJlIGZvciBzY2FuIG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgV2UgbmVlZCBqdXN0IHRo b3NlIHR1cGxlcwotCSAqIHNhdGlzZnlpbmcgdGhlIHBhc3NlZC1pbiByZWZlcmVuY2Ugc25hcHNo b3QuICBXZSBtdXN0IGRpc2FibGUgc3luY3NjYW4KLQkgKiBoZXJlLCBiZWNhdXNlIGl0J3MgY3Jp dGljYWwgdGhhdCB3ZSByZWFkIGZyb20gYmxvY2sgemVybyBmb3J3YXJkIHRvCi0JICogbWF0Y2gg dGhlIHNvcnRlZCBUSURzLgotCSAqLwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoaGVh cFJlbGF0aW9uLAkvKiByZWxhdGlvbiAqLwotCQkJCQkJCQkgc25hcHNob3QsCS8qIHNuYXBzaG90 ICovCi0JCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwotCQkJCQkJCQkgTlVMTCwJLyog c2NhbiBrZXkgKi8KLQkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sg Ki8KLQkJCQkJCQkJIGZhbHNlKTsJLyogc3luY3NjYW4gbm90IE9LICovCi0JaHNjYW4gPSAoSGVh cFNjYW5EZXNjKSBzY2FuOworCXJlYWRfc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRp b24oUkVBRF9TVFJFQU1fTUFJTlRFTkFOQ0UgfCBSRUFEX1NUUkVBTV9VU0VfQkFUQ0hJTkcsCisJ CQkJCQkJCQkJCQkJCSBic3RyYXRlZ3ksCisJCQkJCQkJCQkJCQkJCSBoZWFwUmVsYXRpb24sIE1B SU5fRk9SS05VTSwKKwkJCQkJCQkJCQkJCQkJIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX3Jl YWRfc3RyZWFtX25leHQsCisJCQkJCQkJCQkJCQkJCSAmY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLAor CQkJCQkJCQkJCQkJCQkgKE1heEhlYXBUdXBsZXNQZXJQYWdlICsgMSkgKiBzaXplb2YoT2Zmc2V0 TnVtYmVyKSk7CiAKLQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX1NDQU5f QkxPQ0tTX1RPVEFMLAotCQkJCQkJCQkgaHNjYW4tPnJzX25ibG9ja3MpOworCXBnc3RhdF9wcm9n cmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1RVUExFU19UT1RBTCwgbnVtX3Rv X2NoZWNrKTsKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlE WF9UVVBMRVNfRE9ORSwgMCk7CiAKLQkvKgotCSAqIFNjYW4gYWxsIHR1cGxlcyBtYXRjaGluZyB0 aGUgc25hcHNob3QuCi0JICovCi0Jd2hpbGUgKChoZWFwVHVwbGUgPSBoZWFwX2dldG5leHQoc2Nh biwgRm9yd2FyZFNjYW5EaXJlY3Rpb24pKSAhPSBOVUxMKQorCXdoaWxlICgoYnVmID0gcmVhZF9z dHJlYW1fbmV4dF9idWZmZXIocmVhZF9zdHJlYW0sICh2b2lkKikgJnR1cGxlcykpICE9IEludmFs aWRCdWZmZXIpCiAJewotCQlJdGVtUG9pbnRlciBoZWFwY3Vyc29yID0gJmhlYXBUdXBsZS0+dF9z ZWxmOwotCQlJdGVtUG9pbnRlckRhdGEgcm9vdFR1cGxlOwotCQlPZmZzZXROdW1iZXIgcm9vdF9v ZmZudW07CisJCUhlYXBUdXBsZURhdGEJaGVhcF90dXBsZV9kYXRhW01heEhlYXBUdXBsZXNQZXJQ YWdlXTsKKwkJaW50IGk7CisJCU9mZnNldE51bWJlciBvZmY7CisJCUJsb2NrTnVtYmVyIGJsb2Nr X251bWJlcjsKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCXN0YXRlLT5odHVwcyAr PSAxOworCQlMb2NrQnVmZmVyKGJ1ZiwgQlVGRkVSX0xPQ0tfU0hBUkUpOworCQlibG9ja19udW1i ZXIgPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWYpOwogCi0JCWlmICgocHJldmlvdXNfYmxrbm8g PT0gSW52YWxpZEJsb2NrTnVtYmVyKSB8fAotCQkJKGhzY2FuLT5yc19jYmxvY2sgIT0gcHJldmlv dXNfYmxrbm8pKQorCQlpID0gMDsKKwkJd2hpbGUgKChvZmYgPSB0dXBsZXNbaV0pICE9IEludmFs aWRPZmZzZXROdW1iZXIpCiAJCXsKLQkJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJP R1JFU1NfU0NBTl9CTE9DS1NfRE9ORSwKLQkJCQkJCQkJCQkgaHNjYW4tPnJzX2NibG9jayk7Ci0J CQlwcmV2aW91c19ibGtubyA9IGhzY2FuLT5yc19jYmxvY2s7CisJCQlJdGVtUG9pbnRlckRhdGEg dGlkOworCQkJYm9vbAkJYWxsX2RlYWQsIGZvdW5kOworCQkJSXRlbVBvaW50ZXJTZXQoJnRpZCwg YmxvY2tfbnVtYmVyLCBvZmYpOworCisJCQlmb3VuZCA9IGhlYXBfaG90X3NlYXJjaF9idWZmZXIo JnRpZCwgaGVhcFJlbGF0aW9uLCBidWYsIHNuYXBzaG90LAorCQkJCQkJCQkJCSAgICZoZWFwX3R1 cGxlX2RhdGFbaV0sICZhbGxfZGVhZCwgdHJ1ZSk7CisJCQlpZiAoIWZvdW5kKQorCQkJCUl0ZW1Q b2ludGVyU2V0SW52YWxpZCgmaGVhcF90dXBsZV9kYXRhW2ldLnRfc2VsZik7CisJCQlpKys7CiAJ CX0KKwkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKLQkJLyoKLQkJICog QXMgY29tbWVudGVkIGluIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4sIHdlIHNob3VsZCBpbmRleCBo ZWFwLW9ubHkKLQkJICogdHVwbGVzIHVuZGVyIHRoZSBUSURzIG9mIHRoZWlyIHJvb3QgdHVwbGVz OyBzbyB3aGVuIHdlIGFkdmFuY2Ugb250bwotCQkgKiBhIG5ldyBoZWFwIHBhZ2UsIGJ1aWxkIGEg bWFwIG9mIHJvb3QgaXRlbSBvZmZzZXRzIG9uIHRoZSBwYWdlLgotCQkgKgotCQkgKiBUaGlzIGNv bXBsaWNhdGVzIG1lcmdpbmcgYWdhaW5zdCB0aGUgdHVwbGVzb3J0IG91dHB1dDogd2Ugd2lsbAot CQkgKiB2aXNpdCB0aGUgbGl2ZSB0dXBsZXMgaW4gb3JkZXIgYnkgdGhlaXIgb2Zmc2V0cywgYnV0 IHRoZSByb290Ci0JCSAqIG9mZnNldHMgdGhhdCB3ZSBuZWVkIHRvIGNvbXBhcmUgYWdhaW5zdCB0 aGUgaW5kZXggY29udGVudHMgbWlnaHQgYmUKLQkJICogb3JkZXJlZCBkaWZmZXJlbnRseS4gIFNv IHdlIG1pZ2h0IGhhdmUgdG8gImxvb2sgYmFjayIgd2l0aGluIHRoZQotCQkgKiB0dXBsZXNvcnQg b3V0cHV0LCBidXQgb25seSB3aXRoaW4gdGhlIGN1cnJlbnQgcGFnZS4gIFdlIGhhbmRsZSB0aGF0 Ci0JCSAqIGJ5IGtlZXBpbmcgYSBib29sIGFycmF5IGluX2luZGV4W10gc2hvd2luZyBhbGwgdGhl Ci0JCSAqIGFscmVhZHktcGFzc2VkLW92ZXIgdHVwbGVzb3J0IG91dHB1dCBUSURzIG9mIHRoZSBj dXJyZW50IHBhZ2UuIFdlCi0JCSAqIGNsZWFyIHRoYXQgYXJyYXkgaGVyZSwgd2hlbiBhZHZhbmNp bmcgb250byBhIG5ldyBoZWFwIHBhZ2UuCi0JCSAqLwotCQlpZiAoaHNjYW4tPnJzX2NibG9jayAh PSByb290X2Jsa25vKQorCQlpID0gMDsKKwkJd2hpbGUgKChvZmYgPSB0dXBsZXNbaV0pICE9IElu dmFsaWRPZmZzZXROdW1iZXIpCiAJCXsKLQkJCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGhz Y2FuLT5yc19jYnVmKTsKLQotCQkJTG9ja0J1ZmZlcihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVSX0xP Q0tfU0hBUkUpOwotCQkJaGVhcF9nZXRfcm9vdF90dXBsZXMocGFnZSwgcm9vdF9vZmZzZXRzKTsK LQkJCUxvY2tCdWZmZXIoaHNjYW4tPnJzX2NidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0KLQkJ CW1lbXNldChpbl9pbmRleCwgMCwgc2l6ZW9mKGluX2luZGV4KSk7Ci0KLQkJCXJvb3RfYmxrbm8g PSBoc2Nhbi0+cnNfY2Jsb2NrOwotCQl9Ci0KLQkJLyogQ29udmVydCBhY3R1YWwgdHVwbGUgVElE IHRvIHJvb3QgVElEICovCi0JCXJvb3RUdXBsZSA9ICpoZWFwY3Vyc29yOwotCQlyb290X29mZm51 bSA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKGhlYXBjdXJzb3IpOwotCi0JCWlmIChIZWFw VHVwbGVJc0hlYXBPbmx5KGhlYXBUdXBsZSkpCi0JCXsKLQkJCXJvb3Rfb2ZmbnVtID0gcm9vdF9v ZmZzZXRzW3Jvb3Rfb2ZmbnVtIC0gMV07Ci0JCQlpZiAoIU9mZnNldE51bWJlcklzVmFsaWQocm9v dF9vZmZudW0pKQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0RB VEFfQ09SUlVQVEVEKSwKLQkJCQkJCSBlcnJtc2dfaW50ZXJuYWwoImZhaWxlZCB0byBmaW5kIHBh cmVudCB0dXBsZSBmb3IgaGVhcC1vbmx5IHR1cGxlIGF0ICgldSwldSkgaW4gdGFibGUgXCIlc1wi IiwKLQkJCQkJCQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcihoZWFwY3Vyc29yKSwKLQkJ CQkJCQkJCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoaGVhcGN1cnNvciksCi0JCQkJCQkJ CQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGhlYXBSZWxhdGlvbikpKSk7Ci0JCQlJdGVtUG9p bnRlclNldE9mZnNldE51bWJlcigmcm9vdFR1cGxlLCByb290X29mZm51bSk7Ci0JCX0KLQotCQkv KgotCQkgKiAibWVyZ2UiIGJ5IHNraXBwaW5nIHRocm91Z2ggdGhlIGluZGV4IHR1cGxlcyB1bnRp bCB3ZSBmaW5kIG9yIHBhc3MKLQkJICogdGhlIGN1cnJlbnQgcm9vdCB0dXBsZS4KLQkJICovCi0J CXdoaWxlICghdHVwbGVzb3J0X2VtcHR5ICYmCi0JCQkgICAoIWluZGV4Y3Vyc29yIHx8Ci0JCQkJ SXRlbVBvaW50ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCAmcm9vdFR1cGxlKSA8IDApKQotCQl7Ci0J CQlEYXR1bQkJdHNfdmFsOwotCQkJYm9vbAkJdHNfaXNudWxsOwotCi0JCQlpZiAoaW5kZXhjdXJz b3IpCisJCQlpZiAoSXRlbVBvaW50ZXJJc1ZhbGlkKCZoZWFwX3R1cGxlX2RhdGFbaV0udF9zZWxm KSkKIAkJCXsKKwkJCQlJdGVtUG9pbnRlckRhdGEgcm9vdF90aWQ7CisJCQkJSXRlbVBvaW50ZXJT ZXQoJnJvb3RfdGlkLCBibG9ja19udW1iZXIsIG9mZik7CisKKwkJCQkvKiBSZXNldCB0aGUgcGVy LXR1cGxlIG1lbW9yeSBjb250ZXh0IGZvciB0aGUgbmV4dCBmZXRjaC4gKi8KKwkJCQlNZW1vcnlD b250ZXh0UmVzZXQoZWNvbnRleHQtPmVjeHRfcGVyX3R1cGxlX21lbW9yeSk7CisJCQkJRXhlY1N0 b3JlQnVmZmVySGVhcFR1cGxlKCZoZWFwX3R1cGxlX2RhdGFbaV0sIHNsb3QsIGJ1Zik7CisKKwkJ CQkvKiBDb21wdXRlIHRoZSBrZXkgdmFsdWVzIGFuZCBudWxsIGZsYWdzIGZvciB0aGlzIHR1cGxl LiAqLworCQkJCUZvcm1JbmRleERhdHVtKGluZGV4SW5mbywKKwkJCQkJCQkgICBzbG90LAorCQkJ CQkJCSAgIGVzdGF0ZSwKKwkJCQkJCQkgICB2YWx1ZXMsCisJCQkJCQkJICAgaXNudWxsKTsKKwog CQkJCS8qCi0JCQkJICogUmVtZW1iZXIgaW5kZXggaXRlbXMgc2VlbiBlYXJsaWVyIG9uIHRoZSBj dXJyZW50IGhlYXAgcGFnZQorCQkJCSAqIEluc2VydCB0aGUgdHVwbGUgaW50byB0aGUgdGFyZ2V0 IGluZGV4LgogCQkJCSAqLwotCQkJCWlmIChJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKGluZGV4 Y3Vyc29yKSA9PSByb290X2Jsa25vKQotCQkJCQlpbl9pbmRleFtJdGVtUG9pbnRlckdldE9mZnNl dE51bWJlcihpbmRleGN1cnNvcikgLSAxXSA9IHRydWU7CisJCQkJaW5kZXhfaW5zZXJ0KGluZGV4 UmVsYXRpb24sCisJCQkJCQkJIHZhbHVlcywKKwkJCQkJCQkgaXNudWxsLAorCQkJCQkJCSAmcm9v dF90aWQsIC8qIGluc2VydCByb290IHR1cGxlICovCisJCQkJCQkJIGhlYXBSZWxhdGlvbiwKKwkJ CQkJCQkgaW5kZXhJbmZvLT5paV9VbmlxdWUgPworCQkJCQkJCSBVTklRVUVfQ0hFQ0tfWUVTIDog VU5JUVVFX0NIRUNLX05PLAorCQkJCQkJCSBmYWxzZSwKKwkJCQkJCQkgaW5kZXhJbmZvKTsKIAkJ CX0KIAotCQkJdHVwbGVzb3J0X2VtcHR5ID0gIXR1cGxlc29ydF9nZXRkYXR1bShzdGF0ZS0+dHVw bGVzb3J0LCB0cnVlLAotCQkJCQkJCQkJCQkJICBmYWxzZSwgJnRzX3ZhbCwgJnRzX2lzbnVsbCwK LQkJCQkJCQkJCQkJCSAgTlVMTCk7Ci0JCQlBc3NlcnQodHVwbGVzb3J0X2VtcHR5IHx8ICF0c19p c251bGwpOwotCQkJaWYgKCF0dXBsZXNvcnRfZW1wdHkpCi0JCQl7Ci0JCQkJaXRlbXB0cl9kZWNv ZGUoJmRlY29kZWQsIERhdHVtR2V0SW50NjQodHNfdmFsKSk7Ci0JCQkJaW5kZXhjdXJzb3IgPSAm ZGVjb2RlZDsKLQkJCX0KLQkJCWVsc2UKLQkJCXsKLQkJCQkvKiBCZSB0aWR5ICovCi0JCQkJaW5k ZXhjdXJzb3IgPSBOVUxMOwotCQkJfQorCQkJc3RhdGUtPmh0dXBzICs9IDE7CisJCQlwZ3N0YXRf cHJvZ3Jlc3NfaW5jcl9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfVFVQTEVTX0RPTkUsIDEpOwor CQkJaSsrOwogCQl9CiAKLQkJLyoKLQkJICogSWYgdGhlIHR1cGxlc29ydCBoYXMgb3ZlcnNob3Qg KmFuZCogd2UgZGlkbid0IHNlZSBhIG1hdGNoIGVhcmxpZXIsCi0JCSAqIHRoZW4gdGhpcyB0dXBs ZSBpcyBtaXNzaW5nIGZyb20gdGhlIGluZGV4LCBzbyBpbnNlcnQgaXQuCi0JCSAqLwotCQlpZiAo KHR1cGxlc29ydF9lbXB0eSB8fAotCQkJIEl0ZW1Qb2ludGVyQ29tcGFyZShpbmRleGN1cnNvciwg JnJvb3RUdXBsZSkgPiAwKSAmJgotCQkJIWluX2luZGV4W3Jvb3Rfb2ZmbnVtIC0gMV0pCi0JCXsK LQkJCU1lbW9yeUNvbnRleHRSZXNldChlY29udGV4dC0+ZWN4dF9wZXJfdHVwbGVfbWVtb3J5KTsK LQotCQkJLyogU2V0IHVwIGZvciBwcmVkaWNhdGUgb3IgZXhwcmVzc2lvbiBldmFsdWF0aW9uICov Ci0JCQlFeGVjU3RvcmVIZWFwVHVwbGUoaGVhcFR1cGxlLCBzbG90LCBmYWxzZSk7Ci0KLQkJCS8q Ci0JCQkgKiBJbiBhIHBhcnRpYWwgaW5kZXgsIGRpc2NhcmQgdHVwbGVzIHRoYXQgZG9uJ3Qgc2F0 aXNmeSB0aGUKLQkJCSAqIHByZWRpY2F0ZS4KLQkJCSAqLwotCQkJaWYgKHByZWRpY2F0ZSAhPSBO VUxMKQotCQkJewotCQkJCWlmICghRXhlY1F1YWwocHJlZGljYXRlLCBlY29udGV4dCkpCi0JCQkJ CWNvbnRpbnVlOwotCQkJfQotCi0JCQkvKgotCQkJICogRm9yIHRoZSBjdXJyZW50IGhlYXAgdHVw bGUsIGV4dHJhY3QgYWxsIHRoZSBhdHRyaWJ1dGVzIHdlIHVzZQotCQkJICogaW4gdGhpcyBpbmRl eCwgYW5kIG5vdGUgd2hpY2ggYXJlIG51bGwuICBUaGlzIGFsc28gcGVyZm9ybXMKLQkJCSAqIGV2 YWx1YXRpb24gb2YgYW55IGV4cHJlc3Npb25zIG5lZWRlZC4KLQkJCSAqLwotCQkJRm9ybUluZGV4 RGF0dW0oaW5kZXhJbmZvLAotCQkJCQkJICAgc2xvdCwKLQkJCQkJCSAgIGVzdGF0ZSwKLQkJCQkJ CSAgIHZhbHVlcywKLQkJCQkJCSAgIGlzbnVsbCk7Ci0KLQkJCS8qCi0JCQkgKiBZb3UnZCB0aGlu ayB3ZSBzaG91bGQgZ28gYWhlYWQgYW5kIGJ1aWxkIHRoZSBpbmRleCB0dXBsZSBoZXJlLAotCQkJ ICogYnV0IHNvbWUgaW5kZXggQU1zIHdhbnQgdG8gZG8gZnVydGhlciBwcm9jZXNzaW5nIG9uIHRo ZSBkYXRhCi0JCQkgKiBmaXJzdC4gU28gcGFzcyB0aGUgdmFsdWVzW10gYW5kIGlzbnVsbFtdIGFy cmF5cywgaW5zdGVhZC4KLQkJCSAqLwotCi0JCQkvKgotCQkJICogSWYgdGhlIHR1cGxlIGlzIGFs cmVhZHkgY29tbWl0dGVkIGRlYWQsIHlvdSBtaWdodCB0aGluayB3ZQotCQkJICogY291bGQgc3Vw cHJlc3MgdW5pcXVlbmVzcyBjaGVja2luZywgYnV0IHRoaXMgaXMgbm8gbG9uZ2VyIHRydWUKLQkJ CSAqIGluIHRoZSBwcmVzZW5jZSBvZiBIT1QsIGJlY2F1c2UgdGhlIGluc2VydCBpcyBhY3R1YWxs eSBhIHByb3h5Ci0JCQkgKiBmb3IgYSB1bmlxdWVuZXNzIGNoZWNrIG9uIHRoZSB3aG9sZSBIT1Qt Y2hhaW4uICBUaGF0IGlzLCB0aGUKLQkJCSAqIHR1cGxlIHdlIGhhdmUgaGVyZSBjb3VsZCBiZSBk ZWFkIGJlY2F1c2UgaXQgd2FzIGFscmVhZHkKLQkJCSAqIEhPVC11cGRhdGVkLCBhbmQgaWYgc28g dGhlIHVwZGF0aW5nIHRyYW5zYWN0aW9uIHdpbGwgbm90IGhhdmUKLQkJCSAqIHRob3VnaHQgaXQg c2hvdWxkIGluc2VydCBpbmRleCBlbnRyaWVzLiAgVGhlIGluZGV4IEFNIHdpbGwKLQkJCSAqIGNo ZWNrIHRoZSB3aG9sZSBIT1QtY2hhaW4gYW5kIGNvcnJlY3RseSBkZXRlY3QgYSBjb25mbGljdCBp ZgotCQkJICogdGhlcmUgaXMgb25lLgotCQkJICovCi0KLQkJCWluZGV4X2luc2VydChpbmRleFJl bGF0aW9uLAotCQkJCQkJIHZhbHVlcywKLQkJCQkJCSBpc251bGwsCi0JCQkJCQkgJnJvb3RUdXBs ZSwKLQkJCQkJCSBoZWFwUmVsYXRpb24sCi0JCQkJCQkgaW5kZXhJbmZvLT5paV9VbmlxdWUgPwot CQkJCQkJIFVOSVFVRV9DSEVDS19ZRVMgOiBVTklRVUVfQ0hFQ0tfTk8sCi0JCQkJCQkgZmFsc2Us Ci0JCQkJCQkgaW5kZXhJbmZvKTsKLQotCQkJc3RhdGUtPnR1cHNfaW5zZXJ0ZWQgKz0gMTsKLQkJ fQorCQlSZWxlYXNlQnVmZmVyKGJ1Zik7CiAJfQogCi0JdGFibGVfZW5kc2NhbihzY2FuKTsKLQog CUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CiAKIAlGcmVlRXhlY3V0b3JTdGF0 ZShlc3RhdGUpOwogCisJcmVhZF9zdHJlYW1fZW5kKHJlYWRfc3RyZWFtKTsKKwl0dXBsZXN0b3Jl X2VuZCh0dXBsZXNfZm9yX2NoZWNrKTsKKwogCS8qIFRoZXNlIG1heSBoYXZlIGJlZW4gcG9pbnRp bmcgdG8gdGhlIG5vdy1nb25lIGVzdGF0ZSAqLwogCWluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNT dGF0ZSA9IE5JTDsKIAlpbmRleEluZm8tPmlpX1ByZWRpY2F0ZVN0YXRlID0gTlVMTDsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv aW5kZXguYwppbmRleCA4ZTUwOWE1MWMxMS4uZDRhYzdhMGU2MDYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMK QEAgLTcxNCwxMSArNzE0LDE2IEBAIFVwZGF0ZUluZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLAog ICoJCQlhbHJlYWR5IGV4aXN0cy4KICAqCQlJTkRFWF9DUkVBVEVfUEFSVElUSU9ORUQ6CiAgKgkJ CWNyZWF0ZSBhIHBhcnRpdGlvbmVkIGluZGV4ICh0YWJsZSBtdXN0IGJlIHBhcnRpdGlvbmVkKQor ICoJCUlOREVYX0NSRUFURV9BVVhJTElBUlk6CisgKgkJCW1hcmsgaW5kZXggYXMgYXV4aWxpYXJ5 IGluZGV4CiAgKiBjb25zdHJfZmxhZ3M6IGZsYWdzIHBhc3NlZCB0byBpbmRleF9jb25zdHJhaW50 X2NyZWF0ZQogICoJCShvbmx5IGlmIElOREVYX0NSRUFURV9BRERfQ09OU1RSQUlOVCBpcyBzZXQp CiAgKiBhbGxvd19zeXN0ZW1fdGFibGVfbW9kczogYWxsb3cgdGFibGUgdG8gYmUgYSBzeXN0ZW0g Y2F0YWxvZwogICogaXNfaW50ZXJuYWw6IGlmIHRydWUsIHBvc3QgY3JlYXRpb24gaG9vayBmb3Ig bmV3IGluZGV4CiAgKiBjb25zdHJhaW50SWQ6IGlmIG5vdCBOVUxMLCByZWNlaXZlcyBPSUQgb2Yg Y3JlYXRlZCBjb25zdHJhaW50CisgKiByZWxwZXJzaXN0ZW5jZTogcGVyc2lzdGVuY2UgbGV2ZWwg dG8gdXNlIGZvciBpbmRleC4gSW4gbW9zdCBvZiB0aGUKKyAqCQljYXNlcyBpdCBpcyBzaG91bGQg YmUgZXF1YWwgdG8gcGVyc2lzdGVuY2UgbGV2ZWwgb2YgdGFibGUsCisgKgkJYXV4aWxpYXJ5IGlu ZGV4ZXMgYXJlIG9ubHkgZXhjZXB0aW9uIGhlcmUuCiAgKgogICogUmV0dXJucyB0aGUgT0lEIG9m IHRoZSBjcmVhdGVkIGluZGV4LgogICovCkBAIC03NTksNiArNzY0LDcgQEAgaW5kZXhfY3JlYXRl KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlib29sCQlpbnZhbGlkID0gKGZsYWdzICYgSU5ERVhf Q1JFQVRFX0lOVkFMSUQpICE9IDA7CiAJYm9vbAkJY29uY3VycmVudCA9IChmbGFncyAmIElOREVY X0NSRUFURV9DT05DVVJSRU5UKSAhPSAwOwogCWJvb2wJCXBhcnRpdGlvbmVkID0gKGZsYWdzICYg SU5ERVhfQ1JFQVRFX1BBUlRJVElPTkVEKSAhPSAwOworCWJvb2wJCWF1eGlsaWFyeSA9IChmbGFn cyAmIElOREVYX0NSRUFURV9BVVhJTElBUlkpICE9IDA7CiAJY2hhcgkJcmVsa2luZDsKIAlUcmFu c2FjdGlvbklkIHJlbGZyb3plbnhpZDsKIAlNdWx0aVhhY3RJZCByZWxtaW5teGlkOwpAQCAtNzg0 LDcgKzc5MCwxMCBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCW5hbWVz cGFjZUlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UoaGVhcFJlbGF0aW9uKTsKIAlzaGFyZWRfcmVs YXRpb24gPSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVsaXNzaGFyZWQ7CiAJbWFwcGVkX3JlbGF0 aW9uID0gUmVsYXRpb25Jc01hcHBlZChoZWFwUmVsYXRpb24pOwotCXJlbHBlcnNpc3RlbmNlID0g aGVhcFJlbGF0aW9uLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlOworCWlmIChhdXhpbGlhcnkpCisJ CXJlbHBlcnNpc3RlbmNlID0gUkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQ7IC8qIGF1eCBpbmRleGVz IGFyZSBhbHdheXMgdW5sb2dnZWQgKi8KKwllbHNlCisJCXJlbHBlcnNpc3RlbmNlID0gaGVhcFJl bGF0aW9uLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlOwogCiAJLyoKIAkgKiBjaGVjayBwYXJhbWV0 ZXJzCkBAIC03OTIsNiArODAxLDExIEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRp b24sCiAJaWYgKGluZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRycyA8IDEpCiAJCWVsb2coRVJST1Is ICJtdXN0IGluZGV4IGF0IGxlYXN0IG9uZSBjb2x1bW4iKTsKIAorCWlmIChpbmRleEluZm8tPmlp X0FtID09IFNUSVJfQU1fT0lEICYmICFhdXhpbGlhcnkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coInVz ZXItZGVmaW5lZCBpbmRleGVzIHdpdGggU1RJUiBhY2Nlc3MgbWV0aG9kIGFyZSBub3Qgc3VwcG9y dGVkIikpKTsKKwogCWlmICghYWxsb3dfc3lzdGVtX3RhYmxlX21vZHMgJiYKIAkJSXNTeXN0ZW1S ZWxhdGlvbihoZWFwUmVsYXRpb24pICYmCiAJCUlzTm9ybWFsUHJvY2Vzc2luZ01vZGUoKSkKQEAg LTEzOTcsNyArMTQxMSw4IEBAIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlv biBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElkLAogCQkJCQkJCWZhbHNlLAkvKiBub3QgcmVh ZHkgZm9yIGluc2VydHMgKi8KIAkJCQkJCQl0cnVlLAogCQkJCQkJCWluZGV4UmVsYXRpb24tPnJk X2luZGFtLT5hbXN1bW1hcml6aW5nLAotCQkJCQkJCW9sZEluZm8tPmlpX1dpdGhvdXRPdmVybGFw cyk7CisJCQkJCQkJb2xkSW5mby0+aWlfV2l0aG91dE92ZXJsYXBzLAorCQkJCQkJCWZhbHNlKTsK IAogCS8qCiAJICogRXh0cmFjdCB0aGUgbGlzdCBvZiBjb2x1bW4gbmFtZXMgYW5kIHRoZSBjb2x1 bW4gbnVtYmVycyBmb3IgdGhlIG5ldwpAQCAtMTQ3Miw2ICsxNDg3LDE1NCBAQCBpbmRleF9jb25j dXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJ ZCwKIAlyZXR1cm4gbmV3SW5kZXhJZDsKIH0KIAorLyoKKyAqIGluZGV4X2NvbmN1cnJlbnRseV9j cmVhdGVfYXV4CisgKgorICogQ3JlYXRlIGNvbmN1cnJlbnRseSBhbiBhdXhpbGlhcnkgaW5kZXgg YmFzZWQgb24gdGhlIGRlZmluaXRpb24gb2YgdGhlIG9uZQorICogcHJvdmlkZWQgYnkgY2FsbGVy LiAgVGhlIGluZGV4IGlzIGluc2VydGVkIGludG8gY2F0YWxvZ3MgYW5kIG5lZWRzIHRvIGJlCisg KiBidWlsdCBsYXRlciBvbi4gVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGNvbmN1cnJlbnQgcmVpbmRl eCBwcm9jZXNzaW5nLgorICoKKyAqICJ0YWJsZXNwYWNlT2lkIiBpcyB0aGUgdGFibGVzcGFjZSB0 byB1c2UgZm9yIHRoaXMgaW5kZXguCisgKi8KK09pZAoraW5kZXhfY29uY3VycmVudGx5X2NyZWF0 ZV9hdXgoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgbWFpbkluZGV4SWQsCisJCQkJCQkJICAg T2lkIHRhYmxlc3BhY2VPaWQsIGNvbnN0IGNoYXIgKm5ld05hbWUpCit7CisJUmVsYXRpb24JaW5k ZXhSZWxhdGlvbjsKKwlJbmRleEluZm8gICpvbGRJbmZvLAorCQkJKm5ld0luZm87CisJT2lkCQkJ bmV3SW5kZXhJZCA9IEludmFsaWRPaWQ7CisJSGVhcFR1cGxlCWluZGV4VHVwbGU7CisKKwlMaXN0 CSAgICppbmRleENvbE5hbWVzID0gTklMOworCUxpc3QJICAgKmluZGV4RXhwcnMgPSBOSUw7CisJ TGlzdAkgICAqaW5kZXhQcmVkcyA9IE5JTDsKKworCU9pZCAqYXV4T3BjbGFzc0lkczsKKwlpbnQx NiAqYXV4Q29sb3B0aW9uczsKKworCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKG1haW5JbmRl eElkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCS8qIFRoZSBuZXcgaW5kZXggbmVlZHMgc29tZSBp bmZvcm1hdGlvbiBmcm9tIHRoZSBvbGQgaW5kZXggKi8KKwlvbGRJbmZvID0gQnVpbGRJbmRleElu Zm8oaW5kZXhSZWxhdGlvbik7CisKKwkvKgorCSAqIEJ1aWxkIG9mIGFuIGF1eGlsaWFyeSBpbmRl eCB3aXRoIGV4Y2x1c2lvbiBjb25zdHJhaW50cyBpcyBub3QKKwkgKiBzdXBwb3J0ZWQuCisJICov CisJaWYgKG9sZEluZm8tPmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCWVy cm1zZygiYXV4aWxpYXJ5IGluZGV4IGNyZWF0aW9uIGZvciBleGNsdXNpb24gY29uc3RyYWludHMg aXMgbm90IHN1cHBvcnRlZCIpKSk7CisKKwkvKiBHZXQgdGhlIGFycmF5IG9mIGNsYXNzIGFuZCBj b2x1bW4gb3B0aW9ucyBJRHMgZnJvbSBpbmRleCBpbmZvICovCisJaW5kZXhUdXBsZSA9IFNlYXJj aFN5c0NhY2hlMShJTkRFWFJFTElELCBPYmplY3RJZEdldERhdHVtKG1haW5JbmRleElkKSk7CisJ aWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGluZGV4VHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3IgaW5kZXggJXUiLCBtYWluSW5kZXhJZCk7CisKKworCS8qCisJICog RmV0Y2ggdGhlIGxpc3Qgb2YgZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMgZGlyZWN0bHkgZnJv bSB0aGUKKwkgKiBjYXRhbG9ncy4gIFRoaXMgY2Fubm90IHJlbHkgb24gdGhlIGluZm9ybWF0aW9u IGZyb20gSW5kZXhJbmZvIG9mIHRoZQorCSAqIG9sZCBpbmRleCBhcyB0aGVzZSBoYXZlIGJlZW4g ZmxhdHRlbmVkIGZvciB0aGUgcGxhbm5lci4KKwkgKi8KKwlpZiAob2xkSW5mby0+aWlfRXhwcmVz c2lvbnMgIT0gTklMKQorCXsKKwkJRGF0dW0JCWV4cHJEYXR1bTsKKwkJY2hhcgkgICAqZXhwclN0 cmluZzsKKworCQlleHByRGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKElOREVYUkVMSUQs IGluZGV4VHVwbGUsCisJCQkJCQkJCQkJICAgQW51bV9wZ19pbmRleF9pbmRleHBycyk7CisJCWV4 cHJTdHJpbmcgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGV4cHJEYXR1bSk7CisJCWluZGV4RXhwcnMg PSAoTGlzdCAqKSBzdHJpbmdUb05vZGUoZXhwclN0cmluZyk7CisJCXBmcmVlKGV4cHJTdHJpbmcp OworCX0KKwlpZiAob2xkSW5mby0+aWlfUHJlZGljYXRlICE9IE5JTCkKKwl7CisJCURhdHVtCQlw cmVkRGF0dW07CisJCWNoYXIJICAgKnByZWRTdHJpbmc7CisKKwkJcHJlZERhdHVtID0gU3lzQ2Fj aGVHZXRBdHRyTm90TnVsbChJTkRFWFJFTElELCBpbmRleFR1cGxlLAorCQkJCQkJCQkJCSAgIEFu dW1fcGdfaW5kZXhfaW5kcHJlZCk7CisJCXByZWRTdHJpbmcgPSBUZXh0RGF0dW1HZXRDU3RyaW5n KHByZWREYXR1bSk7CisJCWluZGV4UHJlZHMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUocHJlZFN0 cmluZyk7CisKKwkJLyogQWxzbyBjb252ZXJ0IHRvIGltcGxpY2l0LUFORCBmb3JtYXQgKi8KKwkJ aW5kZXhQcmVkcyA9IG1ha2VfYW5kc19pbXBsaWNpdCgoRXhwciAqKSBpbmRleFByZWRzKTsKKwkJ cGZyZWUocHJlZFN0cmluZyk7CisJfQorCisJLyoKKwkgKiBCdWlsZCB0aGUgaW5kZXggaW5mb3Jt YXRpb24gZm9yIHRoZSBuZXcgaW5kZXguICBOb3RlIHRoYXQgcmVidWlsZCBvZgorCSAqIGluZGV4 ZXMgd2l0aCBleGNsdXNpb24gY29uc3RyYWludHMgaXMgbm90IHN1cHBvcnRlZCwgaGVuY2UgdGhl cmUgaXMgbm8KKwkgKiBuZWVkIHRvIGZpbGwgYWxsIHRoZSBpaV9FeGNsdXNpb24qIGZpZWxkcy4K KwkgKi8KKwluZXdJbmZvID0gbWFrZUluZGV4SW5mbyhvbGRJbmZvLT5paV9OdW1JbmRleEF0dHJz LAorCQkJCQkJCW9sZEluZm8tPmlpX051bUluZGV4S2V5QXR0cnMsCisJCQkJCQkJU1RJUl9BTV9P SUQsIC8qIHNwZWNpYWwgQU0gZm9yIGF1eCBpbmRleGVzICovCisJCQkJCQkJaW5kZXhFeHBycywK KwkJCQkJCQlpbmRleFByZWRzLAorCQkJCQkJCWZhbHNlLAkvKiBhdXggaW5kZXggYXJlIG5vdCB1 bmlxdWUgKi8KKwkJCQkJCQlvbGRJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0LAorCQkJCQkJCWZh bHNlLAkvKiBub3QgcmVhZHkgZm9yIGluc2VydHMgKi8KKwkJCQkJCQl0cnVlLAorCQkJCQkJCWZh bHNlLAkvKiBhdXggYXJlIG5vdCBzdW1tYXJpemluZyAqLworCQkJCQkJCWZhbHNlLAkvKiBhdXgg YXJlIG5vdCB3aXRob3V0IG92ZXJsYXBzICovCisJCQkJCQkJdHJ1ZQkvKiBhdXhpbGlhcnkgKi8p OworCisJLyoKKwkgKiBFeHRyYWN0IHRoZSBsaXN0IG9mIGNvbHVtbiBuYW1lcyBhbmQgdGhlIGNv bHVtbiBudW1iZXJzIGZvciB0aGUgbmV3CisJICogaW5kZXggaW5mb3JtYXRpb24uICBBbGwgdGhp cyBpbmZvcm1hdGlvbiB3aWxsIGJlIHVzZWQgZm9yIHRoZSBpbmRleAorCSAqIGNyZWF0aW9uLgor CSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgb2xkSW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsr KQorCXsKKwkJVHVwbGVEZXNjCWluZGV4VHVwRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoaW5kZXhS ZWxhdGlvbik7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIoaW5kZXhU dXBEZXNjLCBpKTsKKworCQlpbmRleENvbE5hbWVzID0gbGFwcGVuZChpbmRleENvbE5hbWVzLCBO YW1lU3RyKGF0dC0+YXR0bmFtZSkpOworCQluZXdJbmZvLT5paV9JbmRleEF0dHJOdW1iZXJzW2ld ID0gb2xkSW5mby0+aWlfSW5kZXhBdHRyTnVtYmVyc1tpXTsKKwl9CisKKwlhdXhPcGNsYXNzSWRz ID0gcGFsbG9jMChzaXplb2YoT2lkKSAqIG5ld0luZm8tPmlpX051bUluZGV4QXR0cnMpOworCWF1 eENvbG9wdGlvbnMgPSBwYWxsb2MwKHNpemVvZihpbnQxNikgKiBuZXdJbmZvLT5paV9OdW1JbmRl eEF0dHJzKTsKKworCS8qIEZpbGwgd2l0aCAiYW55IG9wcyIgKi8KKwlmb3IgKGludCBpID0gMDsg aSA8IG5ld0luZm8tPmlpX051bUluZGV4QXR0cnM7IGkrKykKKwl7CisJCWF1eE9wY2xhc3NJZHNb aV0gPSBBTllfU1RJUl9PUFNfT0lEOworCQlhdXhDb2xvcHRpb25zW2ldID0gMDsKKwl9CisKKwlu ZXdJbmRleElkID0gaW5kZXhfY3JlYXRlKGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkgIG5ld05hbWUs CisJCQkJCQkJICBJbnZhbGlkT2lkLCAgICAvKiBpbmRleFJlbGF0aW9uSWQgKi8KKwkJCQkJCQkg IEludmFsaWRPaWQsICAgIC8qIHBhcmVudEluZGV4UmVsaWQgKi8KKwkJCQkJCQkgIEludmFsaWRP aWQsICAgIC8qIHBhcmVudENvbnN0cmFpbnRJZCAqLworCQkJCQkJCSAgSW52YWxpZFJlbEZpbGVO dW1iZXIsIC8qIHJlbEZpbGVOdW1iZXIgKi8KKwkJCQkJCQkgIG5ld0luZm8sCisJCQkJCQkJICBp bmRleENvbE5hbWVzLAorCQkJCQkJCSAgU1RJUl9BTV9PSUQsCisJCQkJCQkJICB0YWJsZXNwYWNl T2lkLAorCQkJCQkJCSAgaW5kZXhSZWxhdGlvbi0+cmRfaW5kY29sbGF0aW9uLAorCQkJCQkJCSAg YXV4T3BjbGFzc0lkcywKKwkJCQkJCQkgIE5VTEwsCisJCQkJCQkJICBhdXhDb2xvcHRpb25zLAor CQkJCQkJCSAgTlVMTCwKKwkJCQkJCQkgIChEYXR1bSkgMCwKKwkJCQkJCQkgIElOREVYX0NSRUFU RV9TS0lQX0JVSUxEIHwgSU5ERVhfQ1JFQVRFX0NPTkNVUlJFTlQgfCBJTkRFWF9DUkVBVEVfQVVY SUxJQVJZLAorCQkJCQkJCSAgMCwKKwkJCQkJCQkgIHRydWUsIC8qIGFsbG93IHRhYmxlIHRvIGJl IGEgc3lzdGVtIGNhdGFsb2c/ICovCisJCQkJCQkJICBmYWxzZSwgICAgLyogaXNfaW50ZXJuYWw/ ICovCisJCQkJCQkJICBOVUxMKTsKKworCS8qIENsb3NlIHRoZSByZWxhdGlvbnMgdXNlZCBhbmQg Y2xlYW4gdXAgKi8KKwlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9uLCBOb0xvY2spOworCVJlbGVh c2VTeXNDYWNoZShpbmRleFR1cGxlKTsKKworCXJldHVybiBuZXdJbmRleElkOworfQorCiAvKgog ICogaW5kZXhfY29uY3VycmVudGx5X2J1aWxkCiAgKgpAQCAtMjQ1Miw3ICsyNjE1LDggQEAgQnVp bGRJbmRleEluZm8oUmVsYXRpb24gaW5kZXgpCiAJCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc3Jl YWR5LAogCQkJCQkgICBmYWxzZSwKIAkJCQkJICAgaW5kZXgtPnJkX2luZGFtLT5hbXN1bW1hcml6 aW5nLAotCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24gJiYgaW5kZXhTdHJ1Y3Qt PmluZGlzdW5pcXVlKTsKKwkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uICYmIGlu ZGV4U3RydWN0LT5pbmRpc3VuaXF1ZSwKKwkJCQkJICAgaW5kZXgtPnJkX3JlbC0+cmVsYW0gPT0g U1RJUl9BTV9PSUQgLyogYXV4aWxpYXJ5IGlmZiBTVElSICovKTsKIAogCS8qIGZpbGwgaW4gYXR0 cmlidXRlIG51bWJlcnMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbnVtQXR0czsgaSsrKQpAQCAtMjUx Miw3ICsyNjc2LDggQEAgQnVpbGREdW1teUluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCkKIAkJCQkJ ICAgaW5kZXhTdHJ1Y3QtPmluZGlzcmVhZHksCiAJCQkJCSAgIGZhbHNlLAogCQkJCQkgICBpbmRl eC0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcsCi0JCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc2V4 Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUpOworCQkJCQkgICBpbmRleFN0cnVj dC0+aW5kaXNleGNsdXNpb24gJiYgaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlLAorCQkJCQkgICBp bmRleC0+cmRfcmVsLT5yZWxhbSA9PSBTVElSX0FNX09JRCAvKiBhdXhpbGlhcnkgaWZmIFNUSVIg Ki8pOwogCiAJLyogZmlsbCBpbiBhdHRyaWJ1dGUgbnVtYmVycyAqLwogCWZvciAoaSA9IDA7IGkg PCBudW1BdHRzOyBpKyspCkBAIC0zMjg4LDEyICszNDUzLDIxIEBAIEluZGV4Q2hlY2tFeGNsdXNp b24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICoKICAqIFdlIGRvIGEgY29uY3VycmVudCBpbmRl eCBidWlsZCBieSBmaXJzdCBpbnNlcnRpbmcgdGhlIGNhdGFsb2cgZW50cnkgZm9yIHRoZQogICog aW5kZXggdmlhIGluZGV4X2NyZWF0ZSgpLCBtYXJraW5nIGl0IG5vdCBpbmRpc3JlYWR5IGFuZCBu b3QgaW5kaXN2YWxpZC4KKyAqIFRoZW4gd2UgY3JlYXRlIHNwZWNpYWwgYXV4aWxpYXJ5IGluZGV4 IHRoZSBzYW1lIHdheS4gSXQgYmFzZWQgb24gU1RJUiBBTS4KICAqIFRoZW4gd2UgY29tbWl0IG91 ciB0cmFuc2FjdGlvbiBhbmQgc3RhcnQgYSBuZXcgb25lLCB0aGVuIHdlIHdhaXQgZm9yIGFsbAog ICogdHJhbnNhY3Rpb25zIHRoYXQgY291bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUg dG8gdGVybWluYXRlLiAgTm93Ci0gKiB3ZSBrbm93IHRoYXQgYW55IHN1YnNlcXVlbnRseS1zdGFy dGVkIHRyYW5zYWN0aW9ucyB3aWxsIHNlZSB0aGUgaW5kZXggYW5kCisgKiB3ZSBrbm93IHRoYXQg YW55IHN1YnNlcXVlbnRseS1zdGFydGVkIHRyYW5zYWN0aW9ucyB3aWxsIHNlZSBpbmRleGVzIGFu ZAogICogaG9ub3IgaXRzIGNvbnN0cmFpbnRzIG9uIEhPVCB1cGRhdGVzOyBzbyB3aGlsZSBleGlz dGluZyBIT1QtY2hhaW5zIG1pZ2h0CiAgKiBiZSBicm9rZW4gd2l0aCByZXNwZWN0IHRvIHRoZSBp bmRleCwgbm8gY3VycmVudGx5IGxpdmUgdHVwbGUgd2lsbCBoYXZlIGFuCi0gKiBpbmNvbXBhdGli bGUgSE9UIHVwZGF0ZSBkb25lIHRvIGl0LiAgV2Ugbm93IGJ1aWxkIHRoZSBpbmRleCBub3JtYWxs eSB2aWEKKyAqIGluY29tcGF0aWJsZSBIT1QgdXBkYXRlIGRvbmUgdG8gaXQuCisgKgorICogQWZ0 ZXIgd2UgYnVpbGQgYXV4aWxpYXJ5IGluZGV4LiBJdCBpcyBmYXN0IG9wZXJhdGlvbiB3aXRob3V0 IGFueSBhY3R1YWwKKyAqIHRhYmxlIHNjYW4uIEFzIHJlc3VsdCwgd2UgaGF2ZSBlbXB0eSBTVElS IGluZGV4LiBXZSBjb21taXQgdHJhbnNhY3Rpb24gYW5kCisgKiBhZ2FpbiB3YWl0IGZvciBhbGwg dHJhbnNhY3Rpb25zIHRoYXQgY291bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUKKyAq IHRvIHRlcm1pbmF0ZS4gQXQgdGhhdCBtb21lbnQgYWxsIG5ldyB0dXBsZXMgYXJlIGdvaW5nIHRv IGJlIGluc2VydGVkIGludG8KKyAqIGF1eGlsaWFyeSBpbmRleC4KKyAqCisgKiBXZSBub3cgYnVp bGQgdGhlIGluZGV4IG5vcm1hbGx5IHZpYQogICogaW5kZXhfYnVpbGQoKSwgd2hpbGUgaG9sZGlu ZyBhIHdlYWsgbG9jayB0aGF0IGFsbG93cyBjb25jdXJyZW50CiAgKiBpbnNlcnQvdXBkYXRlL2Rl bGV0ZS4gIEFsc28sIHdlIGluZGV4IG9ubHkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkCiAgKiBhcyBv ZiB0aGUgc3RhcnQgb2YgdGhlIHNjYW4gKHNlZSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKSwgd2hl cmVhcyBhIG5vcm1hbApAQCAtMzMwMywxNCArMzQ3NywxNyBAQCBJbmRleENoZWNrRXhjbHVzaW9u KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIGJvZ3VzIHVuaXF1ZS1pbmRleCBmYWlsdXJlcyBk dWUgdG8gY29uY3VycmVudCBVUERBVEVzICh3ZSBtaWdodCBzZWUKICAqIGRpZmZlcmVudCB2ZXJz aW9ucyBvZiB0aGUgc2FtZSByb3cgYXMgYmVpbmcgdmFsaWQgd2hlbiB3ZSBwYXNzIG92ZXIgdGhl bSwKICAqIGlmIHdlIHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVz IHVzIHdpdGggYW4gaW5kZXggdGhhdAotICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFk ZGVkIHRvIHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCisgKiBkb2VzIG5vdCBj b250YWluIGFueSB0dXBsZXMgYWRkZWQgdG8gdGhlIHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRoZSBp bmRleAorICogKGJ1dCB0aGVzZSB0dXBsZXMgY29udGFpbmVkIGluIGF1eGlsaWFyeSBpbmRleCku CiAgKgogICogTmV4dCwgd2UgbWFyayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQgc3RpbGwg bm90ICJpbmRpc3ZhbGlkIikgYW5kCi0gKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBh bmQgc3RhcnQgYSB0aGlyZC4gIEFnYWluIHdlIHdhaXQgZm9yIGFsbAorICogY29tbWl0IHRoZSB0 aGlyZCB0cmFuc2FjdGlvbiBhbmQgc3RhcnQgYSBmb3VydGguICBBZ2FpbiB3ZSB3YWl0IGZvciBh bGwKICAqIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIGhhdmUgYmVlbiBtb2RpZnlpbmcgdGhlIHRh YmxlIHRvIHRlcm1pbmF0ZS4gIE5vdwogICogd2Uga25vdyB0aGF0IGFueSBzdWJzZXF1ZW50bHkt c3RhcnRlZCB0cmFuc2FjdGlvbnMgd2lsbCBzZWUgdGhlIGluZGV4IGFuZAotICogaW5zZXJ0IHRo ZWlyIG5ldyB0dXBsZXMgaW50byBpdC4gIFdlIHRoZW4gdGFrZSBhIG5ldyByZWZlcmVuY2Ugc25h cHNob3QKLSAqIHdoaWNoIGlzIHBhc3NlZCB0byB2YWxpZGF0ZV9pbmRleCgpLiAgQW55IHR1cGxl cyB0aGF0IGFyZSB2YWxpZCBhY2NvcmRpbmcKKyAqIGluc2VydCB0aGVpciBuZXcgdHVwbGVzIGlu dG8gaXQuIEF0IHRoZSBzYW1lIG1vbWVudCB3ZSBjbGVhciAiaW5kaXNyZWFkeSIgZm9yCisgKiBh dXhpbGlhcnkgaW5kZXgsIHNpbmNlIGl0IGlzIG5vIG1vcmUgcmVxdWlyZWQgdG8gYmUgdXBkYXRl ZC4KKyAqCisgKiBXZSB0aGVuIHRha2UgYSBuZXcgcmVmZXJlbmNlIHNuYXBzaG90LCBhbnkgdHVw bGVzIHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZwogICogdG8gdGhpcyBzbmFwLCBidXQgYXJlIG5v dCBpbiB0aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGluZGV4LgogICogKEFueSB0dXBs ZXMgY29tbWl0dGVkIGxpdmUgYWZ0ZXIgdGhlIHNuYXAgd2lsbCBiZSBpbnNlcnRlZCBpbnRvIHRo ZQogICogaW5kZXggYnkgdGhlaXIgb3JpZ2luYXRpbmcgdHJhbnNhY3Rpb24uICBBbnkgdHVwbGVz IGNvbW1pdHRlZCBkZWFkIGJlZm9yZQpAQCAtMzMxOCwxMiArMzQ5NSwxNCBAQCBJbmRleENoZWNr RXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIHRoYXQgbWlnaHQgY2FyZSBhYm91 dCB0aGVtIGJlZm9yZSB3ZSBtYXJrIHRoZSBpbmRleCB2YWxpZC4pCiAgKgogICogdmFsaWRhdGVf aW5kZXgoKSB3b3JrcyBieSBmaXJzdCBnYXRoZXJpbmcgYWxsIHRoZSBUSURzIGN1cnJlbnRseSBp biB0aGUKLSAqIGluZGV4LCB1c2luZyBhIGJ1bGtkZWxldGUgY2FsbGJhY2sgdGhhdCBqdXN0IHN0 b3JlcyB0aGUgVElEcyBhbmQgZG9lc24ndAorICogaW5kZXhlcywgdXNpbmcgYSBidWxrZGVsZXRl IGNhbGxiYWNrIHRoYXQganVzdCBzdG9yZXMgdGhlIFRJRHMgYW5kIGRvZXNuJ3QKICAqIGV2ZXIg c2F5ICJkZWxldGUgaXQiLiAgKFRoaXMgc2hvdWxkIGJlIGZhc3RlciB0aGFuIGEgcGxhaW4gaW5k ZXhzY2FuOwogICogYWxzbywgbm90IGFsbCBpbmRleCBBTXMgc3VwcG9ydCBmdWxsLWluZGV4IGlu ZGV4c2Nhbi4pICBUaGVuIHdlIHNvcnQgdGhlCi0gKiBUSURzLCBhbmQgZmluYWxseSBzY2FuIHRo ZSB0YWJsZSBkb2luZyBhICJtZXJnZSBqb2luIiBhZ2FpbnN0IHRoZSBUSUQgbGlzdAotICogdG8g c2VlIHdoaWNoIHR1cGxlcyBhcmUgbWlzc2luZyBmcm9tIHRoZSBpbmRleC4gIFRodXMgd2Ugd2ls bCBlbnN1cmUgdGhhdAotICogYWxsIHR1cGxlcyB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlIHJlZmVy ZW5jZSBzbmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LgorICogVElEcyBvZiBib3RoIGF1eGlsaWFy eSBhbmQgdGFyZ2V0IGluZGV4ZXMsIGFuZCBkb2luZyBhICJtZXJnZSBqb2luIiBhZ2FpbnN0Cisg KiB0aGUgVElEIGxpc3RzIHRvIHNlZSB3aGljaCB0dXBsZXMgZnJvbSBhdXhpbGlhcnkgaW5kZXgg YXJlIG1pc3NpbmcgZnJvbSB0aGUKKyAqIHRhcmdldCBpbmRleC4gIFRodXMgd2Ugd2lsbCBlbnN1 cmUgdGhhdCBhbGwgdHVwbGVzIHZhbGlkIGFjY29yZGluZyB0byB0aGUKKyAqIHJlZmVyZW5jZSBz bmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LiBOb3RpY2Ugd2UgbmVlZCB0byBkbyBidWxrZGVsZXRl IGluIHRoZQorICogcGFydGljdWxhciBvcmRlcjogYXV4aWxpYXJ5IGZpcnN0LCB0YXJnZXQgbGFz dC4KICAqCiAgKiBCdWlsZGluZyBhIHVuaXF1ZSBpbmRleCB0aGlzIHdheSBpcyB0cmlja3k6IHdl IG1pZ2h0IHRyeSB0byBpbnNlcnQgYQogICogdHVwbGUgdGhhdCBpcyBhbHJlYWR5IGRlYWQgb3Ig aXMgaW4gcHJvY2VzcyBvZiBiZWluZyBkZWxldGVkLCBhbmQgd2UKQEAgLTMzNDEsMjIgKzM1MjAs MjYgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKiBub3Qg aW5kZXgpLiAgVGhlbiB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXN2YWxpZCIgYW5kIGNvbW1pdC4g IFN1YnNlcXVlbnQKICAqIHRyYW5zYWN0aW9ucyB3aWxsIGJlIGFibGUgdG8gdXNlIGl0IGZvciBx dWVyaWVzLgogICoKLSAqIERvaW5nIHR3byBmdWxsIHRhYmxlIHNjYW5zIGlzIGEgYnJ1dGUtZm9y Y2Ugc3RyYXRlZ3kuICBXZSBjb3VsZCB0cnkgdG8gYmUKLSAqIGNsZXZlcmVyLCBlZyBzdG9yaW5n IG5ldyB0dXBsZXMgaW4gYSBzcGVjaWFsIGFyZWEgb2YgdGhlIHRhYmxlIChwZXJoYXBzCi0gKiBt YWtpbmcgdGhlIHRhYmxlIGFwcGVuZC1vbmx5IGJ5IHNldHRpbmcgdXNlX2ZzbSkuICBIb3dldmVy IHRoYXQgd291bGQKLSAqIGFkZCB5ZXQgbW9yZSBsb2NraW5nIGlzc3Vlcy4KKyAqIEFsc28sIHNv bWUgYWN0aW9ucyB0byBjb25jdXJyZW50IGRyb3AgdGhlIGF1eGlsaWFyeSBpbmRleCBhcmUgcGVy Zm9ybWVkLgogICovCiB2b2lkCi12YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJ ZCwgU25hcHNob3Qgc25hcHNob3QpCit2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5k ZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogewogCVJlbGF0aW9uCWhl YXBSZWxhdGlvbiwKLQkJCQlpbmRleFJlbGF0aW9uOworCQkJCWluZGV4UmVsYXRpb24sCisJCQkJ YXV4SW5kZXhSZWxhdGlvbjsKIAlJbmRleEluZm8gICppbmRleEluZm87Ci0JSW5kZXhWYWN1dW1J bmZvIGl2aW5mbzsKLQlWYWxpZGF0ZUluZGV4U3RhdGUgc3RhdGU7CisJSW5kZXhWYWN1dW1JbmZv IGl2aW5mbywgYXV4aXZpbmZvOworCVZhbGlkYXRlSW5kZXhTdGF0ZSBzdGF0ZSwgYXV4U3RhdGU7 CiAJT2lkCQkJc2F2ZV91c2VyaWQ7CiAJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKIAlpbnQJCQlz YXZlX25lc3RsZXZlbDsKKwkvKiBVc2UgODAlIG9mIG1haW50ZW5hbmNlX3dvcmtfbWVtIHRvIHRh cmdldCBpbmRleCBzb3J0aW5nIGFuZAorCSAqIDEwJSByZXN0IGZvciBhdXhpbGlhcnkuCisJICoK KwkgKiBSZXN0IDEwJSB3aWxsIGJlIHVzZWQgZm9yIHR1cGxlc3RvcmUgbGF0ZXIuICovCisJaW50 NjQJCW1haW5fd29ya19tZW1fcGFydCA9IChpbnQ2NCkgbWFpbnRlbmFuY2Vfd29ya19tZW0gKiA4 IC8gMTA7CisJaW50CQkJYXV4X3dvcmtfbWVtX3BhcnQgPSBtYWludGVuYW5jZV93b3JrX21lbSAv IDEwOwogCiAJewogCQljb25zdCBpbnQJcHJvZ3Jlc3NfaW5kZXhbXSA9IHsKQEAgLTMzODksNiAr MzU3Miw3IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hv dCBzbmFwc2hvdCkKIAlSZXN0cmljdFNlYXJjaFBhdGgoKTsKIAogCWluZGV4UmVsYXRpb24gPSBp bmRleF9vcGVuKGluZGV4SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCWF1eEluZGV4UmVsYXRpb24g PSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJLyoKIAkgKiBG ZXRjaCBpbmZvIG5lZWRlZCBmb3IgaW5kZXhfaW5zZXJ0LiAgKFlvdSBtaWdodCB0aGluayB0aGlz IHNob3VsZCBiZQpAQCAtMzQxMywxNSArMzU5Nyw1NSBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVh cElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJaXZpbmZvLnN0cmF0ZWd5ID0g TlVMTDsKIAlpdmluZm8udmFsaWRhdGVfaW5kZXggPSB0cnVlOwogCisJLyoKKwkgKiBDb3B5IGFs bCBpbmZvIHRvIGF1eGlsaWFyeSBpbmZvLCBjaGFuZ2luZyBvbmx5IHJlbGF0aW9uLgorCSAqLwor CWF1eGl2aW5mbyA9IGl2aW5mbzsKKwlhdXhpdmluZm8uaW5kZXggPSBhdXhJbmRleFJlbGF0aW9u OworCiAJLyoKIAkgKiBFbmNvZGUgVElEcyBhcyBpbnQ4IHZhbHVlcyBmb3IgdGhlIHNvcnQsIHJh dGhlciB0aGFuIGRpcmVjdGx5IHNvcnRpbmcKIAkgKiBpdGVtIHBvaW50ZXJzLiAgVGhpcyBjYW4g YmUgc2lnbmlmaWNhbnRseSBmYXN0ZXIsIHByaW1hcmlseSBiZWNhdXNlIFRJRAogCSAqIGlzIGEg cGFzcy1ieS1yZWZlcmVuY2UgdHlwZSBvbiBhbGwgcGxhdGZvcm1zLCB3aGVyZWFzIGludDggaXMK IAkgKiBwYXNzLWJ5LXZhbHVlIG9uIG1vc3QgcGxhdGZvcm1zLgogCSAqLworCWF1eFN0YXRlLnR1 cGxlc29ydCA9IHR1cGxlc29ydF9iZWdpbl9kYXR1bShJTlQ4T0lELCBJbnQ4TGVzc09wZXJhdG9y LAorCQkJCQkJCQkJCSAgIEludmFsaWRPaWQsIGZhbHNlLAorCQkJCQkJCQkJCSAgIGF1eF93b3Jr X21lbV9wYXJ0LAorCQkJCQkJCQkJCSAgIE5VTEwsIFRVUExFU09SVF9OT05FKTsKKwlhdXhTdGF0 ZS5odHVwcyA9IGF1eFN0YXRlLml0dXBzID0gYXV4U3RhdGUudHVwc19pbnNlcnRlZCA9IDA7CisK Kwkodm9pZCkgaW5kZXhfYnVsa19kZWxldGUoJmF1eGl2aW5mbywgTlVMTCwKKwkJCQkJCQkgdmFs aWRhdGVfaW5kZXhfY2FsbGJhY2ssICZhdXhTdGF0ZSk7CisJLyogSWYgYXV4IGluZGV4IGlzIGVt cHR5LCBtZXJnZSBtYXkgYmUgc2tpcHBlZCAqLworCWlmIChhdXhTdGF0ZS5pdHVwcyA9PSAwKQor CXsKKwkJdHVwbGVzb3J0X2VuZChhdXhTdGF0ZS50dXBsZXNvcnQpOworCQlhdXhTdGF0ZS50dXBs ZXNvcnQgPSBOVUxMOworCisJCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQg YnkgaW5kZXggZnVuY3Rpb25zICovCisJCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2 ZWwpOworCisJCS8qIFJlc3RvcmUgdXNlcmlkIGFuZCBzZWN1cml0eSBjb250ZXh0ICovCisJCVNl dFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQsIHNhdmVfc2VjX2NvbnRleHQpOworCisJ CS8qIENsb3NlIHJlbHMsIGJ1dCBrZWVwIGxvY2tzICovCisJCWluZGV4X2Nsb3NlKGF1eEluZGV4 UmVsYXRpb24sIE5vTG9jayk7CisJCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7 CisJCXRhYmxlX2Nsb3NlKGhlYXBSZWxhdGlvbiwgTm9Mb2NrKTsKKworCQlQdXNoQWN0aXZlU25h cHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJbGltaXRYbWluID0gR2V0QWN0aXZl U25hcHNob3QoKS0+eG1pbjsKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJSW52YWxpZGF0ZUNh dGFsb2dTbmFwc2hvdCgpOworCisJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54bWluKSk7CisJCXJldHVybiBsaW1pdFhtaW47CisJfQorCiAJc3RhdGUudHVwbGVzb3J0ID0g dHVwbGVzb3J0X2JlZ2luX2RhdHVtKElOVDhPSUQsIEludDhMZXNzT3BlcmF0b3IsCiAJCQkJCQkJ CQkJCUludmFsaWRPaWQsIGZhbHNlLAotCQkJCQkJCQkJCQltYWludGVuYW5jZV93b3JrX21lbSwK KwkJCQkJCQkJCQkJKGludCkgbWFpbl93b3JrX21lbV9wYXJ0LAogCQkJCQkJCQkJCQlOVUxMLCBU VVBMRVNPUlRfTk9ORSk7CiAJc3RhdGUuaHR1cHMgPSBzdGF0ZS5pdHVwcyA9IHN0YXRlLnR1cHNf aW5zZXJ0ZWQgPSAwOwogCkBAIC0zNDQ0LDI3ICszNjY4LDMwIEBAIHZhbGlkYXRlX2luZGV4KE9p ZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAkJcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSgzLCBwcm9ncmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7 CiAJfQogCXR1cGxlc29ydF9wZXJmb3Jtc29ydChzdGF0ZS50dXBsZXNvcnQpOworCXR1cGxlc29y dF9wZXJmb3Jtc29ydChhdXhTdGF0ZS50dXBsZXNvcnQpOwogCiAJLyoKLQkgKiBOb3cgc2NhbiB0 aGUgaGVhcCBhbmQgIm1lcmdlIiBpdCB3aXRoIHRoZSBpbmRleAorCSAqIE5vdyBtZXJnZSBib3Ro IGluZGV4ZXMKIAkgKi8KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NS RUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFU RV9UQUJMRVNDQU4pOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRF X0lEWE1FUkdFKTsKIAl0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuKGhlYXBSZWxhdGlvbiwKIAkJ CQkJCQkgIGluZGV4UmVsYXRpb24sCiAJCQkJCQkJICBpbmRleEluZm8sCiAJCQkJCQkJICBzbmFw c2hvdCwKLQkJCQkJCQkgICZzdGF0ZSk7CisJCQkJCQkJICAmc3RhdGUsCisJCQkJCQkJICAmYXV4 U3RhdGUpOwogCi0JLyogRG9uZSB3aXRoIHR1cGxlc29ydCBvYmplY3QgKi8KLQl0dXBsZXNvcnRf ZW5kKHN0YXRlLnR1cGxlc29ydCk7CisJLyogVHVwbGUgc29ydCBjbG9zZWQgYnkgdGFibGVfaW5k ZXhfdmFsaWRhdGVfc2NhbiAqLworCUFzc2VydChzdGF0ZS50dXBsZXNvcnQgPT0gTlVMTCAmJiBh dXhTdGF0ZS50dXBsZXNvcnQgPT0gTlVMTCk7CiAKIAkvKiBNYWtlIHN1cmUgdG8gcmVsZWFzZSBy ZXNvdXJjZXMgY2FjaGVkIGluIGluZGV4SW5mbyAoaWYgbmVlZGVkKS4gKi8KIAlpbmRleF9pbnNl cnRfY2xlYW51cChpbmRleFJlbGF0aW9uLCBpbmRleEluZm8pOwogCiAJZWxvZyhERUJVRzIsCi0J CSAidmFsaWRhdGVfaW5kZXggZm91bmQgJS4wZiBoZWFwIHR1cGxlcywgJS4wZiBpbmRleCB0dXBs ZXM7IGluc2VydGVkICUuMGYgbWlzc2luZyB0dXBsZXMiLAotCQkgc3RhdGUuaHR1cHMsIHN0YXRl Lml0dXBzLCBzdGF0ZS50dXBzX2luc2VydGVkKTsKKwkJICJ2YWxpZGF0ZV9pbmRleCBmZXRjaGVk ICUuMGYgaGVhcCB0dXBsZXMsICUuMGYgaW5kZXggdHVwbGVzOyIKKwkJCQkJCSIgJS4wZiBhdXgg aW5kZXggdHVwbGVzOyBpbnNlcnRlZCAlLjBmIG1pc3NpbmcgdHVwbGVzIiwKKwkJIHN0YXRlLmh0 dXBzLCBzdGF0ZS5pdHVwcywgYXV4U3RhdGUuaXR1cHMsIHN0YXRlLnR1cHNfaW5zZXJ0ZWQpOwog CiAJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlv bnMgKi8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKQEAgLTM0NzMsNiAr MzcwMCw3IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hv dCBzbmFwc2hvdCkKIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNlcmlkLCBzYXZlX3Nl Y19jb250ZXh0KTsKIAogCS8qIENsb3NlIHJlbHMsIGJ1dCBrZWVwIGxvY2tzICovCisJaW5kZXhf Y2xvc2UoYXV4SW5kZXhSZWxhdGlvbiwgTm9Mb2NrKTsKIAlpbmRleF9jbG9zZShpbmRleFJlbGF0 aW9uLCBOb0xvY2spOwogCXRhYmxlX2Nsb3NlKGhlYXBSZWxhdGlvbiwgTm9Mb2NrKTsKIH0KQEAg LTM1MzMsNiArMzc2MSwxMSBAQCBpbmRleF9zZXRfc3RhdGVfZmxhZ3MoT2lkIGluZGV4SWQsIElu ZGV4U3RhdGVGbGFnc0FjdGlvbiBhY3Rpb24pCiAJCQlBc3NlcnQoIWluZGV4Rm9ybS0+aW5kaXN2 YWxpZCk7CiAJCQlpbmRleEZvcm0tPmluZGlzdmFsaWQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNh c2UgSU5ERVhfRFJPUF9DTEVBUl9SRUFEWToKKwkJCS8qIENsZWFyIGluZGlzcmVhZHkgZHVyaW5n IGEgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBzZXF1ZW5jZSAqLworCQkJQXNzZXJ0KCFpbmRl eEZvcm0tPmluZGlzdmFsaWQpOworCQkJaW5kZXhGb3JtLT5pbmRpc3JlYWR5ID0gZmFsc2U7CisJ CQlicmVhazsKIAkJY2FzZSBJTkRFWF9EUk9QX0NMRUFSX1ZBTElEOgogCiAJCQkvKgpAQCAtMzgw NCw2ICs0MDM3LDEzIEBAIHJlaW5kZXhfaW5kZXgoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCBpbmRleElkLAogCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvblN0cmF0cyA9IE5VTEw7CiAJfQog CisJLyogQXV4aWxpYXJ5IGluZGV4ZXMgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIHJlYnVpbHQgKi8K KwlpZiAoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkgZXJybXNnKCJyZWluZGV4 IG9mIGF1eGlsaWFyeSBpbmRleCBcIiVzXCIgbm90IHN1cHBvcnRlZCIsCisJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKGlSZWwpKSkpOworCiAJLyogU3VwcHJlc3MgdXNlIG9mIHRoZSB0YXJn ZXQgaW5kZXggd2hpbGUgcmVidWlsZGluZyBpdCAqLwogCVNldFJlaW5kZXhQcm9jZXNzaW5nKGhl YXBJZCwgaW5kZXhJZCk7CiAKQEAgLTQwNDYsNiArNDI4Niw3IEBAIHJlaW5kZXhfcmVsYXRpb24o Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxpZCwgaW50IGZsYWdzLAogCXsKIAkJT2lk CQkJaW5kZXhPaWQgPSBsZmlyc3Rfb2lkKGluZGV4SWQpOwogCQlPaWQJCQlpbmRleE5hbWVzcGFj ZUlkID0gZ2V0X3JlbF9uYW1lc3BhY2UoaW5kZXhPaWQpOworCQlPaWQJCQlpbmRleEFtID0gZ2V0 X3JlbF9yZWxhbShpbmRleE9pZCk7CiAKIAkJLyoKIAkJICogU2tpcCBhbnkgaW52YWxpZCBpbmRl eGVzIG9uIGEgVE9BU1QgdGFibGUuICBUaGVzZSBjYW4gb25seSBiZQpAQCAtNDA3MSw2ICs0MzEy LDE4IEBAIHJlaW5kZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxp ZCwgaW50IGZsYWdzLAogCQkJY29udGludWU7CiAJCX0KIAorCQlpZiAoaW5kZXhBbSA9PSBTVElS X0FNX09JRCkKKwkJeworCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXgg b2YgYXV4aWxpYXJ5IGluZGV4IFwiJXMuJXNcIiIsCisJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1l KGluZGV4TmFtZXNwYWNlSWQpLAorCQkJCQkJCWdldF9yZWxfbmFtZShpbmRleE9pZCkpKSk7CisJ CQlpZiAoZmxhZ3MgJiBSRUlOREVYX1JFTF9TVVBQUkVTU19JTkRFWF9VU0UpCisJCQkJUmVtb3Zl UmVpbmRleFBlbmRpbmcoaW5kZXhPaWQpOworCQkJY29udGludWU7CisJCX0KKwogCQlyZWluZGV4 X2luZGV4KHN0bXQsIGluZGV4T2lkLCAhKGZsYWdzICYgUkVJTkRFWF9SRUxfQ0hFQ0tfQ09OU1RS QUlOVFMpLAogCQkJCQkgIHBlcnNpc3RlbmNlLCBwYXJhbXMpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV92aWV3cy5zcWwKaW5kZXggYzc3ZmEwMjM0YmIuLjg4ZDk0ZTdjZWQ5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMjkxLDE2ICsxMjkxLDE3IEBAIENSRUFURSBW SUVXIHBnX3N0YXRfcHJvZ3Jlc3NfY3JlYXRlX2luZGV4IEFTCiAgICAgICAgICAgICAgICAgICAg ICAgRU5EIEFTIGNvbW1hbmQsCiAgICAgICAgIENBU0UgUy5wYXJhbTEwIFdIRU4gMCBUSEVOICdp bml0aWFsaXppbmcnCiAgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMSBUSEVOICd3YWl0aW5n IGZvciB3cml0ZXJzIGJlZm9yZSBidWlsZCcKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiAy IFRIRU4gJ2J1aWxkaW5nIGluZGV4JyB8fAorICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDIg VEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyB0byB1c2UgYXV4aWxpYXJ5IGluZGV4JworICAgICAg ICAgICAgICAgICAgICAgICBXSEVOIDMgVEhFTiAnYnVpbGRpbmcgaW5kZXgnIHx8CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBDT0FMRVNDRSgoJzogJyB8fCBwZ19pbmRleGFtX3Byb2dyZXNz X3BoYXNlbmFtZShTLnBhcmFtOTo6b2lkLCBTLnBhcmFtMTEpKSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICcnKQotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDMgVEhF TiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbicKLSAgICAgICAgICAgICAg ICAgICAgICAgV0hFTiA0IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIGluZGV4Jwot ICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDUgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc29y dGluZyB0dXBsZXMnCi0gICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2 YWxpZGF0aW9uOiBzY2FubmluZyB0YWJsZScKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA3 IFRIRU4gJ3dhaXRpbmcgZm9yIG9sZCBzbmFwc2hvdHMnCi0gICAgICAgICAgICAgICAgICAgICAg IFdIRU4gOCBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBtYXJraW5nIGRlYWQnCi0g ICAgICAgICAgICAgICAgICAgICAgIFdIRU4gOSBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJl Zm9yZSBkcm9wcGluZycKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA0IFRIRU4gJ3dhaXRp bmcgZm9yIHdyaXRlcnMgYmVmb3JlIHZhbGlkYXRpb24nCisgICAgICAgICAgICAgICAgICAgICAg IFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyBpbmRleCcKKyAgICAgICAg ICAgICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNvcnRpbmcgdHVw bGVzJworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDcgVEhFTiAnaW5kZXggdmFsaWRhdGlv bjogbWVyZ2luZyBpbmRleGVzJworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDggVEhFTiAn d2FpdGluZyBmb3Igb2xkIHNuYXBzaG90cycKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA5 IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIG1hcmtpbmcgZGVhZCcKKyAgICAgICAg ICAgICAgICAgICAgICAgV0hFTiAxMCBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBk cm9wcGluZycKICAgICAgICAgICAgICAgICAgICAgICAgRU5EIGFzIHBoYXNlLAogICAgICAgICBT LnBhcmFtNCBBUyBsb2NrZXJzX3RvdGFsLAogICAgICAgICBTLnBhcmFtNSBBUyBsb2NrZXJzX2Rv bmUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IGIxMDQyOWMzNzIxLi4wYzc3NDBlMmM4 NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTE4MSw2ICsxODEsNyBAQCBDaGVja0lu ZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJCQkJCSBib29sIGlzV2l0aG91dE92ZXJsYXBzKQog ewogCWJvb2wJCWlzY29uc3RyYWludDsKKwlib29sCQlpc2F1eGlsaWFyeTsKIAlPaWQJCSAgICp0 eXBlSWRzOwogCU9pZAkJICAgKmNvbGxhdGlvbklkczsKIAlPaWQJCSAgICpvcGNsYXNzSWRzOwpA QCAtMjMxLDYgKzIzMiw3IEBAIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAogCWFt Y2Fub3JkZXIgPSBhbVJvdXRpbmUtPmFtY2Fub3JkZXI7CiAJYW1zdW1tYXJpemluZyA9IGFtUm91 dGluZS0+YW1zdW1tYXJpemluZzsKKwlpc2F1eGlsaWFyeSA9IGFjY2Vzc01ldGhvZElkID09IFNU SVJfQU1fT0lEOwogCiAJLyoKIAkgKiBDb21wdXRlIHRoZSBvcGVyYXRvciBjbGFzc2VzLCBjb2xs YXRpb25zLCBhbmQgZXhjbHVzaW9uIG9wZXJhdG9ycyBmb3IKQEAgLTI0Miw3ICsyNDQsOCBAQCBD aGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJICovCiAJaW5kZXhJbmZvID0gbWFrZUlu ZGV4SW5mbyhudW1iZXJPZkF0dHJpYnV0ZXMsIG51bWJlck9mQXR0cmlidXRlcywKIAkJCQkJCQkg IGFjY2Vzc01ldGhvZElkLCBOSUwsIE5JTCwgZmFsc2UsIGZhbHNlLAotCQkJCQkJCSAgZmFsc2Us IGZhbHNlLCBhbXN1bW1hcml6aW5nLCBpc1dpdGhvdXRPdmVybGFwcyk7CisJCQkJCQkJICBmYWxz ZSwgZmFsc2UsIGFtc3VtbWFyaXppbmcsCisJCQkJCQkJICBpc1dpdGhvdXRPdmVybGFwcywgaXNh dXhpbGlhcnkpOwogCXR5cGVJZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0 ZXMpOwogCWNvbGxhdGlvbklkcyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0cmlidXRl cyk7CiAJb3BjbGFzc0lkcyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7 CkBAIC01NTIsNiArNTU1LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiB7CiAJYm9vbAkJ Y29uY3VycmVudDsKIAljaGFyCSAgICppbmRleFJlbGF0aW9uTmFtZTsKKwljaGFyCSAgICphdXhJ bmRleFJlbGF0aW9uTmFtZSA9IE5VTEw7CiAJY2hhcgkgICAqYWNjZXNzTWV0aG9kTmFtZTsKIAlP aWQJCSAgICp0eXBlSWRzOwogCU9pZAkJICAgKmNvbGxhdGlvbklkczsKQEAgLTU2MSw2ICs1NjUs NyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlPaWQJCQluYW1lc3BhY2VJZDsKIAlPaWQJ CQl0YWJsZXNwYWNlSWQ7CiAJT2lkCQkJY3JlYXRlZENvbnN0cmFpbnRJZCA9IEludmFsaWRPaWQ7 CisJT2lkCQkJYXV4SW5kZXhSZWxhdGlvbklkID0gSW52YWxpZE9pZDsKIAlMaXN0CSAgICppbmRl eENvbE5hbWVzOwogCUxpc3QJICAgKmFsbEluZGV4UGFyYW1zOwogCVJlbGF0aW9uCXJlbDsKQEAg LTU4Miw2ICs1ODcsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlpbnQJCQludW1iZXJP ZktleUF0dHJpYnV0ZXM7CiAJVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW47CiAJT2JqZWN0QWRkcmVz cyBhZGRyZXNzOworCU9iamVjdEFkZHJlc3MgYXV4QWRkcmVzczsKIAlMb2NrUmVsSWQJaGVhcHJl bGlkOwogCUxPQ0tUQUcJCWhlYXBsb2NrdGFnOwogCUxPQ0tNT0RFCWxvY2ttb2RlOwpAQCAtODMy LDYgKzgzOCwxNSBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJCQkJCQkJCQkJc3RtdC0+ ZXhjbHVkZU9wTmFtZXMsCiAJCQkJCQkJCQkJCXN0bXQtPnByaW1hcnksCiAJCQkJCQkJCQkJCXN0 bXQtPmlzY29uc3RyYWludCk7CisJLyoKKwkgKiBTZWxlY3QgbmFtZSBmb3IgYXV4aWxpYXJ5IGlu ZGV4CisJICovCisJaWYgKGNvbmN1cnJlbnQpCisJCWF1eEluZGV4UmVsYXRpb25OYW1lID0gQ2hv b3NlUmVsYXRpb25OYW1lKGluZGV4UmVsYXRpb25OYW1lLAorCQkJCQkJCQkJCQkJICBOVUxMLAor CQkJCQkJCQkJCQkJICAiY2NhdXgiLAorCQkJCQkJCQkJCQkJICBuYW1lc3BhY2VJZCwKKwkJCQkJ CQkJCQkJCSAgZmFsc2UpOwogCiAJLyoKIAkgKiBsb29rIHVwIHRoZSBhY2Nlc3MgbWV0aG9kLCB2 ZXJpZnkgaXQgY2FuIGhhbmRsZSB0aGUgcmVxdWVzdGVkIGZlYXR1cmVzCkBAIC05MjcsNyArOTQy LDggQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCQkJCQkJICAhY29uY3VycmVudCwKIAkJ CQkJCQkgIGNvbmN1cnJlbnQsCiAJCQkJCQkJICBhbWlzc3VtbWFyaXppbmcsCi0JCQkJCQkJICBz dG10LT5pc3dpdGhvdXRvdmVybGFwcyk7CisJCQkJCQkJICBzdG10LT5pc3dpdGhvdXRvdmVybGFw cywKKwkJCQkJCQkgIGZhbHNlKTsKIAogCXR5cGVJZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1i ZXJPZkF0dHJpYnV0ZXMpOwogCWNvbGxhdGlvbklkcyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJl ck9mQXR0cmlidXRlcyk7CkBAIC0xNTkyLDYgKzE2MDgsMTYgQEAgRGVmaW5lSW5kZXgoT2lkIHRh YmxlSWQsCiAJCXJldHVybiBhZGRyZXNzOwogCX0KIAorCS8qCisJICogSW4gY2FzZSBvZiBjb25j dXJyZW50IGJ1aWxkIC0gY3JlYXRlIGF1eGlsaWFyeSBpbmRleCByZWNvcmQuCisJICovCisJaWYg KGNvbmN1cnJlbnQpCisJeworCQlhdXhJbmRleFJlbGF0aW9uSWQgPSBpbmRleF9jb25jdXJyZW50 bHlfY3JlYXRlX2F1eChyZWwsIGluZGV4UmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJdGFibGVzcGFj ZUlkLCBhdXhJbmRleFJlbGF0aW9uTmFtZSk7CisJCU9iamVjdEFkZHJlc3NTZXQoYXV4QWRkcmVz cywgUmVsYXRpb25SZWxhdGlvbklkLCBhdXhJbmRleFJlbGF0aW9uSWQpOworCX0KKwogCUF0RU9Y YWN0X0dVQyhmYWxzZSwgcm9vdF9zYXZlX25lc3RsZXZlbCk7CiAJU2V0VXNlcklkQW5kU2VjQ29u dGV4dChyb290X3NhdmVfdXNlcmlkLCByb290X3NhdmVfc2VjX2NvbnRleHQpOwogCkBAIC0xNjIw LDExICsxNjQ2LDExIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCS8qCiAJICogRm9yIGEg Y29uY3VycmVudCBidWlsZCwgaXQncyBpbXBvcnRhbnQgdG8gbWFrZSB0aGUgY2F0YWxvZyBlbnRy aWVzCiAJICogdmlzaWJsZSB0byBvdGhlciB0cmFuc2FjdGlvbnMgYmVmb3JlIHdlIHN0YXJ0IHRv IGJ1aWxkIHRoZSBpbmRleC4gVGhhdAotCSAqIHdpbGwgcHJldmVudCB0aGVtIGZyb20gbWFraW5n IGluY29tcGF0aWJsZSBIT1QgdXBkYXRlcy4gIFRoZSBuZXcgaW5kZXgKLQkgKiB3aWxsIGJlIG1h cmtlZCBub3QgaW5kaXNyZWFkeSBhbmQgbm90IGluZGlzdmFsaWQsIHNvIHRoYXQgbm8gb25lIGVs c2UKLQkgKiB0cmllcyB0byBlaXRoZXIgaW5zZXJ0IGludG8gaXQgb3IgdXNlIGl0IGZvciBxdWVy aWVzLgorCSAqIHdpbGwgcHJldmVudCB0aGVtIGZyb20gbWFraW5nIGluY29tcGF0aWJsZSBIT1Qg dXBkYXRlcy4gTmV3IGluZGV4ZXMKKwkgKiAobWFpbiBhbmQgYXV4aWxpYXJ5KSB3aWxsIGJlIG1h cmtlZCBub3QgaW5kaXNyZWFkeSBhbmQgbm90IGluZGlzdmFsaWQsCisJICogc28gdGhhdCBubyBv bmUgZWxzZSB0cmllcyB0byBlaXRoZXIgaW5zZXJ0IGludG8gaXQgb3IgdXNlIGl0IGZvciBxdWVy aWVzLgogCSAqCi0JICogV2UgbXVzdCBjb21taXQgb3VyIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28g dGhhdCB0aGUgaW5kZXggYmVjb21lcworCSAqIFdlIG11c3QgY29tbWl0IG91ciBjdXJyZW50IHRy YW5zYWN0aW9uIHNvIHRoYXQgdGhlIGluZGV4ZXMgYmVjb21lcwogCSAqIHZpc2libGU7IHRoZW4g c3RhcnQgYW5vdGhlci4gIE5vdGUgdGhhdCBhbGwgdGhlIGRhdGEgc3RydWN0dXJlcyB3ZSBqdXN0 CiAJICogYnVpbHQgYXJlIGxvc3QgaW4gdGhlIGNvbW1pdC4gIFRoZSBvbmx5IGRhdGEgd2Uga2Vl cCBwYXN0IGhlcmUgYXJlIHRoZQogCSAqIHJlbGF0aW9uIElEcy4KQEAgLTE2MzQsNyArMTY2MCw3 IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIGNhbm5vdCBibG9jaywgZXZlbiBpZiBz b21lb25lIGVsc2UgaXMgd2FpdGluZyBmb3IgYWNjZXNzLCBiZWNhdXNlIHdlCiAJICogYWxyZWFk eSBoYXZlIHRoZSBzYW1lIGxvY2sgd2l0aGluIG91ciB0cmFuc2FjdGlvbi4KIAkgKgotCSAqIE5v dGU6IHdlIGRvbid0IGN1cnJlbnRseSBib3RoZXIgd2l0aCBhIHNlc3Npb24gbG9jayBvbiB0aGUg aW5kZXgsCisJICogTm90ZTogd2UgZG9uJ3QgY3VycmVudGx5IGJvdGhlciB3aXRoIGEgc2Vzc2lv biBsb2NrIG9uIHRoZSBpbmRleGVzLAogCSAqIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG9wZXJhdGlv bnMgdGhhdCBjb3VsZCBjaGFuZ2UgaXRzIHN0YXRlIHdoaWxlIHdlCiAJICogaG9sZCBsb2NrIG9u IHRoZSBwYXJlbnQgdGFibGUuICBUaGlzIG1pZ2h0IG5lZWQgdG8gY2hhbmdlIGxhdGVyLgogCSAq LwpAQCAtMTY3Myw3ICsxNjk5LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogd2l0 aCB0aGUgb2xkIGxpc3Qgb2YgaW5kZXhlcy4gIFVzZSBTaGFyZUxvY2sgdG8gY29uc2lkZXIgcnVu bmluZwogCSAqIHRyYW5zYWN0aW9ucyB0aGF0IGhvbGQgbG9ja3MgdGhhdCBwZXJtaXQgd3JpdGlu ZyB0byB0aGUgdGFibGUuICBOb3RlIHdlCiAJICogZG8gbm90IG5lZWQgdG8gd29ycnkgYWJvdXQg eGFjdHMgdGhhdCBvcGVuIHRoZSB0YWJsZSBmb3Igd3JpdGluZyBhZnRlcgotCSAqIHRoaXMgcG9p bnQ7IHRoZXkgd2lsbCBzZWUgdGhlIG5ldyBpbmRleCB3aGVuIHRoZXkgb3BlbiBpdC4KKwkgKiB0 aGlzIHBvaW50OyB0aGV5IHdpbGwgc2VlIHRoZSBuZXcgaW5kZXhlcyB3aGVuIHRoZXkgb3BlbiBp dC4KIAkgKgogCSAqIE5vdGU6IHRoZSByZWFzb24gd2UgdXNlIGFjdHVhbCBsb2NrIGFjcXVpc2l0 aW9uIGhlcmUsIHJhdGhlciB0aGFuIGp1c3QKIAkgKiBjaGVja2luZyB0aGUgUHJvY0FycmF5IGFu ZCBzbGVlcGluZywgaXMgdGhhdCBkZWFkbG9jayBpcyBwb3NzaWJsZSBpZgpAQCAtMTY4NSwxNCAr MTcxMSw0NCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAogCS8qCiAJICogQXQgdGhpcyBt b21lbnQgd2UgYXJlIHN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gdHJhbnNhY3Rpb25zIHdpdGggdGhl Ci0JICogdGFibGUgb3BlbiBmb3Igd3JpdGUgdGhhdCBkb24ndCBoYXZlIHRoaXMgbmV3IGluZGV4 IGluIHRoZWlyIGxpc3Qgb2YKKwkgKiB0YWJsZSBvcGVuIGZvciB3cml0ZSB0aGF0IGRvbid0IGhh dmUgdGhpcyBuZXcgaW5kZXhlcyBpbiB0aGVpciBsaXN0IG9mCiAJICogaW5kZXhlcy4gIFdlIGhh dmUgd2FpdGVkIG91dCBhbGwgdGhlIGV4aXN0aW5nIHRyYW5zYWN0aW9ucyBhbmQgYW55IG5ldwot CSAqIHRyYW5zYWN0aW9uIHdpbGwgaGF2ZSB0aGUgbmV3IGluZGV4IGluIGl0cyBsaXN0LCBidXQg dGhlIGluZGV4IGlzIHN0aWxsCi0JICogbWFya2VkIGFzICJub3QtcmVhZHktZm9yLWluc2VydHMi LiAgVGhlIGluZGV4IGlzIGNvbnN1bHRlZCB3aGlsZQorCSAqIHRyYW5zYWN0aW9uIHdpbGwgaGF2 ZSBib3RoIG5ldyBpbmRleGVzIGluIGl0cyBsaXN0LCBidXQgaW5kZXhlcyBhcmUgc3RpbGwKKwkg KiBtYXJrZWQgYXMgIm5vdC1yZWFkeS1mb3ItaW5zZXJ0cyIuIFRoZSBpbmRleGVzIGFyZSBjb25z dWx0ZWQgd2hpbGUKIAkgKiBkZWNpZGluZyBIT1Qtc2FmZXR5IHRob3VnaC4gIFRoaXMgYXJyYW5n ZW1lbnQgZW5zdXJlcyB0aGF0IG5vIG5ldyBIT1QKIAkgKiBjaGFpbnMgY2FuIGJlIGNyZWF0ZWQg d2hlcmUgdGhlIG5ldyB0dXBsZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBjaGFpbiBo YXZlIGRpZmZlcmVudCBpbmRleCBrZXlzLgogCSAqCisJICogTm93IGNhbGwgYnVpbGQgb24gYXV4 aWxpYXJ5IGluZGV4LiBJbmRleCB3aWxsIGJlIGNyZWF0ZWQgZW1wdHkgd2l0aG91dAorCSAqIGFu eSBhY3R1YWwgaGVhcCBzY2FuLCBidXQgbWFya2VkIGFzICJyZWFkeS1mb3ItaW5zZXJ0cyIuIFRo ZSBnb2FsIG9mCisJICogdGhhdCBpbmRleCBpcyBhY2N1bXVsYXRlIG5ldyB0dXBsZXMgd2hpbGUg bWFpbiBpbmRleCBpcyBhY3R1YWxseSBidWlsdC4KKwkgKi8KKworCS8qIFNldCBBY3RpdmVTbmFw c2hvdCBzaW5jZSBmdW5jdGlvbnMgaW4gdGhlIGluZGV4ZXMgbWF5IG5lZWQgaXQgKi8KKwlQdXNo QWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKworCWluZGV4X2NvbmN1 cnJlbnRseV9idWlsZCh0YWJsZUlkLCBhdXhJbmRleFJlbGF0aW9uSWQpOworCS8qIHdlIGNhbiBk byBhd2F5IHdpdGggb3VyIHNuYXBzaG90ICovCisJUG9wQWN0aXZlU25hcHNob3QoKTsKKworCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisK KwkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXgg cXVhbGlmaWVzICovCisJaWYgKHNhZmVfaW5kZXgpCisJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdz KCk7CisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0UsCisJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIpOworCS8qCisJICog Tm93IHdlIG5lZWQgdG8gZW5zdXJlIGFyZSBubyB0cmFuc2FjdGlvbnMgd2l0aCB0aGUgd2l0aCBh dXhpbGlhcnkgaW5kZXgKKwkgKiBtYXJrZWQgYXMgIm5vdC1yZWFkeS1mb3ItaW5zZXJ0cyIuCisJ ICovCisJV2FpdEZvckxvY2tlcnMoaGVhcGxvY2t0YWcsIFNoYXJlTG9jaywgdHJ1ZSk7CisKKwkv KgorCSAqIEF0IHRoaXMgbW9tZW50IHdlIGFyZSBzdXJlIHdoYXQgYWxsIG5ldyB0dXBsZXMgaW4g dGFibGUgYXJlIGluc2VydGVkIGludG8KKwkgKiBhdXhpbGlhcnkgaW5kZXguIE5vdyBpdCBpcyB0 aW1lIHRvIGJ1aWxkIHRoZSB0YXJnZXQgaW5kZXggaXRzZWxmLgorCSAqCiAJICogV2Ugbm93IHRh a2UgYSBuZXcgc25hcHNob3QsIGFuZCBidWlsZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0 aGF0CiAJICogYXJlIHZpc2libGUgaW4gdGhpcyBzbmFwc2hvdC4gIFdlIGNhbiBiZSBzdXJlIHRo YXQgYW55IEhPVCB1cGRhdGVzIHRvCiAJICogdGhlc2UgdHVwbGVzIHdpbGwgYmUgY29tcGF0aWJs ZSB3aXRoIHRoZSBpbmRleCwgc2luY2UgYW55IHVwZGF0ZXMgbWFkZQpAQCAtMTcyNyw5ICsxNzgz LDI4IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIHRoZSBpbmRleCBtYXJrZWQgYXMg cmVhZC1vbmx5IGZvciB1cGRhdGVzLgogCSAqLwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFy YW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFX1dBSVRfMik7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8z KTsKIAlXYWl0Rm9yTG9ja2VycyhoZWFwbG9ja3RhZywgU2hhcmVMb2NrLCB0cnVlKTsKIAorCS8q CisJICogVXBkYXRpbmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3Ms IHNvIGVuc3VyZSB3ZQorCSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KKwkgKi8KKwlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkvKgorCSAqIE5vdyB0YXJn ZXQgaW5kZXggaXMgbWFya2VkIGFzICJyZWFkeSIgZm9yIGFsbCB0cmFuc2FjdGlvbnMuIFNvLCBh dXhpbGlhcnkKKwkgKiBpbmRleCBpcyBub3QgbW9yZSBuZWVkZWQuIFNvLCBzdGFydCByZW1vdmlu ZyBwcm9jZXNzIGJ5IHJldmVydGluZyAicmVhZHkiCisJICogZmxhZy4KKwkgKi8KKwlpbmRleF9z ZXRfc3RhdGVfZmxhZ3MoYXV4SW5kZXhSZWxhdGlvbklkLCBJTkRFWF9EUk9QX0NMRUFSX1JFQURZ KTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXgg YnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJaWYgKHNhZmVfaW5k ZXgpCisJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CisKIAkvKgogCSAqIE5vdyB0YWtlIHRo ZSAicmVmZXJlbmNlIHNuYXBzaG90IiB0aGF0IHdpbGwgYmUgdXNlZCBieSB2YWxpZGF0ZV9pbmRl eCgpCiAJICogdG8gZmlsdGVyIGNhbmRpZGF0ZSB0dXBsZXMuICBCZXdhcmUhICBUaGVyZSBtaWdo dCBzdGlsbCBiZSBzbmFwc2hvdHMgaW4KQEAgLTE3NDcsMjQgKzE4MjIsMTQgQEAgRGVmaW5lSW5k ZXgoT2lkIHRhYmxlSWQsCiAJICovCiAJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRy YW5zYWN0aW9uU25hcHNob3QoKSk7CiAJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKLQog CS8qCi0JICogU2NhbiB0aGUgaW5kZXggYW5kIHRoZSBoZWFwLCBpbnNlcnQgYW55IG1pc3Npbmcg aW5kZXggZW50cmllcy4KLQkgKi8KLQl2YWxpZGF0ZV9pbmRleCh0YWJsZUlkLCBpbmRleFJlbGF0 aW9uSWQsIHNuYXBzaG90KTsKLQotCS8qCi0JICogRHJvcCB0aGUgcmVmZXJlbmNlIHNuYXBzaG90 LiAgV2UgbXVzdCBkbyB0aGlzIGJlZm9yZSB3YWl0aW5nIG91dCBvdGhlcgotCSAqIHNuYXBzaG90 IGhvbGRlcnMsIGVsc2Ugd2Ugd2lsbCBkZWFkbG9jayBhZ2FpbnN0IG90aGVyIHByb2Nlc3NlcyBh bHNvCi0JICogZG9pbmcgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSwgd2hpY2ggd291bGQgc2Vl IG91ciBzbmFwc2hvdCBhcyBvbmUKLQkgKiB0aGV5IG11c3Qgd2FpdCBmb3IuICBCdXQgZmlyc3Qs IHNhdmUgdGhlIHNuYXBzaG90J3MgeG1pbiB0byB1c2UgYXMKLQkgKiBsaW1pdFhtaW4gZm9yIEdl dEN1cnJlbnRWaXJ0dWFsWElEcygpLgorCSAqIE1lcmdlIGNvbnRlbnQgb2YgYXV4aWxpYXJ5IGFu ZCB0YXJnZXQgaW5kZXhlcyAtIGluc2VydCBhbnkgbWlzc2luZyBpbmRleCBlbnRyaWVzLgogCSAq LworCXZhbGlkYXRlX2luZGV4KHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCwgYXV4SW5kZXhSZWxh dGlvbklkLCBzbmFwc2hvdCk7CiAJbGltaXRYbWluID0gc25hcHNob3QtPnhtaW47CiAKIAlQb3BB Y3RpdmVTbmFwc2hvdCgpOwogCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7Ci0KIAkvKgog CSAqIFRoZSBzbmFwc2hvdCBzdWJzeXN0ZW0gY291bGQgc3RpbGwgY29udGFpbiByZWdpc3RlcmVk IHNuYXBzaG90cyB0aGF0CiAJICogYXJlIGhvbGRpbmcgYmFjayBvdXIgcHJvY2VzcydzIGFkdmVy dGlzZWQgeG1pbjsgaW4gcGFydGljdWxhciwgaWYKQEAgLTE3OTEsNyArMTg1Niw3IEBAIERlZmlu ZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqLwogCUlOSkVDVElPTl9QT0lOVCgiZGVmaW5lX2luZGV4 X2JlZm9yZV9zZXRfdmFsaWQiLCBOVUxMKTsKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFt KFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRV9XQUlUXzMpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNCk7 CiAJV2FpdEZvck9sZGVyU25hcHNob3RzKGxpbWl0WG1pbiwgdHJ1ZSk7CiAKIAkvKgpAQCAtMTgx Niw2ICsxODgxLDUzIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIHRvIHJlcGxhbjsg c28gcmVsY2FjaGUgZmx1c2ggb24gdGhlIGluZGV4IGl0c2VsZiB3YXMgc3VmZmljaWVudC4pCiAJ ICovCiAJQ2FjaGVJbnZhbGlkYXRlUmVsY2FjaGVCeVJlbGlkKGhlYXByZWxpZC5yZWxJZCk7CisJ Q29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK KworCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRl eCBxdWFsaWZpZXMgKi8KKwlpZiAoc2FmZV9pbmRleCkKKwkJc2V0X2luZGV4c2FmZV9wcm9jZmxh Z3MoKTsKKworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFLAorCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF81KTsKKwkvKiBO b3cgd2FpdCBmb3IgYWxsIHRyYW5zYWN0aW9uIHRvIHNlZSBhdXhpbGlhcnkgYXMgIm5vbi1yZWFk eSBmb3IgaW5zZXJ0cyIgKi8KKwlXYWl0Rm9yTG9ja2VycyhoZWFwbG9ja3RhZywgQWNjZXNzRXhj bHVzaXZlTG9jaywgdHJ1ZSk7CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFy dFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBVcGRhdGluZyBwZ19pbmRleCBtaWdo dCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBhIHZh bGlkIHNuYXBzaG90LgorCSAqLworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNu YXBzaG90KCkpOworCS8qIE5vdyBpdCBpcyB0aW1lIHRvIG1hcmsgYXV4aWxpYXJ5IGluZGV4IGFz IGRlYWQgKi8KKwlpbmRleF9jb25jdXJyZW50bHlfc2V0X2RlYWQodGFibGVJZCwgYXV4SW5kZXhS ZWxhdGlvbklkKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qIFRlbGwgY29uY3Vy cmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KKwlp ZiAoc2FmZV9pbmRleCkKKwkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKworCXBnc3RhdF9w cm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAorCQkJCQkJCSBQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF82KTsKKwkvKiBOb3cgd2FpdCBmb3IgYWxsIHRy YW5zYWN0aW9uIHRvIGlnbm9yZSBhdXhpbGlhcnkgYmVjYXVzZSBpdCBpcyBkZWFkICovCisJV2Fp dEZvckxvY2tlcnMoaGVhcGxvY2t0YWcsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIHRydWUpOworCisJ Q29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK KworCS8qCisJICogRHJvcCBhdXhpbGlhcnkgaW5kZXguCisJICoKKwkgKiBVc2UgUEVSRk9STV9E RUxFVElPTl9DT05DVVJSRU5UX0xPQ0sgc28gdGhhdCBpbmRleF9kcm9wKCkgdXNlcyB0aGUKKwkg KiByaWdodCBsb2NrIGxldmVsLgorCSAqLworCXBlcmZvcm1EZWxldGlvbigmYXV4QWRkcmVzcywg RFJPUF9SRVNUUklDVCwKKwkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9DT05DVVJSRU5UX0xPQ0sg fCBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFMKTsKIAogCS8qCiAJICogTGFzdCB0aGluZyB0byBk byBpcyByZWxlYXNlIHRoZSBzZXNzaW9uLWxldmVsIGxvY2sgb24gdGhlIHBhcmVudCB0YWJsZS4K QEAgLTM1NzAsNiArMzY4Miw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJdHlwZWRlZiBz dHJ1Y3QgUmVpbmRleEluZGV4SW5mbwogCXsKIAkJT2lkCQkJaW5kZXhJZDsKKwkJT2lkCQkJYXV4 SW5kZXhJZDsKIAkJT2lkCQkJdGFibGVJZDsKIAkJT2lkCQkJYW1JZDsKIAkJYm9vbAkJc2FmZTsJ CS8qIGZvciBzZXRfaW5kZXhzYWZlX3Byb2NmbGFncyAqLwpAQCAtMzY3NSw4ICszNzg4LDE1IEBA IFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lk IHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCU9pZAkJCWNlbGxPaWQgPSBsZmlyc3Rfb2lk KGxjKTsKIAkJCQkJUmVsYXRpb24JaW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4oY2VsbE9pZCwK IAkJCQkJCQkJCQkJCQkJICAgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKKwkJCQkJSW5kZXhJ bmZvKglpbmRleEluZm8gPSBCdWlsZER1bW15SW5kZXhJbmZvKGluZGV4UmVsYXRpb24pOwogCi0J CQkJCWlmICghaW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGlzdmFsaWQpCisKKwkJCQkJaWYg KGluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KQorCQkJCQkJZXJlcG9ydChXQVJOSU5HLChlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCQkgZXJybXNnKCJza2lwcGlu ZyByZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCBcIiVzLiVzXCIiLAorCQkJCQkJCQkJZ2V0X25h bWVzcGFjZV9uYW1lKGdldF9yZWxfbmFtZXNwYWNlKGNlbGxPaWQpKSwKKwkJCQkJCQkJCWdldF9y ZWxfbmFtZShjZWxsT2lkKSkpKTsKKwkJCQkJZWxzZSBpZiAoIWluZGV4UmVsYXRpb24tPnJkX2lu ZGV4LT5pbmRpc3ZhbGlkKQogCQkJCQkJZXJlcG9ydChXQVJOSU5HLAogCQkJCQkJCQkoZXJyY29k ZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkJCQkJIGVy cm1zZygic2tpcHBpbmcgcmVpbmRleCBvZiBpbnZhbGlkIGluZGV4IFwiJXMuJXNcIiIsCkBAIC0z NzI4LDggKzM4NDgsMTUgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5k ZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCQkJCU9pZAkJCWNl bGxPaWQgPSBsZmlyc3Rfb2lkKGxjMik7CiAJCQkJCQlSZWxhdGlvbglpbmRleFJlbGF0aW9uID0g aW5kZXhfb3BlbihjZWxsT2lkLAogCQkJCQkJCQkJCQkJCQkJICAgU2hhcmVVcGRhdGVFeGNsdXNp dmVMb2NrKTsKKwkJCQkJCUluZGV4SW5mbyoJaW5kZXhJbmZvID0gQnVpbGREdW1teUluZGV4SW5m byhpbmRleFJlbGF0aW9uKTsKIAotCQkJCQkJaWYgKCFpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+ aW5kaXN2YWxpZCkKKwkJCQkJCWlmIChpbmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJCQkJCQll cmVwb3J0KFdBUk5JTkcsCisJCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQkJCQkJCQkgZXJybXNnKCJza2lwcGluZyByZWluZGV4IG9mIGF1eGlsaWFy eSBpbmRleCBcIiVzLiVzXCIiLAorCQkJCQkJCQkJCQlnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3Jl bF9uYW1lc3BhY2UoY2VsbE9pZCkpLAorCQkJCQkJCQkJCQlnZXRfcmVsX25hbWUoY2VsbE9pZCkp KSk7CisJCQkJCQllbHNlIGlmICghaW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGlzdmFsaWQp CiAJCQkJCQkJZXJlcG9ydChXQVJOSU5HLAogCQkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJCQkJCQkgZXJybXNnKCJza2lwcGlu ZyByZWluZGV4IG9mIGludmFsaWQgaW5kZXggXCIlcy4lc1wiIiwKQEAgLTM3OTAsNiArMzkxNywx MyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQs IE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJCQkgZXJybXNnKCJjYW5ub3QgcmVpbmRleCBpbnZh bGlkIGluZGV4IG9uIFRPQVNUIHRhYmxlIikpKTsKIAorCQkJCS8qIEF1eGlsaWFyeSBpbmRleGVz IGFyZSBub3QgYWxsb3dlZCB0byBiZSByZWJ1aWx0ICovCisJCQkJaWYgKGdldF9yZWxfcmVsYW0o cmVsYXRpb25PaWQpID09IFNUSVJfQU1fT0lEKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygi cmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlc1wiIG5vdCBzdXBwb3J0ZWQiLAorCQkJCQkJ CQlnZXRfcmVsX25hbWUocmVsYXRpb25PaWQpKSkpOworCiAJCQkJLyoKIAkJCQkgKiBDaGVjayBp ZiBwYXJlbnQgcmVsYXRpb24gY2FuIGJlIGxvY2tlZCBhbmQgaWYgaXQgZXhpc3RzLAogCQkJCSAq IHRoaXMgbmVlZHMgdG8gYmUgZG9uZSBhdCB0aGlzIHN0YWdlIGFzIHRoZSBsaXN0IG9mIGluZGV4 ZXMKQEAgLTM4OTMsMTUgKzQwMjcsMTggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNv bnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAlmb3Jl YWNoKGxjLCBpbmRleElkcykKIAl7CiAJCWNoYXIJICAgKmNvbmN1cnJlbnROYW1lOworCQljaGFy CSAgICphdXhDb25jdXJyZW50TmFtZTsKIAkJUmVpbmRleEluZGV4SW5mbyAqaWR4ID0gbGZpcnN0 KGxjKTsKIAkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4OwogCQlPaWQJCQluZXdJbmRleElkOwor CQlPaWQJCQlhdXhJbmRleElkOwogCQlSZWxhdGlvbglpbmRleFJlbDsKIAkJUmVsYXRpb24JaGVh cFJlbDsKIAkJT2lkCQkJc2F2ZV91c2VyaWQ7CiAJCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJ CWludAkJCXNhdmVfbmVzdGxldmVsOwogCQlSZWxhdGlvbgluZXdJbmRleFJlbDsKKwkJUmVsYXRp b24JYXV4SW5kZXhSZWw7CiAJCUxvY2tSZWxJZCAgKmxvY2tyZWxpZDsKIAkJT2lkCQkJdGFibGVz cGFjZWlkOwogCkBAIC0zOTUyLDYgKzQwODksMTEgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAkJCQkJCQkJCQkJImNjbmV3IiwKIAkJCQkJCQkJCQkJZ2V0X3JlbF9uYW1lc3BhY2UoaW5kZXhS ZWwtPnJkX2luZGV4LT5pbmRyZWxpZCksCiAJCQkJCQkJCQkJCWZhbHNlKTsKKwkJYXV4Q29uY3Vy cmVudE5hbWUgPSBDaG9vc2VSZWxhdGlvbk5hbWUoZ2V0X3JlbF9uYW1lKGlkeC0+aW5kZXhJZCks CisJCQkJCQkJCQkJCU5VTEwsCisJCQkJCQkJCQkJCSJjY2F1eCIsCisJCQkJCQkJCQkJCWdldF9y ZWxfbmFtZXNwYWNlKGluZGV4UmVsLT5yZF9pbmRleC0+aW5kcmVsaWQpLAorCQkJCQkJCQkJCQlm YWxzZSk7CiAKIAkJLyogQ2hvb3NlIHRoZSBuZXcgdGFibGVzcGFjZSwgaW5kZXhlcyBvZiB0b2Fz dCB0YWJsZXMgYXJlIG5vdCBtb3ZlZCAqLwogCQlpZiAoT2lkSXNWYWxpZChwYXJhbXMtPnRhYmxl c3BhY2VPaWQpICYmCkBAIC0zOTY1LDEyICs0MTA3LDE3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1 cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBS ZWluCiAJCQkJCQkJCQkJCQkJaWR4LT5pbmRleElkLAogCQkJCQkJCQkJCQkJCXRhYmxlc3BhY2Vp ZCwKIAkJCQkJCQkJCQkJCQljb25jdXJyZW50TmFtZSk7CisJCWF1eEluZGV4SWQgPSBpbmRleF9j b25jdXJyZW50bHlfY3JlYXRlX2F1eChoZWFwUmVsLAorCQkJCQkJCQkJCQkJICAgbmV3SW5kZXhJ ZCwKKwkJCQkJCQkJCQkJCSAgIHRhYmxlc3BhY2VpZCwKKwkJCQkJCQkJCQkJCSAgIGF1eENvbmN1 cnJlbnROYW1lKTsKIAogCQkvKgogCQkgKiBOb3cgb3BlbiB0aGUgcmVsYXRpb24gb2YgdGhlIG5l dyBpbmRleCwgYSBzZXNzaW9uLWxldmVsIGxvY2sgaXMKIAkJICogYWxzbyBuZWVkZWQgb24gaXQu CiAJCSAqLwogCQluZXdJbmRleFJlbCA9IGluZGV4X29wZW4obmV3SW5kZXhJZCwgU2hhcmVVcGRh dGVFeGNsdXNpdmVMb2NrKTsKKwkJYXV4SW5kZXhSZWwgPSBpbmRleF9vcGVuKGF1eEluZGV4SWQs IFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CiAKIAkJLyoKIAkJICogU2F2ZSB0aGUgbGlzdCBv ZiBPSURzIGFuZCBsb2NrcyBpbiBwcml2YXRlIGNvbnRleHQKQEAgLTM5NzksNiArNDEyNiw3IEBA IFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lk IHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAKIAkJbmV3aWR4ID0gcGFsbG9jX29iamVjdChSZWlu ZGV4SW5kZXhJbmZvKTsKIAkJbmV3aWR4LT5pbmRleElkID0gbmV3SW5kZXhJZDsKKwkJbmV3aWR4 LT5hdXhJbmRleElkID0gYXV4SW5kZXhJZDsKIAkJbmV3aWR4LT5zYWZlID0gaWR4LT5zYWZlOwog CQluZXdpZHgtPnRhYmxlSWQgPSBpZHgtPnRhYmxlSWQ7CiAJCW5ld2lkeC0+YW1JZCA9IGlkeC0+ YW1JZDsKQEAgLTM5OTcsMTAgKzQxNDUsMTQgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5 KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJ bG9ja3JlbGlkID0gcGFsbG9jX29iamVjdChMb2NrUmVsSWQpOwogCQkqbG9ja3JlbGlkID0gbmV3 SW5kZXhSZWwtPnJkX2xvY2tJbmZvLmxvY2tSZWxJZDsKIAkJcmVsYXRpb25Mb2NrcyA9IGxhcHBl bmQocmVsYXRpb25Mb2NrcywgbG9ja3JlbGlkKTsKKwkJbG9ja3JlbGlkID0gcGFsbG9jX29iamVj dChMb2NrUmVsSWQpOworCQkqbG9ja3JlbGlkID0gYXV4SW5kZXhSZWwtPnJkX2xvY2tJbmZvLmxv Y2tSZWxJZDsKKwkJcmVsYXRpb25Mb2NrcyA9IGxhcHBlbmQocmVsYXRpb25Mb2NrcywgbG9ja3Jl bGlkKTsKIAogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKIAkJaW5kZXhf Y2xvc2UoaW5kZXhSZWwsIE5vTG9jayk7CisJCWluZGV4X2Nsb3NlKGF1eEluZGV4UmVsLCBOb0xv Y2spOwogCQlpbmRleF9jbG9zZShuZXdJbmRleFJlbCwgTm9Mb2NrKTsKIAogCQkvKiBSb2xsIGJh Y2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucyAqLwpAQCAtNDA4 MSwxMyArNDIzMyw2MCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRl eFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCSAqIGRvaW5nIHRoYXQs IHdhaXQgdW50aWwgbm8gcnVubmluZyB0cmFuc2FjdGlvbnMgY291bGQgaGF2ZSB0aGUgdGFibGUg b2YKIAkgKiB0aGUgaW5kZXggb3BlbiB3aXRoIHRoZSBvbGQgbGlzdCBvZiBpbmRleGVzLiAgU2Vl ICJwaGFzZSAyIiBpbgogCSAqIERlZmluZUluZGV4KCkgZm9yIG1vcmUgZGV0YWlscy4KKwkqLwor CisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0Us CisJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzEpOworCVdhaXRGb3JMb2Nr ZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7CisJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CisKKwkvKgorCSAqIE5vdyBidWlsZCBhbGwgYXV4aWxpYXJ5IGluZGV4ZXMg YW5kIG1hcmsgdGhlbSBhcyAicmVhZHktZm9yLWluc2VydHMiLgorCSAqLworCWZvcmVhY2gobGMs IG5ld0luZGV4SWRzKQorCXsKKwkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxj KTsKKworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCS8qCisJCSAqIENoZWNrIGZv ciB1c2VyLXJlcXVlc3RlZCBhYm9ydC4gIFRoaXMgaXMgaW5zaWRlIGEgdHJhbnNhY3Rpb24gc28g YXMKKwkJICogeGFjdC5jIGRvZXMgbm90IGlzc3VlIGEgdXNlbGVzcyBXQVJOSU5HLCBhbmQgZW5z dXJlcyB0aGF0CisJCSAqIHNlc3Npb24tbGV2ZWwgbG9ja3MgYXJlIGNsZWFuZWQgdXAgb24gYWJv cnQuCisJCSAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8qIFRlbGwgY29uY3Vy cmVudCBpbmRleGluZyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLworCQlpZiAo bmV3aWR4LT5zYWZlKQorCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKworCQkvKiBTZXQg QWN0aXZlU25hcHNob3Qgc2luY2UgZnVuY3Rpb25zIGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0 ICovCisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCisJ CS8qIEJ1aWxkIGF1eGlsaWFyeSBpbmRleCwgaXQgaXMgZmFzdCAtIHdpdGhvdXQgYW55IGFjdHVh bCBoZWFwIHNjYW4sIGp1c3QgYW4gZW1wdHkgaW5kZXguICovCisJCWluZGV4X2NvbmN1cnJlbnRs eV9idWlsZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7CisKKwkJUG9wQWN0 aXZlU25hcHNob3QoKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJfQorCisJU3Rh cnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogQmVjYXVzZSB3ZSBkb24ndCB0YWtl IGEgc25hcHNob3QgaW4gdGhpcyB0cmFuc2FjdGlvbiwgdGhlcmUncyBubyBuZWVkCisJICogdG8g c2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJlLgogCSAqLwogCiAJcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8xKTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlE WF9QSEFTRV9XQUlUXzIpOworCS8qCisJICogV2FpdCB1bnRpbCBhbGwgYXV4aWxpYXJ5IGluZGV4 ZXMgYXJlIHRha2VuIGludG8gYWNjb3VudCBieSBhbGwKKwkgKiB0cmFuc2FjdGlvbnMuCisJICov CiAJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVlKTsKIAlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAorCS8qIE5vdyBpdCBpcyB0aW1lIHRvIHBlcmZv cm0gdGFyZ2V0IGluZGV4IGJ1aWxkLiAqLwogCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQogCXsK IAkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKQEAgLTQxMzQsNiArNDMz Myw0MSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0 bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCSAqIG5lZWQgdG8gc2V0IHRoZSBQUk9D X0lOX1NBRkVfSUMgZmxhZyBoZXJlLgogCSAqLwogCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9w YXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfV0FJVF8zKTsKKwlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBTaGFy ZUxvY2ssIHRydWUpOworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBB dCB0aGlzIG1vbWVudCBhbGwgdGFyZ2V0IGluZGV4ZXMgYXJlIG1hcmtlZCBhcyAicmVhZHktdG8t aW5zZXJ0Ii4gU28sCisJICogd2UgYXJlIGZyZWUgdG8gc3RhcnQgcHJvY2VzcyBvZiBkcm9wcGlu ZyBhdXhpbGlhcnkgaW5kZXhlcy4KKwkgKi8KKwlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKKwl7 CisJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CisJCVN0YXJ0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisJCS8qCisJCSAqIENoZWNrIGZvciB1c2VyLXJlcXVlc3RlZCBhYm9y dC4gIFRoaXMgaXMgaW5zaWRlIGEgdHJhbnNhY3Rpb24gc28gYXMKKwkJICogeGFjdC5jIGRvZXMg bm90IGlzc3VlIGEgdXNlbGVzcyBXQVJOSU5HLCBhbmQgZW5zdXJlcyB0aGF0CisJCSAqIHNlc3Np b24tbGV2ZWwgbG9ja3MgYXJlIGNsZWFuZWQgdXAgb24gYWJvcnQuCisJCSAqLworCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCisJCS8qIFRlbGwgY29uY3VycmVudCBpbmRleGluZyB0byBpZ25v cmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLworCQlpZiAobmV3aWR4LT5zYWZlKQorCQkJc2V0 X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKworCQkvKgorCQkgKiBVcGRhdGluZyBwZ19pbmRleCBt aWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJCSAqIGhhdmUg YSB2YWxpZCBzbmFwc2hvdC4KKwkJICovCisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkpOworCQlpbmRleF9zZXRfc3RhdGVfZmxhZ3MobmV3aWR4LT5hdXhJbmRl eElkLCBJTkRFWF9EUk9QX0NMRUFSX1JFQURZKTsKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwor CQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwl9CisKIAkvKgogCSAqIFBoYXNlIDMgb2Yg UkVJTkRFWCBDT05DVVJSRU5UTFkKIAkgKgpAQCAtNDE0MSwxMiArNDM3NSw2IEBAIFJlaW5kZXhS ZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9u T2lkLCBjb25zdCBSZWluCiAJICogd2VyZSBjcmVhdGVkIGR1cmluZyB0aGUgcHJldmlvdXMgcGhh c2UuICBTZWUgInBoYXNlIDMiIGluIERlZmluZUluZGV4KCkKIAkgKiBmb3IgbW9yZSBkZXRhaWxz LgogCSAqLwotCi0JcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsKLQlX YWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBTaGFyZUxvY2ssIHRydWUpOwotCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCiAJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCiAJewog CQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOwpAQCAtNDE4NCw3ICs0NDEy LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10 LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJcHJvZ3Jlc3NfdmFsc1szXSA9IG5ld2lk eC0+YW1JZDsKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSg0LCBwcm9ncmVz c19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7CiAKLQkJdmFsaWRhdGVfaW5kZXgobmV3aWR4LT50YWJs ZUlkLCBuZXdpZHgtPmluZGV4SWQsIHNuYXBzaG90KTsKKwkJdmFsaWRhdGVfaW5kZXgobmV3aWR4 LT50YWJsZUlkLCBuZXdpZHgtPmluZGV4SWQsIG5ld2lkeC0+YXV4SW5kZXhJZCwgc25hcHNob3Qp OwogCiAJCS8qCiAJCSAqIFdlIGNhbiBub3cgZG8gYXdheSB3aXRoIG91ciBhY3RpdmUgc25hcHNo b3QsIHdlIHN0aWxsIG5lZWQgdG8gc2F2ZQpAQCAtNDIxMyw3ICs0NDQxLDcgQEAgUmVpbmRleFJl bGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25P aWQsIGNvbnN0IFJlaW4KIAkJICogdGhlcmUncyBubyBuZWVkIHRvIHNldCB0aGUgUFJPQ19JTl9T QUZFX0lDIGZsYWcgaGVyZS4KIAkJICovCiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0o UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRV9XQUlUXzMpOworCQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQp OwogCQlXYWl0Rm9yT2xkZXJTbmFwc2hvdHMobGltaXRYbWluLCB0cnVlKTsKIAogCQlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTQzMDMsMTQgKzQ1MzEsMTQgQEAgUmVpbmRleFJlbGF0 aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQs IGNvbnN0IFJlaW4KIAkvKgogCSAqIFBoYXNlIDUgb2YgUkVJTkRFWCBDT05DVVJSRU5UTFkKIAkg KgotCSAqIE1hcmsgdGhlIG9sZCBpbmRleGVzIGFzIGRlYWQuICBGaXJzdCB3ZSBtdXN0IHdhaXQg dW50aWwgbm8gcnVubmluZwotCSAqIHRyYW5zYWN0aW9uIGNvdWxkIGJlIHVzaW5nIHRoZSBpbmRl eCBmb3IgYSBxdWVyeS4gIFNlZSBhbHNvCisJICogTWFyayB0aGUgb2xkIGFuZCBhdXhpbGlhcnkg aW5kZXhlcyBhcyBkZWFkLiBGaXJzdCB3ZSBtdXN0IHdhaXQgdW50aWwgbm8KKwkgKiBydW5uaW5n IHRyYW5zYWN0aW9uIGNvdWxkIGJlIHVzaW5nIHRoZSBpbmRleCBmb3IgYSBxdWVyeS4gIFNlZSBh bHNvCiAJICogaW5kZXhfZHJvcCgpIGZvciBtb3JlIGRldGFpbHMuCiAJICovCiAKIAlJTkpFQ1RJ T05fUE9JTlQoInJlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zZXRfZGVhZCIs IE5VTEwpOwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNCk7CisJCQkJ CQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF81KTsKIAlXYWl0Rm9yTG9ja2Vyc011 bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCB0cnVlKTsKIAogCWZvcmVhY2go bGMsIGluZGV4SWRzKQpAQCAtNDMzNSw2ICs0NTYzLDI4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1 cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBS ZWluCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJfQogCisJZm9yZWFjaChsYywgbmV3SW5kZXhJ ZHMpCisJeworCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOworCisJCS8q CisJCSAqIENoZWNrIGZvciB1c2VyLXJlcXVlc3RlZCBhYm9ydC4gIFRoaXMgaXMgaW5zaWRlIGEg dHJhbnNhY3Rpb24gc28gYXMKKwkJICogeGFjdC5jIGRvZXMgbm90IGlzc3VlIGEgdXNlbGVzcyBX QVJOSU5HLCBhbmQgZW5zdXJlcyB0aGF0CisJCSAqIHNlc3Npb24tbGV2ZWwgbG9ja3MgYXJlIGNs ZWFuZWQgdXAgb24gYWJvcnQuCisJCSAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJ CS8qCisJCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNj ZXNzLCBzbyBlbnN1cmUgd2UKKwkJICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90LgorCQkgKi8KKwkJ UHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisKKwkJaW5kZXhf Y29uY3VycmVudGx5X3NldF9kZWFkKG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5hdXhJbmRleElk KTsKKworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCX0KKwogCS8qIENvbW1pdCB0aGlzIHRyYW5z YWN0aW9uIHRvIG1ha2UgdGhlIHVwZGF0ZXMgdmlzaWJsZS4gKi8KIAlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAtNDM0OCwxMSArNDU5 OCwxMSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0 bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCS8qCiAJICogUGhhc2UgNiBvZiBSRUlO REVYIENPTkNVUlJFTlRMWQogCSAqCi0JICogRHJvcCB0aGUgb2xkIGluZGV4ZXMuCisJICogRHJv cCB0aGUgb2xkIGFuZCBhdXhpbGlhcnkgaW5kZXhlcy4KIAkgKi8KIAogCXBnc3RhdF9wcm9ncmVz c191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNSk7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0VfV0FJVF82KTsKIAlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NF eGNsdXNpdmVMb2NrLCB0cnVlKTsKIAogCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOwpAQCAtNDM3Miw2ICs0NjIyLDE4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1 cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBS ZWluCiAJCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7CiAJCX0K IAorCQlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKKwkJeworCQkJUmVpbmRleEluZGV4SW5mbyAq aWR4ID0gbGZpcnN0KGxjKTsKKwkJCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCisJCQlvYmplY3Qu Y2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJCW9iamVjdC5vYmplY3RJZCA9IGlkeC0+ YXV4SW5kZXhJZDsKKwkJCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisKKwkJCWFkZF9leGFjdF9v YmplY3RfYWRkcmVzcygmb2JqZWN0LCBvYmplY3RzKTsKKwkJfQorCiAJCS8qCiAJCSAqIFVzZSBQ RVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRfTE9DSyBzbyB0aGF0IGluZGV4X2Ryb3AoKSB1c2Vz IHRoZQogCQkgKiByaWdodCBsb2NrIGxldmVsLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9k ZXMvbWFrZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwppbmRleCBlOTdl MDk0M2Y1Yi4uYjU1NmJhNDgxN2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2Vm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBAIC04MzQsNyArODM0 LDcgQEAgSW5kZXhJbmZvICoKIG1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5 YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMsCiAJCQkgIExpc3QgKnByZWRpY2F0 ZXMsIGJvb2wgdW5pcXVlLCBib29sIG51bGxzX25vdF9kaXN0aW5jdCwKIAkJCSAgYm9vbCBpc3Jl YWR5LCBib29sIGNvbmN1cnJlbnQsIGJvb2wgc3VtbWFyaXppbmcsCi0JCQkgIGJvb2wgd2l0aG91 dG92ZXJsYXBzKQorCQkJICBib29sIHdpdGhvdXRvdmVybGFwcywgYm9vbCBhdXhpbGlhcnkpCiB7 CiAJSW5kZXhJbmZvICAqbiA9IG1ha2VOb2RlKEluZGV4SW5mbyk7CiAKQEAgLTg1MCw2ICs4NTAs NyBAQCBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1v aWQsIExpc3QgKmV4cHJlc3Npb25zLAogCW4tPmlpX0NvbmN1cnJlbnQgPSBjb25jdXJyZW50Owog CW4tPmlpX1N1bW1hcml6aW5nID0gc3VtbWFyaXppbmc7CiAJbi0+aWlfV2l0aG91dE92ZXJsYXBz ID0gd2l0aG91dG92ZXJsYXBzOworCW4tPmlpX0F1eGlsaWFyeSA9IGF1eGlsaWFyeTsKIAogCS8q IHN1bW1hcml6aW5nIGluZGV4ZXMgY2Fubm90IGNvbnRhaW4gbm9uLWtleSBhdHRyaWJ1dGVzICov CiAJQXNzZXJ0KCFzdW1tYXJpemluZyB8fCAobnVta2V5YXR0cnMgPT0gbnVtYXR0cnMpKTsKQEAg LTg3NSw3ICs4NzYsNiBAQCBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0 dHJzLCBPaWQgYW1vaWQsIExpc3QgKmV4cHJlc3Npb25zLAogCS8qIGluaXRpYWxpemUgaW5kZXgt YnVpbGQgc3RhdGUgdG8gZGVmYXVsdCAqLwogCW4tPmlpX0Jyb2tlbkhvdENoYWluID0gZmFsc2U7 CiAJbi0+aWlfUGFyYWxsZWxXb3JrZXJzID0gMDsKLQluLT5paV9BdXhpbGlhcnkgPSBmYWxzZTsK IAogCS8qIHNldCB1cCBmb3IgcG9zc2libGUgdXNlIGJ5IGluZGV4IEFNICovCiAJbi0+aWlfQW0g PSBhbW9pZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IGUxNmJmMDI1NjkyLi4yMjQ0NmIzMjE1NyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC03MDYsNyArNzA2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgVGFi bGVBbVJvdXRpbmUKIAkJCQkJCQkJCQlSZWxhdGlvbiBpbmRleF9yZWwsCiAJCQkJCQkJCQkJSW5k ZXhJbmZvICppbmRleF9pbmZvLAogCQkJCQkJCQkJCVNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJ CQkJCVZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUpOworCQkJCQkJCQkJCVZhbGlkYXRlSW5kZXhT dGF0ZSAqc3RhdGUsCisJCQkJCQkJCQkJVmFsaWRhdGVJbmRleFN0YXRlICphdXhfc3RhdGUpOwog CiAKIAkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE4MDMsMTkgKzE4MDQsMjQgQEAgdGFibGVfaW5k ZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCiAgKiB0YWJsZV9pbmRleF92 YWxpZGF0ZV9zY2FuIC0gc2Vjb25kIHRhYmxlIHNjYW4gZm9yIGNvbmN1cnJlbnQgaW5kZXggYnVp bGQKICAqCiAgKiBTZWUgdmFsaWRhdGVfaW5kZXgoKSBmb3IgYW4gZXhwbGFuYXRpb24uCisgKgor ICogTm90ZTogaXQgaXMgcmVzcG9uc2liaWxpdHkgb2YgdGhhdCBmdW5jdGlvbiB0byBjbG9zZSBz b3J0c3RhdGVzIGluCisgKiBib3RoIGBzdGF0ZWAgYW5kIGBhdXhzdGF0ZWAuCiAgKi8KIHN0YXRp YyBpbmxpbmUgdm9pZAogdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiB0YWJsZV9y ZWwsCiAJCQkJCQkgIFJlbGF0aW9uIGluZGV4X3JlbCwKIAkJCQkJCSAgSW5kZXhJbmZvICppbmRl eF9pbmZvLAogCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCSAgVmFsaWRhdGVJbmRl eFN0YXRlICpzdGF0ZSkKKwkJCQkJCSAgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSwKKwkJCQkJ CSAgVmFsaWRhdGVJbmRleFN0YXRlICphdXhzdGF0ZSkKIHsKIAl0YWJsZV9yZWwtPnJkX3RhYmxl YW0tPmluZGV4X3ZhbGlkYXRlX3NjYW4odGFibGVfcmVsLAogCQkJCQkJCQkJCQkgICBpbmRleF9y ZWwsCiAJCQkJCQkJCQkJCSAgIGluZGV4X2luZm8sCiAJCQkJCQkJCQkJCSAgIHNuYXBzaG90LAot CQkJCQkJCQkJCQkgICBzdGF0ZSk7CisJCQkJCQkJCQkJCSAgIHN0YXRlLAorCQkJCQkJCQkJCQkg ICBhdXhzdGF0ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRl eC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmluZGV4IDRkYWE4YmVmNWVlLi5kNTFi NGU4Y2QxMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtMjUsNiArMjUsNyBAQCB0eXBlZGVmIGVudW0K IHsKIAlJTkRFWF9DUkVBVEVfU0VUX1JFQURZLAogCUlOREVYX0NSRUFURV9TRVRfVkFMSUQsCisJ SU5ERVhfRFJPUF9DTEVBUl9SRUFEWSwKIAlJTkRFWF9EUk9QX0NMRUFSX1ZBTElELAogCUlOREVY X0RST1BfU0VUX0RFQUQsCiB9IEluZGV4U3RhdGVGbGFnc0FjdGlvbjsKQEAgLTY1LDYgKzY2LDcg QEAgZXh0ZXJuIHZvaWQgaW5kZXhfY2hlY2tfcHJpbWFyeV9rZXkoUmVsYXRpb24gaGVhcFJlbCwK ICNkZWZpbmUJSU5ERVhfQ1JFQVRFX0lGX05PVF9FWElTVFMJCQkoMSA8PCA0KQogI2RlZmluZQlJ TkRFWF9DUkVBVEVfUEFSVElUSU9ORUQJCQkoMSA8PCA1KQogI2RlZmluZSBJTkRFWF9DUkVBVEVf SU5WQUxJRAkJCQkoMSA8PCA2KQorI2RlZmluZSBJTkRFWF9DUkVBVEVfQVVYSUxJQVJZCQkJCSgx IDw8IDcpCiAKIGV4dGVybiBPaWQJaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwK IAkJCQkJCSBjb25zdCBjaGFyICppbmRleFJlbGF0aW9uTmFtZSwKQEAgLTEwMCw2ICsxMDIsMTEg QEAgZXh0ZXJuIE9pZAlpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVh cFJlbGF0aW9uLAogCQkJCQkJCQkJCSAgIE9pZCB0YWJsZXNwYWNlT2lkLAogCQkJCQkJCQkJCSAg IGNvbnN0IGNoYXIgKm5ld05hbWUpOwogCitleHRlcm4gT2lkCWluZGV4X2NvbmN1cnJlbnRseV9j cmVhdGVfYXV4KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkJCQkgIE9pZCBtYWluSW5k ZXhJZCwKKwkJCQkJCQkJCQkgIE9pZCB0YWJsZXNwYWNlT2lkLAorCQkJCQkJCQkJCSAgY29uc3Qg Y2hhciAqbmV3TmFtZSk7CisKIGV4dGVybiB2b2lkIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChP aWQgaGVhcFJlbGF0aW9uSWQsCiAJCQkJCQkJCQkgT2lkIGluZGV4UmVsYXRpb25JZCk7CiAKQEAg LTE0NSw3ICsxNTIsNyBAQCBleHRlcm4gdm9pZCBpbmRleF9idWlsZChSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAJCQkJCQlib29sIGlzcmVpbmRleCwKIAkJCQkJCWJvb2wgcGFyYWxsZWwpOwogCi1l eHRlcm4gdm9pZCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNo b3Qgc25hcHNob3QpOworZXh0ZXJuIHZvaWQgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lk IGluZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCk7CiAKIGV4dGVybiB2 b2lkIGluZGV4X3NldF9zdGF0ZV9mbGFncyhPaWQgaW5kZXhJZCwgSW5kZXhTdGF0ZUZsYWdzQWN0 aW9uIGFjdGlvbik7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNz LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oCmluZGV4IDFjZGU0YmQ5YmNmLi45 ZTkzYTRkOTMxMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaAor KysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oCkBAIC05NCwxNCArOTQsMTUgQEAK IAogLyogUGhhc2VzIG9mIENSRUFURSBJTkRFWCAoYXMgYWR2ZXJ0aXNlZCB2aWEgUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFKSAqLwogI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJ VF8xCQkJMQotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfQlVJTEQJCQkyCi0jZGVm aW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIJCQkzCi0jZGVmaW5lIFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9JRFhTQ0FOCTQKLSNkZWZpbmUgUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFX1ZBTElEQVRFX1NPUlQJCTUKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFX1ZBTElEQVRFX1RBQkxFU0NBTgk2Ci0jZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRV9XQUlUXzMJCQk3CisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIJ CQkyCisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9CVUlMRAkJCTMKKyNkZWZpbmUg UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMwkJCTQKKyNkZWZpbmUgUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFX1ZBTElEQVRFX0lEWFNDQU4JNQorI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfVkFMSURBVEVfU09SVAkJNgorI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfVkFMSURBVEVfSURYTUVSR0UJNwogI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0Vf V0FJVF80CQkJOAogI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF81CQkJOQor I2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF82CQkJMTAKIAogLyoKICAqIFN1 YnBoYXNlcyBvZiBDUkVBVEUgSU5ERVgsIGZvciBpbmRleF9idWlsZC4KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNz LmgKaW5kZXggNTQ3M2NlOWEyODguLjQ5MDQ3NDhmNWZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9tYWtlZnVuY3MuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaApA QCAtOTksNyArOTksOCBAQCBleHRlcm4gSW5kZXhJbmZvICptYWtlSW5kZXhJbmZvKGludCBudW1h dHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsCiAJCQkJCQkJCUxpc3QgKmV4cHJlc3Np b25zLCBMaXN0ICpwcmVkaWNhdGVzLAogCQkJCQkJCQlib29sIHVuaXF1ZSwgYm9vbCBudWxsc19u b3RfZGlzdGluY3QsCiAJCQkJCQkJCWJvb2wgaXNyZWFkeSwgYm9vbCBjb25jdXJyZW50LAotCQkJ CQkJCQlib29sIHN1bW1hcml6aW5nLCBib29sIHdpdGhvdXRvdmVybGFwcyk7CisJCQkJCQkJCWJv b2wgc3VtbWFyaXppbmcsIGJvb2wgd2l0aG91dG92ZXJsYXBzLAorCQkJCQkJCQlib29sIGF1eGls aWFyeSk7CiAKIGV4dGVybiBOb2RlICptYWtlU3RyaW5nQ29uc3QoY2hhciAqc3RyLCBpbnQgbG9j YXRpb24pOwogZXh0ZXJuIERlZkVsZW0gKm1ha2VEZWZFbGVtKGNoYXIgKm5hbWUsIE5vZGUgKmFy ZywgaW50IGxvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y3JlYXRlX2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4 Lm91dAppbmRleCA5OGU2OGU5NzJiZS4uYTNlODViYTEzMTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTE0MjMsNiArMTQyMyw3IEBAIERFVEFJTDog IEtleSAoZjEpPShiKSBhbHJlYWR5IGV4aXN0cy4KIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VS UkVOVExZIGNvbmN1cl9pbmRleDMgT04gY29uY3VyX2hlYXAoZjIpOwogRVJST1I6ICBjb3VsZCBu b3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiY29uY3VyX2luZGV4MyIKIERFVEFJTDogIEtleSAoZjIp PShiKSBpcyBkdXBsaWNhdGVkLgorRFJPUCBJTkRFWCBjb25jdXJfaW5kZXgzX2NjYXV4OwogLS0g dGVzdCB0aGF0IGV4cHJlc3Npb24gaW5kZXhlcyBhbmQgcGFydGlhbCBpbmRleGVzIHdvcmsgY29u Y3VycmVudGx5CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9pbmRleDQgb24gY29u Y3VyX2hlYXAoZjIpIFdIRVJFIGYxPSdhJzsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgY29u Y3VyX2luZGV4NSBvbiBjb25jdXJfaGVhcChmMikgV0hFUkUgZjE9J3gnOwpAQCAtMzE5Nyw2ICsz MTk4LDcgQEAgSU5TRVJUIElOVE8gY29uY3VyX3JlaW5kZXhfdGFiNCBWQUxVRVMgKDEpLCAoMSks ICgyKTsKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9yZWluZGV4X2lu ZDUgT04gY29uY3VyX3JlaW5kZXhfdGFiNCAoYzEpOwogRVJST1I6ICBjb3VsZCBub3QgY3JlYXRl IHVuaXF1ZSBpbmRleCAiY29uY3VyX3JlaW5kZXhfaW5kNSIKIERFVEFJTDogIEtleSAoYzEpPSgx KSBpcyBkdXBsaWNhdGVkLgorRFJPUCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4Owog LS0gUmVpbmRleGluZyBjb25jdXJyZW50bHkgdGhpcyBpbmRleCBmYWlscyB3aXRoIHRoZSBzYW1l IGZhaWx1cmUuCiAtLSBUaGUgZXh0cmEgaW5kZXggY3JlYXRlZCBpcyBpdHNlbGYgaW52YWxpZCwg YW5kIGNhbiBiZSBkcm9wcGVkLgogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX3Jl aW5kZXhfaW5kNTsKQEAgLTMyMDksOCArMzIxMSwxMCBAQCBERVRBSUw6ICBLZXkgKGMxKT0oMSkg aXMgZHVwbGljYXRlZC4KICBjMSAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAg fCAKIEluZGV4ZXM6CiAgICAgImNvbmN1cl9yZWluZGV4X2luZDUiIFVOSVFVRSwgYnRyZWUgKGMx KSBJTlZBTElECisgICAgImNvbmN1cl9yZWluZGV4X2luZDVfY2NhdXgiIHN0aXIgKGMxKSBJTlZB TElECiAgICAgImNvbmN1cl9yZWluZGV4X2luZDVfY2NuZXciIFVOSVFVRSwgYnRyZWUgKGMxKSBJ TlZBTElECiAKK0RST1AgSU5ERVggY29uY3VyX3JlaW5kZXhfaW5kNV9jY2F1eDsKIERST1AgSU5E RVggY29uY3VyX3JlaW5kZXhfaW5kNV9jY25ldzsKIC0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3Vz IGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCiBERUxFVEUg RlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsKQEAgLTMyMzgsNiArMzI0Miw0 NCBAQCBJbmRleGVzOgogICAgICJjb25jdXJfcmVpbmRleF9pbmQ1IiBVTklRVUUsIGJ0cmVlIChj MSkKIAogRFJPUCBUQUJMRSBjb25jdXJfcmVpbmRleF90YWI0OworLS0gQ2hlY2sgaGFuZGxpbmcg b2YgYXV4aWxpYXJ5IGluZGV4ZXMKK0NSRUFURSBUQUJMRSBhdXhfaW5kZXhfdGFiNSAoYzEgaW50 KTsKK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgxKSwgKDIpOworLS0g VGhpcyB0cmljayBjcmVhdGVzIGFuIGludmFsaWQgaW5kZXggYW5kIGF1eGlsaWFyeSBpbmRleCBm b3IgaXQKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9O IGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGlu ZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVk LgorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1YmxpYy5hdXhfaW5kZXhf dGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0 IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisg YzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAg ICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpIElOVkFMSUQKKyAgICAiYXV4X2lu ZGV4X2luZDZfY2NhdXgiIHN0aXIgKGMxKSBJTlZBTElECisKKy0tIE5vdCBhbGxvd2VkIHRvIHJl aW5kZXggYXV4aWxpYXJ5IGluZGV4CitSRUlOREVYIElOREVYIGF1eF9pbmRleF9pbmQ2X2NjYXV4 OworRVJST1I6ICByZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCAiYXV4X2luZGV4X2luZDZfY2Nh dXgiIG5vdCBzdXBwb3J0ZWQKKy0tIENvbmN1cnJlbnRseSBhbHNvCitSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNl9jY2F1eDsKK0VSUk9SOiAgcmVpbmRleCBvZiBhdXhp bGlhcnkgaW5kZXggImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBub3Qgc3VwcG9ydGVkCistLSBUaGlz IG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVj b21lIHZhbGlkLgorREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7 CitFUlJPUjogIHJlbGF0aW9uICJjb25jdXJfcmVpbmRleF90YWI0IiBkb2VzIG5vdCBleGlzdAor TElORSAxOiBERUxFVEUgRlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsKKyAg ICAgICAgICAgICAgICAgICAgXgorLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5kZXgK K1JFSU5ERVggVEFCTEUgYXV4X2luZGV4X3RhYjU7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUg dW5pcXVlIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBk dXBsaWNhdGVkLgorLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIGNvbmN1cnJlbnQgcmVpbmRl eAorUkVJTkRFWCBUQUJMRSBDT05DVVJSRU5UTFkgYXV4X2luZGV4X3RhYjU7CitXQVJOSU5HOiAg c2tpcHBpbmcgcmVpbmRleCBvZiBpbnZhbGlkIGluZGV4ICJwdWJsaWMuYXV4X2luZGV4X2luZDYi CitISU5UOiAgVXNlIERST1AgSU5ERVggb3IgUkVJTkRFWCBJTkRFWC4KK1dBUk5JTkc6ICBza2lw cGluZyByZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCAicHVibGljLmF1eF9pbmRleF9pbmQ2X2Nj YXV4IgorTk9USUNFOiAgdGFibGUgImF1eF9pbmRleF90YWI1IiBoYXMgbm8gaW5kZXhlcyB0aGF0 IGNhbiBiZSByZWluZGV4ZWQgY29uY3VycmVudGx5CitEUk9QIFRBQkxFIGF1eF9pbmRleF90YWI1 OwogLS0gQ2hlY2sgaGFuZGxpbmcgb2YgaW5kZXhlcyB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVk aWNhdGVzLiAgVGhlCiAtLSBkZWZpbml0aW9ucyBvZiB0aGUgcmVidWlsdCBpbmRleGVzIHNob3Vs ZCBtYXRjaCB0aGUgb3JpZ2luYWwKIC0tIGRlZmluaXRpb25zLgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2luZGV4aW5nLm91dAppbmRleCA0ZDI5ZmI4NTI5My4uNTRiMjUxYjk2ZWEgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0CkBAIC0xNTg1LDEwICsxNTg1LDExIEBAIHNl bGVjdCBpbmRleHJlbGlkOjpyZWdjbGFzcywgaW5kaXN2YWxpZCwKIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgcGFydGVkX2lzdmFsaWRfaWR4ICAgICAgICAg ICAgIHwgZiAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYiAgICB8IAogIHBhcnRlZF9pc3Zh bGlkX2lkeF8xMSAgICAgICAgICB8IGYgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMTEg fCBwYXJ0ZWRfaXN2YWxpZF90YWJfMV9leHByX2lkeAorIHBhcnRlZF9pc3ZhbGlkX2lkeF8xMV9j Y2F1eCAgICB8IGYgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMTEgfCAKICBwYXJ0ZWRf aXN2YWxpZF90YWJfMTJfZXhwcl9pZHggfCB0ICAgICAgICAgIHwgcGFydGVkX2lzdmFsaWRfdGFi XzEyIHwgcGFydGVkX2lzdmFsaWRfdGFiXzFfZXhwcl9pZHgKICBwYXJ0ZWRfaXN2YWxpZF90YWJf MV9leHByX2lkeCAgfCBmICAgICAgICAgIHwgcGFydGVkX2lzdmFsaWRfdGFiXzEgIHwgcGFydGVk X2lzdmFsaWRfaWR4CiAgcGFydGVkX2lzdmFsaWRfdGFiXzJfZXhwcl9pZHggIHwgdCAgICAgICAg ICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8yICB8IHBhcnRlZF9pc3ZhbGlkX2lkeAotKDUgcm93cykK Kyg2IHJvd3MpCiAKIGRyb3AgdGFibGUgcGFydGVkX2lzdmFsaWRfdGFiOwogLS0gQ2hlY2sgc3Rh dGUgb2YgcmVwbGljYSBpbmRleGVzIHdoZW4gYXR0YWNoaW5nIGEgcGFydGl0aW9uLgpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCAzNWU4YWFkNzcwMS4uYWUzYmZjMzY4OGUgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0yMDUwLDE0ICsyMDUwLDE1IEBAIHBn X3N0YXRfcHJvZ3Jlc3NfY3JlYXRlX2luZGV4fCBTRUxFQ1Qgcy5waWQsCiAgICAgICAgIENBU0Ug cy5wYXJhbTEwCiAgICAgICAgICAgICBXSEVOIDAgVEhFTiAnaW5pdGlhbGl6aW5nJzo6dGV4dAog ICAgICAgICAgICAgV0hFTiAxIFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMgYmVmb3JlIGJ1aWxk Jzo6dGV4dAotICAgICAgICAgICAgV0hFTiAyIFRIRU4gKCdidWlsZGluZyBpbmRleCc6OnRleHQg fHwgQ09BTEVTQ0UoKCc6ICc6OnRleHQgfHwgcGdfaW5kZXhhbV9wcm9ncmVzc19waGFzZW5hbWUo KHMucGFyYW05KTo6b2lkLCBzLnBhcmFtMTEpKSwgJyc6OnRleHQpKQotICAgICAgICAgICAgV0hF TiAzIFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMgYmVmb3JlIHZhbGlkYXRpb24nOjp0ZXh0Ci0g ICAgICAgICAgICBXSEVOIDQgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc2Nhbm5pbmcgaW5kZXgn Ojp0ZXh0Ci0gICAgICAgICAgICBXSEVOIDUgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc29ydGlu ZyB0dXBsZXMnOjp0ZXh0Ci0gICAgICAgICAgICBXSEVOIDYgVEhFTiAnaW5kZXggdmFsaWRhdGlv bjogc2Nhbm5pbmcgdGFibGUnOjp0ZXh0Ci0gICAgICAgICAgICBXSEVOIDcgVEhFTiAnd2FpdGlu ZyBmb3Igb2xkIHNuYXBzaG90cyc6OnRleHQKLSAgICAgICAgICAgIFdIRU4gOCBUSEVOICd3YWl0 aW5nIGZvciByZWFkZXJzIGJlZm9yZSBtYXJraW5nIGRlYWQnOjp0ZXh0Ci0gICAgICAgICAgICBX SEVOIDkgVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUgZHJvcHBpbmcnOjp0ZXh0Cisg ICAgICAgICAgICBXSEVOIDIgVEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyB0byB1c2UgYXV4aWxp YXJ5IGluZGV4Jzo6dGV4dAorICAgICAgICAgICAgV0hFTiAzIFRIRU4gKCdidWlsZGluZyBpbmRl eCc6OnRleHQgfHwgQ09BTEVTQ0UoKCc6ICc6OnRleHQgfHwgcGdfaW5kZXhhbV9wcm9ncmVzc19w aGFzZW5hbWUoKHMucGFyYW05KTo6b2lkLCBzLnBhcmFtMTEpKSwgJyc6OnRleHQpKQorICAgICAg ICAgICAgV0hFTiA0IFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMgYmVmb3JlIHZhbGlkYXRpb24n Ojp0ZXh0CisgICAgICAgICAgICBXSEVOIDUgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc2Nhbm5p bmcgaW5kZXgnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDYgVEhFTiAnaW5kZXggdmFsaWRhdGlv bjogc29ydGluZyB0dXBsZXMnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDcgVEhFTiAnaW5kZXgg dmFsaWRhdGlvbjogbWVyZ2luZyBpbmRleGVzJzo6dGV4dAorICAgICAgICAgICAgV0hFTiA4IFRI RU4gJ3dhaXRpbmcgZm9yIG9sZCBzbmFwc2hvdHMnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDkg VEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUgbWFya2luZyBkZWFkJzo6dGV4dAorICAg ICAgICAgICAgV0hFTiAxMCBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBkcm9wcGlu Zyc6OnRleHQKICAgICAgICAgICAgIEVMU0UgTlVMTDo6dGV4dAogICAgICAgICBFTkQgQVMgcGhh c2UsCiAgICAgcy5wYXJhbTQgQVMgbG9ja2Vyc190b3RhbCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVh dGVfaW5kZXguc3FsCmluZGV4IGVhYmM5NjIzYjIwLi43YWU4ZTQ0MDE5YiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCkBAIC00OTksNiArNDk5LDcgQEAgQ1JFQVRFIFVOSVFV RSBJTkRFWCBDT05DVVJSRU5UTFkgSUYgTk9UIEVYSVNUUyBjb25jdXJfaW5kZXgyIE9OIGNvbmN1 cl9oZWFwKGYxKTsKIElOU0VSVCBJTlRPIGNvbmN1cl9oZWFwIFZBTFVFUyAoJ2InLCd4Jyk7CiAt LSBjaGVjayBpZiBjb25zdHJhaW50IGlzIGVuZm9yY2VkIHByb3Blcmx5IGF0IGJ1aWxkIHRpbWUK IENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9pbmRleDMgT04gY29uY3Vy X2hlYXAoZjIpOworRFJPUCBJTkRFWCBjb25jdXJfaW5kZXgzX2NjYXV4OwogLS0gdGVzdCB0aGF0 IGV4cHJlc3Npb24gaW5kZXhlcyBhbmQgcGFydGlhbCBpbmRleGVzIHdvcmsgY29uY3VycmVudGx5 CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9pbmRleDQgb24gY29uY3VyX2hlYXAo ZjIpIFdIRVJFIGYxPSdhJzsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4 NSBvbiBjb25jdXJfaGVhcChmMikgV0hFUkUgZjE9J3gnOwpAQCAtMTMxMSwxMCArMTMxMiwxMiBA QCBDUkVBVEUgVEFCTEUgY29uY3VyX3JlaW5kZXhfdGFiNCAoYzEgaW50KTsKIElOU0VSVCBJTlRP IGNvbmN1cl9yZWluZGV4X3RhYjQgVkFMVUVTICgxKSwgKDEpLCAoMik7CiAtLSBUaGlzIHRyaWNr IGNyZWF0ZXMgYW4gaW52YWxpZCBpbmRleC4KIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVO VExZIGNvbmN1cl9yZWluZGV4X2luZDUgT04gY29uY3VyX3JlaW5kZXhfdGFiNCAoYzEpOworRFJP UCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4OwogLS0gUmVpbmRleGluZyBjb25jdXJy ZW50bHkgdGhpcyBpbmRleCBmYWlscyB3aXRoIHRoZSBzYW1lIGZhaWx1cmUuCiAtLSBUaGUgZXh0 cmEgaW5kZXggY3JlYXRlZCBpcyBpdHNlbGYgaW52YWxpZCwgYW5kIGNhbiBiZSBkcm9wcGVkLgog UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX3JlaW5kZXhfaW5kNTsKIFxkIGNvbmN1 cl9yZWluZGV4X3RhYjQKK0RST1AgSU5ERVggY29uY3VyX3JlaW5kZXhfaW5kNV9jY2F1eDsKIERS T1AgSU5ERVggY29uY3VyX3JlaW5kZXhfaW5kNV9jY25ldzsKIC0tIFRoaXMgbWFrZXMgdGhlIHBy ZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCiBE RUxFVEUgRlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsKQEAgLTEzMjYsNiAr MTMyOSwyNCBAQCBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1 OwogXGQgY29uY3VyX3JlaW5kZXhfdGFiNAogRFJPUCBUQUJMRSBjb25jdXJfcmVpbmRleF90YWI0 OwogCistLSBDaGVjayBoYW5kbGluZyBvZiBhdXhpbGlhcnkgaW5kZXhlcworQ1JFQVRFIFRBQkxF IGF1eF9pbmRleF90YWI1IChjMSBpbnQpOworSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFM VUVTICgxKSwgKDEpLCAoMik7CistLSBUaGlzIHRyaWNrIGNyZWF0ZXMgYW4gaW52YWxpZCBpbmRl eCBhbmQgYXV4aWxpYXJ5IGluZGV4IGZvciBpdAorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJS RU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKK1xkIGF1eF9pbmRl eF90YWI1CistLSBOb3QgYWxsb3dlZCB0byByZWluZGV4IGF1eGlsaWFyeSBpbmRleAorUkVJTkRF WCBJTkRFWCBhdXhfaW5kZXhfaW5kNl9jY2F1eDsKKy0tIENvbmN1cnJlbnRseSBhbHNvCitSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNl9jY2F1eDsKKy0tIFRoaXMgbWFr ZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUg dmFsaWQuCitERUxFVEUgRlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsKKy0t IFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyByZWluZGV4CitSRUlOREVYIFRBQkxFIGF1eF9pbmRl eF90YWI1OworLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIGNvbmN1cnJlbnQgcmVpbmRleAor UkVJTkRFWCBUQUJMRSBDT05DVVJSRU5UTFkgYXV4X2luZGV4X3RhYjU7CitEUk9QIFRBQkxFIGF1 eF9pbmRleF90YWI1OworCiAtLSBDaGVjayBoYW5kbGluZyBvZiBpbmRleGVzIHdpdGggZXhwcmVz c2lvbnMgYW5kIHByZWRpY2F0ZXMuICBUaGUKIC0tIGRlZmluaXRpb25zIG9mIHRoZSByZWJ1aWx0 IGluZGV4ZXMgc2hvdWxkIG1hdGNoIHRoZSBvcmlnaW5hbAogLS0gZGVmaW5pdGlvbnMuCi0tIAoy LjQzLjAKCg== --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="nocfbot-v24-only-part-3-0002-Add-Datum-storage-support-to-tuplest.patch" Content-Disposition: attachment; filename="nocfbot-v24-only-part-3-0002-Add-Datum-storage-support-to-tuplest.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm0g1 RnJvbSAzZGRiYWY5Mjg5YTYwZDdlN2FiOGUzZjRhMjI1M2JiNGJjNzNlNDk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAyNSBKYW4gMjAyNSAxMzozMzoyMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI0LW9ubHktcGFydC0zIDIvNl0gQWRkIERhdHVtIHN0b3JhZ2Ugc3VwcG9ydCB0byB0 dXBsZXN0b3JlCgogRXh0ZW5kIHR1cGxlc3RvcmUgdG8gc3RvcmUgaW5kaXZpZHVhbCBEYXR1bSB2 YWx1ZXM6Ci0gZml4ZWQtbGVuZ3RoIGRhdGF0eXBlczogc3RvcmUgcmF3IGJ5dGVzIHdpdGhvdXQg YSBsZW5ndGggaGVhZGVyCi0gdmFyaWFibGUtbGVuZ3RoIGRhdGF0eXBlczogaW5jbHVkZSBhIGxl bmd0aCBoZWFkZXIgYW5kIHBhZGRpbmcKLSBieS12YWx1ZSB0eXBlczogc3RvcmUgaW5saW5lCgpU aGlzIHN1cHBvcnQgZW5hYmxlcyB1c2FnZXMgdHVwbGVzdG9yZSBmb3Igbm9uLXR1cGxlIGRhdGEg KFRJRHMpIGluIHRoZSBuZXh0IGNvbW1pdC4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1 cGxlc3RvcmUuYyB8IDMwMiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiBzcmMvaW5jbHVk ZS91dGlscy90dXBsZXN0b3JlLmggICAgICB8ICAzMyArLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjYz IGluc2VydGlvbnMoKyksIDcyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL3NvcnQvdHVwbGVzdG9yZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXN0 b3JlLmMKaW5kZXggYzlhZWNhYjhkNjYuLjM4MDc2ZjM0NThlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9zb3J0L3R1cGxlc3RvcmUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0 L3R1cGxlc3RvcmUuYwpAQCAtMSwxNiArMSwxOSBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgog ICogdHVwbGVzdG9yZS5jCi0gKgkgIEdlbmVyYWxpemVkIHJvdXRpbmVzIGZvciB0ZW1wb3Jhcnkg dHVwbGUgc3RvcmFnZS4KKyAqCSAgR2VuZXJhbGl6ZWQgcm91dGluZXMgZm9yIHRlbXBvcmFyeSBz dG9yYWdlIG9mIHR1cGxlcyBhbmQgRGF0dW1zLgorICoKKyAqIFRoaXMgbW9kdWxlIGhhbmRsZXMg dGVtcG9yYXJ5IHN0b3JhZ2Ugb2YgZWl0aGVyIHR1cGxlcyBvciBzaW5nbGUKKyAqIERhdHVtIHZh bHVlcyBmb3IgcHVycG9zZXMgc3VjaCBhcyBNYXRlcmlhbGl6ZSBub2RlcywgaGFzaGpvaW4gYmF0 Y2gKKyAqIGZpbGVzLCBldGMuIEl0IGlzIGVzc2VudGlhbGx5IGEgZHVtYmVkLWRvd24gdmVyc2lv biBvZiB0dXBsZXNvcnQuYzsKKyAqIGl0IGRvZXMgbm8gc29ydGluZyBvZiB0dXBsZXMgYnV0IGNh biBvbmx5IHN0b3JlIGFuZCByZWd1cmdpdGF0ZSBhIHNlcXVlbmNlCisgKiBvZiB0dXBsZXMuICBI b3dldmVyLCBiZWNhdXNlIG5vIHNvcnQgaXMgcmVxdWlyZWQsIGl0IGlzIGFsbG93ZWQgdG8gc3Rh cnQKKyAqIHJlYWRpbmcgdGhlIHNlcXVlbmNlIGJlZm9yZSBpdCBoYXMgYWxsIGJlZW4gd3JpdHRl bi4KKyAqCisgKiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGN1cnNvcnMsIGJlY2F1 c2UgaXQgYWxsb3dzIHJhbmRvbSBhY2Nlc3MKKyAqIHdpdGhpbiB0aGUgYWxyZWFkeS1zY2FubmVk IHBvcnRpb24gb2YgYSBxdWVyeSB3aXRob3V0IGhhdmluZyB0byBwcm9jZXNzCisgKiB0aGUgdW5k ZXJseWluZyBzY2FuIHRvIGNvbXBsZXRpb24uCiAgKgotICogVGhpcyBtb2R1bGUgaGFuZGxlcyB0 ZW1wb3Jhcnkgc3RvcmFnZSBvZiB0dXBsZXMgZm9yIHB1cnBvc2VzIHN1Y2gKLSAqIGFzIE1hdGVy aWFsaXplIG5vZGVzLCBoYXNoam9pbiBiYXRjaCBmaWxlcywgZXRjLiAgSXQgaXMgZXNzZW50aWFs bHkKLSAqIGEgZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0dXBsZXNvcnQuYzsgaXQgZG9lcyBubyBz b3J0aW5nIG9mIHR1cGxlcwotICogYnV0IGNhbiBvbmx5IHN0b3JlIGFuZCByZWd1cmdpdGF0ZSBh IHNlcXVlbmNlIG9mIHR1cGxlcy4gIEhvd2V2ZXIsCi0gKiBiZWNhdXNlIG5vIHNvcnQgaXMgcmVx dWlyZWQsIGl0IGlzIGFsbG93ZWQgdG8gc3RhcnQgcmVhZGluZyB0aGUgc2VxdWVuY2UKLSAqIGJl Zm9yZSBpdCBoYXMgYWxsIGJlZW4gd3JpdHRlbi4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1 bCBmb3IgY3Vyc29ycywKLSAqIGJlY2F1c2UgaXQgYWxsb3dzIHJhbmRvbSBhY2Nlc3Mgd2l0aGlu IHRoZSBhbHJlYWR5LXNjYW5uZWQgcG9ydGlvbiBvZgotICogYSBxdWVyeSB3aXRob3V0IGhhdmlu ZyB0byBwcm9jZXNzIHRoZSB1bmRlcmx5aW5nIHNjYW4gdG8gY29tcGxldGlvbi4KICAqIEFsc28s IGl0IGlzIHBvc3NpYmxlIHRvIHN1cHBvcnQgbXVsdGlwbGUgaW5kZXBlbmRlbnQgcmVhZCBwb2lu dGVycy4KICAqCiAgKiBBIHRlbXBvcmFyeSBmaWxlIGlzIHVzZWQgdG8gaGFuZGxlIHRoZSBkYXRh IGlmIGl0IGV4Y2VlZHMgdGhlCkBAIC02MSw2ICs2NCw4IEBACiAjaW5jbHVkZSAiZXhlY3V0b3Iv ZXhlY3V0b3IuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1 ZmZpbGUuaCIKKyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVz b3duZXIuaCIKIApAQCAtMTE1LDE2ICsxMjAsMTUgQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQog CUJ1ZkZpbGUgICAgKm15ZmlsZTsJCQkvKiB1bmRlcmx5aW5nIGZpbGUsIG9yIE5VTEwgaWYgbm9u ZSAqLwogCU1lbW9yeUNvbnRleHQgY29udGV4dDsJCS8qIG1lbW9yeSBjb250ZXh0IGZvciBob2xk aW5nIHR1cGxlcyAqLwogCVJlc291cmNlT3duZXIgcmVzb3duZXI7CQkvKiByZXNvd25lciBmb3Ig aG9sZGluZyB0ZW1wIGZpbGVzICovCisJT2lkCQkJZGF0dW1UeXBlOwkJLyogSW52YWxpZE9pZCBv ciBvaWQgb2YgRGF0dW0ncyB0byBiZSBzdG9yZWQgKi8KKwlpbnQxNgkJZGF0dW1UeXBlTGVuOwkv KiB0eXBlbGVuIG9mIHRoYXQgRGF0dW0gKi8KKwlib29sCQlkYXR1bVR5cGVCeVZhbDsgLyogYnkt dmFsdWUgb2YgdGhhdCBhdHVtICovCiAKIAkvKgogCSAqIFRoZXNlIGZ1bmN0aW9uIHBvaW50ZXJz IGRlY291cGxlIHRoZSByb3V0aW5lcyB0aGF0IG11c3Qga25vdyB3aGF0IGtpbmQKIAkgKiBvZiB0 dXBsZSB3ZSBhcmUgaGFuZGxpbmcgZnJvbSB0aGUgcm91dGluZXMgdGhhdCBkb24ndCBuZWVkIHRv IGtub3cgaXQuCiAJICogVGhleSBhcmUgc2V0IHVwIGJ5IHRoZSB0dXBsZXN0b3JlX2JlZ2luX3h4 eCByb3V0aW5lcy4KIAkgKgotCSAqIChBbHRob3VnaCB0dXBsZXN0b3JlLmMgY3VycmVudGx5IG9u bHkgc3VwcG9ydHMgaGVhcCB0dXBsZXMsIEkndmUgY29waWVkCi0JICogdGhpcyBwYXJ0IG9mIHR1 cGxlc29ydC5jIHNvIHRoYXQgZXh0ZW5zaW9uIHRvIG90aGVyIGtpbmRzIG9mIG9iamVjdHMKLQkg KiB3aWxsIGJlIGVhc3kgaWYgaXQncyBldmVyIG5lZWRlZC4pCi0JICoKIAkgKiBGdW5jdGlvbiB0 byBjb3B5IGEgc3VwcGxpZWQgaW5wdXQgdHVwbGUgaW50byBwYWxsb2MnZCBzcGFjZS4gKE5COiB3 ZQogCSAqIGFzc3VtZSB0aGF0IGEgc2luZ2xlIHBmcmVlKCkgaXMgZW5vdWdoIHRvIHJlbGVhc2Ug dGhlIHR1cGxlIGxhdGVyLCBzbwogCSAqIHRoZSByZXByZXNlbnRhdGlvbiBtdXN0IGJlICJmbGF0 IiBpbiBvbmUgcGFsbG9jIGNodW5rLikgc3RhdGUtPmF2YWlsTWVtCkBAIC0xNDMsMTIgKzE0Nywx OCBAQCBzdHJ1Y3QgVHVwbGVzdG9yZXN0YXRlCiAKIAkvKgogCSAqIEZ1bmN0aW9uIHRvIHJlYWQg YSBzdG9yZWQgdHVwbGUgZnJvbSB0YXBlIGJhY2sgaW50byBtZW1vcnkuICdsZW4nIGlzCi0JICog dGhlIGFscmVhZHktcmVhZCBsZW5ndGggb2YgdGhlIHN0b3JlZCB0dXBsZS4gIENyZWF0ZSBhbmQg cmV0dXJuIGEKLQkgKiBwYWxsb2MnZCBjb3B5LCBhbmQgZGVjcmVhc2Ugc3RhdGUtPmF2YWlsTWVt IGJ5IHRoZSBhbW91bnQgb2YgbWVtb3J5Ci0JICogc3BhY2UgY29uc3VtZWQuCisJICogdGhlIGFs cmVhZHkta25vd24gKHJlYWQgb2YgY29uc3RhbnQpIGxlbmd0aCBvZiB0aGUgc3RvcmVkIHR1cGxl LgorCSAqIENyZWF0ZSBhbmQgcmV0dXJuIGEgcGFsbG9jJ2QgY29weSwgYW5kIGRlY3JlYXNlIHN0 YXRlLT5hdmFpbE1lbSBieSB0aGUKKwkgKiBhbW91bnQgb2YgbWVtb3J5IHNwYWNlIGNvbnN1bWVk LgogCSAqLwogCXZvaWQJICAgKigqcmVhZHR1cCkgKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHVu c2lnbmVkIGludCBsZW4pOwogCisJLyoKKwkgKiBGdW5jdGlvbiB0byBnZXQgbGVuZ2ggb2YgdHVw bGUgZnJvbSB0YXBlLiBVc2VkIHRvIHByb3ZpZGUgJ2xlbicgYXJndW1lbnQKKwkgKiBmb3IgcmVh ZHR1cCAoc2VlIGFib3ZlKS4KKwkgKi8KKwl1bnNpZ25lZCBpbnQoKmxlbnR1cCkoVHVwbGVzdG9y ZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSyk7CisKIAkvKgogCSAqIFRoaXMgYXJyYXkgaG9sZHMg cG9pbnRlcnMgdG8gdHVwbGVzIGluIG1lbW9yeSBpZiB3ZSBhcmUgaW4gc3RhdGUgSU5NRU0uCiAJ ICogSW4gc3RhdGVzIFdSSVRFRklMRSBhbmQgUkVBREZJTEUgaXQncyBub3QgdXNlZC4KQEAgLTE4 NSw2ICsxOTUsNyBAQCBzdHJ1Y3QgVHVwbGVzdG9yZXN0YXRlCiAjZGVmaW5lIENPUFlUVVAoc3Rh dGUsdHVwKQkoKCooc3RhdGUpLT5jb3B5dHVwKSAoc3RhdGUsIHR1cCkpCiAjZGVmaW5lIFdSSVRF VFVQKHN0YXRlLHR1cCkgKCgqKHN0YXRlKS0+d3JpdGV0dXApIChzdGF0ZSwgdHVwKSkKICNkZWZp bmUgUkVBRFRVUChzdGF0ZSxsZW4pCSgoKihzdGF0ZSktPnJlYWR0dXApIChzdGF0ZSwgbGVuKSkK KyNkZWZpbmUgTEVOVFVQKHN0YXRlLGVvZk9LKQkoKCooc3RhdGUpLT5sZW50dXApIChzdGF0ZSwg ZW9mT0spKQogI2RlZmluZSBMQUNLTUVNKHN0YXRlKQkJKChzdGF0ZSktPmF2YWlsTWVtIDwgMCkK ICNkZWZpbmUgVVNFTUVNKHN0YXRlLGFtdCkJKChzdGF0ZSktPmF2YWlsTWVtIC09IChhbXQpKQog I2RlZmluZSBGUkVFTUVNKHN0YXRlLGFtdCkJKChzdGF0ZSktPmF2YWlsTWVtICs9IChhbXQpKQpA QCAtMTkzLDkgKzIwNCw5IEBAIHN0cnVjdCBUdXBsZXN0b3Jlc3RhdGUKICAqCiAgKiBOT1RFUyBh Ym91dCBvbi10YXBlIHJlcHJlc2VudGF0aW9uIG9mIHR1cGxlczoKICAqCi0gKiBXZSByZXF1aXJl IHRoZSBmaXJzdCAidW5zaWduZWQgaW50IiBvZiBhIHN0b3JlZCB0dXBsZSB0byBiZSB0aGUgdG90 YWwgc2l6ZQotICogb24tdGFwZSBvZiB0aGUgdHVwbGUsIGluY2x1ZGluZyBpdHNlbGYgKHNvIGl0 IGlzIG5ldmVyIHplcm8pLgotICogVGhlIHJlbWFpbmRlciBvZiB0aGUgc3RvcmVkIHR1cGxlCisg KiBJbiBjYXNlIG9mIHR1cGxlcyB3ZSB1c2UgZmlyc3QgInVuc2lnbmVkIGludCIgb2YgYSBzdG9y ZWQgdHVwbGUKKyAqIHRvIGJlIHRoZSB0b3RhbCBzaXplIG9uLXRhcGUgb2YgdGhlIHR1cGxlLCBp bmNsdWRpbmcgaXRzZWxmCisgKiAoc28gaXQgaXMgbmV2ZXIgemVybykuIFRoZSByZW1haW5kZXIg b2YgdGhlIHN0b3JlZCB0dXBsZQogICogbWF5IG9yIG1heSBub3QgbWF0Y2ggdGhlIGluLW1lbW9y eSByZXByZXNlbnRhdGlvbiBvZiB0aGUgdHVwbGUgLS0tCiAgKiBhbnkgY29udmVyc2lvbiBuZWVk ZWQgaXMgdGhlIGpvYiBvZiB0aGUgd3JpdGV0dXAgYW5kIHJlYWR0dXAgcm91dGluZXMuCiAgKgpA QCAtMjA2LDEwICsyMTcsMTMgQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQogICogc3RhdGUtPmJh Y2t3YXJkIGlzIG5vdCBzZXQsIHRoZSB3cml0ZS9yZWFkIHJvdXRpbmVzIG1heSBvbWl0IHRoZSBl eHRyYQogICogbGVuZ3RoIHdvcmQuCiAgKgorICogSW4gY2FzZSBvZiBEYXR1bSB3aXRoIGNvbnN0 YW50IGxlbmdodCBib3RoICJ1bnNpZ25lZCBpbnQiIGFyZSBvbW1pdHRlZC4KKyAqCiAgKiB3cml0 ZXR1cCBpcyBleHBlY3RlZCB0byB3cml0ZSBib3RoIGxlbmd0aCB3b3JkcyBhcyB3ZWxsIGFzIHRo ZSB0dXBsZQogICogZGF0YS4gIFdoZW4gcmVhZHR1cCBpcyBjYWxsZWQsIHRoZSB0YXBlIGlzIHBv c2l0aW9uZWQganVzdCBhZnRlciB0aGUKLSAqIGZyb250IGxlbmd0aCB3b3JkOyByZWFkdHVwIG11 c3QgcmVhZCB0aGUgdHVwbGUgZGF0YSBhbmQgYWR2YW5jZSBwYXN0Ci0gKiB0aGUgYmFjayBsZW5n dGggd29yZCAoaWYgcHJlc2VudCkuCisgKiBmcm9udCBsZW5ndGggd29yZCAoaWYgaXQgbm90IG9t bWl0dGVkIGxpa2UgaW4gY2FzZSBvZiBjb250YW50LXNpemUgRGF0dW0pOworICogcmVhZHR1cCBt dXN0IHJlYWQgdGhlIHR1cGxlIGRhdGEgYW5kIGFkdmFuY2UgcGFzdCB0aGUgYmFjayBsZW5ndGgg d29yZAorICogKGlmIHByZXNlbnQpLgogICoKICAqIFRoZSB3cml0ZS9yZWFkIHJvdXRpbmVzIGNh biBtYWtlIHVzZSBvZiB0aGUgdHVwbGUgZGVzY3JpcHRpb24gZGF0YQogICogc3RvcmVkIGluIHRo ZSBUdXBsZXN0b3Jlc3RhdGUgcmVjb3JkLCBpZiBuZWVkZWQuIFRoZXkgYXJlIGFsc28gZXhwZWN0 ZWQKQEAgLTI0MSwxMSArMjU1LDE2IEBAIHN0YXRpYyBUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc3Rv cmVfYmVnaW5fY29tbW9uKGludCBlZmxhZ3MsCiBzdGF0aWMgdm9pZCB0dXBsZXN0b3JlX3B1dHR1 cGxlX2NvbW1vbihUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkICp0dXBsZSk7CiBzdGF0aWMg dm9pZCBkdW1wdHVwbGVzKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUpOwogc3RhdGljIHZvaWQgdHVw bGVzdG9yZV91cGRhdGVtYXgoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSk7Ci1zdGF0aWMgdW5zaWdu ZWQgaW50IGdldGxlbihUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKTsKKworc3Rh dGljIHVuc2lnbmVkIGludCBsZW50dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29s IGVvZk9LKTsKIHN0YXRpYyB2b2lkICpjb3B5dHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0 ZSwgdm9pZCAqdHVwKTsKIHN0YXRpYyB2b2lkIHdyaXRldHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRl ICpzdGF0ZSwgdm9pZCAqdHVwKTsKIHN0YXRpYyB2b2lkICpyZWFkdHVwX2hlYXAoVHVwbGVzdG9y ZXN0YXRlICpzdGF0ZSwgdW5zaWduZWQgaW50IGxlbik7CiAKK3N0YXRpYyB1bnNpZ25lZCBpbnQg bGVudHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spOworc3RhdGlj IHZvaWQgKmNvcHl0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCAqZGF0dW0p Oworc3RhdGljIHZvaWQgd3JpdGV0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9p ZCAqZGF0dW0pOworc3RhdGljIHZvaWQgKnJlYWR0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpz dGF0ZSwgdW5zaWduZWQgaW50IGxlbik7CiAKIC8qCiAgKgkJdHVwbGVzdG9yZV9iZWdpbl94eHgK QEAgLTI2OCw2ICsyODcsMTIgQEAgdHVwbGVzdG9yZV9iZWdpbl9jb21tb24oaW50IGVmbGFncywg Ym9vbCBpbnRlclhhY3QsIGludCBtYXhLQnl0ZXMpCiAJc3RhdGUtPmFsbG93ZWRNZW0gPSBtYXhL Qnl0ZXMgKiAoaW50NjQpIDEwMjQ7CiAJc3RhdGUtPmF2YWlsTWVtID0gc3RhdGUtPmFsbG93ZWRN ZW07CiAJc3RhdGUtPm15ZmlsZSA9IE5VTEw7CisJLyoKKwkgKiBTZXQgRGF0dW0gcmVsYXRlZCBk YXRhIHRvIGludmFsaWQgYnkgZGVmYXVsdC4KKwkgKi8KKwlzdGF0ZS0+ZGF0dW1UeXBlID0gSW52 YWxpZE9pZDsKKwlzdGF0ZS0+ZGF0dW1UeXBlTGVuID0gIDA7CisJc3RhdGUtPmRhdHVtVHlwZUJ5 VmFsID0gZmFsc2U7CiAKIAkvKgogCSAqIFRoZSBwYWxsb2MvcGZyZWUgcGF0dGVybiBmb3IgdHVw bGUgbWVtb3J5IGlzIGluIGEgRklGTyBwYXR0ZXJuLiAgQQpAQCAtMzQ1LDYgKzM3MCwzNiBAQCB0 dXBsZXN0b3JlX2JlZ2luX2hlYXAoYm9vbCByYW5kb21BY2Nlc3MsIGJvb2wgaW50ZXJYYWN0LCBp bnQgbWF4S0J5dGVzKQogCXN0YXRlLT5jb3B5dHVwID0gY29weXR1cF9oZWFwOwogCXN0YXRlLT53 cml0ZXR1cCA9IHdyaXRldHVwX2hlYXA7CiAJc3RhdGUtPnJlYWR0dXAgPSByZWFkdHVwX2hlYXA7 CisJc3RhdGUtPmxlbnR1cCA9IGxlbnR1cF9oZWFwOworCisJcmV0dXJuIHN0YXRlOworfQorCisv KgorICogVGhlIHNhbWUgYXMgdHVwbGVzdG9yZV9iZWdpbl9oZWFwIGJ1dCBjcmVhdGUgc3RvcmUg Zm9yIERhdHVtIHZhbHVlcy4KKyAqLworVHVwbGVzdG9yZXN0YXRlICoKK3R1cGxlc3RvcmVfYmVn aW5fZGF0dW0oT2lkIGRhdHVtVHlwZSwgYm9vbCByYW5kb21BY2Nlc3MsIGJvb2wgaW50ZXJYYWN0 LCBpbnQgbWF4S0J5dGVzKQoreworCVR1cGxlc3RvcmVzdGF0ZSAqc3RhdGU7CisJaW50CQkJZWZs YWdzOworCisJLyoKKwkgKiBUaGlzIGludGVycHJldGF0aW9uIG9mIHRoZSBtZWFuaW5nIG9mIHJh bmRvbUFjY2VzcyBpcyBjb21wYXRpYmxlIHdpdGgKKwkgKiB0aGUgcHJlLTguMyBiZWhhdmlvciBv ZiB0dXBsZXN0b3Jlcy4KKwkgKi8KKwllZmxhZ3MgPSByYW5kb21BY2Nlc3MgPworCQkoRVhFQ19G TEFHX0JBQ0tXQVJEIHwgRVhFQ19GTEFHX1JFV0lORCkgOgorCQkoRVhFQ19GTEFHX1JFV0lORCk7 CisKKwlzdGF0ZSA9IHR1cGxlc3RvcmVfYmVnaW5fY29tbW9uKGVmbGFncywgaW50ZXJYYWN0LCBt YXhLQnl0ZXMpOworCXN0YXRlLT5kYXR1bVR5cGUgPSBkYXR1bVR5cGU7CisJZ2V0X3R5cGxlbmJ5 dmFsKHN0YXRlLT5kYXR1bVR5cGUsICZzdGF0ZS0+ZGF0dW1UeXBlTGVuLCAmc3RhdGUtPmRhdHVt VHlwZUJ5VmFsKTsKKworCXN0YXRlLT5jb3B5dHVwID0gY29weXR1cF9kYXR1bTsKKwlzdGF0ZS0+ d3JpdGV0dXAgPSB3cml0ZXR1cF9kYXR1bTsKKwlzdGF0ZS0+cmVhZHR1cCA9IHJlYWR0dXBfZGF0 dW07CisJc3RhdGUtPmxlbnR1cCA9IGxlbnR1cF9kYXR1bTsKIAogCXJldHVybiBzdGF0ZTsKIH0K QEAgLTQ0MywxNiArNDk4LDE5IEBAIHR1cGxlc3RvcmVfY2xlYXIoVHVwbGVzdG9yZXN0YXRlICpz dGF0ZSkKIAl7CiAJCWludDY0CQlhdmFpbE1lbSA9IHN0YXRlLT5hdmFpbE1lbTsKIAotCQkvKgot CQkgKiBCZWxvdywgd2UgcmVzZXQgdGhlIG1lbW9yeSBjb250ZXh0IGZvciBzdG9yaW5nIHR1cGxl cy4gIFRvIHNhdmUKLQkJICogZnJvbSBoYXZpbmcgdG8gYWx3YXlzIGNhbGwgR2V0TWVtb3J5Q2h1 bmtTcGFjZSgpIG9uIGFsbCBzdG9yZWQKLQkJICogdHVwbGVzLCB3ZSBhZGp1c3QgdGhlIGF2YWls TWVtIHRvIGZvcmdldCBhbGwgdGhlIHR1cGxlcyBhbmQganVzdAotCQkgKiByZWNhbGwgVVNFTUVN IGZvciB0aGUgc3BhY2UgdXNlZCBieSB0aGUgbWVtdHVwbGVzIGFycmF5LiAgSGVyZSB3ZQotCQkg KiBqdXN0IEFzc2VydCB0aGF0J3MgY29ycmVjdCBhbmQgdGhlIG1lbW9yeSB0cmFja2luZyBoYXNu J3QgZ29uZQotCQkgKiB3cm9uZyBhbnl3aGVyZS4KLQkJICovCi0JCWZvciAoaSA9IHN0YXRlLT5t ZW10dXBkZWxldGVkOyBpIDwgc3RhdGUtPm1lbXR1cGNvdW50OyBpKyspCi0JCQlhdmFpbE1lbSAr PSBHZXRNZW1vcnlDaHVua1NwYWNlKHN0YXRlLT5tZW10dXBsZXNbaV0pOworCQlpZiAoIXN0YXRl LT5kYXR1bVR5cGVCeVZhbCkKKwkJeworCQkJLyoKKwkJCSAqIEJlbG93LCB3ZSByZXNldCB0aGUg bWVtb3J5IGNvbnRleHQgZm9yIHN0b3JpbmcgdHVwbGVzLiAgVG8gc2F2ZQorCQkJICogZnJvbSBo YXZpbmcgdG8gYWx3YXlzIGNhbGwgR2V0TWVtb3J5Q2h1bmtTcGFjZSgpIG9uIGFsbCBzdG9yZWQK KwkJCSAqIHR1cGxlcywgd2UgYWRqdXN0IHRoZSBhdmFpbE1lbSB0byBmb3JnZXQgYWxsIHRoZSB0 dXBsZXMgYW5kIGp1c3QKKwkJCSAqIHJlY2FsbCBVU0VNRU0gZm9yIHRoZSBzcGFjZSB1c2VkIGJ5 IHRoZSBtZW10dXBsZXMgYXJyYXkuICBIZXJlIHdlCisJCQkgKiBqdXN0IEFzc2VydCB0aGF0J3Mg Y29ycmVjdCBhbmQgdGhlIG1lbW9yeSB0cmFja2luZyBoYXNuJ3QgZ29uZQorCQkJICogd3Jvbmcg YW55d2hlcmUuCisJCQkgKi8KKwkJCWZvciAoaSA9IHN0YXRlLT5tZW10dXBkZWxldGVkOyBpIDwg c3RhdGUtPm1lbXR1cGNvdW50OyBpKyspCisJCQkJYXZhaWxNZW0gKz0gR2V0TWVtb3J5Q2h1bmtT cGFjZShzdGF0ZS0+bWVtdHVwbGVzW2ldKTsKKwkJfQogCiAJCWF2YWlsTWVtICs9IEdldE1lbW9y eUNodW5rU3BhY2Uoc3RhdGUtPm1lbXR1cGxlcyk7CiAKQEAgLTc3Niw2ICs4MzQsMjUgQEAgdHVw bGVzdG9yZV9wdXR0dXBsZShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBIZWFwVHVwbGUgdHVwbGUp CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiB9CiAKKy8qCisgKiBMaWtlIHR1cGxl c3RvcmVfcHV0dHVwbGVzbG90IGJ1dCBmb3Igc2luZ2xlIERhdHVtLgorICovCit2b2lkCit0dXBs ZXN0b3JlX3B1dGRhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIERhdHVtIGRhdHVtKQorewor CU1lbW9yeUNvbnRleHQgb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHN0YXRlLT5jb250 ZXh0KTsKKworCS8qCisJICogQ29weSB0aGUgRGF0dW0uICAoTXVzdCBkbyB0aGlzIGV2ZW4gaW4g V1JJVEVGSUxFIGNhc2UuICBOb3RlIHRoYXQKKwkgKiBDT1BZVFVQIGluY2x1ZGVzIFVTRU1FTSwg c28gd2UgbmVlZG4ndCBkbyB0aGF0IGhlcmUuKQorCSAqLworCWRhdHVtID0gUG9pbnRlckdldERh dHVtKENPUFlUVVAoc3RhdGUsIERhdHVtR2V0UG9pbnRlcihkYXR1bSkpKTsKKworCXR1cGxlc3Rv cmVfcHV0dHVwbGVfY29tbW9uKHN0YXRlLCBEYXR1bUdldFBvaW50ZXIoZGF0dW0pKTsKKworCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworfQorCiAvKgogICogU2ltaWxhciB0byB0dXBs ZXN0b3JlX3B1dHR1cGxlKCksIGJ1dCB3b3JrIGZyb20gdmFsdWVzICsgbnVsbHMgYXJyYXlzLgog ICogVGhpcyBhdm9pZHMgYW4gZXh0cmEgdHVwbGUtY29uc3RydWN0aW9uIG9wZXJhdGlvbi4KQEAg LTEwMjcsMTAgKzExMDQsMTAgQEAgdHVwbGVzdG9yZV9nZXR0dXBsZShUdXBsZXN0b3Jlc3RhdGUg KnN0YXRlLCBib29sIGZvcndhcmQsCiAJCQkvKiBGQUxMVEhST1VHSCAqLwogCiAJCWNhc2UgVFNT X1JFQURGSUxFOgotCQkJKnNob3VsZF9mcmVlID0gdHJ1ZTsKKwkJCSpzaG91bGRfZnJlZSA9ICFz dGF0ZS0+ZGF0dW1UeXBlQnlWYWw7CiAJCQlpZiAoZm9yd2FyZCkKIAkJCXsKLQkJCQlpZiAoKHR1 cGxlbiA9IGdldGxlbihzdGF0ZSwgdHJ1ZSkpICE9IDApCisJCQkJaWYgKCh0dXBsZW4gPSBMRU5U VVAoc3RhdGUsIHRydWUpKSAhPSAwKQogCQkJCXsKIAkJCQkJdHVwID0gUkVBRFRVUChzdGF0ZSwg dHVwbGVuKTsKIAkJCQkJcmV0dXJuIHR1cDsKQEAgLTEwNTksNyArMTEzNiw3IEBAIHR1cGxlc3Rv cmVfZ2V0dHVwbGUoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAogCQkJCUFz c2VydCghc3RhdGUtPnRydW5jYXRlZCk7CiAJCQkJcmV0dXJuIE5VTEw7CiAJCQl9Ci0JCQl0dXBs ZW4gPSBnZXRsZW4oc3RhdGUsIGZhbHNlKTsKKwkJCXR1cGxlbiA9IExFTlRVUChzdGF0ZSwgZmFs c2UpOwogCiAJCQlpZiAocmVhZHB0ci0+ZW9mX3JlYWNoZWQpCiAJCQl7CkBAIC0xMDkwLDcgKzEx NjcsNyBAQCB0dXBsZXN0b3JlX2dldHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wg Zm9yd2FyZCwKIAkJCQkJQXNzZXJ0KCFzdGF0ZS0+dHJ1bmNhdGVkKTsKIAkJCQkJcmV0dXJuIE5V TEw7CiAJCQkJfQotCQkJCXR1cGxlbiA9IGdldGxlbihzdGF0ZSwgZmFsc2UpOworCQkJCXR1cGxl biA9IExFTlRVUChzdGF0ZSwgZmFsc2UpOwogCQkJfQogCiAJCQkvKgpAQCAtMTE1Miw2ICsxMjI5 LDI1IEBAIHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJv b2wgZm9yd2FyZCwKIAl9CiB9CiAKK2V4dGVybiBib29sIHR1cGxlc3RvcmVfZ2V0ZGF0dW0oVHVw bGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAorCQkJCQkJCQlib29sICpzaG91bGRf ZnJlZSwgRGF0dW0gKnJlc3VsdCkKK3sKKwlEYXR1bSBkYXR1bTsKKwkqc2hvdWxkX2ZyZWUgPSBm YWxzZTsKKworCWRhdHVtID0gKERhdHVtKSB0dXBsZXN0b3JlX2dldHR1cGxlKHN0YXRlLCBmb3J3 YXJkLCBzaG91bGRfZnJlZSk7CisJaWYgKGRhdHVtKQorCXsKKwkJKnJlc3VsdCA9ZGF0dW07CisJ CXJldHVybiB0cnVlOworCX0KKwllbHNlCisJeworCQkqcmVzdWx0ID0gUG9pbnRlckdldERhdHVt KE5VTEwpOworCQlyZXR1cm4gZmFsc2U7CisJfQorfQorCiAvKgogICogdHVwbGVzdG9yZV9hZHZh bmNlIC0gZXhwb3J0ZWQgZnVuY3Rpb24gdG8gYWRqdXN0IHBvc2l0aW9uIHdpdGhvdXQgZmV0Y2hp bmcKICAqCkBAIC0xNDYwLDggKzE1NTYsMTEgQEAgdHVwbGVzdG9yZV90cmltKFR1cGxlc3RvcmVz dGF0ZSAqc3RhdGUpCiAJLyogUmVsZWFzZSBuby1sb25nZXItbmVlZGVkIHR1cGxlcyAqLwogCWZv ciAoaSA9IHN0YXRlLT5tZW10dXBkZWxldGVkOyBpIDwgbnJlbW92ZTsgaSsrKQogCXsKLQkJRlJF RU1FTShzdGF0ZSwgR2V0TWVtb3J5Q2h1bmtTcGFjZShzdGF0ZS0+bWVtdHVwbGVzW2ldKSk7Ci0J CXBmcmVlKHN0YXRlLT5tZW10dXBsZXNbaV0pOworCQlpZiAoIXN0YXRlLT5kYXR1bVR5cGVCeVZh bCkKKwkJeworCQkJRlJFRU1FTShzdGF0ZSwgR2V0TWVtb3J5Q2h1bmtTcGFjZShzdGF0ZS0+bWVt dHVwbGVzW2ldKSk7CisJCQlwZnJlZShzdGF0ZS0+bWVtdHVwbGVzW2ldKTsKKwkJfQogCQlzdGF0 ZS0+bWVtdHVwbGVzW2ldID0gTlVMTDsKIAl9CiAJc3RhdGUtPm1lbXR1cGRlbGV0ZWQgPSBucmVt b3ZlOwpAQCAtMTU1NiwyNSArMTY1NSw2IEBAIHR1cGxlc3RvcmVfaW5fbWVtb3J5KFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUpCiAJcmV0dXJuIChzdGF0ZS0+c3RhdHVzID09IFRTU19JTk1FTSk7CiB9 CiAKLQotLyoKLSAqIFRhcGUgaW50ZXJmYWNlIHJvdXRpbmVzCi0gKi8KLQotc3RhdGljIHVuc2ln bmVkIGludAotZ2V0bGVuKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spCi17Ci0J dW5zaWduZWQgaW50IGxlbjsKLQlzaXplX3QJCW5ieXRlczsKLQotCW5ieXRlcyA9IEJ1ZkZpbGVS ZWFkTWF5YmVFT0Yoc3RhdGUtPm15ZmlsZSwgJmxlbiwgc2l6ZW9mKGxlbiksIGVvZk9LKTsKLQlp ZiAobmJ5dGVzID09IDApCi0JCXJldHVybiAwOwotCWVsc2UKLQkJcmV0dXJuIGxlbjsKLX0KLQot CiAvKgogICogUm91dGluZXMgc3BlY2lhbGl6ZWQgZm9yIEhlYXBUdXBsZSBjYXNlCiAgKgpAQCAt MTU4NSw2ICsxNjY1LDE5IEBAIGdldGxlbihUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVv Zk9LKQogICogdG8gd3JpdGUgdGhhdCBzZXBhcmF0ZWx5LgogICovCiAKK3N0YXRpYyB1bnNpZ25l ZCBpbnQKK2xlbnR1cF9oZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spCit7 CisJdW5zaWduZWQgaW50IGxlbjsKKwlzaXplX3QJCW5ieXRlczsKKworCW5ieXRlcyA9IEJ1ZkZp bGVSZWFkTWF5YmVFT0Yoc3RhdGUtPm15ZmlsZSwgJmxlbiwgc2l6ZW9mKGxlbiksIGVvZk9LKTsK KwlpZiAobmJ5dGVzID09IDApCisJCXJldHVybiAwOworCWVsc2UKKwkJcmV0dXJuIGxlbjsKK30K Kwogc3RhdGljIHZvaWQgKgogY29weXR1cF9oZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZv aWQgKnR1cCkKIHsKQEAgLTE2MzEsMyArMTcyNCw5OCBAQCByZWFkdHVwX2hlYXAoVHVwbGVzdG9y ZXN0YXRlICpzdGF0ZSwgdW5zaWduZWQgaW50IGxlbikKIAkJQnVmRmlsZVJlYWRFeGFjdChzdGF0 ZS0+bXlmaWxlLCAmdHVwbGVuLCBzaXplb2YodHVwbGVuKSk7CiAJcmV0dXJuIHR1cGxlOwogfQor CisvKgorICogUm91dGluZXMgc3BlY2lhbGl6ZWQgZm9yIERhdHVtIGNhc2UuCisgKgorICogSGFu ZGxlcyBib3RoIGZpeGVkIGFuZCB2YXJpYWJsZS1sZW5ndGggRGF0dW1zIGVmZmljaWVudGx5Ogor ICogLSBGaXhlZC1sZW5ndGg6IHN0b3JlcyByYXcgYnl0ZXMgd2l0aG91dCBsZW5ndGggcHJlZml4 CisgKiAtIFZhcmlhYmxlLWxlbmd0aDogaW5jbHVkZXMgbGVuZ3RoIHByZWZpeCAoYW5kIHN1ZmZp eCBpZiBiYWNrd2FyZCBzY2FuKQorICogLSBCeS12YWx1ZSB0eXBlcyBoYW5kbGVkIGlubGluZSB3 aXRob3V0IGV4dHJhIGNvcHlpbmcKKyAqLworCitzdGF0aWMgdW5zaWduZWQgaW50CitsZW50dXBf ZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSykKK3sKKwl1bnNpZ25lZCBp bnQgbGVuOworCXNpemVfdAkJbmJ5dGVzOworCisJQXNzZXJ0KHN0YXRlLT5kYXR1bVR5cGUgIT0g SW52YWxpZE9pZCk7CisKKwlpZiAoc3RhdGUtPmRhdHVtVHlwZUxlbiA+IDApCisJCXJldHVybiBz dGF0ZS0+ZGF0dW1UeXBlTGVuOworCisJbmJ5dGVzID0gQnVmRmlsZVJlYWRNYXliZUVPRihzdGF0 ZS0+bXlmaWxlLCAmbGVuLCBzaXplb2YobGVuKSwgZW9mT0spOworCWlmIChuYnl0ZXMgPT0gMCkK KwkJcmV0dXJuIDA7CisJZWxzZQorCQlyZXR1cm4gbGVuOworfQorCitzdGF0aWMgdm9pZCAqCitj b3B5dHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZvaWQqIGRhdHVtKQoreworCUFz c2VydChzdGF0ZS0+ZGF0dW1UeXBlICE9IEludmFsaWRPaWQpOworCWlmIChzdGF0ZS0+ZGF0dW1U eXBlQnlWYWwpCisJCXJldHVybiBEYXR1bUdldFBvaW50ZXIoUG9pbnRlckdldERhdHVtKGRhdHVt KSk7CisJZWxzZQorCXsKKwkJRGF0dW0gZCA9IGRhdHVtQ29weShQb2ludGVyR2V0RGF0dW0oZGF0 dW0pLCBzdGF0ZS0+ZGF0dW1UeXBlQnlWYWwsIHN0YXRlLT5kYXR1bVR5cGVMZW4pOworCQlVU0VN RU0oc3RhdGUsIEdldE1lbW9yeUNodW5rU3BhY2UoRGF0dW1HZXRQb2ludGVyKGQpKSk7CisJCXJl dHVybiBEYXR1bUdldFBvaW50ZXIoZCk7CisJfQorfQorCitzdGF0aWMgdm9pZAord3JpdGV0dXBf ZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCogZGF0dW0pCit7CisJQXNzZXJ0KHN0 YXRlLT5kYXR1bVR5cGUgIT0gSW52YWxpZE9pZCk7CisJaWYgKHN0YXRlLT5kYXR1bVR5cGVCeVZh bCkKKwl7CisJCUFzc2VydChzdGF0ZS0+ZGF0dW1UeXBlTGVuID4gMCk7CisJCUJ1ZkZpbGVXcml0 ZShzdGF0ZS0+bXlmaWxlLCBkYXR1bSwgc3RhdGUtPmRhdHVtVHlwZUxlbik7CisJfQorCWVsc2UK Kwl7CisJCVNpemUgc2l6ZSA9IHN0YXRlLT5kYXR1bVR5cGVMZW47CisJCWlmIChzdGF0ZS0+ZGF0 dW1UeXBlTGVuIDwgMCkKKwkJeworCQkJQnVmRmlsZVdyaXRlKHN0YXRlLT5teWZpbGUsICZzaXpl LCBzaXplb2Yoc2l6ZSkpOworCQkJc2l6ZSA9IGRhdHVtR2V0U2l6ZShQb2ludGVyR2V0RGF0dW0o ZGF0dW0pLCBzdGF0ZS0+ZGF0dW1UeXBlQnlWYWwsIHN0YXRlLT5kYXR1bVR5cGVMZW4pOworCQl9 CisKKwkJQnVmRmlsZVdyaXRlKHN0YXRlLT5teWZpbGUsIGRhdHVtLCBzaXplKTsKKworCQkvKiBu ZWVkIHRyYWlsaW5nIGxlbmd0aCB3b3JkPyAqLworCQlpZiAoc3RhdGUtPmJhY2t3YXJkICYmIHN0 YXRlLT5kYXR1bVR5cGVMZW4gPCAwKQorCQkJQnVmRmlsZVdyaXRlKHN0YXRlLT5teWZpbGUsICZz aXplLCBzaXplb2Yoc2l6ZSkpOworCisJCUZSRUVNRU0oc3RhdGUsIEdldE1lbW9yeUNodW5rU3Bh Y2UoZGF0dW0pKTsKKwkJcGZyZWUoZGF0dW0pOworCX0KK30KKworc3RhdGljIHZvaWQqCityZWFk dHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHVuc2lnbmVkIGludCBsZW4pCit7CisJ QXNzZXJ0KHN0YXRlLT5kYXR1bVR5cGUgIT0gSW52YWxpZE9pZCk7CisJaWYgKHN0YXRlLT5kYXR1 bVR5cGVCeVZhbCkKKwl7CisJCURhdHVtIGRhdHVtID0gUG9pbnRlckdldERhdHVtKE5VTEwpOwor CQlBc3NlcnQoc3RhdGUtPmRhdHVtVHlwZUxlbiA+IDApOworCQlBc3NlcnQobGVuID09IHN0YXRl LT5kYXR1bVR5cGVMZW4pOworCQlCdWZGaWxlUmVhZEV4YWN0KHN0YXRlLT5teWZpbGUsICZkYXR1 bSwgc3RhdGUtPmRhdHVtVHlwZUxlbik7CisJCXJldHVybiBEYXR1bUdldFBvaW50ZXIoZGF0dW0p OworCX0KKwllbHNlCisJeworCQlEYXR1bSAqZGF0dW1zID0gcGFsbG9jKGxlbik7CisJCUJ1ZkZp bGVSZWFkRXhhY3Qoc3RhdGUtPm15ZmlsZSwgJmRhdHVtcywgbGVuKTsKKworCQkvKiBuZWVkIHRy YWlsaW5nIGxlbmd0aCB3b3JkPyAqLworCQlpZiAoc3RhdGUtPmJhY2t3YXJkICYmIHN0YXRlLT5k YXR1bVR5cGVMZW4gPCAwKQorCQkJQnVmRmlsZVJlYWRFeGFjdChzdGF0ZS0+bXlmaWxlLCAmbGVu LCBzaXplb2YobGVuKSk7CisKKwkJcmV0dXJuIERhdHVtR2V0UG9pbnRlcigqZGF0dW1zKTsKKwl9 Cit9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXN0b3JlLmggYi9zcmMvaW5j bHVkZS91dGlscy90dXBsZXN0b3JlLmgKaW5kZXggODY1YmE3YjgyNjUuLjAzNDFjNDdiODUxIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXN0b3JlLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvdHVwbGVzdG9yZS5oCkBAIC0xLDE3ICsxLDE4IEBACiAvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqCiAgKiB0dXBsZXN0b3JlLmgKLSAqCSAgR2VuZXJhbGl6ZWQgcm91dGluZXMgZm9yIHRl bXBvcmFyeSB0dXBsZSBzdG9yYWdlLgorICoJICBHZW5lcmFsaXplZCByb3V0aW5lcyBmb3IgdGVt cG9yYXJ5IHN0b3JhZ2Ugb2YgdHVwbGVzIGFuZCBEYXR1bXMuCiAgKgotICogVGhpcyBtb2R1bGUg aGFuZGxlcyB0ZW1wb3Jhcnkgc3RvcmFnZSBvZiB0dXBsZXMgZm9yIHB1cnBvc2VzIHN1Y2gKLSAq IGFzIE1hdGVyaWFsaXplIG5vZGVzLCBoYXNoam9pbiBiYXRjaCBmaWxlcywgZXRjLiAgSXQgaXMg ZXNzZW50aWFsbHkKLSAqIGEgZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0dXBsZXNvcnQuYzsgaXQg ZG9lcyBubyBzb3J0aW5nIG9mIHR1cGxlcwotICogYnV0IGNhbiBvbmx5IHN0b3JlIGFuZCByZWd1 cmdpdGF0ZSBhIHNlcXVlbmNlIG9mIHR1cGxlcy4gIEhvd2V2ZXIsCi0gKiBiZWNhdXNlIG5vIHNv cnQgaXMgcmVxdWlyZWQsIGl0IGlzIGFsbG93ZWQgdG8gc3RhcnQgcmVhZGluZyB0aGUgc2VxdWVu Y2UKLSAqIGJlZm9yZSBpdCBoYXMgYWxsIGJlZW4gd3JpdHRlbi4gIFRoaXMgaXMgcGFydGljdWxh cmx5IHVzZWZ1bCBmb3IgY3Vyc29ycywKLSAqIGJlY2F1c2UgaXQgYWxsb3dzIHJhbmRvbSBhY2Nl c3Mgd2l0aGluIHRoZSBhbHJlYWR5LXNjYW5uZWQgcG9ydGlvbiBvZgotICogYSBxdWVyeSB3aXRo b3V0IGhhdmluZyB0byBwcm9jZXNzIHRoZSB1bmRlcmx5aW5nIHNjYW4gdG8gY29tcGxldGlvbi4K LSAqIEFsc28sIGl0IGlzIHBvc3NpYmxlIHRvIHN1cHBvcnQgbXVsdGlwbGUgaW5kZXBlbmRlbnQg cmVhZCBwb2ludGVycy4KKyAqIFRoaXMgbW9kdWxlIGhhbmRsZXMgdGVtcG9yYXJ5IHN0b3JhZ2Ug b2YgZWl0aGVyIHR1cGxlcyBvciBzaW5nbGUKKyAqIERhdHVtIHZhbHVlcyBmb3IgcHVycG9zZXMg c3VjaCBhcyBNYXRlcmlhbGl6ZSBub2RlcywgaGFzaGpvaW4gYmF0Y2gKKyAqIGZpbGVzLCBldGMu IEl0IGlzIGVzc2VudGlhbGx5IGEgZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0dXBsZXNvcnQuYzsK KyAqIGl0IGRvZXMgbm8gc29ydGluZyBvZiB0dXBsZXMgYnV0IGNhbiBvbmx5IHN0b3JlIGFuZCBy ZWd1cmdpdGF0ZSBhIHNlcXVlbmNlCisgKiBvZiB0dXBsZXMuICBIb3dldmVyLCBiZWNhdXNlIG5v IHNvcnQgaXMgcmVxdWlyZWQsIGl0IGlzIGFsbG93ZWQgdG8gc3RhcnQKKyAqIHJlYWRpbmcgdGhl IHNlcXVlbmNlIGJlZm9yZSBpdCBoYXMgYWxsIGJlZW4gd3JpdHRlbi4KKyAqCisgKiBUaGlzIGlz IHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGN1cnNvcnMsIGJlY2F1c2UgaXQgYWxsb3dzIHJhbmRv bSBhY2Nlc3MKKyAqIHdpdGhpbiB0aGUgYWxyZWFkeS1zY2FubmVkIHBvcnRpb24gb2YgYSBxdWVy eSB3aXRob3V0IGhhdmluZyB0byBwcm9jZXNzCisgKiB0aGUgdW5kZXJseWluZyBzY2FuIHRvIGNv bXBsZXRpb24uCiAgKgogICogQSB0ZW1wb3JhcnkgZmlsZSBpcyB1c2VkIHRvIGhhbmRsZSB0aGUg ZGF0YSBpZiBpdCBleGNlZWRzIHRoZQogICogc3BhY2UgbGltaXQgc3BlY2lmaWVkIGJ5IHRoZSBj YWxsZXIuCkBAIC0zOSwxNCArNDAsMTMgQEAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgVHVwbGVzdG9y ZXN0YXRlIFR1cGxlc3RvcmVzdGF0ZTsKIAotLyoKLSAqIEN1cnJlbnRseSB3ZSBvbmx5IG5lZWQg dG8gc3RvcmUgTWluaW1hbFR1cGxlcywgYnV0IGl0IHdvdWxkIGJlIGVhc3kKLSAqIHRvIHN1cHBv cnQgdGhlIHNhbWUgYmVoYXZpb3IgZm9yIEluZGV4VHVwbGVzIGFuZC9vciBiYXJlIERhdHVtcy4K LSAqLwotCiBleHRlcm4gVHVwbGVzdG9yZXN0YXRlICp0dXBsZXN0b3JlX2JlZ2luX2hlYXAoYm9v bCByYW5kb21BY2Nlc3MsCiAJCQkJCQkJCQkJCSAgYm9vbCBpbnRlclhhY3QsCiAJCQkJCQkJCQkJ CSAgaW50IG1heEtCeXRlcyk7CitleHRlcm4gVHVwbGVzdG9yZXN0YXRlICp0dXBsZXN0b3JlX2Jl Z2luX2RhdHVtKE9pZCBkYXR1bVR5cGUsCisJCQkJCQkJCQkJCSBib29sIHJhbmRvbUFjY2VzcywK KwkJCQkJCQkJCQkJIGJvb2wgaW50ZXJYYWN0LAorCQkJCQkJCQkJCQkgaW50IG1heEtCeXRlcyk7 CiAKIGV4dGVybiB2b2lkIHR1cGxlc3RvcmVfc2V0X2VmbGFncyhUdXBsZXN0b3Jlc3RhdGUgKnN0 YXRlLCBpbnQgZWZsYWdzKTsKIApAQCAtNTUsNiArNTUsNyBAQCBleHRlcm4gdm9pZCB0dXBsZXN0 b3JlX3B1dHR1cGxlc2xvdChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLAogZXh0ZXJuIHZvaWQgdHVw bGVzdG9yZV9wdXR0dXBsZShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBIZWFwVHVwbGUgdHVwbGUp OwogZXh0ZXJuIHZvaWQgdHVwbGVzdG9yZV9wdXR2YWx1ZXMoVHVwbGVzdG9yZXN0YXRlICpzdGF0 ZSwgVHVwbGVEZXNjIHRkZXNjLAogCQkJCQkJCQkgY29uc3QgRGF0dW0gKnZhbHVlcywgY29uc3Qg Ym9vbCAqaXNudWxsKTsKK2V4dGVybiB2b2lkIHR1cGxlc3RvcmVfcHV0ZGF0dW0oVHVwbGVzdG9y ZXN0YXRlICpzdGF0ZSwgRGF0dW0gZGF0dW0pOwogCiBleHRlcm4gaW50CXR1cGxlc3RvcmVfYWxs b2NfcmVhZF9wb2ludGVyKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGludCBlZmxhZ3MpOwogCkBA IC03Miw2ICs3Myw4IEBAIGV4dGVybiBib29sIHR1cGxlc3RvcmVfaW5fbWVtb3J5KFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUpOwogCiBleHRlcm4gYm9vbCB0dXBsZXN0b3JlX2dldHR1cGxlc2xvdChU dXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGZvcndhcmQsCiAJCQkJCQkJCQlib29sIGNvcHks IFR1cGxlVGFibGVTbG90ICpzbG90KTsKK2V4dGVybiBib29sIHR1cGxlc3RvcmVfZ2V0ZGF0dW0o VHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAorCQkJCQkJCQlib29sICpzaG91 bGRfZnJlZSwgRGF0dW0gKnJlc3VsdCk7CiAKIGV4dGVybiBib29sIHR1cGxlc3RvcmVfYWR2YW5j ZShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGZvcndhcmQpOwogCi0tIAoyLjQzLjAKCg== --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="nocfbot-v24-only-part-3-0004-Track-and-drop-auxiliary-indexes-in-.patch" Content-Disposition: attachment; filename="nocfbot-v24-only-part-3-0004-Track-and-drop-auxiliary-indexes-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm0k3 RnJvbSA1ZGFhMDEyYmIxNjFlMGY0Nzc0NWI5YmJhYzNiNGMzMjJjMGFjMmI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDozNjozMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI0LW9ubHktcGFydC0zIDQvNl0gVHJhY2sgYW5kIGRyb3AgYXV4aWxpYXJ5IGluZGV4 ZXMgaW4KIERST1AvUkVJTkRFWAoKRHVyaW5nIGNvbmN1cnJlbnQgaW5kZXggb3BlcmF0aW9ucywg YXV4aWxpYXJ5IGluZGV4ZXMgbWF5IGJlIGxlZnQgYXMgb3JwaGFuZWQgb2JqZWN0cyB3aGVuIGVy cm9ycyBvY2N1ciAoanVuayBhdXhpbGlhcnkgaW5kZXhlcykuCgpUaGlzIHBhdGNoIGltcHJvdmVz IHRoZSBoYW5kbGluZyBvZiBzdWNoIGF1eGlsaWFyeSBpbmRleGVzOgotIGFkZCBhdXhpbGlhcnlG b3JJbmRleElkIHBhcmFtZXRlciB0byBpbmRleF9jcmVhdGUoKSB0byB0cmFjayBkZXBlbmRlbmNp ZXMgYmV0d2VlbiBtYWluIGFuZCBhdXhpbGlhcnkgaW5kZXhlcwotIGF1dG9tYXRpY2FsbHkgZHJv cCBhdXhpbGlhcnkgaW5kZXhlcyB3aGVuIHRoZSBtYWluIGluZGV4IGlzIGRyb3BwZWQKLSBkZWxl dGUganVuayBhdXhpbGlhcnkgaW5kZXhlcyBwcm9wZXJseSBkdXJpbmcgUkVJTkRFWCBvcGVyYXRp b25zCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbCAgICAgICAgIHwgIDE0 ICsrLQogZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwgICAgICAgICAgICAgIHwgICA4ICst CiBzcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyAgICAgICAgICAgfCAgIDIgKy0KIHNy Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICB8ICA3MSArKysrKysrKysr LS0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYyAgICAgICAgICAgIHwgIDU3ICsr KysrKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgIHwgIDM4ICsr KysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgfCAgNDgg KysrKysrKysrLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgICAgICAgICAgICAgIHwg ICAzICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAgICAgICAgfCAgIDEg Kwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgIHwgICAyICsKIHNy Yy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0IHwgMTA1ICsrKysrKysrKysrKysr KysrKystLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCAgICAgIHwgIDU3 ICsrKysrKysrKystCiAxNCBmaWxlcyBjaGFuZ2VkLCAzNjcgaW5zZXJ0aW9ucygrKSwgNDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKaW5kZXggMzBkYjA3OWM4ZDgu LmNmMTRmNDc0OTQ2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKQEAgLTY2OCwxMCAr NjY4LDE2IEBAIEluZGV4ZXM6CiAgICAgImlkeF9jY2F1eCIgc3RpciAoY29sKSBJTlZBTElECiA8 L3Byb2dyYW1saXN0aW5nPgogCi0gICAgVGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5Ci0gICAgbWV0 aG9kIGluIHN1Y2ggY2FzZXMgaXMgdG8gZHJvcCB0aGVzZSBpbmRleGVzIGFuZCB0cnkgYWdhaW4g dG8gcGVyZm9ybQotICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1h bmQ+LiAoQW5vdGhlciBwb3NzaWJpbGl0eSBpcwotICAgIHRvIHJlYnVpbGQgdGhlIGluZGV4IHdp dGggPGNvbW1hbmQ+UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+KS4KKyAgICBU aGUgcmVjb21tZW5kZWQgcmVjb3ZlcnkgbWV0aG9kIGluIHN1Y2ggY2FzZXMgaXMgdG8gZHJvcCB0 aGUgaW5kZXggd2l0aAorICAgIDxjb21tYW5kPkRST1AgSU5ERVg8L2NvbW1hbmQ+LiBUaGUgYXV4 aWxpYXJ5IGluZGV4IChzdWZmaXhlZCB3aXRoCisgICAgPGxpdGVyYWw+Y2NhdXg8L2xpdGVyYWw+ KSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZHJvcHBlZCB3aGVuIHRoZSBtYWluCisgICAgaW5kZXgg aXMgZHJvcHBlZC4gQWZ0ZXIgZHJvcHBpbmcgdGhlIGluZGV4ZXMsIHlvdSBjYW4gdHJ5IGFnYWlu IHRvIHBlcmZvcm0KKyAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZPC9jb21t YW5kPi4gKEFub3RoZXIgcG9zc2liaWxpdHkgaXMgdG8KKyAgICByZWJ1aWxkIHRoZSBpbmRleCB3 aXRoIDxjb21tYW5kPlJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiwKKyAgICB3 aGljaCB3aWxsIGFsc28gaGFuZGxlIGNsZWFudXAgb2YgYW55IGludmFsaWQgYXV4aWxpYXJ5IGlu ZGV4ZXMuKQorICAgIElmIHRoZSBvbmx5IGludmFsaWQgaW5kZXggaXMgb25lIHN1ZmZpeGVkIDxs aXRlcmFsPmNjYXV4PC9saXRlcmFsPgorICAgIHJlY29tbWVuZGVkIHJlY292ZXJ5IG1ldGhvZCBp cyBqdXN0IDxsaXRlcmFsPkRST1AgSU5ERVg8L2xpdGVyYWw+CisgICAgZm9yIHRoYXQgaW5kZXgu CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9y ZWluZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbAppbmRleCA0ZWQzYzk2 OTAxMi4uZDYyNzkxZmY5YzMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCkBAIC00NzcsMTEgKzQ3Nywx NSBAQCBJbmRleGVzOgogICAgIDxsaXRlcmFsPl9jY25ldzwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+ X2NjYXV4PC9saXRlcmFsPiwgdGhlbiBpdCBjb3JyZXNwb25kcyB0byB0aGUgdHJhbnNpZW50IG9y IGF1eGlsaWFyeQogICAgIGluZGV4IGNyZWF0ZWQgZHVyaW5nIHRoZSBjb25jdXJyZW50IG9wZXJh dGlvbiwgYW5kIHRoZSByZWNvbW1lbmRlZAogICAgIHJlY292ZXJ5IG1ldGhvZCBpcyB0byBkcm9w IHRoZXNlIGluZGV4ZXMgdXNpbmcgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0ZXJhbD4sCi0gICAg dGhlbiBhdHRlbXB0IDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBhZ2Fp bi4KKyAgICB0aGVuIGF0dGVtcHQgPGNvbW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1h bmQ+IGFnYWluLiBUaGUgYXV4aWxpYXJ5IGluZGV4CisgICAgKHN1ZmZpeGVkIHdpdGggPGxpdGVy YWw+X2NjYXV4PC9saXRlcmFsPikgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQKKyAgICBh bG9uZyB3aXRoIGl0cyBtYWluIGluZGV4LgogICAgIElmIHRoZSBpbnZhbGlkIGluZGV4IGlzIGlu c3RlYWQgc3VmZml4ZWQgPGxpdGVyYWw+X2Njb2xkPC9saXRlcmFsPiwKICAgICBpdCBjb3JyZXNw b25kcyB0byB0aGUgb3JpZ2luYWwgaW5kZXggd2hpY2ggY291bGQgbm90IGJlIGRyb3BwZWQ7CiAg ICAgdGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5IG1ldGhvZCBpcyB0byBqdXN0IGRyb3Agc2FpZCBp bmRleCwgc2luY2UgdGhlCi0gICAgcmVidWlsZCBwcm9wZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bC4K KyAgICByZWJ1aWxkIHByb3BlciBoYXMgYmVlbiBzdWNjZXNzZnVsLiBJZiB0aGUgb25seQorICAg IGludmFsaWQgaW5kZXggaXMgb25lIHN1ZmZpeGVkIDxsaXRlcmFsPmNjYXV4PC9saXRlcmFsPiBy ZWNvbW1lbmRlZAorICAgIHJlY292ZXJ5IG1ldGhvZCBpcyBqdXN0IDxsaXRlcmFsPkRST1AgSU5E RVg8L2xpdGVyYWw+IGZvciB0aGF0IGluZGV4LgogICAgIEEgbm9uemVybyBudW1iZXIgbWF5IGJl IGFwcGVuZGVkIHRvIHRoZSBzdWZmaXggb2YgdGhlIGludmFsaWQgaW5kZXgKICAgICBuYW1lcyB0 byBrZWVwIHRoZW0gdW5pcXVlLCBsaWtlIDxsaXRlcmFsPl9jY25ldzE8L2xpdGVyYWw+LAogICAg IDxsaXRlcmFsPl9jY29sZDI8L2xpdGVyYWw+LCBldGMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5j CmluZGV4IDdkZGVkNjM0ZWI4Li5iNTc5ZDI2YWZmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9kZXBlbmRlbmN5LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5 LmMKQEAgLTI4Niw3ICsyODYsNyBAQCBwZXJmb3JtRGVsZXRpb24oY29uc3QgT2JqZWN0QWRkcmVz cyAqb2JqZWN0LAogCSAqIEFjcXVpcmUgZGVsZXRpb24gbG9jayBvbiB0aGUgdGFyZ2V0IG9iamVj dC4gIChJZGVhbGx5IHRoZSBjYWxsZXIgaGFzCiAJICogZG9uZSB0aGlzIGFscmVhZHksIGJ1dCBt YW55IHBsYWNlcyBhcmUgc2xvcHB5IGFib3V0IGl0LikKIAkgKi8KLQlBY3F1aXJlRGVsZXRpb25M b2NrKG9iamVjdCwgMCk7CisJQWNxdWlyZURlbGV0aW9uTG9jayhvYmplY3QsIGZsYWdzKTsKIAog CS8qCiAJICogQ29uc3RydWN0IGEgbGlzdCBvZiBvYmplY3RzIHRvIGRlbGV0ZSAoaWUsIHRoZSBn aXZlbiBvYmplY3QgcGx1cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5j IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IGQ0YWM3YTBlNjA2Li45OTc4MTky ZjJkOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtNzc1LDYgKzc3NSw4IEBAIGluZGV4X2NyZWF0ZShS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCSAgICgoZmxhZ3MgJiBJTkRFWF9DUkVBVEVfQUREX0NP TlNUUkFJTlQpICE9IDApKTsKIAkvKiBwYXJ0aXRpb25lZCBpbmRleGVzIG11c3QgbmV2ZXIgYmUg ImJ1aWx0IiBieSB0aGVtc2VsdmVzICovCiAJQXNzZXJ0KCFwYXJ0aXRpb25lZCB8fCAoZmxhZ3Mg JiBJTkRFWF9DUkVBVEVfU0tJUF9CVUlMRCkpOworCS8qIGlpX0F1eGlsaWFyeUZvckluZGV4SWQg YW5kIElOREVYX0NSRUFURV9BVVhJTElBUlkgYXJlIHJlcXVpcmVkIGJvdGggb3IgbmVpdGhlciAq LworCUFzc2VydChPaWRJc1ZhbGlkKGluZGV4SW5mby0+aWlfQXV4aWxpYXJ5Rm9ySW5kZXhJZCkg PT0gYXV4aWxpYXJ5KTsKIAogCXJlbGtpbmQgPSBwYXJ0aXRpb25lZCA/IFJFTEtJTkRfUEFSVElU SU9ORURfSU5ERVggOiBSRUxLSU5EX0lOREVYOwogCWlzX2V4Y2x1c2lvbiA9IChpbmRleEluZm8t PmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMKTsKQEAgLTExODAsNiArMTE4MiwxNSBAQCBpbmRleF9j cmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNl bGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX1BBUlRJVElPTl9TRUMpOwogCQl9CiAKKwkJLyoK KwkJICogUmVjb3JkIGRlcGVuZGVuY3kgb24gdGhlIG1haW4gaW5kZXggaW4gY2FzZSBvZiBhdXhp bGlhcnkgaW5kZXguCisJCSAqLworCQlpZiAoT2lkSXNWYWxpZChpbmRleEluZm8tPmlpX0F1eGls aWFyeUZvckluZGV4SWQpKQorCQl7CisJCQlPYmplY3RBZGRyZXNzU2V0KHJlZmVyZW5jZWQsIFJl bGF0aW9uUmVsYXRpb25JZCwgaW5kZXhJbmZvLT5paV9BdXhpbGlhcnlGb3JJbmRleElkKTsKKwkJ CXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9BVVRP KTsKKwkJfQorCiAJCS8qIHBsYWNlaG9sZGVyIGZvciBub3JtYWwgZGVwZW5kZW5jaWVzICovCiAJ CWFkZHJzID0gbmV3X29iamVjdF9hZGRyZXNzZXMoKTsKIApAQCAtMTQxMiw3ICsxNDIzLDggQEAg aW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lk IG9sZEluZGV4SWQsCiAJCQkJCQkJdHJ1ZSwKIAkJCQkJCQlpbmRleFJlbGF0aW9uLT5yZF9pbmRh bS0+YW1zdW1tYXJpemluZywKIAkJCQkJCQlvbGRJbmZvLT5paV9XaXRob3V0T3ZlcmxhcHMsCi0J CQkJCQkJZmFsc2UpOworCQkJCQkJCWZhbHNlLAorCQkJCQkJCUludmFsaWRPaWQpOwogCiAJLyoK IAkgKiBFeHRyYWN0IHRoZSBsaXN0IG9mIGNvbHVtbiBuYW1lcyBhbmQgdGhlIGNvbHVtbiBudW1i ZXJzIGZvciB0aGUgbmV3CkBAIC0xNTgwLDcgKzE1OTIsOCBAQCBpbmRleF9jb25jdXJyZW50bHlf Y3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBtYWluSW5kZXhJZCwKIAkJCQkJ CQl0cnVlLAogCQkJCQkJCWZhbHNlLAkvKiBhdXggYXJlIG5vdCBzdW1tYXJpemluZyAqLwogCQkJ CQkJCWZhbHNlLAkvKiBhdXggYXJlIG5vdCB3aXRob3V0IG92ZXJsYXBzICovCi0JCQkJCQkJdHJ1 ZQkvKiBhdXhpbGlhcnkgKi8pOworCQkJCQkJCXRydWUJLyogYXV4aWxpYXJ5ICovLAorCQkJCQkJ CW1haW5JbmRleElkIC8qIGF1eGlsaWFyeUZvckluZGV4SWQgKi8pOwogCiAJLyoKIAkgKiBFeHRy YWN0IHRoZSBsaXN0IG9mIGNvbHVtbiBuYW1lcyBhbmQgdGhlIGNvbHVtbiBudW1iZXJzIGZvciB0 aGUgbmV3CkBAIC0yNjE2LDcgKzI2MjksOCBAQCBCdWlsZEluZGV4SW5mbyhSZWxhdGlvbiBpbmRl eCkKIAkJCQkJICAgZmFsc2UsCiAJCQkJCSAgIGluZGV4LT5yZF9pbmRhbS0+YW1zdW1tYXJpemlu ZywKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uICYmIGluZGV4U3RydWN0LT5p bmRpc3VuaXF1ZSwKLQkJCQkJICAgaW5kZXgtPnJkX3JlbC0+cmVsYW0gPT0gU1RJUl9BTV9PSUQg LyogYXV4aWxpYXJ5IGlmZiBTVElSICovKTsKKwkJCQkJICAgaW5kZXgtPnJkX3JlbC0+cmVsYW0g PT0gU1RJUl9BTV9PSUQgLyogYXV4aWxpYXJ5IGlmZiBTVElSICovLAorCQkJCQkgICBJbnZhbGlk T2lkIC8qIGF1eGlsaWFyeV9mb3JfaW5kZXhfaWQgaXMgc2V0IG9ubHkgZHVyaW5nIGJ1aWxkICov KTsKIAogCS8qIGZpbGwgaW4gYXR0cmlidXRlIG51bWJlcnMgKi8KIAlmb3IgKGkgPSAwOyBpIDwg bnVtQXR0czsgaSsrKQpAQCAtMjY3Nyw3ICsyNjkxLDggQEAgQnVpbGREdW1teUluZGV4SW5mbyhS ZWxhdGlvbiBpbmRleCkKIAkJCQkJICAgZmFsc2UsCiAJCQkJCSAgIGluZGV4LT5yZF9pbmRhbS0+ YW1zdW1tYXJpemluZywKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uICYmIGlu ZGV4U3RydWN0LT5pbmRpc3VuaXF1ZSwKLQkJCQkJICAgaW5kZXgtPnJkX3JlbC0+cmVsYW0gPT0g U1RJUl9BTV9PSUQgLyogYXV4aWxpYXJ5IGlmZiBTVElSICovKTsKKwkJCQkJICAgaW5kZXgtPnJk X3JlbC0+cmVsYW0gPT0gU1RJUl9BTV9PSUQgLyogYXV4aWxpYXJ5IGlmZiBTVElSICovLAorCQkJ CQkgICBJbnZhbGlkT2lkKTsKIAogCS8qIGZpbGwgaW4gYXR0cmlidXRlIG51bWJlcnMgKi8KIAlm b3IgKGkgPSAwOyBpIDwgbnVtQXR0czsgaSsrKQpAQCAtMzg0Nyw2ICszODYyLDcgQEAgcmVpbmRl eF9pbmRleChjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIGluZGV4SWQsCiAJCQkJaGVhcFJl bGF0aW9uOwogCU9pZAkJCWhlYXBJZDsKIAlPaWQJCQlzYXZlX3VzZXJpZDsKKwlPaWQJCQlqdW5r QXV4SW5kZXhJZDsKIAlpbnQJCQlzYXZlX3NlY19jb250ZXh0OwogCWludAkJCXNhdmVfbmVzdGxl dmVsOwogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKQEAgLTM5MDMsNiArMzkxOSwxOSBAQCByZWlu ZGV4X2luZGV4KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgaW5kZXhJZCwKIAkJcGdzdGF0 X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSgyLCBwcm9ncmVzc19jb2xzLCBwcm9ncmVzc192 YWxzKTsKIAl9CiAKKwkvKiBDaGVjayBmb3IgdGhlIGF1eGlsaWFyeSBpbmRleCBmb3IgdGhhdCBp bmRleCwgaXQgbmVlZHMgdG8gZHJvcHBlZCAqLworCWp1bmtBdXhJbmRleElkID0gZ2V0X2F1eGls aWFyeV9pbmRleChpbmRleElkKTsKKwlpZiAoT2lkSXNWYWxpZChqdW5rQXV4SW5kZXhJZCkpCisJ eworCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJl bGF0aW9uSWQ7CisJCW9iamVjdC5vYmplY3RJZCA9IGp1bmtBdXhJbmRleElkOworCQlvYmplY3Qu b2JqZWN0U3ViSWQgPSAwOworCQlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklD VCwKKwkJCQkJCQkJIFBFUkZPUk1fREVMRVRJT05fSU5URVJOQUwgfAorCQkJCQkJCQkgUEVSRk9S TV9ERUxFVElPTl9RVUlFVExZKTsKKwl9CisKIAkvKgogCSAqIE9wZW4gdGhlIHRhcmdldCBpbmRl eCByZWxhdGlvbiBhbmQgZ2V0IGFuIGV4Y2x1c2l2ZSBsb2NrIG9uIGl0LCB0bwogCSAqIGVuc3Vy ZSB0aGF0IG5vIG9uZSBlbHNlIGlzIHRvdWNoaW5nIHRoaXMgcGFydGljdWxhciBpbmRleC4KQEAg LTQxOTEsNyArNDIyMCw4IEBAIHJlaW5kZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0 bXQsIE9pZCByZWxpZCwgaW50IGZsYWdzLAogewogCVJlbGF0aW9uCXJlbDsKIAlPaWQJCQl0b2Fz dF9yZWxpZDsKLQlMaXN0CSAgICppbmRleElkczsKKwlMaXN0CSAgICppbmRleElkcywKKwkJCSAg ICphdXhJbmRleElkcyA9IE5JTDsKIAljaGFyCQlwZXJzaXN0ZW5jZTsKIAlib29sCQlyZXN1bHQg PSBmYWxzZTsKIAlMaXN0Q2VsbCAgICppbmRleElkOwpAQCAtNDI4MCwxMyArNDMxMCwzMCBAQCBy ZWluZGV4X3JlbGF0aW9uKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsaWQsIGludCBm bGFncywKIAllbHNlCiAJCXBlcnNpc3RlbmNlID0gcmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNl OwogCisJZm9yZWFjaChpbmRleElkLCBpbmRleElkcykKKwl7CisJCU9pZAkJCWluZGV4T2lkID0g bGZpcnN0X29pZChpbmRleElkKTsKKwkJT2lkCQkJaW5kZXhBbSA9IGdldF9yZWxfcmVsYW0oaW5k ZXhPaWQpOworCisJCS8qIEFsbCBTVElSIGluZGV4ZXMgYXJlIGF1eGlsaWFyeSBpbmRleGVzICov CisJCWlmIChpbmRleEFtID09IFNUSVJfQU1fT0lEKQorCQl7CisJCQlpZiAoZmxhZ3MgJiBSRUlO REVYX1JFTF9TVVBQUkVTU19JTkRFWF9VU0UpCisJCQkJUmVtb3ZlUmVpbmRleFBlbmRpbmcoaW5k ZXhPaWQpOworCQkJYXV4SW5kZXhJZHMgPSBsYXBwZW5kX29pZChhdXhJbmRleElkcywgaW5kZXhP aWQpOworCQl9CisJfQorCiAJLyogUmVpbmRleCBhbGwgdGhlIGluZGV4ZXMuICovCiAJaSA9IDE7 CiAJZm9yZWFjaChpbmRleElkLCBpbmRleElkcykKIAl7CiAJCU9pZAkJCWluZGV4T2lkID0gbGZp cnN0X29pZChpbmRleElkKTsKIAkJT2lkCQkJaW5kZXhOYW1lc3BhY2VJZCA9IGdldF9yZWxfbmFt ZXNwYWNlKGluZGV4T2lkKTsKLQkJT2lkCQkJaW5kZXhBbSA9IGdldF9yZWxfcmVsYW0oaW5kZXhP aWQpOworCisJCS8qIEF1eGlsaWFyeSBpbmRleGVzIGFyZSBnb2luZyB0byBiZSBkcm9wcGVkIGR1 cmluZyBtYWluIGluZGV4IHJlYnVpbGQgKi8KKwkJaWYgKGxpc3RfbWVtYmVyX29pZChhdXhJbmRl eElkcywgaW5kZXhPaWQpKQorCQkJY29udGludWU7CiAKIAkJLyoKIAkJICogU2tpcCBhbnkgaW52 YWxpZCBpbmRleGVzIG9uIGEgVE9BU1QgdGFibGUuICBUaGVzZSBjYW4gb25seSBiZQpAQCAtNDMx MiwxOCArNDM1OSw2IEBAIHJlaW5kZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0bXQs IE9pZCByZWxpZCwgaW50IGZsYWdzLAogCQkJY29udGludWU7CiAJCX0KIAotCQlpZiAoaW5kZXhB bSA9PSBTVElSX0FNX09JRCkKLQkJewotCQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCSBlcnJtc2coInNraXBwaW5n IHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwiJXMuJXNcIiIsCi0JCQkJCQkJZ2V0X25hbWVz cGFjZV9uYW1lKGluZGV4TmFtZXNwYWNlSWQpLAotCQkJCQkJCWdldF9yZWxfbmFtZShpbmRleE9p ZCkpKSk7Ci0JCQlpZiAoZmxhZ3MgJiBSRUlOREVYX1JFTF9TVVBQUkVTU19JTkRFWF9VU0UpCi0J CQkJUmVtb3ZlUmVpbmRleFBlbmRpbmcoaW5kZXhPaWQpOwotCQkJY29udGludWU7Ci0JCX0KLQog CQlyZWluZGV4X2luZGV4KHN0bXQsIGluZGV4T2lkLCAhKGZsYWdzICYgUkVJTkRFWF9SRUxfQ0hF Q0tfQ09OU1RSQUlOVFMpLAogCQkJCQkgIHBlcnNpc3RlbmNlLCBwYXJhbXMpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2RlcGVuZC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19kZXBlbmQuYwppbmRleCBjOGIxMWY4ODdlMi4uMWMyNzVlZjM3M2YgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19kZXBlbmQuYwpAQCAtMTAzNSw2ICsxMDM1LDYzIEBAIGdldF9pbmRleF9jb25zdHJhaW50 KE9pZCBpbmRleElkKQogCXJldHVybiBjb25zdHJhaW50SWQ7CiB9CiAKKy8qCisgKiBnZXRfYXV4 aWxpYXJ5X2luZGV4CisgKgkJR2l2ZW4gdGhlIE9JRCBvZiBhbiBpbmRleCwgcmV0dXJuIHRoZSBP SUQgb2YgaXRzIGF1eGlsaWFyeQorICoJCWluZGV4LCBvciBJbnZhbGlkT2lkIGlmIHRoZXJlIGlz IG5vIGF1eGlsaWFyeSBpbmRleC4KKyAqLworT2lkCitnZXRfYXV4aWxpYXJ5X2luZGV4KE9pZCBp bmRleElkKQoreworCU9pZAkJCWF1eGlsaWFyeUluZGV4T2lkID0gSW52YWxpZE9pZDsKKwlSZWxh dGlvbglkZXBSZWw7CisJU2NhbktleURhdGEga2V5WzNdOworCVN5c1NjYW5EZXNjIHNjYW47CisJ SGVhcFR1cGxlCXR1cDsKKworCS8qIFNlYXJjaCB0aGUgZGVwZW5kZW5jeSB0YWJsZSBmb3IgdGhl IGluZGV4ICovCisJZGVwUmVsID0gdGFibGVfb3BlbihEZXBlbmRSZWxhdGlvbklkLCBBY2Nlc3NT aGFyZUxvY2spOworCisJU2NhbktleUluaXQoJmtleVswXSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9y ZWZjbGFzc2lkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmpl Y3RJZEdldERhdHVtKFJlbGF0aW9uUmVsYXRpb25JZCkpOworCVNjYW5LZXlJbml0KCZrZXlbMV0s CisJCQkJQW51bV9wZ19kZXBlbmRfcmVmb2JqaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVy LCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0oaW5kZXhJZCkpOworCVNjYW5LZXlJbml0 KCZrZXlbMl0sCisJCQkJQW51bV9wZ19kZXBlbmRfcmVmb2Jqc3ViaWQsCisJCQkJQlRFcXVhbFN0 cmF0ZWd5TnVtYmVyLCBGX0lOVDRFUSwKKwkJCQlJbnQzMkdldERhdHVtKDApKTsKKworCXNjYW4g PSBzeXN0YWJsZV9iZWdpbnNjYW4oZGVwUmVsLCBEZXBlbmRSZWZlcmVuY2VJbmRleElkLCB0cnVl LAorCQkJCQkJCSAgTlVMTCwgMywga2V5KTsKKworCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQo dHVwID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlGb3JtX3BnX2RlcGVuZCBkZXBy ZWMgPSAoRm9ybV9wZ19kZXBlbmQpIEdFVFNUUlVDVCh0dXApOworCisJCS8qCisJCSAqIFdlIGFz c3VtZSBhbnkgQVVUTyBkZXBlbmRlbmN5IG9uIGluZGV4IHdpdGggcmVsX2tpbmQKKwkJICogb2Yg UkVMS0lORF9JTkRFWCBpcyB0aGF0IHdlIGFyZSBsb29raW5nIGZvci4KKwkJICovCisJCWlmIChk ZXByZWMtPmNsYXNzaWQgPT0gUmVsYXRpb25SZWxhdGlvbklkICYmCisJCQkoZGVwcmVjLT5kZXB0 eXBlID09IERFUEVOREVOQ1lfQVVUTykgJiYKKwkJCWdldF9yZWxfcmVsa2luZChkZXByZWMtPm9i amlkKSA9PSBSRUxLSU5EX0lOREVYKQorCQl7CisJCQlhdXhpbGlhcnlJbmRleE9pZCA9IGRlcHJl Yy0+b2JqaWQ7CisJCQlicmVhazsKKwkJfQorCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7 CisJdGFibGVfY2xvc2UoZGVwUmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIGF1eGls aWFyeUluZGV4T2lkOworfQorCiAvKgogICogZ2V0X2luZGV4X3JlZl9jb25zdHJhaW50cwogICoJ CUdpdmVuIHRoZSBPSUQgb2YgYW4gaW5kZXgsIHJldHVybiB0aGUgT0lEIG9mIGFsbCBmb3JlaWdu IGtleQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCmluZGV4IDljYzRmMDZkYTlmLi4zYWE2NTdjNzljYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwpAQCAtMzA4LDYgKzMwOCw3IEBAIGNyZWF0ZV90b2FzdF90 YWJsZShSZWxhdGlvbiByZWwsIE9pZCB0b2FzdE9pZCwgT2lkIHRvYXN0SW5kZXhPaWQsCiAJaW5k ZXhJbmZvLT5paV9BbSA9IEJUUkVFX0FNX09JRDsKIAlpbmRleEluZm8tPmlpX0FtQ2FjaGUgPSBO VUxMOwogCWluZGV4SW5mby0+aWlfQXV4aWxpYXJ5ID0gZmFsc2U7CisJaW5kZXhJbmZvLT5paV9B dXhpbGlhcnlGb3JJbmRleElkID0gSW52YWxpZE9pZDsKIAlpbmRleEluZm8tPmlpX0NvbnRleHQg PSBDdXJyZW50TWVtb3J5Q29udGV4dDsKIAogCWNvbGxhdGlvbklkc1swXSA9IEludmFsaWRPaWQ7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDBjNzc0MGUyYzg1Li41ZmI0NDcxOTViNSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTI0NSw3ICsyNDUsNyBAQCBDaGVja0luZGV4 Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJaW5kZXhJbmZvID0gbWFrZUluZGV4SW5mbyhudW1iZXJP ZkF0dHJpYnV0ZXMsIG51bWJlck9mQXR0cmlidXRlcywKIAkJCQkJCQkgIGFjY2Vzc01ldGhvZElk LCBOSUwsIE5JTCwgZmFsc2UsIGZhbHNlLAogCQkJCQkJCSAgZmFsc2UsIGZhbHNlLCBhbXN1bW1h cml6aW5nLAotCQkJCQkJCSAgaXNXaXRob3V0T3ZlcmxhcHMsIGlzYXV4aWxpYXJ5KTsKKwkJCQkJ CQkgIGlzV2l0aG91dE92ZXJsYXBzLCBpc2F1eGlsaWFyeSwgSW52YWxpZE9pZCk7CiAJdHlwZUlk cyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CiAJY29sbGF0aW9uSWRz ID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKIAlvcGNsYXNzSWRzID0g cGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKQEAgLTk0Myw3ICs5NDMsOCBA QCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJCQkJCQkgIGNvbmN1cnJlbnQsCiAJCQkJCQkJ ICBhbWlzc3VtbWFyaXppbmcsCiAJCQkJCQkJICBzdG10LT5pc3dpdGhvdXRvdmVybGFwcywKLQkJ CQkJCQkgIGZhbHNlKTsKKwkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCSAgSW52YWxpZE9pZCk7CiAK IAl0eXBlSWRzID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKIAljb2xs YXRpb25JZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwpAQCAtMzY4 Myw2ICszNjg0LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAl7CiAJCU9pZAkJCWluZGV4 SWQ7CiAJCU9pZAkJCWF1eEluZGV4SWQ7CisJCU9pZAkJCWp1bmtBdXhJbmRleElkOwogCQlPaWQJ CQl0YWJsZUlkOwogCQlPaWQJCQlhbUlkOwogCQlib29sCQlzYWZlOwkJLyogZm9yIHNldF9pbmRl eHNhZmVfcHJvY2ZsYWdzICovCkBAIC00MDMyLDYgKzQwMzQsNyBAQCBSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29u c3QgUmVpbgogCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHg7CiAJCU9pZAkJCW5ld0luZGV4SWQ7 CiAJCU9pZAkJCWF1eEluZGV4SWQ7CisJCU9pZAkJCWp1bmtBdXhJbmRleElkOwogCQlSZWxhdGlv bglpbmRleFJlbDsKIAkJUmVsYXRpb24JaGVhcFJlbDsKIAkJT2lkCQkJc2F2ZV91c2VyaWQ7CkBA IC00MDM5LDYgKzQwNDIsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVp bmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlpbnQJCQlzYXZl X25lc3RsZXZlbDsKIAkJUmVsYXRpb24JbmV3SW5kZXhSZWw7CiAJCVJlbGF0aW9uCWF1eEluZGV4 UmVsOworCQlSZWxhdGlvbglqdW5rQXV4SW5kZXhSZWw7CiAJCUxvY2tSZWxJZCAgKmxvY2tyZWxp ZDsKIAkJT2lkCQkJdGFibGVzcGFjZWlkOwogCkBAIC00MTEyLDEyICs0MTE2LDE3IEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0 aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQkJCQkJCQkgICB0YWJsZXNwYWNlaWQsCiAJCQkJCQkJ CQkJCQkgICBhdXhDb25jdXJyZW50TmFtZSk7CiAKKwkJLyogU2VhcmNoIGZvciBhdXhpbGlhcnkg aW5kZXggZm9yIHJlaW5kZXhlZCBpbmRleCwgdG8gZHJvcCBpdCAqLworCQlqdW5rQXV4SW5kZXhJ ZCA9IGdldF9hdXhpbGlhcnlfaW5kZXgoaWR4LT5pbmRleElkKTsKKwogCQkvKgogCQkgKiBOb3cg b3BlbiB0aGUgcmVsYXRpb24gb2YgdGhlIG5ldyBpbmRleCwgYSBzZXNzaW9uLWxldmVsIGxvY2sg aXMKIAkJICogYWxzbyBuZWVkZWQgb24gaXQuCiAJCSAqLwogCQluZXdJbmRleFJlbCA9IGluZGV4 X29wZW4obmV3SW5kZXhJZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAkJYXV4SW5kZXhS ZWwgPSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CisJ CWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkKKwkJCWp1bmtBdXhJbmRleFJlbCA9IGlu ZGV4X29wZW4oanVua0F1eEluZGV4SWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CiAKIAkJ LyoKIAkJICogU2F2ZSB0aGUgbGlzdCBvZiBPSURzIGFuZCBsb2NrcyBpbiBwcml2YXRlIGNvbnRl eHQKQEAgLTQxMjcsNiArNDEzNiw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCW5ld2lk eCA9IHBhbGxvY19vYmplY3QoUmVpbmRleEluZGV4SW5mbyk7CiAJCW5ld2lkeC0+aW5kZXhJZCA9 IG5ld0luZGV4SWQ7CiAJCW5ld2lkeC0+YXV4SW5kZXhJZCA9IGF1eEluZGV4SWQ7CisJCW5ld2lk eC0+anVua0F1eEluZGV4SWQgPSBqdW5rQXV4SW5kZXhJZDsKIAkJbmV3aWR4LT5zYWZlID0gaWR4 LT5zYWZlOwogCQluZXdpZHgtPnRhYmxlSWQgPSBpZHgtPnRhYmxlSWQ7CiAJCW5ld2lkeC0+YW1J ZCA9IGlkeC0+YW1JZDsKQEAgLTQxNDgsMTAgKzQxNTgsMTggQEAgUmVpbmRleFJlbGF0aW9uQ29u Y3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0 IFJlaW4KIAkJbG9ja3JlbGlkID0gcGFsbG9jX29iamVjdChMb2NrUmVsSWQpOwogCQkqbG9ja3Jl bGlkID0gYXV4SW5kZXhSZWwtPnJkX2xvY2tJbmZvLmxvY2tSZWxJZDsKIAkJcmVsYXRpb25Mb2Nr cyA9IGxhcHBlbmQocmVsYXRpb25Mb2NrcywgbG9ja3JlbGlkKTsKKwkJaWYgKE9pZElzVmFsaWQo anVua0F1eEluZGV4SWQpKQorCQl7CisJCQlsb2NrcmVsaWQgPSBwYWxsb2Nfb2JqZWN0KExvY2tS ZWxJZCk7CisJCQkqbG9ja3JlbGlkID0ganVua0F1eEluZGV4UmVsLT5yZF9sb2NrSW5mby5sb2Nr UmVsSWQ7CisJCQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tzLCBsb2NrcmVs aWQpOworCQl9CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJCWlu ZGV4X2Nsb3NlKGluZGV4UmVsLCBOb0xvY2spOworCQlpZiAoT2lkSXNWYWxpZChqdW5rQXV4SW5k ZXhJZCkpCisJCQlpbmRleF9jbG9zZShqdW5rQXV4SW5kZXhSZWwsIE5vTG9jayk7CiAJCWluZGV4 X2Nsb3NlKGF1eEluZGV4UmVsLCBOb0xvY2spOwogCQlpbmRleF9jbG9zZShuZXdJbmRleFJlbCwg Tm9Mb2NrKTsKIApAQCAtNDM0MCw3ICs0MzU4LDggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAogCS8qCiAJICogQXQgdGhpcyBtb21lbnQgYWxsIHRhcmdldCBpbmRleGVzIGFyZSBtYXJrZWQg YXMgInJlYWR5LXRvLWluc2VydCIuIFNvLAotCSAqIHdlIGFyZSBmcmVlIHRvIHN0YXJ0IHByb2Nl c3Mgb2YgZHJvcHBpbmcgYXV4aWxpYXJ5IGluZGV4ZXMuCisJICogd2UgYXJlIGZyZWUgdG8gc3Rh cnQgcHJvY2VzcyBvZiBkcm9wcGluZyBhdXhpbGlhcnkgaW5kZXhlcyAtIGluY2x1ZGluZworCSAq IGp1c3QgaW5kZXhlcyBkZXRlY3RlZCBlYXJsaWVyLgogCSAqLwogCWZvcmVhY2gobGMsIG5ld0lu ZGV4SWRzKQogCXsKQEAgLTQzNjMsNiArNDM4Miw5IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWlu CiAJCSAqLwogCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK IAkJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKG5ld2lkeC0+YXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9D TEVBUl9SRUFEWSk7CisJCS8qIEVuc3VyZSBqdXN0IGluZGV4IGlzIG1hcmtlZCBhcyBub24tcmVh ZHkgKi8KKwkJaWYgKE9pZElzVmFsaWQobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCkpCisJCQlpbmRl eF9zZXRfc3RhdGVfZmxhZ3MobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9DTEVB Ul9SRUFEWSk7CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7CkBAIC00NTgxLDYgKzQ2MDMsOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50 bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgog CQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAogCQlpbmRl eF9jb25jdXJyZW50bHlfc2V0X2RlYWQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eEluZGV4 SWQpOworCQlpZiAoT2lkSXNWYWxpZChuZXdpZHgtPmp1bmtBdXhJbmRleElkKSkKKwkJCWluZGV4 X2NvbmN1cnJlbnRseV9zZXRfZGVhZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+anVua0F1eElu ZGV4SWQpOwogCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJfQpAQCAtNDYzMiw2ICs0NjU2LDE0 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOwog CiAJCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7CisKKwkJCWlm IChPaWRJc1ZhbGlkKGlkeC0+anVua0F1eEluZGV4SWQpKQorCQkJeworCisJCQkJb2JqZWN0Lm9i amVjdElkID0gaWR4LT5qdW5rQXV4SW5kZXhJZDsKKwkJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAw OworCQkJCWFkZF9leGFjdF9vYmplY3RfYWRkcmVzcygmb2JqZWN0LCBvYmplY3RzKTsKKwkJCX0K IAkJfQogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGZjODkzNTJiNjYxLi4w Y2M4OGQzMDY0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTE1MzMsNiArMTUzMyw4 IEBAIFJlbW92ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAlMaXN0Q2VsbCAgICpjZWxsOwog CWludAkJCWZsYWdzID0gMDsKIAlMT0NLTU9ERQlsb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxv Y2s7CisJTWVtb3J5Q29udGV4dCBwcml2YXRlX2NvbnRleHQsCisJCQkJICBvbGRjb250ZXh0Owog CiAJLyogRFJPUCBDT05DVVJSRU5UTFkgdXNlcyBhIHdlYWtlciBsb2NrLCBhbmQgaGFzIHNvbWUg cmVzdHJpY3Rpb25zICovCiAJaWYgKGRyb3AtPmNvbmN1cnJlbnQpCkBAIC0xNTkzLDkgKzE1OTUs MjAgQEAgUmVtb3ZlUmVsYXRpb25zKERyb3BTdG10ICpkcm9wKQogCQkJcmVsa2luZCA9IDA7CQkv KiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCiAJCQlicmVhazsKIAl9CisJLyoKKwkgKiBDcmVhdGUg YSBtZW1vcnkgY29udGV4dCB0aGF0IHdpbGwgc3Vydml2ZSBmb3JjZWQgdHJhbnNhY3Rpb24gY29t bWl0cyB3ZQorCSAqIG1heSBuZWVkIHRvIGRvIGJlbG93IChpbiBjYXNlIG9mIGNvbmN1cnJlbnQg aW5kZXggZHJvcCkuCisJICogU2luY2UgaXQgaXMgYSBjaGlsZCBvZiBQb3J0YWxDb250ZXh0LCBp dCB3aWxsIGdvIGF3YXkgZXZlbnR1YWxseSBldmVuIGlmCisJICogd2Ugc3VmZmVyIGFuIGVycm9y OyB0aGVyZSdzIG5vIG5lZWQgZm9yIHNwZWNpYWwgYWJvcnQgY2xlYW51cCBsb2dpYy4KKwkgKi8K Kwlwcml2YXRlX2NvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoUG9ydGFsQ29udGV4dCwK KwkJCQkJCQkJCQkJIlJlbW92ZVJlbGF0aW9ucyIsCisJCQkJCQkJCQkJCUFMTE9DU0VUX1NNQUxM X1NJWkVTKTsKIAorCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9j b250ZXh0KTsKIAkvKiBMb2NrIGFuZCB2YWxpZGF0ZSBlYWNoIHJlbGF0aW9uOyBidWlsZCBhIGxp c3Qgb2Ygb2JqZWN0IGFkZHJlc3NlcyAqLwogCW9iamVjdHMgPSBuZXdfb2JqZWN0X2FkZHJlc3Nl cygpOworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCWZvcmVhY2goY2Vs bCwgZHJvcC0+b2JqZWN0cykKIAl7CkBAIC0xNjQ3LDYgKzE2NjAsMzQgQEAgUmVtb3ZlUmVsYXRp b25zKERyb3BTdG10ICpkcm9wKQogCQkJZmxhZ3MgfD0gUEVSRk9STV9ERUxFVElPTl9DT05DVVJS RU5UTFk7CiAJCX0KIAorCQkvKgorCQkgKiBDb25jdXJyZW50IGluZGV4IGRyb3AgcmVxdWlyZXMg dG8gYmUgdGhlIGZpcnN0IHRyYW5zYWN0aW9uLiBCdXQgaW4KKwkJICogY2FzZSB3ZSBoYXZlIGp1 bmsgYXV4aWxpYXJ5IGluZGV4IC0gd2Ugd2FudCB0byBkcm9wIGl0IHRvbyAoYW5kIGFsc28KKwkJ ICogaW4gYSBjb25jdXJyZW50IHdheSkuIEluIHRoaXMgY2FzZSBwZXJmb3JtIHNpbGVudCBpbnRl cm5hbCBkZWxldGlvbgorCQkgKiBvZiBhdXhpbGlhcnkgaW5kZXgsIGFuZCByZXN0b3JlIHRyYW5z YWN0aW9uIHN0YXRlLiBJdCBpcyBmaW5lIHRvIGRvIGl0CisJCSAqIGluIHRoZSBsb29wIGJlY2F1 c2UgdGhlcmUgaXMgb25seSBzaW5nbGUgZWxlbWVudCBpbiBkcm9wLT5vYmplY3RzLgorCQkgKi8K KwkJaWYgKChmbGFncyAmIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVExZKSAhPSAwICYmCisJ CQlzdGF0ZS5hY3R1YWxfcmVsa2luZCA9PSBSRUxLSU5EX0lOREVYKQorCQl7CisJCQlPaWQganVu a0F1eEluZGV4T2lkID0gZ2V0X2F1eGlsaWFyeV9pbmRleChyZWxPaWQpOworCQkJaWYgKE9pZElz VmFsaWQoanVua0F1eEluZGV4T2lkKSkKKwkJCXsKKwkJCQlPYmplY3RBZGRyZXNzIG9iamVjdDsK KwkJCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJCQlvYmplY3Qub2Jq ZWN0SWQgPSBqdW5rQXV4SW5kZXhPaWQ7CisJCQkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwkJ CQlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwKKwkJCQkJCQkJCQkgUEVS Rk9STV9ERUxFVElPTl9DT05DVVJSRU5UTFkgfAorCQkJCQkJCQkJCSBQRVJGT1JNX0RFTEVUSU9O X0lOVEVSTkFMIHwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9RVUlFVExZKTsKKwkJCQlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCQkJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQkJ CVByZXZlbnRJblRyYW5zYWN0aW9uQmxvY2sodHJ1ZSwgIkRST1AgSU5ERVggQ09OQ1VSUkVOVExZ Iik7CisJCQl9CisJCX0KKwogCQkvKgogCQkgKiBDb25jdXJyZW50IGluZGV4IGRyb3AgY2Fubm90 IGJlIHVzZWQgd2l0aCBwYXJ0aXRpb25lZCBpbmRleGVzLAogCQkgKiBlaXRoZXIuCkBAIC0xNjc1 LDEyICsxNzE2LDE3IEBAIFJlbW92ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAkJb2JqLm9i amVjdElkID0gcmVsT2lkOwogCQlvYmoub2JqZWN0U3ViSWQgPSAwOwogCisJCW9sZGNvbnRleHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAkJYWRkX2V4YWN0X29i amVjdF9hZGRyZXNzKCZvYmosIG9iamVjdHMpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y29udGV4dCk7CiAJfQogCisJLyogRGVsZXRpb24gbWF5IGludm9sdmUgbXVsdGlwbGUgY29tbWl0 cywgc28sIHN3aXRjaCB0byBtZW1vcnkgY29udGV4dCAqLworCW9sZGNvbnRleHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAlwZXJmb3JtTXVsdGlwbGVEZWxldGlv bnMob2JqZWN0cywgZHJvcC0+YmVoYXZpb3IsIGZsYWdzKTsKKwlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY29udGV4dCk7CiAKLQlmcmVlX29iamVjdF9hZGRyZXNzZXMob2JqZWN0cyk7CisJTWVt b3J5Q29udGV4dERlbGV0ZShwcml2YXRlX2NvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVu Y3MuYwppbmRleCBiNTU2YmE0ODE3Yi4uZDdiZTg3MTVkNTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5j CkBAIC04MzQsNyArODM0LDcgQEAgSW5kZXhJbmZvICoKIG1ha2VJbmRleEluZm8oaW50IG51bWF0 dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMsCiAJCQkg IExpc3QgKnByZWRpY2F0ZXMsIGJvb2wgdW5pcXVlLCBib29sIG51bGxzX25vdF9kaXN0aW5jdCwK IAkJCSAgYm9vbCBpc3JlYWR5LCBib29sIGNvbmN1cnJlbnQsIGJvb2wgc3VtbWFyaXppbmcsCi0J CQkgIGJvb2wgd2l0aG91dG92ZXJsYXBzLCBib29sIGF1eGlsaWFyeSkKKwkJCSAgYm9vbCB3aXRo b3V0b3ZlcmxhcHMsIGJvb2wgYXV4aWxpYXJ5LCBPaWQgYXV4aWxpYXJ5X2Zvcl9pbmRleF9pZCkK IHsKIAlJbmRleEluZm8gICpuID0gbWFrZU5vZGUoSW5kZXhJbmZvKTsKIApAQCAtODUxLDYgKzg1 MSw3IEBAIG1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBh bW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMsCiAJbi0+aWlfU3VtbWFyaXppbmcgPSBzdW1tYXJpemlu ZzsKIAluLT5paV9XaXRob3V0T3ZlcmxhcHMgPSB3aXRob3V0b3ZlcmxhcHM7CiAJbi0+aWlfQXV4 aWxpYXJ5ID0gYXV4aWxpYXJ5OworCW4tPmlpX0F1eGlsaWFyeUZvckluZGV4SWQgPSBhdXhpbGlh cnlfZm9yX2luZGV4X2lkOwogCiAJLyogc3VtbWFyaXppbmcgaW5kZXhlcyBjYW5ub3QgY29udGFp biBub24ta2V5IGF0dHJpYnV0ZXMgKi8KIAlBc3NlcnQoIXN1bW1hcml6aW5nIHx8IChudW1rZXlh dHRycyA9PSBudW1hdHRycykpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBl bmRlbmN5LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaAppbmRleCAwZWE3Y2Nm NTI0My4uMDJiY2Y1ZTkzMTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5k ZW5jeS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCkBAIC0xODAsNiAr MTgwLDcgQEAgZXh0ZXJuIExpc3QgKmdldE93bmVkU2VxdWVuY2VzKE9pZCByZWxpZCk7CiBleHRl cm4gT2lkCWdldElkZW50aXR5U2VxdWVuY2UoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51 bSwgYm9vbCBtaXNzaW5nX29rKTsKIAogZXh0ZXJuIE9pZAlnZXRfaW5kZXhfY29uc3RyYWludChP aWQgaW5kZXhJZCk7CitleHRlcm4gT2lkCWdldF9hdXhpbGlhcnlfaW5kZXgoT2lkIGluZGV4SWQp OwogCiBleHRlcm4gTGlzdCAqZ2V0X2luZGV4X3JlZl9jb25zdHJhaW50cyhPaWQgaW5kZXhJZCk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNzI2M2M1ZTI5YTkuLmRlOGY5NjJhNzkyIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaApAQCAtMjE4LDYgKzIxOCw4IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4 SW5mbwogCWludAkJCWlpX1BhcmFsbGVsV29ya2VyczsKIAkvKiBpcyBhdXhpbGlhcnkgZm9yIGNv bmN1cnJlbnQgaW5kZXggYnVpbGQ/ICovCiAJYm9vbAkJaWlfQXV4aWxpYXJ5OworCS8qIGlmIGNy ZWF0aW5nIGFuIGF1eGlsaWFyeSBpbmRleCwgdGhlIE9JRCBvZiB0aGUgbWFpbiBpbmRleDsgb3Ro ZXJ3aXNlIEludmFsaWRPaWQuICovCisJT2lkCQkJaWlfQXV4aWxpYXJ5Rm9ySW5kZXhJZDsKIAkv KiBPaWQgb2YgaW5kZXggQU0gKi8KIAlPaWQJCQlpaV9BbTsKIAkvKiBwcml2YXRlIGNhY2hlIGFy ZWEgZm9yIGluZGV4IEFNICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVu Y3MuaCBiL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCmluZGV4IDQ5MDQ3NDhmNWZjLi4z NTc0NWJjNTIxYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBleHRl cm4gSW5kZXhJbmZvICptYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJz LCBPaWQgYW1vaWQsCiAJCQkJCQkJCWJvb2wgdW5pcXVlLCBib29sIG51bGxzX25vdF9kaXN0aW5j dCwKIAkJCQkJCQkJYm9vbCBpc3JlYWR5LCBib29sIGNvbmN1cnJlbnQsCiAJCQkJCQkJCWJvb2wg c3VtbWFyaXppbmcsIGJvb2wgd2l0aG91dG92ZXJsYXBzLAotCQkJCQkJCQlib29sIGF1eGlsaWFy eSk7CisJCQkJCQkJCWJvb2wgYXV4aWxpYXJ5LCBPaWQgYXV4aWxpYXJ5X2Zvcl9pbmRleF9pZCk7 CiAKIGV4dGVybiBOb2RlICptYWtlU3RyaW5nQ29uc3QoY2hhciAqc3RyLCBpbnQgbG9jYXRpb24p OwogZXh0ZXJuIERlZkVsZW0gKm1ha2VEZWZFbGVtKGNoYXIgKm5hbWUsIE5vZGUgKmFyZywgaW50 IGxvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRl X2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dApp bmRleCBhM2U4NWJhMTMxMC4uODVjZDA4OGQwODAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTMyNjUsMjAgKzMyNjUsMTA5IEBAIEVSUk9SOiAgcmVp bmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBub3Qgc3VwcG9y dGVkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNl9jY2F1eDsKIEVS Uk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBu b3Qgc3VwcG9ydGVkCiAtLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXks IHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgotREVMRVRFIEZST00gY29uY3VyX3JlaW5k ZXhfdGFiNCBXSEVSRSBjMSA9IDE7Ci1FUlJPUjogIHJlbGF0aW9uICJjb25jdXJfcmVpbmRleF90 YWI0IiBkb2VzIG5vdCBleGlzdAotTElORSAxOiBERUxFVEUgRlJPTSBjb25jdXJfcmVpbmRleF90 YWI0IFdIRVJFIGMxID0gMTsKLSAgICAgICAgICAgICAgICAgICAgXgorREVMRVRFIEZST00gYXV4 X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJl aW5kZXggYW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBNYWtl IHN1cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90YWI1CisgICAgICAgICAg IFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxh dGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAg ICAgICAgICB8IAorSW5kZXhlczoKKyAgICAiYXV4X2luZGV4X2luZDYiIFVOSVFVRSwgYnRyZWUg KGMxKQorCitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworLS0gSW5zZXJ0IGR1cGxpY2F0ZXMg YWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgxKTsKKy0tIENy ZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRM WSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworRVJST1I6ICBjb3VsZCBu b3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYiCitERVRBSUw6ICBLZXkgKGMx KT0oMSkgaXMgZHVwbGljYXRlZC4KKy0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUg Z28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUgRlJPTSBhdXhf aW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CiAtLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVp bmRleAotUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKLUVSUk9SOiAgY291bGQgbm90IGNy ZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgotREVUQUlMOiAgS2V5IChjMSk9KDEp IGlzIGR1cGxpY2F0ZWQuCi0tLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCBy ZWluZGV4CiBSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKIFdBUk5J Tkc6ICBza2lwcGluZyByZWluZGV4IG9mIGludmFsaWQgaW5kZXggInB1YmxpYy5hdXhfaW5kZXhf aW5kNiIKIEhJTlQ6ICBVc2UgRFJPUCBJTkRFWCBvciBSRUlOREVYIElOREVYLgogV0FSTklORzog IHNraXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJwdWJsaWMuYXV4X2luZGV4X2lu ZDZfY2NhdXgiCiBOT1RJQ0U6ICB0YWJsZSAiYXV4X2luZGV4X3RhYjUiIGhhcyBubyBpbmRleGVz IHRoYXQgY2FuIGJlIHJlaW5kZXhlZCBjb25jdXJyZW50bHkKKy0tIE1ha2Ugc3VyZSBpdCBpcyBz dGlsbCBleGlzdHMKK1xkIGF1eF9pbmRleF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJsaWMu YXV4X2luZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxl IHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLQorIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5k ZXhlczoKKyAgICAiYXV4X2luZGV4X2luZDYiIFVOSVFVRSwgYnRyZWUgKGMxKSBJTlZBTElECisg ICAgImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBzdGlyIChjMSkgSU5WQUxJRAorCistLSBTaG91bGQg YmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAorUkVJTkRFWCBUQUJMRSBhdXhf aW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2lu ZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1 bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50 ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJhdXhfaW5kZXhf aW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpCisKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7Cist LSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFM VUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklR VUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChj MSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4ICJhdXhfaW5kZXhfaW5k NiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVkLgorLS0gVGhpcyBtYWtlcyB0 aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxp ZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90YWI1IFdIRVJFIGMxID0gMTsKKy0tIFNob3VsZCBi ZSBza2lwcGVkIGR1cmluZyByZWluZGV4IGFuZCBkcm9wcGVkCitSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMgZHJvcHBl ZAorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1YmxpYy5hdXhfaW5kZXhf dGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0 IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisg YzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAg ICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpCisKK0RST1AgSU5ERVggYXV4X2lu ZGV4X2luZDY7CistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4X2lu ZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdhaW4K K0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9p bmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4ICJh dXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVkLgorLS0g VGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2Fu IGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90YWI1IFdIRVJFIGMxID0gMTsK Ky0tIERyb3AgbWFpbiBpbmRleCBDT05DVVJSRU5UTFkKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eGlsaWFyeSBpbmRleCBkcm9wcGVkIHRv bworXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1YmxpYy5hdXhfaW5kZXhf dGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0 IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisg YzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisKK0RST1AgSU5ERVgg YXV4X2luZGV4X2luZDY7CitFUlJPUjogIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIgZG9lcyBub3Qg ZXhpc3QKKy0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhf dGFiNSBWQUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JF QVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4 X3RhYjUgKGMxKTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9p bmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCistLSBEcm9w IG1haW4gaW5kZXgKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4 aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5kZXhfdGFiNQorICAgICAgICAgICBU YWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRp b24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAg ICAgICAgfCAKKwogRFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKIC0tIENoZWNrIGhhbmRsaW5n IG9mIGluZGV4ZXMgd2l0aCBleHByZXNzaW9ucyBhbmQgcHJlZGljYXRlcy4gIFRoZQogLS0gZGVm aW5pdGlvbnMgb2YgdGhlIHJlYnVpbHQgaW5kZXhlcyBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFs CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAppbmRleCA3YWU4ZTQ0MDE5Yi4uNmQ1 OTc3OTBiNTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbApAQCAtMTM0MCwx MSArMTM0MCw2MiBAQCBSRUlOREVYIElOREVYIGF1eF9pbmRleF9pbmQ2X2NjYXV4OwogLS0gQ29u Y3VycmVudGx5IGFsc28KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2 X2NjYXV4OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0 aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KLURFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3Rh YjQgV0hFUkUgYzEgPSAxOworREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAx OworLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5kZXggYW5kIGRyb3BwZWQKK1JFSU5E RVggSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4IGluZGV4IGlzIGRyb3Bw ZWQKK1xkIGF1eF9pbmRleF90YWI1CitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworCistLSBJ bnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVT ICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUg SU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7 CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRl eCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEg PSAxOwogLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5kZXgKLVJFSU5ERVggVEFCTEUg YXV4X2luZGV4X3RhYjU7Ci0tLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCBy ZWluZGV4CiBSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1h a2Ugc3VyZSBpdCBpcyBzdGlsbCBleGlzdHMKK1xkIGF1eF9pbmRleF90YWI1CistLSBTaG91bGQg YmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAorUkVJTkRFWCBUQUJMRSBhdXhf aW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2lu ZGV4X3RhYjUKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CisKKy0tIEluc2VydCBkdXBsaWNh dGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSk7Cist LSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJS RU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKKy0tIFRoaXMgbWFr ZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUg dmFsaWQuCitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CistLSBTaG91 bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAorUkVJTkRFWCBJTkRFWCBD T05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4IGluZGV4IGlzIGRy b3BwZWQKK1xkIGF1eF9pbmRleF90YWI1CitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworCist LSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFM VUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklR VUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChj MSk7CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBp bmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUg YzEgPSAxOworLS0gRHJvcCBtYWluIGluZGV4IENPTkNVUlJFTlRMWQorRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4aWxpYXJ5IGluZGV4IGRy b3BwZWQgdG9vCitcZCBhdXhfaW5kZXhfdGFiNQorRFJPUCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsK KworLS0gSW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1 IFZBTFVFUyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUg VU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFi NSAoYzEpOworLS0gRHJvcCBtYWluIGluZGV4CitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2Owor LS0gTWFrZSBzdXJlIGF1eGlsaWFyeSBpbmRleCBkcm9wcGVkIHRvbworXGQgYXV4X2luZGV4X3Rh YjUKKwogRFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKIAogLS0gQ2hlY2sgaGFuZGxpbmcgb2Yg aW5kZXhlcyB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzLiAgVGhlCi0tIAoyLjQzLjAK Cg== --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="nocfbot-v24-only-part-3-0006-Refresh-snapshot-periodically-during.patch" Content-Disposition: attachment; filename="nocfbot-v24-only-part-3-0006-Refresh-snapshot-periodically-during.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm0n5 RnJvbSAzN2E5YmE1NDJjMzIwNzU5ZmE2MGJjMTM2MGE1OGVkNDM5MTU3ZGVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAyMSBBcHIgMjAyNSAxNDoxMTo1MyArMDIwMApTdWJqZWN0OiBb UEFUQ0ggdjI0LW9ubHktcGFydC0zIDYvNl0gUmVmcmVzaCBzbmFwc2hvdCBwZXJpb2RpY2FsbHkg ZHVyaW5nCiBpbmRleCB2YWxpZGF0aW9uCgpFbmhhbmNlcyB2YWxpZGF0aW9uIHBoYXNlIG9mIGNv bmN1cnJlbnRseSBidWlsdCBpbmRleGVzIGJ5IHBlcmlvZGljYWxseSByZWZyZXNoaW5nIHNuYXBz aG90cyByYXRoZXIgdGhhbiB1c2luZyBhIHNpbmdsZSByZWZlcmVuY2Ugc25hcHNob3QuIFRoaXMg YWRkcmVzc2VzIGlzc3VlcyB3aXRoIHhtaW4gcHJvcGFnYXRpb24gZHVyaW5nIGxvbmctcnVubmlu ZyB2YWxpZGF0aW9ucy4KClRoZSB2YWxpZGF0aW9uIG5vdyB0YWtlcyBhIGZyZXNoIHNuYXBzaG90 IGV2ZXJ5IGZldyBwYWdlcywgYWxsb3dpbmcgdGhlIHhtaW4gaG9yaXpvbiB0byBhZHZhbmNlLiBU aGlzIHJlc3RvcmVzIGZlYXR1cmUgb2YgY29tbWl0IGQ5ZDA3NjIyMmY1Yiwgd2hpY2ggd2FzIHJl dmVydGVkIGluIGNvbW1pdCBlMjhiYjg4NTE5NjkuIE5ldyBTVElSLWJhc2VkIGFwcHJvYWNoIGlz IG5vdCBkZXBlbmRzIG9uIHNpbmdsZSByZWZlcmVuY2Ugc25hcHNob3QgYW55bW9yZS4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UICAgICAgIHwgIDQgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgfCA3MyArKysrKysrKysrKysrKysrKysr KystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgICAgfCAxMiArKyst CiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgIHwgNDMgKysrKysrKysr Ky0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgfCA1MCArKy0t LS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgIHwg MjUgKysrKy0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmggICAgICAgICAgICAgfCAx NSArKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICB8ICAyICst CiA4IGZpbGVzIGNoYW5nZWQsIDE0MCBpbnNlcnRpb25zKCspLCA4NCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVAppbmRleCAyOGUyYTE2MDRjNC4uNjA0YmRkYTU5ZmYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVApAQCAtNDAxLDEyICs0MDEsMTIgQEAgbGl2 ZSB0dXBsZS4KIFdlIG1hcmsgdGhlIGluZGV4IG9wZW4gZm9yIGluc2VydHMgKGJ1dCBzdGlsbCBu b3QgcmVhZHkgZm9yIHJlYWRzKSB0aGVuCiB3ZSBhZ2FpbiB3YWl0IGZvciB0cmFuc2FjdGlvbnMg d2hpY2ggaGF2ZSB0aGUgdGFibGUgb3Blbi4gIFRoZW4gdmFsaWRhdGUKIHRoZSBpbmRleC4gIFRo aXMgc2VhcmNoZXMgZm9yIHR1cGxlcyBtaXNzaW5nIGZyb20gdGhlIGluZGV4IGluIGF1eGlsaWFy eQotaW5kZXgsIGFuZCBpbnNlcnRzIGFueSBtaXNzaW5nIG9uZXMgaWYgdGhlbSB2aXNpYmxlIHRv IHJlZmVyZW5jZSBzbmFwc2hvdC4KK2luZGV4LCBhbmQgaW5zZXJ0cyBhbnkgbWlzc2luZyBvbmVz IGlmIHRoZW0gdmlzaWJsZSB0byBmcmVzaCBzbmFwc2hvdC4KIEFnYWluLCB0aGUgaW5kZXggZW50 cmllcyBoYXZlIHRvIGhhdmUgVElEcyBlcXVhbCB0byBIT1QtY2hhaW4gcm9vdCBUSURzLCBidXQK IHRoZSB2YWx1ZSB0byBiZSBpbnNlcnRlZCBpcyB0aGUgb25lIGZyb20gdGhlIGxpdmUgdHVwbGUu CiAKIFRoZW4gd2Ugd2FpdCB1bnRpbCBldmVyeSB0cmFuc2FjdGlvbiB0aGF0IGNvdWxkIGhhdmUg YSBzbmFwc2hvdCBvbGRlciB0aGFuCi10aGUgc2Vjb25kIHJlZmVyZW5jZSBzbmFwc2hvdCBpcyBm aW5pc2hlZC4gIFRoaXMgZW5zdXJlcyB0aGF0IG5vYm9keSBpcwordGhlIGxhdGVzdCB1c2VkIHNu YXBzaG90IGlzIGZpbmlzaGVkLiAgVGhpcyBlbnN1cmVzIHRoYXQgbm9ib2R5IGlzCiBhbGl2ZSBh bnkgbG9uZ2VyIHdobyBjb3VsZCBuZWVkIHRvIHNlZSBhbnkgdHVwbGVzIHRoYXQgbWlnaHQgYmUg bWlzc2luZwogZnJvbSB0aGUgaW5kZXgsIGFzIHdlbGwgYXMgZW5zdXJpbmcgdGhhdCBubyBvbmUg Y2FuIHNlZSBhbnkgaW5jb25zaXN0ZW50CiByb3dzIGluIGEgYnJva2VuIEhPVCBjaGFpbiAodGhl IGZpcnN0IGNvbmRpdGlvbiBpcyBzdHJvbmdlciB0aGFuIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggYzg1ZTUzMzJiYTIuLjEyYmFhODcyOGQ1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTE5OTYsMjMgKzE5OTYs MjYgQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fcmVhZF9zdHJlYW1fbmV4dCgKIAlyZXR1 cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgdm9pZAorc3RhdGljIFRyYW5zYWN0aW9uSWQKIGhlYXBh bV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCSAgIFJl bGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJCQkgICBJbmRleEluZm8gKmluZGV4SW5mbywKLQkJ CQkJCSAgIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJICAgVmFsaWRhdGVJbmRleFN0YXRlICpz dGF0ZSwKIAkJCQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4U3RhdGUpCiB7CisJVHJhbnNh Y3Rpb25JZCBsaW1pdFhtaW47CisKIAlEYXR1bQkJdmFsdWVzW0lOREVYX01BWF9LRVlTXTsKIAli b29sCQlpc251bGxbSU5ERVhfTUFYX0tFWVNdOwogCisJU25hcHNob3QJCXNuYXBzaG90OwogCVR1 cGxlVGFibGVTbG90ICAqc2xvdDsKIAlFU3RhdGUJCQkqZXN0YXRlOwogCUV4cHJDb250ZXh0CQkq ZWNvbnRleHQ7CiAJQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5ID0gR2V0QWNjZXNzU3Ry YXRlZ3koQkFTX0JVTEtSRUFEKTsKIAotCWludAkJCQludW1fdG9fY2hlY2s7CisJaW50CQkJCW51 bV90b19jaGVjaywKKwkJCQkJcGFnZV9yZWFkX2NvdW50ZXIgPSAxOyAvKiBzZXQgdG8gMSB0byBz a2lwIHNuYXBzaG90IHJlc2V0IGF0IHN0YXJ0ICovCiAJVHVwbGVzdG9yZXN0YXRlICp0dXBsZXNf Zm9yX2NoZWNrOwogCVZhbGlkYXRlSW5kZXhTY2FuU3RhdGUgY2FsbGJhY2tfcHJpdmF0ZV9kYXRh OwogCkBAIC0yMDIzLDE0ICsyMDI2LDE2IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkvKiBVc2UgMTAlIG9mIG1lbW9yeSBmb3IgdHVwbGUgc3Rv cmUuICovCiAJaW50CQlzdG9yZV93b3JrX21lbV9wYXJ0ID0gbWFpbnRlbmFuY2Vfd29ya19tZW0g LyAxMDsKIAotCS8qCi0JICogRW5jb2RlIFRJRHMgYXMgaW50OCB2YWx1ZXMgZm9yIHRoZSBzb3J0 LCByYXRoZXIgdGhhbiBkaXJlY3RseSBzb3J0aW5nCi0JICogaXRlbSBwb2ludGVycy4gIFRoaXMg Y2FuIGJlIHNpZ25pZmljYW50bHkgZmFzdGVyLCBwcmltYXJpbHkgYmVjYXVzZSBUSUQKLQkgKiBp cyBhIHBhc3MtYnktcmVmZXJlbmNlIHR5cGUgb24gYWxsIHBsYXRmb3Jtcywgd2hlcmVhcyBpbnQ4 IGlzCi0JICogcGFzcy1ieS12YWx1ZSBvbiBtb3N0IHBsYXRmb3Jtcy4KLQkgKi8KKwlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwogCXR1cGxlc19mb3JfY2hl Y2sgPSAgdHVwbGVzdG9yZV9iZWdpbl9kYXR1bShJTlQ4T0lELCBmYWxzZSwgZmFsc2UsIHN0b3Jl X3dvcmtfbWVtX3BhcnQpOwogCisJUG9wQWN0aXZlU25hcHNob3QoKTsKKwlJbnZhbGlkYXRlQ2F0 YWxvZ1NuYXBzaG90KCk7CisKKwlBc3NlcnQoIUhhdmVSZWdpc3RlcmVkT3JBY3RpdmVTbmFwc2hv dCgpKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCiAJ LyoKIAkgKiBzYW5pdHkgY2hlY2tzCiAJICovCkBAIC0yMDQ2LDYgKzIwNTEsMjkgQEAgaGVhcGFt X2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCiAJc3RhdGUtPnR1 cGxlc29ydCA9IGF1eFN0YXRlLT50dXBsZXNvcnQgPSBOVUxMOwogCisJLyoKKwkgKiBOb3cgdGFr ZSB0aGUgZmlyc3Qgc25hcHNob3QgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdG8gZmlsdGVyIGNhbmRp ZGF0ZQorCSAqIHR1cGxlcy4gV2UgYXJlIGdvaW5nIHRvIHJlcGxhY2UgaXQgYnkgbmV3ZXIgc25h cHNob3QgZXZlcnkgc28gb2Z0ZW4KKwkgKiB0byBwcm9wYWdhdGUgaG9yaXpvbi4KKwkgKgorCSAq IEJld2FyZSEgIFRoZXJlIG1pZ2h0IHN0aWxsIGJlIHNuYXBzaG90cyBpbiB1c2UgdGhhdCB0cmVh dCBzb21lIHRyYW5zYWN0aW9uCisJICogYXMgaW4tcHJvZ3Jlc3MgdGhhdCBvdXIgdGVtcG9yYXJ5 IHNuYXBzaG90IHRyZWF0cyBhcyBjb21taXR0ZWQuCisJICoKKwkgKiBJZiBzdWNoIGEgcmVjZW50 bHktY29tbWl0dGVkIHRyYW5zYWN0aW9uIGRlbGV0ZWQgdHVwbGVzIGluIHRoZSB0YWJsZSwKKwkg KiB3ZSB3aWxsIG5vdCBpbmNsdWRlIHRoZW0gaW4gdGhlIGluZGV4OyB5ZXQgdGhvc2UgdHJhbnNh Y3Rpb25zIHdoaWNoCisJICogc2VlIHRoZSBkZWxldGluZyBvbmUgYXMgc3RpbGwtaW4tcHJvZ3Jl c3Mgd2lsbCBleHBlY3Qgc3VjaCB0dXBsZXMgdG8KKwkgKiBiZSB0aGVyZSBvbmNlIHdlIG1hcmsg dGhlIGluZGV4IGFzIHZhbGlkLgorCSAqCisJICogV2Ugc29sdmUgdGhpcyBieSB3YWl0aW5nIGZv ciBhbGwgZW5kYW5nZXJlZCB0cmFuc2FjdGlvbnMgdG8gZXhpdCBiZWZvcmUKKwkgKiB3ZSBtYXJr IHRoZSBpbmRleCBhcyB2YWxpZCwgZm9yIHRoYXQgcmVhc29uIGxpbWl0WG1pbiBpcyBzdXBwb3J0 ZWQuCisJICoKKwkgKiBXZSBhbHNvIHNldCBBY3RpdmVTbmFwc2hvdCB0byB0aGlzIHNuYXAsIHNp bmNlIGZ1bmN0aW9ucyBpbiBpbmRleGVzIG1heQorCSAqIG5lZWQgYSBzbmFwc2hvdC4KKwkgKi8K KwlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJUHVz aEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKKwlsaW1pdFhtaW4gPSBzbmFwc2hvdC0+eG1pbjsK KwogCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKIAllY29udGV4dCA9IEdldFBlclR1 cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKIAlzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90 KFJlbGF0aW9uR2V0RGVzY3IoaGVhcFJlbGF0aW9uKSwKQEAgLTIwNzksNiArMjEwNyw3IEBAIGhl YXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAogCQlMb2Nr QnVmZmVyKGJ1ZiwgQlVGRkVSX0xPQ0tfU0hBUkUpOwogCQlibG9ja19udW1iZXIgPSBCdWZmZXJH ZXRCbG9ja051bWJlcihidWYpOworCQlwYWdlX3JlYWRfY291bnRlcisrOwogCiAJCWkgPSAwOwog CQl3aGlsZSAoKG9mZiA9IHR1cGxlc1tpXSkgIT0gSW52YWxpZE9mZnNldE51bWJlcikKQEAgLTIx MzQsNiArMjE2MywyMCBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJCX0KIAogCQlSZWxlYXNlQnVmZmVyKGJ1Zik7CisjZGVmaW5lIFZBTElEQVRF X0lOREVYX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFIDQwOTYKKwkJaWYgKHBhZ2VfcmVhZF9j b3VudGVyICUgVkFMSURBVEVfSU5ERVhfUkVTRVRfU05BUFNIT1RfRUFDSF9OX1BBR0UgPT0gMCkK KwkJeworCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFw c2hvdCk7CisJCQkvKiB0byBtYWtlIHN1cmUgd2UgcHJvcGFnYXRlIHhtaW4gKi8KKwkJCUludmFs aWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CisKKwkJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRl c3RTbmFwc2hvdCgpKTsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJCQkvKiB4 bWluIHNob3VsZCBub3QgZ28gYmFja3dhcmRzLCBidXQganVzdCBmb3IgdGhlIGNhc2UqLworCQkJ bGltaXRYbWluID0gVHJhbnNhY3Rpb25JZE5ld2VyKGxpbWl0WG1pbiwgc25hcHNob3QtPnhtaW4p OworCQl9CiAJfQogCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKQEAgLTIx NDMsOSArMjE4NiwyMSBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJcmVhZF9zdHJlYW1fZW5kKHJlYWRfc3RyZWFtKTsKIAl0dXBsZXN0b3JlX2Vu ZCh0dXBsZXNfZm9yX2NoZWNrKTsKIAorCS8qCisJICogRHJvcCB0aGUgbGF0ZXN0IHNuYXBzaG90 LiAgV2UgbXVzdCBkbyB0aGlzIGJlZm9yZSB3YWl0aW5nIG91dCBvdGhlcgorCSAqIHNuYXBzaG90 IGhvbGRlcnMsIGVsc2Ugd2Ugd2lsbCBkZWFkbG9jayBhZ2FpbnN0IG90aGVyIHByb2Nlc3NlcyBh bHNvCisJICogZG9pbmcgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSwgd2hpY2ggd291bGQgc2Vl IG91ciBzbmFwc2hvdCBhcyBvbmUKKwkgKiB0aGV5IG11c3Qgd2FpdCBmb3IuCisJICovCisJUG9w QWN0aXZlU25hcHNob3QoKTsKKwlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOworCUludmFs aWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoTXlQcm9jLT54bWluID09IEludmFsaWRU cmFuc2FjdGlvbklkKTsKIAkvKiBUaGVzZSBtYXkgaGF2ZSBiZWVuIHBvaW50aW5nIHRvIHRoZSBu b3ctZ29uZSBlc3RhdGUgKi8KIAlpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zU3RhdGUgPSBOSUw7 CiAJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVTdGF0ZSA9IE5VTEw7CisKKwlyZXR1cm4gbGltaXRY bWluOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2 YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKaW5kZXggOGY4 YTFhZDc3OTYuLmQ1NzQ4NWNlZmMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0L3NwZ3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVt LmMKQEAgLTE5MSwxNCArMTkxLDE2IEBAIHZhY3V1bUxlYWZQYWdlKHNwZ0J1bGtEZWxldGVTdGF0 ZSAqYmRzLCBSZWxhdGlvbiBpbmRleCwgQnVmZmVyIGJ1ZmZlciwKIAkJCSAqIEFkZCB0YXJnZXQg VElEIHRvIHBlbmRpbmcgbGlzdCBpZiB0aGUgcmVkaXJlY3Rpb24gY291bGQgaGF2ZQogCQkJICog aGFwcGVuZWQgc2luY2UgVkFDVVVNIHN0YXJ0ZWQuICAoSWYgeGlkIGlzIGludmFsaWQsIGFzc3Vt ZSBpdAogCQkJICogbXVzdCBoYXZlIGhhcHBlbmVkIGJlZm9yZSBWQUNVVU0gc3RhcnRlZCwgc2lu Y2UgUkVJTkRFWAotCQkJICogQ09OQ1VSUkVOVExZIGxvY2tzIG91dCBWQUNVVU0uKQorCQkJICog Q09OQ1VSUkVOVExZIGxvY2tzIG91dCBWQUNVVU0sIGlmIG15WG1pbiBpcyBpbnZhbGlkIGl0IGlz CisJCQkgKiB2YWxpZGF0aW9uIHNjYW4uKQogCQkJICoKIAkJCSAqIE5vdGU6IHdlIGNvdWxkIG1h a2UgYSB0aWdodGVyIHRlc3QgYnkgc2VlaW5nIGlmIHRoZSB4aWQgaXMKIAkJCSAqICJydW5uaW5n IiBhY2NvcmRpbmcgdG8gdGhlIGFjdGl2ZSBzbmFwc2hvdDsgYnV0IHNuYXBtZ3IuYwogCQkJICog ZG9lc24ndCBjdXJyZW50bHkgZXhwb3J0IGEgc3VpdGFibGUgQVBJLCBhbmQgaXQncyBub3QgZW50 aXJlbHkKIAkJCSAqIGNsZWFyIHRoYXQgYSB0aWdodGVyIHRlc3QgaXMgd29ydGggdGhlIGN5Y2xl cyBhbnl3YXkuCiAJCQkgKi8KLQkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKGR0 LT54aWQsIGJkcy0+bXlYbWluKSkKKwkJCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoYmRzLT5t eVhtaW4pIHx8CisJCQkJCVRyYW5zYWN0aW9uSWRGb2xsb3dzT3JFcXVhbHMoZHQtPnhpZCwgYmRz LT5teVhtaW4pKQogCQkJCXNwZ0FkZFBlbmRpbmdUSUQoYmRzLCAmZHQtPnBvaW50ZXIpOwogCQl9 CiAJCWVsc2UKQEAgLTgwOCw3ICs4MTAsNiBAQCBzcGd2YWN1dW1zY2FuKHNwZ0J1bGtEZWxldGVT dGF0ZSAqYmRzKQogCS8qIEZpbmlzaCBzZXR0aW5nIHVwIHNwZ0J1bGtEZWxldGVTdGF0ZSAqLwog CWluaXRTcEdpc3RTdGF0ZSgmYmRzLT5zcGdzdGF0ZSwgaW5kZXgpOwogCWJkcy0+cGVuZGluZ0xp c3QgPSBOVUxMOwotCWJkcy0+bXlYbWluID0gR2V0QWN0aXZlU25hcHNob3QoKS0+eG1pbjsKIAli ZHMtPmxhc3RGaWxsZWRCbG9jayA9IFNQR0lTVF9MQVNUX0ZJWEVEX0JMS05POwogCiAJLyoKQEAg LTk1OSw2ICs5NjAsMTAgQEAgc3BnYnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sIElu ZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMsCiAJYmRzLnN0YXRzID0gc3RhdHM7CiAJYmRzLmNh bGxiYWNrID0gY2FsbGJhY2s7CiAJYmRzLmNhbGxiYWNrX3N0YXRlID0gY2FsbGJhY2tfc3RhdGU7 CisJaWYgKGluZm8tPnZhbGlkYXRlX2luZGV4KQorCQliZHMubXlYbWluID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7CisJZWxzZQorCQliZHMubXlYbWluID0gR2V0QWN0aXZlU25hcHNob3QoKS0+eG1p bjsKIAogCXNwZ3ZhY3V1bXNjYW4oJmJkcyk7CiAKQEAgLTk5OSw2ICsxMDA0LDcgQEAgc3BndmFj dXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAq c3RhdHMpCiAJCWJkcy5zdGF0cyA9IHN0YXRzOwogCQliZHMuY2FsbGJhY2sgPSBkdW1teV9jYWxs YmFjazsKIAkJYmRzLmNhbGxiYWNrX3N0YXRlID0gTlVMTDsKKwkJYmRzLm15WG1pbiA9IEdldEFj dGl2ZVNuYXBzaG90KCktPnhtaW47CiAKIAkJc3BndmFjdXVtc2NhbigmYmRzKTsKIAl9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMKaW5kZXggOTc2ZTRkNmU5ODAuLjQwMWJlNTQ1YmEyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5j CkBAIC02OCw2ICs2OCw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUg InV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKQEAgLTM1MTMs OCArMzUxNCw5IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog ICogaW5zZXJ0IHRoZWlyIG5ldyB0dXBsZXMgaW50byBpdC4gQXQgdGhlIHNhbWUgbW9tZW50IHdl IGNsZWFyICJpbmRpc3JlYWR5IiBmb3IKICAqIGF1eGlsaWFyeSBpbmRleCwgc2luY2UgaXQgaXMg bm8gbW9yZSByZXF1aXJlZCB0byBiZSB1cGRhdGVkLgogICoKLSAqIFdlIHRoZW4gdGFrZSBhIG5l dyByZWZlcmVuY2Ugc25hcHNob3QsIGFueSB0dXBsZXMgdGhhdCBhcmUgdmFsaWQgYWNjb3JkaW5n Ci0gKiB0byB0aGlzIHNuYXAsIGJ1dCBhcmUgbm90IGluIHRoZSBpbmRleCwgbXVzdCBiZSBhZGRl ZCB0byB0aGUgaW5kZXguCisgKiBXZSB0aGVuIHRha2UgYSBuZXcgc25hcHNob3QsIGFueSB0dXBs ZXMgdGhhdCBhcmUgdmFsaWQgYWNjb3JkaW5nCisgKiB0byB0aGlzIHNuYXAsIGJ1dCBhcmUgbm90 IGluIHRoZSBpbmRleCwgbXVzdCBiZSBhZGRlZCB0byB0aGUgaW5kZXguIEluCisgKiBvcmRlciB0 byBwcm9wYWdhdGUgeG1pbiB3ZSByZXNldCB0aGF0IHNuYXBzaG90IGV2ZXJ5IGZldyBzbyBvZnRl bi4KICAqIChBbnkgdHVwbGVzIGNvbW1pdHRlZCBsaXZlIGFmdGVyIHRoZSBzbmFwIHdpbGwgYmUg aW5zZXJ0ZWQgaW50byB0aGUKICAqIGluZGV4IGJ5IHRoZWlyIG9yaWdpbmF0aW5nIHRyYW5zYWN0 aW9uLiAgQW55IHR1cGxlcyBjb21taXR0ZWQgZGVhZCBiZWZvcmUKICAqIHRoZSBzbmFwIG5lZWQg bm90IGJlIGluZGV4ZWQsIGJlY2F1c2Ugd2Ugd2lsbCB3YWl0IG91dCBhbGwgdHJhbnNhY3Rpb25z CkBAIC0zNTI3LDcgKzM1MjksNyBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBS ZWxhdGlvbiwKICAqIFRJRHMgb2YgYm90aCBhdXhpbGlhcnkgYW5kIHRhcmdldCBpbmRleGVzLCBh bmQgZG9pbmcgYSAibWVyZ2Ugam9pbiIgYWdhaW5zdAogICogdGhlIFRJRCBsaXN0cyB0byBzZWUg d2hpY2ggdHVwbGVzIGZyb20gYXV4aWxpYXJ5IGluZGV4IGFyZSBtaXNzaW5nIGZyb20gdGhlCiAg KiB0YXJnZXQgaW5kZXguICBUaHVzIHdlIHdpbGwgZW5zdXJlIHRoYXQgYWxsIHR1cGxlcyB2YWxp ZCBhY2NvcmRpbmcgdG8gdGhlCi0gKiByZWZlcmVuY2Ugc25hcHNob3QgYXJlIGluIHRoZSBpbmRl eC4gTm90aWNlIHdlIG5lZWQgdG8gZG8gYnVsa2RlbGV0ZSBpbiB0aGUKKyAqIGxhdGVzdCBzbmFw c2hvdCBhcmUgaW4gdGhlIGluZGV4LiBOb3RpY2Ugd2UgbmVlZCB0byBkbyBidWxrZGVsZXRlIGlu IHRoZQogICogcGFydGljdWxhciBvcmRlcjogYXV4aWxpYXJ5IGZpcnN0LCB0YXJnZXQgbGFzdC4K ICAqCiAgKiBCdWlsZGluZyBhIHVuaXF1ZSBpbmRleCB0aGlzIHdheSBpcyB0cmlja3k6IHdlIG1p Z2h0IHRyeSB0byBpbnNlcnQgYQpAQCAtMzU0OCwxMyArMzU1MCwxNCBAQCBJbmRleENoZWNrRXhj bHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqCiAgKiBBbHNvLCBzb21lIGFjdGlvbnMg dG8gY29uY3VycmVudCBkcm9wIHRoZSBhdXhpbGlhcnkgaW5kZXggYXJlIHBlcmZvcm1lZC4KICAq Lwotdm9pZAotdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJ bmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKK1RyYW5zYWN0aW9uSWQKK3ZhbGlkYXRlX2luZGV4 KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCkKIHsKIAlSZWxhdGlvbglo ZWFwUmVsYXRpb24sCiAJCQkJaW5kZXhSZWxhdGlvbiwKIAkJCQlhdXhJbmRleFJlbGF0aW9uOwog CUluZGV4SW5mbyAgKmluZGV4SW5mbzsKKwlUcmFuc2FjdGlvbklkIGxpbWl0WG1pbjsKIAlJbmRl eFZhY3V1bUluZm8gaXZpbmZvLCBhdXhpdmluZm87CiAJVmFsaWRhdGVJbmRleFN0YXRlIHN0YXRl LCBhdXhTdGF0ZTsKIAlPaWQJCQlzYXZlX3VzZXJpZDsKQEAgLTM2MDQsOCArMzYwNywxMiBAQCB2 YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNu YXBzaG90IHNuYXBzaG90KQogCSAqIEZldGNoIGluZm8gbmVlZGVkIGZvciBpbmRleF9pbnNlcnQu ICAoWW91IG1pZ2h0IHRoaW5rIHRoaXMgc2hvdWxkIGJlCiAJICogcGFzc2VkIGluIGZyb20gRGVm aW5lSW5kZXgsIGJ1dCBpdHMgY29weSBpcyBsb25nIGdvbmUgZHVlIHRvIGhhdmluZwogCSAqIGJl ZW4gYnVpbHQgaW4gYSBwcmV2aW91cyB0cmFuc2FjdGlvbi4pCisJICoKKwkgKiBXZSBtaWdodCBu ZWVkIHNuYXBzaG90IGZvciBpbmRleCBleHByZXNzaW9ucyBvciBwcmVkaWNhdGVzLgogCSAqLwor CVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCWluZGV4SW5m byA9IEJ1aWxkSW5kZXhJbmZvKGluZGV4UmVsYXRpb24pOworCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CiAKIAkvKiBtYXJrIGJ1aWxkIGlzIGNvbmN1cnJlbnQganVzdCBmb3IgY29uc2lzdGVuY3kgKi8K IAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSB0cnVlOwpAQCAtMzY0MSw2ICszNjQ4LDkgQEAg dmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkLCBT bmFwc2hvdCBzbmFwc2hvdCkKIAkJCQkJCQkJCQkgICBOVUxMLCBUVVBMRVNPUlRfTk9ORSk7CiAJ YXV4U3RhdGUuaHR1cHMgPSBhdXhTdGF0ZS5pdHVwcyA9IGF1eFN0YXRlLnR1cHNfaW5zZXJ0ZWQg PSAwOwogCisJLyogdHVwbGVzb3J0X2JlZ2luX2RhdHVtIG1heSByZXF1aXJlIGNhdGFsb2cgc25h cHNob3QgKi8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisKIAkodm9pZCkgaW5kZXhf YnVsa19kZWxldGUoJmF1eGl2aW5mbywgTlVMTCwKIAkJCQkJCQkgdmFsaWRhdGVfaW5kZXhfY2Fs bGJhY2ssICZhdXhTdGF0ZSk7CiAJLyogSWYgYXV4IGluZGV4IGlzIGVtcHR5LCBtZXJnZSBtYXkg YmUgc2tpcHBlZCAqLwpAQCAtMzY3NSw2ICszNjg1LDkgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhl YXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAkJ CQkJCQkJCQkJTlVMTCwgVFVQTEVTT1JUX05PTkUpOwogCXN0YXRlLmh0dXBzID0gc3RhdGUuaXR1 cHMgPSBzdGF0ZS50dXBzX2luc2VydGVkID0gMDsKIAorCS8qIHR1cGxlc29ydF9iZWdpbl9kYXR1 bSBtYXkgcmVxdWlyZSBjYXRhbG9nIHNuYXBzaG90ICovCisJSW52YWxpZGF0ZUNhdGFsb2dTbmFw c2hvdCgpOworCiAJLyogYW1idWxrZGVsZXRlIHVwZGF0ZXMgcHJvZ3Jlc3MgbWV0cmljcyAqLwog CSh2b2lkKSBpbmRleF9idWxrX2RlbGV0ZSgmaXZpbmZvLCBOVUxMLAogCQkJCQkJCSB2YWxpZGF0 ZV9pbmRleF9jYWxsYmFjaywgJnN0YXRlKTsKQEAgLTM2OTQsMTkgKzM3MDcsMjQgQEAgdmFsaWRh dGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFwc2hv dCBzbmFwc2hvdCkKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSgzLCBwcm9n cmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7CiAJfQogCXR1cGxlc29ydF9wZXJmb3Jtc29ydChz dGF0ZS50dXBsZXNvcnQpOworCS8qIHR1cGxlc29ydF9wZXJmb3Jtc29ydCBtYXkgcmVxdWlyZSBj YXRhbG9nIHNuYXBzaG90ICovCisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCiAJdHVw bGVzb3J0X3BlcmZvcm1zb3J0KGF1eFN0YXRlLnR1cGxlc29ydCk7CisJLyogdHVwbGVzb3J0X3Bl cmZvcm1zb3J0IG1heSByZXF1aXJlIGNhdGFsb2cgc25hcHNob3QgKi8KKwlJbnZhbGlkYXRlQ2F0 YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKIAogCS8qCiAJICogTm93IG1lcmdlIGJvdGggaW5kZXhlcwogCSAqLwogCXBnc3RhdF9w cm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCQkg UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX0lEWE1FUkdFKTsKLQl0YWJsZV9pbmRl eF92YWxpZGF0ZV9zY2FuKGhlYXBSZWxhdGlvbiwKLQkJCQkJCQkgIGluZGV4UmVsYXRpb24sCi0J CQkJCQkJICBpbmRleEluZm8sCi0JCQkJCQkJICBzbmFwc2hvdCwKLQkJCQkJCQkgICZzdGF0ZSwK LQkJCQkJCQkgICZhdXhTdGF0ZSk7CisJbGltaXRYbWluID0gdGFibGVfaW5kZXhfdmFsaWRhdGVf c2NhbihoZWFwUmVsYXRpb24sCisJCQkJCQkJCQkJICBpbmRleFJlbGF0aW9uLAorCQkJCQkJCQkJ CSAgaW5kZXhJbmZvLAorCQkJCQkJCQkJCSAgJnN0YXRlLAorCQkJCQkJCQkJCSAgJmF1eFN0YXRl KTsKIAogCS8qIFR1cGxlIHNvcnQgY2xvc2VkIGJ5IHRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4g Ki8KIAlBc3NlcnQoc3RhdGUudHVwbGVzb3J0ID09IE5VTEwgJiYgYXV4U3RhdGUudHVwbGVzb3J0 ID09IE5VTEwpOwpAQCAtMzcyOSw2ICszNzQ3LDkgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJ ZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAlpbmRl eF9jbG9zZShhdXhJbmRleFJlbGF0aW9uLCBOb0xvY2spOwogCWluZGV4X2Nsb3NlKGluZGV4UmVs YXRpb24sIE5vTG9jayk7CiAJdGFibGVfY2xvc2UoaGVhcFJlbGF0aW9uLCBOb0xvY2spOworCisJ QXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlyZXR1cm4gbGlt aXRYbWluOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhj bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCA1ZmI0NDcxOTVi NS4uZDhiY2U4NDZjMjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21k cy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC01OTEsNyArNTkx LDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJTG9ja1JlbElkCWhlYXByZWxpZDsKIAlM T0NLVEFHCQloZWFwbG9ja3RhZzsKIAlMT0NLTU9ERQlsb2NrbW9kZTsKLQlTbmFwc2hvdAlzbmFw c2hvdDsKIAlPaWQJCQlyb290X3NhdmVfdXNlcmlkOwogCWludAkJCXJvb3Rfc2F2ZV9zZWNfY29u dGV4dDsKIAlpbnQJCQlyb290X3NhdmVfbmVzdGxldmVsOwpAQCAtMTgwNSwzMiArMTgwNCwxMSBA QCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVp bGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCiAJaWYgKHNhZmVfaW5kZXgp CiAJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KLQkvKgotCSAqIE5vdyB0YWtlIHRoZSAi cmVmZXJlbmNlIHNuYXBzaG90IiB0aGF0IHdpbGwgYmUgdXNlZCBieSB2YWxpZGF0ZV9pbmRleCgp Ci0JICogdG8gZmlsdGVyIGNhbmRpZGF0ZSB0dXBsZXMuICBCZXdhcmUhICBUaGVyZSBtaWdodCBz dGlsbCBiZSBzbmFwc2hvdHMgaW4KLQkgKiB1c2UgdGhhdCB0cmVhdCBzb21lIHRyYW5zYWN0aW9u IGFzIGluLXByb2dyZXNzIHRoYXQgb3VyIHJlZmVyZW5jZQotCSAqIHNuYXBzaG90IHRyZWF0cyBh cyBjb21taXR0ZWQuICBJZiBzdWNoIGEgcmVjZW50bHktY29tbWl0dGVkIHRyYW5zYWN0aW9uCi0J ICogZGVsZXRlZCB0dXBsZXMgaW4gdGhlIHRhYmxlLCB3ZSB3aWxsIG5vdCBpbmNsdWRlIHRoZW0g aW4gdGhlIGluZGV4OyB5ZXQKLQkgKiB0aG9zZSB0cmFuc2FjdGlvbnMgd2hpY2ggc2VlIHRoZSBk ZWxldGluZyBvbmUgYXMgc3RpbGwtaW4tcHJvZ3Jlc3Mgd2lsbAotCSAqIGV4cGVjdCBzdWNoIHR1 cGxlcyB0byBiZSB0aGVyZSBvbmNlIHdlIG1hcmsgdGhlIGluZGV4IGFzIHZhbGlkLgotCSAqCi0J ICogV2Ugc29sdmUgdGhpcyBieSB3YWl0aW5nIGZvciBhbGwgZW5kYW5nZXJlZCB0cmFuc2FjdGlv bnMgdG8gZXhpdCBiZWZvcmUKLQkgKiB3ZSBtYXJrIHRoZSBpbmRleCBhcyB2YWxpZC4KLQkgKgot CSAqIFdlIGFsc28gc2V0IEFjdGl2ZVNuYXBzaG90IHRvIHRoaXMgc25hcCwgc2luY2UgZnVuY3Rp b25zIGluIGluZGV4ZXMgbWF5Ci0JICogbmVlZCBhIHNuYXBzaG90LgotCSAqLwotCXNuYXBzaG90 ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCVB1c2hBY3Rp dmVTbmFwc2hvdChzbmFwc2hvdCk7CiAJLyoKIAkgKiBNZXJnZSBjb250ZW50IG9mIGF1eGlsaWFy eSBhbmQgdGFyZ2V0IGluZGV4ZXMgLSBpbnNlcnQgYW55IG1pc3NpbmcgaW5kZXggZW50cmllcy4K IAkgKi8KLQl2YWxpZGF0ZV9pbmRleCh0YWJsZUlkLCBpbmRleFJlbGF0aW9uSWQsIGF1eEluZGV4 UmVsYXRpb25JZCwgc25hcHNob3QpOwotCWxpbWl0WG1pbiA9IHNuYXBzaG90LT54bWluOworCWxp bWl0WG1pbiA9IHZhbGlkYXRlX2luZGV4KHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCwgYXV4SW5k ZXhSZWxhdGlvbklkKTsKIAotCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0JVW5yZWdpc3RlclNuYXBz aG90KHNuYXBzaG90KTsKIAkvKgogCSAqIFRoZSBzbmFwc2hvdCBzdWJzeXN0ZW0gY291bGQgc3Rp bGwgY29udGFpbiByZWdpc3RlcmVkIHNuYXBzaG90cyB0aGF0CiAJICogYXJlIGhvbGRpbmcgYmFj ayBvdXIgcHJvY2VzcydzIGFkdmVydGlzZWQgeG1pbjsgaW4gcGFydGljdWxhciwgaWYKQEAgLTE4 NTIsOCArMTgzMCw4IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCS8qCiAJICogVGhlIGlu ZGV4IGlzIG5vdyB2YWxpZCBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBjb250YWlucyBhbGwgY3VycmVu dGx5CiAJICogaW50ZXJlc3RpbmcgdHVwbGVzLiAgQnV0IHNpbmNlIGl0IG1pZ2h0IG5vdCBjb250 YWluIHR1cGxlcyBkZWxldGVkIGp1c3QKLQkgKiBiZWZvcmUgdGhlIHJlZmVyZW5jZSBzbmFwIHdh cyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKLQkgKiB0cmFuc2FjdGlvbnMgdGhhdCBt aWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KKwkgKiBiZWZvcmUgdGhlIGxhc3Qgc25hcHNob3Qg ZHVyaW5nIHZhbGlkYXRpbmcgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQKKwkgKiBvdXQgYW55 IHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGhhdmUgb2xkZXIgc25hcHNob3RzLgogCSAqLwogCUlO SkVDVElPTl9QT0lOVCgiZGVmaW5lX2luZGV4X2JlZm9yZV9zZXRfdmFsaWQiLCBOVUxMKTsKIAlw Z3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKQEAg LTQ0MDEsNyArNDM3OSw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWlu ZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJewogCQlSZWluZGV4 SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOwogCQlUcmFuc2FjdGlvbklkIGxpbWl0WG1p bjsKLQkJU25hcHNob3QJc25hcHNob3Q7CiAKIAkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK IApAQCAtNDQxNiwxMyArNDM5Myw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCWlmIChu ZXdpZHgtPnNhZmUpCiAJCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwogCi0JCS8qCi0JCSAq IFRha2UgdGhlICJyZWZlcmVuY2Ugc25hcHNob3QiIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHZhbGlk YXRlX2luZGV4KCkKLQkJICogdG8gZmlsdGVyIGNhbmRpZGF0ZSB0dXBsZXMuCi0JCSAqLwotCQlz bmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJ UHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKLQogCQkvKgogCQkgKiBVcGRhdGUgcHJvZ3Jl c3MgZm9yIHRoZSBpbmRleCB0byBidWlsZCwgd2l0aCB0aGUgY29ycmVjdCBwYXJlbnQKIAkJICog dGFibGUgaW52b2x2ZWQuCkBAIC00NDM0LDE2ICs0NDA0LDggQEAgUmVpbmRleFJlbGF0aW9uQ29u Y3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0 IFJlaW4KIAkJcHJvZ3Jlc3NfdmFsc1szXSA9IG5ld2lkeC0+YW1JZDsKIAkJcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSg0LCBwcm9ncmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7 CiAKLQkJdmFsaWRhdGVfaW5kZXgobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmluZGV4SWQsIG5l d2lkeC0+YXV4SW5kZXhJZCwgc25hcHNob3QpOwotCi0JCS8qCi0JCSAqIFdlIGNhbiBub3cgZG8g YXdheSB3aXRoIG91ciBhY3RpdmUgc25hcHNob3QsIHdlIHN0aWxsIG5lZWQgdG8gc2F2ZQotCQkg KiB0aGUgeG1pbiBsaW1pdCB0byB3YWl0IGZvciBvbGRlciBzbmFwc2hvdHMuCi0JCSAqLwotCQls aW1pdFhtaW4gPSBzbmFwc2hvdC0+eG1pbjsKLQotCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCQlV bnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOworCQlsaW1pdFhtaW4gPSB2YWxpZGF0ZV9pbmRl eChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+aW5kZXhJZCwgbmV3aWR4LT5hdXhJbmRleElkKTsK KwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCQkvKgog CQkgKiBUbyBlbnN1cmUgbm8gZGVhZGxvY2tzLCB3ZSBtdXN0IGNvbW1pdCBhbmQgc3RhcnQgeWV0 IGFub3RoZXIKQEAgLTQ0NTYsNyArNDQxOCw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRs eShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJ CS8qCiAJCSAqIFRoZSBpbmRleCBpcyBub3cgdmFsaWQgaW4gdGhlIHNlbnNlIHRoYXQgaXQgY29u dGFpbnMgYWxsIGN1cnJlbnRseQogCQkgKiBpbnRlcmVzdGluZyB0dXBsZXMuICBCdXQgc2luY2Ug aXQgbWlnaHQgbm90IGNvbnRhaW4gdHVwbGVzIGRlbGV0ZWQKLQkJICoganVzdCBiZWZvcmUgdGhl IHJlZmVyZW5jZSBzbmFwIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKKwkJICog anVzdCBiZWZvcmUgdGhlIGxhdGVzdCBzbmFwIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91 dCBhbnkKIAkJICogdHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgaGF2ZSBvbGRlciBzbmFwc2hvdHMu CiAJCSAqCiAJCSAqIEJlY2F1c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IG9yIFhpZCBpbiB0 aGlzIHRyYW5zYWN0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggMjI0NDZiMzIxNTcuLjVmYTYw ZThlMzdiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTcwMiwxMiArNzAyLDExIEBAIHR5cGVkZWYg c3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJCQkJCQkJCQkJICAgVGFibGVTY2FuRGVzYyBzY2FuKTsK IAogCS8qIHNlZSB0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuIGZvciByZWZlcmVuY2UgYWJvdXQg cGFyYW1ldGVycyAqLwotCXZvaWQJCSgqaW5kZXhfdmFsaWRhdGVfc2NhbikgKFJlbGF0aW9uIHRh YmxlX3JlbCwKLQkJCQkJCQkJCQlSZWxhdGlvbiBpbmRleF9yZWwsCi0JCQkJCQkJCQkJSW5kZXhJ bmZvICppbmRleF9pbmZvLAotCQkJCQkJCQkJCVNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJCQkJ CVZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUsCi0JCQkJCQkJCQkJVmFsaWRhdGVJbmRleFN0YXRl ICphdXhfc3RhdGUpOworCVRyYW5zYWN0aW9uSWQgCQkoKmluZGV4X3ZhbGlkYXRlX3NjYW4pIChS ZWxhdGlvbiB0YWJsZV9yZWwsCisJCQkJCQkJCQkJCQlSZWxhdGlvbiBpbmRleF9yZWwsCisJCQkJ CQkJCQkJCQlJbmRleEluZm8gKmluZGV4X2luZm8sCisJCQkJCQkJCQkJCQlWYWxpZGF0ZUluZGV4 U3RhdGUgKnN0YXRlLAorCQkJCQkJCQkJCQkJVmFsaWRhdGVJbmRleFN0YXRlICphdXhfc3RhdGUp OwogCiAKIAkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE4MDgsMjAgKzE4MDcsMTggQEAgdGFibGVf aW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCiAgKiBOb3RlOiBpdCBp cyByZXNwb25zaWJpbGl0eSBvZiB0aGF0IGZ1bmN0aW9uIHRvIGNsb3NlIHNvcnRzdGF0ZXMgaW4K ICAqIGJvdGggYHN0YXRlYCBhbmQgYGF1eHN0YXRlYC4KICAqLwotc3RhdGljIGlubGluZSB2b2lk CitzdGF0aWMgaW5saW5lIFRyYW5zYWN0aW9uSWQKIHRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4o UmVsYXRpb24gdGFibGVfcmVsLAogCQkJCQkJICBSZWxhdGlvbiBpbmRleF9yZWwsCiAJCQkJCQkg IEluZGV4SW5mbyAqaW5kZXhfaW5mbywKLQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJ CQkgIFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUsCiAJCQkJCQkgIFZhbGlkYXRlSW5kZXhTdGF0 ZSAqYXV4c3RhdGUpCiB7Ci0JdGFibGVfcmVsLT5yZF90YWJsZWFtLT5pbmRleF92YWxpZGF0ZV9z Y2FuKHRhYmxlX3JlbCwKLQkJCQkJCQkJCQkJICAgaW5kZXhfcmVsLAotCQkJCQkJCQkJCQkgICBp bmRleF9pbmZvLAotCQkJCQkJCQkJCQkgICBzbmFwc2hvdCwKLQkJCQkJCQkJCQkJICAgc3RhdGUs Ci0JCQkJCQkJCQkJCSAgIGF1eHN0YXRlKTsKKwlyZXR1cm4gdGFibGVfcmVsLT5yZF90YWJsZWFt LT5pbmRleF92YWxpZGF0ZV9zY2FuKHRhYmxlX3JlbCwKKwkJCQkJCQkJCQkJCQkgIGluZGV4X3Jl bCwKKwkJCQkJCQkJCQkJCQkgIGluZGV4X2luZm8sCisJCQkJCQkJCQkJCQkJICBzdGF0ZSwKKwkJ CQkJCQkJCQkJCQkgIGF1eHN0YXRlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvdHJhbnNhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaAppbmRleCA3ZDgy Y2QyZWI1Ni4uMTVlMzQ1YzdhMTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFu c2FtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaApAQCAtMzU1LDYgKzM1NSwy MSBAQCBOb3JtYWxUcmFuc2FjdGlvbklkT2xkZXIoVHJhbnNhY3Rpb25JZCBhLCBUcmFuc2FjdGlv bklkIGIpCiAJcmV0dXJuIGI7CiB9CiAKKy8qIHJldHVybiB0aGUgbmV3ZXIgb2YgdGhlIHR3byBJ RHMgKi8KK3N0YXRpYyBpbmxpbmUgVHJhbnNhY3Rpb25JZAorVHJhbnNhY3Rpb25JZE5ld2VyKFRy YW5zYWN0aW9uSWQgYSwgVHJhbnNhY3Rpb25JZCBiKQoreworCWlmICghVHJhbnNhY3Rpb25JZElz VmFsaWQoYSkpCisJCXJldHVybiBiOworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChiKSkK KwkJcmV0dXJuIGE7CisKKwlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MoYSwgYikpCisJCXJldHVy biBhOworCXJldHVybiBiOworfQorCiAvKiByZXR1cm4gdGhlIG5ld2VyIG9mIHRoZSB0d28gSURz ICovCiBzdGF0aWMgaW5saW5lIEZ1bGxUcmFuc2FjdGlvbklkCiBGdWxsVHJhbnNhY3Rpb25JZE5l d2VyKEZ1bGxUcmFuc2FjdGlvbklkIGEsIEZ1bGxUcmFuc2FjdGlvbklkIGIpCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4 LmgKaW5kZXggZDUxYjRlOGNkMTMuLjZjNzgwNjgxOTY3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL2luZGV4LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCkBAIC0x NTIsNyArMTUyLDcgQEAgZXh0ZXJuIHZvaWQgaW5kZXhfYnVpbGQoUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCQkJCQkJYm9vbCBpc3JlaW5kZXgsCiAJCQkJCQlib29sIHBhcmFsbGVsKTsKIAotZXh0 ZXJuIHZvaWQgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJ bmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCk7CitleHRlcm4gVHJhbnNhY3Rpb25JZCB2YWxpZGF0 ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQpOwogCiBleHRl cm4gdm9pZCBpbmRleF9zZXRfc3RhdGVfZmxhZ3MoT2lkIGluZGV4SWQsIEluZGV4U3RhdGVGbGFn c0FjdGlvbiBhY3Rpb24pOwogCi0tIAoyLjQzLjAKCg== --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="v24-0002-Add-stress-tests-for-concurrent-index-builds.patch" Content-Disposition: attachment; filename="v24-0002-Add-stress-tests-for-concurrent-index-builds.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm0q7 RnJvbSA3MGI4ZTYxNDdjZWJjYzQyN2I0ZGY0MTljYWM3Y2M3ZjkwNTY5NzNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI0IDAyLzEyXSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IGJ1 aWxkcwoKSW50cm9kdWNlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRp b25zOgotIHRlc3QgY29uY3VycmVudCBpbnNlcnRzL3VwZGF0ZXMgZHVyaW5nIENSRUFURS9SRUlO REVYIElOREVYIENPTkNVUlJFTlRMWQotIGNvdmVyIHZhcmlvdXMgaW5kZXggdHlwZXMgKGJ0cmVl LCBnaW4sIGdpc3QsIGJyaW4sIGhhc2gsIHNwZ2lzdCkKLSB0ZXN0IHVuaXF1ZSBhbmQgbm9uLXVu aXF1ZSBpbmRleGVzCi0gdGVzdCB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzCi0gdGVz dCBib3RoIHBhcmFsbGVsIGFuZCBub24tcGFyYWxsZWwgb3BlcmF0aW9ucwoKVGhlc2UgdGVzdHMg dmVyaWZ5IHRoZSBiZWhhdmlvciBvZiB0aGUgZm9sbG93aW5nIGNvbW1pdHMuCi0tLQogc3JjL2Jp bi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkICB8ICAgMSArCiBzcmMvYmluL3BnX2FtY2hlY2svdC8w MDZfY2ljLnBsIHwgMjIzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVz IGNoYW5nZWQsIDIyNCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9w Z19hbWNoZWNrL3QvMDA2X2NpYy5wbAoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYW1jaGVjay9t ZXNvbi5idWlsZCBiL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5idWlsZAppbmRleCAzMTZlYTBk NDBiOC4uN2RmMTU0MzVmYmIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5i dWlsZAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQKQEAgLTI4LDYgKzI4LDcg QEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDAzX2NoZWNrLnBsJywKICAgICAgICd0LzAwNF92ZXJp ZnlfaGVhcGFtLnBsJywKICAgICAgICd0LzAwNV9vcGNsYXNzX2RhbWFnZS5wbCcsCisgICAgICAn dC8wMDZfY2ljLnBsJywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19h bWNoZWNrL3QvMDA2X2NpYy5wbCBiL3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJhYWQwZThkYWE4Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA2X2NpYy5wbApAQCAtMCwwICsxLDIy MyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisKKyMgVGVzdCBSRUlOREVYIENPTkNVUlJFTlRMWSB3aXRoIGNvbmN1cnJlbnQgbW9k aWZpY2F0aW9ucyBhbmQgSE9UIHVwZGF0ZXMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFU QUwgPT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK1Rlc3Q6Ok1vcmUtPmJ1aWxk ZXItPnRvZG9fc3RhcnQoJ2ZpbGVzeXN0ZW0gYnVnJykKKyAgaWYgUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM6Omhhc193YWxfcmVhZF9idWc7CisKK215ICgkbm9kZSwgJHJlc3VsdCk7CisKKyMKKyMg VGVzdCBzZXQtdXAKKyMKKyRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdS Q190ZXN0Jyk7Ciskbm9kZS0+aW5pdDsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywKKwknbG9ja190aW1lb3V0ID0gJyAuICgxMDAwICogJFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOjp0aW1lb3V0X2RlZmF1bHQpKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywgJ2ZzeW5jID0gb2ZmJyk7Ciskbm9kZS0+c3RhcnQ7Ciskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHEoQ1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrKSk7Ciskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHEoQ1JFQVRFIFRBQkxFIHRibChpIGludCBwcmltYXJ5IGtleSwKKwkJCQkJ CQkJYzEgbW9uZXkgZGVmYXVsdCAwLCBjMiBtb25leSBkZWZhdWx0IDAsCisJCQkJCQkJCWMzIG1v bmV5IGRlZmF1bHQgMCwgdXBkYXRlZF9hdCB0aW1lc3RhbXAsCisJCQkJCQkJCWlhIGludDRbXSwg cCBwb2ludCkpKTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCk7KSk7CisjIGNyZWF0ZSBzZXF1 ZW5jZQorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBVTkxPR0dFRCBTRVFV RU5DRSBpbl9yb3dfcmVidWlsZCBTVEFSVCAxIElOQ1JFTUVOVCAxOykpOworJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxKFNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpOykpOwor CisjIENyZWF0ZSBoZWxwZXIgZnVuY3Rpb25zIGZvciBwcmVkaWNhdGUgdGVzdHMKKyRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcSgKKwlDUkVBVEUgRlVOQ1RJT04gcHJlZGljYXRlX3N0YWJs ZSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwlMQU5HVUFHRSBwbHBnc3FsIEFTICQkCisJQkVH SU4KKwkJRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKwkJUkVUVVJOIHRydWU7CisJ RU5EOyAkJDsKKykpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoCisJQ1JFQVRF IEZVTkNUSU9OIHByZWRpY2F0ZV9jb25zdChpbnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxF CisJTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorCUJFR0lOCisJCVJFVFVSTiBNT0QoJDEsIDIpID0g MDsKKwlFTkQ7ICQkOworKSk7CisKKyMgUnVuIENJQy9SSUMgaW4gZGlmZmVyZW50IG9wdGlvbnMg Y29uY3VycmVudGx5IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2goCisJJy0tbm8tdmFjdXVt IC0tY2xpZW50PTMwIC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5zYWN0aW9ucz0yNTAw JywKKwkwLAorCVtxcnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7XiR9XSwKKwknY29uY3Vy cmVudCBvcGVyYXRpb25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZJywK Kwl7CisJCSdjb25jdXJyZW50X29wcycgPT4gcSgKKwkJCVNFVCBkZWJ1Z19wYXJhbGxlbF9xdWVy eSA9IG9mZjsgLS0gdGhpcyBpcyBiZWNhdXNlIHByZWRpY2F0ZV9zdGFibGUgaW1wbGVtZW50YXRp b24KKwkJCVNFTEVDVCBwZ190cnlfYWR2aXNvcnlfbG9jayg0Mik6OmludGVnZXIgQVMgZ290bG9j ayBcZ3NldAorCQkJXGlmIDpnb3Rsb2NrCisJCQkJU0VMRUNUIG5leHR2YWwoJ2luX3Jvd19yZWJ1 aWxkJykgQVMgbGFzdF92YWx1ZSBcZ3NldAorCQkJCVxzZXQgdmFyaWFudCByYW5kb20oMCwgNSkK KwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAz CisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7 CisJCQkJCVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkg bmV3X2lkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMQor CQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChpLCB1cGRhdGVk X2F0KSBXSEVSRSBwcmVkaWNhdGVfc3RhYmxlKCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMgor CQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChpLCB1cGRhdGVk X2F0KSBXSEVSRSBNT0QoaSwgMikgPSAwOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJ CUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCkg V0hFUkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDQKKwkJCQkJ CUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwocHJlZGljYXRlX2NvbnN0 KGkpKTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSA1CisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIG5ld19pZHggT04gdGJsKGksIHByZWRpY2F0ZV9jb25zdChpKSwgdXBkYXRlZF9hdCkg V0hFUkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlcZW5kaWYKKwkJCQkJXHNsZWVwIDEwIG1z CisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnbmV3X2lkeCcsIGhlYXBhbGxpbmRleGVkID0+ IHRydWUsIGNoZWNrdW5pcXVlID0+IHRydWUpOworCQkJCQlSRUlOREVYIElOREVYIENPTkNVUlJF TlRMWSBuZXdfaWR4OworCQkJCQlcc2xlZXAgMTAgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4X2No ZWNrKCduZXdfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1 ZSk7CisJCQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJXGVuZGlmCisJ CQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCQlcZWxzZQorCQkJCVxzZXQgbnVt IHJhbmRvbSgxMDAwLCAxMDAwMDApCisJCQkJQkVHSU47CisJCQkJSU5TRVJUIElOVE8gdGJsIFZB TFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1Qo aSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJs IFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJ Q1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8g dGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09O RkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElO VE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04g Q09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJU IElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJ T04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJU0VM RUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAxKTsKKwkJCQlDT01NSVQ7CisJCQlcZW5kaWYK KwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoVFJVTkNBVEUgVEFC TEUgdGJsOykpOworCisjIFJ1biBDSUMvUklDIGZvciB1bmlxdWUgaW5kZXggY29uY3VycmVudGx5 IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2goCisJJy0tbm8tdmFjdXVtIC0tY2xpZW50PTMw IC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5zYWN0aW9ucz0yNTAwJywKKwkwLAorCVtx cnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7XiR9XSwKKwknY29uY3VycmVudCBvcGVyYXRp b25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGZvciB1bmlxdWUgQlRS RUUnLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzX3VuaXF1ZV9pZHgnID0+IHEoCisJCQlTRUxFQ1Qg cGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxp ZiA6Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3Rf dmFsdWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxh c3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9 OnBhcmFsbGVscyk7CisJCQkJCUNSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19p ZHggT04gdGJsKGkpOworCQkJCQlcc2xlZXAgMTAgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4X2No ZWNrKCduZXdfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1 ZSk7CisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJCVxzbGVl cCAxMCBtcworCQkJCQlTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ25ld19pZHgnLCBoZWFwYWxsaW5k ZXhlZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgbmV3X2lkeDsKKwkJCQlcZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5s b2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJXHNldCBudW0gcmFuZG9tKDEsIHBvd2VyKDEwLCByYW5k b20oMSwgNSkpKQorCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51 bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRl ZF9hdCA9IG5vdygpOworCQkJCVNFTEVDVCBzZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJ CQlcZW5kaWYKKwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoVFJV TkNBVEUgVEFCTEUgdGJsOykpOworCisjIFJ1biBDSUMvUklDIGZvciBHSU4gd2l0aCB1cHNlcnRz Ciskbm9kZS0+cGdiZW5jaCgKKwknLS1uby12YWN1dW0gLS1jbGllbnQ9MzAgLS1qb2JzPTQgLS1l eGl0LW9uLWFib3J0IC0tdHJhbnNhY3Rpb25zPTI1MDAnLAorCTAsCisJW3Fye2FjdHVhbGx5IHBy b2Nlc3NlZH1dLAorCVtxcnteJH1dLAorCSdjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlO REVYL0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgZm9yIEdJTi9HSVNUL0JSSU4vSEFTSC9TUEdJ U1QnLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzX2dpbl9pZHgnID0+IHEoCisJCQlTRUxFQ1QgcGdf dHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6 Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3RfdmFs dWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3Rf dmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBh cmFsbGVscyk7CisJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0Ymwg VVNJTkcgR0lOIChpYSk7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxFQ1QgZ2luX2luZGV4 X2NoZWNrKCduZXdfaWR4Jyk7CisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5ld19p ZHg7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxFQ1QgZ2luX2luZGV4X2NoZWNrKCduZXdf aWR4Jyk7CisJCQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJXGVuZGlm CisJCQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCQlcZWxzZQorCQkJCVxzZXQg bnVtIHJhbmRvbSgxLCBwb3dlcigxMCwgcmFuZG9tKDEsIDUpKSkKKwkJCQlJTlNFUlQgSU5UTyB0 YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5vdygpKQorCQkJCQlPTiBDT05G TElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKKwkJCQlTRUxFQ1Qgc2V0 dmFsKCdpbl9yb3dfcmVidWlsZCcsIDEpOworCQkJXGVuZGlmCisJCSkKKwl9KTsKKworJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFRSVU5DQVRFIFRBQkxFIHRibDspKTsKKworIyBSdW4g Q0lDL1JJQyBmb3IgR0lTVC9CUklOL0hBU0gvU1BHSVNUIGluZGV4IGNvbmN1cnJlbnRseSB3aXRo IHVwc2VydHMKKyRub2RlLT5wZ2JlbmNoKAorCSctLW5vLXZhY3V1bSAtLWNsaWVudD0zMCAtLWpv YnM9NCAtLWV4aXQtb24tYWJvcnQgLS10cmFuc2FjdGlvbnM9MjUwMCcsCisJMCwKKwlbcXJ7YWN0 dWFsbHkgcHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3 aXRoIFJFSU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBmb3IgR0lOL0dJU1QvQlJJTi9I QVNIL1NQR0lTVCcsCisJeworCQknY29uY3VycmVudF9vcHNfb3RoZXJfaWR4JyA9PiBxKAorCQkJ U0VMRUNUIHBnX3RyeV9hZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0 CisJCQlcaWYgOmdvdGxvY2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBB UyBsYXN0X3ZhbHVlIFxnc2V0CisJCQkJXHNldCBwYXJhbGxlbHMgcmFuZG9tKDAsIDQpCisJCQkJ XGlmIDpsYXN0X3ZhbHVlIDwgMworCQkJCQlBTFRFUiBUQUJMRSB0YmwgU0VUIChwYXJhbGxlbF93 b3JrZXJzPTpwYXJhbGxlbHMpOworCQkJCQlcc2V0IHZhcmlhbnQgcmFuZG9tKDAsIDMpCisJCQkJ CVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lk eCBPTiB0YmwgVVNJTkcgR0lTVCAocCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMQorCQkJCQkJ Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibCBVU0lORyBCUklOICh1cGRh dGVkX2F0KTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSAyCisJCQkJCQlDUkVBVEUgSU5ERVggQ09O Q1VSUkVOVExZIG5ld19pZHggT04gdGJsIFVTSU5HIEhBU0ggKHVwZGF0ZWRfYXQpOworCQkJCQlc ZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lk eCBPTiB0YmwgVVNJTkcgU1BHSVNUIChwKTsKKwkJCQkJXGVuZGlmCisJCQkJCVxzbGVlcCAxMCBt cworCQkJCQlSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4OworCQkJCQlcc2xlZXAg MTAgbXMKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeDsKKwkJCQlcZW5kaWYK KwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJXHNldCBu dW0gcmFuZG9tKDEsIHBvd2VyKDEwLCByYW5kb20oMSwgNSkpKQorCQkJCUlOU0VSVCBJTlRPIHRi bCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZM SUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCVNFTEVDVCBzZXR2 YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlcZW5kaWYKKwkJKQorCX0pOworCiskbm9kZS0+ c3RvcDsKK2RvbmVfdGVzdGluZygpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIu NDMuMAoK --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="v24-0003-Reset-snapshots-periodically-in-non-unique-non-p.patch" Content-Disposition: attachment; filename="v24-0003-Reset-snapshots-periodically-in-non-unique-non-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm0s8 RnJvbSAxOWI4ODQyZDliZGQ4ZGEzZDVhODhlYTQ2NmZiNjQ2NTg3NTBhZTE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAyMToxMDoyMyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI0IDAzLzEyXSBSZXNldCBzbmFwc2hvdHMgcGVyaW9kaWNhbGx5IGluIG5vbi11bmlx dWUKIG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcwoKTG9uZy1saXZpbmcgc25h cHNob3RzIHVzZWQgYnkgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBDT05D VVJSRU5UTFkgY2FuIGhvbGQgYmFjayB0aGUgZ2xvYmFsIHhtaW4gaG9yaXpvbi4gQ29tbWl0IGQ5 ZDA3NjIyMmY1YiBhdHRlbXB0ZWQgdG8gYWxsb3cgVkFDVVVNIHRvIGlnbm9yZSBzdWNoIHNuYXBz aG90cyB0byBtaXRpZ2F0ZSB0aGlzIHByb2JsZW0uIEhvd2V2ZXIsIHRoaXMgd2FzIHJldmVydGVk IGluIGNvbW1pdCBlMjhiYjg4NTE5NjkgYmVjYXVzZSBpdCBjb3VsZCBjYXVzZSBpbmRleGVzIHRv IG1pc3MgaGVhcCB0dXBsZXMgdGhhdCB3ZXJlIEhPVC11cGRhdGVkIGFuZCBIT1QtcHJ1bmVkIGR1 cmluZyB0aGUgaW5kZXggY3JlYXRpb24sIGxlYWRpbmcgdG8gaW5kZXggY29ycnVwdGlvbi4KClRo aXMgcGF0Y2ggaW50cm9kdWNlcyBhbiBhbHRlcm5hdGl2ZSBieSBwZXJpb2RpY2FsbHkgcmVzZXR0 aW5nIHRoZSBzbmFwc2hvdCB1c2VkIGR1cmluZyB0aGUgZmlyc3QgcGhhc2UuIEJ5IHJlc2V0dGlu ZyB0aGUgc25hcHNob3QgZXZlcnkgTiBwYWdlcyBkdXJpbmcgdGhlIGhlYXAgc2NhbiwgaXQgYWxs b3dzIHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4KCkN1cnJlbnRseSwgdGhpcyB0ZWNobmlx dWUgaXMgYXBwbGllZCB0bzoKCi0gb25seSBkdXJpbmcgdGhlIGZpcnN0IHNjYW4gb2YgdGhlIGhl YXA6IFRoZSBzZWNvbmQgc2NhbiBkdXJpbmcgaW5kZXggdmFsaWRhdGlvbiBzdGlsbCB1c2VzIGEg c2luZ2xlIHNuYXBzaG90IHRvIGVuc3VyZSBpbmRleCBjb3JyZWN0bmVzcwotIG5vbi1wYXJhbGxl bCBpbmRleCBidWlsZHM6IFBhcmFsbGVsIGluZGV4IGJ1aWxkcyBhcmUgbm90IHlldCBzdXBwb3J0 ZWQgYW5kIHdpbGwgYmUgYWRkcmVzc2VkIGluIGEgZm9sbG93aW5nIGNvbW1pdHMKLSBub24tdW5p cXVlIGluZGV4ZXM6IFVuaXF1ZSBpbmRleCBidWlsZHMgc3RpbGwgcmVxdWlyZSBhIGNvbnNpc3Rl bnQgc25hcHNob3QgdG8gZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLCB3aWxsIGJlIGFk ZHJlc3NlZCBpbiBhIGZvbGxvd2luZyBjb21taXRzCgpBIG5ldyBzY2FuIG9wdGlvbiBTT19SRVNF VF9TTkFQU0hPVCBpcyBpbnRyb2R1Y2VkLiBXaGVuIHNldCwgaXQgY2F1c2VzIHRoZSBzbmFwc2hv dCB0byBiZSByZXNldCAiYmV0d2VlbiIgZXZlcnkgU09fUkVTRVRfU05BUFNIT1RfRUFDSF9OX1BB R0UgcGFnZXMgZHVyaW5nIHRoZSBzY2FuLiBUaGUgaGVhcCBzY2FuIGNvZGUgaXMgYWRqdXN0ZWQg dG8gc3VwcG9ydCB0aGlzIG9wdGlvbiwgYW5kIHRoZSBpbmRleCBidWlsZCBjb2RlIGlzIG1vZGlm aWVkIHRvIHVzZSBpdCBmb3IgYXBwbGljYWJsZSBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0aGF0 IGFyZSBub3Qgb24gc3lzdGVtIGNhdGFsb2dzIGFuZCBub3QgdXNpbmcgcGFyYWxsZWwgd29ya2Vy cy4KLS0tCiBjb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jICAgICAgICAgICAgICAgfCAg IDMgKy0KIGNvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYyAgICAgICAgICAgICB8ICAg MiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwgIDE5 ICsrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgICAgICAgICAgICB8ICAy MSArKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyAgICAgICAgICAgfCAg IDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICA0NSAr KysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwg IDU3ICsrKysrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jICAgICAgICAg ICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAg ICAgIHwgIDMwICsrKystCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jICAg ICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAg ICAgIHwgIDMwICsrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAg ICAgICAgfCAgMTQgKy0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAg ICAgICAgfCAgIDkgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICAg ICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAg ICAgfCAgMjggKysrKy0KIHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmls ZSAgICB8ICAgMiArLQogLi4uL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0ICAgICAg ICAgIHwgMTA1ICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL21lc29uLmJ1aWxkIHwgICAxICsKIC4uLi9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5z cWwgICAgICAgICAgICAgICB8ICA4NiArKysrKysrKysrKysrKwogMjAgZmlsZXMgY2hhbmdlZCwg NDI3IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNo b3RzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKCmRpZmYgLS1naXQgYS9jb250cmliL2Ft Y2hlY2svdmVyaWZ5X25idHJlZS5jIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwpp bmRleCAyNDQ1ZjAwMTcwMC4uMjVhMzJhMTM1NjUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVj ay92ZXJpZnlfbmJ0cmVlLmMKKysrIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwpA QCAtNTU4LDcgKzU1OCw4IEBAIGJ0X2NoZWNrX2V2ZXJ5X2xldmVsKFJlbGF0aW9uIHJlbCwgUmVs YXRpb24gaGVhcHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsCiAJCQkJCQkJCQkgMCwgLyogbnVtYmVy IG9mIGtleXMgKi8KIAkJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJCQkJIHRy dWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJCSB0cnVlKTsgLyog c3luY3NjYW4gT0s/ICovCisJCQkJCQkJCQkgdHJ1ZSwgLyogc3luY3NjYW4gT0s/ICovCisJCQkJ CQkJCQkgZmFsc2UpOwogCiAJCS8qCiAJCSAqIFNjYW4gd2lsbCBiZWhhdmUgYXMgdGhlIGZpcnN0 IHNjYW4gb2YgYSBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZCmRpZmYgLS1naXQgYS9jb250cmli L3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1 cGxlLmMKaW5kZXggYjVkZTY4YjcyMzIuLjMzMWI0ZjJiOTE2IDEwMDY0NAotLS0gYS9jb250cmli L3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKKysrIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0 YXR0dXBsZS5jCkBAIC0zMzUsNyArMzM1LDcgQEAgcGdzdGF0X2hlYXAoUmVsYXRpb24gcmVsLCBG dW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKIAkJCQkgZXJybXNnKCJvbmx5IGhlYXAgQU0gaXMgc3Vw cG9ydGVkIikpKTsKIAogCS8qIERpc2FibGUgc3luY3NjYW4gYmVjYXVzZSB3ZSBhc3N1bWUgd2Ug c2NhbiBmcm9tIGJsb2NrIHplcm8gdXB3YXJkcyAqLwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5f c3RyYXQocmVsLCBTbmFwc2hvdEFueSwgMCwgTlVMTCwgdHJ1ZSwgZmFsc2UpOworCXNjYW4gPSB0 YWJsZV9iZWdpbnNjYW5fc3RyYXQocmVsLCBTbmFwc2hvdEFueSwgMCwgTlVMTCwgdHJ1ZSwgZmFs c2UsIGZhbHNlKTsKIAloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47CiAKIAlJbml0RGlydHlT bmFwc2hvdChTbmFwc2hvdERpcnR5KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRleCA3ZmY3NDY3 ZTQ2Mi4uMTg2ZWRkMGQyMjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTEyMTYsMTEgKzEy MTYsMTIgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleElu Zm8gKmluZGV4SW5mbykKIAkJc3RhdGUtPmJzX3NvcnRzdGF0ZSA9CiAJCQl0dXBsZXNvcnRfYmVn aW5faW5kZXhfYnJpbihtYWludGVuYW5jZV93b3JrX21lbSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJ CSAgIFRVUExFU09SVF9OT05FKTsKLQorCQlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CiAJ CS8qIHNjYW4gdGhlIHJlbGF0aW9uIGFuZCBtZXJnZSBwZXItd29ya2VyIHJlc3VsdHMgKi8KIAkJ cmVsdHVwbGVzID0gX2JyaW5fcGFyYWxsZWxfbWVyZ2Uoc3RhdGUpOwogCiAJCV9icmluX2VuZF9w YXJhbGxlbChzdGF0ZS0+YnNfbGVhZGVyLCBzdGF0ZSk7CisJCUFzc2VydCghaW5kZXhJbmZvLT5p aV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9 CiAJZWxzZQkJCQkJCS8qIG5vIHBhcmFsbGVsIGluZGV4IGJ1aWxkICovCiAJewpAQCAtMTIzMyw2 ICsxMjM0LDcgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRl eEluZm8gKmluZGV4SW5mbykKIAkJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2Nhbiho ZWFwLCBpbmRleCwgaW5kZXhJbmZvLCBmYWxzZSwgdHJ1ZSwKIAkJCQkJCQkJCQkgICBicmluYnVp bGRDYWxsYmFjaywgc3RhdGUsIE5VTEwpOwogCisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKIAkJLyoKIAkJICogcHJvY2VzcyB0aGUgZmluYWwgYmF0Y2gKIAkJICoKQEAgLTEyNTIsNiAr MTI1NCw3IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJ bmZvICppbmRleEluZm8pCiAJCWJyaW5fZmlsbF9lbXB0eV9yYW5nZXMoc3RhdGUsCiAJCQkJCQkJ ICAgc3RhdGUtPmJzX2N1cnJSYW5nZVN0YXJ0LAogCQkJCQkJCSAgIHN0YXRlLT5ic19tYXhSYW5n ZVN0YXJ0KTsKKwkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAogCS8qIHJlbGVhc2UgcmVzb3VyY2Vz ICovCkBAIC0yMzc0LDYgKzIzNzcsNyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJV2FsVXNh Z2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRl cnBhcnRpY2lwYXRlcyA9IHRydWU7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0g dHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQ QVRJT04KQEAgLTIzOTksOSArMjQwMywxNiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVp bGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICog bGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKKwl7CisJ CUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsK KwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJfQogCWVsc2UKKwl7CiAJCXNu YXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlQ dXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAKIAkvKgog CSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JSSU5fU0hBUkVEIHdv cmtzcGFjZS4KQEAgLTI0NDQsNiArMjQ1NSw4IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5C dWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkv KiBJZiBubyBEU00gc2VnbWVudCB3YXMgYXZhaWxhYmxlLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1 aWxkKSAqLwogCWlmIChwY3h0LT5zZWcgPT0gTlVMTCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlpZiAoSXNNVkNDU25hcHNo b3Qoc25hcHNob3QpKQogCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJv eVBhcmFsbGVsQ29udGV4dChwY3h0KTsKQEAgLTI1MjMsNiArMjUzNiw4IEBAIF9icmluX2JlZ2lu X3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxh dGlvbiBpbmRleCwKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUgc3VjY2Vzc2Z1bGx5IGxhdW5jaGVk LCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5ud29ya2Vyc19sYXVu Y2hlZCA9PSAwKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CiAJCV9icmluX2VuZF9wYXJhbGxlbChicmlubGVhZGVyLCBOVUxMKTsK IAkJcmV0dXJuOwogCX0KQEAgLTI1MzksNiArMjU1NCw4IEBAIF9icmluX2JlZ2luX3BhcmFsbGVs KEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRl eCwKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5n IGZvcmV2ZXIuCiAJICovCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOwor CWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCBlOWQ0YjI3NDI3ZS4uMmY5 NDdkMzY2MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpAQCAtMjgsNiArMjgsNyBA QAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNs dWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtNjQ2LDYgKzY0Nyw4IEBAIGdpbmJ1aWxkKFJlbGF0 aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAlidWlsZHN0 YXRlLmFjY3VtLmdpbnN0YXRlID0gJmJ1aWxkc3RhdGUuZ2luc3RhdGU7CiAJZ2luSW5pdEJBKCZi dWlsZHN0YXRlLmFjY3VtKTsKIAorCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8 IGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhpZCkpOworCiAJLyogUmVwb3J0IHRhYmxlIHNjYW4gcGhhc2Ugc3RhcnRlZCAqLwog CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNF LAogCQkJCQkJCQkgUFJPR1JFU1NfR0lOX1BIQVNFX0lOREVYQlVJTERfVEFCTEVTQ0FOKTsKQEAg LTcwOCwxMSArNzExLDEzIEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9naW4oaGVh cCwgaW5kZXgsCiAJCQkJCQkJCQkgIG1haW50ZW5hbmNlX3dvcmtfbWVtLCBjb29yZGluYXRlLAog CQkJCQkJCQkJICBUVVBMRVNPUlRfTk9ORSk7CisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKIAogCQkvKiBzY2FuIHRoZSByZWxhdGlvbiBpbiBwYXJhbGxlbCBhbmQgbWVyZ2UgcGVyLXdv cmtlciByZXN1bHRzICovCiAJCXJlbHR1cGxlcyA9IF9naW5fcGFyYWxsZWxfbWVyZ2Uoc3RhdGUp OwogCiAJCV9naW5fZW5kX3BhcmFsbGVsKHN0YXRlLT5ic19sZWFkZXIsIHN0YXRlKTsKKwkJQXNz ZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOwogCX0KIAllbHNlCQkJCQkJLyogbm8gcGFyYWxsZWwgaW5kZXggYnVpbGQg Ki8KIAl7CkBAIC03MjIsNiArNzI3LDcgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkgKi8KIAkJcmVsdHVwbGVzID0gdGFi bGVfaW5kZXhfYnVpbGRfc2NhbihoZWFwLCBpbmRleCwgaW5kZXhJbmZvLCBmYWxzZSwgdHJ1ZSwK IAkJCQkJCQkJCQkgICBnaW5CdWlsZENhbGxiYWNrLCAmYnVpbGRzdGF0ZSwgTlVMTCk7CisJCUlu dmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAogCQkvKiBkdW1wIHJlbWFpbmluZyBlbnRyaWVz IHRvIHRoZSBpbmRleCAqLwogCQlvbGRDdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oYnVpbGRz dGF0ZS50bXBDdHgpOwpAQCAtNzM1LDYgKzc0MSw3IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJCQkJCSAgIGxpc3QsIG5s aXN0LCAmYnVpbGRzdGF0ZS5idWlsZFN0YXRzKTsKIAkJfQogCQlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkQ3R4KTsKKwkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAogCU1lbW9yeUNvbnRleHREZWxl dGUoYnVpbGRzdGF0ZS5mdW5jQ3R4KTsKQEAgLTkwNyw2ICs5MTQsNyBAQCBfZ2luX2JlZ2luX3Bh cmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2Fn ZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOworCWJvb2wJCW5lZWRfcG9wX2Fj dGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxF X0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC05MzEsOSArOTM5LDE2IEBAIF9naW5fYmVnaW5fcGFy YWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsCiAJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlzY29uY3Vy cmVudCkKKwl7CisJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNob3QgPSBT bmFwc2hvdEFueTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJfQogCWVs c2UKKwl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBz aG90KCkpOworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK Kwl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0dJ Tl9TSEFSRUQgd29ya3NwYWNlLgpAQCAtOTc2LDYgKzk5MSw4IEBAIF9naW5fYmVnaW5fcGFyYWxs ZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsCiAJLyogSWYgbm8gRFNNIHNlZ21lbnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQgKGRvIHNl cmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAobmVlZF9w b3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYgKElzTVZD Q1NuYXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJ CURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CkBAIC0xMDUwLDYgKzEwNjcsOCBAQCBfZ2lu X2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LAogCS8qIElmIG5vIHdvcmtlcnMgd2VyZSBzdWNjZXNzZnVsbHkgbGF1 bmNoZWQsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPm53b3JrZXJz X2xhdW5jaGVkID09IDApCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJ UG9wQWN0aXZlU25hcHNob3QoKTsKIAkJX2dpbl9lbmRfcGFyYWxsZWwoZ2lubGVhZGVyLCBOVUxM KTsKIAkJcmV0dXJuOwogCX0KQEAgLTEwNjYsNiArMTA4NSw4IEBAIF9naW5fYmVnaW5fcGFyYWxs ZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3QgaGFu ZyBmb3JldmVyLgogCSAqLwogCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0KTsK KwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwppbmRleCA5YjJlYzk4MTVmMS4u YmZjMjc0NzQ0MzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWls ZC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCkBAIC00Myw2ICs0 Myw3IEBACiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWxrX3dyaXRlLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCiAKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUg InV0aWxzL3JlbC5oIgpAQCAtMjU5LDYgKzI2MCw3IEBAIGdpc3RidWlsZChSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJYnVpbGRzdGF0ZS5pbmR0 dXBsZXMgPSAwOwogCWJ1aWxkc3RhdGUuaW5kdHVwbGVzU2l6ZSA9IDA7CiAKKwlBc3NlcnQoIWlu ZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54 aWQpKTsKIAlpZiAoYnVpbGRzdGF0ZS5idWlsZE1vZGUgPT0gR0lTVF9TT1JURURfQlVJTEQpCiAJ ewogCQkvKgpAQCAtMzUwLDYgKzM1Miw3IEBAIGdpc3RidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxh dGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVz ID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gKGRvdWJsZSkgYnVpbGRzdGF0 ZS5pbmR0dXBsZXM7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaC5jCmluZGV4IDUzMDYxYzgxOWZiLi4zNzExYmFlYTA1MiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oYXNoL2hhc2guYwpAQCAtMTk3LDYgKzE5Nyw3IEBAIGhhc2hidWlsZChSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBf dHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gYnVpbGRzdGF0ZS5p bmR0dXBsZXM7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYwppbmRleCBlZDBjMGMyZGM5Zi4uZDczOTY4NDc1YzAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAidXRpbHMvaW52 YWwuaCIKICNpbmNsdWRlICJ1dGlscy9zcGNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2Nh Y2hlLmgiCisjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAKIAogc3RhdGljIEhl YXBUdXBsZSBoZWFwX3ByZXBhcmVfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUg dHVwLApAQCAtNjMzLDYgKzYzNCwzNiBAQCBoZWFwX3ByZXBhcmVfcGFnZXNjYW4oVGFibGVTY2Fu RGVzYyBzc2NhbikKIAlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIH0K IAorLyoKKyAqIFJlc2V0IHRoZSBhY3RpdmUgc25hcHNob3QgZHVyaW5nIGEgc2Nhbi4KKyAqIFRo aXMgZW5zdXJlcyB0aGUgeG1pbiBob3Jpem9uIGNhbiBhZHZhbmNlIHdoaWxlIG1haW50YWluaW5n IHNhZmUgdHVwbGUgdmlzaWJpbGl0eS4KKyAqIE5vdGU6IE5vIG90aGVyIHNuYXBzaG90IHNob3Vs ZCBiZSBhY3RpdmUgZHVyaW5nIHRoaXMgb3BlcmF0aW9uLgorICovCitzdGF0aWMgaW5saW5lIHZv aWQKK2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdChUYWJsZVNjYW5EZXNjIHNzY2FuKQoreworCS8q IE1ha2Ugc3VyZSBubyBvdGhlciBzbmFwc2hvdCB3YXMgc2V0IGFzIGFjdGl2ZS4gKi8KKwlBc3Nl cnQoR2V0QWN0aXZlU25hcHNob3QoKSA9PSBzc2Nhbi0+cnNfc25hcHNob3QpOworCS8qIEFuZCBt YWtlIHN1cmUgYWN0aXZlIHNuYXBzaG90IGlzIG5vdCByZWdpc3RlcmVkLiAqLworCUFzc2VydChH ZXRBY3RpdmVTbmFwc2hvdCgpLT5yZWdkX2NvdW50ID09IDApOworCVBvcEFjdGl2ZVNuYXBzaG90 KCk7CisKKwlzc2Nhbi0+cnNfc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7IC8qIGp1c3Qgb3Qg YmUgdGlkeSAqLworCUFzc2VydCghSGF2ZVJlZ2lzdGVyZWRPckFjdGl2ZVNuYXBzaG90KCkpOwor CUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKworCS8qIEdvYWwgb2Ygc25hcHNob3QgcmVz ZXQgaXMgdG8gYWxsb3cgaG9yaXpvbiB0byBhZHZhbmNlLiAqLworCUFzc2VydCghVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisjaWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwkv KiBJbiBzb21lIGNhc2VzIGl0IGlzIHN0aWxsIG5vdCBwb3NzaWJsZSBkdWUgeGlkIGFzc2lnbi4g Ki8KKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSkKKwkJSU5KRUNUSU9O X1BPSU5UKCJoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlIiwgTlVMTCk7CisjZW5k aWYKKworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwlzc2Nhbi0+ cnNfc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOworfQorCiAvKgogICogaGVhcF9mZXRj aF9uZXh0X2J1ZmZlciAtIHJlYWQgYW5kIHBpbiB0aGUgbmV4dCBibG9jayBmcm9tIE1BSU5fRk9S S05VTS4KICAqCkBAIC02NzQsNyArNzA1LDEyIEBAIGhlYXBfZmV0Y2hfbmV4dF9idWZmZXIoSGVh cFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogCiAJc2Nhbi0+cnNfY2J1ZiA9IHJl YWRfc3RyZWFtX25leHRfYnVmZmVyKHNjYW4tPnJzX3JlYWRfc3RyZWFtLCBOVUxMKTsKIAlpZiAo QnVmZmVySXNWYWxpZChzY2FuLT5yc19jYnVmKSkKKwl7CiAJCXNjYW4tPnJzX2NibG9jayA9IEJ1 ZmZlckdldEJsb2NrTnVtYmVyKHNjYW4tPnJzX2NidWYpOworCQlpZiAoKHNjYW4tPnJzX2Jhc2Uu cnNfZmxhZ3MgJiBTT19SRVNFVF9TTkFQU0hPVCkgJiYKKwkJCShzY2FuLT5yc19jYmxvY2sgJSBT T19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSA9PSAwKSkKKwkJCWhlYXBfcmVzZXRfc2Nhbl9z bmFwc2hvdCgoVGFibGVTY2FuRGVzYykgc2Nhbik7CisJfQogfQogCiAvKgpAQCAtMTMzNiw2ICsx MzcyLDE1IEBAIGhlYXBfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCWlmIChzY2FuLT5y c19wYXJhbGxlbHdvcmtlcmRhdGEgIT0gTlVMTCkKIAkJcGZyZWUoc2Nhbi0+cnNfcGFyYWxsZWx3 b3JrZXJkYXRhKTsKIAorCWlmIChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fUkVTRVRfU05B UFNIT1QpCisJeworCQlBc3NlcnQoIShzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fVEVNUF9T TkFQU0hPVCkpOworCQkvKiBNYWtlIHN1cmUgbm8gb3RoZXIgc25hcHNob3Qgd2FzIHNldCBhcyBh Y3RpdmUuICovCisJCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpID09IHNzY2FuLT5yc19zbmFw c2hvdCk7CisJCS8qIEFuZCBtYWtlIHN1cmUgc25hcHNob3QgaXMgbm90IHJlZ2lzdGVyZWQuICov CisJCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpLT5yZWdkX2NvdW50ID09IDApOworCX0KKwog CWlmIChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fVEVNUF9TTkFQU0hPVCkKIAkJVW5yZWdp c3RlclNuYXBzaG90KHNjYW4tPnJzX2Jhc2UucnNfc25hcHNob3QpOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBiY2JhYzg0NGJiNi4uZTMyZWU3Mzk3MzMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTE5NCw2ICsx MTk0LDggQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCUV4cHJDb250ZXh0ICplY29udGV4dDsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKIAlib29s CQluZWVkX3VucmVnaXN0ZXJfc25hcHNob3QgPSBmYWxzZTsKKwlib29sCQluZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QgPSBmYWxzZTsKKwlib29sCQlyZXNldF9zbmFwc2hvdHMgPSBmYWxzZTsKIAlU cmFuc2FjdGlvbklkIE9sZGVzdFhtaW47CiAJQmxvY2tOdW1iZXIgcHJldmlvdXNfYmxrbm8gPSBJ bnZhbGlkQmxvY2tOdW1iZXI7CiAJQmxvY2tOdW1iZXIgcm9vdF9ibGtubyA9IEludmFsaWRCbG9j a051bWJlcjsKQEAgLTEyMjgsOSArMTIzMCw2IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9z Y2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkvKiBBcnJhbmdlIGZvciBlY29udGV4dCdzIHNj YW4gdHVwbGUgdG8gYmUgdGhlIHR1cGxlIHVuZGVyIHRlc3QgKi8KIAllY29udGV4dC0+ZWN4dF9z Y2FudHVwbGUgPSBzbG90OwogCi0JLyogU2V0IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgcHJlZGlj YXRlLCBpZiBhbnkuICovCi0JcHJlZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5mby0+ aWlfUHJlZGljYXRlLCBlc3RhdGUpOwotCiAJLyoKIAkgKiBQcmVwYXJlIGZvciBzY2FuIG9mIHRo ZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQogCSAqIFNu YXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBkbyBvdXIg b3duIHRpbWUKQEAgLTEyNDAsNiArMTIzOSwxNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vf c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRU cmFuc2FjdGlvbklkOwogCisJLyoKKwkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5lZWQgY29uc2lz dGVudCBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCisJICogSW4gY2FzZSBvZiBwYXJhbGxl bCBzY2FuIHNvbWUgYWRkaXRpb25hbCBpbmZyYXN0cnVjdHVyZSByZXF1aXJlZAorCSAqIHRvIHBl cmZvcm0gc2NhbiB3aXRoIFNPX1JFU0VUX1NOQVBTSE9UIHdoaWNoIGlzIG5vdCB5ZXQgcmVhZHku CisJICovCisJcmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ICYmCisJ CQkJCSAgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmCisJCQkJCSAgIWlzX3N5c3RlbV9jYXRhbG9n OyAvKiBqdXN0IGZvciB0aGUgY2FzZSAqLworCiAJLyogb2theSB0byBpZ25vcmUgbGF6eSBWQUNV VU1zIGhlcmUgKi8KIAlpZiAoIUlzQm9vdHN0cmFwUHJvY2Vzc2luZ01vZGUoKSAmJiAhaW5kZXhJ bmZvLT5paV9Db25jdXJyZW50KQogCQlPbGRlc3RYbWluID0gR2V0T2xkZXN0Tm9uUmVtb3ZhYmxl VHJhbnNhY3Rpb25JZChoZWFwUmVsYXRpb24pOwpAQCAtMTI0OCwyNCArMTI1Niw0MSBAQCBoZWFw YW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJewogCQkv KgogCQkgKiBTZXJpYWwgaW5kZXggYnVpbGQuCi0JCSAqCi0JCSAqIE11c3QgYmVnaW4gb3VyIG93 biBoZWFwIHNjYW4gaW4gdGhpcyBjYXNlLiAgV2UgbWF5IGFsc28gbmVlZCB0bwotCQkgKiByZWdp c3RlciBhIHNuYXBzaG90IHdob3NlIGxpZmV0aW1lIGlzIHVuZGVyIG91ciBkaXJlY3QgY29udHJv bC4KIAkJICovCiAJCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoT2xkZXN0WG1pbikpCiAJCXsK LQkJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkp OwotCQkJbmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90ID0gdHJ1ZTsKKwkJCXNuYXBzaG90ID0gR2V0 VHJhbnNhY3Rpb25TbmFwc2hvdCgpOworCQkJLyoKKwkJCSAqIE11c3QgYmVnaW4gb3VyIG93biBo ZWFwIHNjYW4gaW4gdGhpcyBjYXNlLiAgV2UgbWF5IGFsc28gbmVlZCB0bworCQkJICogcmVnaXN0 ZXIgYSBzbmFwc2hvdCB3aG9zZSBsaWZldGltZSBpcyB1bmRlciBvdXIgZGlyZWN0IGNvbnRyb2wu CisJCQkgKiBJbiBjYXNlIG9mIHJlc2V0dGluZyBvZiBzbmFwc2hvdCBkdXJpbmcgdGhlIHNjYW4g cmVnaXN0cmF0aW9uIGlzCisJCQkgKiBub3QgYWxsb3dlZCBiZWNhdXNlIHNuYXBzaG90IGlzIGdv aW5nIHRvIGJlIGNoYW5nZWQgZXZlcnkgc28KKwkJCSAqIG9mdGVuLgorCQkJICovCisJCQlpZiAo IXJlc2V0X3NuYXBzaG90cykKKwkJCXsKKwkJCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3Qo c25hcHNob3QpOworCQkJCW5lZWRfdW5yZWdpc3Rlcl9zbmFwc2hvdCA9IHRydWU7CisJCQl9CisJ CQlBc3NlcnQoIUFjdGl2ZVNuYXBzaG90U2V0KCkpOworCQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNu YXBzaG90KTsKKwkJCS8qIHN0b3JlIGxpbmsgdG8gc25hcHNob3QgYmVjYXVzZSBpdCBtYXkgYmUg Y29waWVkICovCisJCQlzbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CisJCQluZWVkX3Bv cF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOwogCQl9CiAJCWVsc2UKKwkJeworCQkJQXNzZXJ0KCFp bmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOwogCQkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKKwkJ fQogCiAJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoaGVhcFJlbGF0aW9uLAkvKiByZWxh dGlvbiAqLwogCQkJCQkJCQkJIHNuYXBzaG90LAkvKiBzbmFwc2hvdCAqLwogCQkJCQkJCQkJIDAs IC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJ CQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCQkg YWxsb3dfc3luYyk7CS8qIHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIGFsbG93X3N5bmMsCS8q IHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIHJlc2V0X3NuYXBzaG90cyAvKiByZXNldCBzbmFw c2hvdHM/ICovKTsKIAl9CiAJZWxzZQogCXsKQEAgLTEyNzksNiArMTMwNCw4IEBAIGhlYXBhbV9p bmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJQXNzZXJ0KCFJ c0Jvb3RzdHJhcFByb2Nlc3NpbmdNb2RlKCkpOwogCQlBc3NlcnQoYWxsb3dfc3luYyk7CiAJCXNu YXBzaG90ID0gc2Nhbi0+cnNfc25hcHNob3Q7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hv dCk7CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJfQogCiAJaHNjYW4gPSAo SGVhcFNjYW5EZXNjKSBzY2FuOwpAQCAtMTI5Myw2ICsxMzIwLDEzIEBAIGhlYXBhbV9pbmRleF9i dWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlBc3NlcnQoc25hcHNob3Qg PT0gU25hcHNob3RBbnkgPyBUcmFuc2FjdGlvbklkSXNWYWxpZChPbGRlc3RYbWluKSA6CiAJCSAg ICFUcmFuc2FjdGlvbklkSXNWYWxpZChPbGRlc3RYbWluKSk7CiAJQXNzZXJ0KHNuYXBzaG90ID09 IFNuYXBzaG90QW55IHx8ICFhbnl2aXNpYmxlKTsKKwlBc3NlcnQoc25hcHNob3QgPT0gU25hcHNo b3RBbnkgfHwgQWN0aXZlU25hcHNob3RTZXQoKSk7CisKKwkvKiBTZXQgdXAgZXhlY3V0aW9uIHN0 YXRlIGZvciBwcmVkaWNhdGUsIGlmIGFueS4gKi8KKwlwcmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1 YWwoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7CisJLyogQ2xlYXIgcmVmZXJlbmNl IHRvIHNuYXBzaG90IHNpbmNlIGl0IG1heSBiZSBjaGFuZ2VkIGJ5IHRoZSBzY2FuIGl0c2VsZi4g Ki8KKwlpZiAocmVzZXRfc25hcHNob3RzKQorCQlzbmFwc2hvdCA9IEludmFsaWRTbmFwc2hvdDsK IAogCS8qIFB1Ymxpc2ggbnVtYmVyIG9mIGJsb2NrcyB0byBzY2FuICovCiAJaWYgKHByb2dyZXNz KQpAQCAtMTcyOCw2ICsxNzYyLDggQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogCiAJdGFibGVfZW5kc2NhbihzY2FuKTsKIAorCWlmIChuZWVk X3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJLyogd2UgY2Fu IG5vdyBmb3JnZXQgb3VyIHNuYXBzaG90LCBpZiBzZXQgYW5kIHJlZ2lzdGVyZWQgYnkgdXMgKi8K IAlpZiAobmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90KQogCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25h cHNob3QpOwpAQCAtMTgwMCw3ICsxODM2LDggQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4o UmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8K IAkJCQkJCQkJIE5VTEwsCS8qIHNjYW4ga2V5ICovCiAJCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIg YWNjZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCSBmYWxzZSk7CS8qIHN5bmNzY2FuIG5vdCBP SyAqLworCQkJCQkJCQkgZmFsc2UsCS8qIHN5bmNzY2FuIG5vdCBPSyAqLworCQkJCQkJCQkgZmFs c2UpOwogCWhzY2FuID0gKEhlYXBTY2FuRGVzYykgc2NhbjsKIAogCXBnc3RhdF9wcm9ncmVzc191 cGRhdGVfcGFyYW0oUFJPR1JFU1NfU0NBTl9CTE9DS1NfVE9UQUwsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9n ZW5hbS5jCmluZGV4IDBjYjI3YWYxMzEwLi5jOWM1MzA0NDc0OCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4 L2dlbmFtLmMKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzeXN0YWJsZV9iZWdpbnNjYW4oUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCQkgKi8KIAkJc3lzc2Nhbi0+c2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9z dHJhdChoZWFwUmVsYXRpb24sIHNuYXBzaG90LAogCQkJCQkJCQkJCQkgIG5rZXlzLCBrZXksCi0J CQkJCQkJCQkJCSAgdHJ1ZSwgZmFsc2UpOworCQkJCQkJCQkJCQkgIHRydWUsIGZhbHNlLCBmYWxz ZSk7CiAJCXN5c3NjYW4tPmlzY2FuID0gTlVMTDsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKaW5kZXggODgyOGE3YThmODkuLjdiMDlhZDg3OGI3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHNvcnQuYwpAQCAtMjU5LDcgKzI1OSw3IEBAIHN0YXRpYyBkb3VibGUgX2J0X3Nw b29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHN0YXRpYyB2b2lk IF9idF9zcG9vbGRlc3Ryb3koQlRTcG9vbCAqYnRzcG9vbCk7CiBzdGF0aWMgdm9pZCBfYnRfc3Bv b2woQlRTcG9vbCAqYnRzcG9vbCwgSXRlbVBvaW50ZXIgc2VsZiwKIAkJCQkJICBEYXR1bSAqdmFs dWVzLCBib29sICppc251bGwpOwotc3RhdGljIHZvaWQgX2J0X2xlYWZidWlsZChCVFNwb29sICpi dHNwb29sLCBCVFNwb29sICpidHNwb29sMik7CitzdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJU U3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cyk7 CiBzdGF0aWMgdm9pZCBfYnRfYnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2lu dGVyIHRpZCwgRGF0dW0gKnZhbHVlcywKIAkJCQkJCQkgICBib29sICppc251bGwsIGJvb2wgdHVw bGVJc0FsaXZlLCB2b2lkICpzdGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVmZmVyIF9idF9ibG5l d3BhZ2UoQlRXcml0ZVN0YXRlICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBAIC0zMjIsMTggKzMy MiwyMiBAQCBidGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8g KmluZGV4SW5mbykKIAkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRleCkpOwogCiAJcmVs dHVwbGVzID0gX2J0X3Nwb29sc19oZWFwc2NhbihoZWFwLCBpbmRleCwgJmJ1aWxkc3RhdGUsIGlu ZGV4SW5mbyk7CisJQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4 SW5mby0+aWlfVW5pcXVlIHx8CisJCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAqIEZpbmlzaCB0aGUg YnVpbGQgYnkgKDEpIGNvbXBsZXRpbmcgdGhlIHNvcnQgb2YgdGhlIHNwb29sIGZpbGUsICgyKQog CSAqIGluc2VydGluZyB0aGUgc29ydGVkIHR1cGxlcyBpbnRvIGJ0cmVlIHBhZ2VzIGFuZCAoMykg YnVpbGRpbmcgdGhlIHVwcGVyCiAJICogbGV2ZWxzLiAgRmluYWxseSwgaXQgbWF5IGFsc28gYmUg bmVjZXNzYXJ5IHRvIGVuZCB1c2Ugb2YgcGFyYWxsZWxpc20uCiAJICovCi0JX2J0X2xlYWZidWls ZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMik7CisJX2J0X2xlYWZidWlsZChi dWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWluZGV4SW5mby0+aWlfUGFyYWxs ZWxXb3JrZXJzICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CiAJX2J0X3Nwb29sZGVzdHJv eShidWlsZHN0YXRlLnNwb29sKTsKIAlpZiAoYnVpbGRzdGF0ZS5zcG9vbDIpCiAJCV9idF9zcG9v bGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9vbDIpOwogCWlmIChidWlsZHN0YXRlLmJ0bGVhZGVyKQog CQlfYnRfZW5kX3BhcmFsbGVsKGJ1aWxkc3RhdGUuYnRsZWFkZXIpOworCUFzc2VydChpbmRleElu Zm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fAorCQkgICFp bmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eG1pbikpOwogCiAJcmVzdWx0ID0gKEluZGV4QnVpbGRSZXN1bHQgKikgcGFsbG9jKHNpemVvZihJ bmRleEJ1aWxkUmVzdWx0KSk7CiAKQEAgLTQ4MSw2ICs0ODUsOSBAQCBfYnRfc3Bvb2xzX2hlYXBz Y2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsCiAJZWxzZQogCQlyZWx0dXBsZXMgPSBfYnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRzdGF0 ZSwKIAkJCQkJCQkJCQkgICZpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluKTsKKwlJbnZhbGlk YXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3Jr ZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8CisJCSAgIWluZGV4SW5mby0+aWlfQ29uY3Vy cmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAq IFNldCB0aGUgcHJvZ3Jlc3MgdGFyZ2V0IGZvciB0aGUgbmV4dCBwaGFzZS4gIFJlc2V0IHRoZSBi bG9jayBudW1iZXIKQEAgLTUzNiw3ICs1NDMsNyBAQCBfYnRfc3Bvb2woQlRTcG9vbCAqYnRzcG9v bCwgSXRlbVBvaW50ZXIgc2VsZiwgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsKQogICogY3Jl YXRlIGFuIGVudGlyZSBidHJlZS4KICAqLwogc3RhdGljIHZvaWQKLV9idF9sZWFmYnVpbGQoQlRT cG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCitfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wg KmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cykKIHsKIAlC VFdyaXRlU3RhdGUgd3N0YXRlOwogCkBAIC01NTgsMTggKzU2NSwyMSBAQCBfYnRfbGVhZmJ1aWxk KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCQkJCQkJCQkJIFBST0dSRVNT X0JUUkVFX1BIQVNFX1BFUkZPUk1TT1JUXzIpOwogCQl0dXBsZXNvcnRfcGVyZm9ybXNvcnQoYnRz cG9vbDItPnNvcnRzdGF0ZSk7CiAJfQorCUFzc2VydCghcmVzZXRfc25hcHNob3RzIHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXdzdGF0ZS5oZWFwID0gYnRzcG9v bC0+aGVhcDsKIAl3c3RhdGUuaW5kZXggPSBidHNwb29sLT5pbmRleDsKIAl3c3RhdGUuaW5za2V5 ID0gX2J0X21rc2NhbmtleSh3c3RhdGUuaW5kZXgsIE5VTEwpOwogCS8qIF9idF9ta3NjYW5rZXko KSB3b24ndCBzZXQgYWxsZXF1YWxpbWFnZSB3aXRob3V0IG1ldGFwYWdlICovCiAJd3N0YXRlLmlu c2tleS0+YWxsZXF1YWxpbWFnZSA9IF9idF9hbGxlcXVhbGltYWdlKHdzdGF0ZS5pbmRleCwgdHJ1 ZSk7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwogCiAJLyogcmVzZXJ2ZSB0aGUgbWV0 YXBhZ2UgKi8KIAl3c3RhdGUuYnR3c19wYWdlc19hbGxvY2VkID0gQlRSRUVfTUVUQVBBR0UgKyAx OwogCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfU1VC UEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19CVFJFRV9QSEFTRV9MRUFGX0xPQUQpOworCUFzc2Vy dCghcmVzZXRfc25hcHNob3RzIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4p KTsKIAlfYnRfbG9hZCgmd3N0YXRlLCBidHNwb29sLCBidHNwb29sMik7CiB9CiAKQEAgLTE0MTAs NiArMTQyMCw3IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsK IAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0g dHJ1ZTsKKwlib29sCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOwogCWludAkJCXF1 ZXJ5bGVuOwogCiAjaWZkZWYgRElTQUJMRV9MRUFERVJfUEFSVElDSVBBVElPTgpAQCAtMTQzNSw5 ICsxNDQ2LDE2IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBsaXZlIGFjY29yZGluZyB0byB0 aGF0LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBz aG90U2V0KCkpOwogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OworCQluZWVkX3BvcF9hY3RpdmVf c25hcHNob3QgPSBmYWxzZTsKKwl9CiAJZWxzZQorCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChz bmFwc2hvdCk7CisJfQogCiAJLyoKIAkgKiBFc3RpbWF0ZSBzaXplIGZvciBvdXIgb3duIFBBUkFM TEVMX0tFWV9CVFJFRV9TSEFSRUQgd29ya3NwYWNlLCBhbmQKQEAgLTE0OTEsNiArMTUwOSw4IEBA IF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25j dXJyZW50LCBpbnQgcmVxdWVzdCkKIAkvKiBJZiBubyBEU00gc2VnbWVudCB3YXMgYXZhaWxhYmxl LCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5zZWcgPT0gTlVMTCkK IAl7CisJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hv dCgpOwogCQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQogCQkJVW5yZWdpc3RlclNuYXBz aG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29udGV4dChwY3h0KTsKQEAgLTE1ODUs NiArMTYwNSw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUg c3VjY2Vzc2Z1bGx5IGxhdW5jaGVkLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlm IChwY3h0LT5ud29ya2Vyc19sYXVuY2hlZCA9PSAwKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCV9idF9lbmRfcGFyYWxsZWwo YnRsZWFkZXIpOwogCQlyZXR1cm47CiAJfQpAQCAtMTYwMSw2ICsxNjIzLDggQEAgX2J0X2JlZ2lu X3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGlu dCByZXF1ZXN0KQogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwg bm90IGhhbmcgZm9yZXZlci4KIAkgKi8KIAlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2go cGN4dCk7CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNo b3QoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn aW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jCmluZGV4IDZh NjFlMDkzZmEwLi4wNmMwMWNmMzM2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGdpbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2Vy dC5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1bGtfd3JpdGUuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog I2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCkBAIC0xNDMsNiArMTQ0LDcgQEAgc3BnYnVpbGQoUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCXJlc3Vs dCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxvYzAoc2l6ZW9mKEluZGV4QnVpbGRSZXN1bHQp KTsKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVw bGVzID0gYnVpbGRzdGF0ZS5pbmR0dXBsZXM7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1 cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJcmV0dXJu IHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA1ZDlkYjE2N2U1OS4uZWRjMDdiNzIwMTgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMKQEAgLTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlICJ1dGlscy9zbmFw bWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90dXBs ZXNvcnQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKIAogLyogUG90ZW50aWFsbHkgc2V0 IGJ5IHBnX3VwZ3JhZGVfc3VwcG9ydCBmdW5jdGlvbnMgKi8KIE9pZAkJCWJpbmFyeV91cGdyYWRl X25leHRfaW5kZXhfcGdfY2xhc3Nfb2lkID0gSW52YWxpZE9pZDsKQEAgLTE0OTIsOCArMTQ5Myw4 IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAJUmVsYXRp b24JaW5kZXhSZWxhdGlvbjsKIAlJbmRleEluZm8gICppbmRleEluZm87CiAKLQkvKiBUaGlzIGhh ZCBiZXR0ZXIgbWFrZSBzdXJlIHRoYXQgYSBzbmFwc2hvdCBpcyBhY3RpdmUgKi8KLQlBc3NlcnQo QWN0aXZlU25hcHNob3RTZXQoKSk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSk7 CiAKIAkvKiBPcGVuIGFuZCBsb2NrIHRoZSBwYXJlbnQgaGVhcCByZWxhdGlvbiAqLwogCWhlYXBS ZWwgPSB0YWJsZV9vcGVuKGhlYXBSZWxhdGlvbklkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sp OwpAQCAtMTUxMSwxOSArMTUxMiwyOCBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhl YXBSZWxhdGlvbklkLAogCiAJaW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4oaW5kZXhSZWxhdGlv bklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAorCS8qIEJ1aWxkSW5kZXhJbmZvIG1heSByZXF1aXJl IGFzIHNuYXBzaG90IGZvciBleHByZXNzaW9ucyBhbmQgcHJlZGljYXRlcyAqLworCVB1c2hBY3Rp dmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCS8qCiAJICogV2UgaGF2ZSB0 byByZS1idWlsZCB0aGUgSW5kZXhJbmZvIHN0cnVjdCwgc2luY2UgaXQgd2FzIGxvc3QgaW4gdGhl CiAJICogY29tbWl0IG9mIHRoZSB0cmFuc2FjdGlvbiB3aGVyZSB0aGlzIGNvbmN1cnJlbnQgaW5k ZXggd2FzIGNyZWF0ZWQgYXQKIAkgKiB0aGUgY2F0YWxvZyBsZXZlbC4KIAkgKi8KIAlpbmRleElu Zm8gPSBCdWlsZEluZGV4SW5mbyhpbmRleFJlbGF0aW9uKTsKKwkvKiBEb25lIHdpdGggc25hcHNo b3QgKi8KKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCUFzc2VydCghaW5kZXhJbmZvLT5paV9SZWFk eUZvckluc2VydHMpOwogCWluZGV4SW5mby0+aWlfQ29uY3VycmVudCA9IHRydWU7CiAJaW5kZXhJ bmZvLT5paV9Ccm9rZW5Ib3RDaGFpbiA9IGZhbHNlOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKiBOb3cgYnVpbGQgdGhlIGluZGV4ICovCiAJaW5k ZXhfYnVpbGQoaGVhcFJlbCwgaW5kZXhSZWxhdGlvbiwgaW5kZXhJbmZvLCBmYWxzZSwgdHJ1ZSk7 CiAKKwkvKiBJbnZhbGlkYXRlIGNhdGFsb2cgc25hcHNob3QganVzdCBmb3IgYXNzZXJ0ICovCisJ SW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCgoaW5kZXhJbmZvLT5paV9QYXJh bGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUpIHx8ICFUcmFuc2FjdGlvbklkSXNW YWxpZChNeVByb2MtPnhtaW4pKTsKKwogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhl Y3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25l c3RsZXZlbCk7CiAKQEAgLTE1MzQsMTIgKzE1NDQsMTkgQEAgaW5kZXhfY29uY3VycmVudGx5X2J1 aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAl0YWJsZV9jbG9zZShoZWFwUmVsLCBOb0xvY2spOwog CWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7CiAKKwkvKgorCSAqIFVwZGF0aW5n IHBnX2luZGV4IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UK KwkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCisJICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdl dFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJLyoKIAkgKiBVcGRhdGUgdGhlIHBnX2luZGV4IHJv dyB0byBtYXJrIHRoZSBpbmRleCBhcyByZWFkeSBmb3IgaW5zZXJ0cy4gT25jZSB3ZQogCSAqIGNv bW1pdCB0aGlzIHRyYW5zYWN0aW9uLCBhbnkgbmV3IHRyYW5zYWN0aW9ucyB0aGF0IG9wZW4gdGhl IHRhYmxlIG11c3QKIAkgKiBpbnNlcnQgbmV3IGVudHJpZXMgaW50byB0aGUgaW5kZXggZm9yIGlu c2VydGlvbnMgYW5kIG5vbi1IT1QgdXBkYXRlcy4KIAkgKi8KIAlpbmRleF9zZXRfc3RhdGVfZmxh Z3MoaW5kZXhSZWxhdGlvbklkLCBJTkRFWF9DUkVBVEVfU0VUX1JFQURZKTsKKwkvKiB3ZSBjYW4g ZG8gYXdheSB3aXRoIG91ciBzbmFwc2hvdCAqLworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CiAK IC8qCkBAIC0zMjM2LDcgKzMyNTMsOCBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCSBO VUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJh dGVneSBPSyAqLwotCQkJCQkJCQkgdHJ1ZSk7IC8qIHN5bmNzY2FuIE9LICovCisJCQkJCQkJCSB0 cnVlLCAvKiBzeW5jc2NhbiBPSyAqLworCQkJCQkJCQkgZmFsc2UpOwogCiAJd2hpbGUgKHRhYmxl X3NjYW5fZ2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNsb3QpKQogCXsK QEAgLTMyOTksMTIgKzMzMTcsMTYgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAgKiBhcyBvZiB0aGUgc3RhcnQgb2YgdGhlIHNjYW4gKHNlZSB0YWJsZV9pbmRl eF9idWlsZF9zY2FuKSwgd2hlcmVhcyBhIG5vcm1hbAogICogYnVpbGQgdGFrZXMgY2FyZSB0byBp bmNsdWRlIHJlY2VudGx5LWRlYWQgdHVwbGVzLiAgVGhpcyBpcyBPSyBiZWNhdXNlCiAgKiB3ZSB3 b24ndCBtYXJrIHRoZSBpbmRleCB2YWxpZCB1bnRpbCBhbGwgdHJhbnNhY3Rpb25zIHRoYXQgbWln aHQgYmUgYWJsZQotICogdG8gc2VlIHRob3NlIHR1cGxlcyBhcmUgZ29uZS4gIFRoZSByZWFzb24g Zm9yIGRvaW5nIHRoYXQgaXMgdG8gYXZvaWQKKyAqIHRvIHNlZSB0aG9zZSB0dXBsZXMgYXJlIGdv bmUuICBPbmUgb2YgcmVhc29ucyBmb3IgZG9pbmcgdGhhdCBpcyB0byBhdm9pZAogICogYm9ndXMg dW5pcXVlLWluZGV4IGZhaWx1cmVzIGR1ZSB0byBjb25jdXJyZW50IFVQREFURXMgKHdlIG1pZ2h0 IHNlZQogICogZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBzYW1lIHJvdyBhcyBiZWluZyB2YWxp ZCB3aGVuIHdlIHBhc3Mgb3ZlciB0aGVtLAogICogaWYgd2UgdXNlZCBIZWFwVHVwbGVTYXRpc2Zp ZXNWYWN1dW0pLiAgVGhpcyBsZWF2ZXMgdXMgd2l0aCBhbiBpbmRleCB0aGF0CiAgKiBkb2VzIG5v dCBjb250YWluIGFueSB0dXBsZXMgYWRkZWQgdG8gdGhlIHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRo ZSBpbmRleC4KICAqCisgKiBGdXJ0aGVybW9yZSwgaW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4 IHdlIHNldCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlCisgKiBzY2FuLCB3aGljaCBjYXVzZXMg bmV3IHNuYXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFz b24KKyAqIGZvciB0aGF0IGlzIHRvIHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9uIGZvcndhcmQu CisgKgogICogTmV4dCwgd2UgbWFyayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQgc3RpbGwg bm90ICJpbmRpc3ZhbGlkIikgYW5kCiAgKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBh bmQgc3RhcnQgYSB0aGlyZC4gIEFnYWluIHdlIHdhaXQgZm9yIGFsbAogICogdHJhbnNhY3Rpb25z IHRoYXQgY291bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUgdG8gdGVybWluYXRlLiAg Tm93CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IGIxMDQyOWMzNzIxLi5hNzk5NDY1MmVh ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTE2OTMsMjMgKzE2OTMsMTcgQEAgRGVm aW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogY2hhaW5zIGNhbiBiZSBjcmVhdGVkIHdoZXJlIHRo ZSBuZXcgdHVwbGUgYW5kIHRoZSBvbGQgdHVwbGUgaW4gdGhlCiAJICogY2hhaW4gaGF2ZSBkaWZm ZXJlbnQgaW5kZXgga2V5cy4KIAkgKgotCSAqIFdlIG5vdyB0YWtlIGEgbmV3IHNuYXBzaG90LCBh bmQgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdAotCSAqIGFyZSB2aXNpYmxl IGluIHRoaXMgc25hcHNob3QuICBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0 bworCSAqIFdlIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2li bGUgdXNpbmcgc2luZ2xlIG9yCisJICogbXVsdGlwbGUgcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdl IGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCiAJICogdGhlc2UgdHVwbGVzIHdp bGwgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBpbmRleCwgc2luY2UgYW55IHVwZGF0ZXMgbWFkZQog CSAqIGJ5IHRyYW5zYWN0aW9ucyB0aGF0IGRpZG4ndCBrbm93IGFib3V0IHRoZSBpbmRleCBhcmUg bm93IGNvbW1pdHRlZCBvcgogCSAqIHJvbGxlZCBiYWNrLiAgVGh1cywgZWFjaCB2aXNpYmxlIHR1 cGxlIGlzIGVpdGhlciB0aGUgZW5kIG9mIGl0cwogCSAqIEhPVC1jaGFpbiBvciB0aGUgZXh0ZW5z aW9uIG9mIHRoZSBjaGFpbiBpcyBIT1Qtc2FmZSBmb3IgdGhpcyBpbmRleC4KIAkgKi8KIAotCS8q IFNldCBBY3RpdmVTbmFwc2hvdCBzaW5jZSBmdW5jdGlvbnMgaW4gdGhlIGluZGV4ZXMgbWF5IG5l ZWQgaXQgKi8KLQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK LQogCS8qIFBlcmZvcm0gY29uY3VycmVudCBidWlsZCBvZiBpbmRleCAqLwogCWluZGV4X2NvbmN1 cnJlbnRseV9idWlsZCh0YWJsZUlkLCBpbmRleFJlbGF0aW9uSWQpOwogCi0JLyogd2UgY2FuIGRv IGF3YXkgd2l0aCBvdXIgc25hcHNob3QgKi8KLQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCiAJLyoK IAkgKiBDb21taXQgdGhpcyB0cmFuc2FjdGlvbiB0byBtYWtlIHRoZSBpbmRpc3JlYWR5IHVwZGF0 ZSB2aXNpYmxlLgogCSAqLwpAQCAtNDEwNiw5ICs0MTAwLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29u Y3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0 IFJlaW4KIAkJaWYgKG5ld2lkeC0+c2FmZSkKIAkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7 CiAKLQkJLyogU2V0IEFjdGl2ZVNuYXBzaG90IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhl cyBtYXkgbmVlZCBpdCAqLwotCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFw c2hvdCgpKTsKLQogCQkvKgogCQkgKiBVcGRhdGUgcHJvZ3Jlc3MgZm9yIHRoZSBpbmRleCB0byBi dWlsZCwgd2l0aCB0aGUgY29ycmVjdCBwYXJlbnQKIAkJICogdGFibGUgaW52b2x2ZWQuCkBAIC00 MTIzLDcgKzQxMTQsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRl eFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkvKiBQZXJmb3JtIGNv bmN1cnJlbnQgYnVpbGQgb2YgbmV3IGluZGV4ICovCiAJCWluZGV4X2NvbmN1cnJlbnRseV9idWls ZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+aW5kZXhJZCk7CiAKLQkJUG9wQWN0aXZlU25hcHNo b3QoKTsKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggNDFiZDgzNTM0MzAuLjJhMjViYjA2NTRhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRp bHMvc2VsZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKIC8qIEdVQyBwYXJh bWV0ZXJzICovCiBkb3VibGUJCWN1cnNvcl90dXBsZV9mcmFjdGlvbiA9IERFRkFVTFRfQ1VSU09S X1RVUExFX0ZSQUNUSU9OOwpAQCAtNjkyNyw2ICs2OTI4LDcgQEAgcGxhbl9jcmVhdGVfaW5kZXhf d29ya2VycyhPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9pZCkKIAlSZWxhdGlvbgloZWFwOwogCVJl bGF0aW9uCWluZGV4OwogCVJlbE9wdEluZm8gKnJlbDsKKwlib29sCQluZWVkX3BvcF9hY3RpdmVf c25hcHNob3QgPSBmYWxzZTsKIAlpbnQJCQlwYXJhbGxlbF93b3JrZXJzOwogCUJsb2NrTnVtYmVy IGhlYXBfYmxvY2tzOwogCWRvdWJsZQkJcmVsdHVwbGVzOwpAQCAtNjk4Miw2ICs2OTg0LDExIEBA IHBsYW5fY3JlYXRlX2luZGV4X3dvcmtlcnMoT2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQpCiAJ aGVhcCA9IHRhYmxlX29wZW4odGFibGVPaWQsIE5vTG9jayk7CiAJaW5kZXggPSBpbmRleF9vcGVu KGluZGV4T2lkLCBOb0xvY2spOwogCisJLyogU2V0IEFjdGl2ZVNuYXBzaG90IHNpbmNlIGZ1bmN0 aW9ucyBpbiB0aGUgaW5kZXhlcyBtYXkgbmVlZCBpdCAqLworCWlmICghQWN0aXZlU25hcHNob3RT ZXQoKSkgeworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK KwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwl9CiAJLyoKIAkgKiBEZXRlcm1p bmUgaWYgaXQncyBzYWZlIHRvIHByb2NlZWQuCiAJICoKQEAgLTcwMzksNiArNzA0Niw4IEBAIHBs YW5fY3JlYXRlX2luZGV4X3dvcmtlcnMoT2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQpCiAJCXBh cmFsbGVsX3dvcmtlcnMtLTsKIAogZG9uZToKKwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCWluZGV4X2Nsb3NlKGluZGV4LCBOb0xvY2spOwog CXRhYmxlX2Nsb3NlKGhlYXAsIE5vTG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBlNjBkMzRk YWQyNS4uOGIzZWM2NDMwYWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQzLDYgKzQzLDggQEAKICNk ZWZpbmUgSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVwkJKDEgPDwgMCkKICNkZWZpbmUg SEVBUF9QQUdFX1BSVU5FX0ZSRUVaRQkJCQkoMSA8PCAxKQogCisjZGVmaW5lIFNPX1JFU0VUX1NO QVBTSE9UX0VBQ0hfTl9QQUdFCQk0MDk2CisKIHR5cGVkZWYgc3RydWN0IEJ1bGtJbnNlcnRTdGF0 ZURhdGEgKkJ1bGtJbnNlcnRTdGF0ZTsKIHR5cGVkZWYgc3RydWN0IEdsb2JhbFZpc1N0YXRlIEds b2JhbFZpc1N0YXRlOwogdHlwZWRlZiBzdHJ1Y3QgVHVwbGVUYWJsZVNsb3QgVHVwbGVUYWJsZVNs b3Q7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBlMTZiZjAyNTY5Mi4uNzFhZjE0ZDFjMzEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3RhYmxlYW0uaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcmVhZF9z dHJlYW0uaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwc2hv dC5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAKICNkZWZpbmUgREVG QVVMVF9UQUJMRV9BQ0NFU1NfTUVUSE9ECSJoZWFwIgpAQCAtNjMsNiArNjQsMTcgQEAgdHlwZWRl ZiBlbnVtIFNjYW5PcHRpb25zCiAKIAkvKiB1bnJlZ2lzdGVyIHNuYXBzaG90IGF0IHNjYW4gZW5k PyAqLwogCVNPX1RFTVBfU05BUFNIT1QgPSAxIDw8IDksCisJLyoKKwkgKiBSZXNldCBzY2FuIGFu ZCBjYXRhbG9nIHNuYXBzaG90IGV2ZXJ5IHNvIG9mdGVuPyBJZiBzbywgZWFjaAorCSAqIFNPX1JF U0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFIHBhZ2VzIGFjdGl2ZSBzbmFwc2hvdCBpcyBwb3BwZWQs CisJICogY2F0YWxvZyBzbmFwc2hvdCBpbnZhbGlkYXRlZCwgbGF0ZXN0IHNuYXBzaG90IHB1c2hl ZCBhcyBhY3RpdmUuCisJICoKKwkgKiBBdCB0aGUgZW5kIG9mIHRoZSBzY2FuIHNuYXBzaG90IGlz IG5vdCBwb3BwZWQuCisJICogR29hbCBvZiBzdWNoIG1vZGUgaXMga2VlcCB4bWluIHByb3BhZ2F0 aW5nIGhvcml6b24gZm9yd2FyZC4KKwkgKgorCSAqIHNlZSBoZWFwX3Jlc2V0X3NjYW5fc25hcHNo b3QgZm9yIGRldGFpbHMuCisJICovCisJU09fUkVTRVRfU05BUFNIT1QgPSAxIDw8IDEwLAogfQkJ CVNjYW5PcHRpb25zOwogCiAvKgpAQCAtODk5LDcgKzkxMSw4IEBAIGV4dGVybiBUYWJsZVNjYW5E ZXNjIHRhYmxlX2JlZ2luc2Nhbl9jYXRhbG9nKFJlbGF0aW9uIHJlbGF0aW9uLCBpbnQgbmtleXMs CiBzdGF0aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxh dGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkgIGludCBua2V5cywgU2NhbktleURh dGEgKmtleSwKLQkJCQkJICBib29sIGFsbG93X3N0cmF0LCBib29sIGFsbG93X3N5bmMpCisJCQkJ CSAgYm9vbCBhbGxvd19zdHJhdCwgYm9vbCBhbGxvd19zeW5jLAorCQkJCQkgIGJvb2wgcmVzZXRf c25hcHNob3QpCiB7CiAJdWludDMyCQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8IFNPX0FMTE9X X1BBR0VNT0RFOwogCkBAIC05MDcsNiArOTIwLDE1IEBAIHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChS ZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAogCQlmbGFncyB8PSBTT19BTExPV19TVFJB VDsKIAlpZiAoYWxsb3dfc3luYykKIAkJZmxhZ3MgfD0gU09fQUxMT1dfU1lOQzsKKwlpZiAocmVz ZXRfc25hcHNob3QpCisJeworCQlJTkpFQ1RJT05fUE9JTlQoInRhYmxlX2JlZ2luc2Nhbl9zdHJh dF9yZXNldF9zbmFwc2hvdHMiLCBOVUxMKTsKKwkJLyogQWN0aXZlIHNuYXBzaG90IGlzIHJlcXVp cmVkIG9uIHN0YXJ0LiAqLworCQlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKSA9PSBzbmFwc2hv dCk7CisJCS8qIEFjdGl2ZSBzbmFwc2hvdCBzaG91bGQgbm90IGJlIHJlZ2lzdGVyZWQgdG8ga2Vl cCB4bWluIHByb3BhZ2F0aW5nLiAqLworCQlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKS0+cmVn ZF9jb3VudCA9PSAwKTsKKwkJZmxhZ3MgfD0gKFNPX1JFU0VUX1NOQVBTSE9UKTsKKwl9CiAKIAly ZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBr ZXksIE5VTEwsIGZsYWdzKTsKIH0KQEAgLTE3MzksNiArMTc2MSwxMCBAQCB0YWJsZV9zY2FuX2Fu YWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQgT2xkZXN0 WG1pbiwKICAqIHZlcnkgaGFyZCB0byBkZXRlY3Qgd2hldGhlciB0aGV5J3JlIHJlYWxseSBpbmNv bXBhdGlibGUgd2l0aCB0aGUgY2hhaW4gdGlwLgogICogVGhpcyBvbmx5IHJlYWxseSBtYWtlcyBz ZW5zZSBmb3IgaGVhcCBBTSwgaXQgbWlnaHQgbmVlZCB0byBiZSBnZW5lcmFsaXplZAogICogZm9y IG90aGVyIEFNcyBsYXRlci4KKyAqCisgKiBJbiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXggYW5k IG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGJ1aWxkCisgKiBTT19SRVNFVF9TTkFQU0hPVCBpcyBh cHBsaWVkIGZvciB0aGUgc2Nhbi4gVGhhdCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNob3RzCisg KiBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4gaG9yaXpvbiBwcm9wYWdhdGUuCiAgKi8KIHN0YXRp YyBpbmxpbmUgZG91YmxlCiB0YWJsZV9pbmRleF9idWlsZF9zY2FuKFJlbGF0aW9uIHRhYmxlX3Jl bCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmls ZSBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZQppbmRleCBmYzgy Y2Q2N2Y2Yy4uZjRhNjJlZDFjYTcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvTWFrZWZpbGUKQEAgLTExLDcgKzExLDcgQEAgRVhURU5TSU9OID0gaW5qZWN0aW9uX3BvaW50 cwogREFUQSA9IGluamVjdGlvbl9wb2ludHMtLTEuMC5zcWwKIFBHRklMRURFU0MgPSAiaW5qZWN0 aW9uX3BvaW50cyAtIGZhY2lsaXR5IGZvciBpbmplY3Rpb24gcG9pbnRzIgogCi1SRUdSRVNTID0g aW5qZWN0aW9uX3BvaW50cyBoYXNoYWdnIHJlaW5kZXhfY29uYyB2YWN1dW0KK1JFR1JFU1MgPSBp bmplY3Rpb25fcG9pbnRzIGhhc2hhZ2cgcmVpbmRleF9jb25jIHZhY3V1bSBjaWNfcmVzZXRfc25h cHNob3RzCiBSRUdSRVNTX09QVFMgPSAtLWRscGF0aD0kKHRvcF9idWlsZGRpcikvc3JjL3Rlc3Qv cmVncmVzcwogCiBJU09MQVRJT04gPSBiYXNpYyBpbnBsYWNlIHN5c2NhY2hlLXVwZGF0ZS1wcnVu ZWQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3Rl ZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uOTQ4ZDEyMzJhYTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90 cy5vdXQKQEAgLTAsMCArMSwxMDUgQEAKK0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50 czsKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOworIGluamVjdGlvbl9wb2lu dHNfc2V0X2xvY2FsIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hv dF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2F0dGFjaCgndGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cycsICdub3Rp Y2UnKTsKKyBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworQ1JFQVRFIFNDSEVNQSBjaWNfcmVzZXRfc25hcDsKK0NSRUFURSBU QUJMRSBjaWNfcmVzZXRfc25hcC50YmwoaSBpbnQgcHJpbWFyeSBrZXksIGogaW50KTsKK0lOU0VS VCBJTlRPIGNpY19yZXNldF9zbmFwLnRibCBTRUxFQ1QgaSwgaSAqIEkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMjAwKSBzKGkpOworQ1JFQVRFIEZVTkNUSU9OIGNpY19yZXNldF9zbmFwLnByZWRp Y2F0ZV9zdGFibGUoaW50ZWdlcikgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCQkJCQkJCQkJICBM QU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJTgorICAgIEVYRUNVVEUgJ1NFTEVDVCB0eGlkX2N1 cnJlbnQoKSc7CisgICAgUkVUVVJOIE1PRCgkMSwgMikgPSAwOworRU5EOyAkJDsKK0NSRUFURSBG VU5DVElPTiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCkgUkVUVVJO UyBib29sIElNTVVUQUJMRQorCQkJCQkJCQkJICBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJ TgorICAgIEVYRUNVVEUgJ1NFTEVDVCB0eGlkX2N1cnJlbnQoKSc7CisgICAgUkVUVVJOIGZhbHNl OworRU5EOyAkJDsKKy0tLS0tLS0tLS0tLS0tLS0KK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFw LnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9MCk7CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jl c2V0X3NuYXAudGJsKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9u IHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNo b3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVf YmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUK K0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdI RVJFIE1PRChpLCAyKSA9IDA7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFw c2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJs ZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2 ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElO REVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNp Y19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBz aG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBf cmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3Nu YXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJs KGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0 X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9u IHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNo b3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9y ZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworLS0gVGhlIHNhbWUgaW4gcGFyYWxsZWwgbW9kZQorQUxURVIgVEFC TEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0yKTsKK0NSRUFURSBV TklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwgMikgPSAwOworUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04g Y2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9z dGFibGUoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg dGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZl Y3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNj YW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9z bmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibChpIERFU0MgTlVMTFMgTEFTVCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50 YmwgVVNJTkcgQlJJTihpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RS T1AgU0NIRU1BIGNpY19yZXNldF9zbmFwIENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVz IHRvIDMgb3RoZXIgb2JqZWN0cworREVUQUlMOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBjaWNf cmVzZXRfc25hcC50YmwKK2Ryb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gY2ljX3Jlc2V0X3NuYXAu cHJlZGljYXRlX3N0YWJsZShpbnRlZ2VyKQorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBjaWNf cmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCkKK0RST1AgRVhURU5TSU9OIGlu amVjdGlvbl9wb2ludHM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVz b24uYnVpbGQKaW5kZXggMjAzOTBkNmI0YmYuLmJhN2JjMGNjMzg0IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCkBAIC0zOCw2ICszOCw3IEBAIHRl c3RzICs9IHsKICAgICAgICdoYXNoYWdnJywKICAgICAgICdyZWluZGV4X2NvbmMnLAogICAgICAg J3ZhY3V1bScsCisgICAgICAnY2ljX3Jlc2V0X3NuYXBzaG90cycsCiAgICAgXSwKICAgICAncmVn cmVzc19hcmdzJzogWyctLWRscGF0aCcsIG1lc29uLnByb2plY3RfYnVpbGRfcm9vdCgpIC8gJ3Ny Yy90ZXN0L3JlZ3Jlc3MnXSwKICAgICAjIFRoZSBpbmplY3Rpb24gcG9pbnRzIGFyZSBjbHVzdGVy LXdpZGUsIHNvIGRpc2FibGUgaW5zdGFsbGNoZWNrCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTA3MjUzNWIzNTUKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19y ZXNldF9zbmFwc2hvdHMuc3FsCkBAIC0wLDAgKzEsODYgQEAKK0NSRUFURSBFWFRFTlNJT04gaW5q ZWN0aW9uX3BvaW50czsKKworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CitT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9l ZmZlY3RpdmUnLCAnbm90aWNlJyk7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3Rh YmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CisKKworQ1JF QVRFIFNDSEVNQSBjaWNfcmVzZXRfc25hcDsKK0NSRUFURSBUQUJMRSBjaWNfcmVzZXRfc25hcC50 YmwoaSBpbnQgcHJpbWFyeSBrZXksIGogaW50KTsKK0lOU0VSVCBJTlRPIGNpY19yZXNldF9zbmFw LnRibCBTRUxFQ1QgaSwgaSAqIEkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBzKGkpOwor CitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpbnRlZ2Vy KSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwgQVMg JCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBSRVRV Uk4gTU9EKCQxLCAyKSA9IDA7CitFTkQ7ICQkOworCitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0 X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUK KwkJCQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBFWEVDVVRFICdT RUxFQ1QgdHhpZF9jdXJyZW50KCknOworICAgIFJFVFVSTiBmYWxzZTsKK0VORDsgJCQ7CisKKy0t LS0tLS0tLS0tLS0tLS0KK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFs bGVsX3dvcmtlcnM9MCk7CisKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRi bChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hF UkUgTU9EKGksIDIpID0gMDsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKwor Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGop IFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9O IGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVf c3RhYmxlX25vX3BhcmFtKCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisK K0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lO RyBCUklOKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCistLSBUaGUg c2FtZSBpbiBwYXJhbGxlbCBtb2RlCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VU IChwYXJhbGxlbF93b3JrZXJzPTIpOworCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRM WSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiks IGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRi bChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOworUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJl ZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50 YmwoaSBERVNDIE5VTExTIExBU1QpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwg VVNJTkcgQlJJTihpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworRFJP UCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKKworRFJPUCBFWFRFTlNJT04gaW5qZWN0 aW9uX3BvaW50czsKLS0gCjIuNDMuMAoK --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="v24-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Disposition: attachment; filename="v24-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm0o6 RnJvbSBiYWQ4MjZiZWEzNDI0ZTkxZjM4YjA1MjYyMTU3YjBhZTU3NDM3MjNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDowOTo1MiArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI0IDAxLzEyXSBUaGlzIGlzIGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9y Zy81MC81MTYwLwogYW5kIGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9yZy9wYXRjaC81 NDM4LyBtZXJnZWQgaW4gc2luZ2xlIGNvbW1pdC4gaXQKIGlzIHJlcXVpcmVkIGZvciBzdGFiaWxp dHkgb2Ygc3RyZXNzIHRlc3RzLgoKLS0tCiBjb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5j ICAgICAgICB8ICA2OCArKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYyAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMg ICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgfCAxMTkg KysrKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRh YmxlLmMgfCAgIDIgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jICAgfCAx MzUgKysrKysrKysrKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFw bWdyLmMgICAgICAgfCAgIDIgKwogNyBmaWxlcyBjaGFuZ2VkLCAyNDUgaW5zZXJ0aW9ucygrKSwg ODggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRy ZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKaW5kZXggMDk0OWM4ODk4M2Eu LjI0NDVmMDAxNzAwIDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5j CisrKyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKQEAgLTM4Miw3ICszODIsNiBA QCBidF9jaGVja19ldmVyeV9sZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJv b2wgaGVhcGtleXNwYWNlLAogCUJUTWV0YVBhZ2VEYXRhICptZXRhZDsKIAl1aW50MzIJCXByZXZp b3VzbGV2ZWw7CiAJQnRyZWVMZXZlbAljdXJyZW50OwotCVNuYXBzaG90CXNuYXBzaG90ID0gU25h cHNob3RBbnk7CiAKIAlpZiAoIXJlYWRvbmx5KQogCQllbG9nKERFQlVHMSwgInZlcmlmeWluZyBj b25zaXN0ZW5jeSBvZiB0cmVlIHN0cnVjdHVyZSBmb3IgaW5kZXggXCIlc1wiIiwKQEAgLTQzMywz OCArNDMyLDM1IEBAIGJ0X2NoZWNrX2V2ZXJ5X2xldmVsKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24g aGVhcHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsCiAJCXN0YXRlLT5oZWFwdHVwbGVzcHJlc2VudCA9 IDA7CiAKIAkJLyoKLQkJICogUmVnaXN0ZXIgb3VyIG93biBzbmFwc2hvdCBpbiAhcmVhZG9ubHkg Y2FzZSwgcmF0aGVyIHRoYW4gYXNraW5nCisJCSAqIFJlZ2lzdGVyIG91ciBvd24gc25hcHNob3Qg Zm9yIGhlYXBhbGxpbmRleGVkLCByYXRoZXIgdGhhbiBhc2tpbmcKIAkJICogdGFibGVfaW5kZXhf YnVpbGRfc2NhbigpIHRvIGRvIHRoaXMgZm9yIHVzIGxhdGVyLiAgVGhpcyBuZWVkcyB0bwogCQkg KiBoYXBwZW4gYmVmb3JlIGluZGV4IGZpbmdlcnByaW50aW5nIGJlZ2lucywgc28gd2UgY2FuIGxh dGVyIGJlCiAJCSAqIGNlcnRhaW4gdGhhdCBpbmRleCBmaW5nZXJwcmludGluZyBzaG91bGQgaGF2 ZSByZWFjaGVkIGFsbCB0dXBsZXMKIAkJICogcmV0dXJuZWQgYnkgdGFibGVfaW5kZXhfYnVpbGRf c2NhbigpLgogCQkgKi8KLQkJaWYgKCFzdGF0ZS0+cmVhZG9ubHkpCi0JCXsKLQkJCXNuYXBzaG90 ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlzdGF0ZS0+ c25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAK LQkJCS8qCi0JCQkgKiBHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkgYWx3YXlzIGFjcXVpcmVzIGEg bmV3IE1WQ0Mgc25hcHNob3QgaW4KLQkJCSAqIFJFQUQgQ09NTUlUVEVEIG1vZGUuICBBIG5ldyBz bmFwc2hvdCBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYWxsCi0JCQkgKiB0aGUgZW50cmllcyBpdCBy ZXF1aXJlcyBpbiB0aGUgaW5kZXguCi0JCQkgKgotCQkJICogV2UgbXVzdCBkZWZlbmQgYWdhaW5z dCB0aGUgcG9zc2liaWxpdHkgdGhhdCBhbiBvbGQgeGFjdAotCQkJICogc25hcHNob3Qgd2FzIHJl dHVybmVkIGF0IGhpZ2hlciBpc29sYXRpb24gbGV2ZWxzIHdoZW4gdGhhdAotCQkJICogc25hcHNo b3QgaXMgbm90IHNhZmUgZm9yIGluZGV4IHNjYW5zIG9mIHRoZSB0YXJnZXQgaW5kZXguICBUaGlz Ci0JCQkgKiBpcyBwb3NzaWJsZSB3aGVuIHRoZSBzbmFwc2hvdCBzZWVzIHR1cGxlcyB0aGF0IGFy ZSBiZWZvcmUgdGhlCi0JCQkgKiBpbmRleCdzIGluZGNoZWNreG1pbiBob3Jpem9uLiAgVGhyb3dp bmcgYW4gZXJyb3IgaGVyZSBzaG91bGQgYmUKLQkJCSAqIHZlcnkgcmFyZS4gIEl0IGRvZXNuJ3Qg c2VlbSB3b3J0aCB1c2luZyBhIHNlY29uZGFyeSBzbmFwc2hvdCB0bwotCQkJICogYXZvaWQgdGhp cy4KLQkJCSAqLwotCQkJaWYgKElzb2xhdGlvblVzZXNYYWN0U25hcHNob3QoKSAmJiByZWwtPnJk X2luZGV4LT5pbmRjaGVja3htaW4gJiYKLQkJCQkhVHJhbnNhY3Rpb25JZFByZWNlZGVzKEhlYXBU dXBsZUhlYWRlckdldFhtaW4ocmVsLT5yZF9pbmRleHR1cGxlLT50X2RhdGEpLAotCQkJCQkJCQkJ ICAgc25hcHNob3QtPnhtaW4pKQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShF UlJDT0RFX1RfUl9TRVJJQUxJWkFUSU9OX0ZBSUxVUkUpLAotCQkJCQkJIGVycm1zZygiaW5kZXgg XCIlc1wiIGNhbm5vdCBiZSB2ZXJpZmllZCB1c2luZyB0cmFuc2FjdGlvbiBzbmFwc2hvdCIsCi0J CQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7Ci0JCX0KLQl9CisJCS8qCisJ CSAqIEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSBhbHdheXMgYWNxdWlyZXMgYSBuZXcgTVZDQyBz bmFwc2hvdCBpbgorCQkgKiBSRUFEIENPTU1JVFRFRCBtb2RlLiAgQSBuZXcgc25hcHNob3QgaXMg Z3VhcmFudGVlZCB0byBoYXZlIGFsbAorCQkgKiB0aGUgZW50cmllcyBpdCByZXF1aXJlcyBpbiB0 aGUgaW5kZXguCisJCSAqCisJCSAqIFdlIG11c3QgZGVmZW5kIGFnYWluc3QgdGhlIHBvc3NpYmls aXR5IHRoYXQgYW4gb2xkIHhhY3QKKwkJICogc25hcHNob3Qgd2FzIHJldHVybmVkIGF0IGhpZ2hl ciBpc29sYXRpb24gbGV2ZWxzIHdoZW4gdGhhdAorCQkgKiBzbmFwc2hvdCBpcyBub3Qgc2FmZSBm b3IgaW5kZXggc2NhbnMgb2YgdGhlIHRhcmdldCBpbmRleC4gIFRoaXMKKwkJICogaXMgcG9zc2li bGUgd2hlbiB0aGUgc25hcHNob3Qgc2VlcyB0dXBsZXMgdGhhdCBhcmUgYmVmb3JlIHRoZQorCQkg KiBpbmRleCdzIGluZGNoZWNreG1pbiBob3Jpem9uLiAgVGhyb3dpbmcgYW4gZXJyb3IgaGVyZSBz aG91bGQgYmUKKwkJICogdmVyeSByYXJlLiAgSXQgZG9lc24ndCBzZWVtIHdvcnRoIHVzaW5nIGEg c2Vjb25kYXJ5IHNuYXBzaG90IHRvCisJCSAqIGF2b2lkIHRoaXMuCisJCSAqLworCQlpZiAoSXNv bGF0aW9uVXNlc1hhY3RTbmFwc2hvdCgpICYmIHJlbC0+cmRfaW5kZXgtPmluZGNoZWNreG1pbiAm JgorCQkJIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyhIZWFwVHVwbGVIZWFkZXJHZXRYbWluKHJlbC0+ cmRfaW5kZXh0dXBsZS0+dF9kYXRhKSwKKwkJCQkJCQkJICAgc3RhdGUtPnNuYXBzaG90LT54bWlu KSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVF9SX1NFUklBTEla QVRJT05fRkFJTFVSRSksCisJCQkJCSBlcnJtc2coImluZGV4IFwiJXNcIiBjYW5ub3QgYmUgdmVy aWZpZWQgdXNpbmcgdHJhbnNhY3Rpb24gc25hcHNob3QiLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCkpKSk7Cit9CiAKIAkvKgogCSAqIFdlIG5lZWQgYSBzbmFwc2hvdCB0byBj aGVjayB0aGUgdW5pcXVlbmVzcyBvZiB0aGUgaW5kZXguIEZvciBiZXR0ZXIKQEAgLTQ3Niw5ICs0 NzIsNyBAQCBidF9jaGVja19ldmVyeV9sZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXBy ZWwsIGJvb2wgaGVhcGtleXNwYWNlLAogCQlzdGF0ZS0+aW5kZXhpbmZvID0gQnVpbGRJbmRleElu Zm8oc3RhdGUtPnJlbCk7CiAJCWlmIChzdGF0ZS0+aW5kZXhpbmZvLT5paV9VbmlxdWUpCiAJCXsK LQkJCWlmIChzbmFwc2hvdCAhPSBTbmFwc2hvdEFueSkKLQkJCQlzdGF0ZS0+c25hcHNob3QgPSBz bmFwc2hvdDsKLQkJCWVsc2UKKwkJCWlmIChzdGF0ZS0+c25hcHNob3QgPT0gSW52YWxpZFNuYXBz aG90KQogCQkJCXN0YXRlLT5zbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rp b25TbmFwc2hvdCgpKTsKIAkJfQogCX0KQEAgLTU1NSwxMyArNTQ5LDEyIEBAIGJ0X2NoZWNrX2V2 ZXJ5X2xldmVsKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgYm9vbCBoZWFwa2V5c3Bh Y2UsCiAJCS8qCiAJCSAqIENyZWF0ZSBvdXIgb3duIHNjYW4gZm9yIHRhYmxlX2luZGV4X2J1aWxk X3NjYW4oKSwgcmF0aGVyIHRoYW4KIAkJICogZ2V0dGluZyBpdCB0byBkbyBzbyBmb3IgdXMuICBU aGlzIGlzIHJlcXVpcmVkIHNvIHRoYXQgd2UgY2FuCi0JCSAqIGFjdHVhbGx5IHVzZSB0aGUgTVZD QyBzbmFwc2hvdCByZWdpc3RlcmVkIGVhcmxpZXIgaW4gIXJlYWRvbmx5Ci0JCSAqIGNhc2UuCisJ CSAqIGFjdHVhbGx5IHVzZSB0aGUgTVZDQyBzbmFwc2hvdCByZWdpc3RlcmVkIGVhcmxpZXIuCiAJ CSAqCiAJCSAqIE5vdGUgdGhhdCB0YWJsZV9pbmRleF9idWlsZF9zY2FuKCkgY2FsbHMgaGVhcF9l bmRzY2FuKCkgZm9yIHVzLgogCQkgKi8KIAkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChz dGF0ZS0+aGVhcHJlbCwJLyogcmVsYXRpb24gKi8KLQkJCQkJCQkJCSBzbmFwc2hvdCwJLyogc25h cHNob3QgKi8KKwkJCQkJCQkJCSBzdGF0ZS0+c25hcHNob3QsCS8qIHNuYXBzaG90ICovCiAJCQkJ CQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8KIAkJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtl eSAqLwogCQkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KQEAg LTU2OSw3ICs1NjIsNyBAQCBidF9jaGVja19ldmVyeV9sZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0 aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtleXNwYWNlLAogCiAJCS8qCiAJCSAqIFNjYW4gd2lsbCBi ZWhhdmUgYXMgdGhlIGZpcnN0IHNjYW4gb2YgYSBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZCi0J CSAqIGJlaGF2ZXMgaW4gIXJlYWRvbmx5IGNhc2UuCisJCSAqIGJlaGF2ZXMuCiAJCSAqCiAJCSAq IEl0J3Mgb2theSB0aGF0IHdlIGRvbid0IGFjdHVhbGx5IHVzZSB0aGUgc2FtZSBsb2NrIHN0cmVu Z3RoIGZvciB0aGUKIAkJICogaGVhcCByZWxhdGlvbiBhcyBhbnkgb3RoZXIgaWlfQ29uY3VycmVu dCBjYWxsZXIgd291bGQgaW4gIXJlYWRvbmx5CkBAIC01NzgsNyArNTcxLDcgQEAgYnRfY2hlY2tf ZXZlcnlfbGV2ZWwoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBib29sIGhlYXBrZXlz cGFjZSwKIAkJICogdGhhdCBuZWVkcyB0byBiZSBzdXJlIHRoYXQgdGhlcmUgd2FzIG5vIGNvbmN1 cnJlbnQgcmVjeWNsaW5nIG9mCiAJCSAqIFRJRHMuCiAJCSAqLwotCQlpbmRleGluZm8tPmlpX0Nv bmN1cnJlbnQgPSAhc3RhdGUtPnJlYWRvbmx5OworCQlpbmRleGluZm8tPmlpX0NvbmN1cnJlbnQg PSB0cnVlOwogCiAJCS8qCiAJCSAqIERvbid0IHdhaXQgZm9yIHVuY29tbWl0dGVkIHR1cGxlIHhh Y3QgY29tbWl0L2Fib3J0IHdoZW4gaW5kZXggaXMgYQpAQCAtNjAyLDE0ICs1OTUsMTEgQEAgYnRf Y2hlY2tfZXZlcnlfbGV2ZWwoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBib29sIGhl YXBrZXlzcGFjZSwKIAkJCQkJCQkJIHN0YXRlLT5oZWFwdHVwbGVzcHJlc2VudCwgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUoaGVhcHJlbCksCiAJCQkJCQkJCSAxMDAuMCAqIGJsb29tX3Byb3BfYml0 c19zZXQoc3RhdGUtPmZpbHRlcikpKSk7CiAKLQkJaWYgKHNuYXBzaG90ICE9IFNuYXBzaG90QW55 KQotCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKLQogCQlibG9vbV9mcmVlKHN0YXRl LT5maWx0ZXIpOwogCX0KIAogCS8qIEJlIHRpZHk6ICovCi0JaWYgKHNuYXBzaG90ID09IFNuYXBz aG90QW55ICYmIHN0YXRlLT5zbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3QpCisJaWYgKHN0YXRl LT5zbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3QpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChzdGF0 ZS0+c25hcHNob3QpOwogCU1lbW9yeUNvbnRleHREZWxldGUoc3RhdGUtPnRhcmdldGNvbnRleHQp OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCBjYTJiZGU2MmU4Mi4uYjEwNDI5YzM3 MjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNzg5LDYgKzE3ODksNyBAQCBEZWZp bmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBiZWZvcmUgdGhlIHJlZmVyZW5jZSBzbmFwIHdhcyB0 YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKIAkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdo dCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkgKi8KKwlJTkpFQ1RJT05fUE9JTlQoImRlZmluZV9p bmRleF9iZWZvcmVfc2V0X3ZhbGlkIiwgTlVMTCk7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9w YXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfV0FJVF8zKTsKIAlXYWl0Rm9yT2xkZXJTbmFwc2hvdHMobGltaXRYbWluLCB0cnVl KTsKQEAgLTQyMjgsNyArNDIyOSw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJICogdGhl IHNhbWUgdGltZSB0byBtYWtlIHN1cmUgd2Ugb25seSBnZXQgY29uc3RyYWludCB2aW9sYXRpb25z IGZyb20gdGhlCiAJICogaW5kZXhlcyB3aXRoIHRoZSBjb3JyZWN0IG5hbWVzLgogCSAqLwotCisJ SU5KRUNUSU9OX1BPSU5UKCJyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dh cCIsIE5VTEwpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKIAkvKgpAQCAtNDMwNyw2 ICs0MzA4LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10 ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkgKiBpbmRleF9kcm9wKCkgZm9y IG1vcmUgZGV0YWlscy4KIAkgKi8KIAorCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleF9yZWxhdGlv bl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkIiwgTlVMTCk7CiAJcGdzdGF0X3Byb2dyZXNz X3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVT U19DUkVBVEVJRFhfUEhBU0VfV0FJVF80KTsKIAlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tU YWdzLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4 aW5nLmMKaW5kZXggY2EzM2E4NTQyNzguLjBlZGY1NGU4NTJkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjSW5kZXhpbmcuYwpAQCAtMTE3LDYgKzExNyw3IEBACiAjaW5jbHVkZSAidXRpbHMvbXVsdGly YW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgogI2luY2x1ZGUgInV0 aWxzL3NuYXBtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKIAogLyog d2FpdE1vZGUgYXJndW1lbnQgdG8gY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50 KCkgKi8KIHR5cGVkZWYgZW51bQpAQCAtOTQyLDYgKzk0Myw4IEBAIHJldHJ5OgogCWVjb250ZXh0 LT5lY3h0X3NjYW50dXBsZSA9IHNhdmVfc2NhbnR1cGxlOwogCiAJRXhlY0Ryb3BTaW5nbGVUdXBs ZVRhYmxlU2xvdChleGlzdGluZ19zbG90KTsKKwlpZiAoIWNvbmZsaWN0KQorCQlJTkpFQ1RJT05f UE9JTlQoImNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCIs IE5VTEwpOwogCiAJcmV0dXJuICFjb25mbGljdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYwppbmRleCAxZjJkYTA3MjYzMi4uZjc3ZmU0MmEyYTkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMKQEAgLTQ5MCw2ICs0OTAsNDggQEAgRXhlY0ZpbmRQYXJ0aXRpb24o TW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAlyZXR1cm4gcnJpOwogfQogCisvKgorICogSXNJ bmRleENvbXBhdGlibGVBc0FyYml0ZXIKKyAqIAkJQ2hlY2tzIGlmIHRoZSBpbmRleGVzIGFyZSBp ZGVudGljYWwgaW4gdGVybXMgb2YgYmVpbmcgdXNlZAorICogCQlhcyBhcmJpdGVycyBmb3IgdGhl IElOU0VSVCBPTiBDT05GTElDVCBvcGVyYXRpb24gYnkgY29tcGFyaW5nCisgKiAJCXRoZW0gdG8g dGhlIHByb3ZpZGVkIGFyYml0ZXIgaW5kZXguCisgKgorICogUmV0dXJucyB0aGUgdHJ1ZSBpZiBp bmRleGVzIGFyZSBjb21wYXRpYmxlLgorICovCitzdGF0aWMgYm9vbAorSXNJbmRleENvbXBhdGli bGVBc0FyYml0ZXIoUmVsYXRpb24JYXJiaXRlckluZGV4UmVsYXRpb24sCisJCQkJCQkgICBJbmRl eEluZm8gICphcmJpdGVySW5kZXhJbmZvLAorCQkJCQkJICAgUmVsYXRpb24JaW5kZXhSZWxhdGlv biwKKwkJCQkJCSAgIEluZGV4SW5mbyAgKmluZGV4SW5mbykKK3sKKwlpbnQgaTsKKworCWlmIChh cmJpdGVySW5kZXhJbmZvLT5paV9VbmlxdWUgIT0gaW5kZXhJbmZvLT5paV9VbmlxdWUpCisJCXJl dHVybiBmYWxzZTsKKwkvKiBpdCBpcyBub3Qgc3VwcG9ydGVkIGZvciBjYXNlcyBvZiBleGNsdXNp b24gY29uc3RyYWludHMuICovCisJaWYgKGFyYml0ZXJJbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9w cyAhPSBOVUxMIHx8IGluZGV4SW5mby0+aWlfRXhjbHVzaW9uT3BzICE9IE5VTEwpCisJCXJldHVy biBmYWxzZTsKKwlpZiAoYXJiaXRlckluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRua2V5YXR0 cyAhPSBpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kbmtleWF0dHMpCisJCXJldHVybiBmYWxz ZTsKKworCWZvciAoaSA9IDA7IGkgPCBpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kbmtleWF0 dHM7IGkrKykKKwl7CisJCWludAkJCWFyYml0ZXJBdHRvTm8gPSBhcmJpdGVySW5kZXhSZWxhdGlv bi0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbaV07CisJCWludAkJCWF0dG9ObyA9IGluZGV4UmVs YXRpb24tPnJkX2luZGV4LT5pbmRrZXkudmFsdWVzW2ldOworCQlpZiAoYXJiaXRlckF0dG9ObyAh PSBhdHRvTm8pCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYgKGxpc3RfZGlmZmVyZW5jZShS ZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMoYXJiaXRlckluZGV4UmVsYXRpb24pLAorCQkJCQkJ UmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zKGluZGV4UmVsYXRpb24pKSAhPSBOSUwpCisJCXJl dHVybiBmYWxzZTsKKworCWlmIChsaXN0X2RpZmZlcmVuY2UoUmVsYXRpb25HZXRJbmRleFByZWRp Y2F0ZShhcmJpdGVySW5kZXhSZWxhdGlvbiksCisJCQkJCQlSZWxhdGlvbkdldEluZGV4UHJlZGlj YXRlKGluZGV4UmVsYXRpb24pKSAhPSBOSUwpCisJCXJldHVybiBmYWxzZTsKKwlyZXR1cm4gdHJ1 ZTsKK30KKwogLyoKICAqIEV4ZWNJbml0UGFydGl0aW9uSW5mbwogICoJCUxvY2sgdGhlIHBhcnRp dGlvbiBhbmQgaW5pdGlhbGl6ZSBSZXN1bHRSZWxJbmZvLiAgQWxzbyBzZXR1cCBvdGhlcgpAQCAt NzAxLDYgKzc0Myw4IEBAIEV4ZWNJbml0UGFydGl0aW9uSW5mbyhNb2RpZnlUYWJsZVN0YXRlICpt dHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAkJaWYgKHJvb3RSZXN1bHRSZWxJbmZvLT5yaV9vbkNv bmZsaWN0QXJiaXRlckluZGV4ZXMgIT0gTklMKQogCQl7CiAJCQlMaXN0CSAgICpjaGlsZElkeHM7 CisJCQlMaXN0IAkgICAqbm9uQW5jZXN0b3JJZHhzID0gTklMOworCQkJaW50CQkgICBpLCBqLCBh ZGRpdGlvbmFsX2FyYml0ZXJzID0gMDsKIAogCQkJY2hpbGRJZHhzID0gUmVsYXRpb25HZXRJbmRl eExpc3QobGVhZl9wYXJ0X3JyaS0+cmlfUmVsYXRpb25EZXNjKTsKIApAQCAtNzExLDIzICs3NTUs NzQgQEAgRXhlY0luaXRQYXJ0aXRpb25JbmZvKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVT dGF0ZSAqZXN0YXRlLAogCQkJCUxpc3RDZWxsICAgKmxjMjsKIAogCQkJCWFuY2VzdG9ycyA9IGdl dF9wYXJ0aXRpb25fYW5jZXN0b3JzKGNoaWxkSWR4KTsKLQkJCQlmb3JlYWNoKGxjMiwgcm9vdFJl c3VsdFJlbEluZm8tPnJpX29uQ29uZmxpY3RBcmJpdGVySW5kZXhlcykKKwkJCQlpZiAoYW5jZXN0 b3JzKQogCQkJCXsKLQkJCQkJaWYgKGxpc3RfbWVtYmVyX29pZChhbmNlc3RvcnMsIGxmaXJzdF9v aWQobGMyKSkpCi0JCQkJCQlhcmJpdGVySW5kZXhlcyA9IGxhcHBlbmRfb2lkKGFyYml0ZXJJbmRl eGVzLCBjaGlsZElkeCk7CisJCQkJCWZvcmVhY2gobGMyLCByb290UmVzdWx0UmVsSW5mby0+cmlf b25Db25mbGljdEFyYml0ZXJJbmRleGVzKQorCQkJCQl7CisJCQkJCQlpZiAobGlzdF9tZW1iZXJf b2lkKGFuY2VzdG9ycywgbGZpcnN0X29pZChsYzIpKSkKKwkJCQkJCQlhcmJpdGVySW5kZXhlcyA9 IGxhcHBlbmRfb2lkKGFyYml0ZXJJbmRleGVzLCBjaGlsZElkeCk7CisJCQkJCX0KIAkJCQl9CisJ CQkJZWxzZSAvKiBObyBhbmNlc3RvciB3YXMgZm91bmQgZm9yIHRoYXQgaW5kZXguIFNhdmUgaXQg Zm9yIHJlY2hlY2tpbmcgbGF0ZXIuICovCisJCQkJCW5vbkFuY2VzdG9ySWR4cyA9IGxhcHBlbmRf b2lkKG5vbkFuY2VzdG9ySWR4cywgY2hpbGRJZHgpOwogCQkJCWxpc3RfZnJlZShhbmNlc3RvcnMp OwogCQkJfQorCisJCQkvKgorCQkJICogSWYgYW55IG5vbi1hbmNlc3RvciBpbmRleGVzIGFyZSBm b3VuZCwgd2UgbmVlZCB0byBjb21wYXJlIHRoZW0gd2l0aCBvdGhlcgorCQkJICogaW5kZXhlcyBv ZiB0aGUgcmVsYXRpb24gdGhhdCB3aWxsIGJlIHVzZWQgYXMgYXJiaXRlcnMuIFRoaXMgaXMgbmVj ZXNzYXJ5CisJCQkgKiB3aGVuIGEgcGFydGl0aW9uZWQgaW5kZXggaXMgcHJvY2Vzc2VkIGJ5IFJF SU5ERVggQ09OQ1VSUkVOVExZLiBCb3RoIGluZGV4ZXMKKwkJCSAqIG11c3QgYmUgY29uc2lkZXJl ZCBhcyBhcmJpdGVycyB0byBlbnN1cmUgdGhhdCBhbGwgY29uY3VycmVudCB0cmFuc2FjdGlvbnMK KwkJCSAqIHVzZSB0aGUgc2FtZSBzZXQgb2YgYXJiaXRlcnMuCisJCQkgKi8KKwkJCWlmIChub25B bmNlc3RvcklkeHMpCisJCQl7CisJCQkJZm9yIChpID0gMDsgaSA8IGxlYWZfcGFydF9ycmktPnJp X051bUluZGljZXM7IGkrKykKKwkJCQl7CisJCQkJCWlmIChsaXN0X21lbWJlcl9vaWQobm9uQW5j ZXN0b3JJZHhzLCBsZWFmX3BhcnRfcnJpLT5yaV9JbmRleFJlbGF0aW9uRGVzY3NbaV0tPnJkX2lu ZGV4LT5pbmRleHJlbGlkKSkKKwkJCQkJeworCQkJCQkJUmVsYXRpb24gbm9uQW5jZXN0b3JJbmRl eFJlbGF0aW9uID0gbGVhZl9wYXJ0X3JyaS0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzW2ldOworCQkJ CQkJSW5kZXhJbmZvICpub25BbmNlc3RvckluZGV4SW5mbyA9IGxlYWZfcGFydF9ycmktPnJpX0lu ZGV4UmVsYXRpb25JbmZvW2ldOworCQkJCQkJQXNzZXJ0KCFsaXN0X21lbWJlcl9vaWQoYXJiaXRl ckluZGV4ZXMsIG5vbkFuY2VzdG9ySW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGV4cmVsaWQp KTsKKworCQkJCQkJLyogSXQgaXMgdG9vIGVhcmx5IHRvIHVzIG5vbi1yZWFkeSBpbmRleGVzIGFz IGFyYml0ZXJzICovCisJCQkJCQlpZiAoIW5vbkFuY2VzdG9ySW5kZXhJbmZvLT5paV9SZWFkeUZv ckluc2VydHMpCisJCQkJCQkJY29udGludWU7CisKKwkJCQkJCWZvciAoaiA9IDA7IGogPCBsZWFm X3BhcnRfcnJpLT5yaV9OdW1JbmRpY2VzOyBqKyspCisJCQkJCQl7CisJCQkJCQkJaWYgKGxpc3Rf bWVtYmVyX29pZChhcmJpdGVySW5kZXhlcywKKwkJCQkJCQkJCQkJCWxlYWZfcGFydF9ycmktPnJp X0luZGV4UmVsYXRpb25EZXNjc1tqXS0+cmRfaW5kZXgtPmluZGV4cmVsaWQpKQorCQkJCQkJCXsK KwkJCQkJCQkJUmVsYXRpb24gYXJiaXRlckluZGV4UmVsYXRpb24gPSBsZWFmX3BhcnRfcnJpLT5y aV9JbmRleFJlbGF0aW9uRGVzY3Nbal07CisJCQkJCQkJCUluZGV4SW5mbyAqYXJiaXRlckluZGV4 SW5mbyA9IGxlYWZfcGFydF9ycmktPnJpX0luZGV4UmVsYXRpb25JbmZvW2pdOworCisJCQkJCQkJ CS8qIElmIG5vbi1hbmNlc3RvciBpbmRleCBhcmUgY29tcGF0aWJsZSB0byBhcmJpdGVyIC0gdXNl IGl0IGFzIGFyYml0ZXIgdG9vLiAqLworCQkJCQkJCQlpZiAoSXNJbmRleENvbXBhdGlibGVBc0Fy Yml0ZXIoYXJiaXRlckluZGV4UmVsYXRpb24sIGFyYml0ZXJJbmRleEluZm8sCisJCQkJCQkJCQkJ CQkJCQkgICBub25BbmNlc3RvckluZGV4UmVsYXRpb24sIG5vbkFuY2VzdG9ySW5kZXhJbmZvKSkK KwkJCQkJCQkJeworCQkJCQkJCQkJYXJiaXRlckluZGV4ZXMgPSBsYXBwZW5kX29pZChhcmJpdGVy SW5kZXhlcywKKwkJCQkJCQkJCQkJCQkJCQkgbm9uQW5jZXN0b3JJbmRleFJlbGF0aW9uLT5yZF9p bmRleC0+aW5kZXhyZWxpZCk7CisJCQkJCQkJCQlhZGRpdGlvbmFsX2FyYml0ZXJzKys7CisJCQkJ CQkJCX0KKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQlsaXN0X2Zy ZWUobm9uQW5jZXN0b3JJZHhzKTsKKworCQkJLyoKKwkJCSAqIElmIHRoZSByZXN1bHRpbmcgbGlz dHMgYXJlIG9mIGluZXF1YWwgbGVuZ3RoLCBzb21ldGhpbmcgaXMgd3JvbmcuCisJCQkgKiAoVGhp cyBzaG91bGRuJ3QgaGFwcGVuLCBzaW5jZSBhcmJpdGVyIGluZGV4IHNlbGVjdGlvbiBzaG91bGQg bm90CisJCQkgKiBwaWNrIHVwIGEgbm9uLXJlYWR5IGluZGV4LikKKwkJCSAqCisJCQkgKiBCdXQg d2UgbmVlZCB0byBjb25zaWRlciBhbiBhZGRpdGlvbmFsIGFyYml0ZXIgaW5kZXhlcyBhbHNvLgor CQkJICovCisJCQlpZiAobGlzdF9sZW5ndGgocm9vdFJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxp Y3RBcmJpdGVySW5kZXhlcykgIT0KKwkJCQlsaXN0X2xlbmd0aChhcmJpdGVySW5kZXhlcykgLSBh ZGRpdGlvbmFsX2FyYml0ZXJzKQorCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIGFyYml0ZXIgaW5k ZXggbGlzdCIpOwogCQl9Ci0KLQkJLyoKLQkJICogSWYgdGhlIHJlc3VsdGluZyBsaXN0cyBhcmUg b2YgaW5lcXVhbCBsZW5ndGgsIHNvbWV0aGluZyBpcyB3cm9uZy4KLQkJICogKFRoaXMgc2hvdWxk bid0IGhhcHBlbiwgc2luY2UgYXJiaXRlciBpbmRleCBzZWxlY3Rpb24gc2hvdWxkIG5vdAotCQkg KiBwaWNrIHVwIGFuIGludmFsaWQgaW5kZXguKQotCQkgKi8KLQkJaWYgKGxpc3RfbGVuZ3RoKHJv b3RSZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXMpICE9Ci0JCQlsaXN0 X2xlbmd0aChhcmJpdGVySW5kZXhlcykpCi0JCQllbG9nKEVSUk9SLCAiaW52YWxpZCBhcmJpdGVy IGluZGV4IGxpc3QiKTsKIAkJbGVhZl9wYXJ0X3JyaS0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRl eGVzID0gYXJiaXRlckluZGV4ZXM7CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlm eVRhYmxlLmMKaW5kZXggNGM1NjQ3YWMzOGEuLmY2ZDJhNmVkZTkzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNzAsNiArNzAsNyBAQAogI2luY2x1ZGUgInV0aWxz L2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1n ci5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAKIHR5cGVkZWYgc3Ry dWN0IE1UVGFyZ2V0UmVsTG9va3VwCkBAIC0xMTc5LDYgKzExODAsNyBAQCBFeGVjSW5zZXJ0KE1v ZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAkJCQkJcmV0dXJuIE5VTEw7CiAJCQkJfQogCQkJ fQorCQkJSU5KRUNUSU9OX1BPSU5UKCJleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1bGF0 aXZlIiwgTlVMTCk7CiAKIAkJCS8qCiAJCQkgKiBCZWZvcmUgd2Ugc3RhcnQgaW5zZXJ0aW9uIHBy b3BlciwgYWNxdWlyZSBvdXIgInNwZWN1bGF0aXZlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFu Y2F0LmMKaW5kZXggZGE1ZDkwMWVjM2MuLmQwYzQzODZmNzk4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcGxhbmNhdC5jCkBAIC04MDMsMTIgKzgwMywxNCBAQCBpbmZlcl9hcmJpdGVyX2luZGV4 ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJTGlzdAkgICAqaW5kZXhMaXN0OwogCUxpc3RDZWxsICAg Kmw7CiAKLQkvKiBOb3JtYWxpemVkIGluZmVyZW5jZSBhdHRyaWJ1dGVzIGFuZCBpbmZlcmVuY2Ug ZXhwcmVzc2lvbnM6ICovCi0JQml0bWFwc2V0ICAqaW5mZXJBdHRycyA9IE5VTEw7Ci0JTGlzdAkg ICAqaW5mZXJFbGVtcyA9IE5JTDsKKwkvKiBOb3JtYWxpemVkIHJlcXVpcmVkIGF0dHJpYnV0ZXMg YW5kIGV4cHJlc3Npb25zOiAqLworCUJpdG1hcHNldCAgKnJlcXVpcmVkQXJiaXRlckF0dHJzID0g TlVMTDsKKwlMaXN0CSAgICpyZXF1aXJlZEFyYml0ZXJFbGVtcyA9IE5JTDsKKwlMaXN0CSAgICpy ZXF1aXJlZEluZGV4UHJlZEV4cHJzID0gKExpc3QgKikgb25jb25mbGljdC0+YXJiaXRlcldoZXJl OwogCiAJLyogUmVzdWx0cyAqLwogCUxpc3QJICAgKnJlc3VsdHMgPSBOSUw7CisJYm9vbAkgICBm b3VuZFZhbGlkID0gZmFsc2U7CiAKIAkvKgogCSAqIFF1aWNrbHkgcmV0dXJuIE5JTCBmb3IgT04g Q09ORkxJQ1QgRE8gTk9USElORyB3aXRob3V0IGFuIGluZmVyZW5jZQpAQCAtODQzLDggKzg0NSw4 IEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAogCQlpZiAoIUlz QShlbGVtLT5leHByLCBWYXIpKQogCQl7Ci0JCQkvKiBJZiBub3QgYSBwbGFpbiBWYXIsIGp1c3Qg c2hvdmUgaXQgaW4gaW5mZXJFbGVtcyBmb3Igbm93ICovCi0JCQlpbmZlckVsZW1zID0gbGFwcGVu ZChpbmZlckVsZW1zLCBlbGVtLT5leHByKTsKKwkJCS8qIElmIG5vdCBhIHBsYWluIFZhciwganVz dCBzaG92ZSBpdCBpbiByZXF1aXJlZEFyYml0ZXJFbGVtcyBmb3Igbm93ICovCisJCQlyZXF1aXJl ZEFyYml0ZXJFbGVtcyA9IGxhcHBlbmQocmVxdWlyZWRBcmJpdGVyRWxlbXMsIGVsZW0tPmV4cHIp OwogCQkJY29udGludWU7CiAJCX0KIApAQCAtODU2LDMwICs4NTgsNzYgQEAgaW5mZXJfYXJiaXRl cl9pbmRleGVzKFBsYW5uZXJJbmZvICpyb290KQogCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCSBlcnJtc2coIndob2xlIHJvdyB1bmlxdWUgaW5kZXgg aW5mZXJlbmNlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIikpKTsKIAotCQlpbmZl ckF0dHJzID0gYm1zX2FkZF9tZW1iZXIoaW5mZXJBdHRycywKKwkJcmVxdWlyZWRBcmJpdGVyQXR0 cnMgPSBibXNfYWRkX21lbWJlcihyZXF1aXJlZEFyYml0ZXJBdHRycywKIAkJCQkJCQkJCWF0dG5v IC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CiAJfQogCisJaW5kZXhMaXN0 ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsYXRpb24pOworCiAJLyoKIAkgKiBMb29rdXAgbmFt ZWQgY29uc3RyYWludCdzIGluZGV4LiAgVGhpcyBpcyBub3QgaW1tZWRpYXRlbHkgcmV0dXJuZWQK LQkgKiBiZWNhdXNlIHNvbWUgYWRkaXRpb25hbCBzYW5pdHkgY2hlY2tzIGFyZSByZXF1aXJlZC4K KwkgKiBiZWNhdXNlIHNvbWUgYWRkaXRpb25hbCBzYW5pdHkgY2hlY2tzIGFyZSByZXF1aXJlZC4g QWRkaXRpb25hbGx5LCB3ZQorCSAqIG5lZWQgdG8gcHJvY2VzcyBvdGhlciBpbmRleGVzIGFzIHBv dGVudGlhbCBhcmJpdGVycyB0byBhY2NvdW50IGZvcgorCSAqIGNhc2VzIHdoZXJlIFJFSU5ERVgg Q09OQ1VSUkVOVExZIGlzIHByb2Nlc3NpbmcgYW4gaW5kZXggdXNlZCBhcyBhCisJICogbmFtZWQg Y29uc3RyYWludC4KIAkgKi8KIAlpZiAob25jb25mbGljdC0+Y29uc3RyYWludCAhPSBJbnZhbGlk T2lkKQogCXsKIAkJaW5kZXhPaWRGcm9tQ29uc3RyYWludCA9IGdldF9jb25zdHJhaW50X2luZGV4 KG9uY29uZmxpY3QtPmNvbnN0cmFpbnQpOwogCiAJCWlmIChpbmRleE9pZEZyb21Db25zdHJhaW50 ID09IEludmFsaWRPaWQpCisJCXsKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVS UkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAotCQkJCQkgZXJybXNnKCJjb25zdHJhaW50IGluIE9O IENPTkZMSUNUIGNsYXVzZSBoYXMgbm8gYXNzb2NpYXRlZCBpbmRleCIpKSk7CisJCQkJCWVycm1z ZygiY29uc3RyYWludCBpbiBPTiBDT05GTElDVCBjbGF1c2UgaGFzIG5vIGFzc29jaWF0ZWQgaW5k ZXgiKSkpOworCQl9CisKKwkJLyoKKwkJICogRmluZCB0aGUgbmFtZWQgY29uc3RyYWludCBpbmRl eCB0byBleHRyYWN0IGl0cyBhdHRyaWJ1dGVzIGFuZCBwcmVkaWNhdGVzLgorCQkgKiBXZSBvcGVu IGFsbCBpbmRleGVzIGluIHRoZSBsb29wIHRvIGF2b2lkIGRlYWRsb2NrIG9mIGNoYW5nZWQgb3Jk ZXIgb2YgbG9ja3MuCisJCSAqICovCisJCWZvcmVhY2gobCwgaW5kZXhMaXN0KQorCQl7CisJCQlP aWQJCQlpbmRleG9pZCA9IGxmaXJzdF9vaWQobCk7CisJCQlSZWxhdGlvbglpZHhSZWw7CisJCQlG b3JtX3BnX2luZGV4IGlkeEZvcm07CisJCQlBdHRyTnVtYmVyCW5hdHQ7CisKKwkJCWlkeFJlbCA9 IGluZGV4X29wZW4oaW5kZXhvaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQkJaWR4Rm9ybSA9IGlk eFJlbC0+cmRfaW5kZXg7CisKKwkJCWlmIChpZHhGb3JtLT5pbmRpc3JlYWR5KQorCQkJeworCQkJ CWlmIChpbmRleE9pZEZyb21Db25zdHJhaW50ID09IGlkeEZvcm0tPmluZGV4cmVsaWQpCisJCQkJ eworCQkJCQkvKgorCQkJCQkgKiBQcmVwYXJlIHJlcXVpcmVtZW50cyBmb3Igb3RoZXIgaW5kZXhl cyB0byBiZSB1c2VkIGFzIGFyYml0ZXIgdG9nZXRoZXIKKwkJCQkJICogd2l0aCBpbmRleE9pZEZy b21Db25zdHJhaW50LiBJdCBpcyByZXF1aXJlZCB0byBpbnZvbHZlIGJvdGggZXF1YWxzIGluZGV4 ZXMKKwkJCQkJICogaW4gY2FzZSBvZiBSRUlOREVYIENPTkNVUlJFTlRMWS4KKwkJCQkJICovCisJ CQkJCWZvciAobmF0dCA9IDA7IG5hdHQgPCBpZHhGb3JtLT5pbmRua2V5YXR0czsgbmF0dCsrKQor CQkJCQl7CisJCQkJCQlpbnQJCQlhdHRubyA9IGlkeFJlbC0+cmRfaW5kZXgtPmluZGtleS52YWx1 ZXNbbmF0dF07CisKKwkJCQkJCWlmIChhdHRubyAhPSAwKQorCQkJCQkJCXJlcXVpcmVkQXJiaXRl ckF0dHJzID0gYm1zX2FkZF9tZW1iZXIocmVxdWlyZWRBcmJpdGVyQXR0cnMsCisJCQkJCQkJCQkJ CQkJCSAgYXR0bm8gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJCQkJ fQorCQkJCQlyZXF1aXJlZEFyYml0ZXJFbGVtcyA9IFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9u cyhpZHhSZWwpOworCQkJCQlyZXF1aXJlZEluZGV4UHJlZEV4cHJzID0gUmVsYXRpb25HZXRJbmRl eFByZWRpY2F0ZShpZHhSZWwpOworCQkJCQkvKiBXZSBhcmUgZG9uZSwgc28sIHF1aXRlIHRoZSBs b29wLiAqLworCQkJCQlpbmRleF9jbG9zZShpZHhSZWwsIE5vTG9jayk7CisJCQkJCWJyZWFrOwor CQkJCX0KKwkJCX0KKwkJCWluZGV4X2Nsb3NlKGlkeFJlbCwgTm9Mb2NrKTsKKwkJfQogCX0KIAog CS8qCiAJICogVXNpbmcgdGhhdCByZXByZXNlbnRhdGlvbiwgaXRlcmF0ZSB0aHJvdWdoIHRoZSBs aXN0IG9mIGluZGV4ZXMgb24gdGhlCiAJICogdGFyZ2V0IHJlbGF0aW9uIHRvIHRyeSBhbmQgZmlu ZCBhIG1hdGNoCiAJICovCi0JaW5kZXhMaXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsYXRp b24pOwotCiAJZm9yZWFjaChsLCBpbmRleExpc3QpCiAJewogCQlPaWQJCQlpbmRleG9pZCA9IGxm aXJzdF9vaWQobCk7CkBAIC05MDIsNyArOTUwLDEzIEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQ bGFubmVySW5mbyAqcm9vdCkKIAkJaWR4UmVsID0gaW5kZXhfb3BlbihpbmRleG9pZCwgcnRlLT5y ZWxsb2NrbW9kZSk7CiAJCWlkeEZvcm0gPSBpZHhSZWwtPnJkX2luZGV4OwogCi0JCWlmICghaWR4 Rm9ybS0+aW5kaXN2YWxpZCkKKwkJLyoKKwkJICogV2UgbmVlZCB0byBjb25zaWRlciBib3RoIGlu ZGlzdmFsaWQgYW5kIGluZGlzcmVhZHkgaW5kZXhlcyBiZWNhdXNlCisJCSAqIHRoZW0gbWF5IGJl Y29tZSBpbmRpc3ZhbGlkIGJlZm9yZSBleGVjdXRpb24gcGhhc2UuIEl0IGlzIHJlcXVpcmVkCisJ CSAqIHRvIGtlZXAgc2V0IG9mIGluZGV4ZXMgdXNlZCBhcyBhcmJpdGVyIHRvIGJlIHRoZSBzYW1l IGZvciBhbGwKKwkJICogY29uY3VycmVudCB0cmFuc2FjdGlvbnMuCisJCSAqLworCQlpZiAoIWlk eEZvcm0tPmluZGlzcmVhZHkpCiAJCQlnb3RvIG5leHQ7CiAKIAkJLyoKQEAgLTkyMiwyNyArOTc2 LDIzIEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAkJCQllcmVw b3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJ CQkJCQkgZXJybXNnKCJPTiBDT05GTElDVCBETyBVUERBVEUgbm90IHN1cHBvcnRlZCB3aXRoIGV4 Y2x1c2lvbiBjb25zdHJhaW50cyIpKSk7Ci0KLQkJCXJlc3VsdHMgPSBsYXBwZW5kX29pZChyZXN1 bHRzLCBpZHhGb3JtLT5pbmRleHJlbGlkKTsKLQkJCWxpc3RfZnJlZShpbmRleExpc3QpOwotCQkJ aW5kZXhfY2xvc2UoaWR4UmVsLCBOb0xvY2spOwotCQkJdGFibGVfY2xvc2UocmVsYXRpb24sIE5v TG9jayk7Ci0JCQlyZXR1cm4gcmVzdWx0czsKKwkJCWdvdG8gZm91bmQ7CiAJCX0KIAkJZWxzZSBp ZiAoaW5kZXhPaWRGcm9tQ29uc3RyYWludCAhPSBJbnZhbGlkT2lkKQogCQl7Ci0JCQkvKiBObyBw b2ludCBpbiBmdXJ0aGVyIHdvcmsgZm9yIGluZGV4IGluIG5hbWVkIGNvbnN0cmFpbnQgY2FzZSAq LwotCQkJZ290byBuZXh0OworCQkJLyogSW4gdGhlIGNhc2Ugb2YgIk9OIGNvbnN0cmFpbnRfbmFt ZSBETyBVUERBVEUiIHdlIG5lZWQgdG8gc2tpcCBub24tdW5pcXVlIGNhbmRpZGF0ZXMuICovCisJ CQlpZiAoIWlkeEZvcm0tPmluZGlzdW5pcXVlICYmIG9uY29uZmxpY3QtPmFjdGlvbiA9PSBPTkNP TkZMSUNUX1VQREFURSkKKwkJCQlnb3RvIG5leHQ7CisJCX0gIGVsc2UgeworCQkJLyoKKwkJCSAq IE9ubHkgY29uc2lkZXJpbmcgY29udmVudGlvbmFsIGluZmVyZW5jZSBhdCB0aGlzIHBvaW50IChu b3QgbmFtZWQKKwkJCSAqIGNvbnN0cmFpbnRzKSwgc28gaW5kZXggdW5kZXIgY29uc2lkZXJhdGlv biBjYW4gYmUgaW1tZWRpYXRlbHkKKwkJCSAqIHNraXBwZWQgaWYgaXQncyBub3QgdW5pcXVlCisJ CQkgKi8KKwkJCWlmICghaWR4Rm9ybS0+aW5kaXN1bmlxdWUpCisJCQkJZ290byBuZXh0OwogCQl9 CiAKLQkJLyoKLQkJICogT25seSBjb25zaWRlcmluZyBjb252ZW50aW9uYWwgaW5mZXJlbmNlIGF0 IHRoaXMgcG9pbnQgKG5vdCBuYW1lZAotCQkgKiBjb25zdHJhaW50cyksIHNvIGluZGV4IHVuZGVy IGNvbnNpZGVyYXRpb24gY2FuIGJlIGltbWVkaWF0ZWx5Ci0JCSAqIHNraXBwZWQgaWYgaXQncyBu b3QgdW5pcXVlCi0JCSAqLwotCQlpZiAoIWlkeEZvcm0tPmluZGlzdW5pcXVlKQotCQkJZ290byBu ZXh0OwotCiAJCS8qCiAJCSAqIFNvLWNhbGxlZCB1bmlxdWUgY29uc3RyYWludHMgd2l0aCBXSVRI T1VUIE9WRVJMQVBTIGFyZSByZWFsbHkKIAkJICogZXhjbHVzaW9uIGNvbnN0cmFpbnRzLCBzbyBz a2lwIHRob3NlIHRvby4KQEAgLTk2Miw3ICsxMDEyLDcgQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVz KFBsYW5uZXJJbmZvICpyb290KQogCQl9CiAKIAkJLyogTm9uLWV4cHJlc3Npb24gYXR0cmlidXRl cyAoaWYgYW55KSBtdXN0IG1hdGNoICovCi0JCWlmICghYm1zX2VxdWFsKGluZGV4ZWRBdHRycywg aW5mZXJBdHRycykpCisJCWlmICghYm1zX2VxdWFsKGluZGV4ZWRBdHRycywgcmVxdWlyZWRBcmJp dGVyQXR0cnMpKQogCQkJZ290byBuZXh0OwogCiAJCS8qIEV4cHJlc3Npb24gYXR0cmlidXRlcyAo aWYgYW55KSBtdXN0IG1hdGNoICovCkBAIC05NzAsNiArMTAyMCwxMCBAQCBpbmZlcl9hcmJpdGVy X2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJCWlmIChpZHhFeHBycyAmJiB2YXJubyAhPSAx KQogCQkJQ2hhbmdlVmFyTm9kZXMoKE5vZGUgKikgaWR4RXhwcnMsIDEsIHZhcm5vLCAwKTsKIAor CQkvKgorCQkgKiBJZiBhcmJpdGVyRWxlbXMgYXJlIHByZXNlbnQsIGNoZWNrIHRoZW0uIElmIG5h bWUgPmNvbnN0cmFpbnQgaXMKKwkJICogcHJlc2VudCBhcmJpdGVyRWxlbXMgPT0gTklMLgorCQkg Ki8KIAkJZm9yZWFjaChlbCwgb25jb25mbGljdC0+YXJiaXRlckVsZW1zKQogCQl7CiAJCQlJbmZl cmVuY2VFbGVtICplbGVtID0gKEluZmVyZW5jZUVsZW0gKikgbGZpcnN0KGVsKTsKQEAgLTEwMDcs MjcgKzEwNjEsMzUgQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVzKFBsYW5uZXJJbmZvICpyb290KQog CQl9CiAKIAkJLyoKLQkJICogTm93IHRoYXQgYWxsIGluZmVyZW5jZSBlbGVtZW50cyB3ZXJlIG1h dGNoZWQsIGVuc3VyZSB0aGF0IHRoZQorCQkgKiBJbiBjYXNlIG9mIHRoZSBjb252ZW50aW9uYWwg aW5mZXJlbmNlIGludm9sdmVkIGVuc3VyZSB0aGF0IHRoZQogCQkgKiBleHByZXNzaW9uIGVsZW1l bnRzIGZyb20gaW5mZXJlbmNlIGNsYXVzZSBhcmUgbm90IG1pc3NpbmcgYW55CiAJCSAqIGNhdGFs b2dlZCBleHByZXNzaW9ucy4gIFRoaXMgZG9lcyB0aGUgcmlnaHQgdGhpbmcgd2hlbiB1bmlxdWUK IAkJICogaW5kZXhlcyByZWR1bmRhbnRseSByZXBlYXQgdGhlIHNhbWUgYXR0cmlidXRlLCBvciBp ZiBhdHRyaWJ1dGVzCiAJCSAqIHJlZHVuZGFudGx5IGFwcGVhciBtdWx0aXBsZSB0aW1lcyB3aXRo aW4gYW4gaW5mZXJlbmNlIGNsYXVzZS4KKwkJICoKKwkJICogSW4gdGhlIGNhc2Ugb2YgbmFtZWQg Y29uc3RyYWludCBlbnN1cmUgY2FuZGlkYXRlIGhhcyBlcXVhbCBzZXQKKwkJICogb2YgZXhwcmVz c2lvbnMgYXMgdGhlIG5hbWVkIGNvbnN0cmFpbnQgaW5kZXguCiAJCSAqLwotCQlpZiAobGlzdF9k aWZmZXJlbmNlKGlkeEV4cHJzLCBpbmZlckVsZW1zKSAhPSBOSUwpCisJCWlmIChsaXN0X2RpZmZl cmVuY2UoaWR4RXhwcnMsIHJlcXVpcmVkQXJiaXRlckVsZW1zKSAhPSBOSUwpCiAJCQlnb3RvIG5l eHQ7CiAKLQkJLyoKLQkJICogSWYgaXQncyBhIHBhcnRpYWwgaW5kZXgsIGl0cyBwcmVkaWNhdGUg bXVzdCBiZSBpbXBsaWVkIGJ5IHRoZSBPTgotCQkgKiBDT05GTElDVCdzIFdIRVJFIGNsYXVzZS4K LQkJICovCiAJCXByZWRFeHBycyA9IFJlbGF0aW9uR2V0SW5kZXhQcmVkaWNhdGUoaWR4UmVsKTsK IAkJaWYgKHByZWRFeHBycyAmJiB2YXJubyAhPSAxKQogCQkJQ2hhbmdlVmFyTm9kZXMoKE5vZGUg KikgcHJlZEV4cHJzLCAxLCB2YXJubywgMCk7CiAKLQkJaWYgKCFwcmVkaWNhdGVfaW1wbGllZF9i eShwcmVkRXhwcnMsIChMaXN0ICopIG9uY29uZmxpY3QtPmFyYml0ZXJXaGVyZSwgZmFsc2UpKQor CQkvKgorCQkgKiBJZiBpdCdzIGEgcGFydGlhbCBpbmRleCBhbmQgY29udmVudGlvbmFsIGluZmVy ZW5jZSwgaXRzIHByZWRpY2F0ZSBtdXN0IGJlIGltcGxpZWQKKwkJICogYnkgdGhlIE9OIENPTkZM SUNUJ3MgV0hFUkUgY2xhdXNlLgorCQkgKi8KKwkJaWYgKGluZGV4T2lkRnJvbUNvbnN0cmFpbnQg PT0gSW52YWxpZE9pZCAmJiAhcHJlZGljYXRlX2ltcGxpZWRfYnkocHJlZEV4cHJzLCByZXF1aXJl ZEluZGV4UHJlZEV4cHJzLCBmYWxzZSkpCisJCQlnb3RvIG5leHQ7CisJCS8qIElmIGl0J3MgYSBw YXJ0aWFsIGluZGV4IGFuZCBuYW1lZCBjb25zdHJhaW50IHByZWRpY2F0ZXMgbXVzdCBiZSBlcXVh bC4gKi8KKwkJaWYgKGluZGV4T2lkRnJvbUNvbnN0cmFpbnQgIT0gSW52YWxpZE9pZCAmJiBsaXN0 X2RpZmZlcmVuY2UocHJlZEV4cHJzLCByZXF1aXJlZEluZGV4UHJlZEV4cHJzKSAhPSBOSUwpCiAJ CQlnb3RvIG5leHQ7CiAKK2ZvdW5kOgogCQlyZXN1bHRzID0gbGFwcGVuZF9vaWQocmVzdWx0cywg aWR4Rm9ybS0+aW5kZXhyZWxpZCk7CisJCWZvdW5kVmFsaWQgfD0gaWR4Rm9ybS0+aW5kaXN2YWxp ZDsKIG5leHQ6CiAJCWluZGV4X2Nsb3NlKGlkeFJlbCwgTm9Mb2NrKTsKIAl9CkBAIC0xMDM1LDcg KzEwOTcsOCBAQCBuZXh0OgogCWxpc3RfZnJlZShpbmRleExpc3QpOwogCXRhYmxlX2Nsb3NlKHJl bGF0aW9uLCBOb0xvY2spOwogCi0JaWYgKHJlc3VsdHMgPT0gTklMKQorCS8qIEl0IGlzIHJlcXVp cmVkIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGluZGlzdmFsaWQgaW5kZXggZHVyaW5nIHRoZSBwbGFu bmluZy4gKi8KKwlpZiAocmVzdWx0cyA9PSBOSUwgfHwgIWZvdW5kVmFsaWQpCiAJCWVyZXBvcnQo RVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAog CQkJCSBlcnJtc2coInRoZXJlIGlzIG5vIHVuaXF1ZSBvciBleGNsdXNpb24gY29uc3RyYWludCBt YXRjaGluZyB0aGUgT04gQ09ORkxJQ1Qgc3BlY2lmaWNhdGlvbiIpKSk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUv c25hcG1nci5jCmluZGV4IDY1NTYxY2M2YmMzLi44ZTFhOTE4ZjEzMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGlt ZS9zbmFwbWdyLmMKQEAgLTEyMyw2ICsxMjMsNyBAQAogI2luY2x1ZGUgInV0aWxzL3Jlc293bmVy LmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hl LmgiCisjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAKIAogLyoKQEAgLTQ1OCw2 ICs0NTksNyBAQCBJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KHZvaWQpCiAJCXBhaXJpbmdoZWFw X3JlbW92ZSgmUmVnaXN0ZXJlZFNuYXBzaG90cywgJkNhdGFsb2dTbmFwc2hvdC0+cGhfbm9kZSk7 CiAJCUNhdGFsb2dTbmFwc2hvdCA9IE5VTEw7CiAJCVNuYXBzaG90UmVzZXRYbWluKCk7CisJCUlO SkVDVElPTl9QT0lOVCgiaW52YWxpZGF0ZV9jYXRhbG9nX3NuYXBzaG90X2VuZCIsIE5VTEwpOwog CX0KIH0KIAotLSAKMi40My4wCgo= --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="v24-0005-Support-snapshot-resets-in-concurrent-builds-of-.patch" Content-Disposition: attachment; filename="v24-0005-Support-snapshot-resets-in-concurrent-builds-of-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm0v10 RnJvbSBkYTFiNDcwNDQ5YTViYjQxNmIxMWQ2ODhlZTBiYzExMTMzZGY0ZDI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVGh1LCA2IE1hciAyMDI1IDE0OjU0OjQ0ICswMTAwClN1YmplY3Q6IFtQ QVRDSCB2MjQgMDUvMTJdIFN1cHBvcnQgc25hcHNob3QgcmVzZXRzIGluIGNvbmN1cnJlbnQgYnVp bGRzIG9mCiB1bmlxdWUgaW5kZXhlcwoKUHJldmlvdXNseSwgY29uY3VycmVudCBidWlsZHMgaWYg dW5pcXVlIGluZGV4IHVzZWQgYSBmaXhlZCBzbmFwc2hvdCBmb3IgdGhlIGVudGlyZSBzY2FuIHRv IGVuc3VyZSBwcm9wZXIgdW5pcXVlbmVzcyBjaGVja3MuCgpOb3cgcmVzZXQgc25hcHNob3RzIHBl cmlvZGljYWxseSBkdXJpbmcgY29uY3VycmVudCB1bmlxdWUgaW5kZXggYnVpbGRzLCB3aGlsZSBz dGlsbCBtYWludGFpbmluZyB1bmlxdWVuZXNzIGJ5OgotIGlnbm9yaW5nIFNuYXBzaG90U2VsZiBk ZWFkIHR1cGxlcyBkdXJpbmcgdW5pcXVlbmVzcyBjaGVja3MgaW4gdHVwbGVzb3J0IGFzIG5vdCBh IGd1YXJhbnRlZSwgYnV0IGEgZmFpbC1mYXN0IG1lY2hhbmljcwotIGFkZGluZyBhIHVuaXF1ZW5l c3MgY2hlY2sgaW4gX2J0X2xvYWQgdGhhdCBkZXRlY3RzIG11bHRpcGxlIGFsaXZlIHR1cGxlcyB3 aXRoIHRoZSBzYW1lIGtleSB2YWx1ZXMgYXMgYSBndWFyYW50ZWUgb2YgY29ycmVjdG5lc3MKClR1 cGxlcyBhcmUgU25hcHNob3RTZWxmIHRlc3RlZCBvbmx5IGluIHRoZSBjYXNlIG9mIGVxdWFsIGlu ZGV4IGtleSB2YWx1ZXMsIG92ZXJ3aXNlIF9idF9sb2FkIHdvcmtzIGxpa2UgYmVmb3JlLgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgICAgICAgICAgICB8ICAxMiArLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgICA2ICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMgICAgICAgICAgfCAgIDggKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAgICB8IDE5MiArKysrKysr KysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c3BsaXRsb2MuYyAgICAg ICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jICAgICAgICAg IHwgIDMxICsrLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAg IHwgICA4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAgICAgICAg fCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyAgICB8 ICA3MSArKysrKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggICAgICAgICAgICAgICAg ICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgICAg ICB8ICAgNSArLQogc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmggICAgICAgICAgICAgICAg IHwgICAxICsKIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8 ICAgNiArCiAxMyBmaWxlcyBjaGFuZ2VkLCAyNjYgaW5zZXJ0aW9ucygrKSwgOTQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggNzRlNDA3ZjM3NWEuLjgyOWRh ZDExOTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAgLTM4NiwxMiArMzg2LDEy IEBAIGhhdmUgdGhlIEhPVC1zYWZldHkgcHJvcGVydHkgZW5mb3JjZWQgYmVmb3JlIHdlIHN0YXJ0 IHRvIGJ1aWxkIHRoZSBuZXcKIGluZGV4LgogCiBBZnRlciB3YWl0aW5nIGZvciB0cmFuc2FjdGlv bnMgd2hpY2ggaGFkIHRoZSB0YWJsZSBvcGVuLCB3ZSBidWlsZCB0aGUgaW5kZXgKLWZvciBhbGwg cm93cyB0aGF0IGFyZSB2YWxpZCBpbiBhIGZyZXNoIHNuYXBzaG90LiAgQW55IHR1cGxlcyB2aXNp YmxlIGluIHRoZQotc25hcHNob3Qgd2lsbCBoYXZlIG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5n IEhPVCBjaGFpbnMuICAoVGhleSBtaWdodCBoYXZlCi1vbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQg dGhlbSB3aGljaCBhcmUgYnJva2VuLCBidXQgdGhpcyBpcyBPSyBmb3IgdGhlIHNhbWUKLXJlYXNv biBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBidWlsZC4pICBBcyBhYm92ZSwgd2UgcG9pbnQg dGhlIGluZGV4Ci1lbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVwZGF0ZSBjaGFpbiBidXQg d2UgdXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUKLWxpdmUgdHVwbGUuCitmb3IgYWxsIHJvd3Mg dGhhdCBhcmUgdmFsaWQgaW4gYSBmcmVzaCBzbmFwc2hvdCwgd2hpY2ggaXMgdXBkYXRlZCBldmVy eSBzbworb2Z0ZW4uIEFueSB0dXBsZXMgdmlzaWJsZSBpbiB0aGUgc25hcHNob3Qgd2lsbCBoYXZl IG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5nCitIT1QgY2hhaW5zLiAgKFRoZXkgbWlnaHQgaGF2 ZSBvbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQgdGhlbSB3aGljaCBhcmUgYnJva2VuLAorYnV0IHRo aXMgaXMgT0sgZm9yIHRoZSBzYW1lIHJlYXNvbiBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBi dWlsZC4pCitBcyBhYm92ZSwgd2UgcG9pbnQgdGhlIGluZGV4IGVudHJ5IGF0IHRoZSByb290IG9m IHRoZSBIT1QtdXBkYXRlIGNoYWluIGJ1dCB3ZQordXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUg bGl2ZSB0dXBsZS4KIAogV2UgbWFyayB0aGUgaW5kZXggb3BlbiBmb3IgaW5zZXJ0cyAoYnV0IHN0 aWxsIG5vdCByZWFkeSBmb3IgcmVhZHMpIHRoZW4KIHdlIGFnYWluIHdhaXQgZm9yIHRyYW5zYWN0 aW9ucyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB3ZSB0YWtlCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBhN2UxNjg3MWFmNi4uNDI3NDhjMDFh NDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTIzNiwx NSArMTIzNiwxNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNF TlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1aWxkLCBvciBkdXJpbmcg Ym9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90CiAJICogYW5kIGluZGV4 IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGlsZSB0aGF0IHNuYXBzaG90IGlz IHJlc2V0Ci0JICogZXZlcnkgc28gb2Z0ZW4gKGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCku CisJICogZXZlcnkgc28gb2Z0ZW4uCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogCiAJLyoKLQkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5lZWQgY29uc2lzdGVudCBz bmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCisJICogRm9yIGNvbmN1cnJlbnQgYnVpbGRzIG9m IG5vbi1zeXN0ZW0gaW5kZXhlcywgd2UgbWF5IHdhbnQgdG8gcGVyaW9kaWNhbGx5CisJICogcmVz ZXQgc25hcHNob3RzIHRvIGFsbG93IHZhY3V1bSB0byBjbGVhbiB1cCB0dXBsZXMuCiAJICovCiAJ cmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ICYmCi0JCQkJCSAgIWlu ZGV4SW5mby0+aWlfVW5pcXVlICYmCiAJCQkJCSAgIWlzX3N5c3RlbV9jYXRhbG9nOyAvKiBqdXN0 IGZvciB0aGUgY2FzZSAqLwogCiAJLyogb2theSB0byBpZ25vcmUgbGF6eSBWQUNVVU1zIGhlcmUg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYwppbmRleCBhYjBiNjk0NmNiMC4uOWE5 ZWU1NWZmMWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMKQEAgLTE0OSw3ICsx NDksNyBAQCBfYnRfZGVkdXBfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIEluZGV4VHVw bGUgbmV3aXRlbSwgU2l6ZSBuZXdpdGVtc3osCiAJCQlfYnRfZGVkdXBfc3RhcnRfcGVuZGluZyhz dGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQogCQllbHNlIGlmIChzdGF0ZS0+ZGVkdXBsaWNhdGUg JiYKLQkJCQkgX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwKSA+IG5r ZXlhdHRzICYmCisJCQkJIF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBzdGF0ZS0+YmFzZSwgaXR1 cCwgTlVMTCkgPiBua2V5YXR0cyAmJgogCQkJCSBfYnRfZGVkdXBfc2F2ZV9odGlkKHN0YXRlLCBp dHVwKSkKIAkJewogCQkJLyoKQEAgLTM3NSw3ICszNzUsNyBAQCBfYnRfYm90dG9tdXBkZWxfcGFz cyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkvKiBpdHVw IHN0YXJ0cyBmaXJzdCBwZW5kaW5nIGludGVydmFsICovCiAJCQlfYnRfZGVkdXBfc3RhcnRfcGVu ZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQotCQllbHNlIGlmIChfYnRfa2VlcF9uYXR0 c19mYXN0KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXApID4gbmtleWF0dHMgJiYKKwkJZWxzZSBpZiAo X2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwLCBOVUxMKSA+IG5rZXlh dHRzICYmCiAJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQoc3RhdGUsIGl0dXApKQogCQl7CiAJCQkv KiBUdXBsZSBpcyBlcXVhbDsganVzdCBhZGRlZCBpdHMgVElEcyB0byBwZW5kaW5nIGludGVydmFs ICovCkBAIC03OTAsMTIgKzc5MCwxMiBAQCBfYnRfZG9fc2luZ2xldmFsKFJlbGF0aW9uIHJlbCwg UGFnZSBwYWdlLCBCVERlZHVwU3RhdGUgc3RhdGUsCiAJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChw YWdlLCBtaW5vZmYpOwogCWl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0ocGFnZSwgaXRl bWlkKTsKIAotCWlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbmV3aXRlbSwgaXR1cCkgPiBu a2V5YXR0cykKKwlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5ld2l0ZW0sIGl0dXAsIE5V TEwpID4gbmtleWF0dHMpCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIFBhZ2VH ZXRNYXhPZmZzZXROdW1iZXIocGFnZSkpOwogCQlpdHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJ dGVtKHBhZ2UsIGl0ZW1pZCk7CiAKLQkJaWYgKF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBuZXdp dGVtLCBpdHVwKSA+IG5rZXlhdHRzKQorCQlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5l d2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggNTNiN2RkZmZmMGUuLmVlOTRhYjUwOWU3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtODQsNiArODQsNyBAQCB0eXBl ZGVmIHN0cnVjdCBCVFNwb29sCiAJUmVsYXRpb24JaW5kZXg7CiAJYm9vbAkJaXN1bmlxdWU7CiAJ Ym9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OworCWJvb2wJCXVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiB9 IEJUU3Bvb2w7CiAKIC8qCkBAIC0xMDIsNiArMTAzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQlRTaGFy ZWQKIAlPaWQJCQlpbmRleHJlbGlkOwogCWJvb2wJCWlzdW5pcXVlOwogCWJvb2wJCW51bGxzX25v dF9kaXN0aW5jdDsKKwlib29sCQl1bmlxdWVfZGVhZF9pZ25vcmVkOwogCWJvb2wJCWlzY29uY3Vy cmVudDsKIAlpbnQJCQlzY2FudHVwbGVzb3J0c3RhdGVzOwogCkBAIC0yMDQsMTUgKzIwNiwxMyBA QCB0eXBlZGVmIHN0cnVjdCBCVExlYWRlcgogICovCiB0eXBlZGVmIHN0cnVjdCBCVEJ1aWxkU3Rh dGUKIHsKLQlib29sCQlpc3VuaXF1ZTsKLQlib29sCQludWxsc19ub3RfZGlzdGluY3Q7CiAJYm9v bAkJaGF2ZWRlYWQ7CiAJUmVsYXRpb24JaGVhcDsKIAlCVFNwb29sICAgICpzcG9vbDsKIAogCS8q Ci0JICogc3Bvb2wyIGlzIG5lZWRlZCBvbmx5IHdoZW4gdGhlIGluZGV4IGlzIGEgdW5pcXVlIGlu ZGV4LiBEZWFkIHR1cGxlcyBhcmUKLQkgKiBwdXQgaW50byBzcG9vbDIgaW5zdGVhZCBvZiBzcG9v bCBpbiBvcmRlciB0byBhdm9pZCB1bmlxdWVuZXNzIGNoZWNrLgorCSAqIHNwb29sMiBpcyBuZWVk ZWQgb25seSB3aGVuIHRoZSBpbmRleCBpcyBhIHVuaXF1ZSBpbmRleCBhbmQgYnVpbGQgbm9uLWNv bmN1cnJlbnRseS4KKwkgKiBEZWFkIHR1cGxlcyBhcmUgcHV0IGludG8gc3Bvb2wyIGluc3RlYWQg b2Ygc3Bvb2wgaW4gb3JkZXIgdG8gYXZvaWQgdW5pcXVlbmVzcyBjaGVjay4KIAkgKi8KIAlCVFNw b29sICAgICpzcG9vbDI7CiAJZG91YmxlCQlpbmR0dXBsZXM7CkBAIC0yNTksNyArMjU5LDcgQEAg c3RhdGljIGRvdWJsZSBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAogc3RhdGljIHZvaWQgX2J0X3Nwb29sZGVzdHJveShCVFNwb29sICpidHNwb29sKTsK IHN0YXRpYyB2b2lkIF9idF9zcG9vbChCVFNwb29sICpidHNwb29sLCBJdGVtUG9pbnRlciBzZWxm LAogCQkJCQkgIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCk7Ci1zdGF0aWMgdm9pZCBfYnRf bGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0 X3NuYXBzaG90cyk7CitzdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2ws IEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIGlzY29uY3VycmVudCk7CiBzdGF0aWMgdm9pZCBfYnRf YnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2ludGVyIHRpZCwgRGF0dW0gKnZh bHVlcywKIAkJCQkJCQkgICBib29sICppc251bGwsIGJvb2wgdHVwbGVJc0FsaXZlLCB2b2lkICpz dGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVmZmVyIF9idF9ibG5ld3BhZ2UoQlRXcml0ZVN0YXRl ICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBAIC0zMDQsOCArMzA0LDYgQEAgYnRidWlsZChSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCVJlc2V0 VXNhZ2UoKTsKICNlbmRpZgkJCQkJCQkvKiBCVFJFRV9CVUlMRF9TVEFUUyAqLwogCi0JYnVpbGRz dGF0ZS5pc3VuaXF1ZSA9IGluZGV4SW5mby0+aWlfVW5pcXVlOwotCWJ1aWxkc3RhdGUubnVsbHNf bm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0OwogCWJ1aWxkc3Rh dGUuaGF2ZWRlYWQgPSBmYWxzZTsKIAlidWlsZHN0YXRlLmhlYXAgPSBoZWFwOwogCWJ1aWxkc3Rh dGUuc3Bvb2wgPSBOVUxMOwpAQCAtMzIyLDIwICszMjAsMjAgQEAgYnRidWlsZChSZWxhdGlvbiBo ZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCQkgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUoaW5kZXgpKTsKIAogCXJlbHR1cGxlcyA9IF9idF9zcG9vbHNfaGVhcHNj YW4oaGVhcCwgaW5kZXgsICZidWlsZHN0YXRlLCBpbmRleEluZm8pOwotCUFzc2VydCghaW5kZXhJ bmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3Vy cmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAq IEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEpIGNvbXBsZXRpbmcgdGhlIHNvcnQgb2YgdGhlIHNwb29s IGZpbGUsICgyKQogCSAqIGluc2VydGluZyB0aGUgc29ydGVkIHR1cGxlcyBpbnRvIGJ0cmVlIHBh Z2VzIGFuZCAoMykgYnVpbGRpbmcgdGhlIHVwcGVyCiAJICogbGV2ZWxzLiAgRmluYWxseSwgaXQg bWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRvIGVuZCB1c2Ugb2YgcGFyYWxsZWxpc20uCiAJICovCi0J X2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWluZGV4 SW5mby0+aWlfVW5pcXVlICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CisJX2J0X2xlYWZi dWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgaW5kZXhJbmZvLT5paV9D b25jdXJyZW50KTsKIAlfYnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3RhdGUuc3Bvb2wpOwogCWlmIChi dWlsZHN0YXRlLnNwb29sMikKIAkJX2J0X3Nwb29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sMik7 CiAJaWYgKGJ1aWxkc3RhdGUuYnRsZWFkZXIpCiAJCV9idF9lbmRfcGFyYWxsZWwoYnVpbGRzdGF0 ZS5idGxlYWRlcik7Ci0JQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJ bmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwor CUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKIAogCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxv YyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOwogCkBAIC0zODIsNiArMzgwLDExIEBAIF9idF9z cG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwKIAlidHNwb29sLT5pbmRleCA9IGluZGV4OwogCWJ0c3Bvb2wtPmlzdW5p cXVlID0gaW5kZXhJbmZvLT5paV9VbmlxdWU7CiAJYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0 ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0OworCS8qCisJICogV2UgbmVlZCB0byBp Z25vcmUgZGVhZCB0dXBsZXMgZm9yIHVuaXF1ZSBjaGVja3MgaW4gY2FzZSBvZiBjb25jdXJyZW50 IGJ1aWxkLgorCSAqIEl0IGlzIHJlcXVpcmVkIGJlY2F1c2Ugb3IgcGVyaW9kaWMgcmVzZXQgb2Yg c25hcHNob3QuCisJICovCisJYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGluZGV4SW5m by0+aWlfQ29uY3VycmVudCAmJiBpbmRleEluZm8tPmlpX1VuaXF1ZTsKIAogCS8qIFNhdmUgYXMg cHJpbWFyeSBzcG9vbCAqLwogCWJ1aWxkc3RhdGUtPnNwb29sID0gYnRzcG9vbDsKQEAgLTQzMCw4 ICs0MzMsOSBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGlu ZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJICogdGhlIHVzZSBvZiBwYXJhbGxlbGlz bSBvciBhbnkgb3RoZXIgZmFjdG9yLgogCSAqLwogCWJ1aWxkc3RhdGUtPnNwb29sLT5zb3J0c3Rh dGUgPQotCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGJ1aWxkc3Rh dGUtPmlzdW5pcXVlLAotCQkJCQkJCQkJYnVpbGRzdGF0ZS0+bnVsbHNfbm90X2Rpc3RpbmN0LAor CQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGJ0c3Bvb2wtPmlzdW5p cXVlLAorCQkJCQkJCQkJYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0LAorCQkJCQkJCQkJYnRz cG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCwKIAkJCQkJCQkJCW1haW50ZW5hbmNlX3dvcmtfbWVt LCBjb29yZGluYXRlLAogCQkJCQkJCQkJVFVQTEVTT1JUX05PTkUpOwogCkBAIC00MzksOCArNDQz LDEyIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs IEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkgKiBJZiBidWlsZGluZyBhIHVuaXF1ZSBpbmRl eCwgcHV0IGRlYWQgdHVwbGVzIGluIGEgc2Vjb25kIHNwb29sIHRvIGtlZXAKIAkgKiB0aGVtIG91 dCBvZiB0aGUgdW5pcXVlbmVzcyBjaGVjay4gIFdlIGV4cGVjdCB0aGF0IHRoZSBzZWNvbmQgc3Bv b2wgKGZvcgogCSAqIGRlYWQgdHVwbGVzKSB3b24ndCBnZXQgdmVyeSBmdWxsLCBzbyB3ZSBnaXZl IGl0IG9ubHkgd29ya19tZW0uCisJICoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQg ZGVhZCB0dXBsZXMgYXJlIG5vdCBuZWVkIHRvIGJlIHB1dCBpbnRvIGluZGV4CisJICogc2luY2Ug d2Ugd2FpdCBmb3IgYWxsIHNuYXBzaG90cyBvbGRlciB0aGFuIHJlZmVyZW5jZSBzbmFwc2hvdCBk dXJpbmcgdGhlCisJICogdmFsaWRhdGlvbiBwaGFzZS4KIAkgKi8KLQlpZiAoaW5kZXhJbmZvLT5p aV9VbmlxdWUpCisJaWYgKGluZGV4SW5mby0+aWlfVW5pcXVlICYmICFpbmRleEluZm8tPmlpX0Nv bmN1cnJlbnQpCiAJewogCQlCVFNwb29sICAgICpidHNwb29sMiA9IChCVFNwb29sICopIHBhbGxv YzAoc2l6ZW9mKEJUU3Bvb2wpKTsKIAkJU29ydENvb3JkaW5hdGUgY29vcmRpbmF0ZTIgPSBOVUxM OwpAQCAtNDcxLDcgKzQ3OSw3IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwg UmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkJICogZnVsbCwgc28g d2UgZ2l2ZSBpdCBvbmx5IHdvcmtfbWVtCiAJCSAqLwogCQlidWlsZHN0YXRlLT5zcG9vbDItPnNv cnRzdGF0ZSA9Ci0JCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGZh bHNlLCBmYWxzZSwgd29ya19tZW0sCisJCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVh cCwgaW5kZXgsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHdvcmtfbWVtLAogCQkJCQkJCQkJCWNvb3Jk aW5hdGUyLCBUVVBMRVNPUlRfTk9ORSk7CiAJfQogCkBAIC00ODQsNyArNDkyLDcgQEAgX2J0X3Nw b29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLAogCQlyZWx0dXBsZXMgPSBfYnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRz dGF0ZSwKIAkJCQkJCQkJCQkgICZpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluKTsKIAlJbnZh bGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7Ci0JQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJl bnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2Fj dGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qCiAJICogU2V0IHRoZSBwcm9ncmVz cyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAgUmVzZXQgdGhlIGJsb2NrIG51bWJlcgpAQCAt NTQwLDcgKzU0OCw3IEBAIF9idF9zcG9vbChCVFNwb29sICpidHNwb29sLCBJdGVtUG9pbnRlciBz ZWxmLCBEYXR1bSAqdmFsdWVzLCBib29sICppc251bGwpCiAgKiBjcmVhdGUgYW4gZW50aXJlIGJ0 cmVlLgogICovCiBzdGF0aWMgdm9pZAotX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBC VFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpCitfYnRfbGVhZmJ1aWxkKEJU U3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIGlzY29uY3VycmVudCkKIHsK IAlCVFdyaXRlU3RhdGUgd3N0YXRlOwogCkBAIC01NjIsNyArNTcwLDcgQEAgX2J0X2xlYWZidWls ZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hv dHMpCiAJCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfUEVSRk9STVNPUlRfMik7CiAJCXR1 cGxlc29ydF9wZXJmb3Jtc29ydChidHNwb29sMi0+c29ydHN0YXRlKTsKIAl9Ci0JQXNzZXJ0KCFy ZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwor CUFzc2VydCghaXNjb25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKIAogCXdzdGF0ZS5oZWFwID0gYnRzcG9vbC0+aGVhcDsKIAl3c3RhdGUuaW5kZXggPSBi dHNwb29sLT5pbmRleDsKQEAgLTU3Niw3ICs1ODQsNyBAQCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wg KmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cykKIAogCXBn c3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAog CQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfTEVBRl9MT0FEKTsKLQlBc3NlcnQoIXJlc2V0 X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNz ZXJ0KCFpc2NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikp OwogCV9idF9sb2FkKCZ3c3RhdGUsIGJ0c3Bvb2wsIGJ0c3Bvb2wyKTsKIH0KIApAQCAtMTE1NSwx MyArMTE2MywxMTcgQEAgX2J0X2xvYWQoQlRXcml0ZVN0YXRlICp3c3RhdGUsIEJUU3Bvb2wgKmJ0 c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCVNvcnRTdXBwb3J0IHNvcnRLZXlzOwogCWludDY0 CQl0dXBsZXNfZG9uZSA9IDA7CiAJYm9vbAkJZGVkdXBsaWNhdGU7CisJYm9vbAkJZmFpbF9vbl9h bGl2ZV9kdXBsaWNhdGU7CiAKIAl3c3RhdGUtPmJ1bGtzdGF0ZSA9IHNtZ3JfYnVsa19zdGFydF9y ZWwod3N0YXRlLT5pbmRleCwgTUFJTl9GT1JLTlVNKTsKIAogCWRlZHVwbGljYXRlID0gd3N0YXRl LT5pbnNrZXktPmFsbGVxdWFsaW1hZ2UgJiYgIWJ0c3Bvb2wtPmlzdW5pcXVlICYmCiAJCUJUR2V0 RGVkdXBsaWNhdGVJdGVtcyh3c3RhdGUtPmluZGV4KTsKKwkvKgorCSAqIFRoZSB1bmlxdWVfZGVh ZF9pZ25vcmVkIGRvZXMgbm90IGd1YXJhbnRlZSBhYnNlbmNlIG9mIG11bHRpcGxlIGFsaXZlCisJ ICogdHVwbGVzIHdpdGggc2FtZSB2YWx1ZXMgZXhpc3RzIGluIHRoZSBzcG9vbC4gU3VjaCB0aGlu ZyBtYXkgaGFwcGVuIGlmCisJICogYWxpdmUgdHVwbGVzIGFyZSBsb2NhdGVkIGJldHdlZW4gYSBm ZXcgZGVhZCB0dXBsZXMsIGxpa2UgdGhpczogYWRkZGEuCisJICovCisJZmFpbF9vbl9hbGl2ZV9k dXBsaWNhdGUgPSBidHNwb29sLT51bmlxdWVfZGVhZF9pZ25vcmVkOwogCi0JaWYgKG1lcmdlKQor CWlmIChmYWlsX29uX2FsaXZlX2R1cGxpY2F0ZSkKKwl7CisJCWJvb2wJc2Vlbl9hbGl2ZSA9IGZh bHNlLAorCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7CisJCUluZGV4VHVwbGUgcHJldiA9IE5VTEw7 CisJCVR1cGxlVGFibGVTbG90IAkJKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVs YXRpb25HZXREZXNjcih3c3RhdGUtPmhlYXApLAorCQkJCQkJCQkJCQkJCQkJICAgJlRUU09wc0J1 ZmZlckhlYXBUdXBsZSk7CisJCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNoID0gdGFibGVfaW5k ZXhfZmV0Y2hfYmVnaW4od3N0YXRlLT5oZWFwKTsKKworCQlBc3NlcnQoYnRzcG9vbC0+aXN1bmlx dWUpOworCQlBc3NlcnQoIWJ0c3Bvb2wyKTsKKworCQl3aGlsZSAoKGl0dXAgPSB0dXBsZXNvcnRf Z2V0aW5kZXh0dXBsZShidHNwb29sLT5zb3J0c3RhdGUsIHRydWUpKSAhPSBOVUxMKQorCQl7CisJ CQlib29sCXR1cGxlc19lcXVhbCA9IGZhbHNlOworCisJCQkvKiBXaGVuIHdlIHNlZSBmaXJzdCB0 dXBsZSwgY3JlYXRlIGZpcnN0IGluZGV4IHBhZ2UgKi8KKwkJCWlmIChzdGF0ZSA9PSBOVUxMKQor CQkJCXN0YXRlID0gX2J0X3BhZ2VzdGF0ZSh3c3RhdGUsIDApOworCisJCQlpZiAocHJldiAhPSBO VUxMKSAvKiBpZiBpcyBub3QgdGhlIGZpcnN0IHR1cGxlICovCisJCQl7CisJCQkJYm9vbAloYXNf bnVsbHMgPSBmYWxzZSwKKwkJCQkJCWNhbGxfYWdhaW4sIC8qIGp1c3QgdG8gcGFzcyBzb21ldGhp bmcgKi8KKwkJCQkJCWlnbm9yZWQsICAvKiBqdXN0IHRvIHBhc3Mgc29tZXRoaW5nICovCisJCQkJ CQlub3dfYWxpdmU7CisJCQkJSXRlbVBvaW50ZXJEYXRhIHRpZDsKKworCQkJCS8qIGlmIHRoaXMg dHVwbGVzIGVxdWFsIHRvIHByZXZpb3VzZSBvbmU/ICovCisJCQkJaWYgKHdzdGF0ZS0+aW5za2V5 LT5hbGxlcXVhbGltYWdlKQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2VlcF9uYXR0c19mYXN0 KHdzdGF0ZS0+aW5kZXgsIHByZXYsIGl0dXAsICZoYXNfbnVsbHMpID4ga2V5c3o7CisJCQkJZWxz ZQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2VlcF9uYXR0cyh3c3RhdGUtPmluZGV4LCBwcmV2 LCBpdHVwLHdzdGF0ZS0+aW5za2V5LCAmaGFzX251bGxzKSA+IGtleXN6OworCisJCQkJLyogaGFu ZGxlIG51bGwgdmFsdWVzIGNvcnJlY3RseSAqLworCQkJCWlmIChoYXNfbnVsbHMgJiYgIWJ0c3Bv b2wtPm51bGxzX25vdF9kaXN0aW5jdCkKKwkJCQkJdHVwbGVzX2VxdWFsID0gZmFsc2U7CisKKwkJ CQlpZiAodHVwbGVzX2VxdWFsKQorCQkJCXsKKwkJCQkJLyogY2hlY2sgcHJldmlvdXMgdHVwbGUg aWYgbm90IHlldCAqLworCQkJCQlpZiAoIXByZXZfdGVzdGVkKQorCQkJCQl7CisJCQkJCQljYWxs X2FnYWluID0gZmFsc2U7CisJCQkJCQl0aWQgPSBwcmV2LT50X3RpZDsKKwkJCQkJCXNlZW5fYWxp dmUgPSB0YWJsZV9pbmRleF9mZXRjaF90dXBsZShmZXRjaCwgJnRpZCwgU25hcHNob3RTZWxmLCBz bG90LCAmY2FsbF9hZ2FpbiwgJmlnbm9yZWQpOworCQkJCQkJcHJldl90ZXN0ZWQgPSB0cnVlOwor CQkJCQl9CisKKwkJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlOworCQkJCQl0aWQgPSBpdHVwLT50X3Rp ZDsKKwkJCQkJbm93X2FsaXZlID0gdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQs IFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4sICZpZ25vcmVkKTsKKworCQkJCQkvKiBh cmUgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIGRldGVjdGVkIGluIGVxdWFsIGdyb3VwPyAqLworCQkJ CQlpZiAoc2Vlbl9hbGl2ZSAmJiBub3dfYWxpdmUpCisJCQkJCXsKKwkJCQkJCWNoYXIgKmtleV9k ZXNjOworCQkJCQkJVHVwbGVEZXNjIHR1cERlcyA9IFJlbGF0aW9uR2V0RGVzY3Iod3N0YXRlLT5p bmRleCk7CisJCQkJCQlib29sIGlzbnVsbFtJTkRFWF9NQVhfS0VZU107CisJCQkJCQlEYXR1bSB2 YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOworCisJCQkJCQlpbmRleF9kZWZvcm1fdHVwbGUoaXR1cCwg dHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCQkJCWtleV9kZXNjID0gQnVpbGRJbmRleFZh bHVlRGVzY3JpcHRpb24od3N0YXRlLT5pbmRleCwgdmFsdWVzLCBpc251bGwpOworCisJCQkJCQkv KiBrZWVwIHRoaXMgbWVzc2FnZSBpbiBzeW5jIHdpdGggdGhlIHNhbWUgaW4gY29tcGFyZXR1cF9p bmRleF9idHJlZV90aWVicmVhayAqLworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9OKSwKKwkJCQkJCQkJCQllcnJtc2coImNvdWxk IG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNcIiIsCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHdzdGF0ZS0+aW5kZXgpKSwKKwkJCQkJCQkJCQlrZXlfZGVzYyA/IGVy cmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQuIiwga2V5X2Rlc2MpIDoKKwkJCQkJCQkJCQll cnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0LiIpLAorCQkJCQkJCQkJCWVycnRhYmxlY29u c3RyYWludCh3c3RhdGUtPmhlYXAsCisJCQkJCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHdzdGF0ZS0+aW5kZXgpKSkpOworCQkJCQl9CisJCQkJCXNlZW5fYWxpdmUgfD0gbm93 X2FsaXZlOworCQkJCX0KKwkJCX0KKworCQkJaWYgKCF0dXBsZXNfZXF1YWwpCisJCQl7CisJCQkJ c2Vlbl9hbGl2ZSA9IGZhbHNlOworCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7CisJCQl9CisKKwkJ CV9idF9idWlsZGFkZCh3c3RhdGUsIHN0YXRlLCBpdHVwLCAwKTsKKwkJCWlmIChwcmV2KSBwZnJl ZShwcmV2KTsKKwkJCXByZXYgPSBDb3B5SW5kZXhUdXBsZShpdHVwKTsKKworCQkJLyogUmVwb3J0 IHByb2dyZXNzICovCisJCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NS RUFURUlEWF9UVVBMRVNfRE9ORSwKKwkJCQkJCQkJCQkgKyt0dXBsZXNfZG9uZSk7CisJCX0KKwkJ RXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKwkJdGFibGVfaW5kZXhfZmV0Y2hf ZW5kKGZldGNoKTsKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4p KTsKKwl9CisJZWxzZSBpZiAobWVyZ2UpCiAJewogCQkvKgogCQkgKiBBbm90aGVyIEJUU3Bvb2wg Zm9yIGRlYWQgdHVwbGVzIGV4aXN0cy4gTm93IHdlIGhhdmUgdG8gbWVyZ2UKQEAgLTEzMjEsNyAr MTQzMyw3IEBAIF9idF9sb2FkKEJUV3JpdGVTdGF0ZSAqd3N0YXRlLCBCVFNwb29sICpidHNwb29s LCBCVFNwb29sICpidHNwb29sMikKIAkJCQkJCQkJCQlJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKIAkJ CX0KIAkJCWVsc2UgaWYgKF9idF9rZWVwX25hdHRzX2Zhc3Qod3N0YXRlLT5pbmRleCwgZHN0YXRl LT5iYXNlLAotCQkJCQkJCQkJCSBpdHVwKSA+IGtleXN6ICYmCisJCQkJCQkJCQkJIGl0dXAsIE5V TEwpID4ga2V5c3ogJiYKIAkJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQoZHN0YXRlLCBpdHVwKSkK IAkJCXsKIAkJCQkvKgpAQCAtMTQxOCw3ICsxNTMwLDYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJU QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQog CUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0 cnVlOwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7Ci0JYm9vbAkJcmVz ZXRfc25hcHNob3Q7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9Q QVJUSUNJUEFUSU9OCkBAIC0xNDM2LDIxICsxNTQ3LDEyIEBAIF9idF9iZWdpbl9wYXJhbGxlbChC VEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkK IAogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFkZXJwYXJ0aWNpcGF0ZXMgPyByZXF1ZXN0ICsg MSA6IHJlcXVlc3Q7CiAKLSAgICAvKgotCSAqIEZvciBjb25jdXJyZW50IG5vbi11bmlxdWUgaW5k ZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cwotCSAqIHRvIGFs bG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4gVGhpcyBpcyBzYWZlIHNpbmNlIHRoZXNl IGJ1aWxkcyBkb24ndAotCSAqIHJlcXVpcmUgYSBjb25zaXN0ZW50IHZpZXcgYWNyb3NzIHRoZSBl bnRpcmUgc2Nhbi4gVW5pcXVlIGluZGV4ZXMgc3RpbGwgbmVlZAotCSAqIGEgc3RhYmxlIHNuYXBz aG90IHRvIHByb3Blcmx5IGVuZm9yY2UgdW5pcXVlbmVzcyBjb25zdHJhaW50cy4KLSAgICAgKi8K LQlyZXNldF9zbmFwc2hvdCA9IGlzY29uY3VycmVudCAmJiAhYnRzcG9vbC0+aXN1bmlxdWU7Ci0K IAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5v cm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0 IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tz IChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQog CSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5k IGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LCB3aGlsZSB0aGF0 IHNuYXBzaG90IG1heSBiZSByZXNldCBwZXJpb2RpY2FsbHkgaW4KLQkgKiBjYXNlIG9mIG5vbi11 bmlxdWUgaW5kZXguCisJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCwgd2hpbGUgdGhhdCBzbmFw c2hvdCBtYXkgYmUgcmVzZXQgcGVyaW9kaWNhbGx5LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50 KQogCXsKQEAgLTE0NTgsMTYgKzE1NjAsMTYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCQlzbmFw c2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsK IAl9Ci0JZWxzZSBpZiAocmVzZXRfc25hcHNob3QpCisJZWxzZQogCXsKKwkJLyoKKwkJICogRm9y IGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBz aG90cyB0byBhbGxvdworCQkgKiB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UuIFRoaXMgaXMg c2FmZSBzaW5jZSB0aGVzZSBidWlsZHMgZG9uJ3QKKwkJICogcmVxdWlyZSBhIGNvbnNpc3RlbnQg dmlldyBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLgorCQkgKi8KIAkJc25hcHNob3QgPSBJbnZhbGlk U25hcHNob3Q7CiAJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkp OwogCX0KLQllbHNlCi0JewotCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCgpKTsKLQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKLQl9CiAK IAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JUUkVFX1NI QVJFRCB3b3Jrc3BhY2UsIGFuZApAQCAtMTUzNyw2ICsxNjM5LDcgQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCWJ0c2hhcmVkLT5pbmRleHJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChidHNwb29sLT5p bmRleCk7CiAJYnRzaGFyZWQtPmlzdW5pcXVlID0gYnRzcG9vbC0+aXN1bmlxdWU7CiAJYnRzaGFy ZWQtPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdDsKKwli dHNoYXJlZC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9y ZWQ7CiAJYnRzaGFyZWQtPmlzY29uY3VycmVudCA9IGlzY29uY3VycmVudDsKIAlidHNoYXJlZC0+ c2NhbnR1cGxlc29ydHN0YXRlcyA9IHNjYW50dXBsZXNvcnRzdGF0ZXM7CiAJYnRzaGFyZWQtPnF1 ZXJ5aWQgPSBwZ3N0YXRfZ2V0X215X3F1ZXJ5X2lkKCk7CkBAIC0xNTUxLDcgKzE2NTQsNyBAQCBf YnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3Vy cmVudCwgaW50IHJlcXVlc3QpCiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoYnRzcG9v bC0+aGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJl ZCksCiAJCQkJCQkJCSAgc25hcHNob3QsCi0JCQkJCQkJCSAgcmVzZXRfc25hcHNob3QpOworCQkJ CQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgogCSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQt cHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2VydmVkIHNwYWNlLgpAQCAtMTYzMSw3ICsx NzM0LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9v bCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBi dWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKiBX YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3QuCiAJICovCi0J aWYgKHJlc2V0X3NuYXBzaG90KQorCWlmIChpc2NvbmN1cnJlbnQpCiAJCVdhaXRGb3JQYXJhbGxl bFdvcmtlcnNUb0F0dGFjaChwY3h0LCB0cnVlKTsKIAogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNl bHZlcyAqLwpAQCAtMTY0Miw3ICsxNzQ1LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIENh bGxlciBuZWVkcyB0byB3YWl0IGZvciBhbGwgbGF1bmNoZWQgd29ya2VycyB3aGVuIHdlIHJldHVy bi4gIE1ha2UKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5v dCBoYW5nIGZvcmV2ZXIuCiAJICovCi0JaWYgKCFyZXNldF9zbmFwc2hvdCkKKwlpZiAoIWlzY29u Y3VycmVudCkKIAkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsK IAlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwpA QCAtMTc0NSw2ICsxODQ4LDcgQEAgX2J0X2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoQlRC dWlsZFN0YXRlICpidWlsZHN0YXRlKQogCWxlYWRlcndvcmtlci0+aW5kZXggPSBidWlsZHN0YXRl LT5zcG9vbC0+aW5kZXg7CiAJbGVhZGVyd29ya2VyLT5pc3VuaXF1ZSA9IGJ1aWxkc3RhdGUtPnNw b29sLT5pc3VuaXF1ZTsKIAlsZWFkZXJ3b3JrZXItPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ1aWxk c3RhdGUtPnNwb29sLT5udWxsc19ub3RfZGlzdGluY3Q7CisJbGVhZGVyd29ya2VyLT51bmlxdWVf ZGVhZF9pZ25vcmVkID0gYnVpbGRzdGF0ZS0+c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAK IAkvKiBJbml0aWFsaXplIHNlY29uZCBzcG9vbCwgaWYgcmVxdWlyZWQgKi8KIAlpZiAoIWJ0bGVh ZGVyLT5idHNoYXJlZC0+aXN1bmlxdWUpCkBAIC0xODQ4LDExICsxOTUyLDEyIEBAIF9idF9wYXJh bGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlidHNwb29s LT5pbmRleCA9IGluZGV4UmVsOwogCWJ0c3Bvb2wtPmlzdW5pcXVlID0gYnRzaGFyZWQtPmlzdW5p cXVlOwogCWJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c2hhcmVkLT5udWxsc19ub3Rf ZGlzdGluY3Q7CisJYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGJ0c2hhcmVkLT51bmlx dWVfZGVhZF9pZ25vcmVkOwogCiAJLyogTG9vayB1cCBzaGFyZWQgc3RhdGUgcHJpdmF0ZSB0byB0 dXBsZXNvcnQuYyAqLwogCXNoYXJlZHNvcnQgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVM X0tFWV9UVVBMRVNPUlQsIGZhbHNlKTsKIAl0dXBsZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFyZWRz b3J0LCBzZWcpOwotCWlmICghYnRzaGFyZWQtPmlzdW5pcXVlKQorCWlmICghYnRzaGFyZWQtPmlz dW5pcXVlIHx8IGJ0c2hhcmVkLT5pc2NvbmN1cnJlbnQpCiAJewogCQlidHNwb29sMiA9IE5VTEw7 CiAJCXNoYXJlZHNvcnQyID0gTlVMTDsKQEAgLTE5MzIsNiArMjAzNyw3IEBAIF9idF9wYXJhbGxl bF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCQkJ CQkJCQkJCQkJCSBidHNwb29sLT5pbmRleCwKIAkJCQkJCQkJCQkJCQkgYnRzcG9vbC0+aXN1bmlx dWUsCiAJCQkJCQkJCQkJCQkJIGJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdCwKKwkJCQkJCQkJ CQkJCQkgYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCwKIAkJCQkJCQkJCQkJCQkgc29ydG1l bSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJCQkgVFVQTEVTT1JUX05PTkUpOwogCkBAIC0xOTU0 LDE0ICsyMDYwLDEyIEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bv b2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCQljb29yZGluYXRlMi0+blBhcnRpY2lwYW50cyA9IC0x OwogCQljb29yZGluYXRlMi0+c2hhcmVkc29ydCA9IHNoYXJlZHNvcnQyOwogCQlidHNwb29sMi0+ c29ydHN0YXRlID0KLQkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShidHNwb29sLT5oZWFw LCBidHNwb29sLT5pbmRleCwgZmFsc2UsIGZhbHNlLAorCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4 X2J0cmVlKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wtPmluZGV4LCBmYWxzZSwgZmFsc2UsIGZhbHNl LAogCQkJCQkJCQkJCU1pbihzb3J0bWVtLCB3b3JrX21lbSksIGNvb3JkaW5hdGUyLAogCQkJCQkJ CQkJCWZhbHNlKTsKIAl9CiAKIAkvKiBGaWxsIGluIGJ1aWxkc3RhdGUgZm9yIF9idF9idWlsZF9j YWxsYmFjaygpICovCi0JYnVpbGRzdGF0ZS5pc3VuaXF1ZSA9IGJ0c2hhcmVkLT5pc3VuaXF1ZTsK LQlidWlsZHN0YXRlLm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c2hhcmVkLT5udWxsc19ub3RfZGlz dGluY3Q7CiAJYnVpbGRzdGF0ZS5oYXZlZGVhZCA9IGZhbHNlOwogCWJ1aWxkc3RhdGUuaGVhcCA9 IGJ0c3Bvb2wtPmhlYXA7CiAJYnVpbGRzdGF0ZS5zcG9vbCA9IGJ0c3Bvb2w7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKaW5kZXggYjg4YzM5NjE5NWEuLmVkNTQyNWFjNmVj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jCkBAIC02ODgsNyArNjg4 LDcgQEAgX2J0X2FmdGVybmV3aXRlbW9mZihGaW5kU3BsaXREYXRhICpzdGF0ZSwgT2Zmc2V0TnVt YmVyIG1heG9mZiwKIAl7CiAJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQoc3RhdGUtPm9yaWdwYWdl LCBtYXhvZmYpOwogCQl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0oc3RhdGUtPm9yaWdw YWdlLCBpdGVtaWQpOwotCQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5y ZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0pOworCQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19m YXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0sIE5VTEwpOwogCiAJCWlmIChrZWVw bmF0dHMgPiAxICYmIGtlZXBuYXR0cyA8PSBua2V5YXR0cykKIAkJewpAQCAtNzE5LDcgKzcxOSw3 IEBAIF9idF9hZnRlcm5ld2l0ZW1vZmYoRmluZFNwbGl0RGF0YSAqc3RhdGUsIE9mZnNldE51bWJl ciBtYXhvZmYsCiAJCSFfYnRfYWRqYWNlbnRodGlkKCZ0dXAtPnRfdGlkLCAmc3RhdGUtPm5ld2l0 ZW0tPnRfdGlkKSkKIAkJcmV0dXJuIGZhbHNlOwogCS8qIENoZWNrIHNhbWUgY29uZGl0aW9ucyBh cyByaWdodG1vc3QgaXRlbSBjYXNlLCB0b28gKi8KLQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0 c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0pOworCWtlZXBuYXR0cyA9IF9i dF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgdHVwLCBzdGF0ZS0+bmV3aXRlbSwgTlVMTCk7 CiAKIAlpZiAoa2VlcG5hdHRzID4gMSAmJiBrZWVwbmF0dHMgPD0gbmtleWF0dHMpCiAJewpAQCAt OTY4LDcgKzk2OCw3IEBAIF9idF9zdHJhdGVneShGaW5kU3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQ b2ludCAqbGVmdHBhZ2UsCiAJICogYXZvaWQgYXBwZW5kaW5nIGEgaGVhcCBUSUQgaW4gbmV3IGhp Z2gga2V5LCB3ZSdyZSBkb25lLiAgRmluaXNoIHNwbGl0CiAJICogd2l0aCBkZWZhdWx0IHN0cmF0 ZWd5IGFuZCBpbml0aWFsIHNwbGl0IGludGVydmFsLgogCSAqLwotCXBlcmZlY3RwZW5hbHR5ID0g X2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwgcmlnaHRtb3N0KTsKKwlw ZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3Qs IHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZlY3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQog CQlyZXR1cm4gcGVyZmVjdHBlbmFsdHk7CiAKQEAgLTk4OSw3ICs5ODksNyBAQCBfYnRfc3RyYXRl Z3koRmluZFNwbGl0RGF0YSAqc3RhdGUsIFNwbGl0UG9pbnQgKmxlZnRwYWdlLAogCSAqIElmIHBh Z2UgaXMgZW50aXJlbHkgZnVsbCBvZiBkdXBsaWNhdGVzLCBhIHNpbmdsZSB2YWx1ZSBzdHJhdGVn eSBzcGxpdAogCSAqIHdpbGwgYmUgcGVyZm9ybWVkLgogCSAqLwotCXBlcmZlY3RwZW5hbHR5ID0g X2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwgcmlnaHRtb3N0KTsKKwlw ZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3Qs IHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZlY3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQog CXsKIAkJKnN0cmF0ZWd5ID0gU1BMSVRfTUFOWV9EVVBMSUNBVEVTOwpAQCAtMTAyOCw3ICsxMDI4 LDcgQEAgX2J0X3N0cmF0ZWd5KEZpbmRTcGxpdERhdGEgKnN0YXRlLCBTcGxpdFBvaW50ICpsZWZ0 cGFnZSwKIAkJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChzdGF0ZS0+b3JpZ3BhZ2UsIFBfSElLRVkp OwogCQloaWtleSA9IChJbmRleFR1cGxlKSBQYWdlR2V0SXRlbShzdGF0ZS0+b3JpZ3BhZ2UsIGl0 ZW1pZCk7CiAJCXBlcmZlY3RwZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVs LCBoaWtleSwKLQkJCQkJCQkJCQkJIHN0YXRlLT5uZXdpdGVtKTsKKwkJCQkJCQkJCQkJIHN0YXRl LT5uZXdpdGVtLCBOVUxMKTsKIAkJaWYgKHBlcmZlY3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQog CQkJKnN0cmF0ZWd5ID0gU1BMSVRfU0lOR0xFX1ZBTFVFOwogCQllbHNlCkBAIC0xMTUwLDcgKzEx NTAsNyBAQCBfYnRfc3BsaXRfcGVuYWx0eShGaW5kU3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQb2lu dCAqc3BsaXQpCiAJbGFzdGxlZnQgPSBfYnRfc3BsaXRfbGFzdGxlZnQoc3RhdGUsIHNwbGl0KTsK IAlmaXJzdHJpZ2h0ID0gX2J0X3NwbGl0X2ZpcnN0cmlnaHQoc3RhdGUsIHNwbGl0KTsKIAotCXJl dHVybiBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0 KTsKKwlyZXR1cm4gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsYXN0bGVmdCwgZmly c3RyaWdodCwgTlVMTCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHV0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMK aW5kZXggNDFiNGZiZDFjMzcuLjNmZmY1ZjQ1YTlkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnR1dGlscy5jCkBAIC02OCw4ICs2OCw2IEBAIHN0YXRpYyBib29sIF9idF9jaGVja19yb3djb21w YXJlKFNjYW5LZXkgc2tleSwKIAkJCQkJCQkJIFNjYW5EaXJlY3Rpb24gZGlyLCBib29sIGZvcmNl bm9ucmVxdWlyZWQsIGJvb2wgKmNvbnRpbnVlc2Nhbik7CiBzdGF0aWMgdm9pZCBfYnRfY2hlY2tr ZXlzX2xvb2tfYWhlYWQoSW5kZXhTY2FuRGVzYyBzY2FuLCBCVFJlYWRQYWdlU3RhdGUgKnBzdGF0 ZSwKIAkJCQkJCQkJCSBpbnQgdHVwbmF0dHMsIFR1cGxlRGVzYyB0dXBkZXNjKTsKLXN0YXRpYyBp bnQJX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LAotCQkJ CQkJICAgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LCBCVFNjYW5JbnNlcnQgaXR1cF9rZXkpOwogCiAK IC8qCkBAIC0yNDIzLDcgKzI0MjEsNyBAQCBfYnRfc2V0X3N0YXJ0aWtleShJbmRleFNjYW5EZXNj IHNjYW4sIEJUUmVhZFBhZ2VTdGF0ZSAqcHN0YXRlKQogCWxhc3R0dXAgPSAoSW5kZXhUdXBsZSkg UGFnZUdldEl0ZW0ocHN0YXRlLT5wYWdlLCBpaWQpOwogCiAJLyogRGV0ZXJtaW5lIHRoZSBmaXJz dCBhdHRyaWJ1dGUgd2hvc2UgdmFsdWVzIGNoYW5nZSBvbiBjYWxsZXIncyBwYWdlICovCi0JZmly c3RjaGFuZ2luZ2F0dG51bSA9IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBmaXJzdHR1cCwgbGFz dHR1cCk7CisJZmlyc3RjaGFuZ2luZ2F0dG51bSA9IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBm aXJzdHR1cCwgbGFzdHR1cCwgTlVMTCk7CiAKIAlmb3IgKDsgc3RhcnRpa2V5IDwgc28tPm51bWJl ck9mS2V5czsgc3RhcnRpa2V5KyspCiAJewpAQCAtMzg1OSw3ICszODU3LDcgQEAgX2J0X3RydW5j YXRlKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJp Z2h0LAogCUFzc2VydCghQlRyZWVUdXBsZUlzUGl2b3QobGFzdGxlZnQpICYmICFCVHJlZVR1cGxl SXNQaXZvdChmaXJzdHJpZ2h0KSk7CiAKIAkvKiBEZXRlcm1pbmUgaG93IG1hbnkgYXR0cmlidXRl cyBtdXN0IGJlIGtlcHQgaW4gdHJ1bmNhdGVkIHR1cGxlICovCi0Ja2VlcG5hdHRzID0gX2J0X2tl ZXBfbmF0dHMocmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgaXR1cF9rZXkpOworCWtlZXBuYXR0 cyA9IF9idF9rZWVwX25hdHRzKHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQsIGl0dXBfa2V5LCBO VUxMKTsKIAogI2lmZGVmIERFQlVHX05PX1RSVU5DQVRFCiAJLyogRm9yY2UgdHJ1bmNhdGlvbiB0 byBiZSBpbmVmZmVjdGl2ZSBmb3IgdGVzdGluZyBwdXJwb3NlcyAqLwpAQCAtMzk3NywxNyArMzk3 NSwyNCBAQCBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJ bmRleFR1cGxlIGZpcnN0cmlnaHQsCiAvKgogICogX2J0X2tlZXBfbmF0dHMgLSBob3cgbWFueSBr ZXkgYXR0cmlidXRlcyB0byBrZWVwIHdoZW4gdHJ1bmNhdGluZy4KICAqCisgKiBUaGlzIGlzIGV4 cG9ydGVkIHRvIGJlIHVzZWQgYXMgY29tcGFyaXNvbiBmdW5jdGlvbiBkdXJpbmcgY29uY3VycmVu dAorICogdW5pcXVlIGluZGV4IGJ1aWxkIGluIGNhc2UgX2J0X2tlZXBfbmF0dHNfZmFzdCBpcyBu b3Qgc3VpdGFibGUgYmVjYXVzZQorICogY29sbGF0aW9uIGlzIG5vdCAiYWxsZXF1YWxpbWFnZSIv ZGVkdXBsaWNhdGlvbi1zYWZlLgorICoKICAqIENhbGxlciBwcm92aWRlcyB0d28gdHVwbGVzIHRo YXQgZW5jbG9zZSBhIHNwbGl0IHBvaW50LiAgQ2FsbGVyJ3MgaW5zZXJ0aW9uCiAgKiBzY2Fua2V5 IGlzIHVzZWQgdG8gY29tcGFyZSB0aGUgdHVwbGVzOyB0aGUgc2NhbmtleSdzIGFyZ3VtZW50IHZh bHVlcyBhcmUKICAqIG5vdCBjb25zaWRlcmVkIGhlcmUuCiAgKgorICogaGFzbnVsbHMgdmFsdWUg c2V0IHRvIHRydWUgaW4gY2FzZSBvZiBhbnkgbnVsbCBjb2x1bW4gaW4gYW55IHR1cGxlLgorICoK ICAqIFRoaXMgY2FuIHJldHVybiBhIG51bWJlciBvZiBhdHRyaWJ1dGVzIHRoYXQgaXMgb25lIGdy ZWF0ZXIgdGhhbiB0aGUKICAqIG51bWJlciBvZiBrZXkgYXR0cmlidXRlcyBmb3IgdGhlIGluZGV4 IHJlbGF0aW9uLiAgVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUKICAqIGNhbGxlciBtdXN0IHVzZSBh IGhlYXAgVElEIGFzIGEgdW5pcXVlLWlmaWVyIGluIG5ldyBwaXZvdCB0dXBsZS4KICAqLwotc3Rh dGljIGludAoraW50CiBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFz dGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKLQkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tl eSkKKwkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tleSwKKwkJCSAgIGJvb2wgKmhhc251bGxzKQog ewogCWludAkJCW5rZXlhdHRzID0gSW5kZXhSZWxhdGlvbkdldE51bWJlck9mS2V5QXR0cmlidXRl cyhyZWwpOwogCVR1cGxlRGVzYwlpdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKQEAg LTQwMTMsNiArNDAxOCw4IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBs ZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogCiAJCWRhdHVtMSA9IGluZGV4X2dl dGF0dHIobGFzdGxlZnQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwxKTsKIAkJZGF0dW0yID0g aW5kZXhfZ2V0YXR0cihmaXJzdHJpZ2h0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMik7CisJ CWlmIChoYXNudWxscykKKwkJCSgqaGFzbnVsbHMpIHw9IChpc051bGwxIHx8IGlzTnVsbDIpOwog CiAJCWlmIChpc051bGwxICE9IGlzTnVsbDIpCiAJCQlicmVhazsKQEAgLTQwMzIsNyArNDAzOSw3 IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5k ZXhUdXBsZSBmaXJzdHJpZ2h0LAogCSAqIGV4cGVjdGVkIGluIGFuIGFsbGVxdWFsaW1hZ2UgaW5k ZXguCiAJICovCiAJQXNzZXJ0KCFpdHVwX2tleS0+YWxsZXF1YWxpbWFnZSB8fAotCQkgICBrZWVw bmF0dHMgPT0gX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0KSk7 CisJCSAgIGtlZXBuYXR0cyA9PSBfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbGFzdGxlZnQsIGZp cnN0cmlnaHQsIE5VTEwpKTsKIAogCXJldHVybiBrZWVwbmF0dHM7CiB9CkBAIC00MDQzLDcgKzQw NTAsOCBAQCBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQs IEluZGV4VHVwbGUgZmlyc3RyaWdodCwKICAqIFRoaXMgaXMgZXhwb3J0ZWQgc28gdGhhdCBhIGNh bmRpZGF0ZSBzcGxpdCBwb2ludCBjYW4gaGF2ZSBpdHMgZWZmZWN0IG9uCiAgKiBzdWZmaXggdHJ1 bmNhdGlvbiBpbmV4cGVuc2l2ZWx5IGV2YWx1YXRlZCBhaGVhZCBvZiB0aW1lIHdoZW4gZmluZGlu ZyBhCiAgKiBzcGxpdCBsb2NhdGlvbi4gIEEgbmFpdmUgYml0d2lzZSBhcHByb2FjaCB0byBkYXR1 bSBjb21wYXJpc29ucyBpcyB1c2VkIHRvCi0gKiBzYXZlIGN5Y2xlcy4KKyAqIHNhdmUgY3ljbGVz LiBBbHNvLCBpdCBtYXkgYmUgdXNlZCBhcyBjb21wYXJpc29uIGZ1bmN0aW9uIGR1cmluZyBjb25j dXJyZW50CisgKiBidWlsZCBvZiB1bmlxdWUgaW5kZXguCiAgKgogICogVGhlIGFwcHJvYWNoIHRh a2VuIGhlcmUgdXN1YWxseSBwcm92aWRlcyB0aGUgc2FtZSBhbnN3ZXIgYXMgX2J0X2tlZXBfbmF0 dHMKICAqIHdpbGwgKGZvciB0aGUgc2FtZSBwYWlyIG9mIHR1cGxlcyBmcm9tIGEgaGVhcGtleXNw YWNlIGluZGV4KSwgc2luY2UgdGhlCkBAIC00MDUyLDYgKzQwNjAsOCBAQCBfYnRfa2VlcF9uYXR0 cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdo dCwKICAqICJlcXVhbCBpbWFnZSIgY29sdW1ucywgcm91dGluZSBpcyBndWFyYW50ZWVkIHRvIGdp dmUgdGhlIHNhbWUgcmVzdWx0IGFzCiAgKiBfYnRfa2VlcF9uYXR0cyB3b3VsZC4KICAqCisgKiBo YXNudWxscyB2YWx1ZSBzZXQgdG8gdHJ1ZSBpbiBjYXNlIG9mIGFueSBudWxsIGNvbHVtbiBpbiBh bnkgdHVwbGUuCisgKgogICogQ2FsbGVycyBjYW4gcmVseSBvbiB0aGUgZmFjdCB0aGF0IGF0dHJp YnV0ZXMgY29uc2lkZXJlZCBlcXVhbCBoZXJlIGFyZQogICogZGVmaW5pdGVseSBhbHNvIGVxdWFs IGFjY29yZGluZyB0byBfYnRfa2VlcF9uYXR0cywgZXZlbiB3aGVuIHRoZSBpbmRleCB1c2VzCiAg KiBhbiBvcGNsYXNzIG9yIGNvbGxhdGlvbiB0aGF0IGlzIG5vdCAiYWxsZXF1YWxpbWFnZSIvZGVk dXBsaWNhdGlvbi1zYWZlLgpAQCAtNDA2MCw3ICs0MDcwLDggQEAgX2J0X2tlZXBfbmF0dHMoUmVs YXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAg KiBtb3JlIGJhbGFuY2VkIHNwbGl0IHBvaW50LgogICovCiBpbnQKLV9idF9rZWVwX25hdHRzX2Zh c3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmln aHQpCitfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVm dCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAorCQkJCQlib29sICpoYXNudWxscykKIHsKIAlUdXBs ZURlc2MJaXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CiAJaW50CQkJa2V5c3ogPSBJ bmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1dGVzKHJlbCk7CkBAIC00MDc3LDYgKzQw ODgsOCBAQCBfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0 bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0KQogCiAJCWRhdHVtMSA9IGluZGV4X2dldGF0dHIo bGFzdGxlZnQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwxKTsKIAkJZGF0dW0yID0gaW5kZXhf Z2V0YXR0cihmaXJzdHJpZ2h0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMik7CisJCWlmICho YXNudWxscykKKwkJCSpoYXNudWxscyB8PSAoaXNOdWxsMSB8IGlzTnVsbDIpOwogCQlhdHQgPSBU dXBsZURlc2NDb21wYWN0QXR0cihpdHVwZGVzYywgYXR0bnVtIC0gMSk7CiAKIAkJaWYgKGlzTnVs bDEgIT0gaXNOdWxsMikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCAzNzE4NjM4OTVkZC4uYzAxNzIyNmZh MzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTE1MzIsNyArMTUzMiw3IEBAIGluZGV4X2NvbmN1cnJl bnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAKIAkvKiBJbnZhbGlkYXRlIGNhdGFsb2cg c25hcHNob3QganVzdCBmb3IgYXNzZXJ0ICovCiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgp OwotCUFzc2VydChpbmRleEluZm8tPmlpX1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKIAogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXgg ZnVuY3Rpb25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CkBAIC0z MzIzLDkgKzMzMjMsOSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlv biwKICAqIGlmIHdlIHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVz IHVzIHdpdGggYW4gaW5kZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFk ZGVkIHRvIHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAgKgotICogRnVydGhl cm1vcmUsIGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09fUkVTRVRfU05BUFNI T1QgZm9yIHRoZQotICogc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hvdCB0byBiZSBzZXQg YXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uCi0gKiBmb3IgdGhhdCBpcyB0byBw cm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgorICogRnVydGhlcm1vcmUsIHdlIHNl dCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlIHNjYW4sIHdoaWNoIGNhdXNlcyBuZXcKKyAqIHNu YXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFzb24gIGZv ciB0aGF0IGlzIHRvCisgKiBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgogICoK ICAqIE5leHQsIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5vdCAi aW5kaXN2YWxpZCIpIGFuZAogICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0 YXJ0IGEgdGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRz LmMKaW5kZXggYTc5OTQ2NTJlYWQuLmRkYTFlYjBlOTRjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYwpAQCAtMTY5Myw4ICsxNjkzLDggQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICog Y2hhaW5zIGNhbiBiZSBjcmVhdGVkIHdoZXJlIHRoZSBuZXcgdHVwbGUgYW5kIHRoZSBvbGQgdHVw bGUgaW4gdGhlCiAJICogY2hhaW4gaGF2ZSBkaWZmZXJlbnQgaW5kZXgga2V5cy4KIAkgKgotCSAq IFdlIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2libGUgdXNp bmcgc2luZ2xlIG9yCi0JICogbXVsdGlwbGUgcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdlIGNhbiBi ZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCisJICogV2UgYnVpbGQgdGhlIGluZGV4IHVz aW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBtdWx0aXBsZQorCSAqIHJlZnJl c2hpbmcgc25hcHNob3RzLiBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bwog CSAqIHRoZXNlIHR1cGxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5kZXgsIHNpbmNl IGFueSB1cGRhdGVzIG1hZGUKIAkgKiBieSB0cmFuc2FjdGlvbnMgdGhhdCBkaWRuJ3Qga25vdyBh Ym91dCB0aGUgaW5kZXggYXJlIG5vdyBjb21taXR0ZWQgb3IKIAkgKiByb2xsZWQgYmFjay4gIFRo dXMsIGVhY2ggdmlzaWJsZSB0dXBsZSBpcyBlaXRoZXIgdGhlIGVuZCBvZiBpdHMKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYwppbmRleCA4OTBjZGJlMTIwNC4uMWNl MmUyYWQ2M2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFy aWFudHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMK QEAgLTI0LDYgKzI0LDggQEAKICNpbmNsdWRlICJhY2Nlc3MvaGFzaC5oIgogI2luY2x1ZGUgImFj Y2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCisjaW5jbHVk ZSAiYWNjZXNzL3JlbHNjYW4uaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1 ZGUgImNhdGFsb2cvaW5kZXguaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlvbi5oIgog I2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCkBAIC0zMyw2ICszNSw3IEBACiAjaW5jbHVk ZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAi dXRpbHMvdHVwbGVzb3J0LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAKIAogLyogc29y dC10eXBlIGNvZGVzIGZvciBzb3J0X19zdGFydCBwcm9iZXMgKi8KQEAgLTEzNCw2ICsxMzcsNyBA QCB0eXBlZGVmIHN0cnVjdAogCiAJYm9vbAkJZW5mb3JjZVVuaXF1ZTsJLyogY29tcGxhaW4gaWYg d2UgZmluZCBkdXBsaWNhdGUgdHVwbGVzICovCiAJYm9vbAkJdW5pcXVlTnVsbHNOb3REaXN0aW5j dDsgLyogdW5pcXVlIGNvbnN0cmFpbnQgbnVsbCB0cmVhdG1lbnQgKi8KKwlib29sCQl1bmlxdWVE ZWFkSWdub3JlZDsgLyogaWdub3JlIGRlYWQgdHVwbGVzIGluIHVuaXF1ZSBjaGVjayAqLwogfSBU dXBsZXNvcnRJbmRleEJUcmVlQXJnOwogCiAvKgpAQCAtMzU5LDYgKzM2Myw3IEBAIHR1cGxlc29y dF9iZWdpbl9pbmRleF9idHJlZShSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCVJlbGF0aW9uIGlu ZGV4UmVsLAogCQkJCQkJCWJvb2wgZW5mb3JjZVVuaXF1ZSwKIAkJCQkJCQlib29sIHVuaXF1ZU51 bGxzTm90RGlzdGluY3QsCisJCQkJCQkJYm9vbCB1bmlxdWVEZWFkSWdub3JlZCwKIAkJCQkJCQlp bnQgd29ya01lbSwKIAkJCQkJCQlTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlLAogCQkJCQkJCWlu dCBzb3J0b3B0KQpAQCAtNDAxLDYgKzQwNiw3IEBAIHR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJl ZShSZWxhdGlvbiBoZWFwUmVsLAogCWFyZy0+aW5kZXguaW5kZXhSZWwgPSBpbmRleFJlbDsKIAlh cmctPmVuZm9yY2VVbmlxdWUgPSBlbmZvcmNlVW5pcXVlOwogCWFyZy0+dW5pcXVlTnVsbHNOb3RE aXN0aW5jdCA9IHVuaXF1ZU51bGxzTm90RGlzdGluY3Q7CisJYXJnLT51bmlxdWVEZWFkSWdub3Jl ZCA9IHVuaXF1ZURlYWRJZ25vcmVkOwogCiAJaW5kZXhTY2FuS2V5ID0gX2J0X21rc2NhbmtleShp bmRleFJlbCwgTlVMTCk7CiAKQEAgLTE2NTQsNiArMTY2MCw3IEBAIGNvbXBhcmV0dXBfaW5kZXhf YnRyZWVfdGllYnJlYWsoY29uc3QgU29ydFR1cGxlICphLCBjb25zdCBTb3J0VHVwbGUgKmIsCiAJ CURhdHVtCQl2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOwogCQlib29sCQlpc251bGxbSU5ERVhfTUFY X0tFWVNdOwogCQljaGFyCSAgICprZXlfZGVzYzsKKwkJYm9vbAkJdW5pcXVlQ2hlY2tGYWlsID0g dHJ1ZTsKIAogCQkvKgogCQkgKiBTb21lIHJhdGhlciBicmFpbi1kZWFkIGltcGxlbWVudGF0aW9u cyBvZiBxc29ydCAoc3VjaCBhcyB0aGUgb25lIGluCkBAIC0xNjYzLDE4ICsxNjcwLDU4IEBAIGNv bXBhcmV0dXBfaW5kZXhfYnRyZWVfdGllYnJlYWsoY29uc3QgU29ydFR1cGxlICphLCBjb25zdCBT b3J0VHVwbGUgKmIsCiAJCSAqLwogCQlBc3NlcnQodHVwbGUxICE9IHR1cGxlMik7CiAKLQkJaW5k ZXhfZGVmb3JtX3R1cGxlKHR1cGxlMSwgdHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7Ci0KLQkJa2V5 X2Rlc2MgPSBCdWlsZEluZGV4VmFsdWVEZXNjcmlwdGlvbihhcmctPmluZGV4LmluZGV4UmVsLCB2 YWx1ZXMsIGlzbnVsbCk7Ci0KLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RF X1VOSVFVRV9WSU9MQVRJT04pLAotCQkJCSBlcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgdW5pcXVl IGluZGV4IFwiJXNcIiIsCi0JCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4 LmluZGV4UmVsKSksCi0JCQkJIGtleV9kZXNjID8gZXJyZGV0YWlsKCJLZXkgJXMgaXMgZHVwbGlj YXRlZC4iLCBrZXlfZGVzYykgOgotCQkJCSBlcnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0 LiIpLAotCQkJCSBlcnJ0YWJsZWNvbnN0cmFpbnQoYXJnLT5pbmRleC5oZWFwUmVsLAotCQkJCQkJ CQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoYXJnLT5pbmRleC5pbmRleFJlbCkpKSk7CisJCS8q IFRoaXMgaXMgZmFpbC1mYXN0IGNoZWNrLCBzZWUgX2J0X2xvYWQgZm9yIGRldGFpbHMuICovCisJ CWlmIChhcmctPnVuaXF1ZURlYWRJZ25vcmVkKQorCQl7CisJCQlib29sCWFueV90dXBsZV9kZWFk LAorCQkJCQljYWxsX2FnYWluID0gZmFsc2UsCisJCQkJCWlnbm9yZWQ7CisKKwkJCVR1cGxlVGFi bGVTbG90CSpzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3Io YXJnLT5pbmRleC5oZWFwUmVsKSwKKwkJCQkJCQkJCQkJCQkJCSAmVFRTT3BzQnVmZmVySGVhcFR1 cGxlKTsKKwkJCUl0ZW1Qb2ludGVyRGF0YSB0aWQgPSB0dXBsZTEtPnRfdGlkOworCisJCQlJbmRl eEZldGNoVGFibGVEYXRhICpmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKGFyZy0+aW5k ZXguaGVhcFJlbCk7CisJCQlhbnlfdHVwbGVfZGVhZCA9ICF0YWJsZV9pbmRleF9mZXRjaF90dXBs ZShmZXRjaCwgJnRpZCwgU25hcHNob3RTZWxmLCBzbG90LCAmY2FsbF9hZ2FpbiwgJmlnbm9yZWQp OworCisJCQlpZiAoIWFueV90dXBsZV9kZWFkKQorCQkJeworCQkJCWNhbGxfYWdhaW4gPSBmYWxz ZTsKKwkJCQl0aWQgPSB0dXBsZTItPnRfdGlkOworCQkJCWFueV90dXBsZV9kZWFkID0gIXRhYmxl X2luZGV4X2ZldGNoX3R1cGxlKGZldGNoLCAmdHVwbGUyLT50X3RpZCwgU25hcHNob3RTZWxmLCBz bG90LCAmY2FsbF9hZ2FpbiwKKwkJCQkJCQkJCQkJCQkJICAmaWdub3JlZCk7CisJCQl9CisKKwkJ CWlmIChhbnlfdHVwbGVfZGVhZCkKKwkJCXsKKwkJCQllbG9nKERFQlVHNSwgInNraXBwaW5nIGR1 cGxpY2F0ZSB2YWx1ZXMgYmVjYXVzZSBzb21lIG9mIHRoZW0gYXJlIGRlYWQ6ICgldSwldSkgdnMg KCV1LCV1KSIsCisJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZ0dXBsZTEtPnRfdGlk KSwKKwkJCQkJIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZ0dXBsZTEtPnRfdGlkKSwKKwkJ CQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJnR1cGxlMi0+dF90aWQpLAorCQkJCQkgSXRl bVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnR1cGxlMi0+dF90aWQpKTsKKworCQkJCXVuaXF1ZUNo ZWNrRmFpbCA9IGZhbHNlOworCQkJfQorCQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChz bG90KTsKKwkJCXRhYmxlX2luZGV4X2ZldGNoX2VuZChmZXRjaCk7CisJCQlBc3NlcnQoIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCQl9CisJCWlmICh1bmlxdWVDaGVja0Zh aWwpCisJCXsKKwkJCWluZGV4X2RlZm9ybV90dXBsZSh0dXBsZTEsIHR1cERlcywgdmFsdWVzLCBp c251bGwpOworCisJCQlrZXlfZGVzYyA9IEJ1aWxkSW5kZXhWYWx1ZURlc2NyaXB0aW9uKGFyZy0+ aW5kZXguaW5kZXhSZWwsIHZhbHVlcywgaXNudWxsKTsKKworCQkJLyoga2VlcCB0aGlzIGVycm9y IG1lc3NhZ2UgaW4gc3luYyB3aXRoIHRoZSBzYW1lIGluIF9idF9sb2FkICovCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOSVFVRV9WSU9MQVRJT04pLAorCQkJCQkJ CWVycm1zZygiY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggXCIlc1wiIiwKKwkJCQkJCQkJ ICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoYXJnLT5pbmRleC5pbmRleFJlbCkpLAorCQkJCQkJ CWtleV9kZXNjID8gZXJyZGV0YWlsKCJLZXkgJXMgaXMgZHVwbGljYXRlZC4iLCBrZXlfZGVzYykg OgorCQkJCQkJCWVycmRldGFpbCgiRHVwbGljYXRlIGtleXMgZXhpc3QuIiksCisJCQkJCQkJZXJy dGFibGVjb25zdHJhaW50KGFyZy0+aW5kZXguaGVhcFJlbCwKKwkJCQkJCQkJCQkJICAgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUoYXJnLT5pbmRleC5pbmRleFJlbCkpKSk7CisJCX0KIAl9CiAKIAkv KgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oIGIvc3JjL2luY2x1ZGUv YWNjZXNzL25idHJlZS5oCmluZGV4IDlhYjQ2N2NiOGZkLi4wYzlmMGUxZjNhNiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9u YnRyZWUuaApAQCAtMTM0MCw4ICsxMzQwLDEwIEBAIGV4dGVybiBib29sIGJ0cHJvcGVydHkoT2lk IGluZGV4X29pZCwgaW50IGF0dG5vLAogZXh0ZXJuIGNoYXIgKmJ0YnVpbGRwaGFzZW5hbWUoaW50 NjQgcGhhc2VudW0pOwogZXh0ZXJuIEluZGV4VHVwbGUgX2J0X3RydW5jYXRlKFJlbGF0aW9uIHJl bCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwKIAkJCQkJCQkgICBJbmRleFR1cGxlIGZpcnN0cmlnaHQs IEJUU2Nhbkluc2VydCBpdHVwX2tleSk7CitleHRlcm4gaW50CV9idF9rZWVwX25hdHRzKFJlbGF0 aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAorCQkJ CQkJICAgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LCBib29sICpoYXNudWxscyk7CiBleHRlcm4gaW50 CV9idF9rZWVwX25hdHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LAot CQkJCQkJCQlJbmRleFR1cGxlIGZpcnN0cmlnaHQpOworCQkJCQkJCQlJbmRleFR1cGxlIGZpcnN0 cmlnaHQsIGJvb2wgKmhhc251bGxzKTsKIGV4dGVybiBib29sIF9idF9jaGVja19uYXR0cyhSZWxh dGlvbiByZWwsIGJvb2wgaGVhcGtleXNwYWNlLCBQYWdlIHBhZ2UsCiAJCQkJCQkJT2Zmc2V0TnVt YmVyIG9mZm51bSk7CiBleHRlcm4gdm9pZCBfYnRfY2hlY2tfdGhpcmRfcGFnZShSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uIGhlYXAsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCA2MTM2MTVjNzhjZC4uOGY1 YWEwZDcxNDYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMTc2Myw5ICsxNzYzLDggQEAgdGFibGVf c2Nhbl9hbmFseXplX25leHRfdHVwbGUoVGFibGVTY2FuRGVzYyBzY2FuLCBUcmFuc2FjdGlvbklk IE9sZGVzdFhtaW4sCiAgKiBUaGlzIG9ubHkgcmVhbGx5IG1ha2VzIHNlbnNlIGZvciBoZWFwIEFN LCBpdCBtaWdodCBuZWVkIHRvIGJlIGdlbmVyYWxpemVkCiAgKiBmb3Igb3RoZXIgQU1zIGxhdGVy LgogICoKLSAqIEluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBjb25jdXJyZW50ICBpbmRleCBidWlsZCBT T19SRVNFVF9TTkFQU0hPVCBpcyBhcHBsaWVkCi0gKiBmb3IgdGhlIHNjYW4uIFRoYXQgbGVhZHMg Zm9yIGNoYW5naW5nIHNuYXBzaG90cyBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4KLSAqIGhvcml6 b24gcHJvcGFnYXRlLgorICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGluZGV4IGJ1aWxkIFNPX1JF U0VUX1NOQVBTSE9UIGlzIGFwcGxpZWQgZm9yIHRoZSBzY2FuLgorICogVGhhdCBsZWFkcyBmb3Ig Y2hhbmdpbmcgc25hcHNob3RzIG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1pbiBob3Jpem9uIHByb3Bh Z2F0ZS4KICAqLwogc3RhdGljIGlubGluZSBkb3VibGUKIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4o UmVsYXRpb24gdGFibGVfcmVsLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVz b3J0LmggYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaAppbmRleCBlZjc5ZjI1OWY5My4u ZWI5YmMzMGU1ZGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oCkBAIC00MjksNiArNDI5LDcgQEAgZXh0 ZXJuIFR1cGxlc29ydHN0YXRlICp0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24g aGVhcFJlbCwKIAkJCQkJCQkJCQkJCSAgIFJlbGF0aW9uIGluZGV4UmVsLAogCQkJCQkJCQkJCQkJ ICAgYm9vbCBlbmZvcmNlVW5pcXVlLAogCQkJCQkJCQkJCQkJICAgYm9vbCB1bmlxdWVOdWxsc05v dERpc3RpbmN0LAorCQkJCQkJCQkJCQkJICAgYm9vbAl1bmlxdWVEZWFkSWdub3JlZCwKIAkJCQkJ CQkJCQkJCSAgIGludCB3b3JrTWVtLCBTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlLAogCQkJCQkJ CQkJCQkJICAgaW50IHNvcnRvcHQpOwogZXh0ZXJuIFR1cGxlc29ydHN0YXRlICp0dXBsZXNvcnRf YmVnaW5faW5kZXhfaGFzaChSZWxhdGlvbiBoZWFwUmVsLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0 IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9z bmFwc2hvdHMub3V0CmluZGV4IDU5NWE0MDAwY2UwLi45ZjAzZmEzMDMzYyAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFw c2hvdHMub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3Rl ZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dApAQCAtNDEsNyArNDEsMTEgQEAgRU5EOyAkJDsKIC0t LS0tLS0tLS0tLS0tLS0KIEFMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFs bGVsX3dvcmtlcnM9MCk7CiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04g Y2ljX3Jlc2V0X3NuYXAudGJsKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5f c25hcHNob3RfZWZmZWN0aXZlCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg dGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZl Y3RpdmUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKIE5PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5f c3RyYXRfcmVzZXRfc25hcHNob3RzCkBAIC04Niw3ICs5MCw5IEBAIFNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2RldGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScpOwogKDEg cm93KQogCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0 X3NuYXAudGJsKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1AgSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5U TFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQotLSAK Mi40My4wCgo= --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="v24-0004-Support-snapshot-resets-in-parallel-concurrent-i.patch" Content-Disposition: attachment; filename="v24-0004-Support-snapshot-resets-in-parallel-concurrent-i.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm0u9 RnJvbSBjZjQwMTY3ZjYyMTExMWM2MTQ4OWQ5NjQwNzY5Y2NiYzg4ODVkMGYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxIEphbiAyMDI1IDE1OjI1OjIwICswMTAwClN1YmplY3Q6IFtQ QVRDSCB2MjQgMDQvMTJdIFN1cHBvcnQgc25hcHNob3QgcmVzZXRzIGluIHBhcmFsbGVsIGNvbmN1 cnJlbnQKIGluZGV4IGJ1aWxkcwoKRXh0ZW5kIHBlcmlvZGljIHNuYXBzaG90IHJlc2V0IHN1cHBv cnQgdG8gcGFyYWxsZWwgYnVpbGRzLCBwcmV2aW91c2x5IGxpbWl0ZWQgdG8gbm9uLXBhcmFsbGVs IG9wZXJhdGlvbnMuIFRoaXMgYWxsb3dzIHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZSBkdXJp bmcgcGFyYWxsZWwgY29uY3VycmVudCBpbmRleCBidWlsZHMgYXMgd2VsbC4KClRoZSBtYWluIGxp bWl0YXRpb24gb2YgYXBwbHlpbmcgdGhhdCB0ZWNobmljIHRvIHBhcmFsbGVsIGJ1aWxkcyB3YXMg YSByZXF1aXJlbWVudCB0byB3YWl0IHVudGlsIHdvcmtlcnMgcHJvY2Vzc2VzIHJlc3RvcmUgdGhl aXIgaW5pdGlhbCBzbmFwc2hvdCBmcm9tIGxlYWRlci4KClRvIGFkZHJlc3MgdGhpcywgZm9sbG93 aW5nIGNoYW5nZXMgYXBwbGllZDoKLSBhZGQgaW5mcmFzdHJ1Y3R1cmUgdG8gdHJhY2sgc25hcHNo b3QgcmVzdG9yYXRpb24gaW4gcGFyYWxsZWwgd29ya2VycwotIGV4dGVuZCBwYXJhbGxlbCBzY2Fu IGluaXRpYWxpemF0aW9uIHRvIHN1cHBvcnQgcGVyaW9kaWMgc25hcHNob3QgcmVzZXRzCi0gd2Fp dCBmb3IgcGFyYWxsZWwgd29ya2VycyB0byByZXN0b3JlIHRoZWlyIGluaXRpYWwgc25hcHNob3Rz IGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggc2NhbgotIHJlbGF4IGxpbWl0YXRpb24gZm9yIHBhcmFs bGVsIHdvcmtlciB0byBjYWxsIEdldExhdGVzdFNuYXBzaG90Ci0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwgNTAgKysrKysrKysrLS0tLS0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyAgICAgICAgICAgIHwgNTAgKysrKysrKysr LS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwg MTIgKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwg NTcgKysrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0u YyAgICAgICAgICAgIHwgMzcgKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9wYXJhbGxlbC5jICAgICAgICAgfCA1MCArKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL3V0aWxz L3RpbWUvc25hcG1nci5jICAgICAgICAgICAgICB8ICA4IC0tLQogc3JjL2luY2x1ZGUvYWNjZXNz L3BhcmFsbGVsLmggICAgICAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9y ZWxzY2FuLmggICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJs ZWFtLmggICAgICAgICAgICAgICAgICB8ICA5ICstLQogLi4uL2V4cGVjdGVkL2NpY19yZXNldF9z bmFwc2hvdHMub3V0ICAgICAgICAgIHwgMjUgKysrKysrKy0KIC4uLi9zcWwvY2ljX3Jlc2V0X3Nu YXBzaG90cy5zcWwgICAgICAgICAgICAgICB8ICA3ICsrLQogMTQgZmlsZXMgY2hhbmdlZCwgMjI1 IGluc2VydGlvbnMoKyksIDg5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRl eCAxODZlZGQwZDIyOS4uNTU1NGNmYTZmNGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTE0 Myw3ICsxNDMsNiBAQCB0eXBlZGVmIHN0cnVjdCBCcmluTGVhZGVyCiAJICovCiAJQnJpblNoYXJl ZCAqYnJpbnNoYXJlZDsKIAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0OwotCVNuYXBzaG90CXNuYXBz aG90OwogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsK IH0gQnJpbkxlYWRlcjsKQEAgLTIzMSw3ICsyMzAsNyBAQCBzdGF0aWMgdm9pZCBicmluX2ZpbGxf ZW1wdHlfcmFuZ2VzKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSwKIHN0YXRpYyB2b2lkIF9icmluX2Jl Z2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIAkJCQkJCQkJIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCk7 CiBzdGF0aWMgdm9pZCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJpbkxlYWRlciAqYnJpbmxlYWRlciwg QnJpbkJ1aWxkU3RhdGUgKnN0YXRlKTsKLXN0YXRpYyBTaXplIF9icmluX3BhcmFsbGVsX2VzdGlt YXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBzbmFwc2hvdCk7CitzdGF0aWMgU2l6 ZSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCk7CiBzdGF0aWMg ZG91YmxlIF9icmluX3BhcmFsbGVsX2hlYXBzY2FuKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7CiBz dGF0aWMgZG91YmxlIF9icmluX3BhcmFsbGVsX21lcmdlKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7 CiBzdGF0aWMgdm9pZCBfYnJpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2VyKEJyaW5CdWls ZFN0YXRlICpidWlsZHN0YXRlLApAQCAtMTIyMSw3ICsxMjIwLDYgQEAgYnJpbmJ1aWxkKFJlbGF0 aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJcmVsdHVw bGVzID0gX2JyaW5fcGFyYWxsZWxfbWVyZ2Uoc3RhdGUpOwogCiAJCV9icmluX2VuZF9wYXJhbGxl bChzdGF0ZS0+YnNfbGVhZGVyLCBzdGF0ZSk7Ci0JCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25j dXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAJZWxz ZQkJCQkJCS8qIG5vIHBhcmFsbGVsIGluZGV4IGJ1aWxkICovCiAJewpAQCAtMTI1NCw3ICsxMjUy LDYgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8g KmluZGV4SW5mbykKIAkJYnJpbl9maWxsX2VtcHR5X3JhbmdlcyhzdGF0ZSwKIAkJCQkJCQkgICBz dGF0ZS0+YnNfY3VyclJhbmdlU3RhcnQsCiAJCQkJCQkJICAgc3RhdGUtPmJzX21heFJhbmdlU3Rh cnQpOwotCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25J ZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCiAJLyogcmVsZWFzZSByZXNvdXJjZXMgKi8K QEAgLTEyNjksNiArMTI2Niw3IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVs dHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gaWR4dHVwbGVzOworCUFzc2VydCghaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhp ZCkpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTIzNjgsNyArMjM2Niw2IEBAIF9icmluX2Jl Z2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIHsKIAlQYXJhbGxlbENvbnRleHQgKnBjeHQ7CiAJaW50CQkJc2NhbnR1 cGxlc29ydHN0YXRlczsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlTaXplCQllc3Ricmluc2hhcmVk OwogCVNpemUJCWVzdHNvcnQ7CiAJQnJpblNoYXJlZCAqYnJpbnNoYXJlZDsKQEAgLTIzOTksMjUg KzIzOTYsMjUgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIFByZXBhcmUgZm9yIHNjYW4g b2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJ ICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRv IG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXgg UkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQotCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRh a2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZl IGFjY29yZGluZyB0byB0aGF0LgorCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1 bGFyIE1WQ0Mgc25hcHNob3QgYW5kIHB1c2ggaXQgYXMgYWN0aXZlLgorCSAqIExhdGVyIHdlIGlu ZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCBzbmFwc2hvdCB3aGlsZSB0aGF0 CisJICogc25hcHNob3QgaXMgcmVzZXQgcGVyaW9kaWNhbGx5LgogCSAqLwogCWlmICghaXNjb25j dXJyZW50KQogCXsKIAkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOwotCQlzbmFwc2hvdCA9 IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKIAl9CiAJ ZWxzZQogCXsKLQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25h cHNob3QoKSk7CisJCUFzc2VydCghQWN0aXZlU25hcHNob3RTZXQoKSk7CiAJCVB1c2hBY3RpdmVT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCX0KIAogCS8qCiAJICogRXN0aW1h dGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlfQlJJTl9TSEFSRUQgd29ya3NwYWNlLgog CSAqLwotCWVzdGJyaW5zaGFyZWQgPSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoaGVh cCwgc25hcHNob3QpOworCWVzdGJyaW5zaGFyZWQgPSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9z aGFyZWQoaGVhcCk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBl c3Ricmluc2hhcmVkKTsKIAllc3Rzb3J0ID0gdHVwbGVzb3J0X2VzdGltYXRlX3NoYXJlZChzY2Fu dHVwbGVzb3J0c3RhdGVzKTsKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0 b3IsIGVzdHNvcnQpOwpAQCAtMjQ1Nyw4ICsyNDU0LDYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwo QnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LAogCXsKIAkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJCVBvcEFjdGl2ZVNuYXBz aG90KCk7Ci0JCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCi0JCQlVbnJlZ2lzdGVyU25h cHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwogCQlFeGl0 UGFyYWxsZWxNb2RlKCk7CiAJCXJldHVybjsKQEAgLTI0ODMsNyArMjQ3OCw4IEBAIF9icmluX2Jl Z2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIAogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKGhlYXAsCiAJ CQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKSwKLQkJ CQkJCQkJICBzbmFwc2hvdCk7CisJCQkJCQkJCSAgaXNjb25jdXJyZW50ID8gSW52YWxpZFNuYXBz aG90IDogU25hcHNob3RBbnksCisJCQkJCQkJCSAgaXNjb25jdXJyZW50KTsKIAogCS8qCiAJICog U3RvcmUgc2hhcmVkIHR1cGxlc29ydC1wcml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2UgcmVzZXJ2 ZWQgc3BhY2UuCkBAIC0yNTI5LDcgKzI1MjUsNiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmlu QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJ CWJyaW5sZWFkZXItPm5wYXJ0aWNpcGFudHR1cGxlc29ydHMrKzsKIAlicmlubGVhZGVyLT5icmlu c2hhcmVkID0gYnJpbnNoYXJlZDsKIAlicmlubGVhZGVyLT5zaGFyZWRzb3J0ID0gc2hhcmVkc29y dDsKLQlicmlubGVhZGVyLT5zbmFwc2hvdCA9IHNuYXBzaG90OwogCWJyaW5sZWFkZXItPndhbHVz YWdlID0gd2FsdXNhZ2U7CiAJYnJpbmxlYWRlci0+YnVmZmVydXNhZ2UgPSBidWZmZXJ1c2FnZTsK IApAQCAtMjU0NSw2ICsyNTQwLDEzIEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0 YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkvKiBTYXZl IGxlYWRlciBzdGF0ZSBub3cgdGhhdCBpdCdzIGNsZWFyIGJ1aWxkIHdpbGwgYmUgcGFyYWxsZWwg Ki8KIAlidWlsZHN0YXRlLT5ic19sZWFkZXIgPSBicmlubGVhZGVyOwogCisJLyoKKwkgKiBJbiBj YXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgc25hcHNob3RzIGFyZSBnb2luZyB0byBiZSByZXNldCBw ZXJpb2RpY2FsbHkuCisJICogV2UgbmVlZCB0byB3YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9y dGVkIGluaXRpYWwgc25hcHNob3QuCisJICovCisJaWYgKGlzY29uY3VycmVudCkKKwkJV2FpdEZv clBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIHRydWUpOworCiAJLyogSm9pbiBoZWFwIHNj YW4gb3Vyc2VsdmVzICovCiAJaWYgKGxlYWRlcnBhcnRpY2lwYXRlcykKIAkJX2JyaW5fbGVhZGVy X3BhcnRpY2lwYXRlX2FzX3dvcmtlcihidWlsZHN0YXRlLCBoZWFwLCBpbmRleCk7CkBAIC0yNTUz LDcgKzI1NTUsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogQ2FsbGVyIG5lZWRzIHRv IHdhaXQgZm9yIGFsbCBsYXVuY2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAq IHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZl ci4KIAkgKi8KLQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFp c2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCBmYWxz ZSk7CiAJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJUG9wQWN0aXZlU25hcHNob3Qo KTsKIH0KQEAgLTI1NzYsOSArMjU3OSw2IEBAIF9icmluX2VuZF9wYXJhbGxlbChCcmluTGVhZGVy ICpicmlubGVhZGVyLCBCcmluQnVpbGRTdGF0ZSAqc3RhdGUpCiAJZm9yIChpID0gMDsgaSA8IGJy aW5sZWFkZXItPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkOyBpKyspCiAJCUluc3RyQWNjdW1QYXJh bGxlbFF1ZXJ5KCZicmlubGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmJyaW5sZWFkZXItPndhbHVz YWdlW2ldKTsKIAotCS8qIEZyZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZDQyBzbmFwc2hvdCwgaWYg b25lIHdhcyB1c2VkICovCi0JaWYgKElzTVZDQ1NuYXBzaG90KGJyaW5sZWFkZXItPnNuYXBzaG90 KSkKLQkJVW5yZWdpc3RlclNuYXBzaG90KGJyaW5sZWFkZXItPnNuYXBzaG90KTsKIAlEZXN0cm95 UGFyYWxsZWxDb250ZXh0KGJyaW5sZWFkZXItPnBjeHQpOwogCUV4aXRQYXJhbGxlbE1vZGUoKTsK IH0KQEAgLTI3NzgsMTQgKzI3NzgsMTQgQEAgX2JyaW5fcGFyYWxsZWxfbWVyZ2UoQnJpbkJ1aWxk U3RhdGUgKnN0YXRlKQogCiAvKgogICogUmV0dXJucyBzaXplIG9mIHNoYXJlZCBtZW1vcnkgcmVx dWlyZWQgdG8gc3RvcmUgc3RhdGUgZm9yIGEgcGFyYWxsZWwKLSAqIGJyaW4gaW5kZXggYnVpbGQg YmFzZWQgb24gdGhlIHNuYXBzaG90IGl0cyBwYXJhbGxlbCBzY2FuIHdpbGwgdXNlLgorICogYnJp biBpbmRleCBidWlsZC4KICAqLwogc3RhdGljIFNpemUKLV9icmluX3BhcmFsbGVsX2VzdGltYXRl X3NoYXJlZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBzbmFwc2hvdCkKK19icmluX3BhcmFsbGVs X2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwKQogewogCS8qIGMuZi4gc2htX3RvY19hbGxv Y2F0ZSBhcyB0byB3aHkgQlVGRkVSQUxJR04gaXMgdXNlZCAqLwogCXJldHVybiBhZGRfc2l6ZShC VUZGRVJBTElHTihzaXplb2YoQnJpblNoYXJlZCkpLAotCQkJCQl0YWJsZV9wYXJhbGxlbHNjYW5f ZXN0aW1hdGUoaGVhcCwgc25hcHNob3QpKTsKKwkJCQkJdGFibGVfcGFyYWxsZWxzY2FuX2VzdGlt YXRlKGhlYXAsIEludmFsaWRTbmFwc2hvdCkpOwogfQogCiAvKgpAQCAtMjgwNyw2ICsyODA3LDcg QEAgX2JyaW5fbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtlcihCcmluQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmUKIAkvKiBQZXJmb3JtIHdvcmsgY29tbW9uIHRvIGFs bCBwYXJ0aWNpcGFudHMgKi8KIAlfYnJpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChidWlsZHN0 YXRlLCBicmlubGVhZGVyLT5icmluc2hhcmVkLAogCQkJCQkJCQkgIGJyaW5sZWFkZXItPnNoYXJl ZHNvcnQsIGhlYXAsIGluZGV4LCBzb3J0bWVtLCB0cnVlKTsKKwlBc3NlcnQoIWJyaW5sZWFkZXIt PmJyaW5zaGFyZWQtPmlzY29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54aWQpKTsKIH0KIAogLyoKQEAgLTI5NDcsNiArMjk0OCwxMyBAQCBfYnJpbl9wYXJhbGxlbF9i dWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAogCV9icmluX3BhcmFs bGVsX3NjYW5fYW5kX2J1aWxkKGJ1aWxkc3RhdGUsIGJyaW5zaGFyZWQsIHNoYXJlZHNvcnQsCiAJ CQkJCQkJCSAgaGVhcFJlbCwgaW5kZXhSZWwsIHNvcnRtZW0sIGZhbHNlKTsKKwlpZiAoYnJpbnNo YXJlZC0+aXNjb25jdXJyZW50KQorCXsKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJSW52YWxp ZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eGlkKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90 KCkpOworCX0KIAogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBl eGVjdXRpb24gKi8KIAlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxf S0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKaW5k ZXggMmY5NDdkMzY2MTkuLmJmMjYxMDZhYTVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0 LmMKQEAgLTEzMiw3ICsxMzIsNiBAQCB0eXBlZGVmIHN0cnVjdCBHaW5MZWFkZXIKIAkgKi8KIAlH aW5CdWlsZFNoYXJlZCAqZ2luc2hhcmVkOwogCVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQ7Ci0JU25h cHNob3QJc25hcHNob3Q7CiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1 ZmZlcnVzYWdlOwogfSBHaW5MZWFkZXI7CkBAIC0xODAsNyArMTc5LDcgQEAgdHlwZWRlZiBzdHJ1 Y3QKIHN0YXRpYyB2b2lkIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCQkJCQkJCWJvb2wgaXNjb25j dXJyZW50LCBpbnQgcmVxdWVzdCk7CiBzdGF0aWMgdm9pZCBfZ2luX2VuZF9wYXJhbGxlbChHaW5M ZWFkZXIgKmdpbmxlYWRlciwgR2luQnVpbGRTdGF0ZSAqc3RhdGUpOwotc3RhdGljIFNpemUgX2dp bl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25hcHNo b3QpOworc3RhdGljIFNpemUgX2dpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24g aGVhcCk7CiBzdGF0aWMgZG91YmxlIF9naW5fcGFyYWxsZWxfaGVhcHNjYW4oR2luQnVpbGRTdGF0 ZSAqc3RhdGUpOwogc3RhdGljIGRvdWJsZSBfZ2luX3BhcmFsbGVsX21lcmdlKEdpbkJ1aWxkU3Rh dGUgKnN0YXRlKTsKIHN0YXRpYyB2b2lkIF9naW5fbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtl cihHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLApAQCAtNzE3LDcgKzcxNiw2IEBAIGdpbmJ1aWxk KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJ cmVsdHVwbGVzID0gX2dpbl9wYXJhbGxlbF9tZXJnZShzdGF0ZSk7CiAKIAkJX2dpbl9lbmRfcGFy YWxsZWwoc3RhdGUtPmJzX2xlYWRlciwgc3RhdGUpOwotCQlBc3NlcnQoIWluZGV4SW5mby0+aWlf Q29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQog CWVsc2UJCQkJCQkvKiBubyBwYXJhbGxlbCBpbmRleCBidWlsZCAqLwogCXsKQEAgLTc0MSw3ICs3 MzksNiBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZv ICppbmRleEluZm8pCiAJCQkJCQkgICBsaXN0LCBubGlzdCwgJmJ1aWxkc3RhdGUuYnVpbGRTdGF0 cyk7CiAJCX0KIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7Ci0JCUFzc2VydCghaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKIAl9CiAKIAlNZW1vcnlDb250ZXh0RGVsZXRlKGJ1aWxkc3RhdGUuZnVuY0N0eCk7CkBA IC03NzEsNiArNzY4LDcgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs IEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxl czsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUFzc2Vy dCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CkBAIC05MDUsNyArOTAzLDYgQEAgX2dp bl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwKIHsKIAlQYXJhbGxlbENvbnRleHQgKnBjeHQ7CiAJaW50CQkJc2Nh bnR1cGxlc29ydHN0YXRlczsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlTaXplCQllc3RnaW5zaGFy ZWQ7CiAJU2l6ZQkJZXN0c29ydDsKIAlHaW5CdWlsZFNoYXJlZCAqZ2luc2hhcmVkOwpAQCAtOTM1 LDI1ICs5MzIsMjUgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0 YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBQcmVwYXJlIGZvciBzY2Fu IG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQog CSAqIFNuYXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBk byBvdXIgb3duIHRpbWUKIAkgKiBxdWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4 IFJFQ0VOVExZX0RFQUQgdHVwbGVzKS4gIEluIGEKLQkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0 YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBpbmRleCB3aGF0ZXZlcidzCi0JICogbGl2 ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVn dWxhciBNVkNDIHNuYXBzaG90IGFuZCBwdXNoIGl0IGFzIGFjdGl2ZS4KKwkgKiBMYXRlciB3ZSBp bmRleCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQgc25hcHNob3Qgd2hpbGUgdGhh dAorCSAqIHNuYXBzaG90IGlzIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKi8KIAlpZiAoIWlzY29u Y3VycmVudCkKIAl7CiAJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKLQkJc25hcHNob3Qg PSBTbmFwc2hvdEFueTsKIAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CiAJfQog CWVsc2UKIAl7Ci0JCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNu YXBzaG90KCkpOworCQlBc3NlcnQoIUFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlQdXNoQWN0aXZl U25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAl9CiAKIAkvKgogCSAqIEVzdGlt YXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0dJTl9TSEFSRUQgd29ya3NwYWNlLgog CSAqLwotCWVzdGdpbnNoYXJlZCA9IF9naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXAs IHNuYXBzaG90KTsKKwllc3RnaW5zaGFyZWQgPSBfZ2luX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJl ZChoZWFwKTsKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIGVzdGdp bnNoYXJlZCk7CiAJZXN0c29ydCA9IHR1cGxlc29ydF9lc3RpbWF0ZV9zaGFyZWQoc2NhbnR1cGxl c29ydHN0YXRlcyk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBl c3Rzb3J0KTsKQEAgLTk5Myw4ICs5OTAsNiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxk U3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCXsKIAkJ aWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0J CWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCi0JCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25h cHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwogCQlFeGl0UGFyYWxsZWxN b2RlKCk7CiAJCXJldHVybjsKQEAgLTEwMTgsNyArMTAxMyw4IEBAIF9naW5fYmVnaW5fcGFyYWxs ZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsCiAKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShoZWFwLAogCQkJCQkJCQkgIFBh cmFsbGVsVGFibGVTY2FuRnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCksCi0JCQkJCQkJCSAg c25hcHNob3QpOworCQkJCQkJCQkgIGlzY29uY3VycmVudCA/IEludmFsaWRTbmFwc2hvdCA6IFNu YXBzaG90QW55LAorCQkJCQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgogCSAqIFN0b3JlIHNo YXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2VydmVkIHNwYWNl LgpAQCAtMTA2MCw3ICsxMDU2LDYgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkJZ2lubGVhZGVy LT5ucGFydGljaXBhbnR0dXBsZXNvcnRzKys7CiAJZ2lubGVhZGVyLT5naW5zaGFyZWQgPSBnaW5z aGFyZWQ7CiAJZ2lubGVhZGVyLT5zaGFyZWRzb3J0ID0gc2hhcmVkc29ydDsKLQlnaW5sZWFkZXIt PnNuYXBzaG90ID0gc25hcHNob3Q7CiAJZ2lubGVhZGVyLT53YWx1c2FnZSA9IHdhbHVzYWdlOwog CWdpbmxlYWRlci0+YnVmZmVydXNhZ2UgPSBidWZmZXJ1c2FnZTsKIApAQCAtMTA3Niw2ICsxMDcx LDEzIEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogU2F2ZSBsZWFkZXIgc3RhdGUgbm93IHRo YXQgaXQncyBjbGVhciBidWlsZCB3aWxsIGJlIHBhcmFsbGVsICovCiAJYnVpbGRzdGF0ZS0+YnNf bGVhZGVyID0gZ2lubGVhZGVyOwogCisJLyoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVp bGQgc25hcHNob3RzIGFyZSBnb2luZyB0byBiZSByZXNldCBwZXJpb2RpY2FsbHkuCisJICogV2Ug bmVlZCB0byB3YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3Qu CisJICovCisJaWYgKGlzY29uY3VycmVudCkKKwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0 YWNoKHBjeHQsIHRydWUpOworCiAJLyogSm9pbiBoZWFwIHNjYW4gb3Vyc2VsdmVzICovCiAJaWYg KGxlYWRlcnBhcnRpY2lwYXRlcykKIAkJX2dpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2Vy KGJ1aWxkc3RhdGUsIGhlYXAsIGluZGV4KTsKQEAgLTEwODQsNyArMTA4Niw4IEBAIF9naW5fYmVn aW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBsYXVuY2hlZCB3 b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10 by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlXYWl0Rm9yUGFyYWxs ZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFpc2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQ YXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCBmYWxzZSk7CiAJaWYgKG5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKIH0KQEAgLTExMDcsOSArMTExMCw2 IEBAIF9naW5fZW5kX3BhcmFsbGVsKEdpbkxlYWRlciAqZ2lubGVhZGVyLCBHaW5CdWlsZFN0YXRl ICpzdGF0ZSkKIAlmb3IgKGkgPSAwOyBpIDwgZ2lubGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVu Y2hlZDsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmZ2lubGVhZGVyLT5idWZmZXJ1 c2FnZVtpXSwgJmdpbmxlYWRlci0+d2FsdXNhZ2VbaV0pOwogCi0JLyogRnJlZSBsYXN0IHJlZmVy ZW5jZSB0byBNVkNDIHNuYXBzaG90LCBpZiBvbmUgd2FzIHVzZWQgKi8KLQlpZiAoSXNNVkNDU25h cHNob3QoZ2lubGVhZGVyLT5zbmFwc2hvdCkpCi0JCVVucmVnaXN0ZXJTbmFwc2hvdChnaW5sZWFk ZXItPnNuYXBzaG90KTsKIAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KGdpbmxlYWRlci0+cGN4dCk7 CiAJRXhpdFBhcmFsbGVsTW9kZSgpOwogfQpAQCAtMTc5MCwxNCArMTc5MCwxNCBAQCBfZ2luX3Bh cmFsbGVsX21lcmdlKEdpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCiAvKgogICogUmV0dXJucyBzaXpl IG9mIHNoYXJlZCBtZW1vcnkgcmVxdWlyZWQgdG8gc3RvcmUgc3RhdGUgZm9yIGEgcGFyYWxsZWwK LSAqIGdpbiBpbmRleCBidWlsZCBiYXNlZCBvbiB0aGUgc25hcHNob3QgaXRzIHBhcmFsbGVsIHNj YW4gd2lsbCB1c2UuCisgKiBnaW4gaW5kZXggYnVpbGQuCiAgKi8KIHN0YXRpYyBTaXplCi1fZ2lu X3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBzbmFwc2hv dCkKK19naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0aW9uIGhlYXApCiB7CiAJLyog Yy5mLiBzaG1fdG9jX2FsbG9jYXRlIGFzIHRvIHdoeSBCVUZGRVJBTElHTiBpcyB1c2VkICovCiAJ cmV0dXJuIGFkZF9zaXplKEJVRkZFUkFMSUdOKHNpemVvZihHaW5CdWlsZFNoYXJlZCkpLAotCQkJ CQl0YWJsZV9wYXJhbGxlbHNjYW5fZXN0aW1hdGUoaGVhcCwgc25hcHNob3QpKTsKKwkJCQkJdGFi bGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKGhlYXAsIEludmFsaWRTbmFwc2hvdCkpOwogfQogCiAv KgpAQCAtMTgyMCw2ICsxODIwLDcgQEAgX2dpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2Vy KEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGEKIAlfZ2luX3Bh cmFsbGVsX3NjYW5fYW5kX2J1aWxkKGJ1aWxkc3RhdGUsIGdpbmxlYWRlci0+Z2luc2hhcmVkLAog CQkJCQkJCQkgZ2lubGVhZGVyLT5zaGFyZWRzb3J0LCBoZWFwLCBpbmRleCwKIAkJCQkJCQkJIHNv cnRtZW0sIHRydWUpOworCUFzc2VydCghZ2lubGVhZGVyLT5naW5zaGFyZWQtPmlzY29uY3VycmVu dCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIH0KIAogLyoKQEAgLTIx NzksNiArMjE4MCwxMyBAQCBfZ2luX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNl Zywgc2htX3RvYyAqdG9jKQogCiAJX2dpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZCgmYnVpbGRz dGF0ZSwgZ2luc2hhcmVkLCBzaGFyZWRzb3J0LAogCQkJCQkJCQkgaGVhcFJlbCwgaW5kZXhSZWws IHNvcnRtZW0sIGZhbHNlKTsKKwlpZiAoZ2luc2hhcmVkLT5pc2NvbmN1cnJlbnQpCisJeworCQlQ b3BBY3RpdmVTbmFwc2hvdCgpOworCQlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJCUFz c2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKKwkJUHVzaEFjdGl2ZVNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJfQogCiAJLyogUmVwb3J0IFdBTC9i dWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwogCWJ1ZmZlcnVzYWdlID0g c2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBlMzJlZTczOTczMy4u YTdlMTY4NzFhZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpA QCAtMTIzNSwxNCArMTIzNSwxMyBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxh dGlvbiBoZWFwUmVsYXRpb24sCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJp ZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChiZWNh dXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiBJbiBhCiAJICogY29u Y3VycmVudCBidWlsZCwgb3IgZHVyaW5nIGJvb3RzdHJhcCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZD QyBzbmFwc2hvdAotCSAqIGFuZCBpbmRleCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRvIHRo YXQuCisJICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGls ZSB0aGF0IHNuYXBzaG90IGlzIHJlc2V0CisJICogZXZlcnkgc28gb2Z0ZW4gKGluIGNhc2Ugb2Yg bm9uLXVuaXF1ZSBpbmRleCkuCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRUcmFuc2FjdGlv bklkOwogCiAJLyoKIAkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5lZWQgY29uc2lzdGVudCBzbmFw c2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCi0JICogSW4gY2FzZSBvZiBwYXJhbGxlbCBzY2FuIHNv bWUgYWRkaXRpb25hbCBpbmZyYXN0cnVjdHVyZSByZXF1aXJlZAotCSAqIHRvIHBlcmZvcm0gc2Nh biB3aXRoIFNPX1JFU0VUX1NOQVBTSE9UIHdoaWNoIGlzIG5vdCB5ZXQgcmVhZHkuCiAJICovCiAJ cmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ICYmCiAJCQkJCSAgIWlu ZGV4SW5mby0+aWlfVW5pcXVlICYmCkBAIC0xMzA0LDggKzEzMDMsMTEgQEAgaGVhcGFtX2luZGV4 X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQlBc3NlcnQoIUlzQm9v dHN0cmFwUHJvY2Vzc2luZ01vZGUoKSk7CiAJCUFzc2VydChhbGxvd19zeW5jKTsKIAkJc25hcHNo b3QgPSBzY2FuLT5yc19zbmFwc2hvdDsKLQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsK LQkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwkJaWYgKCFyZXNldF9zbmFwc2hv dHMpCisJCXsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJCQluZWVkX3BvcF9h Y3RpdmVfc25hcHNob3QgPSB0cnVlOworCQl9CiAJfQogCiAJaHNjYW4gPSAoSGVhcFNjYW5EZXNj KSBzY2FuOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCA3YjA5YWQ4NzhiNy4u NTNiN2RkZmZmMGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29y dC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0zMjIsMjIg KzMyMiwyMCBAQCBidGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleElu Zm8gKmluZGV4SW5mbykKIAkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRleCkpOwogCiAJ cmVsdHVwbGVzID0gX2J0X3Nwb29sc19oZWFwc2NhbihoZWFwLCBpbmRleCwgJmJ1aWxkc3RhdGUs IGluZGV4SW5mbyk7Ci0JQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGlu ZGV4SW5mby0+aWlfVW5pcXVlIHx8Ci0JCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFpbmRleEluZm8t PmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBGaW5pc2ggdGhlIGJ1aWxkIGJ5ICgx KSBjb21wbGV0aW5nIHRoZSBzb3J0IG9mIHRoZSBzcG9vbCBmaWxlLCAoMikKIAkgKiBpbnNlcnRp bmcgdGhlIHNvcnRlZCB0dXBsZXMgaW50byBidHJlZSBwYWdlcyBhbmQgKDMpIGJ1aWxkaW5nIHRo ZSB1cHBlcgogCSAqIGxldmVscy4gIEZpbmFsbHksIGl0IG1heSBhbHNvIGJlIG5lY2Vzc2FyeSB0 byBlbmQgdXNlIG9mIHBhcmFsbGVsaXNtLgogCSAqLwotCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0 ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2Vy cyAmJiBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOworCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0 ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRleEluZm8tPmlpX1VuaXF1ZSAmJiBpbmRl eEluZm8tPmlpX0NvbmN1cnJlbnQpOwogCV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9v bCk7CiAJaWYgKGJ1aWxkc3RhdGUuc3Bvb2wyKQogCQlfYnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3Rh dGUuc3Bvb2wyKTsKIAlpZiAoYnVpbGRzdGF0ZS5idGxlYWRlcikKIAkJX2J0X2VuZF9wYXJhbGxl bChidWlsZHN0YXRlLmJ0bGVhZGVyKTsKLQlBc3NlcnQoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdv cmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKLQkJICAhaW5kZXhJbmZvLT5paV9Db25j dXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQo IWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAlyZXN1bHQgPSAoSW5kZXhCdWls ZFJlc3VsdCAqKSBwYWxsb2Moc2l6ZW9mKEluZGV4QnVpbGRSZXN1bHQpKTsKIApAQCAtNDg2LDgg KzQ4NCw3IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkJcmVsdHVwbGVzID0gX2J0X3BhcmFsbGVs X2hlYXBzY2FuKGJ1aWxkc3RhdGUsCiAJCQkJCQkJCQkJICAmaW5kZXhJbmZvLT5paV9Ccm9rZW5I b3RDaGFpbik7CiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwotCUFzc2VydChpbmRleElu Zm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fAotCQkgICFp bmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+ aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8q CiAJICogU2V0IHRoZSBwcm9ncmVzcyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAgUmVzZXQg dGhlIGJsb2NrIG51bWJlcgpAQCAtMTQyMSw2ICsxNDE4LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVs KEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0 KQogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMg PSB0cnVlOwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJYm9vbAkJ cmVzZXRfc25hcHNob3Q7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURF Ul9QQVJUSUNJUEFUSU9OCkBAIC0xNDM4LDEyICsxNDM2LDIxIEBAIF9idF9iZWdpbl9wYXJhbGxl bChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVz dCkKIAogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFkZXJwYXJ0aWNpcGF0ZXMgPyByZXF1ZXN0 ICsgMSA6IHJlcXVlc3Q7CiAKKyAgICAvKgorCSAqIEZvciBjb25jdXJyZW50IG5vbi11bmlxdWUg aW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cworCSAqIHRv IGFsbG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4gVGhpcyBpcyBzYWZlIHNpbmNlIHRo ZXNlIGJ1aWxkcyBkb24ndAorCSAqIHJlcXVpcmUgYSBjb25zaXN0ZW50IHZpZXcgYWNyb3NzIHRo ZSBlbnRpcmUgc2Nhbi4gVW5pcXVlIGluZGV4ZXMgc3RpbGwgbmVlZAorCSAqIGEgc3RhYmxlIHNu YXBzaG90IHRvIHByb3Blcmx5IGVuZm9yY2UgdW5pcXVlbmVzcyBjb25zdHJhaW50cy4KKyAgICAg Ki8KKwlyZXNldF9zbmFwc2hvdCA9IGlzY29uY3VycmVudCAmJiAhYnRzcG9vbC0+aXN1bmlxdWU7 CisKIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBh IG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBt dXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hl Y2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4g YQogCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3Qg YW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LgorCSAqIGxp dmUgYWNjb3JkaW5nIHRvIHRoYXQsIHdoaWxlIHRoYXQgc25hcHNob3QgbWF5IGJlIHJlc2V0IHBl cmlvZGljYWxseSBpbgorCSAqIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleC4KIAkgKi8KIAlpZiAo IWlzY29uY3VycmVudCkKIAl7CkBAIC0xNDUxLDYgKzE0NTgsMTEgQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVfc25hcHNo b3QgPSBmYWxzZTsKIAl9CisJZWxzZSBpZiAocmVzZXRfc25hcHNob3QpCisJeworCQlzbmFwc2hv dCA9IEludmFsaWRTbmFwc2hvdDsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9u U25hcHNob3QoKSk7CisJfQogCWVsc2UKIAl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hv dChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwpAQCAtMTUxMSw3ICsxNTIzLDcgQEAgX2J0X2Jl Z2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQs IGludCByZXF1ZXN0KQogCXsKIAkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJCVBv cEFjdGl2ZVNuYXBzaG90KCk7Ci0JCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCisJCWlm IChzbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3QgJiYgSXNNVkNDU25hcHNob3Qoc25hcHNob3Qp KQogCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29u dGV4dChwY3h0KTsKIAkJRXhpdFBhcmFsbGVsTW9kZSgpOwpAQCAtMTUzOCw3ICsxNTUwLDggQEAg X2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1 cnJlbnQsIGludCByZXF1ZXN0KQogCWJ0c2hhcmVkLT5icm9rZW5ob3RjaGFpbiA9IGZhbHNlOwog CXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKGJ0c3Bvb2wtPmhlYXAsCiAJCQkJCQkJCSAg UGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpLAotCQkJCQkJCQkgIHNuYXBz aG90KTsKKwkJCQkJCQkJICBzbmFwc2hvdCwKKwkJCQkJCQkJICByZXNldF9zbmFwc2hvdCk7CiAK IAkvKgogCSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNo IHdlIHJlc2VydmVkIHNwYWNlLgpAQCAtMTYxNCw2ICsxNjI3LDEzIEBAIF9idF9iZWdpbl9wYXJh bGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVx dWVzdCkKIAkvKiBTYXZlIGxlYWRlciBzdGF0ZSBub3cgdGhhdCBpdCdzIGNsZWFyIGJ1aWxkIHdp bGwgYmUgcGFyYWxsZWwgKi8KIAlidWlsZHN0YXRlLT5idGxlYWRlciA9IGJ0bGVhZGVyOwogCisJ LyoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgc25hcHNob3RzIGFyZSBnb2luZyB0 byBiZSByZXNldCBwZXJpb2RpY2FsbHkuCisJICogV2FpdCB1bnRpbCBhbGwgd29ya2VycyBpbXBv cnRlZCBpbml0aWFsIHNuYXBzaG90LgorCSAqLworCWlmIChyZXNldF9zbmFwc2hvdCkKKwkJV2Fp dEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIHRydWUpOworCiAJLyogSm9pbiBoZWFw IHNjYW4gb3Vyc2VsdmVzICovCiAJaWYgKGxlYWRlcnBhcnRpY2lwYXRlcykKIAkJX2J0X2xlYWRl cl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSk7CkBAIC0xNjIyLDcgKzE2NDIsOCBA QCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29u Y3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBs YXVuY2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0aGUg ZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlXYWl0 Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFyZXNldF9zbmFwc2hvdCkK KwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsKIAlpZiAobmVl ZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQpAQCAtMTY0 Niw3ICsxNjY3LDcgQEAgX2J0X2VuZF9wYXJhbGxlbChCVExlYWRlciAqYnRsZWFkZXIpCiAJCUlu c3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZidGxlYWRlci0+YnVmZmVydXNhZ2VbaV0sICZidGxlYWRl ci0+d2FsdXNhZ2VbaV0pOwogCiAJLyogRnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkNDIHNuYXBz aG90LCBpZiBvbmUgd2FzIHVzZWQgKi8KLQlpZiAoSXNNVkNDU25hcHNob3QoYnRsZWFkZXItPnNu YXBzaG90KSkKKwlpZiAoYnRsZWFkZXItPnNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCAmJiBJ c01WQ0NTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3QpKQogCQlVbnJlZ2lzdGVyU25hcHNob3Qo YnRsZWFkZXItPnNuYXBzaG90KTsKIAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KGJ0bGVhZGVyLT5w Y3h0KTsKIAlFeGl0UGFyYWxsZWxNb2RlKCk7CkBAIC0xODk2LDYgKzE5MTcsNyBAQCBfYnRfcGFy YWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwK IAlTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlOwogCUJUQnVpbGRTdGF0ZSBidWlsZHN0YXRlOwog CVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CiAJZG91 YmxlCQlyZWx0dXBsZXM7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwogCkBAIC0xOTUwLDExICsx OTcyLDE1IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJU U3Bvb2wgKmJ0c3Bvb2wyLAogCS8qIEpvaW4gcGFyYWxsZWwgc2NhbiAqLwogCWluZGV4SW5mbyA9 IEJ1aWxkSW5kZXhJbmZvKGJ0c3Bvb2wtPmluZGV4KTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJl bnQgPSBidHNoYXJlZC0+aXNjb25jdXJyZW50OwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFy YWxsZWwoYnRzcG9vbC0+aGVhcCwKLQkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hh cmVkKGJ0c2hhcmVkKSk7CisJcHNjYW4gPSBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChi dHNoYXJlZCk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChidHNwb29sLT5oZWFw LCBwc2Nhbik7CiAJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihidHNwb29sLT5o ZWFwLCBidHNwb29sLT5pbmRleCwgaW5kZXhJbmZvLAogCQkJCQkJCQkJICAgdHJ1ZSwgcHJvZ3Jl c3MsIF9idF9idWlsZF9jYWxsYmFjaywKIAkJCQkJCQkJCSAgICZidWlsZHN0YXRlLCBzY2FuKTsK KwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25h cHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJQXNzZXJ0KCFwc2Nhbi0+cGhzX3Jlc2V0 X3NuYXBzaG90IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8q IEV4ZWN1dGUgdGhpcyB3b3JrZXIncyBwYXJ0IG9mIHRoZSBzb3J0ICovCiAJaWYgKHByb2dyZXNz KQpAQCAtMTk5MCw0ICsyMDE2LDcgQEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9v bCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsCiAJdHVwbGVzb3J0X2VuZChidHNwb29sLT5z b3J0c3RhdGUpOwogCWlmIChidHNwb29sMikKIAkJdHVwbGVzb3J0X2VuZChidHNwb29sMi0+c29y dHN0YXRlKTsKKwlBc3NlcnQoIXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCWlmIChwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBz aG90KQorCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIH0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCmluZGV4IDVlNDE0MDQ5MzdlLi44YjMzYjYyNzhj ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCkBAIC0xMzIsMTAgKzEzMiwxMCBAQCB0 YWJsZV9wYXJhbGxlbHNjYW5fZXN0aW1hdGUoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hv dCkKIHsKIAlTaXplCQlzeiA9IDA7CiAKLQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQor CWlmIChzbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3QgJiYgSXNNVkNDU25hcHNob3Qoc25hcHNo b3QpKQogCQlzeiA9IGFkZF9zaXplKHN6LCBFc3RpbWF0ZVNuYXBzaG90U3BhY2Uoc25hcHNob3Qp KTsKIAllbHNlCi0JCUFzc2VydChzbmFwc2hvdCA9PSBTbmFwc2hvdEFueSk7CisJCUFzc2VydChz bmFwc2hvdCA9PSBTbmFwc2hvdEFueSB8fCBzbmFwc2hvdCA9PSBJbnZhbGlkU25hcHNob3QpOwog CiAJc3ogPSBhZGRfc2l6ZShzeiwgcmVsLT5yZF90YWJsZWFtLT5wYXJhbGxlbHNjYW5fZXN0aW1h dGUocmVsKSk7CiAKQEAgLTE0NCwyMSArMTQ0LDM2IEBAIHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3Rp bWF0ZShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KQogCiB2b2lkCiB0YWJsZV9wYXJh bGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBw c2NhbiwKLQkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90KQorCQkJCQkJCSAgU25hcHNob3Qgc25h cHNob3QsIGJvb2wgcmVzZXRfc25hcHNob3QpCiB7CiAJU2l6ZQkJc25hcHNob3Rfb2ZmID0gcmVs LT5yZF90YWJsZWFtLT5wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShyZWwsIHBzY2FuKTsKIAogCXBz Y2FuLT5waHNfc25hcHNob3Rfb2ZmID0gc25hcHNob3Rfb2ZmOwogCi0JaWYgKElzTVZDQ1NuYXBz aG90KHNuYXBzaG90KSkKKwkvKgorCSAqIEluaXRpYWxpemUgcGFyYWxsZWwgc2NhbiBkZXNjcmlw dGlvbi4gRm9yIG5vcm1hbCBzY2FucyB3aXRoIGEgcmVndWxhcgorCSAqIE1WQ0Mgc25hcHNob3Qs IHNlcmlhbGl6ZSB0aGUgc25hcHNob3QgaW5mby4gRm9yIHNjYW5zIHRoYXQgdXNlIHBlcmlvZGlj CisJICogc25hcHNob3QgcmVzZXRzLCBtYXJrIHRoZSBzY2FuIGFjY29yZGluZ2x5LgorCSAqLwor CWlmIChyZXNldF9zbmFwc2hvdCkKKwl7CisJCUFzc2VydChzbmFwc2hvdCA9PSBJbnZhbGlkU25h cHNob3QpOworCQlwc2Nhbi0+cGhzX3NuYXBzaG90X2FueSA9IGZhbHNlOworCQlwc2Nhbi0+cGhz X3Jlc2V0X3NuYXBzaG90ID0gdHJ1ZTsKKwkJSU5KRUNUSU9OX1BPSU5UKCJ0YWJsZV9wYXJhbGxl bHNjYW5faW5pdGlhbGl6ZSIsIE5VTEwpOworCX0KKwllbHNlIGlmIChJc01WQ0NTbmFwc2hvdChz bmFwc2hvdCkpCiAJewogCQlTZXJpYWxpemVTbmFwc2hvdChzbmFwc2hvdCwgKGNoYXIgKikgcHNj YW4gKyBwc2Nhbi0+cGhzX3NuYXBzaG90X29mZik7CiAJCXBzY2FuLT5waHNfc25hcHNob3RfYW55 ID0gZmFsc2U7CisJCXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgPSBmYWxzZTsKIAl9CiAJZWxz ZQogCXsKIAkJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55KTsKKwkJQXNzZXJ0KCFyZXNl dF9zbmFwc2hvdCk7CiAJCXBzY2FuLT5waHNfc25hcHNob3RfYW55ID0gdHJ1ZTsKKwkJcHNjYW4t PnBoc19yZXNldF9zbmFwc2hvdCA9IGZhbHNlOwogCX0KIH0KIApAQCAtMTcxLDcgKzE4NiwxOSBA QCB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gcmVsYXRpb24sIFBhcmFsbGVsVGFi bGVTY2FuRGVzYyBwc2NhbikKIAogCUFzc2VydChSZWxGaWxlTG9jYXRvckVxdWFscyhyZWxhdGlv bi0+cmRfbG9jYXRvciwgcHNjYW4tPnBoc19sb2NhdG9yKSk7CiAKLQlpZiAoIXBzY2FuLT5waHNf c25hcHNob3RfYW55KQorCS8qCisJICogRm9yIHNjYW5zIHRoYXQKKwkgKiB1c2UgcGVyaW9kaWMg c25hcHNob3QgcmVzZXRzLCBtYXJrIHRoZSBzY2FuIGFjY29yZGluZ2x5IGFuZCB1c2UgdGhlIGFj dGl2ZQorCSAqIHNuYXBzaG90IGFzIHRoZSBpbml0aWFsIHN0YXRlLgorCSAqLworCWlmIChwc2Nh bi0+cGhzX3Jlc2V0X3NuYXBzaG90KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkp OworCQlmbGFncyB8PSBTT19SRVNFVF9TTkFQU0hPVDsKKwkJLyogU3RhcnQgd2l0aCBjdXJyZW50 IGFjdGl2ZSBzbmFwc2hvdC4gKi8KKwkJc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOwor CX0KKwllbHNlIGlmICghcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkpCiAJewogCQkvKiBTbmFwc2hv dCB3YXMgc2VyaWFsaXplZCAtLSByZXN0b3JlIGl0ICovCiAJCXNuYXBzaG90ID0gUmVzdG9yZVNu YXBzaG90KChjaGFyICopIHBzY2FuICsgcHNjYW4tPnBoc19zbmFwc2hvdF9vZmYpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKaW5kZXggOTRkYjFlYzMwMTIuLjA2NWVhOWQyNmY2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKQEAgLTc3LDYgKzc3LDcgQEAK ICNkZWZpbmUgUEFSQUxMRUxfS0VZX1JFTE1BUFBFUl9TVEFURQkJVUlOVDY0Q09OU1QoMHhGRkZG RkZGRkZGRkYwMDBEKQogI2RlZmluZSBQQVJBTExFTF9LRVlfVU5DT01NSVRURURFTlVNUwkJVUlO VDY0Q09OU1QoMHhGRkZGRkZGRkZGRkYwMDBFKQogI2RlZmluZSBQQVJBTExFTF9LRVlfQ0xJRU5U Q09OTklORk8JCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEYpCisjZGVmaW5lIFBBUkFM TEVMX0tFWV9TTkFQU0hPVF9SRVNUT1JFRAkJVUlOVDY0Q09OU1QoMHhGRkZGRkZGRkZGRkYwMDEw KQogCiAvKiBGaXhlZC1zaXplIHBhcmFsbGVsIHN0YXRlLiAqLwogdHlwZWRlZiBzdHJ1Y3QgRml4 ZWRQYXJhbGxlbFN0YXRlCkBAIC0zMDUsNiArMzA2LDEwIEBAIEluaXRpYWxpemVQYXJhbGxlbERT TShQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCQkJCQkJCQkJcGN4dC0+bndvcmtlcnMpKTsKIAkJ c2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwogCisJCXNobV90b2Nf ZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgbXVsX3NpemUoc2l6ZW9mKGJvb2wpLAor CQkJCQkJCSAgIHBjeHQtPm53b3JrZXJzKSk7CisJCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4 dC0+ZXN0aW1hdG9yLCAxKTsKKwogCQkvKiBFc3RpbWF0ZSBob3cgbXVjaCB3ZSdsbCBuZWVkIGZv ciB0aGUgZW50cnlwb2ludCBpbmZvLiAqLwogCQlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0 LT5lc3RpbWF0b3IsIHN0cmxlbihwY3h0LT5saWJyYXJ5X25hbWUpICsKIAkJCQkJCQkgICBzdHJs ZW4ocGN4dC0+ZnVuY3Rpb25fbmFtZSkgKyAyKTsKQEAgLTM3Niw2ICszODEsNyBAQCBJbml0aWFs aXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQljaGFyCSAgICplbnRyeXBv aW50c3RhdGU7CiAJCWNoYXIJICAgKnVuY29tbWl0dGVkZW51bXNzcGFjZTsKIAkJY2hhcgkgICAq Y2xpZW50Y29ubmluZm9zcGFjZTsKKwkJYm9vbAkgICAqc25hcHNob3Rfc2V0X2ZsYWdfc3BhY2U7 CiAJCVNpemUJCWxuYW1lbGVuOwogCiAJCS8qIFNlcmlhbGl6ZSBzaGFyZWQgbGlicmFyaWVzIHdl IGhhdmUgbG9hZGVkLiAqLwpAQCAtNDkxLDYgKzQ5NywxOSBAQCBJbml0aWFsaXplUGFyYWxsZWxE U00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQlzdHJjcHkoZW50cnlwb2ludHN0YXRlLCBwY3h0 LT5saWJyYXJ5X25hbWUpOwogCQlzdHJjcHkoZW50cnlwb2ludHN0YXRlICsgbG5hbWVsZW4gKyAx LCBwY3h0LT5mdW5jdGlvbl9uYW1lKTsKIAkJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJB TExFTF9LRVlfRU5UUllQT0lOVCwgZW50cnlwb2ludHN0YXRlKTsKKworCQkvKgorCQkgKiBFc3Rh Ymxpc2ggZHluYW1pYyBzaGFyZWQgbWVtb3J5IHRvIHBhc3MgaW5mb3JtYXRpb24gYWJvdXQgaW1w b3J0aW5nCisJCSAqIG9mIHNuYXBzaG90LgorCQkgKi8KKwkJc25hcHNob3Rfc2V0X2ZsYWdfc3Bh Y2UgPQorCQkJCXNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBtdWxfc2l6ZShzaXplb2YoYm9v bCksIHBjeHQtPm53b3JrZXJzKSk7CisJCWZvciAoaSA9IDA7IGkgPCBwY3h0LT5ud29ya2Vyczsg KytpKQorCQl7CisJCQlwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQgPSBzbmFwc2hv dF9zZXRfZmxhZ19zcGFjZSArIGkgKiBzaXplb2YoYm9vbCk7CisJCQkqcGN4dC0+d29ya2VyW2ld LnNuYXBzaG90X3Jlc3RvcmVkID0gZmFsc2U7CisJCX0KKwkJc2htX3RvY19pbnNlcnQocGN4dC0+ dG9jLCBQQVJBTExFTF9LRVlfU05BUFNIT1RfUkVTVE9SRUQsIHNuYXBzaG90X3NldF9mbGFnX3Nw YWNlKTsKIAl9CiAKIAkvKiBVcGRhdGUgbndvcmtlcnNfdG9fbGF1bmNoLCBpbiBjYXNlIHdlIGNo YW5nZWQgbndvcmtlcnMgYWJvdmUuICovCkBAIC01NDYsNiArNTY1LDE3IEBAIFJlaW5pdGlhbGl6 ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCXBjeHQtPndvcmtlcltpXS5l cnJvcl9tcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBwY3h0LT5zZWcsIE5VTEwpOwogCQl9CiAJfQor CisJLyogU2V0IHNuYXBzaG90IHJlc3RvcmVkIGZsYWcgdG8gZmFsc2UuICovCisJaWYgKHBjeHQt Pm53b3JrZXJzID4gMCkKKwl7CisJCWJvb2wJICAgKnNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlOwor CQlpbnQJCQlpOworCQlzbmFwc2hvdF9yZXN0b3JlZF9zcGFjZSA9CisJCQkJc2htX3RvY19sb29r dXAocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfU05BUFNIT1RfUkVTVE9SRUQsIGZhbHNlKTsKKwkJ Zm9yIChpID0gMDsgaSA8IHBjeHQtPm53b3JrZXJzOyArK2kpCisJCQlzbmFwc2hvdF9yZXN0b3Jl ZF9zcGFjZVtpXSA9IGZhbHNlOworCX0KIH0KIAogLyoKQEAgLTY2MSw2ICs2OTEsMTAgQEAgTGF1 bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKICAqIFdhaXQgZm9yIGFs bCB3b3JrZXJzIHRvIGF0dGFjaCB0byB0aGVpciBlcnJvciBxdWV1ZXMsIGFuZCB0aHJvdyBhbiBl cnJvciBpZgogICogYW55IHdvcmtlciBmYWlscyB0byBkbyB0aGlzLgogICoKKyAqIHdhaXRfZm9y X3NuYXBzaG90OiB0cmFjayB3aGV0aGVyIGVhY2ggcGFyYWxsZWwgd29ya2VyIGhhcyBzdWNjZXNz ZnVsbHkgcmVzdG9yZWQKKyAqIGl0cyBzbmFwc2hvdC4gVGhpcyBpcyBuZWVkZWQgd2hlbiB1c2lu ZyBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMgdG8gZW5zdXJlIGFsbAorICogd29ya2VycyBoYXZl IGEgdmFsaWQgaW5pdGlhbCBzbmFwc2hvdCBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBzY2Fu LgorICoKICAqIENhbGxlcnMgY2FuIGFzc3VtZSB0aGF0IGlmIHRoaXMgZnVuY3Rpb24gcmV0dXJu cyBzdWNjZXNzZnVsbHksIHRoZW4gdGhlCiAgKiBudW1iZXIgb2Ygd29ya2VycyBnaXZlbiBieSBw Y3h0LT5ud29ya2Vyc19sYXVuY2hlZCBoYXZlIGluaXRpYWxpemVkIGFuZAogICogYXR0YWNoZWQg dG8gdGhlaXIgZXJyb3IgcXVldWVzLiAgV2hldGhlciBvciBub3QgdGhlc2Ugd29ya2VycyBhcmUg Z3VhcmFudGVlZApAQCAtNjkwLDcgKzcyNCw3IEBAIExhdW5jaFBhcmFsbGVsV29ya2VycyhQYXJh bGxlbENvbnRleHQgKnBjeHQpCiAgKiBjYWxsIHRoaXMgZnVuY3Rpb24gYXQgYWxsLgogICovCiB2 b2lkCi1XYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0 KQorV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCwg Ym9vbCB3YWl0X2Zvcl9zbmFwc2hvdCkKIHsKIAlpbnQJCQlpOwogCkBAIC03MzQsOSArNzY4LDEy IEBAIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQp CiAJCQkJbXEgPSBzaG1fbXFfZ2V0X3F1ZXVlKHBjeHQtPndvcmtlcltpXS5lcnJvcl9tcWgpOwog CQkJCWlmIChzaG1fbXFfZ2V0X3NlbmRlcihtcSkgIT0gTlVMTCkKIAkJCQl7Ci0JCQkJCS8qIFll cywgc28gaXQgaXMga25vd24gdG8gYmUgYXR0YWNoZWQuICovCi0JCQkJCXBjeHQtPmtub3duX2F0 dGFjaGVkX3dvcmtlcnNbaV0gPSB0cnVlOwotCQkJCQkrK3BjeHQtPm5rbm93bl9hdHRhY2hlZF93 b3JrZXJzOworCQkJCQlpZiAoIXdhaXRfZm9yX3NuYXBzaG90IHx8ICoocGN4dC0+d29ya2VyW2ld LnNuYXBzaG90X3Jlc3RvcmVkKSkKKwkJCQkJeworCQkJCQkJLyogWWVzLCBzbyBpdCBpcyBrbm93 biB0byBiZSBhdHRhY2hlZC4gKi8KKwkJCQkJCXBjeHQtPmtub3duX2F0dGFjaGVkX3dvcmtlcnNb aV0gPSB0cnVlOworCQkJCQkJKytwY3h0LT5ua25vd25fYXR0YWNoZWRfd29ya2VyczsKKwkJCQkJ fQogCQkJCX0KIAkJCX0KIAkJCWVsc2UgaWYgKHN0YXR1cyA9PSBCR1dIX1NUT1BQRUQpCkBAIC0x Mjk1LDYgKzEzMzIsNyBAQCBQYXJhbGxlbFdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJc2ht X3RvYyAgICAqdG9jOwogCUZpeGVkUGFyYWxsZWxTdGF0ZSAqZnBzOwogCWNoYXIJICAgKmVycm9y X3F1ZXVlX3NwYWNlOworCWJvb2wJICAgKnNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlOwogCXNobV9t cQkgICAqbXE7CiAJc2htX21xX2hhbmRsZSAqbXFoOwogCWNoYXIJICAgKmxpYnJhcnlzcGFjZTsK QEAgLTE0OTksNiArMTUzNywxMCBAQCBQYXJhbGxlbFdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcp CiAJCQkJCQkJICAgZnBzLT5wYXJhbGxlbF9sZWFkZXJfcGdwcm9jKTsKIAlQdXNoQWN0aXZlU25h cHNob3QoYXNuYXBzaG90KTsKIAorCS8qIFNuYXBzaG90IGlzIHJlc3RvcmVkLCBzZXQgZmxhZyB0 byBtYWtlIGxlYWRlciBrbm93IGFib3V0IGl0LiAqLworCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNl ID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfU05BUFNIT1RfUkVTVE9SRUQsIGZh bHNlKTsKKwlzbmFwc2hvdF9yZXN0b3JlZF9zcGFjZVtQYXJhbGxlbFdvcmtlck51bWJlcl0gPSB0 cnVlOworCiAJLyoKIAkgKiBXZSd2ZSBjaGFuZ2VkIHdoaWNoIHR1cGxlcyB3ZSBjYW4gc2VlLCBh bmQgbXVzdCB0aGVyZWZvcmUgaW52YWxpZGF0ZQogCSAqIHN5c3RlbSBjYWNoZXMuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMKaW5kZXggZWRjMDdiNzIwMTguLjM3MTg2Mzg5NWRkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBA IC0xNTMyLDcgKzE1MzIsNyBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxh dGlvbklkLAogCiAJLyogSW52YWxpZGF0ZSBjYXRhbG9nIHNuYXBzaG90IGp1c3QgZm9yIGFzc2Vy dCAqLwogCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKLQlBc3NlcnQoKGluZGV4SW5mby0+ aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVlKSB8fCAhVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KGluZGV4SW5mby0+aWlfVW5pcXVl IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qIFJvbGwgYmFj ayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCiAJQXRFT1hh Y3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4u YwppbmRleCA5NDA0N2QyOTQzMC4uZjE2Mjg0ZDRkMGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNl cXNjYW4uYwpAQCAtMzcxLDcgKzM3MSw4IEBAIEV4ZWNTZXFTY2FuSW5pdGlhbGl6ZURTTShTZXFT Y2FuU3RhdGUgKm5vZGUsCiAJcHNjYW4gPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgbm9k ZS0+cHNjYW5fbGVuKTsKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShub2RlLT5zcy5z c19jdXJyZW50UmVsYXRpb24sCiAJCQkJCQkJCSAgcHNjYW4sCi0JCQkJCQkJCSAgZXN0YXRlLT5l c19zbmFwc2hvdCk7CisJCQkJCQkJCSAgZXN0YXRlLT5lc19zbmFwc2hvdCwKKwkJCQkJCQkJICBm YWxzZSk7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBub2RlLT5zcy5wcy5wbGFuLT5wbGFu X25vZGVfaWQsIHBzY2FuKTsKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPQogCQl0YWJs ZV9iZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLCBwc2Nhbik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCmluZGV4IDhlMWE5MThmMTMwLi42OGVhOTg0MDViYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKQEAgLTM1MywxNCArMzUzLDYgQEAgR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCh2b2lkKQogU25hcHNob3QKIEdldExhdGVzdFNuYXBzaG90KHZvaWQpCiB7 Ci0JLyoKLQkgKiBXZSBtaWdodCBiZSBhYmxlIHRvIHJlbGF4IHRoaXMsIGJ1dCBub3RoaW5nIHRo YXQgY291bGQgb3RoZXJ3aXNlIHdvcmsKLQkgKiBuZWVkcyBpdC4KLQkgKi8KLQlpZiAoSXNJblBh cmFsbGVsTW9kZSgpKQotCQllbG9nKEVSUk9SLAotCQkJICJjYW5ub3QgdXBkYXRlIFNlY29uZGFy eVNuYXBzaG90IGR1cmluZyBhIHBhcmFsbGVsIG9wZXJhdGlvbiIpOwotCiAJLyoKIAkgKiBTbyBm YXIgdGhlcmUgYXJlIG5vIGNhc2VzIHJlcXVpcmluZyBzdXBwb3J0IGZvciBHZXRMYXRlc3RTbmFw c2hvdCgpCiAJICogZHVyaW5nIGxvZ2ljYWwgZGVjb2RpbmcsIGJ1dCBpdCB3b3VsZG4ndCBiZSBo YXJkIHRvIGFkZCBpZiByZXF1aXJlZC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9w YXJhbGxlbC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmgKaW5kZXggZjM3YmU2ZDU2 OTAuLmE3MzYyZjdiNDNiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwu aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaApAQCAtMjYsNiArMjYsNyBAQCB0 eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFdvcmtlckluZm8KIHsKIAlCYWNrZ3JvdW5kV29ya2VySGFu ZGxlICpiZ3doYW5kbGU7CiAJc2htX21xX2hhbmRsZSAqZXJyb3JfbXFoOworCWJvb2wJCSAgKnNu YXBzaG90X3Jlc3RvcmVkOwogfSBQYXJhbGxlbFdvcmtlckluZm87CiAKIHR5cGVkZWYgc3RydWN0 IFBhcmFsbGVsQ29udGV4dApAQCAtNjUsNyArNjYsNyBAQCBleHRlcm4gdm9pZCBJbml0aWFsaXpl UGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKIGV4dGVybiB2b2lkIFJlaW5pdGlh bGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gdm9pZCBSZWlu aXRpYWxpemVQYXJhbGxlbFdvcmtlcnMoUGFyYWxsZWxDb250ZXh0ICpwY3h0LCBpbnQgbndvcmtl cnNfdG9fbGF1bmNoKTsKIGV4dGVybiB2b2lkIExhdW5jaFBhcmFsbGVsV29ya2VycyhQYXJhbGxl bENvbnRleHQgKnBjeHQpOwotZXh0ZXJuIHZvaWQgV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0 YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CitleHRlcm4gdm9pZCBXYWl0Rm9yUGFyYWxsZWxX b3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0LCBib29sIHdhaXRfZm9yX3NuYXBz aG90KTsKIGV4dGVybiB2b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0ZpbmlzaChQYXJhbGxl bENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIHZvaWQgRGVzdHJveVBhcmFsbGVsQ29udGV4dChQYXJh bGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIGJvb2wgUGFyYWxsZWxDb250ZXh0QWN0aXZlKHZv aWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9yZWxzY2FuLmgKaW5kZXggYjVlMGZiMzg2YzAuLjUwNDQxYzU4Y2VhIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9yZWxzY2FuLmgKQEAgLTgyLDYgKzgyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxU YWJsZVNjYW5EZXNjRGF0YQogCVJlbEZpbGVMb2NhdG9yIHBoc19sb2NhdG9yOyAvKiBwaHlzaWNh bCByZWxhdGlvbiB0byBzY2FuICovCiAJYm9vbAkJcGhzX3N5bmNzY2FuOwkvKiByZXBvcnQgbG9j YXRpb24gdG8gc3luY3NjYW4gbG9naWM/ICovCiAJYm9vbAkJcGhzX3NuYXBzaG90X2FueTsJLyog U25hcHNob3RBbnksIG5vdCBwaHNfc25hcHNob3RfZGF0YT8gKi8KKwlib29sCQlwaHNfcmVzZXRf c25hcHNob3Q7IC8qIHVzZSBTT19SRVNFVF9TTkFQU0hPVD8gKi8KIAlTaXplCQlwaHNfc25hcHNo b3Rfb2ZmOwkvKiBkYXRhIGZvciBzbmFwc2hvdCAqLwogfSBQYXJhbGxlbFRhYmxlU2NhbkRlc2NE YXRhOwogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxUYWJsZVNjYW5EZXNjRGF0YSAqUGFyYWxsZWxU YWJsZVNjYW5EZXNjOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggNzFhZjE0ZDFjMzEuLjYxMzYxNWM3 OGNkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTExNDAsNyArMTE0MCw4IEBAIGV4dGVybiBTaXpl IHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBz aG90KTsKICAqLwogZXh0ZXJuIHZvaWQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVs YXRpb24gcmVsLAogCQkJCQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAotCQkJ CQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QpOworCQkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNo b3QsCisJCQkJCQkJCQkJICBib29sIHJlc2V0X3NuYXBzaG90KTsKIAogLyoKICAqIEJlZ2luIGEg cGFyYWxsZWwgc2Nhbi4gYHBzY2FuYCBuZWVkcyB0byBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgd2l0 aApAQCAtMTc2Miw5ICsxNzYzLDkgQEAgdGFibGVfc2Nhbl9hbmFseXplX25leHRfdHVwbGUoVGFi bGVTY2FuRGVzYyBzY2FuLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAgKiBUaGlzIG9ubHkg cmVhbGx5IG1ha2VzIHNlbnNlIGZvciBoZWFwIEFNLCBpdCBtaWdodCBuZWVkIHRvIGJlIGdlbmVy YWxpemVkCiAgKiBmb3Igb3RoZXIgQU1zIGxhdGVyLgogICoKLSAqIEluIGNhc2Ugb2Ygbm9uLXVu aXF1ZSBpbmRleCBhbmQgbm9uLXBhcmFsbGVsIGNvbmN1cnJlbnQgYnVpbGQKLSAqIFNPX1JFU0VU X1NOQVBTSE9UIGlzIGFwcGxpZWQgZm9yIHRoZSBzY2FuLiBUaGF0IGxlYWRzIGZvciBjaGFuZ2lu ZyBzbmFwc2hvdHMKLSAqIG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1pbiBob3Jpem9uIHByb3BhZ2F0 ZS4KKyAqIEluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBjb25jdXJyZW50ICBpbmRleCBidWlsZCBTT19S RVNFVF9TTkFQU0hPVCBpcyBhcHBsaWVkCisgKiBmb3IgdGhlIHNjYW4uIFRoYXQgbGVhZHMgZm9y IGNoYW5naW5nIHNuYXBzaG90cyBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4KKyAqIGhvcml6b24g cHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJsZQogdGFibGVfaW5kZXhfYnVpbGRf c2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgYi9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5v dXQKaW5kZXggOTQ4ZDEyMzJhYTAuLjU5NWE0MDAwY2UwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNl dF9zbmFwc2hvdHMub3V0CkBAIC0xNyw2ICsxNywxMiBAQCBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNl JwogIAogKDEgcm93KQogCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplJywgJ25vdGljZScpOworIGluamVjdGlvbl9wb2ludHNfYXR0 YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBDUkVBVEUgU0NI RU1BIGNpY19yZXNldF9zbmFwOwogQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGlu dCBwcmltYXJ5IGtleSwgaiBpbnQpOwogSU5TRVJUIElOVE8gY2ljX3Jlc2V0X3NuYXAudGJsIFNF TEVDVCBpLCBpICogSSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIHMoaSk7CkBAIC03Miwz MCArNzgsNDUgQEAgTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIERST1AgSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKIC0tIFRoZSBzYW1lIGluIHBhcmFsbGVsIG1vZGUKIEFM VEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9Mik7Cist LSBEZXRhY2ggdG8ga2VlcCB0ZXN0IHN0YWJsZSwgc2luY2UgcGFyYWxsZWwgd29ya2VyIG1heSBj b21wbGV0ZSBzY2FuIGJlZm9yZSBsZWFkZXIKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFj aCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScpOworIGluamVjdGlvbl9wb2lu dHNfZGV0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBDUkVB VEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkp OwogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2Fu X2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0Qo aSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5E RVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlh bGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJF IGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3Nu YXBzaG90cwotTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhl YXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCi1OT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2Fu X3NuYXBzaG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAu dGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0o KTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5VTExTIExBU1QpOworTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2Fu X2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lO RyBCUklOKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1AgSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIERST1AgU0NIRU1BIGNpY19yZXNldF9zbmFw IENBU0NBREU7CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDMgb3RoZXIgb2JqZWN0cwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRf c25hcHNob3RzLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2lj X3Jlc2V0X3NuYXBzaG90cy5zcWwKaW5kZXggNTA3MjUzNWIzNTUuLjI5NDFhYTdhZTM4IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9z bmFwc2hvdHMuc3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwv Y2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKQEAgLTMsNyArMyw3IEBAIENSRUFURSBFWFRFTlNJT04g aW5qZWN0aW9uX3BvaW50czsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwog U0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3Rf ZWZmZWN0aXZlJywgJ25vdGljZScpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0 YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGljZScpOwotCitTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl JywgJ25vdGljZScpOwogCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOwogQ1JFQVRFIFRB QkxFIGNpY19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOwpAQCAtNTMs NiArNTMsOSBAQCBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiAt LSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50 YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOwogCistLSBEZXRhY2ggdG8ga2VlcCB0ZXN0IHN0 YWJsZSwgc2luY2UgcGFyYWxsZWwgd29ya2VyIG1heSBjb21wbGV0ZSBzY2FuIGJlZm9yZSBsZWFk ZXIKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBz aG90X2VmZmVjdGl2ZScpOworCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHgg T04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OwpAQCAtODMsNCArODYsNCBAQCBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CiAKIERST1AgU0NIRU1BIGNpY19yZXNldF9zbmFwIENBU0NBREU7CiAKLURST1Ag RVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7CitEUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9p bnRzOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIuNDMuMAoK --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="v24-0006-Add-STIR-access-method-and-flags-related-to-auxi.patch" Content-Disposition: attachment; filename="v24-0006-Add-STIR-access-method-and-flags-related-to-auxi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm0x11 RnJvbSA3NzgxNzg0MGY3MzRhY2ZlYWU4NTllNTM5Y2M3YWJkNWM2ZDljYjBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAyMSBEZWMgMjAyNCAxODozNjoxMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI0IDA2LzEyXSBBZGQgU1RJUiBhY2Nlc3MgbWV0aG9kIGFuZCBmbGFncyByZWxhdGVk IHRvCiBhdXhpbGlhcnkgaW5kZXhlcwoKVGhpcyBwYXRjaCBwcm92aWRlcyBpbmZyYXN0cnVjdHVy ZSBmb3IgZm9sbG93aW5nIGVuaGFuY2VtZW50cyB0byBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyBi eToKLSBpaV9BdXhpbGlhcnkgaW4gSW5kZXhJbmZvOiBpbmRpY2F0ZXMgdGhhdCBhbiBpbmRleCBp cyBhbiBhdXhpbGlhcnkgaW5kZXggdXNlZCBkdXJpbmcgY29uY3VycmVudCBpbmRleCBidWlsZAot IHZhbGlkYXRlX2luZGV4IGluIEluZGV4VmFjdXVtSW5mbzogc2V0IGlmIGluZGV4X2J1bGtfZGVs ZXRlIGNhbGxlZCBkdXJpbmcgdGhlIHZhbGlkYXRpb24gcGhhc2Ugb2YgY29uY3VycmVudCBpbmRl eCBidWlsZAotIFNUSVIoU2hvcnQtVGVybSBJbmRleCBSZXBsYWNlbWVudCkgYWNjZXNzIG1ldGhv ZCBpcyBpbnRyb2R1Y2VkLCBpbnRlbmRlZCBzb2xlbHkgZm9yIHNob3J0LWxpdmVkLCBhdXhpbGlh cnkgdXNhZ2UKClNUSVIgZnVuY3Rpb25zIGRlc2lnbmVkIGFzIGFuIGVwaGVtZXJhbCBoZWxwZXIg ZHVyaW5nIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB0ZW1wb3JhcmlseSBzdG9yaW5nIFRJRHMg d2l0aG91dCBwcm92aWRpbmcgdGhlIGZ1bGwgZmVhdHVyZXMgb2YgYSB0eXBpY2FsIGFjY2VzcyBt ZXRob2QuIEFzIHN1Y2gsIGl0IHJhaXNlcyB3YXJuaW5ncyBvciBlcnJvcnMgd2hlbiBhY2Nlc3Nl ZCBvdXRzaWRlIGl0cyBzcGVjaWFsaXplZCB1c2FnZSBwYXRoLgoKUGxhbm5lZCB0byBiZSB1c2Vk IGluIGZvbGxvd2luZyBjb21taXRzLgotLS0KIGNvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVw bGUuYyAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL01ha2VmaWxlICAgICAgICAg ICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICB8 ICAgMiArCiBzcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQgICAgICAgICAgIHwgICAxICsK IHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlICAgICAgICAgfCAgMTggKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9h Y2Nlc3Mvc3Rpci9zdGlyLmMgICAgICAgICAgIHwgNTgxICsrKysrKysrKysrKysrKysrKysrKysr CiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW1wYXJhbGxlbC5jICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5j cy5jICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5oICAgICAgICAg IHwgICAzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oICAgICAgICAgICAgICAgIHwgMTE3 ICsrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdCAgICAgICAgICAgIHwgICAzICsK IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5kYXQgICAgICAgfCAgIDQgKwogc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oICAgICAgICAgICAgfCAgIDcgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL2luZGV4X3Nl bGZ1bmNzLmggICAgICAgfCAgIDggKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbXV0aWxz Lm91dCAgICB8ICAgOCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91 dCB8ICAgNyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCAgICAgICB8ICAy NCArLQogMjQgZmlsZXMgY2hhbmdlZCwgNzg2IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCgpkaWZmIC0tZ2l0IGEvY29udHJp Yi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0 dXBsZS5jCmluZGV4IDMzMWI0ZjJiOTE2Li5kMzQ1MTA3ODE3NiAxMDA2NDQKLS0tIGEvY29udHJp Yi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCisrKyBiL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdz dGF0dHVwbGUuYwpAQCAtMjg1LDYgKzI4NSw5IEBAIHBnc3RhdF9yZWxhdGlvbihSZWxhdGlvbiBy ZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCQkJY2FzZSBTUEdJU1RfQU1fT0lEOgogCQkJ CWVyciA9ICJzcGdpc3QgaW5kZXgiOwogCQkJCWJyZWFrOworCQkJY2FzZSBTVElSX0FNX09JRDoK KwkJCQllcnIgPSAic3RpciBpbmRleCI7CisJCQkJYnJlYWs7CiAJCQljYXNlIEJSSU5fQU1fT0lE OgogCQkJCWVyciA9ICJicmluIGluZGV4IjsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZQppbmRl eCAxOTMyZDExZDE1NC4uY2Q2NTI0YTU0YWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZpbGUKQEAgLTksNiArOSw2 IEBAIHRvcF9idWlsZGRpciA9IC4uLy4uLy4uCiBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMv TWFrZWZpbGUuZ2xvYmFsCiAKIFNVQkRJUlMJICAgID0gYnJpbiBjb21tb24gZ2luIGdpc3QgaGFz aCBoZWFwIGluZGV4IG5idHJlZSBybWdyZGVzYyBzcGdpc3QgXAotCQkJICBzZXF1ZW5jZSB0YWJs ZSB0YWJsZXNhbXBsZSB0cmFuc2FtCisJCQkgIHN0aXIgc2VxdWVuY2UgdGFibGUgdGFibGVzYW1w bGUgdHJhbnNhbQogCiBpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1r CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggOTgxZDkzODBhOTIuLmQwMjc2 YmY0ODNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0zMDg3LDYgKzMw ODcsNyBAQCBsYXp5X3ZhY3V1bV9vbmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRleEJ1bGtE ZWxldGVSZXN1bHQgKmlzdGF0LAogCWl2aW5mby5tZXNzYWdlX2xldmVsID0gREVCVUcyOwogCWl2 aW5mby5udW1faGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0gdmFj cmVsLT5ic3RyYXRlZ3k7CisJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gZmFsc2U7CiAKIAkvKgog CSAqIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24uCkBAIC0zMTM4LDYgKzMxMzks NyBAQCBsYXp5X2NsZWFudXBfb25lX2luZGV4KFJlbGF0aW9uIGluZHJlbCwgSW5kZXhCdWxrRGVs ZXRlUmVzdWx0ICppc3RhdCwKIAogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSByZWx0dXBsZXM7 CiAJaXZpbmZvLnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRlZ3k7CisJaXZpbmZvLnZhbGlkYXRl X2luZGV4ID0gZmFsc2U7CiAKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3Jt YXRpb24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQgYi9zcmMv YmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQKaW5kZXggN2EyZDBkZGI2ODkuLmExNTZjZGRmZjM1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkCkBAIC0xMSw2ICsxMSw3IEBAIHN1YmRpcignbmJ0cmVl JykKIHN1YmRpcigncm1ncmRlc2MnKQogc3ViZGlyKCdzZXF1ZW5jZScpCiBzdWJkaXIoJ3NwZ2lz dCcpCitzdWJkaXIoJ3N0aXInKQogc3ViZGlyKCd0YWJsZScpCiBzdWJkaXIoJ3RhYmxlc2FtcGxl JykKIHN1YmRpcigndHJhbnNhbScpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rp ci9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mYWU1ODk4YjhkNwotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlCkBAIC0wLDAgKzEsMTggQEAKKyMt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisjCisjIE1ha2VmaWxlLS0KKyMgICAgTWFrZWZpbGUgZm9yIGFjY2Vz cy9zdGlyCisjCisjIElERU5USUZJQ0FUSU9OCisjICAgIHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGly L01ha2VmaWxlCisjCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdWJkaXIgPSBzcmMvYmFja2VuZC9h Y2Nlc3Mvc3RpcgordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVp bGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKKworT0JKUyA9IFwKKwlzdGlyLm8KKworaW5jbHVk ZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1vbi5tawpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29uLmJ1aWxk IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM5YzZlY2E4NDhkCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQKQEAgLTAsMCArMSw1IEBACisjIENvcHly aWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworYmFj a2VuZF9zb3VyY2VzICs9IGZpbGVzKAorCSdzdGlyLmMnLAorKQpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uMmUwODNkOTUyZDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3Mvc3Rpci9zdGlyLmMKQEAgLTAsMCArMSw1ODEgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIHN0aXIuYworICoJICBJbXBsZW1lbnRhdGlvbiBvZiBTaG9ydC1UZXJtIEluZGV4IFJl cGxhY2VtZW50LgorICoKKyAqIFNUSVIgaXMgYSBzcGVjaWFsaXplZCBhY2Nlc3MgbWV0aG9kIHR5 cGUgZGVzaWduZWQgZm9yIHRlbXBvcmFyeSBzdG9yYWdlCisgKiBvZiBUSUQgdmFsdWVzIGR1cmlu ZyBjb25jdXJlcm50IGluZGV4IGJ1aWxkIG9wZXJhdGlvbnMuCisgKgorICogVGhlIHR5cGljYWwg bGlmZWN5Y2xlIG9mIGEgU1RJUiBpbmRleCBpczoKKyAqIDEuIGNyZWF0ZWQgYXMgYW4gYXV4aWxp YXJ5IGluZGV4IGZvciBDSUMvUklDCisgKiAyLiBhY2NlcHRzIGluc2VydHMgZm9yIGEgcGVyaW9k CisgKiAzLiBzdGlyYnVsa2RlbGV0ZSBjYWxsZWQgZHVyaW5nIGluZGV4IHZhbGlkYXRpb24gcGhh c2UKKyAqIDUuIGdldHMgZHJvcHBlZAorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAy NSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNB VElPTgorICoJICBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMKKyAqCisgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3Mv c3Rpci5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImFjY2Vzcy9hbXZhbGlk YXRlLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImFjY2Vz cy90YWJsZWFtLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfYW1vcC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIKKyNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKKyNp bmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInV0aWxzL2NhdGNhY2hlLmgiCisj aW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorI2luY2x1ZGUgInV0aWxzL2luZGV4X3NlbGZ1 bmNzLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWdw cm9jLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworLyoKKyAqIFN0aXIgaGFuZGxl ciBmdW5jdGlvbjogcmV0dXJuIEluZGV4QW1Sb3V0aW5lIHdpdGggYWNjZXNzIG1ldGhvZCBwYXJh bWV0ZXJzCisgKiBhbmQgY2FsbGJhY2tzLgorICovCitEYXR1bQorc3RpcmhhbmRsZXIoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwlJbmRleEFtUm91dGluZSAqYW1yb3V0aW5lID0gbWFrZU5vZGUoSW5k ZXhBbVJvdXRpbmUpOworCisJLyogU2V0IFNUSVItc3BlY2lmaWMgc3RyYXRlZ3kgYW5kIHByb2Nl ZHVyZSBudW1iZXJzICovCisJYW1yb3V0aW5lLT5hbXN0cmF0ZWdpZXMgPSBTVElSX05TVFJBVEVH SUVTOworCWFtcm91dGluZS0+YW1zdXBwb3J0ID0gU1RJUl9OUFJPQzsKKwlhbXJvdXRpbmUtPmFt b3B0c3Byb2NudW0gPSBTVElSX09QVElPTlNfUFJPQzsKKworCS8qIFNUSVIgZG9lc24ndCBzdXBw b3J0IG1vc3QgaW5kZXggb3BlcmF0aW9ucyAqLworCWFtcm91dGluZS0+YW1jYW5vcmRlciA9IGZh bHNlOworCWFtcm91dGluZS0+YW1jYW5vcmRlcmJ5b3AgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFt Y2FuYmFja3dhcmQgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2FudW5pcXVlID0gZmFsc2U7CisJ YW1yb3V0aW5lLT5hbWNhbm11bHRpY29sID0gdHJ1ZTsKKwlhbXJvdXRpbmUtPmFtb3B0aW9uYWxr ZXkgPSB0cnVlOworCWFtcm91dGluZS0+YW1zZWFyY2hhcnJheSA9IGZhbHNlOworCWFtcm91dGlu ZS0+YW1zZWFyY2hudWxscyA9IGZhbHNlOworCWFtcm91dGluZS0+YW1zdG9yYWdlID0gZmFsc2U7 CisJYW1yb3V0aW5lLT5hbWNsdXN0ZXJhYmxlID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbXByZWRs b2NrcyA9IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5wYXJhbGxlbCA9IGZhbHNlOworCWFtcm91 dGluZS0+YW1jYW5idWlsZHBhcmFsbGVsID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNhbmluY2x1 ZGUgPSB0cnVlOworCWFtcm91dGluZS0+YW11c2VtYWludGVuYW5jZXdvcmttZW0gPSBmYWxzZTsK KwlhbXJvdXRpbmUtPmFtcGFyYWxsZWx2YWN1dW1vcHRpb25zID0KKwkJCVZBQ1VVTV9PUFRJT05f UEFSQUxMRUxfQlVMS0RFTCB8IFZBQ1VVTV9PUFRJT05fUEFSQUxMRUxfQ0xFQU5VUDsKKwlhbXJv dXRpbmUtPmFta2V5dHlwZSA9IEludmFsaWRPaWQ7CisKKwkvKiBTZXQgdXAgZnVuY3Rpb24gY2Fs bGJhY2tzICovCisJYW1yb3V0aW5lLT5hbWJ1aWxkID0gc3RpcmJ1aWxkOworCWFtcm91dGluZS0+ YW1idWlsZGVtcHR5ID0gc3RpcmJ1aWxkZW1wdHk7CisJYW1yb3V0aW5lLT5hbWluc2VydCA9IHN0 aXJpbnNlcnQ7CisJYW1yb3V0aW5lLT5hbWluc2VydGNsZWFudXAgPSBOVUxMOworCWFtcm91dGlu ZS0+YW1idWxrZGVsZXRlID0gc3RpcmJ1bGtkZWxldGU7CisJYW1yb3V0aW5lLT5hbXZhY3V1bWNs ZWFudXAgPSBzdGlydmFjdXVtY2xlYW51cDsKKwlhbXJvdXRpbmUtPmFtY2FucmV0dXJuID0gTlVM TDsKKwlhbXJvdXRpbmUtPmFtY29zdGVzdGltYXRlID0gc3RpcmNvc3Rlc3RpbWF0ZTsKKwlhbXJv dXRpbmUtPmFtb3B0aW9ucyA9IHN0aXJvcHRpb25zOworCWFtcm91dGluZS0+YW1wcm9wZXJ0eSA9 IE5VTEw7CisJYW1yb3V0aW5lLT5hbWJ1aWxkcGhhc2VuYW1lID0gTlVMTDsKKwlhbXJvdXRpbmUt PmFtdmFsaWRhdGUgPSBzdGlydmFsaWRhdGU7CisJYW1yb3V0aW5lLT5hbWFkanVzdG1lbWJlcnMg PSBOVUxMOworCWFtcm91dGluZS0+YW1iZWdpbnNjYW4gPSBzdGlyYmVnaW5zY2FuOworCWFtcm91 dGluZS0+YW1yZXNjYW4gPSBzdGlycmVzY2FuOworCWFtcm91dGluZS0+YW1nZXR0dXBsZSA9IE5V TEw7CisJYW1yb3V0aW5lLT5hbWdldGJpdG1hcCA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWVuZHNj YW4gPSBzdGlyZW5kc2NhbjsKKwlhbXJvdXRpbmUtPmFtbWFya3BvcyA9IE5VTEw7CisJYW1yb3V0 aW5lLT5hbXJlc3RycG9zID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtZXN0aW1hdGVwYXJhbGxlbHNj YW4gPSBOVUxMOworCWFtcm91dGluZS0+YW1pbml0cGFyYWxsZWxzY2FuID0gTlVMTDsKKwlhbXJv dXRpbmUtPmFtcGFyYWxsZWxyZXNjYW4gPSBOVUxMOworCisJUEdfUkVUVVJOX1BPSU5URVIoYW1y b3V0aW5lKTsKK30KKworLyoKKyAqIFZhbGlkYXRlcyBvcGVyYXRvciBjbGFzcyBmb3IgU1RJUiBp bmRleC4KKyAqCisgKiBTVElSIGlzIG5vdCBhbiByZWFsIGluZGV4LCBzbyB2YWxpZGF0aW8gbWF5 IGJlIHNraXBwZWQuCisgKiBCdXQgd2UgZG8gaXQganVzdCBmb3IgY29uc2lzdGVuY3kuCisgKi8K K2Jvb2wKK3N0aXJ2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKK3sKKwlib29sIHJlc3VsdCA9IHRy dWU7CisJSGVhcFR1cGxlIGNsYXNzdHVwOworCUZvcm1fcGdfb3BjbGFzcyBjbGFzc2Zvcm07CisJ T2lkIG9wZmFtaWx5b2lkOworCUhlYXBUdXBsZSBmYW1pbHl0dXA7CisJRm9ybV9wZ19vcGZhbWls eSBmYW1pbHlmb3JtOworCWNoYXIgKm9wZmFtaWx5bmFtZTsKKwlDYXRDTGlzdCAqcHJvY2xpc3Qs CisJCQkqb3BybGlzdDsKKwlpbnQgaTsKKworCS8qIEZldGNoIG9wY2xhc3MgaW5mb3JtYXRpb24g Ki8KKwljbGFzc3R1cCA9IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQsIE9iamVjdElkR2V0RGF0dW0o b3BjbGFzc29pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFzc3R1cCkpCisJCWVsb2co RVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGVyYXRvciBjbGFzcyAldSIsIG9wY2xh c3NvaWQpOworCWNsYXNzZm9ybSA9IChGb3JtX3BnX29wY2xhc3MpIEdFVFNUUlVDVChjbGFzc3R1 cCk7CisKKwlvcGZhbWlseW9pZCA9IGNsYXNzZm9ybS0+b3BjZmFtaWx5OworCisKKwkvKiBGZXRj aCBvcGZhbWlseSBpbmZvcm1hdGlvbiAqLworCWZhbWlseXR1cCA9IFNlYXJjaFN5c0NhY2hlMShP UEZBTUlMWU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseW9pZCkpOworCWlmICghSGVhcFR1 cGxlSXNWYWxpZChmYW1pbHl0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3Igb3BlcmF0b3IgZmFtaWx5ICV1Iiwgb3BmYW1pbHlvaWQpOworCWZhbWlseWZvcm0gPSAo Rm9ybV9wZ19vcGZhbWlseSkgR0VUU1RSVUNUKGZhbWlseXR1cCk7CisKKwlvcGZhbWlseW5hbWUg PSBOYW1lU3RyKGZhbWlseWZvcm0tPm9wZm5hbWUpOworCisJLyogRmV0Y2ggYWxsIG9wZXJhdG9y cyBhbmQgc3VwcG9ydCBmdW5jdGlvbnMgb2YgdGhlIG9wZmFtaWx5ICovCisJb3BybGlzdCA9IFNl YXJjaFN5c0NhY2hlTGlzdDEoQU1PUFNUUkFURUdZLCBPYmplY3RJZEdldERhdHVtKG9wZmFtaWx5 b2lkKSk7CisJcHJvY2xpc3QgPSBTZWFyY2hTeXNDYWNoZUxpc3QxKEFNUFJPQ05VTSwgT2JqZWN0 SWRHZXREYXR1bShvcGZhbWlseW9pZCkpOworCisJLyogQ2hlY2sgaW5kaXZpZHVhbCBvcGVyYXRv cnMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgb3BybGlzdC0+bl9tZW1iZXJzOyBpKyspCisJeworCQlI ZWFwVHVwbGUgb3BydHVwID0gJm9wcmxpc3QtPm1lbWJlcnNbaV0tPnR1cGxlOworCQlGb3JtX3Bn X2Ftb3Agb3ByZm9ybSA9IChGb3JtX3BnX2Ftb3ApIEdFVFNUUlVDVChvcHJ0dXApOworCisJCS8q IENoZWNrIGl0J3MgYWxsb3dlZCBzdHJhdGVneSBmb3Igc3RpciAqLworCQlpZiAob3ByZm9ybS0+ YW1vcHN0cmF0ZWd5IDwgMSB8fAorCQkJb3ByZm9ybS0+YW1vcHN0cmF0ZWd5ID4gU1RJUl9OU1RS QVRFR0lFUykKKwkJeworCQkJZXJlcG9ydChJTkZPLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygic3RpciBvcGZhbWlseSAl cyBjb250YWlucyBvcGVyYXRvciAlcyB3aXRoIGludmFsaWQgc3RyYXRlZ3kgbnVtYmVyICVkIiwK KwkJCQkJCQkJICAgb3BmYW1pbHluYW1lLAorCQkJCQkJCQkgICBmb3JtYXRfb3BlcmF0b3Iob3By Zm9ybS0+YW1vcG9wciksCisJCQkJCQkJCSAgIG9wcmZvcm0tPmFtb3BzdHJhdGVneSkpKTsKKwkJ CXJlc3VsdCA9IGZhbHNlOworCQl9CisKKwkJLyogc3RpciBkb2Vzbid0IHN1cHBvcnQgT1JERVIg Qlkgb3BlcmF0b3JzICovCisJCWlmIChvcHJmb3JtLT5hbW9wcHVycG9zZSAhPSBBTU9QX1NFQVJD SCB8fAorCQkJT2lkSXNWYWxpZChvcHJmb3JtLT5hbW9wc29ydGZhbWlseSkpCisJCXsKKwkJCWVy ZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklU SU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIgb3BmYW1pbHkgJXMgY29udGFpbnMgaW52YWxpZCBP UkRFUiBCWSBzcGVjaWZpY2F0aW9uIGZvciBvcGVyYXRvciAlcyIsCisJCQkJCQkJCSAgIG9wZmFt aWx5bmFtZSwKKwkJCQkJCQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZvcm0tPmFtb3BvcHIpKSkp OworCQkJcmVzdWx0ID0gZmFsc2U7CisJCX0KKworCQkvKiBDaGVjayBvcGVyYXRvciBzaWduYXR1 cmUgLS0tIHNhbWUgZm9yIGFsbCBzdGlyIHN0cmF0ZWdpZXMgKi8KKwkJaWYgKCFjaGVja19hbW9w X3NpZ25hdHVyZShvcHJmb3JtLT5hbW9wb3ByLCBCT09MT0lELAorCQkJCQkJCQkgIG9wcmZvcm0t PmFtb3BsZWZ0dHlwZSwKKwkJCQkJCQkJICBvcHJmb3JtLT5hbW9wcmlnaHR0eXBlKSkKKwkJewor CQkJZXJlcG9ydChJTkZPLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RF RklOSVRJT04pLAorCQkJCQkJCWVycm1zZygic3RpciBvcGZhbWlseSAlcyBjb250YWlucyBvcGVy YXRvciAlcyB3aXRoIHdyb25nIHNpZ25hdHVyZSIsCisJCQkJCQkJCSAgIG9wZmFtaWx5bmFtZSwK KwkJCQkJCQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZvcm0tPmFtb3BvcHIpKSkpOworCQkJcmVz dWx0ID0gZmFsc2U7CisJCX0KKwl9CisKKworCVJlbGVhc2VDYXRDYWNoZUxpc3QocHJvY2xpc3Qp OworCVJlbGVhc2VDYXRDYWNoZUxpc3Qob3BybGlzdCk7CisJUmVsZWFzZVN5c0NhY2hlKGZhbWls eXR1cCk7CisJUmVsZWFzZVN5c0NhY2hlKGNsYXNzdHVwKTsKKworCXJldHVybiByZXN1bHQ7Cit9 CisKKworLyoKKyAqIEluaXRpYWxpemUgbWV0YXBhZ2Ugb2YgYSBTVElSIGluZGV4LgorICogVGhl IHNraXBJbnNlcnRzIGZsYWcgZGV0ZXJtaW5lcyBpZiBuZXcgaW5zZXJ0cyB3aWxsIGJlIGFjY2Vw dGVkIG9yIHNraXBwZWQuCisgKi8KK3ZvaWQKK1N0aXJGaWxsTWV0YXBhZ2UoUmVsYXRpb24gaW5k ZXgsIFBhZ2UgbWV0YVBhZ2UsIGJvb2wgc2tpcEluc2VydHMpCit7CisJU3Rpck1ldGFQYWdlRGF0 YSAqbWV0YWRhdGE7CisKKwlTdGlySW5pdFBhZ2UobWV0YVBhZ2UsIFNUSVJfTUVUQSk7CisJbWV0 YWRhdGEgPSBTdGlyUGFnZUdldE1ldGEobWV0YVBhZ2UpOworCW1lbXNldChtZXRhZGF0YSwgMCwg c2l6ZW9mKFN0aXJNZXRhUGFnZURhdGEpKTsKKwltZXRhZGF0YS0+bWFnaWNrTnVtYmVyID0gU1RJ Ul9NQUdJQ0tfTlVNQkVSOworCW1ldGFkYXRhLT5za2lwSW5zZXJ0cyA9IHNraXBJbnNlcnRzOwor CSgoUGFnZUhlYWRlcikgbWV0YVBhZ2UpLT5wZF9sb3dlciArPSBzaXplb2YoU3Rpck1ldGFQYWdl RGF0YSk7Cit9CisKKy8qCisgKiBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIG1ldGFwYWdlIGZv ciBhIFNUSVIgaW5kZXguCisgKiBUaGlzIGlzIGNhbGxlZCBkdXJpbmcgaW5kZXggY3JlYXRpb24u CisgKi8KK3ZvaWQKK1N0aXJJbml0TWV0YXBhZ2UoUmVsYXRpb24gaW5kZXgsIEZvcmtOdW1iZXIg Zm9ya251bSkKK3sKKwlCdWZmZXIgbWV0YUJ1ZmZlcjsKKwlQYWdlIG1ldGFQYWdlOworCisJQXNz ZXJ0KCFSZWxhdGlvbk5lZWRzV0FMKGluZGV4KSk7CisJLyoKKwkgKiBNYWtlIGEgbmV3IHBhZ2U7 IHNpbmNlIGl0IGlzIGZpcnN0IHBhZ2UgaXQgc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aAorCSAq IGJsb2NrIG51bWJlciAwIChTVElSX01FVEFQQUdFX0JMS05PKS4gIE5vIG5lZWQgdG8gaG9sZCB0 aGUgZXh0ZW5zaW9uCisJICogbG9jayBiZWNhdXNlIHRoZXJlIGNhbm5vdCBiZSBjb25jdXJyZW50 IGluc2VydGVycyB5ZXQuCisJICovCisJbWV0YUJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChp bmRleCwgZm9ya251bSwgUF9ORVcsIFJCTV9OT1JNQUwsIE5VTEwpOworCVNUQVJUX0NSSVRfU0VD VElPTigpOworCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsK KwlBc3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIobWV0YUJ1ZmZlcikgPT0gU1RJUl9NRVRBUEFH RV9CTEtOTyk7CisKKwltZXRhUGFnZSA9ICBCdWZmZXJHZXRQYWdlKG1ldGFCdWZmZXIpOworCVN0 aXJGaWxsTWV0YXBhZ2UoaW5kZXgsIG1ldGFQYWdlLCBmb3JrbnVtID09IElOSVRfRk9SS05VTSk7 CisKKwlNYXJrQnVmZmVyRGlydHkobWV0YUJ1ZmZlcik7CisJRU5EX0NSSVRfU0VDVElPTigpOwor CVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YUJ1ZmZlcik7Cit9CisKKy8qCisgKiBJbml0aWFsaXpl IGFueSBwYWdlIG9mIGEgc3RpciBpbmRleC4KKyAqLwordm9pZAorU3RpckluaXRQYWdlKFBhZ2Ug cGFnZSwgdWludDE2IGZsYWdzKQoreworCVN0aXJQYWdlT3BhcXVlIG9wYXF1ZTsKKworCVBhZ2VJ bml0KHBhZ2UsIEJMQ0tTWiwgc2l6ZW9mKFN0aXJQYWdlT3BhcXVlRGF0YSkpOworCisJb3BhcXVl ID0gU3RpclBhZ2VHZXRPcGFxdWUocGFnZSk7CisJb3BhcXVlLT5mbGFncyA9IGZsYWdzOworCW9w YXF1ZS0+c3Rpcl9wYWdlX2lkID0gU1RJUl9QQUdFX0lEOworfQorCisvKgorICogQWRkIGEgdHVw bGUgdG8gYSBTVElSIHBhZ2UuIFJldHVybnMgZmFsc2UgaWYgdHVwbGUgZG9lc24ndCBmaXQuCisg KiBUaGUgdHVwbGUgaXMgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGUgcGFnZS4KKyAqLworc3RhdGlj IGJvb2wKK1N0aXJQYWdlQWRkSXRlbShQYWdlIHBhZ2UsIFN0aXJUdXBsZSAqdHVwbGUpCit7CisJ U3RpclR1cGxlICppdHVwOworCVN0aXJQYWdlT3BhcXVlIG9wYXF1ZTsKKwlQb2ludGVyIHB0cjsK KworCS8qIFdlIHNob3VsZG4ndCBiZSBwb2ludGVkIHRvIGFuIGludmFsaWQgcGFnZSAqLworCUFz c2VydCghUGFnZUlzTmV3KHBhZ2UpKTsKKworCS8qIERvZXMgbmV3IHR1cGxlIGZpdCBvbiB0aGUg cGFnZT8gKi8KKwlpZiAoU3RpclBhZ2VHZXRGcmVlU3BhY2Uoc3RhdGUsIHBhZ2UpIDwgc2l6ZW9m KFN0aXJUdXBsZSkpCisJCXJldHVybiBmYWxzZTsKKworCS8qIENvcHkgbmV3IHR1cGxlIHRvIHRo ZSBlbmQgb2YgcGFnZSAqLworCW9wYXF1ZSA9IFN0aXJQYWdlR2V0T3BhcXVlKHBhZ2UpOworCWl0 dXAgPSBTdGlyUGFnZUdldFR1cGxlKHBhZ2UsIG9wYXF1ZS0+bWF4b2ZmICsgMSk7CisJbWVtY3B5 KChQb2ludGVyKSBpdHVwLCAoUG9pbnRlcikgdHVwbGUsIHNpemVvZihTdGlyVHVwbGUpKTsKKwor CS8qIEFkanVzdCBtYXhvZmYgYW5kIHBkX2xvd2VyICovCisJb3BhcXVlLT5tYXhvZmYrKzsKKwlw dHIgPSAoUG9pbnRlcikgU3RpclBhZ2VHZXRUdXBsZShwYWdlLCBvcGFxdWUtPm1heG9mZiArIDEp OworCSgoUGFnZUhlYWRlcikgcGFnZSktPnBkX2xvd2VyID0gcHRyIC0gcGFnZTsKKworCS8qIEFz c2VydCB3ZSBkaWRuJ3Qgb3ZlcnJ1biBhdmFpbGFibGUgc3BhY2UgKi8KKwlBc3NlcnQoKChQYWdl SGVhZGVyKSBwYWdlKS0+cGRfbG93ZXIgPD0gKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfdXBwZXIp OworCXJldHVybiB0cnVlOworfQorCisvKgorICogSW5zZXJ0IGEgbmV3IHR1cGxlIGludG8gYSBT VElSIGluZGV4LgorICovCitib29sCitzdGlyaW5zZXJ0KFJlbGF0aW9uIGluZGV4LCBEYXR1bSAq dmFsdWVzLCBib29sICppc251bGwsCisJCSAgSXRlbVBvaW50ZXIgaHRfY3RpZCwgUmVsYXRpb24g aGVhcFJlbCwKKwkJICBJbmRleFVuaXF1ZUNoZWNrIGNoZWNrVW5pcXVlLAorCQkgIGJvb2wgaW5k ZXhVbmNoYW5nZWQsCisJCSAgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhJbmZvKQoreworCVN0aXJU dXBsZSAqaXR1cDsKKwlNZW1vcnlDb250ZXh0IG9sZEN0eDsKKwlNZW1vcnlDb250ZXh0IGluc2Vy dEN0eDsKKwlTdGlyTWV0YVBhZ2VEYXRhICptZXRhRGF0YTsKKwlCdWZmZXIgYnVmZmVyLAorCQkJ bWV0YUJ1ZmZlcjsKKwlQYWdlIHBhZ2U7CisJdWludDE2IGJsa05vOworCisJLyogQ3JlYXRlIHRl bXBvcmFyeSBjb250ZXh0IGZvciBpbnNlcnQgb3BlcmF0aW9uICovCisJaW5zZXJ0Q3R4ID0gQWxs b2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJICAiU3Rp ciBpbnNlcnQgdGVtcG9yYXJ5IGNvbnRleHQiLAorCQkJCQkJCQkJICBBTExPQ1NFVF9ERUZBVUxU X1NJWkVTKTsKKworCW9sZEN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhpbnNlcnRDdHgpOwor CisJLyogQ3JlYXRlIG5ldyB0dXBsZSB3aXRoIGhlYXAgcG9pbnRlciAqLworCWl0dXAgPSAoU3Rp clR1cGxlICopIHBhbGxvYzAoc2l6ZW9mKFN0aXJUdXBsZSkpOworCWl0dXAtPmhlYXBQdHIgPSAq aHRfY3RpZDsKKworCUFzc2VydCghUmVsYXRpb25OZWVkc1dBTChpbmRleCkpOworCW1ldGFCdWZm ZXIgPSBSZWFkQnVmZmVyKGluZGV4LCBTVElSX01FVEFQQUdFX0JMS05PKTsKKworCWZvciAoOzsp CisJeworCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX1NIQVJFKTsKKwkJbWV0 YURhdGEgPSBTdGlyUGFnZUdldE1ldGEoQnVmZmVyR2V0UGFnZShtZXRhQnVmZmVyKSk7CisJCS8q IENoZWNrIGlmIGluc2VydHMgYXJlIGFsbG93ZWQgKi8KKwkJaWYgKG1ldGFEYXRhLT5za2lwSW5z ZXJ0cykKKwkJeworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihtZXRhQnVmZmVyKTsKKwkJCXJldHVy biBmYWxzZTsKKwkJfQorCQlibGtObyA9IG1ldGFEYXRhLT5sYXN0QmxrTm87CisJCS8qIERvbid0 IGhvbGQgbWV0YWJ1ZmZlciBsb2NrIHdoaWxlIGRvaW5nIGluc2VydCAqLworCQlMb2NrQnVmZmVy KG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisKKwkJaWYgKGJsa05vID4gMCkKKwkJ eworCQkJYnVmZmVyID0gUmVhZEJ1ZmZlcihpbmRleCwgYmxrTm8pOworCQkJTG9ja0J1ZmZlcihi dWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisJCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsK KworCQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKKworCQkJQXNzZXJ0KCFQYWdlSXNO ZXcocGFnZSkpOworCisJCQkvKiBUcnkgdG8gYWRkIHR1cGxlIHRvIGV4aXN0aW5nIHBhZ2UgKi8K KwkJCWlmIChTdGlyUGFnZUFkZEl0ZW0ocGFnZSwgaXR1cCkpCisJCQl7CisJCQkJLyogU3VjY2Vz cyEgIEFwcGx5IHRoZSBjaGFuZ2UsIGNsZWFuIHVwLCBhbmQgZXhpdCAqLworCQkJCU1hcmtCdWZm ZXJEaXJ0eShidWZmZXIpOworCQkJCUVORF9DUklUX1NFQ1RJT04oKTsKKworCQkJCVVubG9ja1Jl bGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJCQlSZWxlYXNlQnVmZmVyKG1ldGFCdWZmZXIpOworCQkJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDdHgpOworCQkJCU1lbW9yeUNvbnRleHREZWxldGUo aW5zZXJ0Q3R4KTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisKKwkJCUVORF9DUklUX1NFQ1RJ T04oKTsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJfQorCisJCS8qIE5lZWQg dG8gYWRkIG5ldyBwYWdlIC0gZ2V0IGV4Y2x1c2l2ZSBsb2NrIG9uIG1ldGEgcGFnZSAqLworCQlM b2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisKKwkJbWV0YURh dGEgPSBTdGlyUGFnZUdldE1ldGEoQnVmZmVyR2V0UGFnZShtZXRhQnVmZmVyKSk7CisJCS8qIENo ZWNrIGlmIGFub3RoZXIgYmFja2VuZCBhbHJlYWR5IGV4dGVuZGVkIHRoZSBpbmRleCAqLworCisJ CWlmIChibGtObyAhPSBtZXRhRGF0YS0+bGFzdEJsa05vKQorCQl7CisJCQlBc3NlcnQoYmxrTm8g PCBtZXRhRGF0YS0+bGFzdEJsa05vKTsKKwkJCS8qIFNvbWVvbmUgZWxzZSBpbnNlcnRlZCB0aGUg bmV3IHBhZ2UgaW50byB0aGUgaW5kZXgsIGxldHMgdHJ5IGFnYWluICovCisJCQlMb2NrQnVmZmVy KG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisJCQljb250aW51ZTsKKwkJfQorCQll bHNlCisJCXsKKwkJCS8qIE11c3QgZXh0ZW5kIHRoZSBmaWxlICovCisJCQlidWZmZXIgPSBFeHRl bmRCdWZmZXJlZFJlbChCTVJfUkVMKGluZGV4KSwgTUFJTl9GT1JLTlVNLCBOVUxMLAorCQkJCQkJ CQkJICAgRUJfTE9DS19GSVJTVCk7CisJCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwor CQkJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CisKKwkJCVN0aXJJbml0UGFnZShwYWdlLCAwKTsKKwor CQkJaWYgKCFTdGlyUGFnZUFkZEl0ZW0ocGFnZSwgaXR1cCkpCisJCQl7CisJCQkJLyogV2Ugc2hv dWxkbid0IGJlIGhlcmUgc2luY2Ugd2UncmUgaW5zZXJ0aW5nIHRvIGFuIGVtcHR5IHBhZ2UgKi8K KwkJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGFkZCBuZXcgc3RpciB0dXBsZSB0byBlbXB0eSBw YWdlIik7CisJCQl9CisKKwkJCS8qIFVwZGF0ZSBtZXRhIHBhZ2Ugd2l0aCBuZXcgbGFzdCBibG9j ayBudW1iZXIgKi8KKwkJCW1ldGFEYXRhLT5sYXN0QmxrTm8gPSBCdWZmZXJHZXRCbG9ja051bWJl cihidWZmZXIpOworCisJCQlNYXJrQnVmZmVyRGlydHkobWV0YUJ1ZmZlcik7CisJCQlNYXJrQnVm ZmVyRGlydHkoYnVmZmVyKTsKKworCQkJRU5EX0NSSVRfU0VDVElPTigpOworCisJCQlVbmxvY2tS ZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKG1ldGFCdWZmZXIp OworCisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4KTsKKwkJCU1lbW9yeUNvbnRleHRE ZWxldGUoaW5zZXJ0Q3R4KTsKKworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJfQorfQorCisvKgor ICogU1RJUiBkb2Vzbid0IHN1cHBvcnQgc2NhbnMgLSB0aGVzZSBmdW5jdGlvbnMgYWxsIGVycm9y IG91dAorICovCitJbmRleFNjYW5EZXNjCitzdGlyYmVnaW5zY2FuKFJlbGF0aW9uIHIsIGludCBu a2V5cywgaW50IG5vcmRlcmJ5cykKK3sKKwllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIG5vdCBpbXBs ZW1lbnRlZCIsIF9fZnVuY19fKSkpOworfQorCit2b2lkCitzdGlycmVzY2FuKEluZGV4U2NhbkRl c2Mgc2NhbiwgU2NhbktleSBzY2Fua2V5LCBpbnQgbnNjYW5rZXlzLAorCQkgIFNjYW5LZXkgb3Jk ZXJieXMsIGludCBub3JkZXJieXMpCit7CisJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1w bGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30KKwordm9pZCBzdGlyZW5kc2NhbihJbmRleFNjYW5E ZXNjIHNjYW4pCit7CisJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1wbGVtZW50ZWQiLCBf X2Z1bmNfXykpKTsKK30KKworLyoKKyAqIEJ1aWxkIGEgU1RJUiBpbmRleCAtIG9ubHkgYWxsb3dl ZCBmb3IgYXV4aWxpYXJ5IGluZGV4ZXMuCisgKiBKdXN0IGluaXRpYWxpemVzIHRoZSBtZXRhIHBh Z2Ugd2l0aG91dCBhbnkgaGVhcCBzY2Fucy4KKyAqLworSW5kZXhCdWlsZFJlc3VsdCAqCitzdGly YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCisJCQkJCQkgICBzdHJ1Y3QgSW5k ZXhJbmZvICppbmRleEluZm8pCit7CisJSW5kZXhCdWlsZFJlc3VsdCAqcmVzdWx0OworCisJaWYg KCFpbmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlNUSVIgaW5kZXhlcyBhcmUgbm90 IHN1cHBvcnRlZCB0byBiZSBidWlsdCIpKSk7CisKKwlTdGlySW5pdE1ldGFwYWdlKGluZGV4LCBN QUlOX0ZPUktOVU0pOworCisJcmVzdWx0ID0gKEluZGV4QnVpbGRSZXN1bHQgKikgcGFsbG9jKHNp emVvZihJbmRleEJ1aWxkUmVzdWx0KSk7CisJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IDA7CisJcmVz dWx0LT5pbmRleF90dXBsZXMgPSAwOworCXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgc3RpcmJ1 aWxkZW1wdHkoUmVsYXRpb24gaW5kZXgpCit7CisJU3RpckluaXRNZXRhcGFnZShpbmRleCwgSU5J VF9GT1JLTlVNKTsKK30KKworSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICoKK3N0aXJidWxrZGVsZXRl KEluZGV4VmFjdXVtSW5mbyAqaW5mbywKKwkJCQkJCQkJCSBJbmRleEJ1bGtEZWxldGVSZXN1bHQg KnN0YXRzLAorCQkJCQkJCQkJIEluZGV4QnVsa0RlbGV0ZUNhbGxiYWNrIGNhbGxiYWNrLAorCQkJ CQkJCQkJIHZvaWQgKmNhbGxiYWNrX3N0YXRlKQoreworCVJlbGF0aW9uIGluZGV4ID0gaW5mby0+ aW5kZXg7CisJQmxvY2tOdW1iZXIgYmxrbm8sIG5wYWdlczsKKwlCdWZmZXIgYnVmZmVyOworCVBh Z2UgcGFnZTsKKworCS8qIEZvciBub3JtYWwgVkFDVVVNLCBtYXJrIHRvIHNraXAgaW5zZXJ0cyBh bmQgd2FybiBhYm91dCBpbmRleCBkcm9wIG5lZWRlZCAqLworCWlmICghaW5mby0+dmFsaWRhdGVf aW5kZXgpCisJeworCQlTdGlyTWFya0FzU2tpcEluc2VydHMoaW5kZXgpOworCisJCWVyZXBvcnQo V0FSTklORywgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVy cm1zZygiXCIlc1wiIGlzIG5vdCBhIG5vdCBpbXBsZW1lbnRlZCwgc2VlbXMgbGlrZSB0aGlzIGlu ZGV4IG5lZWQgdG8gYmUgZHJvcHBlZCIsIF9fZnVuY19fKSkpOworCQlyZXR1cm4gTlVMTDsKKwl9 CisKKwlpZiAoc3RhdHMgPT0gTlVMTCkKKwkJc3RhdHMgPSAoSW5kZXhCdWxrRGVsZXRlUmVzdWx0 ICopIHBhbGxvYzAoc2l6ZW9mKEluZGV4QnVsa0RlbGV0ZVJlc3VsdCkpOworCisJLyoKKwkgKiBJ dGVyYXRlIG92ZXIgdGhlIHBhZ2VzLiBXZSBkb24ndCBjYXJlIGFib3V0IGNvbmN1cnJlbnRseSBh ZGRlZCBwYWdlcywKKwkgKiBiZWNhdXNlIGluZGV4IGlzIG1hcmtlZCBhcyBub3QtcmVhZHkgZm9y IHRoYXQgbW9tbWVudCBhbmQgaW5kZXggbm90CisJICogdXNlZCBmb3IgaW5zZXJ0LgorCSAqLwor CW5wYWdlcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3MoaW5kZXgpOworCWZvciAoYmxrbm8g PSBTVElSX0hFQURfQkxLTk87IGJsa25vIDwgbnBhZ2VzOyBibGtubysrKQorCXsKKwkJU3RpclR1 cGxlICppdHVwLCAqaXR1cEVuZDsKKworCQl2YWN1dW1fZGVsYXlfcG9pbnQoZmFsc2UpOworCisJ CWJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChpbmRleCwgTUFJTl9GT1JLTlVNLCBibGtubywK KwkJCQkJCQkJCVJCTV9OT1JNQUwsIGluZm8tPnN0cmF0ZWd5KTsKKworCQlMb2NrQnVmZmVyKGJ1 ZmZlciwgQlVGRkVSX0xPQ0tfU0hBUkUpOworCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIp OworCisJCWlmIChQYWdlSXNOZXcocGFnZSkpCisJCXsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIo YnVmZmVyKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaXR1cCA9IFN0aXJQYWdlR2V0VHVwbGUo cGFnZSwgRmlyc3RPZmZzZXROdW1iZXIpOworCQlpdHVwRW5kID0gU3RpclBhZ2VHZXRUdXBsZShw YWdlLCBPZmZzZXROdW1iZXJOZXh0KFN0aXJQYWdlR2V0TWF4T2Zmc2V0KHBhZ2UpKSk7CisJCXdo aWxlIChpdHVwIDwgaXR1cEVuZCkKKwkJeworCQkJLyogRG8gd2UgaGF2ZSB0byBkZWxldGUgdGhp cyB0dXBsZT8gKi8KKwkJCWlmIChjYWxsYmFjaygmaXR1cC0+aGVhcFB0ciwgY2FsbGJhY2tfc3Rh dGUpKQorCQkJeworCQkJCWVyZXBvcnQoRVJST1IsIChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwgZXJybXNnKCJ3ZSBuZXZlciBkZWxldGUgaW4gc3RpciIpKSk7CisJCQl9 CisKKwkJCWl0dXAgPSBTdGlyUGFnZUdldE5leHRUdXBsZShpdHVwKTsKKwkJfQorCisJCVVubG9j a1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwl9CisKKwlyZXR1cm4gc3RhdHM7Cit9CisKKy8qCisg KiBNYXJrIGEgU1RJUiBpbmRleCB0byBza2lwIGZ1dHVyZSBpbnNlcnRzCisgKi8KK3ZvaWQKK1N0 aXJNYXJrQXNTa2lwSW5zZXJ0cyhSZWxhdGlvbiBpbmRleCkKK3sKKwlTdGlyTWV0YVBhZ2VEYXRh ICptZXRhRGF0YTsKKwlCdWZmZXIgbWV0YUJ1ZmZlcjsKKwlQYWdlIG1ldGFQYWdlOworCisJQXNz ZXJ0KCFSZWxhdGlvbk5lZWRzV0FMKGluZGV4KSk7CisJbWV0YUJ1ZmZlciA9IFJlYWRCdWZmZXIo aW5kZXgsIFNUSVJfTUVUQVBBR0VfQkxLTk8pOworCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVG RkVSX0xPQ0tfRVhDTFVTSVZFKTsKKwlTVEFSVF9DUklUX1NFQ1RJT04oKTsKKworCW1ldGFQYWdl ID0gQnVmZmVyR2V0UGFnZShtZXRhQnVmZmVyKTsKKwltZXRhRGF0YSA9IFN0aXJQYWdlR2V0TWV0 YShtZXRhUGFnZSk7CisKKwlpZiAoIW1ldGFEYXRhLT5za2lwSW5zZXJ0cykKKwl7CisJCW1ldGFE YXRhLT5za2lwSW5zZXJ0cyA9IHRydWU7CisJCU1hcmtCdWZmZXJEaXJ0eShtZXRhQnVmZmVyKTsK Kwl9CisJRU5EX0NSSVRfU0VDVElPTigpOworCVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YUJ1ZmZl cik7Cit9CisKK0luZGV4QnVsa0RlbGV0ZVJlc3VsdCAqCitzdGlydmFjdXVtY2xlYW51cChJbmRl eFZhY3V1bUluZm8gKmluZm8sCisJCQkJCQkJCQkJSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0 cykKK3sKKwlTdGlyTWFya0FzU2tpcEluc2VydHMoaW5mby0+aW5kZXgpOworCWVyZXBvcnQoV0FS TklORywgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJZXJybXNn KCJcIiVzXCIgaXMgbm90IGEgbm90IGltcGxlbWVudGVkLCBzZWVtcyBsaWtlIHRoaXMgaW5kZXgg bmVlZCB0byBiZSBkcm9wcGVkIiwgX19mdW5jX18pKSk7CisJcmV0dXJuIE5VTEw7Cit9CisKK2J5 dGVhICoKK3N0aXJvcHRpb25zKERhdHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUpCit7CisJ cmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQKK3N0aXJjb3N0ZXN0aW1hdGUoUGxhbm5lckluZm8gKnJv b3QsIEluZGV4UGF0aCAqcGF0aCwKKwkJCQkJIGRvdWJsZSBsb29wX2NvdW50LCBDb3N0ICppbmRl eFN0YXJ0dXBDb3N0LAorCQkJCQkgQ29zdCAqaW5kZXhUb3RhbENvc3QsIFNlbGVjdGl2aXR5ICpp bmRleFNlbGVjdGl2aXR5LAorCQkJCQkgZG91YmxlICppbmRleENvcnJlbGF0aW9uLCBkb3VibGUg KmluZGV4UGFnZXMpCit7CisJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1wbGVtZW50ZWQi LCBfX2Z1bmNfXykpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBjMDE3MjI2ZmEzMS4uMWFkNTll ZmZlYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTM0MzMsNiArMzQzMyw3IEBAIHZhbGlkYXRlX2lu ZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAlpdmluZm8u bWVzc2FnZV9sZXZlbCA9IERFQlVHMjsKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gaGVhcFJl bGF0aW9uLT5yZF9yZWwtPnJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kgPSBOVUxMOworCWl2 aW5mby52YWxpZGF0ZV9pbmRleCA9IHRydWU7CiAKIAkvKgogCSAqIEVuY29kZSBUSURzIGFzIGlu dDggdmFsdWVzIGZvciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy90b2FzdGluZy5jCmluZGV4IDg3NGE4ZmM4OWFkLi45Y2M0ZjA2ZGE5ZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvdG9hc3RpbmcuYwpAQCAtMzA3LDYgKzMwNyw3IEBAIGNyZWF0ZV90b2FzdF90YWJsZShSZWxh dGlvbiByZWwsIE9pZCB0b2FzdE9pZCwgT2lkIHRvYXN0SW5kZXhPaWQsCiAJaW5kZXhJbmZvLT5p aV9QYXJhbGxlbFdvcmtlcnMgPSAwOwogCWluZGV4SW5mby0+aWlfQW0gPSBCVFJFRV9BTV9PSUQ7 CiAJaW5kZXhJbmZvLT5paV9BbUNhY2hlID0gTlVMTDsKKwlpbmRleEluZm8tPmlpX0F1eGlsaWFy eSA9IGZhbHNlOwogCWluZGV4SW5mby0+aWlfQ29udGV4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0 OwogCiAJY29sbGF0aW9uSWRzWzBdID0gSW52YWxpZE9pZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwpp bmRleCAxMmI0ZjNmZDM2ZS4uYjc0N2M2ZTc4MDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKQEAg LTcxOSw2ICs3MTksNyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIGNvbnN0IFZh Y3V1bVBhcmFtcyBwYXJhbXMsCiAJCQlpdmluZm8ubWVzc2FnZV9sZXZlbCA9IGVsZXZlbDsKIAkJ CWl2aW5mby5udW1faGVhcF90dXBsZXMgPSBvbmVyZWwtPnJkX3JlbC0+cmVsdHVwbGVzOwogCQkJ aXZpbmZvLnN0cmF0ZWd5ID0gdmFjX3N0cmF0ZWd5OworCQkJaXZpbmZvLnZhbGlkYXRlX2luZGV4 ID0gZmFsc2U7CiAKIAkJCXN0YXRzID0gaW5kZXhfdmFjdXVtX2NsZWFudXAoJml2aW5mbywgTlVM TCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDBmZWVhMWQzMGVj Li41ODJkYjc3ZGRjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFy YWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC04 ODQsNiArODg0LDcgQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfb25lX2luZGV4KFBhcmFsbGVs VmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24gaW5kcmVsLAogCWl2aW5mby5lc3RpbWF0ZWRfY291 bnQgPSBwdnMtPnNoYXJlZC0+ZXN0aW1hdGVkX2NvdW50OwogCWl2aW5mby5udW1faGVhcF90dXBs ZXMgPSBwdnMtPnNoYXJlZC0+cmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IHB2cy0+YnN0 cmF0ZWd5OworCWl2aW5mby52YWxpZGF0ZV9pbmRleCA9IGZhbHNlOwogCiAJLyogVXBkYXRlIGVy cm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbiAqLwogCXB2cy0+aW5kbmFtZSA9IHBzdHJkdXAoUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kcmVsKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCmluZGV4IGUy ZDllOWJlNDFhLi5lOTdlMDk0M2Y1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFr ZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKQEAgLTg3NSw2ICs4 NzUsNyBAQCBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQg YW1vaWQsIExpc3QgKmV4cHJlc3Npb25zLAogCS8qIGluaXRpYWxpemUgaW5kZXgtYnVpbGQgc3Rh dGUgdG8gZGVmYXVsdCAqLwogCW4tPmlpX0Jyb2tlbkhvdENoYWluID0gZmFsc2U7CiAJbi0+aWlf UGFyYWxsZWxXb3JrZXJzID0gMDsKKwluLT5paV9BdXhpbGlhcnkgPSBmYWxzZTsKIAogCS8qIHNl dCB1cCBmb3IgcG9zc2libGUgdXNlIGJ5IGluZGV4IEFNICovCiAJbi0+aWlfQW0gPSBhbW9pZDsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2dlbmFtLmgKaW5kZXggYWM2MmY2YTZhYmQuLjBkMGEwZjhkNzNmIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0u aApAQCAtNzUsNiArNzUsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFZhY3V1bUluZm8KIAlib29s CQllc3RpbWF0ZWRfY291bnQ7CS8qIG51bV9oZWFwX3R1cGxlcyBpcyBhbiBlc3RpbWF0ZSAqLwog CWludAkJCW1lc3NhZ2VfbGV2ZWw7CS8qIGVyZXBvcnQgbGV2ZWwgZm9yIHByb2dyZXNzIG1lc3Nh Z2VzICovCiAJZG91YmxlCQludW1faGVhcF90dXBsZXM7CS8qIHR1cGxlcyByZW1haW5pbmcgaW4g aGVhcCAqLworCWJvb2wJCXZhbGlkYXRlX2luZGV4OyAvKiB2YWxpZGF0aW5nIGNvbmN1cnJlbnRs eSBidWlsdCBpbmRleD8gKi8KIAlCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneTsJLyogYWNj ZXNzIHN0cmF0ZWd5IGZvciByZWFkcyAqLwogfSBJbmRleFZhY3V1bUluZm87CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25zLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv cmVsb3B0aW9ucy5oCmluZGV4IGE2MDRhNDcwMmMzLi4zMTI3NzMxZjljNiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv cmVsb3B0aW9ucy5oCkBAIC01MSw4ICs1MSw5IEBAIHR5cGVkZWYgZW51bSByZWxvcHRfa2luZAog CVJFTE9QVF9LSU5EX1ZJRVcgPSAoMSA8PCA5KSwKIAlSRUxPUFRfS0lORF9CUklOID0gKDEgPDwg MTApLAogCVJFTE9QVF9LSU5EX1BBUlRJVElPTkVEID0gKDEgPDwgMTEpLAorCVJFTE9QVF9LSU5E X1NUSVIgPSAoMSA8PCAxMiksCiAJLyogaWYgeW91IGFkZCBhIG5ldyBraW5kLCBtYWtlIHN1cmUg eW91IHVwZGF0ZSAibGFzdF9kZWZhdWx0IiB0b28gKi8KLQlSRUxPUFRfS0lORF9MQVNUX0RFRkFV TFQgPSBSRUxPUFRfS0lORF9QQVJUSVRJT05FRCwKKwlSRUxPUFRfS0lORF9MQVNUX0RFRkFVTFQg PSBSRUxPUFRfS0lORF9TVElSLAogCS8qIHNvbWUgY29tcGlsZXJzIHRyZWF0IGVudW1zIGFzIHNp Z25lZCBpbnRzLCBzbyB3ZSBjYW4ndCB1c2UgMSA8PCAzMSAqLwogCVJFTE9QVF9LSU5EX01BWCA9 ICgxIDw8IDMwKQogfSByZWxvcHRfa2luZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9zdGlyLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi45OTQzYzQyYTk3ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9zdGlyLmgKQEAgLTAsMCArMSwxMTcgQEAKKy8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoKKyAqIHN0aXIuaAorICoJICBoZWFkZXIgZmlsZSBmb3IgcG9zdGdyZXMgc3RpciBhY2Nl c3MgbWV0aG9kIGltcGxlbWVudGF0aW9uLgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogc3Jj L2luY2x1ZGUvYWNjZXNzL3N0aXIuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZu ZGVmIF9TVElSX0hfCisjZGVmaW5lIF9TVElSX0hfCisKKyNpbmNsdWRlICJhbWFwaS5oIgorI2lu Y2x1ZGUgInhsb2cuaCIKKyNpbmNsdWRlICJnZW5lcmljX3hsb2cuaCIKKyNpbmNsdWRlICJpdHVw LmgiCisjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgIm5vZGVzL3BhdGhub2Rlcy5oIgorCisv KiBTdXBwb3J0IHByb2NlZHVyZXMgbnVtYmVycyAqLworI2RlZmluZSBTVElSX05QUk9DCQkJCTAK KworLyogU2NhbiBzdHJhdGVnaWVzICovCisjZGVmaW5lIFNUSVJfTlNUUkFURUdJRVMJCTEKKwor I2RlZmluZSBTVElSX09QVElPTlNfUFJPQwkJCQkwCisKKy8qIE1hY3JvcyBmb3IgYWNjZXNzaW5n IHN0aXIgcGFnZSBzdHJ1Y3R1cmVzICovCisjZGVmaW5lIFN0aXJQYWdlR2V0T3BhcXVlKHBhZ2Up ICgoU3RpclBhZ2VPcGFxdWUpIFBhZ2VHZXRTcGVjaWFsUG9pbnRlcihwYWdlKSkKKyNkZWZpbmUg U3RpclBhZ2VHZXRNYXhPZmZzZXQocGFnZSkgKFN0aXJQYWdlR2V0T3BhcXVlKHBhZ2UpLT5tYXhv ZmYpCisjZGVmaW5lIFN0aXJQYWdlSXNNZXRhKHBhZ2UpIFwKKwkoKFN0aXJQYWdlR2V0T3BhcXVl KHBhZ2UpLT5mbGFncyAmIFNUSVJfTUVUQSkgIT0gMCkKKyNkZWZpbmUgU3RpclBhZ2VHZXREYXRh KHBhZ2UpCQkoKFN0aXJUdXBsZSAqKVBhZ2VHZXRDb250ZW50cyhwYWdlKSkKKyNkZWZpbmUgU3Rp clBhZ2VHZXRUdXBsZShwYWdlLCBvZmZzZXQpIFwKKwkoKFN0aXJUdXBsZSAqKShQYWdlR2V0Q29u dGVudHMocGFnZSkgXAorCQkrIHNpemVvZihTdGlyVHVwbGUpICogKChvZmZzZXQpIC0gMSkpKQor I2RlZmluZSBTdGlyUGFnZUdldE5leHRUdXBsZSh0dXBsZSkgXAorCSgoU3RpclR1cGxlICopKChQ b2ludGVyKSh0dXBsZSkgKyBzaXplb2YoU3RpclR1cGxlKSkpCisKKworCisvKiBQcmVzZXJ2ZWQg cGFnZSBudW1iZXJzICovCisjZGVmaW5lIFNUSVJfTUVUQVBBR0VfQkxLTk8JKDApCisjZGVmaW5l IFNUSVJfSEVBRF9CTEtOTwkJKDEpIC8qIGZpcnN0IGRhdGEgcGFnZSAqLworCisKKy8qIE9wYXF1 ZSBmb3Igc3RpciBwYWdlcyAqLwordHlwZWRlZiBzdHJ1Y3QgU3RpclBhZ2VPcGFxdWVEYXRhCit7 CisJT2Zmc2V0TnVtYmVyIG1heG9mZjsJCS8qIG51bWJlciBvZiBpbmRleCB0dXBsZXMgb24gcGFn ZSAqLworCXVpbnQxNgkJZmxhZ3M7CQkJLyogc2VlIGJpdCBkZWZpbml0aW9ucyBiZWxvdyAqLwor CXVpbnQxNgkJdW51c2VkOwkJCS8qIHBsYWNlaG9sZGVyIHRvIGZvcmNlIG1heGFsaWduaW5nIG9m IHNpemUgb2YKKwkJCQkJCQkJICogU3RpclBhZ2VPcGFxdWVEYXRhIGFuZCB0byBwbGFjZQorCQkJ CQkJCQkgKiBzdGlyX3BhZ2VfaWQgZXhhY3RseSBhdCB0aGUgZW5kIG9mIHBhZ2UgKi8KKwl1aW50 MTYJCXN0aXJfcGFnZV9pZDsJLyogZm9yIGlkZW50aWZpY2F0aW9uIG9mIFNUSVIgaW5kZXhlcyAq LworfSBTdGlyUGFnZU9wYXF1ZURhdGE7CisKKy8qIFN0aXIgcGFnZSBmbGFncyAqLworI2RlZmlu ZSBTVElSX01FVEEJCSgxPDwwKQorCit0eXBlZGVmIFN0aXJQYWdlT3BhcXVlRGF0YSAqU3RpclBh Z2VPcGFxdWU7CisKKyNkZWZpbmUgU1RJUl9QQUdFX0lECQkweEZGODQKKworLyogTWV0YWRhdGEg b2Ygc3RpciBpbmRleCAqLwordHlwZWRlZiBzdHJ1Y3QgU3Rpck1ldGFQYWdlRGF0YQoreworCXVp bnQzMgkJbWFnaWNrTnVtYmVyOworCXVpbnQxNgkJbGFzdEJsa05vOworCWJvb2wJCXNraXBJbnNl cnRzOwkvKiBzaG91bGQgd2UganVzdCBleGl0IHdpdGhvdXQgYW55IGluc2VydHMgKi8KK30gU3Rp ck1ldGFQYWdlRGF0YTsKKworLyogTWFnaWMgbnVtYmVyIHRvIGRpc3Rpbmd1aXNoIHN0aXIgcGFn ZXMgZnJvbSBvdGhlcnMgKi8KKyNkZWZpbmUgU1RJUl9NQUdJQ0tfTlVNQkVSICgweERCQUMwREVG KQorCisjZGVmaW5lIFN0aXJQYWdlR2V0TWV0YShwYWdlKQkoKFN0aXJNZXRhUGFnZURhdGEgKikg UGFnZUdldENvbnRlbnRzKHBhZ2UpKQorCit0eXBlZGVmIHN0cnVjdCBTdGlyVHVwbGUKK3sKKwlJ dGVtUG9pbnRlckRhdGEgaGVhcFB0cjsKK30gU3RpclR1cGxlOworCisjZGVmaW5lIFN0aXJQYWdl R2V0RnJlZVNwYWNlKHN0YXRlLCBwYWdlKSBcCisJKEJMQ0tTWiAtIE1BWEFMSUdOKFNpemVPZlBh Z2VIZWFkZXJEYXRhKSBcCisJCS0gU3RpclBhZ2VHZXRNYXhPZmZzZXQocGFnZSkgKiAoc2l6ZW9m KFN0aXJUdXBsZSkpIFwKKwkJLSBNQVhBTElHTihzaXplb2YoU3RpclBhZ2VPcGFxdWVEYXRhKSkp CisKK2V4dGVybiB2b2lkIFN0aXJGaWxsTWV0YXBhZ2UoUmVsYXRpb24gaW5kZXgsIFBhZ2UgbWV0 YVBhZ2UsIGJvb2wgc2tpcEluc2VydHMpOworZXh0ZXJuIHZvaWQgU3RpckluaXRNZXRhcGFnZShS ZWxhdGlvbiBpbmRleCwgRm9ya051bWJlciBmb3JrbnVtKTsKK2V4dGVybiB2b2lkIFN0aXJJbml0 UGFnZShQYWdlIHBhZ2UsIHVpbnQxNiBmbGFncyk7CitleHRlcm4gdm9pZCBTdGlyTWFya0FzU2tp cEluc2VydHMoUmVsYXRpb24gaW5kZXgpOworCisvKiBpbmRleCBhY2Nlc3MgbWV0aG9kIGludGVy ZmFjZSBmdW5jdGlvbnMgKi8KK2V4dGVybiBib29sIHN0aXJ2YWxpZGF0ZShPaWQgb3BjbGFzc29p ZCk7CitleHRlcm4gYm9vbCBzdGlyaW5zZXJ0KFJlbGF0aW9uIGluZGV4LCBEYXR1bSAqdmFsdWVz LCBib29sICppc251bGwsCisJCQkJCSBJdGVtUG9pbnRlciBodF9jdGlkLCBSZWxhdGlvbiBoZWFw UmVsLAorCQkJCQkgSW5kZXhVbmlxdWVDaGVjayBjaGVja1VuaXF1ZSwKKwkJCQkJIGJvb2wgaW5k ZXhVbmNoYW5nZWQsCisJCQkJCSBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleEluZm8pOworZXh0ZXJu IEluZGV4U2NhbkRlc2Mgc3RpcmJlZ2luc2NhbihSZWxhdGlvbiByLCBpbnQgbmtleXMsIGludCBu b3JkZXJieXMpOworZXh0ZXJuIHZvaWQgc3RpcnJlc2NhbihJbmRleFNjYW5EZXNjIHNjYW4sIFNj YW5LZXkgc2NhbmtleSwgaW50IG5zY2Fua2V5cywKKwkJCQkJIFNjYW5LZXkgb3JkZXJieXMsIGlu dCBub3JkZXJieXMpOworZXh0ZXJuIHZvaWQgc3RpcmVuZHNjYW4oSW5kZXhTY2FuRGVzYyBzY2Fu KTsKK2V4dGVybiBJbmRleEJ1aWxkUmVzdWx0ICpzdGlyYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCisJCQkJCQkJCSBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleEluZm8pOworZXh0 ZXJuIHZvaWQgc3RpcmJ1aWxkZW1wdHkoUmVsYXRpb24gaW5kZXgpOworZXh0ZXJuIEluZGV4QnVs a0RlbGV0ZVJlc3VsdCAqc3RpcmJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLAorCQkJ CQkJCQkJCSAgIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMsIEluZGV4QnVsa0RlbGV0ZUNh bGxiYWNrIGNhbGxiYWNrLAorCQkJCQkJCQkJCSAgIHZvaWQgKmNhbGxiYWNrX3N0YXRlKTsKK2V4 dGVybiBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0aXJ2YWN1dW1jbGVhbnVwKEluZGV4VmFjdXVt SW5mbyAqaW5mbywKKwkJCQkJCQkJCQkJICBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKTsK K2V4dGVybiBieXRlYSAqc3Rpcm9wdGlvbnMoRGF0dW0gcmVsb3B0aW9ucywgYm9vbCB2YWxpZGF0 ZSk7CisKKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfYW0uZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5k YXQKaW5kZXggMjZkMTU5MjhhMTUuLmE1ZWNmOTIwOGFkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX2FtLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdApA QCAtMzMsNSArMzMsOCBAQAogeyBvaWQgPT4gJzM1ODAnLCBvaWRfc3ltYm9sID0+ICdCUklOX0FN X09JRCcsCiAgIGRlc2NyID0+ICdibG9jayByYW5nZSBpbmRleCAoQlJJTikgYWNjZXNzIG1ldGhv ZCcsCiAgIGFtbmFtZSA9PiAnYnJpbicsIGFtaGFuZGxlciA9PiAnYnJpbmhhbmRsZXInLCBhbXR5 cGUgPT4gJ2knIH0sCit7IG9pZCA9PiAnNTU1NScsIG9pZF9zeW1ib2wgPT4gJ1NUSVJfQU1fT0lE JywKKyAgZGVzY3IgPT4gJ3Nob3J0IHRlcm0gaW5kZXggcmVwbGFjZW1lbnQgYWNjZXNzIG1ldGhv ZCcsCisgIGFtbmFtZSA9PiAnc3RpcicsIGFtaGFuZGxlciA9PiAnc3RpcmhhbmRsZXInLCBhbXR5 cGUgPT4gJ2knIH0sCiAKIF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3Bj bGFzcy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0CmluZGV4IDRhOTYy NDgwMmFhLi42MjI3YzU2NThmYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19v cGNsYXNzLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0CkBAIC00 ODgsNCArNDg4LDggQEAKIAogIyBubyBicmluIG9wY2xhc3MgZm9yIHRoZSBnZW9tZXRyaWMgdHlw ZXMgZXhjZXB0IGJveAogCisjIGFsbG93IGFueSB0eXBlcyBmb3IgU1RJUgoreyBvcGNtZXRob2Qg PT4gJ3N0aXInLCBvaWRfc3ltYm9sID0+ICdBTllfU1RJUl9PUFNfT0lEJywgb3BjbmFtZSA9PiAn c3Rpcl9vcHMnLAorICBvcGNmYW1pbHkgPT4gJ3N0aXIvYW55X29wcycsIG9wY2ludHlwZSA9PiAn YW55J30sCisKIF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1pbHku ZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQKaW5kZXggZjdkY2I5NmI0 M2MuLjgzOGFkMzJjOTMyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFt aWx5LmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFtaWx5LmRhdApAQCAtMzA0 LDUgKzMwNCw3IEBACiAgIG9wZm1ldGhvZCA9PiAnaGFzaCcsIG9wZm5hbWUgPT4gJ211bHRpcmFu Z2Vfb3BzJyB9LAogeyBvaWQgPT4gJzYxNTgnLAogICBvcGZtZXRob2QgPT4gJ2dpc3QnLCBvcGZu YW1lID0+ICdtdWx0aXJhbmdlX29wcycgfSwKK3sgb2lkID0+ICc1NTU4JywKKyAgb3BmbWV0aG9k ID0+ICdzdGlyJywgb3BmbmFtZSA9PiAnYW55X29wcycgfSwKIAogXQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKaW5kZXggMDFlYmEzYjVhMTkuLjBkMjkxMTVmMjAwIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKQEAgLTkzNSw2ICs5MzUsMTAgQEAKICAgcHJvbmFtZSA9PiAnYnJpbmhhbmRsZXInLCBw cm92b2xhdGlsZSA9PiAndicsCiAgIHByb3JldHR5cGUgPT4gJ2luZGV4X2FtX2hhbmRsZXInLCBw cm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLAogICBwcm9zcmMgPT4gJ2JyaW5oYW5kbGVyJyB9LAor eyBvaWQgPT4gJzU1NTYnLCBkZXNjciA9PiAnc2hvcnQgdGVybSBpbmRleCByZXBsYWNlbWVudCBh Y2Nlc3MgbWV0aG9kIGhhbmRsZXInLAorICBwcm9uYW1lID0+ICdzdGlyaGFuZGxlcicsIHByb3Zv bGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAnaW5kZXhfYW1faGFuZGxlcicsIHByb2Fy Z3R5cGVzID0+ICdpbnRlcm5hbCcsCisgIHByb3NyYyA9PiAnc3RpcmhhbmRsZXInIH0sCiB7IG9p ZCA9PiAnMzk1MicsIGRlc2NyID0+ICdicmluOiBzdGFuZGFsb25lIHNjYW4gbmV3IHRhYmxlIHBh Z2VzJywKICAgcHJvbmFtZSA9PiAnYnJpbl9zdW1tYXJpemVfbmV3X3ZhbHVlcycsIHByb3ZvbGF0 aWxlID0+ICd2JywKICAgcHJvcGFyYWxsZWwgPT4gJ3UnLCBwcm9yZXR0eXBlID0+ICdpbnQ0Jywg cHJvYXJndHlwZXMgPT4gJ3JlZ2NsYXNzJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggYTM2NjUz YzM3ZjkuLjFjZDAzNmEwNTk0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTU1LDggKzE1NSw4 IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogICoJCWVudHJpZXMgZm9yIGEgcGFydGljdWxh ciBpbmRleC4gIFVzZWQgZm9yIGJvdGggaW5kZXhfYnVpbGQgYW5kCiAgKgkJcmV0YWlsIGNyZWF0 aW9uIG9mIGluZGV4IGVudHJpZXMuCiAgKgotICogaWlfQ29uY3VycmVudCwgaWlfQnJva2VuSG90 Q2hhaW4sIGFuZCBpaV9QYXJhbGxlbFdvcmtlcnMgYXJlIHVzZWQgb25seQotICogZHVyaW5nIGlu ZGV4IGJ1aWxkOyB0aGV5J3JlIGNvbnZlbnRpb25hbGx5IHplcm9lZCBvdGhlcndpc2UuCisgKiBp aV9Db25jdXJyZW50LCBpaV9Ccm9rZW5Ib3RDaGFpbiwgaWlfQXV4aWxpYXJ5IGFuZCBpaV9QYXJh bGxlbFdvcmtlcnMKKyAqIGFyZSB1c2VkIG9ubHkgZHVyaW5nIGluZGV4IGJ1aWxkOyB0aGV5J3Jl IGNvbnZlbnRpb25hbGx5IHplcm9lZCBvdGhlcndpc2UuCiAgKiAtLS0tLS0tLS0tLS0tLS0tCiAg Ki8KIHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbwpAQCAtMjE2LDcgKzIxNiw4IEBAIHR5cGVkZWYg c3RydWN0IEluZGV4SW5mbwogCWJvb2wJCWlpX1dpdGhvdXRPdmVybGFwczsKIAkvKiAjIG9mIHdv cmtlcnMgcmVxdWVzdGVkIChleGNsdWRlcyBsZWFkZXIpICovCiAJaW50CQkJaWlfUGFyYWxsZWxX b3JrZXJzOwotCisJLyogaXMgYXV4aWxpYXJ5IGZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxkPyAq LworCWJvb2wJCWlpX0F1eGlsaWFyeTsKIAkvKiBPaWQgb2YgaW5kZXggQU0gKi8KIAlPaWQJCQlp aV9BbTsKIAkvKiBwcml2YXRlIGNhY2hlIGFyZWEgZm9yIGluZGV4IEFNICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy9pbmRleF9zZWxmdW5jcy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMv aW5kZXhfc2VsZnVuY3MuaAppbmRleCA2YzY0ZGI2ZDQ1Ni4uZTBkOTM5ZDY4NTcgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3V0aWxzL2luZGV4X3NlbGZ1bmNzLmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvaW5kZXhfc2VsZnVuY3MuaApAQCAtNjIsNiArNjIsMTQgQEAgZXh0ZXJuIHZvaWQgc3Bn Y29zdGVzdGltYXRlKHN0cnVjdCBQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQlTZWxlY3Rpdml0 eSAqaW5kZXhTZWxlY3Rpdml0eSwKIAkJCQkJCQlkb3VibGUgKmluZGV4Q29ycmVsYXRpb24sCiAJ CQkJCQkJZG91YmxlICppbmRleFBhZ2VzKTsKK2V4dGVybiB2b2lkIHN0aXJjb3N0ZXN0aW1hdGUo c3RydWN0IFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCXN0cnVjdCBJbmRleFBhdGggKnBhdGgs CisJCQkJCQkJZG91YmxlIGxvb3BfY291bnQsCisJCQkJCQkJQ29zdCAqaW5kZXhTdGFydHVwQ29z dCwKKwkJCQkJCQlDb3N0ICppbmRleFRvdGFsQ29zdCwKKwkJCQkJCQlTZWxlY3Rpdml0eSAqaW5k ZXhTZWxlY3Rpdml0eSwKKwkJCQkJCQlkb3VibGUgKmluZGV4Q29ycmVsYXRpb24sCisJCQkJCQkJ ZG91YmxlICppbmRleFBhZ2VzKTsKIGV4dGVybiB2b2lkIGdpbmNvc3Rlc3RpbWF0ZShzdHJ1Y3Qg UGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJc3RydWN0IEluZGV4UGF0aCAqcGF0aCwKIAkJCQkJ CQlkb3VibGUgbG9vcF9jb3VudCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvYW11dGlscy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRpbHMub3V0Cmlu ZGV4IDdhYjYxMTNjNjE5Li45MmMwMzNhMjAxMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9hbXV0aWxzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Ft dXRpbHMub3V0CkBAIC0xNzMsNyArMTczLDEzIEBAIHNlbGVjdCBhbW5hbWUsIHByb3AsIHBnX2lu ZGV4YW1faGFzX3Byb3BlcnR5KGEub2lkLCBwcm9wKSBhcyBwCiAgc3BnaXN0IHwgY2FuX2V4Y2x1 ZGUgICB8IHQKICBzcGdpc3QgfCBjYW5faW5jbHVkZSAgIHwgdAogIHNwZ2lzdCB8IGJvZ3VzICAg ICAgICAgfCAKLSgzNiByb3dzKQorIHN0aXIgICB8IGNhbl9vcmRlciAgICAgfCBmCisgc3RpciAg IHwgY2FuX3VuaXF1ZSAgICB8IGYKKyBzdGlyICAgfCBjYW5fbXVsdGlfY29sIHwgdAorIHN0aXIg ICB8IGNhbl9leGNsdWRlICAgfCBmCisgc3RpciAgIHwgY2FuX2luY2x1ZGUgICB8IHQKKyBzdGly ICAgfCBib2d1cyAgICAgICAgIHwgCisoNDIgcm93cykKIAogLS0KIC0tIGFkZGl0aW9uYWwgY2hl Y2tzIGZvciBwZ19pbmRleF9jb2x1bW5faGFzX3Byb3BlcnR5CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9vcHJfc2FuaXR5Lm91dAppbmRleCAyMGJmOWVhOWNkZi4uZmMxMTZiODRhMjggMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dApAQCAtMjEyMiw5ICsyMTIyLDEw IEBAIEZST00gcGdfb3BjbGFzcyBBUyBjMQogV0hFUkUgTk9UIEVYSVNUUyhTRUxFQ1QgMSBGUk9N IHBnX2Ftb3AgQVMgYTEKICAgICAgICAgICAgICAgICAgV0hFUkUgYTEuYW1vcGZhbWlseSA9IGMx Lm9wY2ZhbWlseQogICAgICAgICAgICAgICAgICAgIEFORCBiaW5hcnlfY29lcmNpYmxlKGMxLm9w Y2ludHlwZSwgYTEuYW1vcGxlZnR0eXBlKSk7Ci0gb3BjbmFtZSB8IG9wY2ZhbWlseSAKLS0tLS0t LS0tLSstLS0tLS0tLS0tLQotKDAgcm93cykKKyBvcGNuYW1lICB8IG9wY2ZhbWlseSAKKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBzdGlyX29wcyB8ICAgICAgNTU1OAorKDEgcm93KQogCiAtLSBD aGVjayB0aGF0IGVhY2ggb3BlcmF0b3IgbGlzdGVkIGluIHBnX2Ftb3AgaGFzIGFuIGFzc29jaWF0 ZWQgb3BjbGFzcywKIC0tIHRoYXQgaXMgb25lIHdob3NlIG9wY2ludHlwZSBtYXRjaGVzIG9wcmxl ZnQgKHBvc3NpYmx5IGJ5IGNvZXJjaW9uKS4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHNxbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0Cmlu ZGV4IGE3OTMyNWU4YTJmLi44ZTdjOWRlMTJiYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wc3FsLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwu b3V0CkBAIC01MTM5LDcgKzUxMzksOCBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVhcCAg IHwgVGFibGUKICBoZWFwMiAgfCBUYWJsZQogIHNwZ2lzdCB8IEluZGV4Ci0oOCByb3dzKQorIHN0 aXIgICB8IEluZGV4CisoOSByb3dzKQogCiBcZEEgKgogTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwpA QCAtNTE1Myw3ICs1MTU0LDggQEAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogIGhlYXAgICB8IFRh YmxlCiAgaGVhcDIgIHwgVGFibGUKICBzcGdpc3QgfCBJbmRleAotKDggcm93cykKKyBzdGlyICAg fCBJbmRleAorKDkgcm93cykKIAogXGRBIGgqCiBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCkBAIC01 MTc4LDkgKzUxODAsOSBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAKIFxkQTogZXh0cmEgYXJn dW1lbnQgImJhciIgaWdub3JlZAogXGRBKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIGFjY2VzcyBtZXRob2RzCi0gIE5hbWUgIHwgVHlwZSAgfCAgICAgICBIYW5kbGVyICAg ICAgICB8ICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgIAotLS0tLS0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFj Y2VzcyBtZXRob2RzCisgIE5hbWUgIHwgVHlwZSAgfCAgICAgICBIYW5kbGVyICAgICAgICB8ICAg ICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogIGJyaW4gICB8IEluZGV4IHwgYnJpbmhhbmRsZXIgICAgICAgICAgfCBi bG9jayByYW5nZSBpbmRleCAoQlJJTikgYWNjZXNzIG1ldGhvZAogIGJ0cmVlICB8IEluZGV4IHwg YnRoYW5kbGVyICAgICAgICAgICAgfCBiLXRyZWUgaW5kZXggYWNjZXNzIG1ldGhvZAogIGdpbiAg ICB8IEluZGV4IHwgZ2luaGFuZGxlciAgICAgICAgICAgfCBHSU4gaW5kZXggYWNjZXNzIG1ldGhv ZApAQCAtNTE4OSwxMiArNTE5MSwxMyBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVhcCAg IHwgVGFibGUgfCBoZWFwX3RhYmxlYW1faGFuZGxlciB8IGhlYXAgdGFibGUgYWNjZXNzIG1ldGhv ZAogIGhlYXAyICB8IFRhYmxlIHwgaGVhcF90YWJsZWFtX2hhbmRsZXIgfCAKICBzcGdpc3QgfCBJ bmRleCB8IHNwZ2hhbmRsZXIgICAgICAgICAgIHwgU1AtR2lTVCBpbmRleCBhY2Nlc3MgbWV0aG9k Ci0oOCByb3dzKQorIHN0aXIgICB8IEluZGV4IHwgc3RpcmhhbmRsZXIgICAgICAgICAgfCBzaG9y dCB0ZXJtIGluZGV4IHJlcGxhY2VtZW50IGFjY2VzcyBtZXRob2QKKyg5IHJvd3MpCiAKIFxkQSsg KgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCi0g IE5hbWUgIHwgVHlwZSAgfCAgICAgICBIYW5kbGVyICAgICAgICB8ICAgICAgICAgICAgICBEZXNj cmlwdGlvbiAgICAgICAgICAgICAgIAotLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCisgIE5hbWUgIHwg VHlwZSAgfCAgICAgICBIYW5kbGVyICAgICAgICB8ICAgICAgICAgICAgICAgIERlc2NyaXB0aW9u ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGJyaW4gICB8 IEluZGV4IHwgYnJpbmhhbmRsZXIgICAgICAgICAgfCBibG9jayByYW5nZSBpbmRleCAoQlJJTikg YWNjZXNzIG1ldGhvZAogIGJ0cmVlICB8IEluZGV4IHwgYnRoYW5kbGVyICAgICAgICAgICAgfCBi LXRyZWUgaW5kZXggYWNjZXNzIG1ldGhvZAogIGdpbiAgICB8IEluZGV4IHwgZ2luaGFuZGxlciAg ICAgICAgICAgfCBHSU4gaW5kZXggYWNjZXNzIG1ldGhvZApAQCAtNTIwMyw3ICs1MjA2LDggQEAg TGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogIGhlYXAgICB8IFRhYmxlIHwgaGVhcF90YWJsZWFtX2hh bmRsZXIgfCBoZWFwIHRhYmxlIGFjY2VzcyBtZXRob2QKICBoZWFwMiAgfCBUYWJsZSB8IGhlYXBf dGFibGVhbV9oYW5kbGVyIHwgCiAgc3BnaXN0IHwgSW5kZXggfCBzcGdoYW5kbGVyICAgICAgICAg ICB8IFNQLUdpU1QgaW5kZXggYWNjZXNzIG1ldGhvZAotKDggcm93cykKKyBzdGlyICAgfCBJbmRl eCB8IHN0aXJoYW5kbGVyICAgICAgICAgIHwgc2hvcnQgdGVybSBpbmRleCByZXBsYWNlbWVudCBh Y2Nlc3MgbWV0aG9kCisoOSByb3dzKQogCiBcZEErIGgqCiAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIGFjY2VzcyBtZXRob2RzCi0tIAoyLjQzLjAKCg== --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="v24-0007-Add-Datum-storage-support-to-tuplestore.patch" Content-Disposition: attachment; filename="v24-0007-Add-Datum-storage-support-to-tuplestore.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm0z12 RnJvbSBjMmNlNWU3N2JkNjUwZDU1NTIyOWYwYTk4ZGNlN2RmYmU3ZDhiODQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAyNSBKYW4gMjAyNSAxMzozMzoyMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI0IDA3LzEyXSBBZGQgRGF0dW0gc3RvcmFnZSBzdXBwb3J0IHRvIHR1cGxlc3RvcmUK CiBFeHRlbmQgdHVwbGVzdG9yZSB0byBzdG9yZSBpbmRpdmlkdWFsIERhdHVtIHZhbHVlczoKLSBm aXhlZC1sZW5ndGggZGF0YXR5cGVzOiBzdG9yZSByYXcgYnl0ZXMgd2l0aG91dCBhIGxlbmd0aCBo ZWFkZXIKLSB2YXJpYWJsZS1sZW5ndGggZGF0YXR5cGVzOiBpbmNsdWRlIGEgbGVuZ3RoIGhlYWRl ciBhbmQgcGFkZGluZwotIGJ5LXZhbHVlIHR5cGVzOiBzdG9yZSBpbmxpbmUKClRoaXMgc3VwcG9y dCBlbmFibGVzIHVzYWdlcyB0dXBsZXN0b3JlIGZvciBub24tdHVwbGUgZGF0YSAoVElEcykgaW4g dGhlIG5leHQgY29tbWl0LgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzdG9yZS5j IHwgMzAyICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIHNyYy9pbmNsdWRlL3V0aWxzL3R1 cGxlc3RvcmUuaCAgICAgIHwgIDMzICstLQogMiBmaWxlcyBjaGFuZ2VkLCAyNjMgaW5zZXJ0aW9u cygrKSwgNzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvc29y dC90dXBsZXN0b3JlLmMgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc3RvcmUuYwppbmRl eCBjOWFlY2FiOGQ2Ni4uMzgwNzZmMzQ1OGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L3NvcnQvdHVwbGVzdG9yZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzdG9y ZS5jCkBAIC0xLDE2ICsxLDE5IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiB0dXBsZXN0 b3JlLmMKLSAqCSAgR2VuZXJhbGl6ZWQgcm91dGluZXMgZm9yIHRlbXBvcmFyeSB0dXBsZSBzdG9y YWdlLgorICoJICBHZW5lcmFsaXplZCByb3V0aW5lcyBmb3IgdGVtcG9yYXJ5IHN0b3JhZ2Ugb2Yg dHVwbGVzIGFuZCBEYXR1bXMuCisgKgorICogVGhpcyBtb2R1bGUgaGFuZGxlcyB0ZW1wb3Jhcnkg c3RvcmFnZSBvZiBlaXRoZXIgdHVwbGVzIG9yIHNpbmdsZQorICogRGF0dW0gdmFsdWVzIGZvciBw dXJwb3NlcyBzdWNoIGFzIE1hdGVyaWFsaXplIG5vZGVzLCBoYXNoam9pbiBiYXRjaAorICogZmls ZXMsIGV0Yy4gSXQgaXMgZXNzZW50aWFsbHkgYSBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1cGxl c29ydC5jOworICogaXQgZG9lcyBubyBzb3J0aW5nIG9mIHR1cGxlcyBidXQgY2FuIG9ubHkgc3Rv cmUgYW5kIHJlZ3VyZ2l0YXRlIGEgc2VxdWVuY2UKKyAqIG9mIHR1cGxlcy4gIEhvd2V2ZXIsIGJl Y2F1c2Ugbm8gc29ydCBpcyByZXF1aXJlZCwgaXQgaXMgYWxsb3dlZCB0byBzdGFydAorICogcmVh ZGluZyB0aGUgc2VxdWVuY2UgYmVmb3JlIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuLgorICoKKyAq IFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgY3Vyc29ycywgYmVjYXVzZSBpdCBhbGxv d3MgcmFuZG9tIGFjY2VzcworICogd2l0aGluIHRoZSBhbHJlYWR5LXNjYW5uZWQgcG9ydGlvbiBv ZiBhIHF1ZXJ5IHdpdGhvdXQgaGF2aW5nIHRvIHByb2Nlc3MKKyAqIHRoZSB1bmRlcmx5aW5nIHNj YW4gdG8gY29tcGxldGlvbi4KICAqCi0gKiBUaGlzIG1vZHVsZSBoYW5kbGVzIHRlbXBvcmFyeSBz dG9yYWdlIG9mIHR1cGxlcyBmb3IgcHVycG9zZXMgc3VjaAotICogYXMgTWF0ZXJpYWxpemUgbm9k ZXMsIGhhc2hqb2luIGJhdGNoIGZpbGVzLCBldGMuICBJdCBpcyBlc3NlbnRpYWxseQotICogYSBk dW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1cGxlc29ydC5jOyBpdCBkb2VzIG5vIHNvcnRpbmcgb2Yg dHVwbGVzCi0gKiBidXQgY2FuIG9ubHkgc3RvcmUgYW5kIHJlZ3VyZ2l0YXRlIGEgc2VxdWVuY2Ug b2YgdHVwbGVzLiAgSG93ZXZlciwKLSAqIGJlY2F1c2Ugbm8gc29ydCBpcyByZXF1aXJlZCwgaXQg aXMgYWxsb3dlZCB0byBzdGFydCByZWFkaW5nIHRoZSBzZXF1ZW5jZQotICogYmVmb3JlIGl0IGhh cyBhbGwgYmVlbiB3cml0dGVuLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBjdXJz b3JzLAotICogYmVjYXVzZSBpdCBhbGxvd3MgcmFuZG9tIGFjY2VzcyB3aXRoaW4gdGhlIGFscmVh ZHktc2Nhbm5lZCBwb3J0aW9uIG9mCi0gKiBhIHF1ZXJ5IHdpdGhvdXQgaGF2aW5nIHRvIHByb2Nl c3MgdGhlIHVuZGVybHlpbmcgc2NhbiB0byBjb21wbGV0aW9uLgogICogQWxzbywgaXQgaXMgcG9z c2libGUgdG8gc3VwcG9ydCBtdWx0aXBsZSBpbmRlcGVuZGVudCByZWFkIHBvaW50ZXJzLgogICoK ICAqIEEgdGVtcG9yYXJ5IGZpbGUgaXMgdXNlZCB0byBoYW5kbGUgdGhlIGRhdGEgaWYgaXQgZXhj ZWVkcyB0aGUKQEAgLTYxLDYgKzY0LDggQEAKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5o IgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmZmlsZS5oIgor I2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAj aW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgog CkBAIC0xMTUsMTYgKzEyMCwxNSBAQCBzdHJ1Y3QgVHVwbGVzdG9yZXN0YXRlCiAJQnVmRmlsZSAg ICAqbXlmaWxlOwkJCS8qIHVuZGVybHlpbmcgZmlsZSwgb3IgTlVMTCBpZiBub25lICovCiAJTWVt b3J5Q29udGV4dCBjb250ZXh0OwkJLyogbWVtb3J5IGNvbnRleHQgZm9yIGhvbGRpbmcgdHVwbGVz ICovCiAJUmVzb3VyY2VPd25lciByZXNvd25lcjsJCS8qIHJlc293bmVyIGZvciBob2xkaW5nIHRl bXAgZmlsZXMgKi8KKwlPaWQJCQlkYXR1bVR5cGU7CQkvKiBJbnZhbGlkT2lkIG9yIG9pZCBvZiBE YXR1bSdzIHRvIGJlIHN0b3JlZCAqLworCWludDE2CQlkYXR1bVR5cGVMZW47CS8qIHR5cGVsZW4g b2YgdGhhdCBEYXR1bSAqLworCWJvb2wJCWRhdHVtVHlwZUJ5VmFsOyAvKiBieS12YWx1ZSBvZiB0 aGF0IGF0dW0gKi8KIAogCS8qCiAJICogVGhlc2UgZnVuY3Rpb24gcG9pbnRlcnMgZGVjb3VwbGUg dGhlIHJvdXRpbmVzIHRoYXQgbXVzdCBrbm93IHdoYXQga2luZAogCSAqIG9mIHR1cGxlIHdlIGFy ZSBoYW5kbGluZyBmcm9tIHRoZSByb3V0aW5lcyB0aGF0IGRvbid0IG5lZWQgdG8ga25vdyBpdC4K IAkgKiBUaGV5IGFyZSBzZXQgdXAgYnkgdGhlIHR1cGxlc3RvcmVfYmVnaW5feHh4IHJvdXRpbmVz LgogCSAqCi0JICogKEFsdGhvdWdoIHR1cGxlc3RvcmUuYyBjdXJyZW50bHkgb25seSBzdXBwb3J0 cyBoZWFwIHR1cGxlcywgSSd2ZSBjb3BpZWQKLQkgKiB0aGlzIHBhcnQgb2YgdHVwbGVzb3J0LmMg c28gdGhhdCBleHRlbnNpb24gdG8gb3RoZXIga2luZHMgb2Ygb2JqZWN0cwotCSAqIHdpbGwgYmUg ZWFzeSBpZiBpdCdzIGV2ZXIgbmVlZGVkLikKLQkgKgogCSAqIEZ1bmN0aW9uIHRvIGNvcHkgYSBz dXBwbGllZCBpbnB1dCB0dXBsZSBpbnRvIHBhbGxvYydkIHNwYWNlLiAoTkI6IHdlCiAJICogYXNz dW1lIHRoYXQgYSBzaW5nbGUgcGZyZWUoKSBpcyBlbm91Z2ggdG8gcmVsZWFzZSB0aGUgdHVwbGUg bGF0ZXIsIHNvCiAJICogdGhlIHJlcHJlc2VudGF0aW9uIG11c3QgYmUgImZsYXQiIGluIG9uZSBw YWxsb2MgY2h1bmsuKSBzdGF0ZS0+YXZhaWxNZW0KQEAgLTE0MywxMiArMTQ3LDE4IEBAIHN0cnVj dCBUdXBsZXN0b3Jlc3RhdGUKIAogCS8qCiAJICogRnVuY3Rpb24gdG8gcmVhZCBhIHN0b3JlZCB0 dXBsZSBmcm9tIHRhcGUgYmFjayBpbnRvIG1lbW9yeS4gJ2xlbicgaXMKLQkgKiB0aGUgYWxyZWFk eS1yZWFkIGxlbmd0aCBvZiB0aGUgc3RvcmVkIHR1cGxlLiAgQ3JlYXRlIGFuZCByZXR1cm4gYQot CSAqIHBhbGxvYydkIGNvcHksIGFuZCBkZWNyZWFzZSBzdGF0ZS0+YXZhaWxNZW0gYnkgdGhlIGFt b3VudCBvZiBtZW1vcnkKLQkgKiBzcGFjZSBjb25zdW1lZC4KKwkgKiB0aGUgYWxyZWFkeS1rbm93 biAocmVhZCBvZiBjb25zdGFudCkgbGVuZ3RoIG9mIHRoZSBzdG9yZWQgdHVwbGUuCisJICogQ3Jl YXRlIGFuZCByZXR1cm4gYSBwYWxsb2MnZCBjb3B5LCBhbmQgZGVjcmVhc2Ugc3RhdGUtPmF2YWls TWVtIGJ5IHRoZQorCSAqIGFtb3VudCBvZiBtZW1vcnkgc3BhY2UgY29uc3VtZWQuCiAJICovCiAJ dm9pZAkgICAqKCpyZWFkdHVwKSAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdW5zaWduZWQgaW50 IGxlbik7CiAKKwkvKgorCSAqIEZ1bmN0aW9uIHRvIGdldCBsZW5naCBvZiB0dXBsZSBmcm9tIHRh cGUuIFVzZWQgdG8gcHJvdmlkZSAnbGVuJyBhcmd1bWVudAorCSAqIGZvciByZWFkdHVwIChzZWUg YWJvdmUpLgorCSAqLworCXVuc2lnbmVkIGludCgqbGVudHVwKShUdXBsZXN0b3Jlc3RhdGUgKnN0 YXRlLCBib29sIGVvZk9LKTsKKwogCS8qCiAJICogVGhpcyBhcnJheSBob2xkcyBwb2ludGVycyB0 byB0dXBsZXMgaW4gbWVtb3J5IGlmIHdlIGFyZSBpbiBzdGF0ZSBJTk1FTS4KIAkgKiBJbiBzdGF0 ZXMgV1JJVEVGSUxFIGFuZCBSRUFERklMRSBpdCdzIG5vdCB1c2VkLgpAQCAtMTg1LDYgKzE5NSw3 IEBAIHN0cnVjdCBUdXBsZXN0b3Jlc3RhdGUKICNkZWZpbmUgQ09QWVRVUChzdGF0ZSx0dXApCSgo KihzdGF0ZSktPmNvcHl0dXApIChzdGF0ZSwgdHVwKSkKICNkZWZpbmUgV1JJVEVUVVAoc3RhdGUs dHVwKSAoKCooc3RhdGUpLT53cml0ZXR1cCkgKHN0YXRlLCB0dXApKQogI2RlZmluZSBSRUFEVFVQ KHN0YXRlLGxlbikJKCgqKHN0YXRlKS0+cmVhZHR1cCkgKHN0YXRlLCBsZW4pKQorI2RlZmluZSBM RU5UVVAoc3RhdGUsZW9mT0spCSgoKihzdGF0ZSktPmxlbnR1cCkgKHN0YXRlLCBlb2ZPSykpCiAj ZGVmaW5lIExBQ0tNRU0oc3RhdGUpCQkoKHN0YXRlKS0+YXZhaWxNZW0gPCAwKQogI2RlZmluZSBV U0VNRU0oc3RhdGUsYW10KQkoKHN0YXRlKS0+YXZhaWxNZW0gLT0gKGFtdCkpCiAjZGVmaW5lIEZS RUVNRU0oc3RhdGUsYW10KQkoKHN0YXRlKS0+YXZhaWxNZW0gKz0gKGFtdCkpCkBAIC0xOTMsOSAr MjA0LDkgQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQogICoKICAqIE5PVEVTIGFib3V0IG9uLXRh cGUgcmVwcmVzZW50YXRpb24gb2YgdHVwbGVzOgogICoKLSAqIFdlIHJlcXVpcmUgdGhlIGZpcnN0 ICJ1bnNpZ25lZCBpbnQiIG9mIGEgc3RvcmVkIHR1cGxlIHRvIGJlIHRoZSB0b3RhbCBzaXplCi0g KiBvbi10YXBlIG9mIHRoZSB0dXBsZSwgaW5jbHVkaW5nIGl0c2VsZiAoc28gaXQgaXMgbmV2ZXIg emVybykuCi0gKiBUaGUgcmVtYWluZGVyIG9mIHRoZSBzdG9yZWQgdHVwbGUKKyAqIEluIGNhc2Ug b2YgdHVwbGVzIHdlIHVzZSBmaXJzdCAidW5zaWduZWQgaW50IiBvZiBhIHN0b3JlZCB0dXBsZQor ICogdG8gYmUgdGhlIHRvdGFsIHNpemUgb24tdGFwZSBvZiB0aGUgdHVwbGUsIGluY2x1ZGluZyBp dHNlbGYKKyAqIChzbyBpdCBpcyBuZXZlciB6ZXJvKS4gVGhlIHJlbWFpbmRlciBvZiB0aGUgc3Rv cmVkIHR1cGxlCiAgKiBtYXkgb3IgbWF5IG5vdCBtYXRjaCB0aGUgaW4tbWVtb3J5IHJlcHJlc2Vu dGF0aW9uIG9mIHRoZSB0dXBsZSAtLS0KICAqIGFueSBjb252ZXJzaW9uIG5lZWRlZCBpcyB0aGUg am9iIG9mIHRoZSB3cml0ZXR1cCBhbmQgcmVhZHR1cCByb3V0aW5lcy4KICAqCkBAIC0yMDYsMTAg KzIxNywxMyBAQCBzdHJ1Y3QgVHVwbGVzdG9yZXN0YXRlCiAgKiBzdGF0ZS0+YmFja3dhcmQgaXMg bm90IHNldCwgdGhlIHdyaXRlL3JlYWQgcm91dGluZXMgbWF5IG9taXQgdGhlIGV4dHJhCiAgKiBs ZW5ndGggd29yZC4KICAqCisgKiBJbiBjYXNlIG9mIERhdHVtIHdpdGggY29uc3RhbnQgbGVuZ2h0 IGJvdGggInVuc2lnbmVkIGludCIgYXJlIG9tbWl0dGVkLgorICoKICAqIHdyaXRldHVwIGlzIGV4 cGVjdGVkIHRvIHdyaXRlIGJvdGggbGVuZ3RoIHdvcmRzIGFzIHdlbGwgYXMgdGhlIHR1cGxlCiAg KiBkYXRhLiAgV2hlbiByZWFkdHVwIGlzIGNhbGxlZCwgdGhlIHRhcGUgaXMgcG9zaXRpb25lZCBq dXN0IGFmdGVyIHRoZQotICogZnJvbnQgbGVuZ3RoIHdvcmQ7IHJlYWR0dXAgbXVzdCByZWFkIHRo ZSB0dXBsZSBkYXRhIGFuZCBhZHZhbmNlIHBhc3QKLSAqIHRoZSBiYWNrIGxlbmd0aCB3b3JkIChp ZiBwcmVzZW50KS4KKyAqIGZyb250IGxlbmd0aCB3b3JkIChpZiBpdCBub3Qgb21taXR0ZWQgbGlr ZSBpbiBjYXNlIG9mIGNvbnRhbnQtc2l6ZSBEYXR1bSk7CisgKiByZWFkdHVwIG11c3QgcmVhZCB0 aGUgdHVwbGUgZGF0YSBhbmQgYWR2YW5jZSBwYXN0IHRoZSBiYWNrIGxlbmd0aCB3b3JkCisgKiAo aWYgcHJlc2VudCkuCiAgKgogICogVGhlIHdyaXRlL3JlYWQgcm91dGluZXMgY2FuIG1ha2UgdXNl IG9mIHRoZSB0dXBsZSBkZXNjcmlwdGlvbiBkYXRhCiAgKiBzdG9yZWQgaW4gdGhlIFR1cGxlc3Rv cmVzdGF0ZSByZWNvcmQsIGlmIG5lZWRlZC4gVGhleSBhcmUgYWxzbyBleHBlY3RlZApAQCAtMjQx LDExICsyNTUsMTYgQEAgc3RhdGljIFR1cGxlc3RvcmVzdGF0ZSAqdHVwbGVzdG9yZV9iZWdpbl9j b21tb24oaW50IGVmbGFncywKIHN0YXRpYyB2b2lkIHR1cGxlc3RvcmVfcHV0dHVwbGVfY29tbW9u KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZvaWQgKnR1cGxlKTsKIHN0YXRpYyB2b2lkIGR1bXB0 dXBsZXMoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSk7CiBzdGF0aWMgdm9pZCB0dXBsZXN0b3JlX3Vw ZGF0ZW1heChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlKTsKLXN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0 bGVuKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spOworCitzdGF0aWMgdW5zaWdu ZWQgaW50IGxlbnR1cF9oZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spOwog c3RhdGljIHZvaWQgKmNvcHl0dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkICp0 dXApOwogc3RhdGljIHZvaWQgd3JpdGV0dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2 b2lkICp0dXApOwogc3RhdGljIHZvaWQgKnJlYWR0dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUgKnN0 YXRlLCB1bnNpZ25lZCBpbnQgbGVuKTsKIAorc3RhdGljIHVuc2lnbmVkIGludCBsZW50dXBfZGF0 dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSyk7CitzdGF0aWMgdm9pZCAqY29w eXR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkICpkYXR1bSk7CitzdGF0aWMg dm9pZCB3cml0ZXR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkICpkYXR1bSk7 CitzdGF0aWMgdm9pZCAqcmVhZHR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB1bnNp Z25lZCBpbnQgbGVuKTsKIAogLyoKICAqCQl0dXBsZXN0b3JlX2JlZ2luX3h4eApAQCAtMjY4LDYg KzI4NywxMiBAQCB0dXBsZXN0b3JlX2JlZ2luX2NvbW1vbihpbnQgZWZsYWdzLCBib29sIGludGVy WGFjdCwgaW50IG1heEtCeXRlcykKIAlzdGF0ZS0+YWxsb3dlZE1lbSA9IG1heEtCeXRlcyAqIChp bnQ2NCkgMTAyNDsKIAlzdGF0ZS0+YXZhaWxNZW0gPSBzdGF0ZS0+YWxsb3dlZE1lbTsKIAlzdGF0 ZS0+bXlmaWxlID0gTlVMTDsKKwkvKgorCSAqIFNldCBEYXR1bSByZWxhdGVkIGRhdGEgdG8gaW52 YWxpZCBieSBkZWZhdWx0LgorCSAqLworCXN0YXRlLT5kYXR1bVR5cGUgPSBJbnZhbGlkT2lkOwor CXN0YXRlLT5kYXR1bVR5cGVMZW4gPSAgMDsKKwlzdGF0ZS0+ZGF0dW1UeXBlQnlWYWwgPSBmYWxz ZTsKIAogCS8qCiAJICogVGhlIHBhbGxvYy9wZnJlZSBwYXR0ZXJuIGZvciB0dXBsZSBtZW1vcnkg aXMgaW4gYSBGSUZPIHBhdHRlcm4uICBBCkBAIC0zNDUsNiArMzcwLDM2IEBAIHR1cGxlc3RvcmVf YmVnaW5faGVhcChib29sIHJhbmRvbUFjY2VzcywgYm9vbCBpbnRlclhhY3QsIGludCBtYXhLQnl0 ZXMpCiAJc3RhdGUtPmNvcHl0dXAgPSBjb3B5dHVwX2hlYXA7CiAJc3RhdGUtPndyaXRldHVwID0g d3JpdGV0dXBfaGVhcDsKIAlzdGF0ZS0+cmVhZHR1cCA9IHJlYWR0dXBfaGVhcDsKKwlzdGF0ZS0+ bGVudHVwID0gbGVudHVwX2hlYXA7CisKKwlyZXR1cm4gc3RhdGU7Cit9CisKKy8qCisgKiBUaGUg c2FtZSBhcyB0dXBsZXN0b3JlX2JlZ2luX2hlYXAgYnV0IGNyZWF0ZSBzdG9yZSBmb3IgRGF0dW0g dmFsdWVzLgorICovCitUdXBsZXN0b3Jlc3RhdGUgKgordHVwbGVzdG9yZV9iZWdpbl9kYXR1bShP aWQgZGF0dW1UeXBlLCBib29sIHJhbmRvbUFjY2VzcywgYm9vbCBpbnRlclhhY3QsIGludCBtYXhL Qnl0ZXMpCit7CisJVHVwbGVzdG9yZXN0YXRlICpzdGF0ZTsKKwlpbnQJCQllZmxhZ3M7CisKKwkv KgorCSAqIFRoaXMgaW50ZXJwcmV0YXRpb24gb2YgdGhlIG1lYW5pbmcgb2YgcmFuZG9tQWNjZXNz IGlzIGNvbXBhdGlibGUgd2l0aAorCSAqIHRoZSBwcmUtOC4zIGJlaGF2aW9yIG9mIHR1cGxlc3Rv cmVzLgorCSAqLworCWVmbGFncyA9IHJhbmRvbUFjY2VzcyA/CisJCShFWEVDX0ZMQUdfQkFDS1dB UkQgfCBFWEVDX0ZMQUdfUkVXSU5EKSA6CisJCShFWEVDX0ZMQUdfUkVXSU5EKTsKKworCXN0YXRl ID0gdHVwbGVzdG9yZV9iZWdpbl9jb21tb24oZWZsYWdzLCBpbnRlclhhY3QsIG1heEtCeXRlcyk7 CisJc3RhdGUtPmRhdHVtVHlwZSA9IGRhdHVtVHlwZTsKKwlnZXRfdHlwbGVuYnl2YWwoc3RhdGUt PmRhdHVtVHlwZSwgJnN0YXRlLT5kYXR1bVR5cGVMZW4sICZzdGF0ZS0+ZGF0dW1UeXBlQnlWYWwp OworCisJc3RhdGUtPmNvcHl0dXAgPSBjb3B5dHVwX2RhdHVtOworCXN0YXRlLT53cml0ZXR1cCA9 IHdyaXRldHVwX2RhdHVtOworCXN0YXRlLT5yZWFkdHVwID0gcmVhZHR1cF9kYXR1bTsKKwlzdGF0 ZS0+bGVudHVwID0gbGVudHVwX2RhdHVtOwogCiAJcmV0dXJuIHN0YXRlOwogfQpAQCAtNDQzLDE2 ICs0OTgsMTkgQEAgdHVwbGVzdG9yZV9jbGVhcihUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlKQogCXsK IAkJaW50NjQJCWF2YWlsTWVtID0gc3RhdGUtPmF2YWlsTWVtOwogCi0JCS8qCi0JCSAqIEJlbG93 LCB3ZSByZXNldCB0aGUgbWVtb3J5IGNvbnRleHQgZm9yIHN0b3JpbmcgdHVwbGVzLiAgVG8gc2F2 ZQotCQkgKiBmcm9tIGhhdmluZyB0byBhbHdheXMgY2FsbCBHZXRNZW1vcnlDaHVua1NwYWNlKCkg b24gYWxsIHN0b3JlZAotCQkgKiB0dXBsZXMsIHdlIGFkanVzdCB0aGUgYXZhaWxNZW0gdG8gZm9y Z2V0IGFsbCB0aGUgdHVwbGVzIGFuZCBqdXN0Ci0JCSAqIHJlY2FsbCBVU0VNRU0gZm9yIHRoZSBz cGFjZSB1c2VkIGJ5IHRoZSBtZW10dXBsZXMgYXJyYXkuICBIZXJlIHdlCi0JCSAqIGp1c3QgQXNz ZXJ0IHRoYXQncyBjb3JyZWN0IGFuZCB0aGUgbWVtb3J5IHRyYWNraW5nIGhhc24ndCBnb25lCi0J CSAqIHdyb25nIGFueXdoZXJlLgotCQkgKi8KLQkJZm9yIChpID0gc3RhdGUtPm1lbXR1cGRlbGV0 ZWQ7IGkgPCBzdGF0ZS0+bWVtdHVwY291bnQ7IGkrKykKLQkJCWF2YWlsTWVtICs9IEdldE1lbW9y eUNodW5rU3BhY2Uoc3RhdGUtPm1lbXR1cGxlc1tpXSk7CisJCWlmICghc3RhdGUtPmRhdHVtVHlw ZUJ5VmFsKQorCQl7CisJCQkvKgorCQkJICogQmVsb3csIHdlIHJlc2V0IHRoZSBtZW1vcnkgY29u dGV4dCBmb3Igc3RvcmluZyB0dXBsZXMuICBUbyBzYXZlCisJCQkgKiBmcm9tIGhhdmluZyB0byBh bHdheXMgY2FsbCBHZXRNZW1vcnlDaHVua1NwYWNlKCkgb24gYWxsIHN0b3JlZAorCQkJICogdHVw bGVzLCB3ZSBhZGp1c3QgdGhlIGF2YWlsTWVtIHRvIGZvcmdldCBhbGwgdGhlIHR1cGxlcyBhbmQg anVzdAorCQkJICogcmVjYWxsIFVTRU1FTSBmb3IgdGhlIHNwYWNlIHVzZWQgYnkgdGhlIG1lbXR1 cGxlcyBhcnJheS4gIEhlcmUgd2UKKwkJCSAqIGp1c3QgQXNzZXJ0IHRoYXQncyBjb3JyZWN0IGFu ZCB0aGUgbWVtb3J5IHRyYWNraW5nIGhhc24ndCBnb25lCisJCQkgKiB3cm9uZyBhbnl3aGVyZS4K KwkJCSAqLworCQkJZm9yIChpID0gc3RhdGUtPm1lbXR1cGRlbGV0ZWQ7IGkgPCBzdGF0ZS0+bWVt dHVwY291bnQ7IGkrKykKKwkJCQlhdmFpbE1lbSArPSBHZXRNZW1vcnlDaHVua1NwYWNlKHN0YXRl LT5tZW10dXBsZXNbaV0pOworCQl9CiAKIAkJYXZhaWxNZW0gKz0gR2V0TWVtb3J5Q2h1bmtTcGFj ZShzdGF0ZS0+bWVtdHVwbGVzKTsKIApAQCAtNzc2LDYgKzgzNCwyNSBAQCB0dXBsZXN0b3JlX3B1 dHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIEhlYXBUdXBsZSB0dXBsZSkKIAlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIH0KIAorLyoKKyAqIExpa2UgdHVwbGVzdG9yZV9wdXR0 dXBsZXNsb3QgYnV0IGZvciBzaW5nbGUgRGF0dW0uCisgKi8KK3ZvaWQKK3R1cGxlc3RvcmVfcHV0 ZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgRGF0dW0gZGF0dW0pCit7CisJTWVtb3J5Q29u dGV4dCBvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oc3RhdGUtPmNvbnRleHQpOworCisJ LyoKKwkgKiBDb3B5IHRoZSBEYXR1bS4gIChNdXN0IGRvIHRoaXMgZXZlbiBpbiBXUklURUZJTEUg Y2FzZS4gIE5vdGUgdGhhdAorCSAqIENPUFlUVVAgaW5jbHVkZXMgVVNFTUVNLCBzbyB3ZSBuZWVk bid0IGRvIHRoYXQgaGVyZS4pCisJICovCisJZGF0dW0gPSBQb2ludGVyR2V0RGF0dW0oQ09QWVRV UChzdGF0ZSwgRGF0dW1HZXRQb2ludGVyKGRhdHVtKSkpOworCisJdHVwbGVzdG9yZV9wdXR0dXBs ZV9jb21tb24oc3RhdGUsIERhdHVtR2V0UG9pbnRlcihkYXR1bSkpOworCisJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisKIC8qCiAgKiBTaW1pbGFyIHRvIHR1cGxlc3RvcmVfcHV0 dHVwbGUoKSwgYnV0IHdvcmsgZnJvbSB2YWx1ZXMgKyBudWxscyBhcnJheXMuCiAgKiBUaGlzIGF2 b2lkcyBhbiBleHRyYSB0dXBsZS1jb25zdHJ1Y3Rpb24gb3BlcmF0aW9uLgpAQCAtMTAyNywxMCAr MTEwNCwxMCBAQCB0dXBsZXN0b3JlX2dldHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJv b2wgZm9yd2FyZCwKIAkJCS8qIEZBTExUSFJPVUdIICovCiAKIAkJY2FzZSBUU1NfUkVBREZJTEU6 Ci0JCQkqc2hvdWxkX2ZyZWUgPSB0cnVlOworCQkJKnNob3VsZF9mcmVlID0gIXN0YXRlLT5kYXR1 bVR5cGVCeVZhbDsKIAkJCWlmIChmb3J3YXJkKQogCQkJewotCQkJCWlmICgodHVwbGVuID0gZ2V0 bGVuKHN0YXRlLCB0cnVlKSkgIT0gMCkKKwkJCQlpZiAoKHR1cGxlbiA9IExFTlRVUChzdGF0ZSwg dHJ1ZSkpICE9IDApCiAJCQkJewogCQkJCQl0dXAgPSBSRUFEVFVQKHN0YXRlLCB0dXBsZW4pOwog CQkJCQlyZXR1cm4gdHVwOwpAQCAtMTA1OSw3ICsxMTM2LDcgQEAgdHVwbGVzdG9yZV9nZXR0dXBs ZShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGZvcndhcmQsCiAJCQkJQXNzZXJ0KCFzdGF0 ZS0+dHJ1bmNhdGVkKTsKIAkJCQlyZXR1cm4gTlVMTDsKIAkJCX0KLQkJCXR1cGxlbiA9IGdldGxl bihzdGF0ZSwgZmFsc2UpOworCQkJdHVwbGVuID0gTEVOVFVQKHN0YXRlLCBmYWxzZSk7CiAKIAkJ CWlmIChyZWFkcHRyLT5lb2ZfcmVhY2hlZCkKIAkJCXsKQEAgLTEwOTAsNyArMTE2Nyw3IEBAIHR1 cGxlc3RvcmVfZ2V0dHVwbGUoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAog CQkJCQlBc3NlcnQoIXN0YXRlLT50cnVuY2F0ZWQpOwogCQkJCQlyZXR1cm4gTlVMTDsKIAkJCQl9 Ci0JCQkJdHVwbGVuID0gZ2V0bGVuKHN0YXRlLCBmYWxzZSk7CisJCQkJdHVwbGVuID0gTEVOVFVQ KHN0YXRlLCBmYWxzZSk7CiAJCQl9CiAKIAkJCS8qCkBAIC0xMTUyLDYgKzEyMjksMjUgQEAgdHVw bGVzdG9yZV9nZXR0dXBsZXNsb3QoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJk LAogCX0KIH0KIAorZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9nZXRkYXR1bShUdXBsZXN0b3Jlc3Rh dGUgKnN0YXRlLCBib29sIGZvcndhcmQsCisJCQkJCQkJCWJvb2wgKnNob3VsZF9mcmVlLCBEYXR1 bSAqcmVzdWx0KQoreworCURhdHVtIGRhdHVtOworCSpzaG91bGRfZnJlZSA9IGZhbHNlOworCisJ ZGF0dW0gPSAoRGF0dW0pIHR1cGxlc3RvcmVfZ2V0dHVwbGUoc3RhdGUsIGZvcndhcmQsIHNob3Vs ZF9mcmVlKTsKKwlpZiAoZGF0dW0pCisJeworCQkqcmVzdWx0ID1kYXR1bTsKKwkJcmV0dXJuIHRy dWU7CisJfQorCWVsc2UKKwl7CisJCSpyZXN1bHQgPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisJ CXJldHVybiBmYWxzZTsKKwl9Cit9CisKIC8qCiAgKiB0dXBsZXN0b3JlX2FkdmFuY2UgLSBleHBv cnRlZCBmdW5jdGlvbiB0byBhZGp1c3QgcG9zaXRpb24gd2l0aG91dCBmZXRjaGluZwogICoKQEAg LTE0NjAsOCArMTU1NiwxMSBAQCB0dXBsZXN0b3JlX3RyaW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0 ZSkKIAkvKiBSZWxlYXNlIG5vLWxvbmdlci1uZWVkZWQgdHVwbGVzICovCiAJZm9yIChpID0gc3Rh dGUtPm1lbXR1cGRlbGV0ZWQ7IGkgPCBucmVtb3ZlOyBpKyspCiAJewotCQlGUkVFTUVNKHN0YXRl LCBHZXRNZW1vcnlDaHVua1NwYWNlKHN0YXRlLT5tZW10dXBsZXNbaV0pKTsKLQkJcGZyZWUoc3Rh dGUtPm1lbXR1cGxlc1tpXSk7CisJCWlmICghc3RhdGUtPmRhdHVtVHlwZUJ5VmFsKQorCQl7CisJ CQlGUkVFTUVNKHN0YXRlLCBHZXRNZW1vcnlDaHVua1NwYWNlKHN0YXRlLT5tZW10dXBsZXNbaV0p KTsKKwkJCXBmcmVlKHN0YXRlLT5tZW10dXBsZXNbaV0pOworCQl9CiAJCXN0YXRlLT5tZW10dXBs ZXNbaV0gPSBOVUxMOwogCX0KIAlzdGF0ZS0+bWVtdHVwZGVsZXRlZCA9IG5yZW1vdmU7CkBAIC0x NTU2LDI1ICsxNjU1LDYgQEAgdHVwbGVzdG9yZV9pbl9tZW1vcnkoVHVwbGVzdG9yZXN0YXRlICpz dGF0ZSkKIAlyZXR1cm4gKHN0YXRlLT5zdGF0dXMgPT0gVFNTX0lOTUVNKTsKIH0KIAotCi0vKgot ICogVGFwZSBpbnRlcmZhY2Ugcm91dGluZXMKLSAqLwotCi1zdGF0aWMgdW5zaWduZWQgaW50Ci1n ZXRsZW4oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSykKLXsKLQl1bnNpZ25lZCBp bnQgbGVuOwotCXNpemVfdAkJbmJ5dGVzOwotCi0JbmJ5dGVzID0gQnVmRmlsZVJlYWRNYXliZUVP RihzdGF0ZS0+bXlmaWxlLCAmbGVuLCBzaXplb2YobGVuKSwgZW9mT0spOwotCWlmIChuYnl0ZXMg PT0gMCkKLQkJcmV0dXJuIDA7Ci0JZWxzZQotCQlyZXR1cm4gbGVuOwotfQotCi0KIC8qCiAgKiBS b3V0aW5lcyBzcGVjaWFsaXplZCBmb3IgSGVhcFR1cGxlIGNhc2UKICAqCkBAIC0xNTg1LDYgKzE2 NjUsMTkgQEAgZ2V0bGVuKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spCiAgKiB0 byB3cml0ZSB0aGF0IHNlcGFyYXRlbHkuCiAgKi8KIAorc3RhdGljIHVuc2lnbmVkIGludAorbGVu dHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSykKK3sKKwl1bnNpZ25l ZCBpbnQgbGVuOworCXNpemVfdAkJbmJ5dGVzOworCisJbmJ5dGVzID0gQnVmRmlsZVJlYWRNYXli ZUVPRihzdGF0ZS0+bXlmaWxlLCAmbGVuLCBzaXplb2YobGVuKSwgZW9mT0spOworCWlmIChuYnl0 ZXMgPT0gMCkKKwkJcmV0dXJuIDA7CisJZWxzZQorCQlyZXR1cm4gbGVuOworfQorCiBzdGF0aWMg dm9pZCAqCiBjb3B5dHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCAqdHVwKQog ewpAQCAtMTYzMSwzICsxNzI0LDk4IEBAIHJlYWR0dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUgKnN0 YXRlLCB1bnNpZ25lZCBpbnQgbGVuKQogCQlCdWZGaWxlUmVhZEV4YWN0KHN0YXRlLT5teWZpbGUs ICZ0dXBsZW4sIHNpemVvZih0dXBsZW4pKTsKIAlyZXR1cm4gdHVwbGU7CiB9CisKKy8qCisgKiBS b3V0aW5lcyBzcGVjaWFsaXplZCBmb3IgRGF0dW0gY2FzZS4KKyAqCisgKiBIYW5kbGVzIGJvdGgg Zml4ZWQgYW5kIHZhcmlhYmxlLWxlbmd0aCBEYXR1bXMgZWZmaWNpZW50bHk6CisgKiAtIEZpeGVk LWxlbmd0aDogc3RvcmVzIHJhdyBieXRlcyB3aXRob3V0IGxlbmd0aCBwcmVmaXgKKyAqIC0gVmFy aWFibGUtbGVuZ3RoOiBpbmNsdWRlcyBsZW5ndGggcHJlZml4IChhbmQgc3VmZml4IGlmIGJhY2t3 YXJkIHNjYW4pCisgKiAtIEJ5LXZhbHVlIHR5cGVzIGhhbmRsZWQgaW5saW5lIHdpdGhvdXQgZXh0 cmEgY29weWluZworICovCisKK3N0YXRpYyB1bnNpZ25lZCBpbnQKK2xlbnR1cF9kYXR1bShUdXBs ZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKQoreworCXVuc2lnbmVkIGludCBsZW47CisJ c2l6ZV90CQluYnl0ZXM7CisKKwlBc3NlcnQoc3RhdGUtPmRhdHVtVHlwZSAhPSBJbnZhbGlkT2lk KTsKKworCWlmIChzdGF0ZS0+ZGF0dW1UeXBlTGVuID4gMCkKKwkJcmV0dXJuIHN0YXRlLT5kYXR1 bVR5cGVMZW47CisKKwluYnl0ZXMgPSBCdWZGaWxlUmVhZE1heWJlRU9GKHN0YXRlLT5teWZpbGUs ICZsZW4sIHNpemVvZihsZW4pLCBlb2ZPSyk7CisJaWYgKG5ieXRlcyA9PSAwKQorCQlyZXR1cm4g MDsKKwllbHNlCisJCXJldHVybiBsZW47Cit9CisKK3N0YXRpYyB2b2lkICoKK2NvcHl0dXBfZGF0 dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCogZGF0dW0pCit7CisJQXNzZXJ0KHN0YXRl LT5kYXR1bVR5cGUgIT0gSW52YWxpZE9pZCk7CisJaWYgKHN0YXRlLT5kYXR1bVR5cGVCeVZhbCkK KwkJcmV0dXJuIERhdHVtR2V0UG9pbnRlcihQb2ludGVyR2V0RGF0dW0oZGF0dW0pKTsKKwllbHNl CisJeworCQlEYXR1bSBkID0gZGF0dW1Db3B5KFBvaW50ZXJHZXREYXR1bShkYXR1bSksIHN0YXRl LT5kYXR1bVR5cGVCeVZhbCwgc3RhdGUtPmRhdHVtVHlwZUxlbik7CisJCVVTRU1FTShzdGF0ZSwg R2V0TWVtb3J5Q2h1bmtTcGFjZShEYXR1bUdldFBvaW50ZXIoZCkpKTsKKwkJcmV0dXJuIERhdHVt R2V0UG9pbnRlcihkKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCit3cml0ZXR1cF9kYXR1bShUdXBs ZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkKiBkYXR1bSkKK3sKKwlBc3NlcnQoc3RhdGUtPmRhdHVt VHlwZSAhPSBJbnZhbGlkT2lkKTsKKwlpZiAoc3RhdGUtPmRhdHVtVHlwZUJ5VmFsKQorCXsKKwkJ QXNzZXJ0KHN0YXRlLT5kYXR1bVR5cGVMZW4gPiAwKTsKKwkJQnVmRmlsZVdyaXRlKHN0YXRlLT5t eWZpbGUsIGRhdHVtLCBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsKKwl9CisJZWxzZQorCXsKKwkJU2l6 ZSBzaXplID0gc3RhdGUtPmRhdHVtVHlwZUxlbjsKKwkJaWYgKHN0YXRlLT5kYXR1bVR5cGVMZW4g PCAwKQorCQl7CisJCQlCdWZGaWxlV3JpdGUoc3RhdGUtPm15ZmlsZSwgJnNpemUsIHNpemVvZihz aXplKSk7CisJCQlzaXplID0gZGF0dW1HZXRTaXplKFBvaW50ZXJHZXREYXR1bShkYXR1bSksIHN0 YXRlLT5kYXR1bVR5cGVCeVZhbCwgc3RhdGUtPmRhdHVtVHlwZUxlbik7CisJCX0KKworCQlCdWZG aWxlV3JpdGUoc3RhdGUtPm15ZmlsZSwgZGF0dW0sIHNpemUpOworCisJCS8qIG5lZWQgdHJhaWxp bmcgbGVuZ3RoIHdvcmQ/ICovCisJCWlmIChzdGF0ZS0+YmFja3dhcmQgJiYgc3RhdGUtPmRhdHVt VHlwZUxlbiA8IDApCisJCQlCdWZGaWxlV3JpdGUoc3RhdGUtPm15ZmlsZSwgJnNpemUsIHNpemVv ZihzaXplKSk7CisKKwkJRlJFRU1FTShzdGF0ZSwgR2V0TWVtb3J5Q2h1bmtTcGFjZShkYXR1bSkp OworCQlwZnJlZShkYXR1bSk7CisJfQorfQorCitzdGF0aWMgdm9pZCoKK3JlYWR0dXBfZGF0dW0o VHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdW5zaWduZWQgaW50IGxlbikKK3sKKwlBc3NlcnQoc3Rh dGUtPmRhdHVtVHlwZSAhPSBJbnZhbGlkT2lkKTsKKwlpZiAoc3RhdGUtPmRhdHVtVHlwZUJ5VmFs KQorCXsKKwkJRGF0dW0gZGF0dW0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisJCUFzc2VydChz dGF0ZS0+ZGF0dW1UeXBlTGVuID4gMCk7CisJCUFzc2VydChsZW4gPT0gc3RhdGUtPmRhdHVtVHlw ZUxlbik7CisJCUJ1ZkZpbGVSZWFkRXhhY3Qoc3RhdGUtPm15ZmlsZSwgJmRhdHVtLCBzdGF0ZS0+ ZGF0dW1UeXBlTGVuKTsKKwkJcmV0dXJuIERhdHVtR2V0UG9pbnRlcihkYXR1bSk7CisJfQorCWVs c2UKKwl7CisJCURhdHVtICpkYXR1bXMgPSBwYWxsb2MobGVuKTsKKwkJQnVmRmlsZVJlYWRFeGFj dChzdGF0ZS0+bXlmaWxlLCAmZGF0dW1zLCBsZW4pOworCisJCS8qIG5lZWQgdHJhaWxpbmcgbGVu Z3RoIHdvcmQ/ICovCisJCWlmIChzdGF0ZS0+YmFja3dhcmQgJiYgc3RhdGUtPmRhdHVtVHlwZUxl biA8IDApCisJCQlCdWZGaWxlUmVhZEV4YWN0KHN0YXRlLT5teWZpbGUsICZsZW4sIHNpemVvZihs ZW4pKTsKKworCQlyZXR1cm4gRGF0dW1HZXRQb2ludGVyKCpkYXR1bXMpOworCX0KK30KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUuaCBiL3NyYy9pbmNsdWRlL3V0aWxz L3R1cGxlc3RvcmUuaAppbmRleCA4NjViYTdiODI2NS4uMDM0MWM0N2I4NTEgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90 dXBsZXN0b3JlLmgKQEAgLTEsMTcgKzEsMTggQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAq IHR1cGxlc3RvcmUuaAotICoJICBHZW5lcmFsaXplZCByb3V0aW5lcyBmb3IgdGVtcG9yYXJ5IHR1 cGxlIHN0b3JhZ2UuCisgKgkgIEdlbmVyYWxpemVkIHJvdXRpbmVzIGZvciB0ZW1wb3Jhcnkgc3Rv cmFnZSBvZiB0dXBsZXMgYW5kIERhdHVtcy4KICAqCi0gKiBUaGlzIG1vZHVsZSBoYW5kbGVzIHRl bXBvcmFyeSBzdG9yYWdlIG9mIHR1cGxlcyBmb3IgcHVycG9zZXMgc3VjaAotICogYXMgTWF0ZXJp YWxpemUgbm9kZXMsIGhhc2hqb2luIGJhdGNoIGZpbGVzLCBldGMuICBJdCBpcyBlc3NlbnRpYWxs eQotICogYSBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1cGxlc29ydC5jOyBpdCBkb2VzIG5vIHNv cnRpbmcgb2YgdHVwbGVzCi0gKiBidXQgY2FuIG9ubHkgc3RvcmUgYW5kIHJlZ3VyZ2l0YXRlIGEg c2VxdWVuY2Ugb2YgdHVwbGVzLiAgSG93ZXZlciwKLSAqIGJlY2F1c2Ugbm8gc29ydCBpcyByZXF1 aXJlZCwgaXQgaXMgYWxsb3dlZCB0byBzdGFydCByZWFkaW5nIHRoZSBzZXF1ZW5jZQotICogYmVm b3JlIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVs IGZvciBjdXJzb3JzLAotICogYmVjYXVzZSBpdCBhbGxvd3MgcmFuZG9tIGFjY2VzcyB3aXRoaW4g dGhlIGFscmVhZHktc2Nhbm5lZCBwb3J0aW9uIG9mCi0gKiBhIHF1ZXJ5IHdpdGhvdXQgaGF2aW5n IHRvIHByb2Nlc3MgdGhlIHVuZGVybHlpbmcgc2NhbiB0byBjb21wbGV0aW9uLgotICogQWxzbywg aXQgaXMgcG9zc2libGUgdG8gc3VwcG9ydCBtdWx0aXBsZSBpbmRlcGVuZGVudCByZWFkIHBvaW50 ZXJzLgorICogVGhpcyBtb2R1bGUgaGFuZGxlcyB0ZW1wb3Jhcnkgc3RvcmFnZSBvZiBlaXRoZXIg dHVwbGVzIG9yIHNpbmdsZQorICogRGF0dW0gdmFsdWVzIGZvciBwdXJwb3NlcyBzdWNoIGFzIE1h dGVyaWFsaXplIG5vZGVzLCBoYXNoam9pbiBiYXRjaAorICogZmlsZXMsIGV0Yy4gSXQgaXMgZXNz ZW50aWFsbHkgYSBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1cGxlc29ydC5jOworICogaXQgZG9l cyBubyBzb3J0aW5nIG9mIHR1cGxlcyBidXQgY2FuIG9ubHkgc3RvcmUgYW5kIHJlZ3VyZ2l0YXRl IGEgc2VxdWVuY2UKKyAqIG9mIHR1cGxlcy4gIEhvd2V2ZXIsIGJlY2F1c2Ugbm8gc29ydCBpcyBy ZXF1aXJlZCwgaXQgaXMgYWxsb3dlZCB0byBzdGFydAorICogcmVhZGluZyB0aGUgc2VxdWVuY2Ug YmVmb3JlIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuLgorICoKKyAqIFRoaXMgaXMgcGFydGljdWxh cmx5IHVzZWZ1bCBmb3IgY3Vyc29ycywgYmVjYXVzZSBpdCBhbGxvd3MgcmFuZG9tIGFjY2Vzcwor ICogd2l0aGluIHRoZSBhbHJlYWR5LXNjYW5uZWQgcG9ydGlvbiBvZiBhIHF1ZXJ5IHdpdGhvdXQg aGF2aW5nIHRvIHByb2Nlc3MKKyAqIHRoZSB1bmRlcmx5aW5nIHNjYW4gdG8gY29tcGxldGlvbi4K ICAqCiAgKiBBIHRlbXBvcmFyeSBmaWxlIGlzIHVzZWQgdG8gaGFuZGxlIHRoZSBkYXRhIGlmIGl0 IGV4Y2VlZHMgdGhlCiAgKiBzcGFjZSBsaW1pdCBzcGVjaWZpZWQgYnkgdGhlIGNhbGxlci4KQEAg LTM5LDE0ICs0MCwxMyBAQAogICovCiB0eXBlZGVmIHN0cnVjdCBUdXBsZXN0b3Jlc3RhdGUgVHVw bGVzdG9yZXN0YXRlOwogCi0vKgotICogQ3VycmVudGx5IHdlIG9ubHkgbmVlZCB0byBzdG9yZSBN aW5pbWFsVHVwbGVzLCBidXQgaXQgd291bGQgYmUgZWFzeQotICogdG8gc3VwcG9ydCB0aGUgc2Ft ZSBiZWhhdmlvciBmb3IgSW5kZXhUdXBsZXMgYW5kL29yIGJhcmUgRGF0dW1zLgotICovCi0KIGV4 dGVybiBUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc3RvcmVfYmVnaW5faGVhcChib29sIHJhbmRvbUFj Y2VzcywKIAkJCQkJCQkJCQkJICBib29sIGludGVyWGFjdCwKIAkJCQkJCQkJCQkJICBpbnQgbWF4 S0J5dGVzKTsKK2V4dGVybiBUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc3RvcmVfYmVnaW5fZGF0dW0o T2lkIGRhdHVtVHlwZSwKKwkJCQkJCQkJCQkJIGJvb2wgcmFuZG9tQWNjZXNzLAorCQkJCQkJCQkJ CQkgYm9vbCBpbnRlclhhY3QsCisJCQkJCQkJCQkJCSBpbnQgbWF4S0J5dGVzKTsKIAogZXh0ZXJu IHZvaWQgdHVwbGVzdG9yZV9zZXRfZWZsYWdzKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGludCBl ZmxhZ3MpOwogCkBAIC01NSw2ICs1NSw3IEBAIGV4dGVybiB2b2lkIHR1cGxlc3RvcmVfcHV0dHVw bGVzbG90KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsCiBleHRlcm4gdm9pZCB0dXBsZXN0b3JlX3B1 dHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIEhlYXBUdXBsZSB0dXBsZSk7CiBleHRlcm4g dm9pZCB0dXBsZXN0b3JlX3B1dHZhbHVlcyhUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBUdXBsZURl c2MgdGRlc2MsCiAJCQkJCQkJCSBjb25zdCBEYXR1bSAqdmFsdWVzLCBjb25zdCBib29sICppc251 bGwpOworZXh0ZXJuIHZvaWQgdHVwbGVzdG9yZV9wdXRkYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0 YXRlLCBEYXR1bSBkYXR1bSk7CiAKIGV4dGVybiBpbnQJdHVwbGVzdG9yZV9hbGxvY19yZWFkX3Bv aW50ZXIoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgaW50IGVmbGFncyk7CiAKQEAgLTcyLDYgKzcz LDggQEAgZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9pbl9tZW1vcnkoVHVwbGVzdG9yZXN0YXRlICpz dGF0ZSk7CiAKIGV4dGVybiBib29sIHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KFR1cGxlc3RvcmVz dGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCwKIAkJCQkJCQkJCWJvb2wgY29weSwgVHVwbGVUYWJs ZVNsb3QgKnNsb3QpOworZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9nZXRkYXR1bShUdXBsZXN0b3Jl c3RhdGUgKnN0YXRlLCBib29sIGZvcndhcmQsCisJCQkJCQkJCWJvb2wgKnNob3VsZF9mcmVlLCBE YXR1bSAqcmVzdWx0KTsKIAogZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9hZHZhbmNlKFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCk7CiAKLS0gCjIuNDMuMAoK --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="v24-0008-Use-auxiliary-indexes-for-concurrent-index-opera.patch" Content-Disposition: attachment; filename="v24-0008-Use-auxiliary-indexes-for-concurrent-index-opera.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm1013 RnJvbSA1YWFjOTY2MjY0YjQwMGZkOWE4OWM4OTAxNTc0YTU4NGExNWVkZjEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNTowMzoxMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI0IDA4LzEyXSBVc2UgYXV4aWxpYXJ5IGluZGV4ZXMgZm9yIGNvbmN1cnJlbnQgaW5k ZXgKIG9wZXJhdGlvbnMKClJlcGxhY2UgdGhlIHNlY29uZCB0YWJsZSBmdWxsIHNjYW4gaW4gY29u Y3VycmVudCBpbmRleCBidWlsZHMgd2l0aCBhbiBhdXhpbGlhcnkgaW5kZXggYXBwcm9hY2g6Ci0g Y3JlYXRlIGEgU1RJUiAgYXV4aWxpYXJ5IGluZGV4IHdpdGggdGhlIHNhbWUgcHJlZGljYXRlIChp ZiBleGlzdHMpIGFzIGluIG1haW4gaW5kZXgKLSB1c2UgaXQgdG8gdHJhY2sgdHVwbGVzIGluc2Vy dGVkIGR1cmluZyB0aGUgZmlyc3QgcGhhc2UKLSBtZXJnZSBhdXhpbGlhcnkgaW5kZXggd2l0aCBt YWluIGluZGV4IGR1cmluZyB2YWxpZGF0aW9uIHRvIGNhdGNoIHVwIG5ldyBpbmRleCB3aXRoIGFu eSB0dXBsZXMgbWlzc2VkIGR1cmluZyB0aGUgZmlyc3QgcGhhc2UKLSBhdXRvbWF0aWNhbGx5IGRy b3AgYXV4aWxpYXJ5IHdoZW4gbWFpbiBpbmRleCBpcyByZWFkeQoKVG8gbWVyZ2UgbWFpbiBhbmQg YXV4aWxpYXJ5IGluZGV4ZXM6Ci0gaW5kZXhfYnVsa19kZWxldGUgY2FsbGVkIGZvciBib3RoLCBU SURzIHB1dCBpbnRvIHR1cGxlc29ydAotIGJvdGggdHVwbGVzb3J0IGFyZSBiZWluZyBzb3J0ZWQK LSBib3RoIHR1cGxlc29ydCBzY2FubmVkIHdpdGggdHdvIHBvaW50ZXJzIGxvb2tpbmcgZm9yIHRo ZSBUSURzIHByZXNlbnQgaW4gYXV4aWxpYXJ5IGluZGV4LCBidXQgYWJzZW50IGluIG1haW4gb25l Ci0gYWxsIHN1Y2ggVElEcyBhcmUgcHV0IGludG8gdHVwbGVzdG9yZQotIGFsbCBUSURzIGluIHR1 cGxlc3RvcmUgYXJlIGZldGNoZWQgdXNpbmcgdGhlIHN0cmVhbSwgdHVwbGVzdG9yZSB1c2VkIGlu IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX3JlYWRfc3RyZWFtX25leHQgdG8gcHJvdmlkZSB0 aGUgbmV4dCBwYWdlIHRvIHByZWZldGNoCi0gaWYgZmV0Y2hlZCB0dXBsZSBpcyBhbGl2ZSAtIGl0 IGlzIGluc2VydGVkIGludG8gdGhlIG1haW4gaW5kZXgKClRoaXMgZWxpbWluYXRlcyB0aGUgbmVl ZCBmb3IgYSBzZWNvbmQgZnVsbCB0YWJsZSBzY2FuIGR1cmluZyB2YWxpZGF0aW9uLCBpbXByb3Zp bmcgcGVyZm9ybWFuY2UgZXNwZWNpYWxseSBmb3IgbGFyZ2UgdGFibGVzLiBBZmZlY3RzIGJvdGgg Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg b3BlcmF0aW9ucy4KLS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAg ICAgfCAgMjYgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgICAgICAgICB8 ICAzNCArLQogZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwgICAgICAgICAgICAgIHwgIDQx ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UICAgICAgICAgfCAgMTMgKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICB8IDU0NSArKysrKysr KysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAg ICB8IDMxMyArKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bCAgICAgICB8ICAxNyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAg ICAgIHwgMzM0ICsrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jICAg ICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCAgICAgICAg ICAgICAgIHwgIDIwICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggICAgICAgICAgICAg ICAgfCAgIDkgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmggICAgICAgICAgICB8 ICAxMyArLQogc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmggICAgICAgICAgICAgIHwgICAz ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgfCAgNDIgKysK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0ICAgICB8ICAgMyArLQogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgIHwgIDE3ICstCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsICAgICAgfCAgMjEgKwogMTcgZmlsZXMgY2hh bmdlZCwgMTExNiBpbnNlcnRpb25zKCspLCAzMzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNn bWwKaW5kZXggM2Y0YTI3YTczNmUuLjVjNDhlNTI5ZTRhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAg LTYzMjcsNiArNjMyNywxOCBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBi YWNrZW5kaWQ7CiAgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCiAgICAgICA8L2Vu dHJ5PgogICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD53YWl0 aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkgaW5kZXg8L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ PC9jb21tYW5kPiBvciA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMg d2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zCisgICAgICAgd2l0aCB3cml0ZSBsb2NrcyB0aGF0IGNh biBwb3RlbnRpYWxseSBzZWUgdGhlIHRhYmxlIHRvIGZpbmlzaCwgdG8gZW5zdXJlIHVzZSBvZiBh dXhpbGlhcnkgaW5kZXggZm9yIG5ldyB0dXBsZXMgaW4KKyAgICAgICBmdXR1cmUgdHJhbnNhY3Rp b25zLgorICAgICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5vdCBpbiBjb25jdXJyZW50 IG1vZGUuCisgICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5sb2NrZXJzX3RvdGFsPC9zdHJ1Y3Ru YW1lPiwgPHN0cnVjdG5hbWU+bG9ja2Vyc19kb25lPC9zdHJ1Y3RuYW1lPgorICAgICAgIGFuZCA8 c3RydWN0bmFtZT5jdXJyZW50X2xvY2tlcl9waWQ8L3N0cnVjdG5hbWU+IGNvbnRhaW4gdGhlIHBy b2dyZXNzCisgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCisgICAgICA8L2VudHJ5 PgorICAgICA8L3Jvdz4KICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD5idWlsZGlu ZyBpbmRleDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PgpAQCAtNjM2NywxMyArNjM3 OSwxMiBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7CiAg ICAgICA8L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICAgPHJvdz4KLSAgICAgIDxlbnRyeT48bGl0 ZXJhbD5pbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyB0YWJsZTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgPGVudHJ5PjxsaXRlcmFsPmluZGV4IHZhbGlkYXRpb246IG1lcmdpbmcgaW5kZXhlczwv bGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PgotICAgICAgIDxjb21tYW5kPkNSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGlzIHNjYW5uaW5nIHRoZSB0YWJsZQotICAgICAg IHRvIHZhbGlkYXRlIHRoZSBpbmRleCB0dXBsZXMgY29sbGVjdGVkIGluIHRoZSBwcmV2aW91cyB0 d28gcGhhc2VzLgorICAgICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFk8L2Nv bW1hbmQ+IG1lcmdpbmcgY29udGVudCBvZiBhdXhpbGlhcnkgaW5kZXggd2l0aCB0aGUgdGFyZ2V0 IGluZGV4LgogICAgICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5vdCBpbiBjb25jdXJy ZW50IG1vZGUuCi0gICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5ibG9ja3NfdG90YWw8L3N0cnVj dG5hbWU+IChzZXQgdG8gdGhlIHRvdGFsIHNpemUgb2YgdGhlIHRhYmxlKQotICAgICAgIGFuZCA8 c3RydWN0bmFtZT5ibG9ja3NfZG9uZTwvc3RydWN0bmFtZT4gY29udGFpbiB0aGUgcHJvZ3Jlc3Mg aW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCisgICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT50 dXBsZXNfdG90YWw8L3N0cnVjdG5hbWU+IChzZXQgdG8gdGhlIG51bWJlciBvZiB0dXBsZXMgdG8g YmUgbWVyZ2VkKQorICAgICAgIGFuZCA8c3RydWN0bmFtZT50dXBsZXNfZG9uZTwvc3RydWN0bmFt ZT4gY29udGFpbiB0aGUgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCiAgICAg ICA8L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICAgPHJvdz4KQEAgLTYzOTAsOCArNjQwMSw5IEBA IEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAgICAgPHJv dz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD53YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBtYXJr aW5nIGRlYWQ8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT4KLSAgICAgICA8Y29tbWFu ZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgd2FpdGluZyBmb3IgdHJhbnNhY3Rp b25zCi0gICAgICAgd2l0aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gsIGJlZm9y ZSBtYXJraW5nIHRoZSBvbGQgaW5kZXggZGVhZC4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUgSU5E RVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBpcyB3YWl0aW5nIGZvciB0cmFuc2FjdGlvbnMKKyAg ICAgICAgd2l0aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gsIGJlZm9yZSBtYXJr aW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggYXMgZGVhZC4KKyAgICAgICA8Y29tbWFuZD5SRUlOREVY IENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgYWxzbyB3YWl0aW5nIGJlZm9yZSBtYXJraW5nIHRo ZSBvbGQgaW5kZXggYXMgZGVhZC4KICAgICAgICBUaGlzIHBoYXNlIGlzIHNraXBwZWQgd2hlbiBu b3QgaW4gY29uY3VycmVudCBtb2RlLgogICAgICAgIENvbHVtbnMgPHN0cnVjdG5hbWU+bG9ja2Vy c190b3RhbDwvc3RydWN0bmFtZT4sIDxzdHJ1Y3RuYW1lPmxvY2tlcnNfZG9uZTwvc3RydWN0bmFt ZT4KICAgICAgICBhbmQgPHN0cnVjdG5hbWU+Y3VycmVudF9sb2NrZXJfcGlkPC9zdHJ1Y3RuYW1l PiBjb250YWluIHRoZSBwcm9ncmVzcwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKaW5kZXgg YjljNjc5YzQxZTguLjMwZGIwNzljOGQ4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9pbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwK QEAgLTYyMCwxMCArNjIwLDEwIEBAIENSRUFURSBbIFVOSVFVRSBdIElOREVYIFsgQ09OQ1VSUkVO VExZIF0gWyBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9CiAgICAgb3V0IHdy aXRlcy4gIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgc3BlY2lmeWluZyB0aGUKICAgICA8bGl0 ZXJhbD5DT05DVVJSRU5UTFk8L2xpdGVyYWw+IG9wdGlvbiBvZiA8Y29tbWFuZD5DUkVBVEUgSU5E RVg8L2NvbW1hbmQ+LgogICAgIFdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZCwKLSAgICA8cHJvZHVj dG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0d28gc2NhbnMgb2Yg dGhlIHRhYmxlLCBhbmQgaW4KLSAgICBhZGRpdGlvbiBpdCBtdXN0IHdhaXQgZm9yIGFsbCBleGlz dGluZyB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseQotICAgIG1vZGlmeSBvciB1 c2UgdGhlIGluZGV4IHRvIHRlcm1pbmF0ZS4gIFRodXMKLSAgICB0aGlzIG1ldGhvZCByZXF1aXJl cyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGluZGV4IGJ1aWxkIGFuZCB0YWtlcwor ICAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gbXVzdCBwZXJmb3JtIHRh YmxlIHNjYW4gZm9sbG93ZWQgYnkKKyAgICB2YWxpZGF0aW9uIHBoYXNlLCBhbmQgaW4gYWRkaXRp b24gaXQgbXVzdCB3YWl0IGZvciBhbGwgZXhpc3RpbmcgdHJhbnNhY3Rpb25zCisgICAgdGhhdCBj b3VsZCBwb3RlbnRpYWxseSBtb2RpZnkgb3IgdXNlIHRoZSBpbmRleCB0byB0ZXJtaW5hdGUuICBU aHVzCisgICAgdGhpcyBtZXRob2QgcmVxdWlyZXMgbW9yZSB0b3RhbCB3b3JrIHRoYW4gYSBzdGFu ZGFyZCBpbmRleCBidWlsZCBhbmQgbWF5IHRha2UKICAgICBzaWduaWZpY2FudGx5IGxvbmdlciB0 byBjb21wbGV0ZS4gIEhvd2V2ZXIsIHNpbmNlIGl0IGFsbG93cyBub3JtYWwKICAgICBvcGVyYXRp b25zIHRvIGNvbnRpbnVlIHdoaWxlIHRoZSBpbmRleCBpcyBidWlsdCwgdGhpcyBtZXRob2QgaXMg dXNlZnVsIGZvcgogICAgIGFkZGluZyBuZXcgaW5kZXhlcyBpbiBhIHByb2R1Y3Rpb24gZW52aXJv bm1lbnQuICBPZiBjb3Vyc2UsIHRoZSBleHRyYSBDUFUKQEAgLTYzMSwxNCArNjMxLDE0IEBAIENS RUFURSBbIFVOSVFVRSBdIElOREVYIFsgQ09OQ1VSUkVOVExZIF0gWyBbIElGIE5PVCBFWElTVFMg XSA8cmVwbGFjZWFibGUgY2xhc3M9CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgotICAgIEluIGEg Y29uY3VycmVudCBpbmRleCBidWlsZCwgdGhlIGluZGV4IGlzIGFjdHVhbGx5IGVudGVyZWQgYXMg YW4KLSAgICA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IGluZGV4IGludG8KLSAgICB0aGUgc3lzdGVt IGNhdGFsb2dzIGluIG9uZSB0cmFuc2FjdGlvbiwgdGhlbiB0d28gdGFibGUgc2NhbnMgb2NjdXIg aW4KLSAgICB0d28gbW9yZSB0cmFuc2FjdGlvbnMuICBCZWZvcmUgZWFjaCB0YWJsZSBzY2FuLCB0 aGUgaW5kZXggYnVpbGQgbXVzdAorICAgIEluIGEgY29uY3VycmVudCBpbmRleCBidWlsZCwgdGhl IG1haW4gYW5kIGF1eGlsaWFyeSBpbmRleGVzIGlzIGFjdHVhbGx5CisgICAgZW50ZXJlZCBhcyBh biA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IGluZGV4IGludG8KKyAgICB0aGUgc3lzdGVtIGNhdGFs b2dzIGluIG9uZSB0cmFuc2FjdGlvbiwgdGhlbiB0d28gcGhhc2VzIG9jY3VyIGluCisgICAgbXVs dGlwbGUgdHJhbnNhY3Rpb25zLiAgQmVmb3JlIGVhY2ggcGhhc2UsIHRoZSBpbmRleCBidWlsZCBt dXN0CiAgICAgd2FpdCBmb3IgZXhpc3RpbmcgdHJhbnNhY3Rpb25zIHRoYXQgaGF2ZSBtb2RpZmll ZCB0aGUgdGFibGUgdG8gdGVybWluYXRlLgotICAgIEFmdGVyIHRoZSBzZWNvbmQgc2NhbiwgdGhl IGluZGV4IGJ1aWxkIG11c3Qgd2FpdCBmb3IgYW55IHRyYW5zYWN0aW9ucworICAgIEFmdGVyIHRo ZSBzZWNvbmQgcGhhc2UsIHRoZSBpbmRleCBidWlsZCBtdXN0IHdhaXQgZm9yIGFueSB0cmFuc2Fj dGlvbnMKICAgICB0aGF0IGhhdmUgYSBzbmFwc2hvdCAoc2VlIDx4cmVmIGxpbmtlbmQ9Im12Y2Mi Lz4pIHByZWRhdGluZyB0aGUgc2Vjb25kCi0gICAgc2NhbiB0byB0ZXJtaW5hdGUsIGluY2x1ZGlu ZyB0cmFuc2FjdGlvbnMgdXNlZCBieSBhbnkgcGhhc2Ugb2YgY29uY3VycmVudAorICAgIHBoYXNl IHRvIHRlcm1pbmF0ZSwgaW5jbHVkaW5nIHRyYW5zYWN0aW9ucyB1c2VkIGJ5IGFueSBwaGFzZSBv ZiBjb25jdXJyZW50CiAgICAgaW5kZXggYnVpbGRzIG9uIG90aGVyIHRhYmxlcywgaWYgdGhlIGlu ZGV4ZXMgaW52b2x2ZWQgYXJlIHBhcnRpYWwgb3IgaGF2ZQogICAgIGNvbHVtbnMgdGhhdCBhcmUg bm90IHNpbXBsZSBjb2x1bW4gcmVmZXJlbmNlcy4KICAgICBUaGVuIGZpbmFsbHkgdGhlIGluZGV4 IGNhbiBiZSBtYXJrZWQgPHF1b3RlPnZhbGlkPC9xdW90ZT4gYW5kIHJlYWR5IGZvciB1c2UsCkBA IC02NTEsMTAgKzY1MSwxMSBAQCBDUkVBVEUgWyBVTklRVUUgXSBJTkRFWCBbIENPTkNVUlJFTlRM WSBdIFsgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPQogICAgPHBhcmE+CiAg ICAgSWYgYSBwcm9ibGVtIGFyaXNlcyB3aGlsZSBzY2FubmluZyB0aGUgdGFibGUsIHN1Y2ggYXMg YSBkZWFkbG9jayBvciBhCiAgICAgdW5pcXVlbmVzcyB2aW9sYXRpb24gaW4gYSB1bmlxdWUgaW5k ZXgsIHRoZSA8Y29tbWFuZD5DUkVBVEUgSU5ERVg8L2NvbW1hbmQ+Ci0gICAgY29tbWFuZCB3aWxs IGZhaWwgYnV0IGxlYXZlIGJlaGluZCBhbiA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IGluZGV4LiBU aGlzIGluZGV4Ci0gICAgd2lsbCBiZSBpZ25vcmVkIGZvciBxdWVyeWluZyBwdXJwb3NlcyBiZWNh dXNlIGl0IG1pZ2h0IGJlIGluY29tcGxldGU7Ci0gICAgaG93ZXZlciBpdCB3aWxsIHN0aWxsIGNv bnN1bWUgdXBkYXRlIG92ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9u PgotICAgIDxjb21tYW5kPlxkPC9jb21tYW5kPiBjb21tYW5kIHdpbGwgcmVwb3J0IHN1Y2ggYW4g aW5kZXggYXMgPGxpdGVyYWw+SU5WQUxJRDwvbGl0ZXJhbD46CisgICAgY29tbWFuZCB3aWxsIGZh aWwgYnV0IGxlYXZlIGJlaGluZCBhbiA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IGluZGV4IGFuZCBp dHMKKyAgICBhc3NvY2lhdGVkIGF1eGlsaWFyeSBpbmRleC4gVGhlc2UgaW5kZXhlcworICAgIHdp bGwgYmUgaWdub3JlZCBmb3IgcXVlcnlpbmcgcHVycG9zZXMgYmVjYXVzZSB0aGV5IG1pZ2h0IGJl IGluY29tcGxldGU7CisgICAgaG93ZXZlciB0aGV5IHdpbGwgc3RpbGwgY29uc3VtZSB1cGRhdGUg b3ZlcmhlYWQuIFRoZSA8YXBwbGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+CisgICAgPGNvbW1h bmQ+XGQ8L2NvbW1hbmQ+IGNvbW1hbmQgd2lsbCByZXBvcnQgc3VjaCBpbmRleGVzIGFzIDxsaXRl cmFsPklOVkFMSUQ8L2xpdGVyYWw+OgogCiA8cHJvZ3JhbWxpc3Rpbmc+CiBwb3N0Z3Jlcz0jIFxk IHRhYgpAQCAtNjY0LDExICs2NjUsMTIgQEAgcG9zdGdyZXM9IyBcZCB0YWIKICBjb2wgICAgfCBp bnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfAogSW5kZXhlczoKICAgICAiaWR4IiBidHJl ZSAoY29sKSBJTlZBTElECisgICAgImlkeF9jY2F1eCIgc3RpciAoY29sKSBJTlZBTElECiA8L3By b2dyYW1saXN0aW5nPgogCiAgICAgVGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5Ci0gICAgbWV0aG9k IGluIHN1Y2ggY2FzZXMgaXMgdG8gZHJvcCB0aGUgaW5kZXggYW5kIHRyeSBhZ2FpbiB0byBwZXJm b3JtCi0gICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4uICAo QW5vdGhlciBwb3NzaWJpbGl0eSBpcworICAgIG1ldGhvZCBpbiBzdWNoIGNhc2VzIGlzIHRvIGRy b3AgdGhlc2UgaW5kZXhlcyBhbmQgdHJ5IGFnYWluIHRvIHBlcmZvcm0KKyAgICA8Y29tbWFuZD5D UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPi4gKEFub3RoZXIgcG9zc2liaWxpdHkg aXMKICAgICB0byByZWJ1aWxkIHRoZSBpbmRleCB3aXRoIDxjb21tYW5kPlJFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZPC9jb21tYW5kPikuCiAgICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwK aW5kZXggYzQwNTUzOTcxNDYuLjRlZDNjOTY5MDEyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL3JlaW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbApAQCAt MzY4LDkgKzM2OCw4IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAgICAgPHByb2R1Y3RuYW1l PlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBzdXBwb3J0cyByZWJ1aWxkaW5nIGluZGV4ZXMgd2l0 aCBtaW5pbXVtIGxvY2tpbmcKICAgICBvZiB3cml0ZXMuICBUaGlzIG1ldGhvZCBpcyBpbnZva2Vk IGJ5IHNwZWNpZnlpbmcgdGhlCiAgICAgPGxpdGVyYWw+Q09OQ1VSUkVOVExZPC9saXRlcmFsPiBv cHRpb24gb2YgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFuZD4uIFdoZW4gdGhpcyBvcHRpb24KLSAg ICBpcyB1c2VkLCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11c3QgcGVy Zm9ybSB0d28gc2NhbnMgb2YgdGhlIHRhYmxlCi0gICAgZm9yIGVhY2ggaW5kZXggdGhhdCBuZWVk cyB0byBiZSByZWJ1aWx0IGFuZCB3YWl0IGZvciB0ZXJtaW5hdGlvbiBvZgotICAgIGFsbCBleGlz dGluZyB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSB1c2UgdGhlIGluZGV4Lgor ICAgIGlzIHVzZWQsIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gbXVzdCBw ZXJmb3JtIHNldmVyYWwgc3RlcHMgdG8gZW5zdXJlIGRhdGEKKyAgICBjb25zaXN0ZW5jeSB3aGls ZSBhbGxvd2luZyBub3JtYWwgb3BlcmF0aW9ucyB0byBjb250aW51ZS4KICAgICBUaGlzIG1ldGhv ZCByZXF1aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGluZGV4CiAgICAgcmVi dWlsZCBhbmQgdGFrZXMgc2lnbmlmaWNhbnRseSBsb25nZXIgdG8gY29tcGxldGUgYXMgaXQgbmVl ZHMgdG8gd2FpdAogICAgIGZvciB1bmZpbmlzaGVkIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IG1v ZGlmeSB0aGUgaW5kZXguIEhvd2V2ZXIsIHNpbmNlCkBAIC0zODgsNyArMzg3LDcgQEAgUkVJTkRF WCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+ IFssIC4uLl0gKSBdIHsgREEKICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgIDxsaXN0aXRlbT4KICAg ICAgIDxwYXJhPgotICAgICAgIEEgbmV3IHRyYW5zaWVudCBpbmRleCBkZWZpbml0aW9uIGlzIGFk ZGVkIHRvIHRoZSBjYXRhbG9nCisgICAgICAgQSBuZXcgdHJhbnNpZW50IGluZGV4IGRlZmluaXRp b24gYW5kIGFuIGF1eGlsaWFyeSBpbmRleCBhcmUgYWRkZWQgdG8gdGhlIGNhdGFsb2cKICAgICAg ICA8bGl0ZXJhbD5wZ19pbmRleDwvbGl0ZXJhbD4uICBUaGlzIGRlZmluaXRpb24gd2lsbCBiZSB1 c2VkIHRvIHJlcGxhY2UKICAgICAgICB0aGUgb2xkIGluZGV4LiAgQSA8bGl0ZXJhbD5TSEFSRSBV UERBVEUgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrIGF0CiAgICAgICAgc2Vzc2lvbiBsZXZlbCBp cyB0YWtlbiBvbiB0aGUgaW5kZXhlcyBiZWluZyByZWluZGV4ZWQgYXMgd2VsbCBhcyB0aGVpcgpA QCAtMzk4LDcgKzM5NywxNSBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAgIDxsaXN0 aXRlbT4KICAgICAgIDxwYXJhPgotICAgICAgIEEgZmlyc3QgcGFzcyB0byBidWlsZCB0aGUgaW5k ZXggaXMgZG9uZSBmb3IgZWFjaCBuZXcgaW5kZXguICBPbmNlIHRoZQorICAgICAgIFRoZSBhdXhp bGlhcnkgaW5kZXggaXMgbWFya2VkIGFzICJyZWFkeSBmb3IgaW5zZXJ0cyIsIG1ha2luZworICAg ICAgIGl0IHZpc2libGUgdG8gb3RoZXIgc2Vzc2lvbnMuIFRoaXMgaW5kZXggZWZmaWNpZW50bHkg dHJhY2tzIGFsbCBuZXcKKyAgICAgICB0dXBsZXMgZHVyaW5nIHRoZSByZWluZGV4IHByb2Nlc3Mu CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgPGxpc3RpdGVtPgorICAg ICAgPHBhcmE+CisgICAgICAgVGhlIG5ldyBtYWluIGluZGV4IGlzIGJ1aWx0IGJ5IHNjYW5uaW5n IHRoZSB0YWJsZS4gIE9uY2UgdGhlCiAgICAgICAgaW5kZXggaXMgYnVpbHQsIGl0cyBmbGFnIDxs aXRlcmFsPnBnX2luZGV4LmluZGlzcmVhZHk8L2xpdGVyYWw+IGlzCiAgICAgICAgc3dpdGNoZWQg dG8gPHF1b3RlPnRydWU8L3F1b3RlPiB0byBtYWtlIGl0IHJlYWR5IGZvciBpbnNlcnRzLCBtYWtp bmcgaXQKICAgICAgICB2aXNpYmxlIHRvIG90aGVyIHNlc3Npb25zIG9uY2UgdGhlIHRyYW5zYWN0 aW9uIHRoYXQgcGVyZm9ybWVkIHRoZSBidWlsZApAQCAtNDA5LDkgKzQxNiw5IEBAIFJFSU5ERVgg WyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBb LCAuLi5dICkgXSB7IERBCiAKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Ci0gICAgICAg VGhlbiBhIHNlY29uZCBwYXNzIGlzIHBlcmZvcm1lZCB0byBhZGQgdHVwbGVzIHRoYXQgd2VyZSBh ZGRlZCB3aGlsZSB0aGUKLSAgICAgICBmaXJzdCBwYXNzIHdhcyBydW5uaW5nLiAgVGhpcyBzdGVw IGlzIGFsc28gZG9uZSBpbiBhIHNlcGFyYXRlCi0gICAgICAgdHJhbnNhY3Rpb24gZm9yIGVhY2gg aW5kZXguCisgICAgICAgQSB2YWxpZGF0aW9uIHBoYXNlIG1lcmdlcyBhbnkgbWlzc2luZyBlbnRy aWVzIGZyb20gdGhlIGF1eGlsaWFyeSBpbmRleAorICAgICAgIGludG8gdGhlIG1haW4gaW5kZXgs IGVuc3VyaW5nIGFsbCBjb25jdXJyZW50IGNoYW5nZXMgYXJlIGNhcHR1cmVkLgorICAgICAgIFRo aXMgc3RlcCBpcyBhbHNvIGRvbmUgaW4gYSBzZXBhcmF0ZSB0cmFuc2FjdGlvbiBmb3IgZWFjaCBp bmRleC4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KIApAQCAtNDI4LDcgKzQzNSw3 IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3Jl cGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBh cmE+Ci0gICAgICAgVGhlIG9sZCBpbmRleGVzIGhhdmUgPGxpdGVyYWw+cGdfaW5kZXguaW5kaXNy ZWFkeTwvbGl0ZXJhbD4gc3dpdGNoZWQgdG8KKyAgICAgICBUaGUgb2xkIGFuZCBhdXhpbGlhcnkg aW5kZXhlcyBoYXZlIDxsaXRlcmFsPnBnX2luZGV4LmluZGlzcmVhZHk8L2xpdGVyYWw+IHN3aXRj aGVkIHRvCiAgICAgICAgPHF1b3RlPmZhbHNlPC9xdW90ZT4gdG8gcHJldmVudCBhbnkgbmV3IHR1 cGxlIGluc2VydGlvbnMsIGFmdGVyIHdhaXRpbmcKICAgICAgICBmb3IgcnVubmluZyBxdWVyaWVz IHRoYXQgbWlnaHQgcmVmZXJlbmNlIHRoZSBvbGQgaW5kZXggdG8gY29tcGxldGUuCiAgICAgICA8 L3BhcmE+CkBAIC00MzYsNyArNDQzLDcgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgREEKIAogICAg ICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBUaGUgb2xkIGluZGV4ZXMgYXJlIGRy b3BwZWQuICBUaGUgPGxpdGVyYWw+U0hBUkUgVVBEQVRFCisgICAgICAgVGhlIG9sZCBhbmQgYXV4 aWxpYXJ5IGluZGV4ZXMgYXJlIGRyb3BwZWQuICBUaGUgPGxpdGVyYWw+U0hBUkUgVVBEQVRFCiAg ICAgICAgRVhDTFVTSVZFPC9saXRlcmFsPiBzZXNzaW9uIGxvY2tzIGZvciB0aGUgaW5kZXhlcyBh bmQgdGhlIHRhYmxlIGFyZQogICAgICAgIHJlbGVhc2VkLgogICAgICAgPC9wYXJhPgpAQCAtNDQ3 LDExICs0NTQsMTEgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgREEKICAgIDxwYXJhPgogICAgIElm IGEgcHJvYmxlbSBhcmlzZXMgd2hpbGUgcmVidWlsZGluZyB0aGUgaW5kZXhlcywgc3VjaCBhcyBh CiAgICAgdW5pcXVlbmVzcyB2aW9sYXRpb24gaW4gYSB1bmlxdWUgaW5kZXgsIHRoZSA8Y29tbWFu ZD5SRUlOREVYPC9jb21tYW5kPgotICAgIGNvbW1hbmQgd2lsbCBmYWlsIGJ1dCBsZWF2ZSBiZWhp bmQgYW4gPHF1b3RlPmludmFsaWQ8L3F1b3RlPiBuZXcgaW5kZXggaW4gYWRkaXRpb24gdG8KLSAg ICB0aGUgcHJlLWV4aXN0aW5nIG9uZS4gVGhpcyBpbmRleCB3aWxsIGJlIGlnbm9yZWQgZm9yIHF1 ZXJ5aW5nIHB1cnBvc2VzCi0gICAgYmVjYXVzZSBpdCBtaWdodCBiZSBpbmNvbXBsZXRlOyBob3dl dmVyIGl0IHdpbGwgc3RpbGwgY29uc3VtZSB1cGRhdGUKKyAgICBjb21tYW5kIHdpbGwgZmFpbCBi dXQgbGVhdmUgYmVoaW5kIGFuIDxxdW90ZT5pbnZhbGlkPC9xdW90ZT4gbmV3IGluZGV4IGFuZCBp dHMgYXV4aWxpYXJ5IGluZGV4IGluIGFkZGl0aW9uIHRvCisgICAgdGhlIHByZS1leGlzdGluZyBv bmUuIFRoZXNlIGluZGV4ZXMgd2lsbCBiZSBpZ25vcmVkIGZvciBxdWVyeWluZyBwdXJwb3Nlcwor ICAgIGJlY2F1c2UgdGhleSBtaWdodCBiZSBpbmNvbXBsZXRlOyBob3dldmVyIHRoZXkgd2lsbCBz dGlsbCBjb25zdW1lIHVwZGF0ZQogICAgIG92ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9uPnBzcWw8 L2FwcGxpY2F0aW9uPiA8Y29tbWFuZD5cZDwvY29tbWFuZD4gY29tbWFuZCB3aWxsIHJlcG9ydAot ICAgIHN1Y2ggYW4gaW5kZXggYXMgPGxpdGVyYWw+SU5WQUxJRDwvbGl0ZXJhbD46CisgICAgc3Vj aCBpbmRleGVzIGFzIDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+OgogCiA8cHJvZ3JhbWxpc3Rp bmc+CiBwb3N0Z3Jlcz0jIFxkIHRhYgpAQCAtNDYyLDEyICs0NjksMTQgQEAgcG9zdGdyZXM9IyBc ZCB0YWIKIEluZGV4ZXM6CiAgICAgImlkeCIgYnRyZWUgKGNvbCkKICAgICAiaWR4X2NjbmV3IiBi dHJlZSAoY29sKSBJTlZBTElECisgICAgImlkeF9jY2F1eCIgc3RpciAoY29sKSBJTlZBTElECisK IDwvcHJvZ3JhbWxpc3Rpbmc+CiAKICAgICBJZiB0aGUgaW5kZXggbWFya2VkIDxsaXRlcmFsPklO VkFMSUQ8L2xpdGVyYWw+IGlzIHN1ZmZpeGVkCi0gICAgPGxpdGVyYWw+X2NjbmV3PC9saXRlcmFs PiwgdGhlbiBpdCBjb3JyZXNwb25kcyB0byB0aGUgdHJhbnNpZW50CisgICAgPGxpdGVyYWw+X2Nj bmV3PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5fY2NhdXg8L2xpdGVyYWw+LCB0aGVuIGl0IGNvcnJl c3BvbmRzIHRvIHRoZSB0cmFuc2llbnQgb3IgYXV4aWxpYXJ5CiAgICAgaW5kZXggY3JlYXRlZCBk dXJpbmcgdGhlIGNvbmN1cnJlbnQgb3BlcmF0aW9uLCBhbmQgdGhlIHJlY29tbWVuZGVkCi0gICAg cmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3AgaXQgdXNpbmcgPGxpdGVyYWw+RFJPUCBJTkRFWDwv bGl0ZXJhbD4sCisgICAgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3AgdGhlc2UgaW5kZXhlcyB1 c2luZyA8bGl0ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiwKICAgICB0aGVuIGF0dGVtcHQgPGNv bW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGFnYWluLgogICAgIElmIHRoZSBp bnZhbGlkIGluZGV4IGlzIGluc3RlYWQgc3VmZml4ZWQgPGxpdGVyYWw+X2Njb2xkPC9saXRlcmFs PiwKICAgICBpdCBjb3JyZXNwb25kcyB0byB0aGUgb3JpZ2luYWwgaW5kZXggd2hpY2ggY291bGQg bm90IGJlIGRyb3BwZWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFE TUUuSE9UIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVAppbmRleCA4MjlkYWQx MTk0ZS4uNmY3MThmZWI2ZDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JF QURNRS5IT1QKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVApAQCAtMzc1 LDYgKzM3NSwxMSBAQCBjb25zdHJhaW50IG9uIHdoaWNoIHVwZGF0ZXMgY2FuIGJlIEhPVC4gIE90 aGVyIHRyYW5zYWN0aW9ucyBtdXN0IGluY2x1ZGUKIHN1Y2ggYW4gaW5kZXggd2hlbiBkZXRlcm1p bmluZyBIT1Qtc2FmZXR5IG9mIHVwZGF0ZXMsIGV2ZW4gdGhvdWdoIHRoZXkKIG11c3QgaWdub3Jl IGl0IGZvciBib3RoIGluc2VydGlvbiBhbmQgc2VhcmNoaW5nIHB1cnBvc2VzLgogCitBbHNvLCBz cGVjaWFsIGF1eGlsaWFyeSBpbmRleCBpcyBjcmVhdGVkIHRoZSBzYW1lIHdheS4gSXQgbWFya2Vk IGFzCisicmVhZHkgZm9yIGluc2VydHMiIHdpdGhvdXQgYW55IGFjdHVhbCB0YWJsZSBzY2FuLiBJ dHMgcHVycG9zZSBpcyBjb2xsZWN0CituZXcgdHVwbGVzIGluc2VydGVkIGludG8gdGFibGUgd2hp bGUgb3VyIHRhcmdldCBpbmRleCBpcyBzdGlsbCAibm90IHJlYWR5Citmb3IgaW5zZXJ0cyIKKwog V2UgbXVzdCBkbyB0aGlzIHRvIGF2b2lkIG1ha2luZyBpbmNvcnJlY3QgaW5kZXggZW50cmllcy4g IEZvciBleGFtcGxlLAogc3VwcG9zZSB3ZSBhcmUgYnVpbGRpbmcgYW4gaW5kZXggb24gY29sdW1u IFggYW5kIHdlIG1ha2UgYW4gaW5kZXggZW50cnkgZm9yCiBhIG5vbi1IT1QgdHVwbGUgd2l0aCBY PTEuICBUaGVuIHNvbWUgb3RoZXIgYmFja2VuZCwgdW5hd2FyZSB0aGF0IFggaXMgYW4KQEAgLTM5 NCwxMCArMzk5LDEwIEBAIEFzIGFib3ZlLCB3ZSBwb2ludCB0aGUgaW5kZXggZW50cnkgYXQgdGhl IHJvb3Qgb2YgdGhlIEhPVC11cGRhdGUgY2hhaW4gYnV0IHdlCiB1c2UgdGhlIGtleSB2YWx1ZSBm cm9tIHRoZSBsaXZlIHR1cGxlLgogCiBXZSBtYXJrIHRoZSBpbmRleCBvcGVuIGZvciBpbnNlcnRz IChidXQgc3RpbGwgbm90IHJlYWR5IGZvciByZWFkcykgdGhlbgotd2UgYWdhaW4gd2FpdCBmb3Ig dHJhbnNhY3Rpb25zIHdoaWNoIGhhdmUgdGhlIHRhYmxlIG9wZW4uICBUaGVuIHdlIHRha2UKLWEg c2Vjb25kIHJlZmVyZW5jZSBzbmFwc2hvdCBhbmQgdmFsaWRhdGUgdGhlIGluZGV4LiAgVGhpcyBz ZWFyY2hlcyBmb3IKLXR1cGxlcyBtaXNzaW5nIGZyb20gdGhlIGluZGV4LCBhbmQgaW5zZXJ0cyBh bnkgbWlzc2luZyBvbmVzLiAgQWdhaW4sCi10aGUgaW5kZXggZW50cmllcyBoYXZlIHRvIGhhdmUg VElEcyBlcXVhbCB0byBIT1QtY2hhaW4gcm9vdCBUSURzLCBidXQKK3dlIGFnYWluIHdhaXQgZm9y IHRyYW5zYWN0aW9ucyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB2YWxpZGF0ZQor dGhlIGluZGV4LiAgVGhpcyBzZWFyY2hlcyBmb3IgdHVwbGVzIG1pc3NpbmcgZnJvbSB0aGUgaW5k ZXggaW4gYXV4aWxpYXJ5CitpbmRleCwgYW5kIGluc2VydHMgYW55IG1pc3Npbmcgb25lcyBpZiB0 aGVtIHZpc2libGUgdG8gcmVmZXJlbmNlIHNuYXBzaG90LgorQWdhaW4sIHRoZSBpbmRleCBlbnRy aWVzIGhhdmUgdG8gaGF2ZSBUSURzIGVxdWFsIHRvIEhPVC1jaGFpbiByb290IFRJRHMsIGJ1dAog dGhlIHZhbHVlIHRvIGJlIGluc2VydGVkIGlzIHRoZSBvbmUgZnJvbSB0aGUgbGl2ZSB0dXBsZS4K IAogVGhlbiB3ZSB3YWl0IHVudGlsIGV2ZXJ5IHRyYW5zYWN0aW9uIHRoYXQgY291bGQgaGF2ZSBh IHNuYXBzaG90IG9sZGVyIHRoYW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxl ci5jCmluZGV4IDQyNzQ4YzAxYTQ5Li4zY2FjMTIyZjdhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAic3RvcmFn ZS9idWZwYWdlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wcmVkaWNhdGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9y YWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUgInV0 aWxzL2J1aWx0aW5zLmgiCkBAIC0xNzgxLDI0MyArMTc4Miw0MDUgQEAgaGVhcGFtX2luZGV4X2J1 aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXJldHVybiByZWx0dXBsZXM7 CiB9CiAKKy8qCisgKiBDYWxjdWxhdGUgc2V0IGRpZmZlcmVuY2UgKHJlbGF0aXZlIGNvbXBsZW1l bnQpIG9mIG1haW4gYW5kIGF1eAorICogc2V0cy4KKyAqCisgKiBBbGwgcmVjb3JkcyB3aGljaCBh cmUgcHJlc2VudCBpbiBhdXhsaWFyeSB0dXBsZXNvcnQgYnV0IG5vdCBpcworICogbWFpbiBhcmUg YWRkZWQgdG8gdGhlIHN0b3JlLgorICoKKyAqIEluIHNldCB0aGVvcnkgbm90YXRpb24gc3RvcmUg PSBhdXggLSBtYWluIG9yIHN0b3JlID0gYXV4IC8gbWFpbi4KKyAqCisgKiByZXR1cm5zIG51bWJl ciBvZiBpdGVtcyBhZGRlZCB0byBzdG9yZQorICovCitzdGF0aWMgaW50CitoZWFwYW1faW5kZXhf dmFsaWRhdGVfdHVwbGVzb3J0X2RpZmZlcmVuY2UoVHVwbGVzb3J0c3RhdGUgICptYWluLAorCQkJ CQkJCQkJCSAgIFR1cGxlc29ydHN0YXRlICAqYXV4LAorCQkJCQkJCQkJCSAgIFR1cGxlc3RvcmVz dGF0ZSAqc3RvcmUpCit7CisJaW50CQkJCW51bSA9IDA7CisJLyogc3RhdGUgdmFyaWFibGVzIGZv ciB0aGUgbWVyZ2UgKi8KKwlJdGVtUG9pbnRlciAJaW5kZXhjdXJzb3IgPSBOVUxMLAorCQkJCQlh dXhpbmRleGN1cnNvciA9IE5VTEw7CisJSXRlbVBvaW50ZXJEYXRhIGRlY29kZWQsCisJCQkJCWF1 eGRlY29kZWQ7CisJYm9vbAkJCXR1cGxlc29ydF9lbXB0eSA9IGZhbHNlLAorCQkJCQlhdXh0dXBs ZXNvcnRfZW1wdHkgPSBmYWxzZTsKKworCS8qIEluaXRpYWxpemUgcG9pbnRlcnMuICovCisJSXRl bVBvaW50ZXJTZXRJbnZhbGlkKCZkZWNvZGVkKTsKKwlJdGVtUG9pbnRlclNldEludmFsaWQoJmF1 eGRlY29kZWQpOworCisJLyoKKwkgKiBNYWluIGxvb3A6IHdlIHN0ZXAgdGhyb3VnaCB0aGUgYXV4 aWxpYXJ5IHNvcnQgKGF1eFN0YXRlLT50dXBsZXNvcnQpLAorCSAqIHdoaWNoIGhvbGRzIFRJRHMg dGhhdCBtdXN0IGNvbXBhcmVkIHRvIHRob3NlIGZyb20gdGhlICJtYWluIiBzb3J0CisJICogKHN0 YXRlLT50dXBsZXNvcnQpLgorCSAqLworCXdoaWxlICghYXV4dHVwbGVzb3J0X2VtcHR5KQorCXsK KwkJRGF0dW0JCXRzX3ZhbDsKKwkJYm9vbAkJdHNfaXNudWxsOworCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOworCisJCS8qCisJCSogQXR0ZW1wdCB0byBmZXRjaCB0aGUgbmV4dCBUSUQgZnJvbSB0 aGUgYXV4aWxpYXJ5IHNvcnQuIElmIGl0J3MKKwkJKiBlbXB0eSwgd2Ugc2V0IGF1eGluZGV4Y3Vy c29yIHRvIE5VTEwuCisJCSovCisJCWF1eHR1cGxlc29ydF9lbXB0eSA9ICF0dXBsZXNvcnRfZ2V0 ZGF0dW0oYXV4LCB0cnVlLAorCQkJCQkJCQkJCQkJIGZhbHNlLCAmdHNfdmFsLCAmdHNfaXNudWxs LAorCQkJCQkJCQkJCQkJIE5VTEwpOworCQlBc3NlcnQoYXV4dHVwbGVzb3J0X2VtcHR5IHx8ICF0 c19pc251bGwpOworCQlpZiAoIWF1eHR1cGxlc29ydF9lbXB0eSkKKwkJeworCQkJaXRlbXB0cl9k ZWNvZGUoJmF1eGRlY29kZWQsIERhdHVtR2V0SW50NjQodHNfdmFsKSk7CisJCQlhdXhpbmRleGN1 cnNvciA9ICZhdXhkZWNvZGVkOworCQl9CisJCWVsc2UKKwkJeworCQkJYXV4aW5kZXhjdXJzb3Ig PSBOVUxMOworCQl9CisKKwkJLyoKKwkJKiBJZiB0aGUgYXV4aWxpYXJ5IHNvcnQgaXMgbm90IHll dCBlbXB0eSwgd2Ugbm93IHRyeSB0byBzeW5jaHJvbml6ZQorCQkqIHRoZSAibWFpbiIgc29ydCBj dXJzb3IgKGluZGV4Y3Vyc29yKSB3aXRoIGF1eGluZGV4Y3Vyc29yLiBXZSBhZHZhbmNlCisJCSog dGhlIG1haW4gc29ydCBjdXJzb3IgdW50aWwgd2UndmUgcmVhY2hlZCBvciBwYXNzZWQgdGhlIGF1 eGlsaWFyeSBUSUQuCisJCSovCisJCWlmICghYXV4dHVwbGVzb3J0X2VtcHR5KQorCQl7CisJCQkv KgorCQkJICogTW92ZSB0aGUgbWFpbiBzb3J0IGZvcndhcmQgd2hpbGU6CisJCQkgKiAgICgxKSBJ dCdzIG5vdCBleGhhdXN0ZWQgKHR1cGxlc29ydF9lbXB0eSA9PSBmYWxzZSksIGFuZAorCQkJICog ICAoMikgRWl0aGVyIGluZGV4Y3Vyc29yIGlzIE5VTEwgKGZpcnN0IGl0ZXJhdGlvbikgb3IKKwkJ CSAqICAgICAgIGluZGV4Y3Vyc29yIDwgYXV4aW5kZXhjdXJzb3IgaW4gVElEIG9yZGVyLgorCQkJ ICovCisJCQl3aGlsZSAoIXR1cGxlc29ydF9lbXB0eSAmJiAoaW5kZXhjdXJzb3IgPT0gTlVMTCB8 fCAvKiBudWxsIG9uIGZpcnN0IHRpbWUgaGVyZSAqLworCQkJCQkJSXRlbVBvaW50ZXJDb21wYXJl KGluZGV4Y3Vyc29yLCBhdXhpbmRleGN1cnNvcikgPCAwKSkKKwkJCXsKKwkJCQkvKgorCQkJCSAq IEdldCB0aGUgbmV4dCBUSUQgZnJvbSB0aGUgbWFpbiBzb3J0LiBJZiBpdCdzIGVtcHR5LAorCQkJ CSAqIHdlIHNldCBpbmRleGN1cnNvciB0byBOVUxMLgorCQkJCSAqLworCQkJCXR1cGxlc29ydF9l bXB0eSA9ICF0dXBsZXNvcnRfZ2V0ZGF0dW0obWFpbiwgdHJ1ZSwKKwkJCQkJCQkJCQkJCQkgIGZh bHNlLCAmdHNfdmFsLCAmdHNfaXNudWxsLAorCQkJCQkJCQkJCQkJCSAgTlVMTCk7CisJCQkJQXNz ZXJ0KHR1cGxlc29ydF9lbXB0eSB8fCAhdHNfaXNudWxsKTsKKworCQkJCWlmICghdHVwbGVzb3J0 X2VtcHR5KQorCQkJCXsKKwkJCQkJaXRlbXB0cl9kZWNvZGUoJmRlY29kZWQsIERhdHVtR2V0SW50 NjQodHNfdmFsKSk7CisJCQkJCWluZGV4Y3Vyc29yID0gJmRlY29kZWQ7CisJCQkJfQorCQkJCWVs c2UKKwkJCQl7CisJCQkJCWluZGV4Y3Vyc29yID0gTlVMTDsKKwkJCQl9CisKKwkJCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCQkJfQorCisJCQkvKgorCQkJICogTm93LCBpZiBlaXRoZXI6CisJ CQkgKiAgLSB0aGUgbWFpbiBzb3J0IGlzIGVtcHR5LCBvcgorCQkJICogIC0gaW5kZXhjdXJzb3Ig PiBhdXhpbmRleGN1cnNvciwKKwkJCSAqCisJCQkgKiB0aGVuIGF1eGluZGV4Y3Vyc29yIGlkZW50 aWZpZXMgYSBUSUQgdGhhdCBkb2Vzbid0IGFwcGVhciBpbgorCQkJICogdGhlIG1haW4gc29ydC4g V2UgbGlrZWx5IG5lZWQgdG8gaW5zZXJ0IGl0CisJCQkgKiBpbnRvIHRoZSB0YXJnZXQgaW5kZXgg aWYgaXTigJlzIHZpc2libGUgaW4gdGhlIGhlYXAuCisJCQkgKi8KKwkJCWlmICh0dXBsZXNvcnRf ZW1wdHkgfHwgSXRlbVBvaW50ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCBhdXhpbmRleGN1cnNvcikg PiAwKQorCQkJeworCQkJCXR1cGxlc3RvcmVfcHV0ZGF0dW0oc3RvcmUsIEludDY0R2V0RGF0dW0o aXRlbXB0cl9lbmNvZGUoYXV4aW5kZXhjdXJzb3IpKSk7CisJCQkJbnVtKys7CisJCQl9CisJCX0K Kwl9CisKKwlyZXR1cm4gbnVtOworfQorCit0eXBlZGVmIHN0cnVjdCBWYWxpZGF0ZUluZGV4U2Nh blN0YXRlCit7CisJVHVwbGVzdG9yZXN0YXRlCQkqc3RvcmU7CisJQmxvY2tOdW1iZXIJCQlwcmV2 X2Jsb2NrX251bWJlcjsKKwlPZmZzZXROdW1iZXIJCXByZXZfb2ZmX29mZnNldF9udW1iZXI7Cit9 IFZhbGlkYXRlSW5kZXhTY2FuU3RhdGU7CisKKy8qCisgKiBUaGlzIGlzIFJlYWRTdHJlYW1CbG9j a051bWJlckNCIGltcGxlbWVudGF0aW9uIHdoaWNoIHdvcmtzIGFzIGZvbGxvd3M6CisgKgorICog MSkgSXQgaXRlcmF0ZXMgb3ZlciBhIHNvcnRlZCB0dXBsZXN0b3JlLCB3aGVyZSBlYWNoIGVsZW1l bnQgaXMgYW4gZW5jb2RlZAorICogICAgSXRlbVBvaW50ZXIKKyAqCisgKiAyKSBJdCByZXR1cm5z IHRoZSBjdXJyZW50IEJsb2NrTnVtYmVyIGFuZCBjb2xsZWN0cyBhbGwgT2Zmc2V0TnVtYmVycwor ICogICAgZm9yIHRoYXQgYmxvY2sgaW4gcGVyX2J1ZmZlcl9kYXRhLgorICoKKyAqIDMpIE9uY2Ug dGhlIGNvZGUgZW5jb3VudGVycyBhIG5ldyBCbG9ja051bWJlciwgaXQgc3RvcHMgcmVhZGluZyBt b3JlCisgKiAgICBvZmZzZXRzIGFuZCBzYXZlcyB0aGUgT2Zmc2V0TnVtYmVyIG9mIHRoZSBuZXcg YmxvY2sgZm9yIHRoZSBuZXh0IGNhbGwuCisgKgorICogNCkgVGhlIGxpc3Qgb2Ygb2Zmc2V0cyBm b3IgYSBibG9jayBpcyBhbHdheXMgdGVybWluYXRlZCB3aXRoIEludmFsaWRPZmZzZXROdW1iZXIu CisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZSByZXBlYXRlZGx5IGNhbGxl ZCwgZWFjaCB0aW1lIHJldHVybmluZworICogdGhlIG5leHQgYmxvY2sgYW5kIGl0cyBjb3JyZXNw b25kaW5nIHNldCBvZiBvZmZzZXRzLgorICovCitzdGF0aWMgQmxvY2tOdW1iZXIKK2hlYXBhbV9p bmRleF92YWxpZGF0ZV9zY2FuX3JlYWRfc3RyZWFtX25leHQoCisJCQkJCQkJCSAgUmVhZFN0cmVh bSAqc3RyZWFtLAorCQkJCQkJCQkgIHZvaWQgKnZvaWRfY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLAor CQkJCQkJCQkgIHZvaWQgKnZvaWRfcGVyX2J1ZmZlcl9kYXRhCisJCQkJCQkJCSAgKQoreworCWJv b2wgc2hvdWRfZnJlZTsKKwlEYXR1bSBkYXR1bTsKKwlCbG9ja051bWJlciByZXN1bHQgPSBJbnZh bGlkQmxvY2tOdW1iZXI7CisJaW50IGkgPSAwOworCisJLyoKKwkgKiBSZXRyaWV2ZSB0aGUgc3Bl Y2lhbGl6ZWQgY2FsbGJhY2sgc3RhdGUgYW5kIHRoZSBvdXRwdXQgYnVmZmVyLgorCSAqIGNhbGxi YWNrX3ByaXZhdGVfZGF0YSBrZWVwcyB0cmFjayBvZiB0aGUgcHJldmlvdXMgYmxvY2sgYW5kIG9m ZnNldAorCSAqIGZyb20gYSBwcmlvciBpbnZvY2F0aW9uLCBpZiBhbnkuCisJICovCisJVmFsaWRh dGVJbmRleFNjYW5TdGF0ZSAqY2FsbGJhY2tfcHJpdmF0ZV9kYXRhID0gdm9pZF9jYWxsYmFja19w cml2YXRlX2RhdGE7CisJT2Zmc2V0TnVtYmVyICpwZXJfYnVmZmVyX2RhdGEgPSB2b2lkX3Blcl9i dWZmZXJfZGF0YTsKKworCS8qCisJICogSWYgdGhlcmUgaXMgYSAibGVmdG92ZXIiIG9mZnNldCBu dW1iZXIgZnJvbSB0aGUgcHJldmlvdXMgaW52b2NhdGlvbiwKKwkgKiBpdCBtZWFucyB3ZSBoYWQg c3dpdGNoZWQgdG8gYSBuZXcgYmxvY2sgaW4gdGhlIG1pZGRsZSBvZiB0aGUgbGFzdCBjYWxsLgor CSAqIFdlIHBsYWNlIHRoYXQgbGVmdG92ZXIgb2Zmc2V0IG51bWJlciBpbnRvIHRoZSBidWZmZXIg Zmlyc3QuCisJICovCisJaWYgKGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9vZmZfb2Zmc2V0 X251bWJlciAhPSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQorCXsKKwkJQXNzZXJ0KGNhbGxiYWNrX3By aXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXIgIT0gSW52YWxpZEJsb2NrTnVtYmVyKTsKKwkJ LyoKKwkJICogJ3Jlc3VsdCcgaXMgdGhlIGJsb2NrIG51bWJlciB0byByZXR1cm4uIFdlIHNldCBp dCB0byB0aGUgYmxvY2sKKwkJICogZnJvbSB0aGUgcHJldmlvdXMgbGVmdG92ZXIgb2Zmc2V0Lgor CQkgKi8KKwkJcmVzdWx0ID0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJl cjsKKwkJLyogUGxhY2UgbGVmdG92ZXIgb2Zmc2V0IG51bWJlciBpbiB0aGUgb3V0cHV0IGJ1ZmZl ci4gKi8KKwkJcGVyX2J1ZmZlcl9kYXRhW2krK10gPSBjYWxsYmFja19wcml2YXRlX2RhdGEtPnBy ZXZfb2ZmX29mZnNldF9udW1iZXI7CisJCS8qCisJCSAqIENsZWFyIHRoZSBsZWZ0b3ZlciBvZmZz ZXQgbnVtYmVyIHNvIGl0IHdvbid0IGJlIHJldXNlZCB1bmxlc3MKKwkJICogd2UgZW5jb3VudGVy IGFub3RoZXIgYmxvY2sgY2hhbmdlLgorCQkgKi8KKwkJY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5w cmV2X29mZl9vZmZzZXRfbnVtYmVyID0gSW52YWxpZE9mZnNldE51bWJlcjsKKwl9CisKKwkvKgor CSAqIFJlYWQgZnJvbSB0aGUgdHVwbGVzdG9yZSB1bnRpbCB3ZSBlaXRoZXIgcnVuIG91dCBvZiB0 dXBsZXMgb3Igd2UKKwkgKiBlbmNvdW50ZXIgYSBibG9jayBjaGFuZ2UuIEZvciBlYWNoIHR1cGxl OgorCSAqCisJICogICAxKSBEZWNvZGUgaXRzIGJsb2NrL29mZnNldCBmcm9tIHRoZSBEYXR1bS4K KwkgKiAgIDIpIElmIGl0J3MgdGhlIGZpcnN0IHRpbWUgaW4gdGhpcyBjYWxsIChwcmV2X2Jsb2Nr X251bWJlciA9PSBJbnZhbGlkQmxvY2tOdW1iZXIpLAorCSAqICAgICAgaW5pdGlhbGl6ZSBwcmV2 X2Jsb2NrX251bWJlci4KKwkgKiAgIDMpIElmIHRoZSBibG9jayBudW1iZXIgbWF0Y2hlcyB0aGUg Y3VycmVudCBibG9jaywgY29sbGVjdCB0aGUgb2Zmc2V0LgorCSAqICAgNCkgSWYgdGhlIGJsb2Nr IG51bWJlciBkaWZmZXJzLCBzYXZlIHRoYXQgb2Zmc2V0IGFzIGxlZnRvdmVyIGFuZCBicmVhawor CSAqICAgICAgc28gdGhhdCB0aGUgbmV4dCBjYWxsIGNhbiBoYW5kbGUgdGhlIG5ldyBibG9jay4K KwkgKi8KKwl3aGlsZSAodHVwbGVzdG9yZV9nZXRkYXR1bShjYWxsYmFja19wcml2YXRlX2RhdGEt PnN0b3JlLCB0cnVlLCAmc2hvdWRfZnJlZSwgJmRhdHVtKSkKKwl7CisJCUJsb2NrTnVtYmVyIG5l eHRfYmxvY2tfbnVtYmVyOworCQlJdGVtUG9pbnRlckRhdGEgbmV4dF9kYXRhOworCisJCS8qIERl Y29kZSB0aGUgZGF0dW0gaW50byBhbiBJdGVtUG9pbnRlciAoYmxvY2sgKyBvZmZzZXQpLiAqLwor CQlpdGVtcHRyX2RlY29kZSgmbmV4dF9kYXRhLCBEYXR1bUdldEludDY0KGRhdHVtKSk7CisJCW5l eHRfYmxvY2tfbnVtYmVyID0gSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmbmV4dF9kYXRhKTsK KworCQkvKgorCQkgKiBJZiB3ZSBoYXZlbid0IHNldCBhIGJsb2NrIG51bWJlciB5ZXQgdGhpcyBy b3VuZCwgaW5pdGlhbGl6ZSBpdAorCQkgKiB1c2luZyB0aGUgZmlyc3QgdHVwbGUgd2UgcmVhZC4K KwkJICovCisJCWlmIChjYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVyID09 IEludmFsaWRCbG9ja051bWJlcikKKwkJCWNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9ibG9j a19udW1iZXIgPSBuZXh0X2Jsb2NrX251bWJlcjsKKworCQkvKgorCQkgKiBBbHdheXMgc2V0IHRo ZSByZXN1bHQgdG8gYmUgdGhlICJjdXJyZW50IiBibG9jayBudW1iZXIKKwkJICogd2UgYXJlIGZp bGxpbmcgb2Zmc2V0cyBmb3IuCisJCSAqLworCQlyZXN1bHQgPSBjYWxsYmFja19wcml2YXRlX2Rh dGEtPnByZXZfYmxvY2tfbnVtYmVyOworCisJCS8qCisJCSAqIElmIHRoaXMgdHVwbGUgaXMgZnJv bSB0aGUgc2FtZSBibG9jaywganVzdCBzdG9yZSBpdHMgb2Zmc2V0CisJCSAqIGluIG91ciBwZXJf YnVmZmVyX2RhdGEgYXJyYXkuCisJCSAqLworCQlpZiAobmV4dF9ibG9ja19udW1iZXIgPT0gY2Fs bGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJlcikKKwkJeworCQkJcGVyX2J1ZmZl cl9kYXRhW2krK10gPSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmbmV4dF9kYXRhKTsKKwor CQkJLyogRnJlZSB0aGUgZGF0dW0gaWYgbmVlZGVkLiAqLworCQkJaWYgKHNob3VkX2ZyZWUpCisJ CQkJcGZyZWUoRGF0dW1HZXRQb2ludGVyKGRhdHVtKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkv KgorCQkJICogSWYgdGhlIGJsb2NrIGp1c3QgY2hhbmdlZCwgc3RvcmUgdGhlIG9mZnNldCBvZiB0 aGUgbmV3IGJsb2NrCisJCQkgKiBhcyBsZWZ0b3ZlciBmb3IgdGhlIG5leHQgaW52b2NhdGlvbiBh bmQgYnJlYWsgb3V0LgorCQkJICovCisJCQljYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxv Y2tfbnVtYmVyID0gbmV4dF9ibG9ja19udW1iZXI7CisJCQljYWxsYmFja19wcml2YXRlX2RhdGEt PnByZXZfb2ZmX29mZnNldF9udW1iZXIgPSAgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJm5l eHRfZGF0YSk7CisKKwkJCS8qIEZyZWUgdGhlIGRhdHVtIGlmIG5lZWRlZC4gKi8KKwkJCWlmIChz aG91ZF9mcmVlKQorCQkJCXBmcmVlKERhdHVtR2V0UG9pbnRlcihkYXR1bSkpOworCisJCQkvKiBC cmVhayB0byBsZXQgdGhlIG5leHQgY2FsbCBoYW5kbGUgdGhlIG5ldyBibG9jay4gKi8KKwkJCWJy ZWFrOworCQl9CisJfQorCisJLyoKKwkgKiBUZXJtaW5hdGUgdGhlIGxpc3Qgb2Ygb2Zmc2V0cyBm b3IgdGhpcyBibG9jayB3aXRoIGFuIEludmFsaWRPZmZzZXROdW1iZXIuCisJICovCisJcGVyX2J1 ZmZlcl9kYXRhW2ldID0gSW52YWxpZE9mZnNldE51bWJlcjsKKwlyZXR1cm4gcmVzdWx0OworfQor CiBzdGF0aWMgdm9pZAogaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJl bGF0aW9uLAogCQkJCQkJICAgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJCQkJCSAgIEluZGV4 SW5mbyAqaW5kZXhJbmZvLAogCQkJCQkJICAgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkgICBW YWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlKQorCQkJCQkJICAgVmFsaWRhdGVJbmRleFN0YXRlICpz dGF0ZSwKKwkJCQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4U3RhdGUpCiB7Ci0JVGFibGVT Y2FuRGVzYyBzY2FuOwotCUhlYXBTY2FuRGVzYyBoc2NhbjsKLQlIZWFwVHVwbGUJaGVhcFR1cGxl OwogCURhdHVtCQl2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOwogCWJvb2wJCWlzbnVsbFtJTkRFWF9N QVhfS0VZU107Ci0JRXhwclN0YXRlICAqcHJlZGljYXRlOwotCVR1cGxlVGFibGVTbG90ICpzbG90 OwotCUVTdGF0ZQkgICAqZXN0YXRlOwotCUV4cHJDb250ZXh0ICplY29udGV4dDsKLQlCbG9ja051 bWJlciByb290X2Jsa25vID0gSW52YWxpZEJsb2NrTnVtYmVyOwotCU9mZnNldE51bWJlciByb290 X29mZnNldHNbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwotCWJvb2wJCWluX2luZGV4W01heEhlYXBU dXBsZXNQZXJQYWdlXTsKLQlCbG9ja051bWJlciBwcmV2aW91c19ibGtubyA9IEludmFsaWRCbG9j a051bWJlcjsKLQotCS8qIHN0YXRlIHZhcmlhYmxlcyBmb3IgdGhlIG1lcmdlICovCi0JSXRlbVBv aW50ZXIgaW5kZXhjdXJzb3IgPSBOVUxMOwotCUl0ZW1Qb2ludGVyRGF0YSBkZWNvZGVkOwotCWJv b2wJCXR1cGxlc29ydF9lbXB0eSA9IGZhbHNlOworCisJVHVwbGVUYWJsZVNsb3QgICpzbG90Owor CUVTdGF0ZQkJCSplc3RhdGU7CisJRXhwckNvbnRleHQJCSplY29udGV4dDsKKwlCdWZmZXJBY2Nl c3NTdHJhdGVneSBic3RyYXRlZ3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpOwor CisJaW50CQkJCW51bV90b19jaGVjazsKKwlUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc19mb3JfY2hl Y2s7CisJVmFsaWRhdGVJbmRleFNjYW5TdGF0ZSBjYWxsYmFja19wcml2YXRlX2RhdGE7CisKKwlC dWZmZXIgYnVmOworCU9mZnNldE51bWJlciogdHVwbGVzOworCVJlYWRTdHJlYW0gKnJlYWRfc3Ry ZWFtOworCisJLyogVXNlIDEwJSBvZiBtZW1vcnkgZm9yIHR1cGxlIHN0b3JlLiAqLworCWludAkJ c3RvcmVfd29ya19tZW1fcGFydCA9IG1haW50ZW5hbmNlX3dvcmtfbWVtIC8gMTA7CisKKwkvKgor CSAqIEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZvciB0aGUgc29ydCwgcmF0aGVyIHRoYW4g ZGlyZWN0bHkgc29ydGluZworCSAqIGl0ZW0gcG9pbnRlcnMuICBUaGlzIGNhbiBiZSBzaWduaWZp Y2FudGx5IGZhc3RlciwgcHJpbWFyaWx5IGJlY2F1c2UgVElECisJICogaXMgYSBwYXNzLWJ5LXJl ZmVyZW5jZSB0eXBlIG9uIGFsbCBwbGF0Zm9ybXMsIHdoZXJlYXMgaW50OCBpcworCSAqIHBhc3Mt YnktdmFsdWUgb24gbW9zdCBwbGF0Zm9ybXMuCisJICovCisJdHVwbGVzX2Zvcl9jaGVjayA9ICB0 dXBsZXN0b3JlX2JlZ2luX2RhdHVtKElOVDhPSUQsIGZhbHNlLCBmYWxzZSwgc3RvcmVfd29ya19t ZW1fcGFydCk7CiAKIAkvKgogCSAqIHNhbml0eSBjaGVja3MKIAkgKi8KIAlBc3NlcnQoT2lkSXNW YWxpZChpbmRleFJlbGF0aW9uLT5yZF9yZWwtPnJlbGFtKSk7CiAKLQkvKgotCSAqIE5lZWQgYW4g RVN0YXRlIGZvciBldmFsdWF0aW9uIG9mIGluZGV4IGV4cHJlc3Npb25zIGFuZCBwYXJ0aWFsLWlu ZGV4Ci0JICogcHJlZGljYXRlcy4gIEFsc28gYSBzbG90IHRvIGhvbGQgdGhlIGN1cnJlbnQgdHVw bGUuCi0JICovCisJbnVtX3RvX2NoZWNrID0gaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3R1cGxlc29y dF9kaWZmZXJlbmNlKHN0YXRlLT50dXBsZXNvcnQsCisJCQkJCQkJCQkJCQkJCSBhdXhTdGF0ZS0+ dHVwbGVzb3J0LAorCQkJCQkJCQkJCQkJCQkgdHVwbGVzX2Zvcl9jaGVjayk7CisKKwkvKiBJdCBp cyBvdXIgcmVzcG9uc2liaWxpdHkgdG8gY2xvc2UgdHVwbGUgc29ydCBhcyBmYXN0IGFzIHdlIGNh biAqLworCXR1cGxlc29ydF9lbmQoc3RhdGUtPnR1cGxlc29ydCk7CisJdHVwbGVzb3J0X2VuZChh dXhTdGF0ZS0+dHVwbGVzb3J0KTsKKworCXN0YXRlLT50dXBsZXNvcnQgPSBhdXhTdGF0ZS0+dHVw bGVzb3J0ID0gTlVMTDsKKwogCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKIAllY29u dGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKIAlzbG90ID0gTWFrZVNpbmds ZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3IoaGVhcFJlbGF0aW9uKSwKLQkJCQkJCQkJ CSZUVFNPcHNIZWFwVHVwbGUpOworCQkJCQkJCQkJJlRUU09wc0J1ZmZlckhlYXBUdXBsZSk7CiAK IAkvKiBBcnJhbmdlIGZvciBlY29udGV4dCdzIHNjYW4gdHVwbGUgdG8gYmUgdGhlIHR1cGxlIHVu ZGVyIHRlc3QgKi8KIAllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzbG90OwogCi0JLyogU2V0 IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgcHJlZGljYXRlLCBpZiBhbnkuICovCi0JcHJlZGljYXRl ID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlLCBlc3RhdGUpOworCWNh bGxiYWNrX3ByaXZhdGVfZGF0YS5wcmV2X2Jsb2NrX251bWJlciA9IEludmFsaWRCbG9ja051bWJl cjsKKwljYWxsYmFja19wcml2YXRlX2RhdGEuc3RvcmUgPSB0dXBsZXNfZm9yX2NoZWNrOworCWNh bGxiYWNrX3ByaXZhdGVfZGF0YS5wcmV2X29mZl9vZmZzZXRfbnVtYmVyID0gSW52YWxpZE9mZnNl dE51bWJlcjsKIAotCS8qCi0JICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlv bi4gIFdlIG5lZWQganVzdCB0aG9zZSB0dXBsZXMKLQkgKiBzYXRpc2Z5aW5nIHRoZSBwYXNzZWQt aW4gcmVmZXJlbmNlIHNuYXBzaG90LiAgV2UgbXVzdCBkaXNhYmxlIHN5bmNzY2FuCi0JICogaGVy ZSwgYmVjYXVzZSBpdCdzIGNyaXRpY2FsIHRoYXQgd2UgcmVhZCBmcm9tIGJsb2NrIHplcm8gZm9y d2FyZCB0bwotCSAqIG1hdGNoIHRoZSBzb3J0ZWQgVElEcy4KLQkgKi8KLQlzY2FuID0gdGFibGVf YmVnaW5zY2FuX3N0cmF0KGhlYXBSZWxhdGlvbiwJLyogcmVsYXRpb24gKi8KLQkJCQkJCQkJIHNu YXBzaG90LAkvKiBzbmFwc2hvdCAqLwotCQkJCQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8K LQkJCQkJCQkJIE5VTEwsCS8qIHNjYW4ga2V5ICovCi0JCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIg YWNjZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCSBmYWxzZSwJLyogc3luY3NjYW4gbm90IE9L ICovCi0JCQkJCQkJCSBmYWxzZSk7Ci0JaHNjYW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOworCXJl YWRfc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fTUFJTlRF TkFOQ0UgfCBSRUFEX1NUUkVBTV9VU0VfQkFUQ0hJTkcsCisJCQkJCQkJCQkJCQkJCSBic3RyYXRl Z3ksCisJCQkJCQkJCQkJCQkJCSBoZWFwUmVsYXRpb24sIE1BSU5fRk9SS05VTSwKKwkJCQkJCQkJ CQkJCQkJIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX3JlYWRfc3RyZWFtX25leHQsCisJCQkJ CQkJCQkJCQkJCSAmY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLAorCQkJCQkJCQkJCQkJCQkgKE1heEhl YXBUdXBsZXNQZXJQYWdlICsgMSkgKiBzaXplb2YoT2Zmc2V0TnVtYmVyKSk7CiAKLQlwZ3N0YXRf cHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX1NDQU5fQkxPQ0tTX1RPVEFMLAotCQkJCQkJ CQkgaHNjYW4tPnJzX25ibG9ja3MpOworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJP R1JFU1NfQ1JFQVRFSURYX1RVUExFU19UT1RBTCwgbnVtX3RvX2NoZWNrKTsKKwlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9UVVBMRVNfRE9ORSwgMCk7CiAK LQkvKgotCSAqIFNjYW4gYWxsIHR1cGxlcyBtYXRjaGluZyB0aGUgc25hcHNob3QuCi0JICovCi0J d2hpbGUgKChoZWFwVHVwbGUgPSBoZWFwX2dldG5leHQoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rp b24pKSAhPSBOVUxMKQorCXdoaWxlICgoYnVmID0gcmVhZF9zdHJlYW1fbmV4dF9idWZmZXIocmVh ZF9zdHJlYW0sICh2b2lkKikgJnR1cGxlcykpICE9IEludmFsaWRCdWZmZXIpCiAJewotCQlJdGVt UG9pbnRlciBoZWFwY3Vyc29yID0gJmhlYXBUdXBsZS0+dF9zZWxmOwotCQlJdGVtUG9pbnRlckRh dGEgcm9vdFR1cGxlOwotCQlPZmZzZXROdW1iZXIgcm9vdF9vZmZudW07CisJCUhlYXBUdXBsZURh dGEJaGVhcF90dXBsZV9kYXRhW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKKwkJaW50IGk7CisJCU9m ZnNldE51bWJlciBvZmY7CisJCUJsb2NrTnVtYmVyIGJsb2NrX251bWJlcjsKIAogCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOwogCi0JCXN0YXRlLT5odHVwcyArPSAxOworCQlMb2NrQnVmZmVyKGJ1 ZiwgQlVGRkVSX0xPQ0tfU0hBUkUpOworCQlibG9ja19udW1iZXIgPSBCdWZmZXJHZXRCbG9ja051 bWJlcihidWYpOwogCi0JCWlmICgocHJldmlvdXNfYmxrbm8gPT0gSW52YWxpZEJsb2NrTnVtYmVy KSB8fAotCQkJKGhzY2FuLT5yc19jYmxvY2sgIT0gcHJldmlvdXNfYmxrbm8pKQorCQlpID0gMDsK KwkJd2hpbGUgKChvZmYgPSB0dXBsZXNbaV0pICE9IEludmFsaWRPZmZzZXROdW1iZXIpCiAJCXsK LQkJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfU0NBTl9CTE9DS1NfRE9O RSwKLQkJCQkJCQkJCQkgaHNjYW4tPnJzX2NibG9jayk7Ci0JCQlwcmV2aW91c19ibGtubyA9IGhz Y2FuLT5yc19jYmxvY2s7CisJCQlJdGVtUG9pbnRlckRhdGEgdGlkOworCQkJYm9vbAkJYWxsX2Rl YWQsIGZvdW5kOworCQkJSXRlbVBvaW50ZXJTZXQoJnRpZCwgYmxvY2tfbnVtYmVyLCBvZmYpOwor CisJCQlmb3VuZCA9IGhlYXBfaG90X3NlYXJjaF9idWZmZXIoJnRpZCwgaGVhcFJlbGF0aW9uLCBi dWYsIHNuYXBzaG90LAorCQkJCQkJCQkJCSAgICZoZWFwX3R1cGxlX2RhdGFbaV0sICZhbGxfZGVh ZCwgdHJ1ZSk7CisJCQlpZiAoIWZvdW5kKQorCQkJCUl0ZW1Qb2ludGVyU2V0SW52YWxpZCgmaGVh cF90dXBsZV9kYXRhW2ldLnRfc2VsZik7CisJCQlpKys7CiAJCX0KKwkJTG9ja0J1ZmZlcihidWYs IEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKLQkJLyoKLQkJICogQXMgY29tbWVudGVkIGluIHRhYmxl X2luZGV4X2J1aWxkX3NjYW4sIHdlIHNob3VsZCBpbmRleCBoZWFwLW9ubHkKLQkJICogdHVwbGVz IHVuZGVyIHRoZSBUSURzIG9mIHRoZWlyIHJvb3QgdHVwbGVzOyBzbyB3aGVuIHdlIGFkdmFuY2Ug b250bwotCQkgKiBhIG5ldyBoZWFwIHBhZ2UsIGJ1aWxkIGEgbWFwIG9mIHJvb3QgaXRlbSBvZmZz ZXRzIG9uIHRoZSBwYWdlLgotCQkgKgotCQkgKiBUaGlzIGNvbXBsaWNhdGVzIG1lcmdpbmcgYWdh aW5zdCB0aGUgdHVwbGVzb3J0IG91dHB1dDogd2Ugd2lsbAotCQkgKiB2aXNpdCB0aGUgbGl2ZSB0 dXBsZXMgaW4gb3JkZXIgYnkgdGhlaXIgb2Zmc2V0cywgYnV0IHRoZSByb290Ci0JCSAqIG9mZnNl dHMgdGhhdCB3ZSBuZWVkIHRvIGNvbXBhcmUgYWdhaW5zdCB0aGUgaW5kZXggY29udGVudHMgbWln aHQgYmUKLQkJICogb3JkZXJlZCBkaWZmZXJlbnRseS4gIFNvIHdlIG1pZ2h0IGhhdmUgdG8gImxv b2sgYmFjayIgd2l0aGluIHRoZQotCQkgKiB0dXBsZXNvcnQgb3V0cHV0LCBidXQgb25seSB3aXRo aW4gdGhlIGN1cnJlbnQgcGFnZS4gIFdlIGhhbmRsZSB0aGF0Ci0JCSAqIGJ5IGtlZXBpbmcgYSBi b29sIGFycmF5IGluX2luZGV4W10gc2hvd2luZyBhbGwgdGhlCi0JCSAqIGFscmVhZHktcGFzc2Vk LW92ZXIgdHVwbGVzb3J0IG91dHB1dCBUSURzIG9mIHRoZSBjdXJyZW50IHBhZ2UuIFdlCi0JCSAq IGNsZWFyIHRoYXQgYXJyYXkgaGVyZSwgd2hlbiBhZHZhbmNpbmcgb250byBhIG5ldyBoZWFwIHBh Z2UuCi0JCSAqLwotCQlpZiAoaHNjYW4tPnJzX2NibG9jayAhPSByb290X2Jsa25vKQorCQlpID0g MDsKKwkJd2hpbGUgKChvZmYgPSB0dXBsZXNbaV0pICE9IEludmFsaWRPZmZzZXROdW1iZXIpCiAJ CXsKLQkJCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGhzY2FuLT5yc19jYnVmKTsKLQotCQkJ TG9ja0J1ZmZlcihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVSX0xPQ0tfU0hBUkUpOwotCQkJaGVhcF9n ZXRfcm9vdF90dXBsZXMocGFnZSwgcm9vdF9vZmZzZXRzKTsKLQkJCUxvY2tCdWZmZXIoaHNjYW4t PnJzX2NidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0KLQkJCW1lbXNldChpbl9pbmRleCwgMCwg c2l6ZW9mKGluX2luZGV4KSk7Ci0KLQkJCXJvb3RfYmxrbm8gPSBoc2Nhbi0+cnNfY2Jsb2NrOwot CQl9Ci0KLQkJLyogQ29udmVydCBhY3R1YWwgdHVwbGUgVElEIHRvIHJvb3QgVElEICovCi0JCXJv b3RUdXBsZSA9ICpoZWFwY3Vyc29yOwotCQlyb290X29mZm51bSA9IEl0ZW1Qb2ludGVyR2V0T2Zm c2V0TnVtYmVyKGhlYXBjdXJzb3IpOwotCi0JCWlmIChIZWFwVHVwbGVJc0hlYXBPbmx5KGhlYXBU dXBsZSkpCi0JCXsKLQkJCXJvb3Rfb2ZmbnVtID0gcm9vdF9vZmZzZXRzW3Jvb3Rfb2ZmbnVtIC0g MV07Ci0JCQlpZiAoIU9mZnNldE51bWJlcklzVmFsaWQocm9vdF9vZmZudW0pKQotCQkJCWVyZXBv cnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkJ CSBlcnJtc2dfaW50ZXJuYWwoImZhaWxlZCB0byBmaW5kIHBhcmVudCB0dXBsZSBmb3IgaGVhcC1v bmx5IHR1cGxlIGF0ICgldSwldSkgaW4gdGFibGUgXCIlc1wiIiwKLQkJCQkJCQkJCQkgSXRlbVBv aW50ZXJHZXRCbG9ja051bWJlcihoZWFwY3Vyc29yKSwKLQkJCQkJCQkJCQkgSXRlbVBvaW50ZXJH ZXRPZmZzZXROdW1iZXIoaGVhcGN1cnNvciksCi0JCQkJCQkJCQkJIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKGhlYXBSZWxhdGlvbikpKSk7Ci0JCQlJdGVtUG9pbnRlclNldE9mZnNldE51bWJlcigm cm9vdFR1cGxlLCByb290X29mZm51bSk7Ci0JCX0KLQotCQkvKgotCQkgKiAibWVyZ2UiIGJ5IHNr aXBwaW5nIHRocm91Z2ggdGhlIGluZGV4IHR1cGxlcyB1bnRpbCB3ZSBmaW5kIG9yIHBhc3MKLQkJ ICogdGhlIGN1cnJlbnQgcm9vdCB0dXBsZS4KLQkJICovCi0JCXdoaWxlICghdHVwbGVzb3J0X2Vt cHR5ICYmCi0JCQkgICAoIWluZGV4Y3Vyc29yIHx8Ci0JCQkJSXRlbVBvaW50ZXJDb21wYXJlKGlu ZGV4Y3Vyc29yLCAmcm9vdFR1cGxlKSA8IDApKQotCQl7Ci0JCQlEYXR1bQkJdHNfdmFsOwotCQkJ Ym9vbAkJdHNfaXNudWxsOwotCi0JCQlpZiAoaW5kZXhjdXJzb3IpCisJCQlpZiAoSXRlbVBvaW50 ZXJJc1ZhbGlkKCZoZWFwX3R1cGxlX2RhdGFbaV0udF9zZWxmKSkKIAkJCXsKKwkJCQlJdGVtUG9p bnRlckRhdGEgcm9vdF90aWQ7CisJCQkJSXRlbVBvaW50ZXJTZXQoJnJvb3RfdGlkLCBibG9ja19u dW1iZXIsIG9mZik7CisKKwkJCQkvKiBSZXNldCB0aGUgcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0 IGZvciB0aGUgbmV4dCBmZXRjaC4gKi8KKwkJCQlNZW1vcnlDb250ZXh0UmVzZXQoZWNvbnRleHQt PmVjeHRfcGVyX3R1cGxlX21lbW9yeSk7CisJCQkJRXhlY1N0b3JlQnVmZmVySGVhcFR1cGxlKCZo ZWFwX3R1cGxlX2RhdGFbaV0sIHNsb3QsIGJ1Zik7CisKKwkJCQkvKiBDb21wdXRlIHRoZSBrZXkg dmFsdWVzIGFuZCBudWxsIGZsYWdzIGZvciB0aGlzIHR1cGxlLiAqLworCQkJCUZvcm1JbmRleERh dHVtKGluZGV4SW5mbywKKwkJCQkJCQkgICBzbG90LAorCQkJCQkJCSAgIGVzdGF0ZSwKKwkJCQkJ CQkgICB2YWx1ZXMsCisJCQkJCQkJICAgaXNudWxsKTsKKwogCQkJCS8qCi0JCQkJICogUmVtZW1i ZXIgaW5kZXggaXRlbXMgc2VlbiBlYXJsaWVyIG9uIHRoZSBjdXJyZW50IGhlYXAgcGFnZQorCQkJ CSAqIEluc2VydCB0aGUgdHVwbGUgaW50byB0aGUgdGFyZ2V0IGluZGV4LgogCQkJCSAqLwotCQkJ CWlmIChJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKGluZGV4Y3Vyc29yKSA9PSByb290X2Jsa25v KQotCQkJCQlpbl9pbmRleFtJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcihpbmRleGN1cnNvcikg LSAxXSA9IHRydWU7CisJCQkJaW5kZXhfaW5zZXJ0KGluZGV4UmVsYXRpb24sCisJCQkJCQkJIHZh bHVlcywKKwkJCQkJCQkgaXNudWxsLAorCQkJCQkJCSAmcm9vdF90aWQsIC8qIGluc2VydCByb290 IHR1cGxlICovCisJCQkJCQkJIGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkgaW5kZXhJbmZvLT5paV9V bmlxdWUgPworCQkJCQkJCSBVTklRVUVfQ0hFQ0tfWUVTIDogVU5JUVVFX0NIRUNLX05PLAorCQkJ CQkJCSBmYWxzZSwKKwkJCQkJCQkgaW5kZXhJbmZvKTsKIAkJCX0KIAotCQkJdHVwbGVzb3J0X2Vt cHR5ID0gIXR1cGxlc29ydF9nZXRkYXR1bShzdGF0ZS0+dHVwbGVzb3J0LCB0cnVlLAotCQkJCQkJ CQkJCQkJICBmYWxzZSwgJnRzX3ZhbCwgJnRzX2lzbnVsbCwKLQkJCQkJCQkJCQkJCSAgTlVMTCk7 Ci0JCQlBc3NlcnQodHVwbGVzb3J0X2VtcHR5IHx8ICF0c19pc251bGwpOwotCQkJaWYgKCF0dXBs ZXNvcnRfZW1wdHkpCi0JCQl7Ci0JCQkJaXRlbXB0cl9kZWNvZGUoJmRlY29kZWQsIERhdHVtR2V0 SW50NjQodHNfdmFsKSk7Ci0JCQkJaW5kZXhjdXJzb3IgPSAmZGVjb2RlZDsKLQkJCX0KLQkJCWVs c2UKLQkJCXsKLQkJCQkvKiBCZSB0aWR5ICovCi0JCQkJaW5kZXhjdXJzb3IgPSBOVUxMOwotCQkJ fQorCQkJc3RhdGUtPmh0dXBzICs9IDE7CisJCQlwZ3N0YXRfcHJvZ3Jlc3NfaW5jcl9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfVFVQTEVTX0RPTkUsIDEpOworCQkJaSsrOwogCQl9CiAKLQkJLyoK LQkJICogSWYgdGhlIHR1cGxlc29ydCBoYXMgb3ZlcnNob3QgKmFuZCogd2UgZGlkbid0IHNlZSBh IG1hdGNoIGVhcmxpZXIsCi0JCSAqIHRoZW4gdGhpcyB0dXBsZSBpcyBtaXNzaW5nIGZyb20gdGhl IGluZGV4LCBzbyBpbnNlcnQgaXQuCi0JCSAqLwotCQlpZiAoKHR1cGxlc29ydF9lbXB0eSB8fAot CQkJIEl0ZW1Qb2ludGVyQ29tcGFyZShpbmRleGN1cnNvciwgJnJvb3RUdXBsZSkgPiAwKSAmJgot CQkJIWluX2luZGV4W3Jvb3Rfb2ZmbnVtIC0gMV0pCi0JCXsKLQkJCU1lbW9yeUNvbnRleHRSZXNl dChlY29udGV4dC0+ZWN4dF9wZXJfdHVwbGVfbWVtb3J5KTsKLQotCQkJLyogU2V0IHVwIGZvciBw cmVkaWNhdGUgb3IgZXhwcmVzc2lvbiBldmFsdWF0aW9uICovCi0JCQlFeGVjU3RvcmVIZWFwVHVw bGUoaGVhcFR1cGxlLCBzbG90LCBmYWxzZSk7Ci0KLQkJCS8qCi0JCQkgKiBJbiBhIHBhcnRpYWwg aW5kZXgsIGRpc2NhcmQgdHVwbGVzIHRoYXQgZG9uJ3Qgc2F0aXNmeSB0aGUKLQkJCSAqIHByZWRp Y2F0ZS4KLQkJCSAqLwotCQkJaWYgKHByZWRpY2F0ZSAhPSBOVUxMKQotCQkJewotCQkJCWlmICgh RXhlY1F1YWwocHJlZGljYXRlLCBlY29udGV4dCkpCi0JCQkJCWNvbnRpbnVlOwotCQkJfQotCi0J CQkvKgotCQkJICogRm9yIHRoZSBjdXJyZW50IGhlYXAgdHVwbGUsIGV4dHJhY3QgYWxsIHRoZSBh dHRyaWJ1dGVzIHdlIHVzZQotCQkJICogaW4gdGhpcyBpbmRleCwgYW5kIG5vdGUgd2hpY2ggYXJl IG51bGwuICBUaGlzIGFsc28gcGVyZm9ybXMKLQkJCSAqIGV2YWx1YXRpb24gb2YgYW55IGV4cHJl c3Npb25zIG5lZWRlZC4KLQkJCSAqLwotCQkJRm9ybUluZGV4RGF0dW0oaW5kZXhJbmZvLAotCQkJ CQkJICAgc2xvdCwKLQkJCQkJCSAgIGVzdGF0ZSwKLQkJCQkJCSAgIHZhbHVlcywKLQkJCQkJCSAg IGlzbnVsbCk7Ci0KLQkJCS8qCi0JCQkgKiBZb3UnZCB0aGluayB3ZSBzaG91bGQgZ28gYWhlYWQg YW5kIGJ1aWxkIHRoZSBpbmRleCB0dXBsZSBoZXJlLAotCQkJICogYnV0IHNvbWUgaW5kZXggQU1z IHdhbnQgdG8gZG8gZnVydGhlciBwcm9jZXNzaW5nIG9uIHRoZSBkYXRhCi0JCQkgKiBmaXJzdC4g U28gcGFzcyB0aGUgdmFsdWVzW10gYW5kIGlzbnVsbFtdIGFycmF5cywgaW5zdGVhZC4KLQkJCSAq LwotCi0JCQkvKgotCQkJICogSWYgdGhlIHR1cGxlIGlzIGFscmVhZHkgY29tbWl0dGVkIGRlYWQs IHlvdSBtaWdodCB0aGluayB3ZQotCQkJICogY291bGQgc3VwcHJlc3MgdW5pcXVlbmVzcyBjaGVj a2luZywgYnV0IHRoaXMgaXMgbm8gbG9uZ2VyIHRydWUKLQkJCSAqIGluIHRoZSBwcmVzZW5jZSBv ZiBIT1QsIGJlY2F1c2UgdGhlIGluc2VydCBpcyBhY3R1YWxseSBhIHByb3h5Ci0JCQkgKiBmb3Ig YSB1bmlxdWVuZXNzIGNoZWNrIG9uIHRoZSB3aG9sZSBIT1QtY2hhaW4uICBUaGF0IGlzLCB0aGUK LQkJCSAqIHR1cGxlIHdlIGhhdmUgaGVyZSBjb3VsZCBiZSBkZWFkIGJlY2F1c2UgaXQgd2FzIGFs cmVhZHkKLQkJCSAqIEhPVC11cGRhdGVkLCBhbmQgaWYgc28gdGhlIHVwZGF0aW5nIHRyYW5zYWN0 aW9uIHdpbGwgbm90IGhhdmUKLQkJCSAqIHRob3VnaHQgaXQgc2hvdWxkIGluc2VydCBpbmRleCBl bnRyaWVzLiAgVGhlIGluZGV4IEFNIHdpbGwKLQkJCSAqIGNoZWNrIHRoZSB3aG9sZSBIT1QtY2hh aW4gYW5kIGNvcnJlY3RseSBkZXRlY3QgYSBjb25mbGljdCBpZgotCQkJICogdGhlcmUgaXMgb25l LgotCQkJICovCi0KLQkJCWluZGV4X2luc2VydChpbmRleFJlbGF0aW9uLAotCQkJCQkJIHZhbHVl cywKLQkJCQkJCSBpc251bGwsCi0JCQkJCQkgJnJvb3RUdXBsZSwKLQkJCQkJCSBoZWFwUmVsYXRp b24sCi0JCQkJCQkgaW5kZXhJbmZvLT5paV9VbmlxdWUgPwotCQkJCQkJIFVOSVFVRV9DSEVDS19Z RVMgOiBVTklRVUVfQ0hFQ0tfTk8sCi0JCQkJCQkgZmFsc2UsCi0JCQkJCQkgaW5kZXhJbmZvKTsK LQotCQkJc3RhdGUtPnR1cHNfaW5zZXJ0ZWQgKz0gMTsKLQkJfQorCQlSZWxlYXNlQnVmZmVyKGJ1 Zik7CiAJfQogCi0JdGFibGVfZW5kc2NhbihzY2FuKTsKLQogCUV4ZWNEcm9wU2luZ2xlVHVwbGVU YWJsZVNsb3Qoc2xvdCk7CiAKIAlGcmVlRXhlY3V0b3JTdGF0ZShlc3RhdGUpOwogCisJcmVhZF9z dHJlYW1fZW5kKHJlYWRfc3RyZWFtKTsKKwl0dXBsZXN0b3JlX2VuZCh0dXBsZXNfZm9yX2NoZWNr KTsKKwogCS8qIFRoZXNlIG1heSBoYXZlIGJlZW4gcG9pbnRpbmcgdG8gdGhlIG5vdy1nb25lIGVz dGF0ZSAqLwogCWluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNTdGF0ZSA9IE5JTDsKIAlpbmRleElu Zm8tPmlpX1ByZWRpY2F0ZVN0YXRlID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCAxYWQ1OWVm ZmVhMi4uYTM2NDAyZWI2NDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTcxNSwxMSArNzE1LDE2IEBA IFVwZGF0ZUluZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLAogICoJCQlhbHJlYWR5IGV4aXN0cy4K ICAqCQlJTkRFWF9DUkVBVEVfUEFSVElUSU9ORUQ6CiAgKgkJCWNyZWF0ZSBhIHBhcnRpdGlvbmVk IGluZGV4ICh0YWJsZSBtdXN0IGJlIHBhcnRpdGlvbmVkKQorICoJCUlOREVYX0NSRUFURV9BVVhJ TElBUlk6CisgKgkJCW1hcmsgaW5kZXggYXMgYXV4aWxpYXJ5IGluZGV4CiAgKiBjb25zdHJfZmxh Z3M6IGZsYWdzIHBhc3NlZCB0byBpbmRleF9jb25zdHJhaW50X2NyZWF0ZQogICoJCShvbmx5IGlm IElOREVYX0NSRUFURV9BRERfQ09OU1RSQUlOVCBpcyBzZXQpCiAgKiBhbGxvd19zeXN0ZW1fdGFi bGVfbW9kczogYWxsb3cgdGFibGUgdG8gYmUgYSBzeXN0ZW0gY2F0YWxvZwogICogaXNfaW50ZXJu YWw6IGlmIHRydWUsIHBvc3QgY3JlYXRpb24gaG9vayBmb3IgbmV3IGluZGV4CiAgKiBjb25zdHJh aW50SWQ6IGlmIG5vdCBOVUxMLCByZWNlaXZlcyBPSUQgb2YgY3JlYXRlZCBjb25zdHJhaW50Cisg KiByZWxwZXJzaXN0ZW5jZTogcGVyc2lzdGVuY2UgbGV2ZWwgdG8gdXNlIGZvciBpbmRleC4gSW4g bW9zdCBvZiB0aGUKKyAqCQljYXNlcyBpdCBpcyBzaG91bGQgYmUgZXF1YWwgdG8gcGVyc2lzdGVu Y2UgbGV2ZWwgb2YgdGFibGUsCisgKgkJYXV4aWxpYXJ5IGluZGV4ZXMgYXJlIG9ubHkgZXhjZXB0 aW9uIGhlcmUuCiAgKgogICogUmV0dXJucyB0aGUgT0lEIG9mIHRoZSBjcmVhdGVkIGluZGV4Lgog ICovCkBAIC03NjAsNiArNzY1LDcgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlv biwKIAlib29sCQlpbnZhbGlkID0gKGZsYWdzICYgSU5ERVhfQ1JFQVRFX0lOVkFMSUQpICE9IDA7 CiAJYm9vbAkJY29uY3VycmVudCA9IChmbGFncyAmIElOREVYX0NSRUFURV9DT05DVVJSRU5UKSAh PSAwOwogCWJvb2wJCXBhcnRpdGlvbmVkID0gKGZsYWdzICYgSU5ERVhfQ1JFQVRFX1BBUlRJVElP TkVEKSAhPSAwOworCWJvb2wJCWF1eGlsaWFyeSA9IChmbGFncyAmIElOREVYX0NSRUFURV9BVVhJ TElBUlkpICE9IDA7CiAJY2hhcgkJcmVsa2luZDsKIAlUcmFuc2FjdGlvbklkIHJlbGZyb3plbnhp ZDsKIAlNdWx0aVhhY3RJZCByZWxtaW5teGlkOwpAQCAtNzg1LDcgKzc5MSwxMCBAQCBpbmRleF9j cmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCW5hbWVzcGFjZUlkID0gUmVsYXRpb25HZXRO YW1lc3BhY2UoaGVhcFJlbGF0aW9uKTsKIAlzaGFyZWRfcmVsYXRpb24gPSBoZWFwUmVsYXRpb24t PnJkX3JlbC0+cmVsaXNzaGFyZWQ7CiAJbWFwcGVkX3JlbGF0aW9uID0gUmVsYXRpb25Jc01hcHBl ZChoZWFwUmVsYXRpb24pOwotCXJlbHBlcnNpc3RlbmNlID0gaGVhcFJlbGF0aW9uLT5yZF9yZWwt PnJlbHBlcnNpc3RlbmNlOworCWlmIChhdXhpbGlhcnkpCisJCXJlbHBlcnNpc3RlbmNlID0gUkVM UEVSU0lTVEVOQ0VfVU5MT0dHRUQ7IC8qIGF1eCBpbmRleGVzIGFyZSBhbHdheXMgdW5sb2dnZWQg Ki8KKwllbHNlCisJCXJlbHBlcnNpc3RlbmNlID0gaGVhcFJlbGF0aW9uLT5yZF9yZWwtPnJlbHBl cnNpc3RlbmNlOwogCiAJLyoKIAkgKiBjaGVjayBwYXJhbWV0ZXJzCkBAIC03OTMsNiArODAyLDEx IEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJaWYgKGluZGV4SW5mby0+ aWlfTnVtSW5kZXhBdHRycyA8IDEpCiAJCWVsb2coRVJST1IsICJtdXN0IGluZGV4IGF0IGxlYXN0 IG9uZSBjb2x1bW4iKTsKIAorCWlmIChpbmRleEluZm8tPmlpX0FtID09IFNUSVJfQU1fT0lEICYm ICFhdXhpbGlhcnkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coInVzZXItZGVmaW5lZCBpbmRleGVzIHdp dGggU1RJUiBhY2Nlc3MgbWV0aG9kIGFyZSBub3Qgc3VwcG9ydGVkIikpKTsKKwogCWlmICghYWxs b3dfc3lzdGVtX3RhYmxlX21vZHMgJiYKIAkJSXNTeXN0ZW1SZWxhdGlvbihoZWFwUmVsYXRpb24p ICYmCiAJCUlzTm9ybWFsUHJvY2Vzc2luZ01vZGUoKSkKQEAgLTEzOTgsNyArMTQxMiw4IEBAIGlu ZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBv bGRJbmRleElkLAogCQkJCQkJCWZhbHNlLAkvKiBub3QgcmVhZHkgZm9yIGluc2VydHMgKi8KIAkJ CQkJCQl0cnVlLAogCQkJCQkJCWluZGV4UmVsYXRpb24tPnJkX2luZGFtLT5hbXN1bW1hcml6aW5n LAotCQkJCQkJCW9sZEluZm8tPmlpX1dpdGhvdXRPdmVybGFwcyk7CisJCQkJCQkJb2xkSW5mby0+ aWlfV2l0aG91dE92ZXJsYXBzLAorCQkJCQkJCWZhbHNlKTsKIAogCS8qCiAJICogRXh0cmFjdCB0 aGUgbGlzdCBvZiBjb2x1bW4gbmFtZXMgYW5kIHRoZSBjb2x1bW4gbnVtYmVycyBmb3IgdGhlIG5l dwpAQCAtMTQ3Myw2ICsxNDg4LDE1NCBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHko UmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwKIAlyZXR1cm4gbmV3SW5kZXhJ ZDsKIH0KIAorLyoKKyAqIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfYXV4CisgKgorICogQ3Jl YXRlIGNvbmN1cnJlbnRseSBhbiBhdXhpbGlhcnkgaW5kZXggYmFzZWQgb24gdGhlIGRlZmluaXRp b24gb2YgdGhlIG9uZQorICogcHJvdmlkZWQgYnkgY2FsbGVyLiAgVGhlIGluZGV4IGlzIGluc2Vy dGVkIGludG8gY2F0YWxvZ3MgYW5kIG5lZWRzIHRvIGJlCisgKiBidWlsdCBsYXRlciBvbi4gVGhp cyBpcyBjYWxsZWQgZHVyaW5nIGNvbmN1cnJlbnQgcmVpbmRleCBwcm9jZXNzaW5nLgorICoKKyAq ICJ0YWJsZXNwYWNlT2lkIiBpcyB0aGUgdGFibGVzcGFjZSB0byB1c2UgZm9yIHRoaXMgaW5kZXgu CisgKi8KK09pZAoraW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9hdXgoUmVsYXRpb24gaGVhcFJl bGF0aW9uLCBPaWQgbWFpbkluZGV4SWQsCisJCQkJCQkJICAgT2lkIHRhYmxlc3BhY2VPaWQsIGNv bnN0IGNoYXIgKm5ld05hbWUpCit7CisJUmVsYXRpb24JaW5kZXhSZWxhdGlvbjsKKwlJbmRleElu Zm8gICpvbGRJbmZvLAorCQkJKm5ld0luZm87CisJT2lkCQkJbmV3SW5kZXhJZCA9IEludmFsaWRP aWQ7CisJSGVhcFR1cGxlCWluZGV4VHVwbGU7CisKKwlMaXN0CSAgICppbmRleENvbE5hbWVzID0g TklMOworCUxpc3QJICAgKmluZGV4RXhwcnMgPSBOSUw7CisJTGlzdAkgICAqaW5kZXhQcmVkcyA9 IE5JTDsKKworCU9pZCAqYXV4T3BjbGFzc0lkczsKKwlpbnQxNiAqYXV4Q29sb3B0aW9uczsKKwor CWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKG1haW5JbmRleElkLCBSb3dFeGNsdXNpdmVMb2Nr KTsKKworCS8qIFRoZSBuZXcgaW5kZXggbmVlZHMgc29tZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBv bGQgaW5kZXggKi8KKwlvbGRJbmZvID0gQnVpbGRJbmRleEluZm8oaW5kZXhSZWxhdGlvbik7CisK KwkvKgorCSAqIEJ1aWxkIG9mIGFuIGF1eGlsaWFyeSBpbmRleCB3aXRoIGV4Y2x1c2lvbiBjb25z dHJhaW50cyBpcyBub3QKKwkgKiBzdXBwb3J0ZWQuCisJICovCisJaWYgKG9sZEluZm8tPmlpX0V4 Y2x1c2lvbk9wcyAhPSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCWVycm1zZygiYXV4aWxpYXJ5IGluZGV4 IGNyZWF0aW9uIGZvciBleGNsdXNpb24gY29uc3RyYWludHMgaXMgbm90IHN1cHBvcnRlZCIpKSk7 CisKKwkvKiBHZXQgdGhlIGFycmF5IG9mIGNsYXNzIGFuZCBjb2x1bW4gb3B0aW9ucyBJRHMgZnJv bSBpbmRleCBpbmZvICovCisJaW5kZXhUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMShJTkRFWFJFTElE LCBPYmplY3RJZEdldERhdHVtKG1haW5JbmRleElkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KGluZGV4VHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgaW5k ZXggJXUiLCBtYWluSW5kZXhJZCk7CisKKworCS8qCisJICogRmV0Y2ggdGhlIGxpc3Qgb2YgZXhw cmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMgZGlyZWN0bHkgZnJvbSB0aGUKKwkgKiBjYXRhbG9ncy4g IFRoaXMgY2Fubm90IHJlbHkgb24gdGhlIGluZm9ybWF0aW9uIGZyb20gSW5kZXhJbmZvIG9mIHRo ZQorCSAqIG9sZCBpbmRleCBhcyB0aGVzZSBoYXZlIGJlZW4gZmxhdHRlbmVkIGZvciB0aGUgcGxh bm5lci4KKwkgKi8KKwlpZiAob2xkSW5mby0+aWlfRXhwcmVzc2lvbnMgIT0gTklMKQorCXsKKwkJ RGF0dW0JCWV4cHJEYXR1bTsKKwkJY2hhcgkgICAqZXhwclN0cmluZzsKKworCQlleHByRGF0dW0g PSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKElOREVYUkVMSUQsIGluZGV4VHVwbGUsCisJCQkJCQkJ CQkJICAgQW51bV9wZ19pbmRleF9pbmRleHBycyk7CisJCWV4cHJTdHJpbmcgPSBUZXh0RGF0dW1H ZXRDU3RyaW5nKGV4cHJEYXR1bSk7CisJCWluZGV4RXhwcnMgPSAoTGlzdCAqKSBzdHJpbmdUb05v ZGUoZXhwclN0cmluZyk7CisJCXBmcmVlKGV4cHJTdHJpbmcpOworCX0KKwlpZiAob2xkSW5mby0+ aWlfUHJlZGljYXRlICE9IE5JTCkKKwl7CisJCURhdHVtCQlwcmVkRGF0dW07CisJCWNoYXIJICAg KnByZWRTdHJpbmc7CisKKwkJcHJlZERhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChJTkRF WFJFTElELCBpbmRleFR1cGxlLAorCQkJCQkJCQkJCSAgIEFudW1fcGdfaW5kZXhfaW5kcHJlZCk7 CisJCXByZWRTdHJpbmcgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHByZWREYXR1bSk7CisJCWluZGV4 UHJlZHMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUocHJlZFN0cmluZyk7CisKKwkJLyogQWxzbyBj b252ZXJ0IHRvIGltcGxpY2l0LUFORCBmb3JtYXQgKi8KKwkJaW5kZXhQcmVkcyA9IG1ha2VfYW5k c19pbXBsaWNpdCgoRXhwciAqKSBpbmRleFByZWRzKTsKKwkJcGZyZWUocHJlZFN0cmluZyk7CisJ fQorCisJLyoKKwkgKiBCdWlsZCB0aGUgaW5kZXggaW5mb3JtYXRpb24gZm9yIHRoZSBuZXcgaW5k ZXguICBOb3RlIHRoYXQgcmVidWlsZCBvZgorCSAqIGluZGV4ZXMgd2l0aCBleGNsdXNpb24gY29u c3RyYWludHMgaXMgbm90IHN1cHBvcnRlZCwgaGVuY2UgdGhlcmUgaXMgbm8KKwkgKiBuZWVkIHRv IGZpbGwgYWxsIHRoZSBpaV9FeGNsdXNpb24qIGZpZWxkcy4KKwkgKi8KKwluZXdJbmZvID0gbWFr ZUluZGV4SW5mbyhvbGRJbmZvLT5paV9OdW1JbmRleEF0dHJzLAorCQkJCQkJCW9sZEluZm8tPmlp X051bUluZGV4S2V5QXR0cnMsCisJCQkJCQkJU1RJUl9BTV9PSUQsIC8qIHNwZWNpYWwgQU0gZm9y IGF1eCBpbmRleGVzICovCisJCQkJCQkJaW5kZXhFeHBycywKKwkJCQkJCQlpbmRleFByZWRzLAor CQkJCQkJCWZhbHNlLAkvKiBhdXggaW5kZXggYXJlIG5vdCB1bmlxdWUgKi8KKwkJCQkJCQlvbGRJ bmZvLT5paV9OdWxsc05vdERpc3RpbmN0LAorCQkJCQkJCWZhbHNlLAkvKiBub3QgcmVhZHkgZm9y IGluc2VydHMgKi8KKwkJCQkJCQl0cnVlLAorCQkJCQkJCWZhbHNlLAkvKiBhdXggYXJlIG5vdCBz dW1tYXJpemluZyAqLworCQkJCQkJCWZhbHNlLAkvKiBhdXggYXJlIG5vdCB3aXRob3V0IG92ZXJs YXBzICovCisJCQkJCQkJdHJ1ZQkvKiBhdXhpbGlhcnkgKi8pOworCisJLyoKKwkgKiBFeHRyYWN0 IHRoZSBsaXN0IG9mIGNvbHVtbiBuYW1lcyBhbmQgdGhlIGNvbHVtbiBudW1iZXJzIGZvciB0aGUg bmV3CisJICogaW5kZXggaW5mb3JtYXRpb24uICBBbGwgdGhpcyBpbmZvcm1hdGlvbiB3aWxsIGJl IHVzZWQgZm9yIHRoZSBpbmRleAorCSAqIGNyZWF0aW9uLgorCSAqLworCWZvciAoaW50IGkgPSAw OyBpIDwgb2xkSW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsrKQorCXsKKwkJVHVwbGVEZXNjCWlu ZGV4VHVwRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoaW5kZXhSZWxhdGlvbik7CisJCUZvcm1fcGdf YXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIoaW5kZXhUdXBEZXNjLCBpKTsKKworCQlpbmRl eENvbE5hbWVzID0gbGFwcGVuZChpbmRleENvbE5hbWVzLCBOYW1lU3RyKGF0dC0+YXR0bmFtZSkp OworCQluZXdJbmZvLT5paV9JbmRleEF0dHJOdW1iZXJzW2ldID0gb2xkSW5mby0+aWlfSW5kZXhB dHRyTnVtYmVyc1tpXTsKKwl9CisKKwlhdXhPcGNsYXNzSWRzID0gcGFsbG9jMChzaXplb2YoT2lk KSAqIG5ld0luZm8tPmlpX051bUluZGV4QXR0cnMpOworCWF1eENvbG9wdGlvbnMgPSBwYWxsb2Mw KHNpemVvZihpbnQxNikgKiBuZXdJbmZvLT5paV9OdW1JbmRleEF0dHJzKTsKKworCS8qIEZpbGwg d2l0aCAiYW55IG9wcyIgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IG5ld0luZm8tPmlpX051bUlu ZGV4QXR0cnM7IGkrKykKKwl7CisJCWF1eE9wY2xhc3NJZHNbaV0gPSBBTllfU1RJUl9PUFNfT0lE OworCQlhdXhDb2xvcHRpb25zW2ldID0gMDsKKwl9CisKKwluZXdJbmRleElkID0gaW5kZXhfY3Jl YXRlKGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkgIG5ld05hbWUsCisJCQkJCQkJICBJbnZhbGlkT2lk LCAgICAvKiBpbmRleFJlbGF0aW9uSWQgKi8KKwkJCQkJCQkgIEludmFsaWRPaWQsICAgIC8qIHBh cmVudEluZGV4UmVsaWQgKi8KKwkJCQkJCQkgIEludmFsaWRPaWQsICAgIC8qIHBhcmVudENvbnN0 cmFpbnRJZCAqLworCQkJCQkJCSAgSW52YWxpZFJlbEZpbGVOdW1iZXIsIC8qIHJlbEZpbGVOdW1i ZXIgKi8KKwkJCQkJCQkgIG5ld0luZm8sCisJCQkJCQkJICBpbmRleENvbE5hbWVzLAorCQkJCQkJ CSAgU1RJUl9BTV9PSUQsCisJCQkJCQkJICB0YWJsZXNwYWNlT2lkLAorCQkJCQkJCSAgaW5kZXhS ZWxhdGlvbi0+cmRfaW5kY29sbGF0aW9uLAorCQkJCQkJCSAgYXV4T3BjbGFzc0lkcywKKwkJCQkJ CQkgIE5VTEwsCisJCQkJCQkJICBhdXhDb2xvcHRpb25zLAorCQkJCQkJCSAgTlVMTCwKKwkJCQkJ CQkgIChEYXR1bSkgMCwKKwkJCQkJCQkgIElOREVYX0NSRUFURV9TS0lQX0JVSUxEIHwgSU5ERVhf Q1JFQVRFX0NPTkNVUlJFTlQgfCBJTkRFWF9DUkVBVEVfQVVYSUxJQVJZLAorCQkJCQkJCSAgMCwK KwkJCQkJCQkgIHRydWUsIC8qIGFsbG93IHRhYmxlIHRvIGJlIGEgc3lzdGVtIGNhdGFsb2c/ICov CisJCQkJCQkJICBmYWxzZSwgICAgLyogaXNfaW50ZXJuYWw/ICovCisJCQkJCQkJICBOVUxMKTsK KworCS8qIENsb3NlIHRoZSByZWxhdGlvbnMgdXNlZCBhbmQgY2xlYW4gdXAgKi8KKwlpbmRleF9j bG9zZShpbmRleFJlbGF0aW9uLCBOb0xvY2spOworCVJlbGVhc2VTeXNDYWNoZShpbmRleFR1cGxl KTsKKworCXJldHVybiBuZXdJbmRleElkOworfQorCiAvKgogICogaW5kZXhfY29uY3VycmVudGx5 X2J1aWxkCiAgKgpAQCAtMjQ2OSw3ICsyNjMyLDggQEAgQnVpbGRJbmRleEluZm8oUmVsYXRpb24g aW5kZXgpCiAJCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc3JlYWR5LAogCQkJCQkgICBmYWxzZSwK IAkJCQkJICAgaW5kZXgtPnJkX2luZGFtLT5hbXN1bW1hcml6aW5nLAotCQkJCQkgICBpbmRleFN0 cnVjdC0+aW5kaXNleGNsdXNpb24gJiYgaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlKTsKKwkJCQkJ ICAgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uICYmIGluZGV4U3RydWN0LT5pbmRpc3VuaXF1 ZSwKKwkJCQkJICAgaW5kZXgtPnJkX3JlbC0+cmVsYW0gPT0gU1RJUl9BTV9PSUQgLyogYXV4aWxp YXJ5IGlmZiBTVElSICovKTsKIAogCS8qIGZpbGwgaW4gYXR0cmlidXRlIG51bWJlcnMgKi8KIAlm b3IgKGkgPSAwOyBpIDwgbnVtQXR0czsgaSsrKQpAQCAtMjUyOSw3ICsyNjkzLDggQEAgQnVpbGRE dW1teUluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCkKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlz cmVhZHksCiAJCQkJCSAgIGZhbHNlLAogCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFy aXppbmcsCi0JCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVj dC0+aW5kaXN1bmlxdWUpOworCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24gJiYg aW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlLAorCQkJCQkgICBpbmRleC0+cmRfcmVsLT5yZWxhbSA9 PSBTVElSX0FNX09JRCAvKiBhdXhpbGlhcnkgaWZmIFNUSVIgKi8pOwogCiAJLyogZmlsbCBpbiBh dHRyaWJ1dGUgbnVtYmVycyAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1BdHRzOyBpKyspCkBAIC0z MzA2LDEyICszNDcxLDIxIEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogICoKICAqIFdlIGRvIGEgY29uY3VycmVudCBpbmRleCBidWlsZCBieSBmaXJzdCBpbnNl cnRpbmcgdGhlIGNhdGFsb2cgZW50cnkgZm9yIHRoZQogICogaW5kZXggdmlhIGluZGV4X2NyZWF0 ZSgpLCBtYXJraW5nIGl0IG5vdCBpbmRpc3JlYWR5IGFuZCBub3QgaW5kaXN2YWxpZC4KKyAqIFRo ZW4gd2UgY3JlYXRlIHNwZWNpYWwgYXV4aWxpYXJ5IGluZGV4IHRoZSBzYW1lIHdheS4gSXQgYmFz ZWQgb24gU1RJUiBBTS4KICAqIFRoZW4gd2UgY29tbWl0IG91ciB0cmFuc2FjdGlvbiBhbmQgc3Rh cnQgYSBuZXcgb25lLCB0aGVuIHdlIHdhaXQgZm9yIGFsbAogICogdHJhbnNhY3Rpb25zIHRoYXQg Y291bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUgdG8gdGVybWluYXRlLiAgTm93Ci0g KiB3ZSBrbm93IHRoYXQgYW55IHN1YnNlcXVlbnRseS1zdGFydGVkIHRyYW5zYWN0aW9ucyB3aWxs IHNlZSB0aGUgaW5kZXggYW5kCisgKiB3ZSBrbm93IHRoYXQgYW55IHN1YnNlcXVlbnRseS1zdGFy dGVkIHRyYW5zYWN0aW9ucyB3aWxsIHNlZSBpbmRleGVzIGFuZAogICogaG9ub3IgaXRzIGNvbnN0 cmFpbnRzIG9uIEhPVCB1cGRhdGVzOyBzbyB3aGlsZSBleGlzdGluZyBIT1QtY2hhaW5zIG1pZ2h0 CiAgKiBiZSBicm9rZW4gd2l0aCByZXNwZWN0IHRvIHRoZSBpbmRleCwgbm8gY3VycmVudGx5IGxp dmUgdHVwbGUgd2lsbCBoYXZlIGFuCi0gKiBpbmNvbXBhdGlibGUgSE9UIHVwZGF0ZSBkb25lIHRv IGl0LiAgV2Ugbm93IGJ1aWxkIHRoZSBpbmRleCBub3JtYWxseSB2aWEKKyAqIGluY29tcGF0aWJs ZSBIT1QgdXBkYXRlIGRvbmUgdG8gaXQuCisgKgorICogQWZ0ZXIgd2UgYnVpbGQgYXV4aWxpYXJ5 IGluZGV4LiBJdCBpcyBmYXN0IG9wZXJhdGlvbiB3aXRob3V0IGFueSBhY3R1YWwKKyAqIHRhYmxl IHNjYW4uIEFzIHJlc3VsdCwgd2UgaGF2ZSBlbXB0eSBTVElSIGluZGV4LiBXZSBjb21taXQgdHJh bnNhY3Rpb24gYW5kCisgKiBhZ2FpbiB3YWl0IGZvciBhbGwgdHJhbnNhY3Rpb25zIHRoYXQgY291 bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUKKyAqIHRvIHRlcm1pbmF0ZS4gQXQgdGhh dCBtb21lbnQgYWxsIG5ldyB0dXBsZXMgYXJlIGdvaW5nIHRvIGJlIGluc2VydGVkIGludG8KKyAq IGF1eGlsaWFyeSBpbmRleC4KKyAqCisgKiBXZSBub3cgYnVpbGQgdGhlIGluZGV4IG5vcm1hbGx5 IHZpYQogICogaW5kZXhfYnVpbGQoKSwgd2hpbGUgaG9sZGluZyBhIHdlYWsgbG9jayB0aGF0IGFs bG93cyBjb25jdXJyZW50CiAgKiBpbnNlcnQvdXBkYXRlL2RlbGV0ZS4gIEFsc28sIHdlIGluZGV4 IG9ubHkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkCiAgKiBhcyBvZiB0aGUgc3RhcnQgb2YgdGhlIHNj YW4gKHNlZSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKSwgd2hlcmVhcyBhIG5vcm1hbApAQCAtMzMy MSwxOCArMzQ5NSwyMSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlv biwKICAqIGJvZ3VzIHVuaXF1ZS1pbmRleCBmYWlsdXJlcyBkdWUgdG8gY29uY3VycmVudCBVUERB VEVzICh3ZSBtaWdodCBzZWUKICAqIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgc2FtZSByb3cg YXMgYmVpbmcgdmFsaWQgd2hlbiB3ZSBwYXNzIG92ZXIgdGhlbSwKICAqIGlmIHdlIHVzZWQgSGVh cFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVzIHVzIHdpdGggYW4gaW5kZXggdGhh dAotICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFkZGVkIHRvIHRoZSB0YWJsZSB3aGls ZSB3ZSBidWlsdCB0aGUgaW5kZXguCisgKiBkb2VzIG5vdCBjb250YWluIGFueSB0dXBsZXMgYWRk ZWQgdG8gdGhlIHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRoZSBpbmRleAorICogKGJ1dCB0aGVzZSB0 dXBsZXMgY29udGFpbmVkIGluIGF1eGlsaWFyeSBpbmRleCkuCiAgKgogICogRnVydGhlcm1vcmUs IHdlIHNldCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlIHNjYW4sIHdoaWNoIGNhdXNlcyBuZXcK ICAqIHNuYXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFz b24gIGZvciB0aGF0IGlzIHRvCiAgKiBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJk LgogICoKICAqIE5leHQsIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxs IG5vdCAiaW5kaXN2YWxpZCIpIGFuZAotICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24g YW5kIHN0YXJ0IGEgdGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwKKyAqIGNvbW1pdCB0aGUg dGhpcmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEgZm91cnRoLiAgQWdhaW4gd2Ugd2FpdCBmb3Ig YWxsCiAgKiB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0 YWJsZSB0byB0ZXJtaW5hdGUuICBOb3cKICAqIHdlIGtub3cgdGhhdCBhbnkgc3Vic2VxdWVudGx5 LXN0YXJ0ZWQgdHJhbnNhY3Rpb25zIHdpbGwgc2VlIHRoZSBpbmRleCBhbmQKLSAqIGluc2VydCB0 aGVpciBuZXcgdHVwbGVzIGludG8gaXQuICBXZSB0aGVuIHRha2UgYSBuZXcgcmVmZXJlbmNlIHNu YXBzaG90Ci0gKiB3aGljaCBpcyBwYXNzZWQgdG8gdmFsaWRhdGVfaW5kZXgoKS4gIEFueSB0dXBs ZXMgdGhhdCBhcmUgdmFsaWQgYWNjb3JkaW5nCisgKiBpbnNlcnQgdGhlaXIgbmV3IHR1cGxlcyBp bnRvIGl0LiBBdCB0aGUgc2FtZSBtb21lbnQgd2UgY2xlYXIgImluZGlzcmVhZHkiIGZvcgorICog YXV4aWxpYXJ5IGluZGV4LCBzaW5jZSBpdCBpcyBubyBtb3JlIHJlcXVpcmVkIHRvIGJlIHVwZGF0 ZWQuCisgKgorICogV2UgdGhlbiB0YWtlIGEgbmV3IHJlZmVyZW5jZSBzbmFwc2hvdCwgYW55IHR1 cGxlcyB0aGF0IGFyZSB2YWxpZCBhY2NvcmRpbmcKICAqIHRvIHRoaXMgc25hcCwgYnV0IGFyZSBu b3QgaW4gdGhlIGluZGV4LCBtdXN0IGJlIGFkZGVkIHRvIHRoZSBpbmRleC4KICAqIChBbnkgdHVw bGVzIGNvbW1pdHRlZCBsaXZlIGFmdGVyIHRoZSBzbmFwIHdpbGwgYmUgaW5zZXJ0ZWQgaW50byB0 aGUKICAqIGluZGV4IGJ5IHRoZWlyIG9yaWdpbmF0aW5nIHRyYW5zYWN0aW9uLiAgQW55IHR1cGxl cyBjb21taXR0ZWQgZGVhZCBiZWZvcmUKQEAgLTMzNDAsMTIgKzM1MTcsMTQgQEAgSW5kZXhDaGVj a0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKiB0aGF0IG1pZ2h0IGNhcmUgYWJv dXQgdGhlbSBiZWZvcmUgd2UgbWFyayB0aGUgaW5kZXggdmFsaWQuKQogICoKICAqIHZhbGlkYXRl X2luZGV4KCkgd29ya3MgYnkgZmlyc3QgZ2F0aGVyaW5nIGFsbCB0aGUgVElEcyBjdXJyZW50bHkg aW4gdGhlCi0gKiBpbmRleCwgdXNpbmcgYSBidWxrZGVsZXRlIGNhbGxiYWNrIHRoYXQganVzdCBz dG9yZXMgdGhlIFRJRHMgYW5kIGRvZXNuJ3QKKyAqIGluZGV4ZXMsIHVzaW5nIGEgYnVsa2RlbGV0 ZSBjYWxsYmFjayB0aGF0IGp1c3Qgc3RvcmVzIHRoZSBUSURzIGFuZCBkb2Vzbid0CiAgKiBldmVy IHNheSAiZGVsZXRlIGl0Ii4gIChUaGlzIHNob3VsZCBiZSBmYXN0ZXIgdGhhbiBhIHBsYWluIGlu ZGV4c2NhbjsKICAqIGFsc28sIG5vdCBhbGwgaW5kZXggQU1zIHN1cHBvcnQgZnVsbC1pbmRleCBp bmRleHNjYW4uKSAgVGhlbiB3ZSBzb3J0IHRoZQotICogVElEcywgYW5kIGZpbmFsbHkgc2NhbiB0 aGUgdGFibGUgZG9pbmcgYSAibWVyZ2Ugam9pbiIgYWdhaW5zdCB0aGUgVElEIGxpc3QKLSAqIHRv IHNlZSB3aGljaCB0dXBsZXMgYXJlIG1pc3NpbmcgZnJvbSB0aGUgaW5kZXguICBUaHVzIHdlIHdp bGwgZW5zdXJlIHRoYXQKLSAqIGFsbCB0dXBsZXMgdmFsaWQgYWNjb3JkaW5nIHRvIHRoZSByZWZl cmVuY2Ugc25hcHNob3QgYXJlIGluIHRoZSBpbmRleC4KKyAqIFRJRHMgb2YgYm90aCBhdXhpbGlh cnkgYW5kIHRhcmdldCBpbmRleGVzLCBhbmQgZG9pbmcgYSAibWVyZ2Ugam9pbiIgYWdhaW5zdAor ICogdGhlIFRJRCBsaXN0cyB0byBzZWUgd2hpY2ggdHVwbGVzIGZyb20gYXV4aWxpYXJ5IGluZGV4 IGFyZSBtaXNzaW5nIGZyb20gdGhlCisgKiB0YXJnZXQgaW5kZXguICBUaHVzIHdlIHdpbGwgZW5z dXJlIHRoYXQgYWxsIHR1cGxlcyB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlCisgKiByZWZlcmVuY2Ug c25hcHNob3QgYXJlIGluIHRoZSBpbmRleC4gTm90aWNlIHdlIG5lZWQgdG8gZG8gYnVsa2RlbGV0 ZSBpbiB0aGUKKyAqIHBhcnRpY3VsYXIgb3JkZXI6IGF1eGlsaWFyeSBmaXJzdCwgdGFyZ2V0IGxh c3QuCiAgKgogICogQnVpbGRpbmcgYSB1bmlxdWUgaW5kZXggdGhpcyB3YXkgaXMgdHJpY2t5OiB3 ZSBtaWdodCB0cnkgdG8gaW5zZXJ0IGEKICAqIHR1cGxlIHRoYXQgaXMgYWxyZWFkeSBkZWFkIG9y IGlzIGluIHByb2Nlc3Mgb2YgYmVpbmcgZGVsZXRlZCwgYW5kIHdlCkBAIC0zMzYzLDIyICszNTQy LDI2IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogbm90 IGluZGV4KS4gIFRoZW4gd2UgbWFyayB0aGUgaW5kZXggImluZGlzdmFsaWQiIGFuZCBjb21taXQu ICBTdWJzZXF1ZW50CiAgKiB0cmFuc2FjdGlvbnMgd2lsbCBiZSBhYmxlIHRvIHVzZSBpdCBmb3Ig cXVlcmllcy4KICAqCi0gKiBEb2luZyB0d28gZnVsbCB0YWJsZSBzY2FucyBpcyBhIGJydXRlLWZv cmNlIHN0cmF0ZWd5LiAgV2UgY291bGQgdHJ5IHRvIGJlCi0gKiBjbGV2ZXJlciwgZWcgc3Rvcmlu ZyBuZXcgdHVwbGVzIGluIGEgc3BlY2lhbCBhcmVhIG9mIHRoZSB0YWJsZSAocGVyaGFwcwotICog bWFraW5nIHRoZSB0YWJsZSBhcHBlbmQtb25seSBieSBzZXR0aW5nIHVzZV9mc20pLiAgSG93ZXZl ciB0aGF0IHdvdWxkCi0gKiBhZGQgeWV0IG1vcmUgbG9ja2luZyBpc3N1ZXMuCisgKiBBbHNvLCBz b21lIGFjdGlvbnMgdG8gY29uY3VycmVudCBkcm9wIHRoZSBhdXhpbGlhcnkgaW5kZXggYXJlIHBl cmZvcm1lZC4KICAqLwogdm9pZAotdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4 SWQsIFNuYXBzaG90IHNuYXBzaG90KQordmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGlu ZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIHsKIAlSZWxhdGlvbglo ZWFwUmVsYXRpb24sCi0JCQkJaW5kZXhSZWxhdGlvbjsKKwkJCQlpbmRleFJlbGF0aW9uLAorCQkJ CWF1eEluZGV4UmVsYXRpb247CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwotCUluZGV4VmFjdXVt SW5mbyBpdmluZm87Ci0JVmFsaWRhdGVJbmRleFN0YXRlIHN0YXRlOworCUluZGV4VmFjdXVtSW5m byBpdmluZm8sIGF1eGl2aW5mbzsKKwlWYWxpZGF0ZUluZGV4U3RhdGUgc3RhdGUsIGF1eFN0YXRl OwogCU9pZAkJCXNhdmVfdXNlcmlkOwogCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJ c2F2ZV9uZXN0bGV2ZWw7CisJLyogVXNlIDgwJSBvZiBtYWludGVuYW5jZV93b3JrX21lbSB0byB0 YXJnZXQgaW5kZXggc29ydGluZyBhbmQKKwkgKiAxMCUgcmVzdCBmb3IgYXV4aWxpYXJ5LgorCSAq CisJICogUmVzdCAxMCUgd2lsbCBiZSB1c2VkIGZvciB0dXBsZXN0b3JlIGxhdGVyLiAqLworCWlu dDY0CQltYWluX3dvcmtfbWVtX3BhcnQgPSAoaW50NjQpIG1haW50ZW5hbmNlX3dvcmtfbWVtICog OCAvIDEwOworCWludAkJCWF1eF93b3JrX21lbV9wYXJ0ID0gbWFpbnRlbmFuY2Vfd29ya19tZW0g LyAxMDsKIAogCXsKIAkJY29uc3QgaW50CXByb2dyZXNzX2luZGV4W10gPSB7CkBAIC0zNDExLDYg KzM1OTQsNyBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNo b3Qgc25hcHNob3QpCiAJUmVzdHJpY3RTZWFyY2hQYXRoKCk7CiAKIAlpbmRleFJlbGF0aW9uID0g aW5kZXhfb3BlbihpbmRleElkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwlhdXhJbmRleFJlbGF0aW9u ID0gaW5kZXhfb3BlbihhdXhJbmRleElkLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAogCS8qCiAJICog RmV0Y2ggaW5mbyBuZWVkZWQgZm9yIGluZGV4X2luc2VydC4gIChZb3UgbWlnaHQgdGhpbmsgdGhp cyBzaG91bGQgYmUKQEAgLTM0MzUsMTUgKzM2MTksNTUgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhl YXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCWl2aW5mby5zdHJhdGVneSA9 IE5VTEw7CiAJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gdHJ1ZTsKIAorCS8qCisJICogQ29weSBh bGwgaW5mbyB0byBhdXhpbGlhcnkgaW5mbywgY2hhbmdpbmcgb25seSByZWxhdGlvbi4KKwkgKi8K KwlhdXhpdmluZm8gPSBpdmluZm87CisJYXV4aXZpbmZvLmluZGV4ID0gYXV4SW5kZXhSZWxhdGlv bjsKKwogCS8qCiAJICogRW5jb2RlIFRJRHMgYXMgaW50OCB2YWx1ZXMgZm9yIHRoZSBzb3J0LCBy YXRoZXIgdGhhbiBkaXJlY3RseSBzb3J0aW5nCiAJICogaXRlbSBwb2ludGVycy4gIFRoaXMgY2Fu IGJlIHNpZ25pZmljYW50bHkgZmFzdGVyLCBwcmltYXJpbHkgYmVjYXVzZSBUSUQKIAkgKiBpcyBh IHBhc3MtYnktcmVmZXJlbmNlIHR5cGUgb24gYWxsIHBsYXRmb3Jtcywgd2hlcmVhcyBpbnQ4IGlz CiAJICogcGFzcy1ieS12YWx1ZSBvbiBtb3N0IHBsYXRmb3Jtcy4KIAkgKi8KKwlhdXhTdGF0ZS50 dXBsZXNvcnQgPSB0dXBsZXNvcnRfYmVnaW5fZGF0dW0oSU5UOE9JRCwgSW50OExlc3NPcGVyYXRv ciwKKwkJCQkJCQkJCQkgICBJbnZhbGlkT2lkLCBmYWxzZSwKKwkJCQkJCQkJCQkgICBhdXhfd29y a19tZW1fcGFydCwKKwkJCQkJCQkJCQkgICBOVUxMLCBUVVBMRVNPUlRfTk9ORSk7CisJYXV4U3Rh dGUuaHR1cHMgPSBhdXhTdGF0ZS5pdHVwcyA9IGF1eFN0YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwor CisJKHZvaWQpIGluZGV4X2J1bGtfZGVsZXRlKCZhdXhpdmluZm8sIE5VTEwsCisJCQkJCQkJIHZh bGlkYXRlX2luZGV4X2NhbGxiYWNrLCAmYXV4U3RhdGUpOworCS8qIElmIGF1eCBpbmRleCBpcyBl bXB0eSwgbWVyZ2UgbWF5IGJlIHNraXBwZWQgKi8KKwlpZiAoYXV4U3RhdGUuaXR1cHMgPT0gMCkK Kwl7CisJCXR1cGxlc29ydF9lbmQoYXV4U3RhdGUudHVwbGVzb3J0KTsKKwkJYXV4U3RhdGUudHVw bGVzb3J0ID0gTlVMTDsKKworCQkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVk IGJ5IGluZGV4IGZ1bmN0aW9ucyAqLworCQlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxl dmVsKTsKKworCQkvKiBSZXN0b3JlIHVzZXJpZCBhbmQgc2VjdXJpdHkgY29udGV4dCAqLworCQlT ZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNlcmlkLCBzYXZlX3NlY19jb250ZXh0KTsKKwor CQkvKiBDbG9zZSByZWxzLCBidXQga2VlcCBsb2NrcyAqLworCQlpbmRleF9jbG9zZShhdXhJbmRl eFJlbGF0aW9uLCBOb0xvY2spOworCQlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9uLCBOb0xvY2sp OworCQl0YWJsZV9jbG9zZShoZWFwUmVsYXRpb24sIE5vTG9jayk7CisKKwkJUHVzaEFjdGl2ZVNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCWxpbWl0WG1pbiA9IEdldEFjdGl2 ZVNuYXBzaG90KCktPnhtaW47CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCUludmFsaWRhdGVD YXRhbG9nU25hcHNob3QoKTsKKworCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOworCQlyZXR1cm4gbGltaXRYbWluOworCX0KKwogCXN0YXRlLnR1cGxlc29ydCA9 IHR1cGxlc29ydF9iZWdpbl9kYXR1bShJTlQ4T0lELCBJbnQ4TGVzc09wZXJhdG9yLAogCQkJCQkJ CQkJCQlJbnZhbGlkT2lkLCBmYWxzZSwKLQkJCQkJCQkJCQkJbWFpbnRlbmFuY2Vfd29ya19tZW0s CisJCQkJCQkJCQkJCShpbnQpIG1haW5fd29ya19tZW1fcGFydCwKIAkJCQkJCQkJCQkJTlVMTCwg VFVQTEVTT1JUX05PTkUpOwogCXN0YXRlLmh0dXBzID0gc3RhdGUuaXR1cHMgPSBzdGF0ZS50dXBz X2luc2VydGVkID0gMDsKIApAQCAtMzQ2NiwyNyArMzY5MCwzMCBAQCB2YWxpZGF0ZV9pbmRleChP aWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJCXBnc3RhdF9wcm9n cmVzc191cGRhdGVfbXVsdGlfcGFyYW0oMywgcHJvZ3Jlc3NfaW5kZXgsIHByb2dyZXNzX3ZhbHMp OwogCX0KIAl0dXBsZXNvcnRfcGVyZm9ybXNvcnQoc3RhdGUudHVwbGVzb3J0KTsKKwl0dXBsZXNv cnRfcGVyZm9ybXNvcnQoYXV4U3RhdGUudHVwbGVzb3J0KTsKIAogCS8qCi0JICogTm93IHNjYW4g dGhlIGhlYXAgYW5kICJtZXJnZSIgaXQgd2l0aCB0aGUgaW5kZXgKKwkgKiBOb3cgbWVyZ2UgYm90 aCBpbmRleGVzCiAJICovCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURB VEVfVEFCTEVTQ0FOKTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFU RV9JRFhNRVJHRSk7CiAJdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbihoZWFwUmVsYXRpb24sCiAJ CQkJCQkJICBpbmRleFJlbGF0aW9uLAogCQkJCQkJCSAgaW5kZXhJbmZvLAogCQkJCQkJCSAgc25h cHNob3QsCi0JCQkJCQkJICAmc3RhdGUpOworCQkJCQkJCSAgJnN0YXRlLAorCQkJCQkJCSAgJmF1 eFN0YXRlKTsKIAotCS8qIERvbmUgd2l0aCB0dXBsZXNvcnQgb2JqZWN0ICovCi0JdHVwbGVzb3J0 X2VuZChzdGF0ZS50dXBsZXNvcnQpOworCS8qIFR1cGxlIHNvcnQgY2xvc2VkIGJ5IHRhYmxlX2lu ZGV4X3ZhbGlkYXRlX3NjYW4gKi8KKwlBc3NlcnQoc3RhdGUudHVwbGVzb3J0ID09IE5VTEwgJiYg YXV4U3RhdGUudHVwbGVzb3J0ID09IE5VTEwpOwogCiAJLyogTWFrZSBzdXJlIHRvIHJlbGVhc2Ug cmVzb3VyY2VzIGNhY2hlZCBpbiBpbmRleEluZm8gKGlmIG5lZWRlZCkuICovCiAJaW5kZXhfaW5z ZXJ0X2NsZWFudXAoaW5kZXhSZWxhdGlvbiwgaW5kZXhJbmZvKTsKIAogCWVsb2coREVCVUcyLAot CQkgInZhbGlkYXRlX2luZGV4IGZvdW5kICUuMGYgaGVhcCB0dXBsZXMsICUuMGYgaW5kZXggdHVw bGVzOyBpbnNlcnRlZCAlLjBmIG1pc3NpbmcgdHVwbGVzIiwKLQkJIHN0YXRlLmh0dXBzLCBzdGF0 ZS5pdHVwcywgc3RhdGUudHVwc19pbnNlcnRlZCk7CisJCSAidmFsaWRhdGVfaW5kZXggZmV0Y2hl ZCAlLjBmIGhlYXAgdHVwbGVzLCAlLjBmIGluZGV4IHR1cGxlczsiCisJCQkJCQkiICUuMGYgYXV4 IGluZGV4IHR1cGxlczsgaW5zZXJ0ZWQgJS4wZiBtaXNzaW5nIHR1cGxlcyIsCisJCSBzdGF0ZS5o dHVwcywgc3RhdGUuaXR1cHMsIGF1eFN0YXRlLml0dXBzLCBzdGF0ZS50dXBzX2luc2VydGVkKTsK IAogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rp b25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CkBAIC0zNDk1LDYg KzM3MjIsNyBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNo b3Qgc25hcHNob3QpCiAJU2V0VXNlcklkQW5kU2VjQ29udGV4dChzYXZlX3VzZXJpZCwgc2F2ZV9z ZWNfY29udGV4dCk7CiAKIAkvKiBDbG9zZSByZWxzLCBidXQga2VlcCBsb2NrcyAqLworCWluZGV4 X2Nsb3NlKGF1eEluZGV4UmVsYXRpb24sIE5vTG9jayk7CiAJaW5kZXhfY2xvc2UoaW5kZXhSZWxh dGlvbiwgTm9Mb2NrKTsKIAl0YWJsZV9jbG9zZShoZWFwUmVsYXRpb24sIE5vTG9jayk7CiB9CkBA IC0zNTU1LDYgKzM3ODMsMTEgQEAgaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKE9pZCBpbmRleElkLCBJ bmRleFN0YXRlRmxhZ3NBY3Rpb24gYWN0aW9uKQogCQkJQXNzZXJ0KCFpbmRleEZvcm0tPmluZGlz dmFsaWQpOwogCQkJaW5kZXhGb3JtLT5pbmRpc3ZhbGlkID0gdHJ1ZTsKIAkJCWJyZWFrOworCQlj YXNlIElOREVYX0RST1BfQ0xFQVJfUkVBRFk6CisJCQkvKiBDbGVhciBpbmRpc3JlYWR5IGR1cmlu ZyBhIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgc2VxdWVuY2UgKi8KKwkJCUFzc2VydCghaW5k ZXhGb3JtLT5pbmRpc3ZhbGlkKTsKKwkJCWluZGV4Rm9ybS0+aW5kaXNyZWFkeSA9IGZhbHNlOwor CQkJYnJlYWs7CiAJCWNhc2UgSU5ERVhfRFJPUF9DTEVBUl9WQUxJRDoKIAogCQkJLyoKQEAgLTM4 MjYsNiArNDA1OSwxMyBAQCByZWluZGV4X2luZGV4KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBP aWQgaW5kZXhJZCwKIAkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25TdHJhdHMgPSBOVUxMOwogCX0K IAorCS8qIEF1eGlsaWFyeSBpbmRleGVzIGFyZSBub3QgYWxsb3dlZCB0byBiZSByZWJ1aWx0ICov CisJaWYgKGluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KQorCQllcmVwb3J0KEVSUk9SLAorCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1zZygicmVpbmRl eCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlc1wiIG5vdCBzdXBwb3J0ZWQiLAorCQkJCQlSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShpUmVsKSkpKTsKKwogCS8qIFN1cHByZXNzIHVzZSBvZiB0aGUgdGFy Z2V0IGluZGV4IHdoaWxlIHJlYnVpbGRpbmcgaXQgKi8KIAlTZXRSZWluZGV4UHJvY2Vzc2luZyho ZWFwSWQsIGluZGV4SWQpOwogCkBAIC00MDY4LDYgKzQzMDgsNyBAQCByZWluZGV4X3JlbGF0aW9u KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsaWQsIGludCBmbGFncywKIAl7CiAJCU9p ZAkJCWluZGV4T2lkID0gbGZpcnN0X29pZChpbmRleElkKTsKIAkJT2lkCQkJaW5kZXhOYW1lc3Bh Y2VJZCA9IGdldF9yZWxfbmFtZXNwYWNlKGluZGV4T2lkKTsKKwkJT2lkCQkJaW5kZXhBbSA9IGdl dF9yZWxfcmVsYW0oaW5kZXhPaWQpOwogCiAJCS8qCiAJCSAqIFNraXAgYW55IGludmFsaWQgaW5k ZXhlcyBvbiBhIFRPQVNUIHRhYmxlLiAgVGhlc2UgY2FuIG9ubHkgYmUKQEAgLTQwOTMsNiArNDMz NCwxOCBAQCByZWluZGV4X3JlbGF0aW9uKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVs aWQsIGludCBmbGFncywKIAkJCWNvbnRpbnVlOwogCQl9CiAKKwkJaWYgKGluZGV4QW0gPT0gU1RJ Ul9BTV9PSUQpCisJCXsKKwkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJza2lwcGluZyByZWluZGV4 IG9mIGF1eGlsaWFyeSBpbmRleCBcIiVzLiVzXCIiLAorCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFt ZShpbmRleE5hbWVzcGFjZUlkKSwKKwkJCQkJCQlnZXRfcmVsX25hbWUoaW5kZXhPaWQpKSkpOwor CQkJaWYgKGZsYWdzICYgUkVJTkRFWF9SRUxfU1VQUFJFU1NfSU5ERVhfVVNFKQorCQkJCVJlbW92 ZVJlaW5kZXhQZW5kaW5nKGluZGV4T2lkKTsKKwkJCWNvbnRpbnVlOworCQl9CisKIAkJcmVpbmRl eF9pbmRleChzdG10LCBpbmRleE9pZCwgIShmbGFncyAmIFJFSU5ERVhfUkVMX0NIRUNLX0NPTlNU UkFJTlRTKSwKIAkJCQkJICBwZXJzaXN0ZW5jZSwgcGFyYW1zKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fdmlld3Muc3FsCmluZGV4IGM3N2ZhMDIzNGJiLi44OGQ5NGU3Y2VkOSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTI5MSwxNiArMTI5MSwxNyBAQCBDUkVBVEUg VklFVyBwZ19zdGF0X3Byb2dyZXNzX2NyZWF0ZV9pbmRleCBBUwogICAgICAgICAgICAgICAgICAg ICAgIEVORCBBUyBjb21tYW5kLAogICAgICAgICBDQVNFIFMucGFyYW0xMCBXSEVOIDAgVEhFTiAn aW5pdGlhbGl6aW5nJwogICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDEgVEhFTiAnd2FpdGlu ZyBmb3Igd3JpdGVycyBiZWZvcmUgYnVpbGQnCi0gICAgICAgICAgICAgICAgICAgICAgIFdIRU4g MiBUSEVOICdidWlsZGluZyBpbmRleCcgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiAy IFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMgdG8gdXNlIGF1eGlsaWFyeSBpbmRleCcKKyAgICAg ICAgICAgICAgICAgICAgICAgV0hFTiAzIFRIRU4gJ2J1aWxkaW5nIGluZGV4JyB8fAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ09BTEVTQ0UoKCc6ICcgfHwgcGdfaW5kZXhhbV9wcm9ncmVz c19waGFzZW5hbWUoUy5wYXJhbTk6Om9pZCwgUy5wYXJhbTExKSksCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnJykKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiAzIFRI RU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMgYmVmb3JlIHZhbGlkYXRpb24nCi0gICAgICAgICAgICAg ICAgICAgICAgIFdIRU4gNCBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyBpbmRleCcK LSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA1IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNv cnRpbmcgdHVwbGVzJwotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDYgVEhFTiAnaW5kZXgg dmFsaWRhdGlvbjogc2Nhbm5pbmcgdGFibGUnCi0gICAgICAgICAgICAgICAgICAgICAgIFdIRU4g NyBUSEVOICd3YWl0aW5nIGZvciBvbGQgc25hcHNob3RzJwotICAgICAgICAgICAgICAgICAgICAg ICBXSEVOIDggVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUgbWFya2luZyBkZWFkJwot ICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDkgVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBi ZWZvcmUgZHJvcHBpbmcnCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNCBUSEVOICd3YWl0 aW5nIGZvciB3cml0ZXJzIGJlZm9yZSB2YWxpZGF0aW9uJworICAgICAgICAgICAgICAgICAgICAg ICBXSEVOIDUgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc2Nhbm5pbmcgaW5kZXgnCisgICAgICAg ICAgICAgICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzb3J0aW5nIHR1 cGxlcycKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA3IFRIRU4gJ2luZGV4IHZhbGlkYXRp b246IG1lcmdpbmcgaW5kZXhlcycKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA4IFRIRU4g J3dhaXRpbmcgZm9yIG9sZCBzbmFwc2hvdHMnCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4g OSBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBtYXJraW5nIGRlYWQnCisgICAgICAg ICAgICAgICAgICAgICAgIFdIRU4gMTAgVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUg ZHJvcHBpbmcnCiAgICAgICAgICAgICAgICAgICAgICAgIEVORCBhcyBwaGFzZSwKICAgICAgICAg Uy5wYXJhbTQgQVMgbG9ja2Vyc190b3RhbCwKICAgICAgICAgUy5wYXJhbTUgQVMgbG9ja2Vyc19k b25lLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCBkZGExZWIwZTk0Yy4uOGM3MjFlMjA5 OTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xODEsNiArMTgxLDcgQEAgQ2hlY2tJ bmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCQkJCQkgYm9vbCBpc1dpdGhvdXRPdmVybGFwcykK IHsKIAlib29sCQlpc2NvbnN0cmFpbnQ7CisJYm9vbAkJaXNhdXhpbGlhcnk7CiAJT2lkCQkgICAq dHlwZUlkczsKIAlPaWQJCSAgICpjb2xsYXRpb25JZHM7CiAJT2lkCQkgICAqb3BjbGFzc0lkczsK QEAgLTIzMSw2ICsyMzIsNyBAQCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAKIAlh bWNhbm9yZGVyID0gYW1Sb3V0aW5lLT5hbWNhbm9yZGVyOwogCWFtc3VtbWFyaXppbmcgPSBhbVJv dXRpbmUtPmFtc3VtbWFyaXppbmc7CisJaXNhdXhpbGlhcnkgPSBhY2Nlc3NNZXRob2RJZCA9PSBT VElSX0FNX09JRDsKIAogCS8qCiAJICogQ29tcHV0ZSB0aGUgb3BlcmF0b3IgY2xhc3NlcywgY29s bGF0aW9ucywgYW5kIGV4Y2x1c2lvbiBvcGVyYXRvcnMgZm9yCkBAIC0yNDIsNyArMjQ0LDggQEAg Q2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCSAqLwogCWluZGV4SW5mbyA9IG1ha2VJ bmRleEluZm8obnVtYmVyT2ZBdHRyaWJ1dGVzLCBudW1iZXJPZkF0dHJpYnV0ZXMsCiAJCQkJCQkJ ICBhY2Nlc3NNZXRob2RJZCwgTklMLCBOSUwsIGZhbHNlLCBmYWxzZSwKLQkJCQkJCQkgIGZhbHNl LCBmYWxzZSwgYW1zdW1tYXJpemluZywgaXNXaXRob3V0T3ZlcmxhcHMpOworCQkJCQkJCSAgZmFs c2UsIGZhbHNlLCBhbXN1bW1hcml6aW5nLAorCQkJCQkJCSAgaXNXaXRob3V0T3ZlcmxhcHMsIGlz YXV4aWxpYXJ5KTsKIAl0eXBlSWRzID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1 dGVzKTsKIAljb2xsYXRpb25JZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0 ZXMpOwogCW9wY2xhc3NJZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMp OwpAQCAtNTUyLDYgKzU1NSw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogewogCWJvb2wJ CWNvbmN1cnJlbnQ7CiAJY2hhcgkgICAqaW5kZXhSZWxhdGlvbk5hbWU7CisJY2hhcgkgICAqYXV4 SW5kZXhSZWxhdGlvbk5hbWUgPSBOVUxMOwogCWNoYXIJICAgKmFjY2Vzc01ldGhvZE5hbWU7CiAJ T2lkCQkgICAqdHlwZUlkczsKIAlPaWQJCSAgICpjb2xsYXRpb25JZHM7CkBAIC01NjEsNiArNTY1 LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJT2lkCQkJbmFtZXNwYWNlSWQ7CiAJT2lk CQkJdGFibGVzcGFjZUlkOwogCU9pZAkJCWNyZWF0ZWRDb25zdHJhaW50SWQgPSBJbnZhbGlkT2lk OworCU9pZAkJCWF1eEluZGV4UmVsYXRpb25JZCA9IEludmFsaWRPaWQ7CiAJTGlzdAkgICAqaW5k ZXhDb2xOYW1lczsKIAlMaXN0CSAgICphbGxJbmRleFBhcmFtczsKIAlSZWxhdGlvbglyZWw7CkBA IC01ODIsNiArNTg3LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJaW50CQkJbnVtYmVy T2ZLZXlBdHRyaWJ1dGVzOwogCVRyYW5zYWN0aW9uSWQgbGltaXRYbWluOwogCU9iamVjdEFkZHJl c3MgYWRkcmVzczsKKwlPYmplY3RBZGRyZXNzIGF1eEFkZHJlc3M7CiAJTG9ja1JlbElkCWhlYXBy ZWxpZDsKIAlMT0NLVEFHCQloZWFwbG9ja3RhZzsKIAlMT0NLTU9ERQlsb2NrbW9kZTsKQEAgLTgz Miw2ICs4MzgsMTUgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCQkJCQkJCQkJCXN0bXQt PmV4Y2x1ZGVPcE5hbWVzLAogCQkJCQkJCQkJCQlzdG10LT5wcmltYXJ5LAogCQkJCQkJCQkJCQlz dG10LT5pc2NvbnN0cmFpbnQpOworCS8qCisJICogU2VsZWN0IG5hbWUgZm9yIGF1eGlsaWFyeSBp bmRleAorCSAqLworCWlmIChjb25jdXJyZW50KQorCQlhdXhJbmRleFJlbGF0aW9uTmFtZSA9IENo b29zZVJlbGF0aW9uTmFtZShpbmRleFJlbGF0aW9uTmFtZSwKKwkJCQkJCQkJCQkJCSAgTlVMTCwK KwkJCQkJCQkJCQkJCSAgImNjYXV4IiwKKwkJCQkJCQkJCQkJCSAgbmFtZXNwYWNlSWQsCisJCQkJ CQkJCQkJCQkgIGZhbHNlKTsKIAogCS8qCiAJICogbG9vayB1cCB0aGUgYWNjZXNzIG1ldGhvZCwg dmVyaWZ5IGl0IGNhbiBoYW5kbGUgdGhlIHJlcXVlc3RlZCBmZWF0dXJlcwpAQCAtOTI3LDcgKzk0 Miw4IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkJCSAgIWNvbmN1cnJlbnQsCiAJ CQkJCQkJICBjb25jdXJyZW50LAogCQkJCQkJCSAgYW1pc3N1bW1hcml6aW5nLAotCQkJCQkJCSAg c3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMpOworCQkJCQkJCSAgc3RtdC0+aXN3aXRob3V0b3Zlcmxh cHMsCisJCQkJCQkJICBmYWxzZSk7CiAKIAl0eXBlSWRzID0gcGFsbG9jX2FycmF5KE9pZCwgbnVt YmVyT2ZBdHRyaWJ1dGVzKTsKIAljb2xsYXRpb25JZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1i ZXJPZkF0dHJpYnV0ZXMpOwpAQCAtMTU5Miw2ICsxNjA4LDE2IEBAIERlZmluZUluZGV4KE9pZCB0 YWJsZUlkLAogCQlyZXR1cm4gYWRkcmVzczsKIAl9CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgY29u Y3VycmVudCBidWlsZCAtIGNyZWF0ZSBhdXhpbGlhcnkgaW5kZXggcmVjb3JkLgorCSAqLworCWlm IChjb25jdXJyZW50KQorCXsKKwkJYXV4SW5kZXhSZWxhdGlvbklkID0gaW5kZXhfY29uY3VycmVu dGx5X2NyZWF0ZV9hdXgocmVsLCBpbmRleFJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCXRhYmxlc3Bh Y2VJZCwgYXV4SW5kZXhSZWxhdGlvbk5hbWUpOworCQlPYmplY3RBZGRyZXNzU2V0KGF1eEFkZHJl c3MsIFJlbGF0aW9uUmVsYXRpb25JZCwgYXV4SW5kZXhSZWxhdGlvbklkKTsKKwl9CisKIAlBdEVP WGFjdF9HVUMoZmFsc2UsIHJvb3Rfc2F2ZV9uZXN0bGV2ZWwpOwogCVNldFVzZXJJZEFuZFNlY0Nv bnRleHQocm9vdF9zYXZlX3VzZXJpZCwgcm9vdF9zYXZlX3NlY19jb250ZXh0KTsKIApAQCAtMTYy MCwxMSArMTY0NiwxMSBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkvKgogCSAqIEZvciBh IGNvbmN1cnJlbnQgYnVpbGQsIGl0J3MgaW1wb3J0YW50IHRvIG1ha2UgdGhlIGNhdGFsb2cgZW50 cmllcwogCSAqIHZpc2libGUgdG8gb3RoZXIgdHJhbnNhY3Rpb25zIGJlZm9yZSB3ZSBzdGFydCB0 byBidWlsZCB0aGUgaW5kZXguIFRoYXQKLQkgKiB3aWxsIHByZXZlbnQgdGhlbSBmcm9tIG1ha2lu ZyBpbmNvbXBhdGlibGUgSE9UIHVwZGF0ZXMuICBUaGUgbmV3IGluZGV4Ci0JICogd2lsbCBiZSBt YXJrZWQgbm90IGluZGlzcmVhZHkgYW5kIG5vdCBpbmRpc3ZhbGlkLCBzbyB0aGF0IG5vIG9uZSBl bHNlCi0JICogdHJpZXMgdG8gZWl0aGVyIGluc2VydCBpbnRvIGl0IG9yIHVzZSBpdCBmb3IgcXVl cmllcy4KKwkgKiB3aWxsIHByZXZlbnQgdGhlbSBmcm9tIG1ha2luZyBpbmNvbXBhdGlibGUgSE9U IHVwZGF0ZXMuIE5ldyBpbmRleGVzCisJICogKG1haW4gYW5kIGF1eGlsaWFyeSkgd2lsbCBiZSBt YXJrZWQgbm90IGluZGlzcmVhZHkgYW5kIG5vdCBpbmRpc3ZhbGlkLAorCSAqIHNvIHRoYXQgbm8g b25lIGVsc2UgdHJpZXMgdG8gZWl0aGVyIGluc2VydCBpbnRvIGl0IG9yIHVzZSBpdCBmb3IgcXVl cmllcy4KIAkgKgotCSAqIFdlIG11c3QgY29tbWl0IG91ciBjdXJyZW50IHRyYW5zYWN0aW9uIHNv IHRoYXQgdGhlIGluZGV4IGJlY29tZXMKKwkgKiBXZSBtdXN0IGNvbW1pdCBvdXIgY3VycmVudCB0 cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBpbmRleGVzIGJlY29tZXMKIAkgKiB2aXNpYmxlOyB0aGVu IHN0YXJ0IGFub3RoZXIuICBOb3RlIHRoYXQgYWxsIHRoZSBkYXRhIHN0cnVjdHVyZXMgd2UganVz dAogCSAqIGJ1aWx0IGFyZSBsb3N0IGluIHRoZSBjb21taXQuICBUaGUgb25seSBkYXRhIHdlIGtl ZXAgcGFzdCBoZXJlIGFyZSB0aGUKIAkgKiByZWxhdGlvbiBJRHMuCkBAIC0xNjM0LDcgKzE2NjAs NyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBjYW5ub3QgYmxvY2ssIGV2ZW4gaWYg c29tZW9uZSBlbHNlIGlzIHdhaXRpbmcgZm9yIGFjY2VzcywgYmVjYXVzZSB3ZQogCSAqIGFscmVh ZHkgaGF2ZSB0aGUgc2FtZSBsb2NrIHdpdGhpbiBvdXIgdHJhbnNhY3Rpb24uCiAJICoKLQkgKiBO b3RlOiB3ZSBkb24ndCBjdXJyZW50bHkgYm90aGVyIHdpdGggYSBzZXNzaW9uIGxvY2sgb24gdGhl IGluZGV4LAorCSAqIE5vdGU6IHdlIGRvbid0IGN1cnJlbnRseSBib3RoZXIgd2l0aCBhIHNlc3Np b24gbG9jayBvbiB0aGUgaW5kZXhlcywKIAkgKiBiZWNhdXNlIHRoZXJlIGFyZSBubyBvcGVyYXRp b25zIHRoYXQgY291bGQgY2hhbmdlIGl0cyBzdGF0ZSB3aGlsZSB3ZQogCSAqIGhvbGQgbG9jayBv biB0aGUgcGFyZW50IHRhYmxlLiAgVGhpcyBtaWdodCBuZWVkIHRvIGNoYW5nZSBsYXRlci4KIAkg Ki8KQEAgLTE2NzMsNyArMTY5OSw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIHdp dGggdGhlIG9sZCBsaXN0IG9mIGluZGV4ZXMuICBVc2UgU2hhcmVMb2NrIHRvIGNvbnNpZGVyIHJ1 bm5pbmcKIAkgKiB0cmFuc2FjdGlvbnMgdGhhdCBob2xkIGxvY2tzIHRoYXQgcGVybWl0IHdyaXRp bmcgdG8gdGhlIHRhYmxlLiAgTm90ZSB3ZQogCSAqIGRvIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0 IHhhY3RzIHRoYXQgb3BlbiB0aGUgdGFibGUgZm9yIHdyaXRpbmcgYWZ0ZXIKLQkgKiB0aGlzIHBv aW50OyB0aGV5IHdpbGwgc2VlIHRoZSBuZXcgaW5kZXggd2hlbiB0aGV5IG9wZW4gaXQuCisJICog dGhpcyBwb2ludDsgdGhleSB3aWxsIHNlZSB0aGUgbmV3IGluZGV4ZXMgd2hlbiB0aGV5IG9wZW4g aXQuCiAJICoKIAkgKiBOb3RlOiB0aGUgcmVhc29uIHdlIHVzZSBhY3R1YWwgbG9jayBhY3F1aXNp dGlvbiBoZXJlLCByYXRoZXIgdGhhbiBqdXN0CiAJICogY2hlY2tpbmcgdGhlIFByb2NBcnJheSBh bmQgc2xlZXBpbmcsIGlzIHRoYXQgZGVhZGxvY2sgaXMgcG9zc2libGUgaWYKQEAgLTE2ODUsMTQg KzE3MTEsMzggQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAKIAkvKgogCSAqIEF0IHRoaXMg bW9tZW50IHdlIGFyZSBzdXJlIHRoYXQgdGhlcmUgYXJlIG5vIHRyYW5zYWN0aW9ucyB3aXRoIHRo ZQotCSAqIHRhYmxlIG9wZW4gZm9yIHdyaXRlIHRoYXQgZG9uJ3QgaGF2ZSB0aGlzIG5ldyBpbmRl eCBpbiB0aGVpciBsaXN0IG9mCisJICogdGFibGUgb3BlbiBmb3Igd3JpdGUgdGhhdCBkb24ndCBo YXZlIHRoaXMgbmV3IGluZGV4ZXMgaW4gdGhlaXIgbGlzdCBvZgogCSAqIGluZGV4ZXMuICBXZSBo YXZlIHdhaXRlZCBvdXQgYWxsIHRoZSBleGlzdGluZyB0cmFuc2FjdGlvbnMgYW5kIGFueSBuZXcK LQkgKiB0cmFuc2FjdGlvbiB3aWxsIGhhdmUgdGhlIG5ldyBpbmRleCBpbiBpdHMgbGlzdCwgYnV0 IHRoZSBpbmRleCBpcyBzdGlsbAotCSAqIG1hcmtlZCBhcyAibm90LXJlYWR5LWZvci1pbnNlcnRz Ii4gIFRoZSBpbmRleCBpcyBjb25zdWx0ZWQgd2hpbGUKKwkgKiB0cmFuc2FjdGlvbiB3aWxsIGhh dmUgYm90aCBuZXcgaW5kZXhlcyBpbiBpdHMgbGlzdCwgYnV0IGluZGV4ZXMgYXJlIHN0aWxsCisJ ICogbWFya2VkIGFzICJub3QtcmVhZHktZm9yLWluc2VydHMiLiBUaGUgaW5kZXhlcyBhcmUgY29u c3VsdGVkIHdoaWxlCiAJICogZGVjaWRpbmcgSE9ULXNhZmV0eSB0aG91Z2guICBUaGlzIGFycmFu Z2VtZW50IGVuc3VyZXMgdGhhdCBubyBuZXcgSE9UCiAJICogY2hhaW5zIGNhbiBiZSBjcmVhdGVk IHdoZXJlIHRoZSBuZXcgdHVwbGUgYW5kIHRoZSBvbGQgdHVwbGUgaW4gdGhlCiAJICogY2hhaW4g aGF2ZSBkaWZmZXJlbnQgaW5kZXgga2V5cy4KIAkgKgorCSAqIE5vdyBjYWxsIGJ1aWxkIG9uIGF1 eGlsaWFyeSBpbmRleC4gSW5kZXggd2lsbCBiZSBjcmVhdGVkIGVtcHR5IHdpdGhvdXQKKwkgKiBh bnkgYWN0dWFsIGhlYXAgc2NhbiwgYnV0IG1hcmtlZCBhcyAicmVhZHktZm9yLWluc2VydHMiLiBU aGUgZ29hbCBvZgorCSAqIHRoYXQgaW5kZXggaXMgYWNjdW11bGF0ZSBuZXcgdHVwbGVzIHdoaWxl IG1haW4gaW5kZXggaXMgYWN0dWFsbHkgYnVpbHQuCisJICovCisJaW5kZXhfY29uY3VycmVudGx5 X2J1aWxkKHRhYmxlSWQsIGF1eEluZGV4UmVsYXRpb25JZCk7CisKKwlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyogVGVsbCBjb25j dXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwor CWlmIChzYWZlX2luZGV4KQorCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOworCXBnc3RhdF9w cm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAorCQkJCQkJCSBQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsKKwkvKgorCSAqIE5vdyB3ZSBuZWVkIHRv IGVuc3VyZSBhcmUgbm8gdHJhbnNhY3Rpb25zIHdpdGggdGhlIHdpdGggYXV4aWxpYXJ5IGluZGV4 CisJICogbWFya2VkIGFzICJub3QtcmVhZHktZm9yLWluc2VydHMiLgorCSAqLworCVdhaXRGb3JM b2NrZXJzKGhlYXBsb2NrdGFnLCBTaGFyZUxvY2ssIHRydWUpOworCisJLyoKKwkgKiBBdCB0aGlz IG1vbWVudCB3ZSBhcmUgc3VyZSB3aGF0IGFsbCBuZXcgdHVwbGVzIGluIHRhYmxlIGFyZSBpbnNl cnRlZCBpbnRvCisJICogYXV4aWxpYXJ5IGluZGV4LiBOb3cgaXQgaXMgdGltZSB0byBidWlsZCB0 aGUgdGFyZ2V0IGluZGV4IGl0c2VsZi4KKwkgKgogCSAqIFdlIGJ1aWxkIHRoZSBpbmRleCB1c2lu ZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2libGUgdXNpbmcgbXVsdGlwbGUKIAkgKiByZWZyZXNo aW5nIHNuYXBzaG90cy4gV2UgY2FuIGJlIHN1cmUgdGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KIAkg KiB0aGVzZSB0dXBsZXMgd2lsbCBiZSBjb21wYXRpYmxlIHdpdGggdGhlIGluZGV4LCBzaW5jZSBh bnkgdXBkYXRlcyBtYWRlCkBAIC0xNzIxLDkgKzE3NzEsMjggQEAgRGVmaW5lSW5kZXgoT2lkIHRh YmxlSWQsCiAJICogdGhlIGluZGV4IG1hcmtlZCBhcyByZWFkLW9ubHkgZm9yIHVwZGF0ZXMuCiAJ ICovCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsKKwkJCQkJCQkJ IFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMpOwogCVdhaXRGb3JMb2NrZXJzKGhlYXBs b2NrdGFnLCBTaGFyZUxvY2ssIHRydWUpOwogCisJLyoKKwkgKiBVcGRhdGluZyBwZ19pbmRleCBt aWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBh IHZhbGlkIHNuYXBzaG90LgorCSAqLworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOworCS8qCisJICogTm93IHRhcmdldCBpbmRleCBpcyBtYXJrZWQgYXMgInJl YWR5IiBmb3IgYWxsIHRyYW5zYWN0aW9ucy4gU28sIGF1eGlsaWFyeQorCSAqIGluZGV4IGlzIG5v dCBtb3JlIG5lZWRlZC4gU28sIHN0YXJ0IHJlbW92aW5nIHByb2Nlc3MgYnkgcmV2ZXJ0aW5nICJy ZWFkeSIKKwkgKiBmbGFnLgorCSAqLworCWluZGV4X3NldF9zdGF0ZV9mbGFncyhhdXhJbmRleFJl bGF0aW9uSWQsIElOREVYX0RST1BfQ0xFQVJfUkVBRFkpOworCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBp bmRleCBxdWFsaWZpZXMgKi8KKwlpZiAoc2FmZV9pbmRleCkKKwkJc2V0X2luZGV4c2FmZV9wcm9j ZmxhZ3MoKTsKKwogCS8qCiAJICogTm93IHRha2UgdGhlICJyZWZlcmVuY2Ugc25hcHNob3QiIHRo YXQgd2lsbCBiZSB1c2VkIGJ5IHZhbGlkYXRlX2luZGV4KCkKIAkgKiB0byBmaWx0ZXIgY2FuZGlk YXRlIHR1cGxlcy4gIEJld2FyZSEgIFRoZXJlIG1pZ2h0IHN0aWxsIGJlIHNuYXBzaG90cyBpbgpA QCAtMTc0MSwyNCArMTgxMCwxNCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKi8KIAlz bmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAlQ dXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwotCiAJLyoKLQkgKiBTY2FuIHRoZSBpbmRleCBh bmQgdGhlIGhlYXAsIGluc2VydCBhbnkgbWlzc2luZyBpbmRleCBlbnRyaWVzLgotCSAqLwotCXZh bGlkYXRlX2luZGV4KHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCwgc25hcHNob3QpOwotCi0JLyoK LQkgKiBEcm9wIHRoZSByZWZlcmVuY2Ugc25hcHNob3QuICBXZSBtdXN0IGRvIHRoaXMgYmVmb3Jl IHdhaXRpbmcgb3V0IG90aGVyCi0JICogc25hcHNob3QgaG9sZGVycywgZWxzZSB3ZSB3aWxsIGRl YWRsb2NrIGFnYWluc3Qgb3RoZXIgcHJvY2Vzc2VzIGFsc28KLQkgKiBkb2luZyBDUkVBVEUgSU5E RVggQ09OQ1VSUkVOVExZLCB3aGljaCB3b3VsZCBzZWUgb3VyIHNuYXBzaG90IGFzIG9uZQotCSAq IHRoZXkgbXVzdCB3YWl0IGZvci4gIEJ1dCBmaXJzdCwgc2F2ZSB0aGUgc25hcHNob3QncyB4bWlu IHRvIHVzZSBhcwotCSAqIGxpbWl0WG1pbiBmb3IgR2V0Q3VycmVudFZpcnR1YWxYSURzKCkuCisJ ICogTWVyZ2UgY29udGVudCBvZiBhdXhpbGlhcnkgYW5kIHRhcmdldCBpbmRleGVzIC0gaW5zZXJ0 IGFueSBtaXNzaW5nIGluZGV4IGVudHJpZXMuCiAJICovCisJdmFsaWRhdGVfaW5kZXgodGFibGVJ ZCwgaW5kZXhSZWxhdGlvbklkLCBhdXhJbmRleFJlbGF0aW9uSWQsIHNuYXBzaG90KTsKIAlsaW1p dFhtaW4gPSBzbmFwc2hvdC0+eG1pbjsKIAogCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJVW5yZWdp c3RlclNuYXBzaG90KHNuYXBzaG90KTsKLQogCS8qCiAJICogVGhlIHNuYXBzaG90IHN1YnN5c3Rl bSBjb3VsZCBzdGlsbCBjb250YWluIHJlZ2lzdGVyZWQgc25hcHNob3RzIHRoYXQKIAkgKiBhcmUg aG9sZGluZyBiYWNrIG91ciBwcm9jZXNzJ3MgYWR2ZXJ0aXNlZCB4bWluOyBpbiBwYXJ0aWN1bGFy LCBpZgpAQCAtMTc4NSw3ICsxODQ0LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICov CiAJSU5KRUNUSU9OX1BPSU5UKCJkZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZCIsIE5VTEwp OwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF LAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMyk7CisJCQkJCQkJCSBQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF80KTsKIAlXYWl0Rm9yT2xkZXJTbmFwc2hvdHMo bGltaXRYbWluLCB0cnVlKTsKIAogCS8qCkBAIC0xODEwLDYgKzE4NjksNTMgQEAgRGVmaW5lSW5k ZXgoT2lkIHRhYmxlSWQsCiAJICogdG8gcmVwbGFuOyBzbyByZWxjYWNoZSBmbHVzaCBvbiB0aGUg aW5kZXggaXRzZWxmIHdhcyBzdWZmaWNpZW50LikKIAkgKi8KIAlDYWNoZUludmFsaWRhdGVSZWxj YWNoZUJ5UmVsaWQoaGVhcHJlbGlkLnJlbElkKTsKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyogVGVsbCBjb25jdXJyZW50IGlu ZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLworCWlmIChzYWZl X2luZGV4KQorCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOworCisJcGdzdGF0X3Byb2dyZXNz X3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJCQkJCQkJIFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRV9XQUlUXzUpOworCS8qIE5vdyB3YWl0IGZvciBhbGwgdHJhbnNhY3Rp b24gdG8gc2VlIGF1eGlsaWFyeSBhcyAibm9uLXJlYWR5IGZvciBpbnNlcnRzIiAqLworCVdhaXRG b3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCB0cnVlKTsKKworCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisK KwkvKgorCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNj ZXNzLCBzbyBlbnN1cmUgd2UKKwkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCisJICovCisJUHVz aEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJLyogTm93IGl0IGlz IHRpbWUgdG8gbWFyayBhdXhpbGlhcnkgaW5kZXggYXMgZGVhZCAqLworCWluZGV4X2NvbmN1cnJl bnRseV9zZXRfZGVhZCh0YWJsZUlkLCBhdXhJbmRleFJlbGF0aW9uSWQpOworCVBvcEFjdGl2ZVNu YXBzaG90KCk7CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0 aW9uQ29tbWFuZCgpOworCisJLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25v cmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLworCWlmIChzYWZlX2luZGV4KQorCQlzZXRfaW5k ZXhzYWZlX3Byb2NmbGFncygpOworCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0UsCisJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9X QUlUXzYpOworCS8qIE5vdyB3YWl0IGZvciBhbGwgdHJhbnNhY3Rpb24gdG8gaWdub3JlIGF1eGls aWFyeSBiZWNhdXNlIGl0IGlzIGRlYWQgKi8KKwlXYWl0Rm9yTG9ja2VycyhoZWFwbG9ja3RhZywg QWNjZXNzRXhjbHVzaXZlTG9jaywgdHJ1ZSk7CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBEcm9wIGF1eGlsaWFy eSBpbmRleC4KKwkgKgorCSAqIFVzZSBQRVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRfTE9DSyBz byB0aGF0IGluZGV4X2Ryb3AoKSB1c2VzIHRoZQorCSAqIHJpZ2h0IGxvY2sgbGV2ZWwuCisJICov CisJcGVyZm9ybURlbGV0aW9uKCZhdXhBZGRyZXNzLCBEUk9QX1JFU1RSSUNULAorCQkJCQkJCSBQ RVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRfTE9DSyB8IFBFUkZPUk1fREVMRVRJT05fSU5URVJO QUwpOwogCiAJLyoKIAkgKiBMYXN0IHRoaW5nIHRvIGRvIGlzIHJlbGVhc2UgdGhlIHNlc3Npb24t bGV2ZWwgbG9jayBvbiB0aGUgcGFyZW50IHRhYmxlLgpAQCAtMzU2NCw2ICszNjcwLDcgQEAgUmVp bmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVs YXRpb25PaWQsIGNvbnN0IFJlaW4KIAl0eXBlZGVmIHN0cnVjdCBSZWluZGV4SW5kZXhJbmZvCiAJ ewogCQlPaWQJCQlpbmRleElkOworCQlPaWQJCQlhdXhJbmRleElkOwogCQlPaWQJCQl0YWJsZUlk OwogCQlPaWQJCQlhbUlkOwogCQlib29sCQlzYWZlOwkJLyogZm9yIHNldF9pbmRleHNhZmVfcHJv Y2ZsYWdzICovCkBAIC0zNjY5LDggKzM3NzYsMTUgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAkJCQkJT2lkCQkJY2VsbE9pZCA9IGxmaXJzdF9vaWQobGMpOwogCQkJCQlSZWxhdGlvbglpbmRl eFJlbGF0aW9uID0gaW5kZXhfb3BlbihjZWxsT2lkLAogCQkJCQkJCQkJCQkJCQkgICBTaGFyZVVw ZGF0ZUV4Y2x1c2l2ZUxvY2spOworCQkJCQlJbmRleEluZm8qCWluZGV4SW5mbyA9IEJ1aWxkRHVt bXlJbmRleEluZm8oaW5kZXhSZWxhdGlvbik7CiAKLQkJCQkJaWYgKCFpbmRleFJlbGF0aW9uLT5y ZF9pbmRleC0+aW5kaXN2YWxpZCkKKworCQkJCQlpZiAoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkp CisJCQkJCQllcmVwb3J0KFdBUk5JTkcsKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJCQkJCSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGlu ZGV4IFwiJXMuJXNcIiIsCisJCQkJCQkJCQlnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3JlbF9uYW1l c3BhY2UoY2VsbE9pZCkpLAorCQkJCQkJCQkJZ2V0X3JlbF9uYW1lKGNlbGxPaWQpKSkpOworCQkJ CQllbHNlIGlmICghaW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGlzdmFsaWQpCiAJCQkJCQll cmVwb3J0KFdBUk5JTkcsCiAJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9Q UkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCQkJCQkgZXJybXNnKCJza2lwcGluZyByZWluZGV4IG9m IGludmFsaWQgaW5kZXggXCIlcy4lc1wiIiwKQEAgLTM3MjIsOCArMzgzNiwxNSBAQCBSZWluZGV4 UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlv bk9pZCwgY29uc3QgUmVpbgogCQkJCQkJT2lkCQkJY2VsbE9pZCA9IGxmaXJzdF9vaWQobGMyKTsK IAkJCQkJCVJlbGF0aW9uCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKGNlbGxPaWQsCiAJCQkJ CQkJCQkJCQkJCQkgICBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOworCQkJCQkJSW5kZXhJbmZv KglpbmRleEluZm8gPSBCdWlsZER1bW15SW5kZXhJbmZvKGluZGV4UmVsYXRpb24pOwogCi0JCQkJ CQlpZiAoIWluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRpc3ZhbGlkKQorCQkJCQkJaWYgKGlu ZGV4SW5mby0+aWlfQXV4aWxpYXJ5KQorCQkJCQkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJCQkJ CShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCQkJCSBlcnJt c2coInNraXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwiJXMuJXNcIiIsCisJCQkJ CQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShnZXRfcmVsX25hbWVzcGFjZShjZWxsT2lkKSksCisJ CQkJCQkJCQkJCWdldF9yZWxfbmFtZShjZWxsT2lkKSkpKTsKKwkJCQkJCWVsc2UgaWYgKCFpbmRl eFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kaXN2YWxpZCkKIAkJCQkJCQllcmVwb3J0KFdBUk5JTkcs CiAJCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NU QVRFKSwKIAkJCQkJCQkJCSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXggb2YgaW52YWxpZCBpbmRl eCBcIiVzLiVzXCIiLApAQCAtMzc4NCw2ICszOTA1LDEzIEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1 cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBS ZWluCiAJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJ CQkJCSBlcnJtc2coImNhbm5vdCByZWluZGV4IGludmFsaWQgaW5kZXggb24gVE9BU1QgdGFibGUi KSkpOwogCisJCQkJLyogQXV4aWxpYXJ5IGluZGV4ZXMgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIHJl YnVpbHQgKi8KKwkJCQlpZiAoZ2V0X3JlbF9yZWxhbShyZWxhdGlvbk9pZCkgPT0gU1RJUl9BTV9P SUQpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJyZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRl eCBcIiVzXCIgbm90IHN1cHBvcnRlZCIsCisJCQkJCQkJCWdldF9yZWxfbmFtZShyZWxhdGlvbk9p ZCkpKSk7CisKIAkJCQkvKgogCQkJCSAqIENoZWNrIGlmIHBhcmVudCByZWxhdGlvbiBjYW4gYmUg bG9ja2VkIGFuZCBpZiBpdCBleGlzdHMsCiAJCQkJICogdGhpcyBuZWVkcyB0byBiZSBkb25lIGF0 IHRoaXMgc3RhZ2UgYXMgdGhlIGxpc3Qgb2YgaW5kZXhlcwpAQCAtMzg4NywxNSArNDAxNSwxOCBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCWZvcmVhY2gobGMsIGluZGV4SWRzKQogCXsKIAkJ Y2hhcgkgICAqY29uY3VycmVudE5hbWU7CisJCWNoYXIJICAgKmF1eENvbmN1cnJlbnROYW1lOwog CQlSZWluZGV4SW5kZXhJbmZvICppZHggPSBsZmlyc3QobGMpOwogCQlSZWluZGV4SW5kZXhJbmZv ICpuZXdpZHg7CiAJCU9pZAkJCW5ld0luZGV4SWQ7CisJCU9pZAkJCWF1eEluZGV4SWQ7CiAJCVJl bGF0aW9uCWluZGV4UmVsOwogCQlSZWxhdGlvbgloZWFwUmVsOwogCQlPaWQJCQlzYXZlX3VzZXJp ZDsKIAkJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKIAkJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7CiAJ CVJlbGF0aW9uCW5ld0luZGV4UmVsOworCQlSZWxhdGlvbglhdXhJbmRleFJlbDsKIAkJTG9ja1Jl bElkICAqbG9ja3JlbGlkOwogCQlPaWQJCQl0YWJsZXNwYWNlaWQ7CiAKQEAgLTM5NDYsNiArNDA3 NywxMSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0 bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJCQkJCQkJCQkiY2NuZXciLAogCQkJ CQkJCQkJCQlnZXRfcmVsX25hbWVzcGFjZShpbmRleFJlbC0+cmRfaW5kZXgtPmluZHJlbGlkKSwK IAkJCQkJCQkJCQkJZmFsc2UpOworCQlhdXhDb25jdXJyZW50TmFtZSA9IENob29zZVJlbGF0aW9u TmFtZShnZXRfcmVsX25hbWUoaWR4LT5pbmRleElkKSwKKwkJCQkJCQkJCQkJTlVMTCwKKwkJCQkJ CQkJCQkJImNjYXV4IiwKKwkJCQkJCQkJCQkJZ2V0X3JlbF9uYW1lc3BhY2UoaW5kZXhSZWwtPnJk X2luZGV4LT5pbmRyZWxpZCksCisJCQkJCQkJCQkJCWZhbHNlKTsKIAogCQkvKiBDaG9vc2UgdGhl IG5ldyB0YWJsZXNwYWNlLCBpbmRleGVzIG9mIHRvYXN0IHRhYmxlcyBhcmUgbm90IG1vdmVkICov CiAJCWlmIChPaWRJc1ZhbGlkKHBhcmFtcy0+dGFibGVzcGFjZU9pZCkgJiYKQEAgLTM5NTksMTIg KzQwOTUsMTcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10 ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCQkJCQkJCQkJCQlpZHgtPmlu ZGV4SWQsCiAJCQkJCQkJCQkJCQkJdGFibGVzcGFjZWlkLAogCQkJCQkJCQkJCQkJCWNvbmN1cnJl bnROYW1lKTsKKwkJYXV4SW5kZXhJZCA9IGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfYXV4KGhl YXBSZWwsCisJCQkJCQkJCQkJCQkgICBuZXdJbmRleElkLAorCQkJCQkJCQkJCQkJICAgdGFibGVz cGFjZWlkLAorCQkJCQkJCQkJCQkJICAgYXV4Q29uY3VycmVudE5hbWUpOwogCiAJCS8qCiAJCSAq IE5vdyBvcGVuIHRoZSByZWxhdGlvbiBvZiB0aGUgbmV3IGluZGV4LCBhIHNlc3Npb24tbGV2ZWwg bG9jayBpcwogCQkgKiBhbHNvIG5lZWRlZCBvbiBpdC4KIAkJICovCiAJCW5ld0luZGV4UmVsID0g aW5kZXhfb3BlbihuZXdJbmRleElkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOworCQlhdXhJ bmRleFJlbCA9IGluZGV4X29wZW4oYXV4SW5kZXhJZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2Nr KTsKIAogCQkvKgogCQkgKiBTYXZlIHRoZSBsaXN0IG9mIE9JRHMgYW5kIGxvY2tzIGluIHByaXZh dGUgY29udGV4dApAQCAtMzk3Myw2ICs0MTE0LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAogCQluZXdpZHggPSBwYWxsb2Nfb2JqZWN0KFJlaW5kZXhJbmRleEluZm8pOwogCQluZXdpZHgt PmluZGV4SWQgPSBuZXdJbmRleElkOworCQluZXdpZHgtPmF1eEluZGV4SWQgPSBhdXhJbmRleElk OwogCQluZXdpZHgtPnNhZmUgPSBpZHgtPnNhZmU7CiAJCW5ld2lkeC0+dGFibGVJZCA9IGlkeC0+ dGFibGVJZDsKIAkJbmV3aWR4LT5hbUlkID0gaWR4LT5hbUlkOwpAQCAtMzk5MSwxMCArNDEzMywx NCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQs IE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlsb2NrcmVsaWQgPSBwYWxsb2Nfb2JqZWN0 KExvY2tSZWxJZCk7CiAJCSpsb2NrcmVsaWQgPSBuZXdJbmRleFJlbC0+cmRfbG9ja0luZm8ubG9j a1JlbElkOwogCQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tzLCBsb2NrcmVs aWQpOworCQlsb2NrcmVsaWQgPSBwYWxsb2Nfb2JqZWN0KExvY2tSZWxJZCk7CisJCSpsb2NrcmVs aWQgPSBhdXhJbmRleFJlbC0+cmRfbG9ja0luZm8ubG9ja1JlbElkOworCQlyZWxhdGlvbkxvY2tz ID0gbGFwcGVuZChyZWxhdGlvbkxvY2tzLCBsb2NrcmVsaWQpOwogCiAJCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCQlpbmRleF9jbG9zZShpbmRleFJlbCwgTm9Mb2NrKTsK KwkJaW5kZXhfY2xvc2UoYXV4SW5kZXhSZWwsIE5vTG9jayk7CiAJCWluZGV4X2Nsb3NlKG5ld0lu ZGV4UmVsLCBOb0xvY2spOwogCiAJCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0 ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCkBAIC00MDc1LDEzICs0MjIxLDU2IEBAIFJlaW5kZXhS ZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9u T2lkLCBjb25zdCBSZWluCiAJICogZG9pbmcgdGhhdCwgd2FpdCB1bnRpbCBubyBydW5uaW5nIHRy YW5zYWN0aW9ucyBjb3VsZCBoYXZlIHRoZSB0YWJsZSBvZgogCSAqIHRoZSBpbmRleCBvcGVuIHdp dGggdGhlIG9sZCBsaXN0IG9mIGluZGV4ZXMuICBTZWUgInBoYXNlIDIiIGluCiAJICogRGVmaW5l SW5kZXgoKSBmb3IgbW9yZSBkZXRhaWxzLgorCSovCisKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRl X3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFX1dBSVRfMSk7CisJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hh cmVMb2NrLCB0cnVlKTsKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICog Tm93IGJ1aWxkIGFsbCBhdXhpbGlhcnkgaW5kZXhlcyBhbmQgbWFyayB0aGVtIGFzICJyZWFkeS1m b3ItaW5zZXJ0cyIuCisJICovCisJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCisJeworCQlSZWlu ZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOworCisJCVN0YXJ0VHJhbnNhY3Rpb25D b21tYW5kKCk7CisKKwkJLyoKKwkJICogQ2hlY2sgZm9yIHVzZXItcmVxdWVzdGVkIGFib3J0LiAg VGhpcyBpcyBpbnNpZGUgYSB0cmFuc2FjdGlvbiBzbyBhcworCQkgKiB4YWN0LmMgZG9lcyBub3Qg aXNzdWUgYSB1c2VsZXNzIFdBUk5JTkcsIGFuZCBlbnN1cmVzIHRoYXQKKwkJICogc2Vzc2lvbi1s ZXZlbCBsb2NrcyBhcmUgY2xlYW5lZCB1cCBvbiBhYm9ydC4KKwkJICovCisJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CisKKwkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1 cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJCWlmIChuZXdpZHgtPnNhZmUpCisJCQlzZXRfaW5k ZXhzYWZlX3Byb2NmbGFncygpOworCisJCS8qIEJ1aWxkIGF1eGlsaWFyeSBpbmRleCwgaXQgaXMg ZmFzdCAtIHdpdGhvdXQgYW55IGFjdHVhbCBoZWFwIHNjYW4sIGp1c3QgYW4gZW1wdHkgaW5kZXgu ICovCisJCWluZGV4X2NvbmN1cnJlbnRseV9idWlsZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+ YXV4SW5kZXhJZCk7CisKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJfQorCisJU3Rh cnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogQmVjYXVzZSB3ZSBkb24ndCB0YWtl IGEgc25hcHNob3QgaW4gdGhpcyB0cmFuc2FjdGlvbiwgdGhlcmUncyBubyBuZWVkCisJICogdG8g c2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJlLgogCSAqLwogCiAJcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8xKTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlE WF9QSEFTRV9XQUlUXzIpOworCS8qCisJICogV2FpdCB1bnRpbCBhbGwgYXV4aWxpYXJ5IGluZGV4 ZXMgYXJlIHRha2VuIGludG8gYWNjb3VudCBieSBhbGwKKwkgKiB0cmFuc2FjdGlvbnMuCisJICov CiAJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVlKTsKIAlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAorCS8qIE5vdyBpdCBpcyB0aW1lIHRvIHBlcmZv cm0gdGFyZ2V0IGluZGV4IGJ1aWxkLiAqLwogCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQogCXsK IAkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKQEAgLTQxMjQsNiArNDMx Myw0MSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0 bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCSAqIG5lZWQgdG8gc2V0IHRoZSBQUk9D X0lOX1NBRkVfSUMgZmxhZyBoZXJlLgogCSAqLwogCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9w YXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfV0FJVF8zKTsKKwlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBTaGFy ZUxvY2ssIHRydWUpOworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBB dCB0aGlzIG1vbWVudCBhbGwgdGFyZ2V0IGluZGV4ZXMgYXJlIG1hcmtlZCBhcyAicmVhZHktdG8t aW5zZXJ0Ii4gU28sCisJICogd2UgYXJlIGZyZWUgdG8gc3RhcnQgcHJvY2VzcyBvZiBkcm9wcGlu ZyBhdXhpbGlhcnkgaW5kZXhlcy4KKwkgKi8KKwlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKKwl7 CisJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CisJCVN0YXJ0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisJCS8qCisJCSAqIENoZWNrIGZvciB1c2VyLXJlcXVlc3RlZCBhYm9y dC4gIFRoaXMgaXMgaW5zaWRlIGEgdHJhbnNhY3Rpb24gc28gYXMKKwkJICogeGFjdC5jIGRvZXMg bm90IGlzc3VlIGEgdXNlbGVzcyBXQVJOSU5HLCBhbmQgZW5zdXJlcyB0aGF0CisJCSAqIHNlc3Np b24tbGV2ZWwgbG9ja3MgYXJlIGNsZWFuZWQgdXAgb24gYWJvcnQuCisJCSAqLworCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCisJCS8qIFRlbGwgY29uY3VycmVudCBpbmRleGluZyB0byBpZ25v cmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLworCQlpZiAobmV3aWR4LT5zYWZlKQorCQkJc2V0 X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKworCQkvKgorCQkgKiBVcGRhdGluZyBwZ19pbmRleCBt aWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJCSAqIGhhdmUg YSB2YWxpZCBzbmFwc2hvdC4KKwkJICovCisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkpOworCQlpbmRleF9zZXRfc3RhdGVfZmxhZ3MobmV3aWR4LT5hdXhJbmRl eElkLCBJTkRFWF9EUk9QX0NMRUFSX1JFQURZKTsKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwor CQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwl9CisKIAkvKgogCSAqIFBoYXNlIDMgb2Yg UkVJTkRFWCBDT05DVVJSRU5UTFkKIAkgKgpAQCAtNDEzMSwxMiArNDM1NSw2IEBAIFJlaW5kZXhS ZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9u T2lkLCBjb25zdCBSZWluCiAJICogd2VyZSBjcmVhdGVkIGR1cmluZyB0aGUgcHJldmlvdXMgcGhh c2UuICBTZWUgInBoYXNlIDMiIGluIERlZmluZUluZGV4KCkKIAkgKiBmb3IgbW9yZSBkZXRhaWxz LgogCSAqLwotCi0JcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsKLQlX YWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBTaGFyZUxvY2ssIHRydWUpOwotCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCiAJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCiAJewog CQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOwpAQCAtNDE3NCw3ICs0Mzky LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10 LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJcHJvZ3Jlc3NfdmFsc1szXSA9IG5ld2lk eC0+YW1JZDsKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSg0LCBwcm9ncmVz c19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7CiAKLQkJdmFsaWRhdGVfaW5kZXgobmV3aWR4LT50YWJs ZUlkLCBuZXdpZHgtPmluZGV4SWQsIHNuYXBzaG90KTsKKwkJdmFsaWRhdGVfaW5kZXgobmV3aWR4 LT50YWJsZUlkLCBuZXdpZHgtPmluZGV4SWQsIG5ld2lkeC0+YXV4SW5kZXhJZCwgc25hcHNob3Qp OwogCiAJCS8qCiAJCSAqIFdlIGNhbiBub3cgZG8gYXdheSB3aXRoIG91ciBhY3RpdmUgc25hcHNo b3QsIHdlIHN0aWxsIG5lZWQgdG8gc2F2ZQpAQCAtNDIwMyw3ICs0NDIxLDcgQEAgUmVpbmRleFJl bGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25P aWQsIGNvbnN0IFJlaW4KIAkJICogdGhlcmUncyBubyBuZWVkIHRvIHNldCB0aGUgUFJPQ19JTl9T QUZFX0lDIGZsYWcgaGVyZS4KIAkJICovCiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0o UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRV9XQUlUXzMpOworCQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQp OwogCQlXYWl0Rm9yT2xkZXJTbmFwc2hvdHMobGltaXRYbWluLCB0cnVlKTsKIAogCQlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTQyOTMsMTQgKzQ1MTEsMTQgQEAgUmVpbmRleFJlbGF0 aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQs IGNvbnN0IFJlaW4KIAkvKgogCSAqIFBoYXNlIDUgb2YgUkVJTkRFWCBDT05DVVJSRU5UTFkKIAkg KgotCSAqIE1hcmsgdGhlIG9sZCBpbmRleGVzIGFzIGRlYWQuICBGaXJzdCB3ZSBtdXN0IHdhaXQg dW50aWwgbm8gcnVubmluZwotCSAqIHRyYW5zYWN0aW9uIGNvdWxkIGJlIHVzaW5nIHRoZSBpbmRl eCBmb3IgYSBxdWVyeS4gIFNlZSBhbHNvCisJICogTWFyayB0aGUgb2xkIGFuZCBhdXhpbGlhcnkg aW5kZXhlcyBhcyBkZWFkLiBGaXJzdCB3ZSBtdXN0IHdhaXQgdW50aWwgbm8KKwkgKiBydW5uaW5n IHRyYW5zYWN0aW9uIGNvdWxkIGJlIHVzaW5nIHRoZSBpbmRleCBmb3IgYSBxdWVyeS4gIFNlZSBh bHNvCiAJICogaW5kZXhfZHJvcCgpIGZvciBtb3JlIGRldGFpbHMuCiAJICovCiAKIAlJTkpFQ1RJ T05fUE9JTlQoInJlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zZXRfZGVhZCIs IE5VTEwpOwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNCk7CisJCQkJ CQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF81KTsKIAlXYWl0Rm9yTG9ja2Vyc011 bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCB0cnVlKTsKIAogCWZvcmVhY2go bGMsIGluZGV4SWRzKQpAQCAtNDMyNSw2ICs0NTQzLDI4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1 cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBS ZWluCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJfQogCisJZm9yZWFjaChsYywgbmV3SW5kZXhJ ZHMpCisJeworCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOworCisJCS8q CisJCSAqIENoZWNrIGZvciB1c2VyLXJlcXVlc3RlZCBhYm9ydC4gIFRoaXMgaXMgaW5zaWRlIGEg dHJhbnNhY3Rpb24gc28gYXMKKwkJICogeGFjdC5jIGRvZXMgbm90IGlzc3VlIGEgdXNlbGVzcyBX QVJOSU5HLCBhbmQgZW5zdXJlcyB0aGF0CisJCSAqIHNlc3Npb24tbGV2ZWwgbG9ja3MgYXJlIGNs ZWFuZWQgdXAgb24gYWJvcnQuCisJCSAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJ CS8qCisJCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNj ZXNzLCBzbyBlbnN1cmUgd2UKKwkJICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90LgorCQkgKi8KKwkJ UHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisKKwkJaW5kZXhf Y29uY3VycmVudGx5X3NldF9kZWFkKG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5hdXhJbmRleElk KTsKKworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCX0KKwogCS8qIENvbW1pdCB0aGlzIHRyYW5z YWN0aW9uIHRvIG1ha2UgdGhlIHVwZGF0ZXMgdmlzaWJsZS4gKi8KIAlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAtNDMzOCwxMSArNDU3 OCwxMSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0 bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCS8qCiAJICogUGhhc2UgNiBvZiBSRUlO REVYIENPTkNVUlJFTlRMWQogCSAqCi0JICogRHJvcCB0aGUgb2xkIGluZGV4ZXMuCisJICogRHJv cCB0aGUgb2xkIGFuZCBhdXhpbGlhcnkgaW5kZXhlcy4KIAkgKi8KIAogCXBnc3RhdF9wcm9ncmVz c191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNSk7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0VfV0FJVF82KTsKIAlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NF eGNsdXNpdmVMb2NrLCB0cnVlKTsKIAogCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOwpAQCAtNDM2Miw2ICs0NjAyLDE4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1 cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBS ZWluCiAJCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7CiAJCX0K IAorCQlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKKwkJeworCQkJUmVpbmRleEluZGV4SW5mbyAq aWR4ID0gbGZpcnN0KGxjKTsKKwkJCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCisJCQlvYmplY3Qu Y2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJCW9iamVjdC5vYmplY3RJZCA9IGlkeC0+ YXV4SW5kZXhJZDsKKwkJCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisKKwkJCWFkZF9leGFjdF9v YmplY3RfYWRkcmVzcygmb2JqZWN0LCBvYmplY3RzKTsKKwkJfQorCiAJCS8qCiAJCSAqIFVzZSBQ RVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRfTE9DSyBzbyB0aGF0IGluZGV4X2Ryb3AoKSB1c2Vz IHRoZQogCQkgKiByaWdodCBsb2NrIGxldmVsLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9k ZXMvbWFrZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwppbmRleCBlOTdl MDk0M2Y1Yi4uYjU1NmJhNDgxN2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2Vm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBAIC04MzQsNyArODM0 LDcgQEAgSW5kZXhJbmZvICoKIG1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5 YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMsCiAJCQkgIExpc3QgKnByZWRpY2F0 ZXMsIGJvb2wgdW5pcXVlLCBib29sIG51bGxzX25vdF9kaXN0aW5jdCwKIAkJCSAgYm9vbCBpc3Jl YWR5LCBib29sIGNvbmN1cnJlbnQsIGJvb2wgc3VtbWFyaXppbmcsCi0JCQkgIGJvb2wgd2l0aG91 dG92ZXJsYXBzKQorCQkJICBib29sIHdpdGhvdXRvdmVybGFwcywgYm9vbCBhdXhpbGlhcnkpCiB7 CiAJSW5kZXhJbmZvICAqbiA9IG1ha2VOb2RlKEluZGV4SW5mbyk7CiAKQEAgLTg1MCw2ICs4NTAs NyBAQCBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1v aWQsIExpc3QgKmV4cHJlc3Npb25zLAogCW4tPmlpX0NvbmN1cnJlbnQgPSBjb25jdXJyZW50Owog CW4tPmlpX1N1bW1hcml6aW5nID0gc3VtbWFyaXppbmc7CiAJbi0+aWlfV2l0aG91dE92ZXJsYXBz ID0gd2l0aG91dG92ZXJsYXBzOworCW4tPmlpX0F1eGlsaWFyeSA9IGF1eGlsaWFyeTsKIAogCS8q IHN1bW1hcml6aW5nIGluZGV4ZXMgY2Fubm90IGNvbnRhaW4gbm9uLWtleSBhdHRyaWJ1dGVzICov CiAJQXNzZXJ0KCFzdW1tYXJpemluZyB8fCAobnVta2V5YXR0cnMgPT0gbnVtYXR0cnMpKTsKQEAg LTg3NSw3ICs4NzYsNiBAQCBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0 dHJzLCBPaWQgYW1vaWQsIExpc3QgKmV4cHJlc3Npb25zLAogCS8qIGluaXRpYWxpemUgaW5kZXgt YnVpbGQgc3RhdGUgdG8gZGVmYXVsdCAqLwogCW4tPmlpX0Jyb2tlbkhvdENoYWluID0gZmFsc2U7 CiAJbi0+aWlfUGFyYWxsZWxXb3JrZXJzID0gMDsKLQluLT5paV9BdXhpbGlhcnkgPSBmYWxzZTsK IAogCS8qIHNldCB1cCBmb3IgcG9zc2libGUgdXNlIGJ5IGluZGV4IEFNICovCiAJbi0+aWlfQW0g PSBhbW9pZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IDhmNWFhMGQ3MTQ2Li41YmMxNmYwN2E4NiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC03MTgsNyArNzE4LDggQEAgdHlwZWRlZiBzdHJ1Y3QgVGFi bGVBbVJvdXRpbmUKIAkJCQkJCQkJCQlSZWxhdGlvbiBpbmRleF9yZWwsCiAJCQkJCQkJCQkJSW5k ZXhJbmZvICppbmRleF9pbmZvLAogCQkJCQkJCQkJCVNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJ CQkJCVZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUpOworCQkJCQkJCQkJCVZhbGlkYXRlSW5kZXhT dGF0ZSAqc3RhdGUsCisJCQkJCQkJCQkJVmFsaWRhdGVJbmRleFN0YXRlICphdXhfc3RhdGUpOwog CiAKIAkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE4MjksMTkgKzE4MzAsMjQgQEAgdGFibGVfaW5k ZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCiAgKiB0YWJsZV9pbmRleF92 YWxpZGF0ZV9zY2FuIC0gc2Vjb25kIHRhYmxlIHNjYW4gZm9yIGNvbmN1cnJlbnQgaW5kZXggYnVp bGQKICAqCiAgKiBTZWUgdmFsaWRhdGVfaW5kZXgoKSBmb3IgYW4gZXhwbGFuYXRpb24uCisgKgor ICogTm90ZTogaXQgaXMgcmVzcG9uc2liaWxpdHkgb2YgdGhhdCBmdW5jdGlvbiB0byBjbG9zZSBz b3J0c3RhdGVzIGluCisgKiBib3RoIGBzdGF0ZWAgYW5kIGBhdXhzdGF0ZWAuCiAgKi8KIHN0YXRp YyBpbmxpbmUgdm9pZAogdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiB0YWJsZV9y ZWwsCiAJCQkJCQkgIFJlbGF0aW9uIGluZGV4X3JlbCwKIAkJCQkJCSAgSW5kZXhJbmZvICppbmRl eF9pbmZvLAogCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCSAgVmFsaWRhdGVJbmRl eFN0YXRlICpzdGF0ZSkKKwkJCQkJCSAgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSwKKwkJCQkJ CSAgVmFsaWRhdGVJbmRleFN0YXRlICphdXhzdGF0ZSkKIHsKLQl0YWJsZV9yZWwtPnJkX3RhYmxl YW0tPmluZGV4X3ZhbGlkYXRlX3NjYW4odGFibGVfcmVsLAotCQkJCQkJCQkJCQkgICBpbmRleF9y ZWwsCi0JCQkJCQkJCQkJCSAgIGluZGV4X2luZm8sCi0JCQkJCQkJCQkJCSAgIHNuYXBzaG90LAot CQkJCQkJCQkJCQkgICBzdGF0ZSk7CisJcmV0dXJuIHRhYmxlX3JlbC0+cmRfdGFibGVhbS0+aW5k ZXhfdmFsaWRhdGVfc2Nhbih0YWJsZV9yZWwsCisJCQkJCQkJCQkJCQkJICBpbmRleF9yZWwsCisJ CQkJCQkJCQkJCQkJICBpbmRleF9pbmZvLAorCQkJCQkJCQkJCQkJCSAgc25hcHNob3QsCisJCQkJ CQkJCQkJCQkJICBzdGF0ZSwKKwkJCQkJCQkJCQkJCQkgIGF1eHN0YXRlKTsKIH0KIAogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9n L2luZGV4LmgKaW5kZXggNGRhYThiZWY1ZWUuLmQ1MWI0ZThjZDEzIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5o CkBAIC0yNSw2ICsyNSw3IEBAIHR5cGVkZWYgZW51bQogewogCUlOREVYX0NSRUFURV9TRVRfUkVB RFksCiAJSU5ERVhfQ1JFQVRFX1NFVF9WQUxJRCwKKwlJTkRFWF9EUk9QX0NMRUFSX1JFQURZLAog CUlOREVYX0RST1BfQ0xFQVJfVkFMSUQsCiAJSU5ERVhfRFJPUF9TRVRfREVBRCwKIH0gSW5kZXhT dGF0ZUZsYWdzQWN0aW9uOwpAQCAtNjUsNiArNjYsNyBAQCBleHRlcm4gdm9pZCBpbmRleF9jaGVj a19wcmltYXJ5X2tleShSZWxhdGlvbiBoZWFwUmVsLAogI2RlZmluZQlJTkRFWF9DUkVBVEVfSUZf Tk9UX0VYSVNUUwkJCSgxIDw8IDQpCiAjZGVmaW5lCUlOREVYX0NSRUFURV9QQVJUSVRJT05FRAkJ CSgxIDw8IDUpCiAjZGVmaW5lIElOREVYX0NSRUFURV9JTlZBTElECQkJCSgxIDw8IDYpCisjZGVm aW5lIElOREVYX0NSRUFURV9BVVhJTElBUlkJCQkJKDEgPDwgNykKIAogZXh0ZXJuIE9pZAlpbmRl eF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJIGNvbnN0IGNoYXIgKmluZGV4 UmVsYXRpb25OYW1lLApAQCAtMTAwLDYgKzEwMiwxMSBAQCBleHRlcm4gT2lkCWluZGV4X2NvbmN1 cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCQkJICAg T2lkIHRhYmxlc3BhY2VPaWQsCiAJCQkJCQkJCQkJICAgY29uc3QgY2hhciAqbmV3TmFtZSk7CiAK K2V4dGVybiBPaWQJaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9hdXgoUmVsYXRpb24gaGVhcFJl bGF0aW9uLAorCQkJCQkJCQkJCSAgT2lkIG1haW5JbmRleElkLAorCQkJCQkJCQkJCSAgT2lkIHRh Ymxlc3BhY2VPaWQsCisJCQkJCQkJCQkJICBjb25zdCBjaGFyICpuZXdOYW1lKTsKKwogZXh0ZXJu IHZvaWQgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAkJCQkJ CQkJCSBPaWQgaW5kZXhSZWxhdGlvbklkKTsKIApAQCAtMTQ1LDcgKzE1Miw3IEBAIGV4dGVybiB2 b2lkIGluZGV4X2J1aWxkKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCWJvb2wgaXNyZWlu ZGV4LAogCQkJCQkJYm9vbCBwYXJhbGxlbCk7CiAKLWV4dGVybiB2b2lkIHZhbGlkYXRlX2luZGV4 KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCk7CitleHRlcm4gdm9p ZCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQs IFNuYXBzaG90IHNuYXBzaG90KTsKIAogZXh0ZXJuIHZvaWQgaW5kZXhfc2V0X3N0YXRlX2ZsYWdz KE9pZCBpbmRleElkLCBJbmRleFN0YXRlRmxhZ3NBY3Rpb24gYWN0aW9uKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3Byb2dyZXNzLmgKaW5kZXggMWNkZTRiZDliY2YuLjllOTNhNGQ5MzEwIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3Byb2dyZXNzLmgKQEAgLTk0LDE0ICs5NCwxNSBAQAogCiAvKiBQaGFzZXMgb2YgQ1JFQVRFIElO REVYIChhcyBhZHZlcnRpc2VkIHZpYSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UpICovCiAjZGVm aW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzEJCQkxCi0jZGVmaW5lIFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRV9CVUlMRAkJCTIKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BI QVNFX1dBSVRfMgkJCTMKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRF X0lEWFNDQU4JNAotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfU09S VAkJNQotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfVEFCTEVTQ0FO CTYKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMwkJCTcKKyNkZWZpbmUg UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMgkJCTIKKyNkZWZpbmUgUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFX0JVSUxECQkJMworI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0Vf V0FJVF8zCQkJNAorI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURY U0NBTgk1CisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9TT1JUCQk2 CisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9JRFhNRVJHRQk3CiAj ZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQJCQk4CiAjZGVmaW5lIFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzUJCQk5CisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlE WF9QSEFTRV9XQUlUXzYJCQkxMAogCiAvKgogICogU3VicGhhc2VzIG9mIENSRUFURSBJTkRFWCwg Zm9yIGluZGV4X2J1aWxkLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaAppbmRleCA1NDczY2U5YTI4OC4uNDkw NDc0OGY1ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCisrKyBi L3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCkBAIC05OSw3ICs5OSw4IEBAIGV4dGVybiBJ bmRleEluZm8gKm1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9p ZCBhbW9pZCwKIAkJCQkJCQkJTGlzdCAqZXhwcmVzc2lvbnMsIExpc3QgKnByZWRpY2F0ZXMsCiAJ CQkJCQkJCWJvb2wgdW5pcXVlLCBib29sIG51bGxzX25vdF9kaXN0aW5jdCwKIAkJCQkJCQkJYm9v bCBpc3JlYWR5LCBib29sIGNvbmN1cnJlbnQsCi0JCQkJCQkJCWJvb2wgc3VtbWFyaXppbmcsIGJv b2wgd2l0aG91dG92ZXJsYXBzKTsKKwkJCQkJCQkJYm9vbCBzdW1tYXJpemluZywgYm9vbCB3aXRo b3V0b3ZlcmxhcHMsCisJCQkJCQkJCWJvb2wgYXV4aWxpYXJ5KTsKIAogZXh0ZXJuIE5vZGUgKm1h a2VTdHJpbmdDb25zdChjaGFyICpzdHIsIGludCBsb2NhdGlvbik7CiBleHRlcm4gRGVmRWxlbSAq bWFrZURlZkVsZW0oY2hhciAqbmFtZSwgTm9kZSAqYXJnLCBpbnQgbG9jYXRpb24pOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CmluZGV4IDk4ZTY4ZTk3MmJlLi5h M2U4NWJhMTMxMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVf aW5kZXgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91 dApAQCAtMTQyMyw2ICsxNDIzLDcgQEAgREVUQUlMOiAgS2V5IChmMSk9KGIpIGFscmVhZHkgZXhp c3RzLgogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4MyBPTiBj b25jdXJfaGVhcChmMik7CiBFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4ICJj b25jdXJfaW5kZXgzIgogREVUQUlMOiAgS2V5IChmMik9KGIpIGlzIGR1cGxpY2F0ZWQuCitEUk9Q IElOREVYIGNvbmN1cl9pbmRleDNfY2NhdXg7CiAtLSB0ZXN0IHRoYXQgZXhwcmVzc2lvbiBpbmRl eGVzIGFuZCBwYXJ0aWFsIGluZGV4ZXMgd29yayBjb25jdXJyZW50bHkKIENSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgY29uY3VyX2luZGV4NCBvbiBjb25jdXJfaGVhcChmMikgV0hFUkUgZjE9J2En OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg1IG9uIGNvbmN1cl9oZWFw KGYyKSBXSEVSRSBmMT0neCc7CkBAIC0zMTk3LDYgKzMxOTgsNyBAQCBJTlNFUlQgSU5UTyBjb25j dXJfcmVpbmRleF90YWI0IFZBTFVFUyAoMSksICgxKSwgKDIpOwogQ1JFQVRFIFVOSVFVRSBJTkRF WCBDT05DVVJSRU5UTFkgY29uY3VyX3JlaW5kZXhfaW5kNSBPTiBjb25jdXJfcmVpbmRleF90YWI0 IChjMSk7CiBFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4ICJjb25jdXJfcmVp bmRleF9pbmQ1IgogREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCitEUk9QIElO REVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NhdXg7CiAtLSBSZWluZGV4aW5nIGNvbmN1cnJlbnRs eSB0aGlzIGluZGV4IGZhaWxzIHdpdGggdGhlIHNhbWUgZmFpbHVyZS4KIC0tIFRoZSBleHRyYSBp bmRleCBjcmVhdGVkIGlzIGl0c2VsZiBpbnZhbGlkLCBhbmQgY2FuIGJlIGRyb3BwZWQuCiBSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1OwpAQCAtMzIwOSw4ICsz MjExLDEwIEBAIERFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVkLgogIGMxICAgICB8 IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAogSW5kZXhlczoKICAgICAiY29uY3Vy X3JlaW5kZXhfaW5kNSIgVU5JUVVFLCBidHJlZSAoYzEpIElOVkFMSUQKKyAgICAiY29uY3VyX3Jl aW5kZXhfaW5kNV9jY2F1eCIgc3RpciAoYzEpIElOVkFMSUQKICAgICAiY29uY3VyX3JlaW5kZXhf aW5kNV9jY25ldyIgVU5JUVVFLCBidHJlZSAoYzEpIElOVkFMSUQKIAorRFJPUCBJTkRFWCBjb25j dXJfcmVpbmRleF9pbmQ1X2NjYXV4OwogRFJPUCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2Nj bmV3OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUg aW5kZXggY2FuIGJlY29tZSB2YWxpZC4KIERFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQg V0hFUkUgYzEgPSAxOwpAQCAtMzIzOCw2ICszMjQyLDQ0IEBAIEluZGV4ZXM6CiAgICAgImNvbmN1 cl9yZWluZGV4X2luZDUiIFVOSVFVRSwgYnRyZWUgKGMxKQogCiBEUk9QIFRBQkxFIGNvbmN1cl9y ZWluZGV4X3RhYjQ7CistLSBDaGVjayBoYW5kbGluZyBvZiBhdXhpbGlhcnkgaW5kZXhlcworQ1JF QVRFIFRBQkxFIGF1eF9pbmRleF90YWI1IChjMSBpbnQpOworSU5TRVJUIElOVE8gYXV4X2luZGV4 X3RhYjUgVkFMVUVTICgxKSwgKDEpLCAoMik7CistLSBUaGlzIHRyaWNrIGNyZWF0ZXMgYW4gaW52 YWxpZCBpbmRleCBhbmQgYXV4aWxpYXJ5IGluZGV4IGZvciBpdAorQ1JFQVRFIFVOSVFVRSBJTkRF WCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKK0VS Uk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgorREVU QUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCitcZCBhdXhfaW5kZXhfdGFiNQorICAg ICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENvbHVtbiB8ICBUeXBlICAg fCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBpbnRlZ2VyIHwgICAgICAg ICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgImF1eF9pbmRleF9pbmQ2IiBVTklRVUUs IGJ0cmVlIChjMSkgSU5WQUxJRAorICAgICJhdXhfaW5kZXhfaW5kNl9jY2F1eCIgc3RpciAoYzEp IElOVkFMSUQKKworLS0gTm90IGFsbG93ZWQgdG8gcmVpbmRleCBhdXhpbGlhcnkgaW5kZXgKK1JF SU5ERVggSU5ERVggYXV4X2luZGV4X2luZDZfY2NhdXg7CitFUlJPUjogIHJlaW5kZXggb2YgYXV4 aWxpYXJ5IGluZGV4ICJhdXhfaW5kZXhfaW5kNl9jY2F1eCIgbm90IHN1cHBvcnRlZAorLS0gQ29u Y3VycmVudGx5IGFsc28KK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2 X2NjYXV4OworRVJST1I6ICByZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCAiYXV4X2luZGV4X2lu ZDZfY2NhdXgiIG5vdCBzdXBwb3J0ZWQKKy0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1 cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUgRlJPTSBj b25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsKK0VSUk9SOiAgcmVsYXRpb24gImNvbmN1 cl9yZWluZGV4X3RhYjQiIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IERFTEVURSBGUk9NIGNvbmN1 cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworICAgICAgICAgICAgICAgICAgICBeCistLSBT aG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleAorUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhf dGFiNTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9p bmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCistLSBTaG91bGQgYmUg c2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CitSRUlOREVYIFRBQkxFIENPTkNVUlJF TlRMWSBhdXhfaW5kZXhfdGFiNTsKK1dBUk5JTkc6ICBza2lwcGluZyByZWluZGV4IG9mIGludmFs aWQgaW5kZXggInB1YmxpYy5hdXhfaW5kZXhfaW5kNiIKK0hJTlQ6ICBVc2UgRFJPUCBJTkRFWCBv ciBSRUlOREVYIElOREVYLgorV0FSTklORzogIHNraXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5 IGluZGV4ICJwdWJsaWMuYXV4X2luZGV4X2luZDZfY2NhdXgiCitOT1RJQ0U6ICB0YWJsZSAiYXV4 X2luZGV4X3RhYjUiIGhhcyBubyBpbmRleGVzIHRoYXQgY2FuIGJlIHJlaW5kZXhlZCBjb25jdXJy ZW50bHkKK0RST1AgVEFCTEUgYXV4X2luZGV4X3RhYjU7CiAtLSBDaGVjayBoYW5kbGluZyBvZiBp bmRleGVzIHdpdGggZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMuICBUaGUKIC0tIGRlZmluaXRp b25zIG9mIHRoZSByZWJ1aWx0IGluZGV4ZXMgc2hvdWxkIG1hdGNoIHRoZSBvcmlnaW5hbAogLS0g ZGVmaW5pdGlvbnMuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4 aW5nLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0CmluZGV4IDRk MjlmYjg1MjkzLi41NGIyNTFiOTZlYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9pbmRleGluZy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGlu Zy5vdXQKQEAgLTE1ODUsMTAgKzE1ODUsMTEgQEAgc2VsZWN0IGluZGV4cmVsaWQ6OnJlZ2NsYXNz LCBpbmRpc3ZhbGlkLAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICBwYXJ0ZWRfaXN2YWxpZF9pZHggICAgICAgICAgICAgfCBmICAgICAgICAgIHwgcGFydGVk X2lzdmFsaWRfdGFiICAgIHwgCiAgcGFydGVkX2lzdmFsaWRfaWR4XzExICAgICAgICAgIHwgZiAg ICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xMSB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xX2V4 cHJfaWR4CisgcGFydGVkX2lzdmFsaWRfaWR4XzExX2NjYXV4ICAgIHwgZiAgICAgICAgICB8IHBh cnRlZF9pc3ZhbGlkX3RhYl8xMSB8IAogIHBhcnRlZF9pc3ZhbGlkX3RhYl8xMl9leHByX2lkeCB8 IHQgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMTIgfCBwYXJ0ZWRfaXN2YWxpZF90YWJf MV9leHByX2lkeAogIHBhcnRlZF9pc3ZhbGlkX3RhYl8xX2V4cHJfaWR4ICB8IGYgICAgICAgICAg fCBwYXJ0ZWRfaXN2YWxpZF90YWJfMSAgfCBwYXJ0ZWRfaXN2YWxpZF9pZHgKICBwYXJ0ZWRfaXN2 YWxpZF90YWJfMl9leHByX2lkeCAgfCB0ICAgICAgICAgIHwgcGFydGVkX2lzdmFsaWRfdGFiXzIg IHwgcGFydGVkX2lzdmFsaWRfaWR4Ci0oNSByb3dzKQorKDYgcm93cykKIAogZHJvcCB0YWJsZSBw YXJ0ZWRfaXN2YWxpZF90YWI7CiAtLSBDaGVjayBzdGF0ZSBvZiByZXBsaWNhIGluZGV4ZXMgd2hl biBhdHRhY2hpbmcgYSBwYXJ0aXRpb24uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0Cmlu ZGV4IDM1ZThhYWQ3NzAxLi5hZTNiZmMzNjg4ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxl cy5vdXQKQEAgLTIwNTAsMTQgKzIwNTAsMTUgQEAgcGdfc3RhdF9wcm9ncmVzc19jcmVhdGVfaW5k ZXh8IFNFTEVDVCBzLnBpZCwKICAgICAgICAgQ0FTRSBzLnBhcmFtMTAKICAgICAgICAgICAgIFdI RU4gMCBUSEVOICdpbml0aWFsaXppbmcnOjp0ZXh0CiAgICAgICAgICAgICBXSEVOIDEgVEhFTiAn d2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgYnVpbGQnOjp0ZXh0Ci0gICAgICAgICAgICBXSEVO IDIgVEhFTiAoJ2J1aWxkaW5nIGluZGV4Jzo6dGV4dCB8fCBDT0FMRVNDRSgoJzogJzo6dGV4dCB8 fCBwZ19pbmRleGFtX3Byb2dyZXNzX3BoYXNlbmFtZSgocy5wYXJhbTkpOjpvaWQsIHMucGFyYW0x MSkpLCAnJzo6dGV4dCkpCi0gICAgICAgICAgICBXSEVOIDMgVEhFTiAnd2FpdGluZyBmb3Igd3Jp dGVycyBiZWZvcmUgdmFsaWRhdGlvbic6OnRleHQKLSAgICAgICAgICAgIFdIRU4gNCBUSEVOICdp bmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyBpbmRleCc6OnRleHQKLSAgICAgICAgICAgIFdIRU4g NSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzb3J0aW5nIHR1cGxlcyc6OnRleHQKLSAgICAgICAg ICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyB0YWJsZSc6OnRleHQK LSAgICAgICAgICAgIFdIRU4gNyBUSEVOICd3YWl0aW5nIGZvciBvbGQgc25hcHNob3RzJzo6dGV4 dAotICAgICAgICAgICAgV0hFTiA4IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIG1h cmtpbmcgZGVhZCc6OnRleHQKLSAgICAgICAgICAgIFdIRU4gOSBUSEVOICd3YWl0aW5nIGZvciBy ZWFkZXJzIGJlZm9yZSBkcm9wcGluZyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gMiBUSEVOICd3 YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkgaW5kZXgnOjp0ZXh0CisgICAgICAg ICAgICBXSEVOIDMgVEhFTiAoJ2J1aWxkaW5nIGluZGV4Jzo6dGV4dCB8fCBDT0FMRVNDRSgoJzog Jzo6dGV4dCB8fCBwZ19pbmRleGFtX3Byb2dyZXNzX3BoYXNlbmFtZSgocy5wYXJhbTkpOjpvaWQs IHMucGFyYW0xMSkpLCAnJzo6dGV4dCkpCisgICAgICAgICAgICBXSEVOIDQgVEhFTiAnd2FpdGlu ZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbic6OnRleHQKKyAgICAgICAgICAgIFdIRU4g NSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyBpbmRleCc6OnRleHQKKyAgICAgICAg ICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzb3J0aW5nIHR1cGxlcyc6OnRleHQK KyAgICAgICAgICAgIFdIRU4gNyBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBtZXJnaW5nIGluZGV4 ZXMnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDggVEhFTiAnd2FpdGluZyBmb3Igb2xkIHNuYXBz aG90cyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gOSBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJz IGJlZm9yZSBtYXJraW5nIGRlYWQnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDEwIFRIRU4gJ3dh aXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIGRyb3BwaW5nJzo6dGV4dAogICAgICAgICAgICAgRUxT RSBOVUxMOjp0ZXh0CiAgICAgICAgIEVORCBBUyBwaGFzZSwKICAgICBzLnBhcmFtNCBBUyBsb2Nr ZXJzX3RvdGFsLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4 LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKaW5kZXggZWFiYzk2 MjNiMjAuLjdhZThlNDQwMTliIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVh dGVfaW5kZXguc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwK QEAgLTQ5OSw2ICs0OTksNyBAQCBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBJRiBO T1QgRVhJU1RTIGNvbmN1cl9pbmRleDIgT04gY29uY3VyX2hlYXAoZjEpOwogSU5TRVJUIElOVE8g Y29uY3VyX2hlYXAgVkFMVUVTICgnYicsJ3gnKTsKIC0tIGNoZWNrIGlmIGNvbnN0cmFpbnQgaXMg ZW5mb3JjZWQgcHJvcGVybHkgYXQgYnVpbGQgdGltZQogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05D VVJSRU5UTFkgY29uY3VyX2luZGV4MyBPTiBjb25jdXJfaGVhcChmMik7CitEUk9QIElOREVYIGNv bmN1cl9pbmRleDNfY2NhdXg7CiAtLSB0ZXN0IHRoYXQgZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBw YXJ0aWFsIGluZGV4ZXMgd29yayBjb25jdXJyZW50bHkKIENSRUFURSBJTkRFWCBDT05DVVJSRU5U TFkgY29uY3VyX2luZGV4NCBvbiBjb25jdXJfaGVhcChmMikgV0hFUkUgZjE9J2EnOwogQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg1IG9uIGNvbmN1cl9oZWFwKGYyKSBXSEVS RSBmMT0neCc7CkBAIC0xMzExLDEwICsxMzEyLDEyIEBAIENSRUFURSBUQUJMRSBjb25jdXJfcmVp bmRleF90YWI0IChjMSBpbnQpOwogSU5TRVJUIElOVE8gY29uY3VyX3JlaW5kZXhfdGFiNCBWQUxV RVMgKDEpLCAoMSksICgyKTsKIC0tIFRoaXMgdHJpY2sgY3JlYXRlcyBhbiBpbnZhbGlkIGluZGV4 LgogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX3JlaW5kZXhfaW5kNSBP TiBjb25jdXJfcmVpbmRleF90YWI0IChjMSk7CitEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2lu ZDVfY2NhdXg7CiAtLSBSZWluZGV4aW5nIGNvbmN1cnJlbnRseSB0aGlzIGluZGV4IGZhaWxzIHdp dGggdGhlIHNhbWUgZmFpbHVyZS4KIC0tIFRoZSBleHRyYSBpbmRleCBjcmVhdGVkIGlzIGl0c2Vs ZiBpbnZhbGlkLCBhbmQgY2FuIGJlIGRyb3BwZWQuCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjb25jdXJfcmVpbmRleF9pbmQ1OwogXGQgY29uY3VyX3JlaW5kZXhfdGFiNAorRFJPUCBJTkRF WCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4OwogRFJPUCBJTkRFWCBjb25jdXJfcmVpbmRleF9p bmQ1X2NjbmV3OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBz byB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KIERFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4 X3RhYjQgV0hFUkUgYzEgPSAxOwpAQCAtMTMyNiw2ICsxMzI5LDI0IEBAIFJFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIGNvbmN1cl9yZWluZGV4X2luZDU7CiBcZCBjb25jdXJfcmVpbmRleF90YWI0 CiBEUk9QIFRBQkxFIGNvbmN1cl9yZWluZGV4X3RhYjQ7CiAKKy0tIENoZWNrIGhhbmRsaW5nIG9m IGF1eGlsaWFyeSBpbmRleGVzCitDUkVBVEUgVEFCTEUgYXV4X2luZGV4X3RhYjUgKGMxIGludCk7 CitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSksICgyKTsKKy0tIFRo aXMgdHJpY2sgY3JlYXRlcyBhbiBpbnZhbGlkIGluZGV4IGFuZCBhdXhpbGlhcnkgaW5kZXggZm9y IGl0CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBh dXhfaW5kZXhfdGFiNSAoYzEpOworXGQgYXV4X2luZGV4X3RhYjUKKy0tIE5vdCBhbGxvd2VkIHRv IHJlaW5kZXggYXV4aWxpYXJ5IGluZGV4CitSRUlOREVYIElOREVYIGF1eF9pbmRleF9pbmQ2X2Nj YXV4OworLS0gQ29uY3VycmVudGx5IGFsc28KK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGF1 eF9pbmRleF9pbmQ2X2NjYXV4OworLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBn byBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGNvbmN1 cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5n IHJlaW5kZXgKK1JFSU5ERVggVEFCTEUgYXV4X2luZGV4X3RhYjU7CistLSBTaG91bGQgYmUgc2tp cHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CitSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRM WSBhdXhfaW5kZXhfdGFiNTsKK0RST1AgVEFCTEUgYXV4X2luZGV4X3RhYjU7CisKIC0tIENoZWNr IGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0aCBleHByZXNzaW9ucyBhbmQgcHJlZGljYXRlcy4gIFRo ZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhlIHJlYnVpbHQgaW5kZXhlcyBzaG91bGQgbWF0Y2ggdGhl IG9yaWdpbmFsCiAtLSBkZWZpbml0aW9ucy4KLS0gCjIuNDMuMAoK --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="v24-0011-Refresh-snapshot-periodically-during-index-valid.patch" Content-Disposition: attachment; filename="v24-0011-Refresh-snapshot-periodically-during-index-valid.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm1516 RnJvbSAyNDM4MTgwZjcwNjAwZGM4MmJhNzE1MjQ1YzBkYzhjZGVhYzQ2NWYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAyMSBBcHIgMjAyNSAxNDoxODozMiArMDIwMApTdWJqZWN0OiBb UEFUQ0ggdjI0IDExLzEyXSBSZWZyZXNoIHNuYXBzaG90IHBlcmlvZGljYWxseSBkdXJpbmcgaW5k ZXgKIHZhbGlkYXRpb24KCkVuaGFuY2VzIHZhbGlkYXRpb24gcGhhc2Ugb2YgY29uY3VycmVudGx5 IGJ1aWx0IGluZGV4ZXMgYnkgcGVyaW9kaWNhbGx5IHJlZnJlc2hpbmcgc25hcHNob3RzIHJhdGhl ciB0aGFuIHVzaW5nIGEgc2luZ2xlIHJlZmVyZW5jZSBzbmFwc2hvdC4gVGhpcyBhZGRyZXNzZXMg aXNzdWVzIHdpdGggeG1pbiBwcm9wYWdhdGlvbiBkdXJpbmcgbG9uZy1ydW5uaW5nIHZhbGlkYXRp b25zLgoKVGhlIHZhbGlkYXRpb24gbm93IHRha2VzIGEgZnJlc2ggc25hcHNob3QgZXZlcnkgZmV3 IHBhZ2VzLCBhbGxvd2luZyB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UuIFRoaXMgcmVzdG9y ZXMgZmVhdHVyZSBvZiBjb21taXQgZDlkMDc2MjIyZjViLCB3aGljaCB3YXMgcmV2ZXJ0ZWQgaW4g Y29tbWl0IGUyOGJiODg1MTk2OS4gTmV3IFNUSVItYmFzZWQgYXBwcm9hY2ggaXMgbm90IGRlcGVu ZHMgb24gc2luZ2xlIHJlZmVyZW5jZSBzbmFwc2hvdCBhbnltb3JlLgotLS0KIGRvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgICAgICAgfCAxMSArKystCiBkb2Mvc3JjL3NnbWwvcmVm L3JlaW5kZXguc2dtbCAgICAgICAgICAgIHwgMTEgKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvUkVBRE1FLkhPVCAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1faGFuZGxlci5jIHwgNzMgKysrKysrKysrKysrKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9z cGdpc3Qvc3BndmFjdXVtLmMgICAgfCAxMiArKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4 LmMgICAgICAgICAgICAgIHwgNDIgKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jICAgICAgICAgfCA1MCArKy0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgIHwgMTUgKystLS0KIHNyYy9pbmNsdWRlL2FjY2Vz cy90cmFuc2FtLmggICAgICAgICAgICAgfCAxNSArKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9p bmRleC5oICAgICAgICAgICAgICB8ICAyICstCiAxMSBmaWxlcyBjaGFuZ2VkLCAxNTAgaW5zZXJ0 aW9ucygrKSwgODcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKaW5k ZXggY2YxNGY0NzQ5NDYuLjE2MjZjZWU3YTAzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9pbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNn bWwKQEAgLTg4MSw5ICs4ODEsMTQgQEAgSW5kZXhlczoKICAgPC9wYXJhPgogCiAgIDxwYXJhPgot ICAgTGlrZSBhbnkgbG9uZy1ydW5uaW5nIHRyYW5zYWN0aW9uLCA8Y29tbWFuZD5DUkVBVEUgSU5E RVg8L2NvbW1hbmQ+IG9uIGEKLSAgIHRhYmxlIGNhbiBhZmZlY3Qgd2hpY2ggdHVwbGVzIGNhbiBi ZSByZW1vdmVkIGJ5IGNvbmN1cnJlbnQKLSAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gb24g YW55IG90aGVyIHRhYmxlLgorICAgRHVlIHRvIHRoZSBpbXByb3ZlZCBpbXBsZW1lbnRhdGlvbiB1 c2luZyBwZXJpb2RpY2FsbHkgcmVmcmVzaGVkIHNuYXBzaG90cyBhbmQKKyAgIGF1eGlsaWFyeSBp bmRleGVzLCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyBoYXZlIG1pbmltYWwgaW1wYWN0IG9uIGNv bmN1cnJlbnQKKyAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gb3BlcmF0aW9ucy4gVGhlIHN5 c3RlbSBhdXRvbWF0aWNhbGx5IGFkdmFuY2VzIGl0cworICAgaW50ZXJuYWwgdHJhbnNhY3Rpb24g aG9yaXpvbiBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MsIGFsbG93aW5nCisgICA8Y29tbWFuZD5W QUNVVU08L2NvbW1hbmQ+IHRvIHJlbW92ZSBkZWFkIHR1cGxlcyBvbiBvdGhlciB0YWJsZXMgd2l0 aG91dAorICAgaGF2aW5nIHRvIHdhaXQgZm9yIHRoZSBlbnRpcmUgaW5kZXggYnVpbGQgdG8gY29t cGxldGUuIE9ubHkgZHVyaW5nIHZlcnkgYnJpZWYKKyAgIHBlcmlvZHMgd2hlbiBzbmFwc2hvdHMg YXJlIGJlaW5nIHJlZnJlc2hlZCBtaWdodCB0aGVyZSBiZSBhbnkgdGVtcG9yYXJ5IGVmZmVjdAor ICAgb24gY29uY3VycmVudCA8Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+IG9wZXJhdGlvbnMuCiAg IDwvcGFyYT4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRl eC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKaW5kZXggZDYyNzkxZmY5YzMu LjYwZjRkMGQ2ODBmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbApAQCAtNTAyLDEwICs1MDIsMTMgQEAg SW5kZXhlczoKICAgIDwvcGFyYT4KIAogICAgPHBhcmE+Ci0gICAgTGlrZSBhbnkgbG9uZy1ydW5u aW5nIHRyYW5zYWN0aW9uLCA8Y29tbWFuZD5SRUlOREVYPC9jb21tYW5kPiBvbiBhIHRhYmxlCi0g ICAgY2FuIGFmZmVjdCB3aGljaCB0dXBsZXMgY2FuIGJlIHJlbW92ZWQgYnkgY29uY3VycmVudAot ICAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gb24gYW55IG90aGVyIHRhYmxlLgotICAgPC9w YXJhPgorICAgIDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBoYXMgbWlu aW1hbAorICAgIGltcGFjdCBvbiB3aGljaCB0dXBsZXMgY2FuIGJlIHJlbW92ZWQgYnkgY29uY3Vy cmVudCA8Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+CisgICAgb3BlcmF0aW9ucyBvbiBvdGhlciB0 YWJsZXMuIFRoaXMgaXMgYWNoaWV2ZWQgdGhyb3VnaCBwZXJpb2RpYyBzbmFwc2hvdAorICAgIHJl ZnJlc2hlcyBhbmQgdGhlIHVzZSBvZiBhdXhpbGlhcnkgaW5kZXhlcyBkdXJpbmcgdGhlIHJlYnVp bGQgcHJvY2VzcywKKyAgICBhbGxvd2luZyB0aGUgc3lzdGVtIHRvIGFkdmFuY2UgaXRzIHRyYW5z YWN0aW9uIGhvcml6b24gcmVndWxhcmx5IHJhdGhlciB0aGFuCisgICAgbWFpbnRhaW5pbmcgYSBz aW5nbGUgbG9uZy1ydW5uaW5nIHNuYXBzaG90LgorICA8L3BhcmE+CiAKICAgIDxwYXJhPgogICAg IDxjb21tYW5kPlJFSU5ERVggU1lTVEVNPC9jb21tYW5kPiBkb2VzIG5vdCBzdXBwb3J0CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvUkVBRE1FLkhPVAppbmRleCA2ZjcxOGZlYjZkNS4uZDQxNjA5Yzk3Y2QgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVApAQCAtNDAxLDEyICs0MDEsMTIgQEAgdXNlIHRo ZSBrZXkgdmFsdWUgZnJvbSB0aGUgbGl2ZSB0dXBsZS4KIFdlIG1hcmsgdGhlIGluZGV4IG9wZW4g Zm9yIGluc2VydHMgKGJ1dCBzdGlsbCBub3QgcmVhZHkgZm9yIHJlYWRzKSB0aGVuCiB3ZSBhZ2Fp biB3YWl0IGZvciB0cmFuc2FjdGlvbnMgd2hpY2ggaGF2ZSB0aGUgdGFibGUgb3Blbi4gIFRoZW4g dmFsaWRhdGUKIHRoZSBpbmRleC4gIFRoaXMgc2VhcmNoZXMgZm9yIHR1cGxlcyBtaXNzaW5nIGZy b20gdGhlIGluZGV4IGluIGF1eGlsaWFyeQotaW5kZXgsIGFuZCBpbnNlcnRzIGFueSBtaXNzaW5n IG9uZXMgaWYgdGhlbSB2aXNpYmxlIHRvIHJlZmVyZW5jZSBzbmFwc2hvdC4KK2luZGV4LCBhbmQg aW5zZXJ0cyBhbnkgbWlzc2luZyBvbmVzIGlmIHRoZW0gdmlzaWJsZSB0byBmcmVzaCBzbmFwc2hv dC4KIEFnYWluLCB0aGUgaW5kZXggZW50cmllcyBoYXZlIHRvIGhhdmUgVElEcyBlcXVhbCB0byBI T1QtY2hhaW4gcm9vdCBUSURzLCBidXQKIHRoZSB2YWx1ZSB0byBiZSBpbnNlcnRlZCBpcyB0aGUg b25lIGZyb20gdGhlIGxpdmUgdHVwbGUuCiAKIFRoZW4gd2Ugd2FpdCB1bnRpbCBldmVyeSB0cmFu c2FjdGlvbiB0aGF0IGNvdWxkIGhhdmUgYSBzbmFwc2hvdCBvbGRlciB0aGFuCi10aGUgc2Vjb25k IHJlZmVyZW5jZSBzbmFwc2hvdCBpcyBmaW5pc2hlZC4gIFRoaXMgZW5zdXJlcyB0aGF0IG5vYm9k eSBpcwordGhlIGxhdGVzdCB1c2VkIHNuYXBzaG90IGlzIGZpbmlzaGVkLiAgVGhpcyBlbnN1cmVz IHRoYXQgbm9ib2R5IGlzCiBhbGl2ZSBhbnkgbG9uZ2VyIHdobyBjb3VsZCBuZWVkIHRvIHNlZSBh bnkgdHVwbGVzIHRoYXQgbWlnaHQgYmUgbWlzc2luZwogZnJvbSB0aGUgaW5kZXgsIGFzIHdlbGwg YXMgZW5zdXJpbmcgdGhhdCBubyBvbmUgY2FuIHNlZSBhbnkgaW5jb25zaXN0ZW50CiByb3dzIGlu IGEgYnJva2VuIEhPVCBjaGFpbiAodGhlIGZpcnN0IGNvbmRpdGlvbiBpcyBzdHJvbmdlciB0aGFu IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggM2NhYzEy MmY3YTcuLjQwOTg1MmYyM2UyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5k bGVyLmMKQEAgLTIwMzQsMjMgKzIwMzQsMjYgQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5f cmVhZF9zdHJlYW1fbmV4dCgKIAlyZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgdm9pZAorc3Rh dGljIFRyYW5zYWN0aW9uSWQKIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJCQkJCSAgIFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJCQkgICBJ bmRleEluZm8gKmluZGV4SW5mbywKLQkJCQkJCSAgIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJ ICAgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSwKIAkJCQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0 ZSAqYXV4U3RhdGUpCiB7CisJVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW47CisKIAlEYXR1bQkJdmFs dWVzW0lOREVYX01BWF9LRVlTXTsKIAlib29sCQlpc251bGxbSU5ERVhfTUFYX0tFWVNdOwogCisJ U25hcHNob3QJCXNuYXBzaG90OwogCVR1cGxlVGFibGVTbG90ICAqc2xvdDsKIAlFU3RhdGUJCQkq ZXN0YXRlOwogCUV4cHJDb250ZXh0CQkqZWNvbnRleHQ7CiAJQnVmZmVyQWNjZXNzU3RyYXRlZ3kg YnN0cmF0ZWd5ID0gR2V0QWNjZXNzU3RyYXRlZ3koQkFTX0JVTEtSRUFEKTsKIAotCWludAkJCQlu dW1fdG9fY2hlY2s7CisJaW50CQkJCW51bV90b19jaGVjaywKKwkJCQkJcGFnZV9yZWFkX2NvdW50 ZXIgPSAxOyAvKiBzZXQgdG8gMSB0byBza2lwIHNuYXBzaG90IHJlc2V0IGF0IHN0YXJ0ICovCiAJ VHVwbGVzdG9yZXN0YXRlICp0dXBsZXNfZm9yX2NoZWNrOwogCVZhbGlkYXRlSW5kZXhTY2FuU3Rh dGUgY2FsbGJhY2tfcHJpdmF0ZV9kYXRhOwogCkBAIC0yMDYxLDE0ICsyMDY0LDE2IEBAIGhlYXBh bV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkvKiBVc2UgMTAl IG9mIG1lbW9yeSBmb3IgdHVwbGUgc3RvcmUuICovCiAJaW50CQlzdG9yZV93b3JrX21lbV9wYXJ0 ID0gbWFpbnRlbmFuY2Vfd29ya19tZW0gLyAxMDsKIAotCS8qCi0JICogRW5jb2RlIFRJRHMgYXMg aW50OCB2YWx1ZXMgZm9yIHRoZSBzb3J0LCByYXRoZXIgdGhhbiBkaXJlY3RseSBzb3J0aW5nCi0J ICogaXRlbSBwb2ludGVycy4gIFRoaXMgY2FuIGJlIHNpZ25pZmljYW50bHkgZmFzdGVyLCBwcmlt YXJpbHkgYmVjYXVzZSBUSUQKLQkgKiBpcyBhIHBhc3MtYnktcmVmZXJlbmNlIHR5cGUgb24gYWxs IHBsYXRmb3Jtcywgd2hlcmVhcyBpbnQ4IGlzCi0JICogcGFzcy1ieS12YWx1ZSBvbiBtb3N0IHBs YXRmb3Jtcy4KLQkgKi8KKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hv dCgpKTsKKwogCXR1cGxlc19mb3JfY2hlY2sgPSAgdHVwbGVzdG9yZV9iZWdpbl9kYXR1bShJTlQ4 T0lELCBmYWxzZSwgZmFsc2UsIHN0b3JlX3dvcmtfbWVtX3BhcnQpOwogCisJUG9wQWN0aXZlU25h cHNob3QoKTsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisKKwlBc3NlcnQoIUhhdmVS ZWdpc3RlcmVkT3JBY3RpdmVTbmFwc2hvdCgpKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eG1pbikpOworCiAJLyoKIAkgKiBzYW5pdHkgY2hlY2tzCiAJICovCkBAIC0y MDg0LDYgKzIwODksMjkgQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVh cFJlbGF0aW9uLAogCiAJc3RhdGUtPnR1cGxlc29ydCA9IGF1eFN0YXRlLT50dXBsZXNvcnQgPSBO VUxMOwogCisJLyoKKwkgKiBOb3cgdGFrZSB0aGUgZmlyc3Qgc25hcHNob3QgdGhhdCB3aWxsIGJl IHVzZWQgYnkgdG8gZmlsdGVyIGNhbmRpZGF0ZQorCSAqIHR1cGxlcy4gV2UgYXJlIGdvaW5nIHRv IHJlcGxhY2UgaXQgYnkgbmV3ZXIgc25hcHNob3QgZXZlcnkgc28gb2Z0ZW4KKwkgKiB0byBwcm9w YWdhdGUgaG9yaXpvbi4KKwkgKgorCSAqIEJld2FyZSEgIFRoZXJlIG1pZ2h0IHN0aWxsIGJlIHNu YXBzaG90cyBpbiB1c2UgdGhhdCB0cmVhdCBzb21lIHRyYW5zYWN0aW9uCisJICogYXMgaW4tcHJv Z3Jlc3MgdGhhdCBvdXIgdGVtcG9yYXJ5IHNuYXBzaG90IHRyZWF0cyBhcyBjb21taXR0ZWQuCisJ ICoKKwkgKiBJZiBzdWNoIGEgcmVjZW50bHktY29tbWl0dGVkIHRyYW5zYWN0aW9uIGRlbGV0ZWQg dHVwbGVzIGluIHRoZSB0YWJsZSwKKwkgKiB3ZSB3aWxsIG5vdCBpbmNsdWRlIHRoZW0gaW4gdGhl IGluZGV4OyB5ZXQgdGhvc2UgdHJhbnNhY3Rpb25zIHdoaWNoCisJICogc2VlIHRoZSBkZWxldGlu ZyBvbmUgYXMgc3RpbGwtaW4tcHJvZ3Jlc3Mgd2lsbCBleHBlY3Qgc3VjaCB0dXBsZXMgdG8KKwkg KiBiZSB0aGVyZSBvbmNlIHdlIG1hcmsgdGhlIGluZGV4IGFzIHZhbGlkLgorCSAqCisJICogV2Ug c29sdmUgdGhpcyBieSB3YWl0aW5nIGZvciBhbGwgZW5kYW5nZXJlZCB0cmFuc2FjdGlvbnMgdG8g ZXhpdCBiZWZvcmUKKwkgKiB3ZSBtYXJrIHRoZSBpbmRleCBhcyB2YWxpZCwgZm9yIHRoYXQgcmVh c29uIGxpbWl0WG1pbiBpcyBzdXBwb3J0ZWQuCisJICoKKwkgKiBXZSBhbHNvIHNldCBBY3RpdmVT bmFwc2hvdCB0byB0aGlzIHNuYXAsIHNpbmNlIGZ1bmN0aW9ucyBpbiBpbmRleGVzIG1heQorCSAq IG5lZWQgYSBzbmFwc2hvdC4KKwkgKi8KKwlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0 TGF0ZXN0U25hcHNob3QoKSk7CisJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKKwlsaW1p dFhtaW4gPSBzbmFwc2hvdC0+eG1pbjsKKwogCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUo KTsKIAllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKIAlzbG90ID0g TWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3IoaGVhcFJlbGF0aW9uKSwK QEAgLTIxMTcsNiArMjE0NSw3IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwKIAogCQlMb2NrQnVmZmVyKGJ1ZiwgQlVGRkVSX0xPQ0tfU0hBUkUpOwog CQlibG9ja19udW1iZXIgPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWYpOworCQlwYWdlX3JlYWRf Y291bnRlcisrOwogCiAJCWkgPSAwOwogCQl3aGlsZSAoKG9mZiA9IHR1cGxlc1tpXSkgIT0gSW52 YWxpZE9mZnNldE51bWJlcikKQEAgLTIxNzIsNiArMjIwMSwyMCBAQCBoZWFwYW1faW5kZXhfdmFs aWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCX0KIAogCQlSZWxlYXNlQnVmZmVy KGJ1Zik7CisjZGVmaW5lIFZBTElEQVRFX0lOREVYX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdF IDQwOTYKKwkJaWYgKHBhZ2VfcmVhZF9jb3VudGVyICUgVkFMSURBVEVfSU5ERVhfUkVTRVRfU05B UFNIT1RfRUFDSF9OX1BBR0UgPT0gMCkKKwkJeworCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJ CVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisJCQkvKiB0byBtYWtlIHN1cmUgd2UgcHJv cGFnYXRlIHhtaW4gKi8KKwkJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwkJCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisKKwkJCXNuYXBzaG90ID0g UmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwkJCVB1c2hBY3RpdmVTbmFw c2hvdChzbmFwc2hvdCk7CisJCQkvKiB4bWluIHNob3VsZCBub3QgZ28gYmFja3dhcmRzLCBidXQg anVzdCBmb3IgdGhlIGNhc2UqLworCQkJbGltaXRYbWluID0gVHJhbnNhY3Rpb25JZE5ld2VyKGxp bWl0WG1pbiwgc25hcHNob3QtPnhtaW4pOworCQl9CiAJfQogCiAJRXhlY0Ryb3BTaW5nbGVUdXBs ZVRhYmxlU2xvdChzbG90KTsKQEAgLTIxODEsOSArMjIyNCwyMSBAQCBoZWFwYW1faW5kZXhfdmFs aWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJcmVhZF9zdHJlYW1fZW5kKHJlYWRf c3RyZWFtKTsKIAl0dXBsZXN0b3JlX2VuZCh0dXBsZXNfZm9yX2NoZWNrKTsKIAorCS8qCisJICog RHJvcCB0aGUgbGF0ZXN0IHNuYXBzaG90LiAgV2UgbXVzdCBkbyB0aGlzIGJlZm9yZSB3YWl0aW5n IG91dCBvdGhlcgorCSAqIHNuYXBzaG90IGhvbGRlcnMsIGVsc2Ugd2Ugd2lsbCBkZWFkbG9jayBh Z2FpbnN0IG90aGVyIHByb2Nlc3NlcyBhbHNvCisJICogZG9pbmcgQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSwgd2hpY2ggd291bGQgc2VlIG91ciBzbmFwc2hvdCBhcyBvbmUKKwkgKiB0aGV5IG11 c3Qgd2FpdCBmb3IuCisJICovCisJUG9wQWN0aXZlU25hcHNob3QoKTsKKwlVbnJlZ2lzdGVyU25h cHNob3Qoc25hcHNob3QpOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQo TXlQcm9jLT54bWluID09IEludmFsaWRUcmFuc2FjdGlvbklkKTsKIAkvKiBUaGVzZSBtYXkgaGF2 ZSBiZWVuIHBvaW50aW5nIHRvIHRoZSBub3ctZ29uZSBlc3RhdGUgKi8KIAlpbmRleEluZm8tPmlp X0V4cHJlc3Npb25zU3RhdGUgPSBOSUw7CiAJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVTdGF0ZSA9 IE5VTEw7CisKKwlyZXR1cm4gbGltaXRYbWluOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHNvcnQuYwppbmRleCBlZTk0YWI1MDllNy4uNGY5MzZhNmNkOTggMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0c29ydC5jCkBAIC00NDUsNyArNDQ1LDcgQEAgX2J0X3Nwb29sc19oZWFwc2Nh bihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRl LAogCSAqIGRlYWQgdHVwbGVzKSB3b24ndCBnZXQgdmVyeSBmdWxsLCBzbyB3ZSBnaXZlIGl0IG9u bHkgd29ya19tZW0uCiAJICoKIAkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgZGVhZCB0 dXBsZXMgYXJlIG5vdCBuZWVkIHRvIGJlIHB1dCBpbnRvIGluZGV4Ci0JICogc2luY2Ugd2Ugd2Fp dCBmb3IgYWxsIHNuYXBzaG90cyBvbGRlciB0aGFuIHJlZmVyZW5jZSBzbmFwc2hvdCBkdXJpbmcg dGhlCisJICogc2luY2Ugd2Ugd2FpdCBmb3IgYWxsIHNuYXBzaG90cyBvbGRlciB0aGFuIGxhdGVz dCBzbmFwc2hvdCBkdXJpbmcgdGhlCiAJICogdmFsaWRhdGlvbiBwaGFzZS4KIAkgKi8KIAlpZiAo aW5kZXhJbmZvLT5paV9VbmlxdWUgJiYgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCkKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCmluZGV4IDhmOGExYWQ3Nzk2Li5kNTc0ODVjZWZj MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC0xOTEsMTQgKzE5MSwx NiBAQCB2YWN1dW1MZWFmUGFnZShzcGdCdWxrRGVsZXRlU3RhdGUgKmJkcywgUmVsYXRpb24gaW5k ZXgsIEJ1ZmZlciBidWZmZXIsCiAJCQkgKiBBZGQgdGFyZ2V0IFRJRCB0byBwZW5kaW5nIGxpc3Qg aWYgdGhlIHJlZGlyZWN0aW9uIGNvdWxkIGhhdmUKIAkJCSAqIGhhcHBlbmVkIHNpbmNlIFZBQ1VV TSBzdGFydGVkLiAgKElmIHhpZCBpcyBpbnZhbGlkLCBhc3N1bWUgaXQKIAkJCSAqIG11c3QgaGF2 ZSBoYXBwZW5lZCBiZWZvcmUgVkFDVVVNIHN0YXJ0ZWQsIHNpbmNlIFJFSU5ERVgKLQkJCSAqIENP TkNVUlJFTlRMWSBsb2NrcyBvdXQgVkFDVVVNLikKKwkJCSAqIENPTkNVUlJFTlRMWSBsb2NrcyBv dXQgVkFDVVVNLCBpZiBteVhtaW4gaXMgaW52YWxpZCBpdCBpcworCQkJICogdmFsaWRhdGlvbiBz Y2FuLikKIAkJCSAqCiAJCQkgKiBOb3RlOiB3ZSBjb3VsZCBtYWtlIGEgdGlnaHRlciB0ZXN0IGJ5 IHNlZWluZyBpZiB0aGUgeGlkIGlzCiAJCQkgKiAicnVubmluZyIgYWNjb3JkaW5nIHRvIHRoZSBh Y3RpdmUgc25hcHNob3Q7IGJ1dCBzbmFwbWdyLmMKIAkJCSAqIGRvZXNuJ3QgY3VycmVudGx5IGV4 cG9ydCBhIHN1aXRhYmxlIEFQSSwgYW5kIGl0J3Mgbm90IGVudGlyZWx5CiAJCQkgKiBjbGVhciB0 aGF0IGEgdGlnaHRlciB0ZXN0IGlzIHdvcnRoIHRoZSBjeWNsZXMgYW55d2F5LgogCQkJICovCi0J CQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhkdC0+eGlkLCBiZHMtPm15WG1pbikp CisJCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGJkcy0+bXlYbWluKSB8fAorCQkJCQlUcmFu c2FjdGlvbklkRm9sbG93c09yRXF1YWxzKGR0LT54aWQsIGJkcy0+bXlYbWluKSkKIAkJCQlzcGdB ZGRQZW5kaW5nVElEKGJkcywgJmR0LT5wb2ludGVyKTsKIAkJfQogCQllbHNlCkBAIC04MDgsNyAr ODEwLDYgQEAgc3BndmFjdXVtc2NhbihzcGdCdWxrRGVsZXRlU3RhdGUgKmJkcykKIAkvKiBGaW5p c2ggc2V0dGluZyB1cCBzcGdCdWxrRGVsZXRlU3RhdGUgKi8KIAlpbml0U3BHaXN0U3RhdGUoJmJk cy0+c3Bnc3RhdGUsIGluZGV4KTsKIAliZHMtPnBlbmRpbmdMaXN0ID0gTlVMTDsKLQliZHMtPm15 WG1pbiA9IEdldEFjdGl2ZVNuYXBzaG90KCktPnhtaW47CiAJYmRzLT5sYXN0RmlsbGVkQmxvY2sg PSBTUEdJU1RfTEFTVF9GSVhFRF9CTEtOTzsKIAogCS8qCkBAIC05NTksNiArOTYwLDEwIEBAIHNw Z2J1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQg KnN0YXRzLAogCWJkcy5zdGF0cyA9IHN0YXRzOwogCWJkcy5jYWxsYmFjayA9IGNhbGxiYWNrOwog CWJkcy5jYWxsYmFja19zdGF0ZSA9IGNhbGxiYWNrX3N0YXRlOworCWlmIChpbmZvLT52YWxpZGF0 ZV9pbmRleCkKKwkJYmRzLm15WG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCWVsc2UKKwkJ YmRzLm15WG1pbiA9IEdldEFjdGl2ZVNuYXBzaG90KCktPnhtaW47CiAKIAlzcGd2YWN1dW1zY2Fu KCZiZHMpOwogCkBAIC05OTksNiArMTAwNCw3IEBAIHNwZ3ZhY3V1bWNsZWFudXAoSW5kZXhWYWN1 dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCQliZHMuc3RhdHMg PSBzdGF0czsKIAkJYmRzLmNhbGxiYWNrID0gZHVtbXlfY2FsbGJhY2s7CiAJCWJkcy5jYWxsYmFj a19zdGF0ZSA9IE5VTEw7CisJCWJkcy5teVhtaW4gPSBHZXRBY3RpdmVTbmFwc2hvdCgpLT54bWlu OwogCiAJCXNwZ3ZhY3V1bXNjYW4oJmJkcyk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IGJiNDcw NjAxYzJmLi5iYTcxMTVlNGRjMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMzUzNSw4ICszNTM1LDkg QEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKiBpbnNlcnQg dGhlaXIgbmV3IHR1cGxlcyBpbnRvIGl0LiBBdCB0aGUgc2FtZSBtb21lbnQgd2UgY2xlYXIgImlu ZGlzcmVhZHkiIGZvcgogICogYXV4aWxpYXJ5IGluZGV4LCBzaW5jZSBpdCBpcyBubyBtb3JlIHJl cXVpcmVkIHRvIGJlIHVwZGF0ZWQuCiAgKgotICogV2UgdGhlbiB0YWtlIGEgbmV3IHJlZmVyZW5j ZSBzbmFwc2hvdCwgYW55IHR1cGxlcyB0aGF0IGFyZSB2YWxpZCBhY2NvcmRpbmcKLSAqIHRvIHRo aXMgc25hcCwgYnV0IGFyZSBub3QgaW4gdGhlIGluZGV4LCBtdXN0IGJlIGFkZGVkIHRvIHRoZSBp bmRleC4KKyAqIFdlIHRoZW4gdGFrZSBhIG5ldyBzbmFwc2hvdCwgYW55IHR1cGxlcyB0aGF0IGFy ZSB2YWxpZCBhY2NvcmRpbmcKKyAqIHRvIHRoaXMgc25hcCwgYnV0IGFyZSBub3QgaW4gdGhlIGlu ZGV4LCBtdXN0IGJlIGFkZGVkIHRvIHRoZSBpbmRleC4gSW4KKyAqIG9yZGVyIHRvIHByb3BhZ2F0 ZSB4bWluIHdlIHJlc2V0IHRoYXQgc25hcHNob3QgZXZlcnkgZmV3IHNvIG9mdGVuLgogICogKEFu eSB0dXBsZXMgY29tbWl0dGVkIGxpdmUgYWZ0ZXIgdGhlIHNuYXAgd2lsbCBiZSBpbnNlcnRlZCBp bnRvIHRoZQogICogaW5kZXggYnkgdGhlaXIgb3JpZ2luYXRpbmcgdHJhbnNhY3Rpb24uICBBbnkg dHVwbGVzIGNvbW1pdHRlZCBkZWFkIGJlZm9yZQogICogdGhlIHNuYXAgbmVlZCBub3QgYmUgaW5k ZXhlZCwgYmVjYXVzZSB3ZSB3aWxsIHdhaXQgb3V0IGFsbCB0cmFuc2FjdGlvbnMKQEAgLTM1NDks NyArMzU1MCw3IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog ICogVElEcyBvZiBib3RoIGF1eGlsaWFyeSBhbmQgdGFyZ2V0IGluZGV4ZXMsIGFuZCBkb2luZyBh ICJtZXJnZSBqb2luIiBhZ2FpbnN0CiAgKiB0aGUgVElEIGxpc3RzIHRvIHNlZSB3aGljaCB0dXBs ZXMgZnJvbSBhdXhpbGlhcnkgaW5kZXggYXJlIG1pc3NpbmcgZnJvbSB0aGUKICAqIHRhcmdldCBp bmRleC4gIFRodXMgd2Ugd2lsbCBlbnN1cmUgdGhhdCBhbGwgdHVwbGVzIHZhbGlkIGFjY29yZGlu ZyB0byB0aGUKLSAqIHJlZmVyZW5jZSBzbmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LiBOb3RpY2Ug d2UgbmVlZCB0byBkbyBidWxrZGVsZXRlIGluIHRoZQorICogbGF0ZXN0IHNuYXBzaG90IGFyZSBp biB0aGUgaW5kZXguIE5vdGljZSB3ZSBuZWVkIHRvIGRvIGJ1bGtkZWxldGUgaW4gdGhlCiAgKiBw YXJ0aWN1bGFyIG9yZGVyOiBhdXhpbGlhcnkgZmlyc3QsIHRhcmdldCBsYXN0LgogICoKICAqIEJ1 aWxkaW5nIGEgdW5pcXVlIGluZGV4IHRoaXMgd2F5IGlzIHRyaWNreTogd2UgbWlnaHQgdHJ5IHRv IGluc2VydCBhCkBAIC0zNTcwLDEzICszNTcxLDE0IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogICoKICAqIEFsc28sIHNvbWUgYWN0aW9ucyB0byBjb25jdXJy ZW50IGRyb3AgdGhlIGF1eGlsaWFyeSBpbmRleCBhcmUgcGVyZm9ybWVkLgogICovCi12b2lkCi12 YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNu YXBzaG90IHNuYXBzaG90KQorVHJhbnNhY3Rpb25JZAordmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJ ZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkKQogewogCVJlbGF0aW9uCWhlYXBSZWxhdGlv biwKIAkJCQlpbmRleFJlbGF0aW9uLAogCQkJCWF1eEluZGV4UmVsYXRpb247CiAJSW5kZXhJbmZv ICAqaW5kZXhJbmZvOworCVRyYW5zYWN0aW9uSWQgbGltaXRYbWluOwogCUluZGV4VmFjdXVtSW5m byBpdmluZm8sIGF1eGl2aW5mbzsKIAlWYWxpZGF0ZUluZGV4U3RhdGUgc3RhdGUsIGF1eFN0YXRl OwogCU9pZAkJCXNhdmVfdXNlcmlkOwpAQCAtMzYyNiw4ICszNjI4LDEyIEBAIHZhbGlkYXRlX2lu ZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNob3Qgc25h cHNob3QpCiAJICogRmV0Y2ggaW5mbyBuZWVkZWQgZm9yIGluZGV4X2luc2VydC4gIChZb3UgbWln aHQgdGhpbmsgdGhpcyBzaG91bGQgYmUKIAkgKiBwYXNzZWQgaW4gZnJvbSBEZWZpbmVJbmRleCwg YnV0IGl0cyBjb3B5IGlzIGxvbmcgZ29uZSBkdWUgdG8gaGF2aW5nCiAJICogYmVlbiBidWlsdCBp biBhIHByZXZpb3VzIHRyYW5zYWN0aW9uLikKKwkgKgorCSAqIFdlIG1pZ2h0IG5lZWQgc25hcHNo b3QgZm9yIGluZGV4IGV4cHJlc3Npb25zIG9yIHByZWRpY2F0ZXMuCiAJICovCisJUHVzaEFjdGl2 ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJaW5kZXhJbmZvID0gQnVpbGRJ bmRleEluZm8oaW5kZXhSZWxhdGlvbik7CisJUG9wQWN0aXZlU25hcHNob3QoKTsKIAogCS8qIG1h cmsgYnVpbGQgaXMgY29uY3VycmVudCBqdXN0IGZvciBjb25zaXN0ZW5jeSAqLwogCWluZGV4SW5m by0+aWlfQ29uY3VycmVudCA9IHRydWU7CkBAIC0zNjYzLDYgKzM2NjksOSBAQCB2YWxpZGF0ZV9p bmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNu YXBzaG90KQogCQkJCQkJCQkJCSAgIE5VTEwsIFRVUExFU09SVF9OT05FKTsKIAlhdXhTdGF0ZS5o dHVwcyA9IGF1eFN0YXRlLml0dXBzID0gYXV4U3RhdGUudHVwc19pbnNlcnRlZCA9IDA7CiAKKwkv KiB0dXBsZXNvcnRfYmVnaW5fZGF0dW0gbWF5IHJlcXVpcmUgY2F0YWxvZyBzbmFwc2hvdCAqLwor CUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwogCSh2b2lkKSBpbmRleF9idWxrX2RlbGV0 ZSgmYXV4aXZpbmZvLCBOVUxMLAogCQkJCQkJCSB2YWxpZGF0ZV9pbmRleF9jYWxsYmFjaywgJmF1 eFN0YXRlKTsKIAkvKiBJZiBhdXggaW5kZXggaXMgZW1wdHksIG1lcmdlIG1heSBiZSBza2lwcGVk ICovCkBAIC0zNjk3LDYgKzM3MDYsOSBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQg aW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCQkJCQkJCQkJCQlO VUxMLCBUVVBMRVNPUlRfTk9ORSk7CiAJc3RhdGUuaHR1cHMgPSBzdGF0ZS5pdHVwcyA9IHN0YXRl LnR1cHNfaW5zZXJ0ZWQgPSAwOwogCisJLyogdHVwbGVzb3J0X2JlZ2luX2RhdHVtIG1heSByZXF1 aXJlIGNhdGFsb2cgc25hcHNob3QgKi8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisK IAkvKiBhbWJ1bGtkZWxldGUgdXBkYXRlcyBwcm9ncmVzcyBtZXRyaWNzICovCiAJKHZvaWQpIGlu ZGV4X2J1bGtfZGVsZXRlKCZpdmluZm8sIE5VTEwsCiAJCQkJCQkJIHZhbGlkYXRlX2luZGV4X2Nh bGxiYWNrLCAmc3RhdGUpOwpAQCAtMzcxNiwxOSArMzcyOCwyNCBAQCB2YWxpZGF0ZV9pbmRleChP aWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90 KQogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDMsIHByb2dyZXNzX2luZGV4 LCBwcm9ncmVzc192YWxzKTsKIAl9CiAJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KHN0YXRlLnR1cGxl c29ydCk7CisJLyogdHVwbGVzb3J0X3BlcmZvcm1zb3J0IG1heSByZXF1aXJlIGNhdGFsb2cgc25h cHNob3QgKi8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisKIAl0dXBsZXNvcnRfcGVy Zm9ybXNvcnQoYXV4U3RhdGUudHVwbGVzb3J0KTsKKwkvKiB0dXBsZXNvcnRfcGVyZm9ybXNvcnQg bWF5IHJlcXVpcmUgY2F0YWxvZyBzbmFwc2hvdCAqLworCUludmFsaWRhdGVDYXRhbG9nU25hcHNo b3QoKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJ LyoKIAkgKiBOb3cgbWVyZ2UgYm90aCBpbmRleGVzCiAJICovCiAJcGdzdGF0X3Byb2dyZXNzX3Vw ZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURYTUVSR0UpOwotCXRhYmxlX2luZGV4X3ZhbGlkYXRl X3NjYW4oaGVhcFJlbGF0aW9uLAotCQkJCQkJCSAgaW5kZXhSZWxhdGlvbiwKLQkJCQkJCQkgIGlu ZGV4SW5mbywKLQkJCQkJCQkgIHNuYXBzaG90LAotCQkJCQkJCSAgJnN0YXRlLAotCQkJCQkJCSAg JmF1eFN0YXRlKTsKKwlsaW1pdFhtaW4gPSB0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuKGhlYXBS ZWxhdGlvbiwKKwkJCQkJCQkJCQkgIGluZGV4UmVsYXRpb24sCisJCQkJCQkJCQkJICBpbmRleElu Zm8sCisJCQkJCQkJCQkJICAmc3RhdGUsCisJCQkJCQkJCQkJICAmYXV4U3RhdGUpOwogCiAJLyog VHVwbGUgc29ydCBjbG9zZWQgYnkgdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbiAqLwogCUFzc2Vy dChzdGF0ZS50dXBsZXNvcnQgPT0gTlVMTCAmJiBhdXhTdGF0ZS50dXBsZXNvcnQgPT0gTlVMTCk7 CkBAIC0zNzUxLDYgKzM3NjgsOSBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5k ZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCWluZGV4X2Nsb3NlKGF1 eEluZGV4UmVsYXRpb24sIE5vTG9jayk7CiAJaW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlvbiwgTm9M b2NrKTsKIAl0YWJsZV9jbG9zZShoZWFwUmVsYXRpb24sIE5vTG9jayk7CisKKwlBc3NlcnQoIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCXJldHVybiBsaW1pdFhtaW47CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDdiM2Q0YjE5Mjg4Li45NWQ5YmE1 NzMyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTU5MSw3ICs1OTEsNiBAQCBEZWZp bmVJbmRleChPaWQgdGFibGVJZCwKIAlMb2NrUmVsSWQJaGVhcHJlbGlkOwogCUxPQ0tUQUcJCWhl YXBsb2NrdGFnOwogCUxPQ0tNT0RFCWxvY2ttb2RlOwotCVNuYXBzaG90CXNuYXBzaG90OwogCU9p ZAkJCXJvb3Rfc2F2ZV91c2VyaWQ7CiAJaW50CQkJcm9vdF9zYXZlX3NlY19jb250ZXh0OwogCWlu dAkJCXJvb3Rfc2F2ZV9uZXN0bGV2ZWw7CkBAIC0xNzkzLDMyICsxNzkyLDExIEBAIERlZmluZUlu ZGV4KE9pZCB0YWJsZUlkLAogCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdu b3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KIAlpZiAoc2FmZV9pbmRleCkKIAkJc2V0X2lu ZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQotCS8qCi0JICogTm93IHRha2UgdGhlICJyZWZlcmVuY2Ug c25hcHNob3QiIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHZhbGlkYXRlX2luZGV4KCkKLQkgKiB0byBm aWx0ZXIgY2FuZGlkYXRlIHR1cGxlcy4gIEJld2FyZSEgIFRoZXJlIG1pZ2h0IHN0aWxsIGJlIHNu YXBzaG90cyBpbgotCSAqIHVzZSB0aGF0IHRyZWF0IHNvbWUgdHJhbnNhY3Rpb24gYXMgaW4tcHJv Z3Jlc3MgdGhhdCBvdXIgcmVmZXJlbmNlCi0JICogc25hcHNob3QgdHJlYXRzIGFzIGNvbW1pdHRl ZC4gIElmIHN1Y2ggYSByZWNlbnRseS1jb21taXR0ZWQgdHJhbnNhY3Rpb24KLQkgKiBkZWxldGVk IHR1cGxlcyBpbiB0aGUgdGFibGUsIHdlIHdpbGwgbm90IGluY2x1ZGUgdGhlbSBpbiB0aGUgaW5k ZXg7IHlldAotCSAqIHRob3NlIHRyYW5zYWN0aW9ucyB3aGljaCBzZWUgdGhlIGRlbGV0aW5nIG9u ZSBhcyBzdGlsbC1pbi1wcm9ncmVzcyB3aWxsCi0JICogZXhwZWN0IHN1Y2ggdHVwbGVzIHRvIGJl IHRoZXJlIG9uY2Ugd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQuCi0JICoKLQkgKiBXZSBzb2x2 ZSB0aGlzIGJ5IHdhaXRpbmcgZm9yIGFsbCBlbmRhbmdlcmVkIHRyYW5zYWN0aW9ucyB0byBleGl0 IGJlZm9yZQotCSAqIHdlIG1hcmsgdGhlIGluZGV4IGFzIHZhbGlkLgotCSAqCi0JICogV2UgYWxz byBzZXQgQWN0aXZlU25hcHNob3QgdG8gdGhpcyBzbmFwLCBzaW5jZSBmdW5jdGlvbnMgaW4gaW5k ZXhlcyBtYXkKLQkgKiBuZWVkIGEgc25hcHNob3QuCi0JICovCi0Jc25hcHNob3QgPSBSZWdpc3Rl clNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0JUHVzaEFjdGl2ZVNuYXBzaG90 KHNuYXBzaG90KTsKIAkvKgogCSAqIE1lcmdlIGNvbnRlbnQgb2YgYXV4aWxpYXJ5IGFuZCB0YXJn ZXQgaW5kZXhlcyAtIGluc2VydCBhbnkgbWlzc2luZyBpbmRleCBlbnRyaWVzLgogCSAqLwotCXZh bGlkYXRlX2luZGV4KHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCwgYXV4SW5kZXhSZWxhdGlvbklk LCBzbmFwc2hvdCk7Ci0JbGltaXRYbWluID0gc25hcHNob3QtPnhtaW47CisJbGltaXRYbWluID0g dmFsaWRhdGVfaW5kZXgodGFibGVJZCwgaW5kZXhSZWxhdGlvbklkLCBhdXhJbmRleFJlbGF0aW9u SWQpOwogCi0JUG9wQWN0aXZlU25hcHNob3QoKTsKLQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNo b3QpOwogCS8qCiAJICogVGhlIHNuYXBzaG90IHN1YnN5c3RlbSBjb3VsZCBzdGlsbCBjb250YWlu IHJlZ2lzdGVyZWQgc25hcHNob3RzIHRoYXQKIAkgKiBhcmUgaG9sZGluZyBiYWNrIG91ciBwcm9j ZXNzJ3MgYWR2ZXJ0aXNlZCB4bWluOyBpbiBwYXJ0aWN1bGFyLCBpZgpAQCAtMTg0MCw4ICsxODE4 LDggQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJLyoKIAkgKiBUaGUgaW5kZXggaXMgbm93 IHZhbGlkIGluIHRoZSBzZW5zZSB0aGF0IGl0IGNvbnRhaW5zIGFsbCBjdXJyZW50bHkKIAkgKiBp bnRlcmVzdGluZyB0dXBsZXMuICBCdXQgc2luY2UgaXQgbWlnaHQgbm90IGNvbnRhaW4gdHVwbGVz IGRlbGV0ZWQganVzdAotCSAqIGJlZm9yZSB0aGUgcmVmZXJlbmNlIHNuYXAgd2FzIHRha2VuLCB3 ZSBoYXZlIHRvIHdhaXQgb3V0IGFueQotCSAqIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGhhdmUg b2xkZXIgc25hcHNob3RzLgorCSAqIGJlZm9yZSB0aGUgbGFzdCBzbmFwc2hvdCBkdXJpbmcgdmFs aWRhdGluZyB3YXMgdGFrZW4sIHdlIGhhdmUgdG8gd2FpdAorCSAqIG91dCBhbnkgdHJhbnNhY3Rp b25zIHRoYXQgbWlnaHQgaGF2ZSBvbGRlciBzbmFwc2hvdHMuCiAJICovCiAJSU5KRUNUSU9OX1BP SU5UKCJkZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZCIsIE5VTEwpOwogCXBnc3RhdF9wcm9n cmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLApAQCAtNDM4MSw3ICs0 MzU5LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpz dG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAl7CiAJCVJlaW5kZXhJbmRleEluZm8g Km5ld2lkeCA9IGxmaXJzdChsYyk7CiAJCVRyYW5zYWN0aW9uSWQgbGltaXRYbWluOwotCQlTbmFw c2hvdAlzbmFwc2hvdDsKIAogCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCkBAIC00Mzk2 LDEzICs0MzczLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJaWYgKG5ld2lkeC0+c2Fm ZSkKIAkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CiAKLQkJLyoKLQkJICogVGFrZSB0aGUg InJlZmVyZW5jZSBzbmFwc2hvdCIgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdmFsaWRhdGVfaW5kZXgo KQotCQkgKiB0byBmaWx0ZXIgY2FuZGlkYXRlIHR1cGxlcy4KLQkJICovCi0JCXNuYXBzaG90ID0g UmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCQlQdXNoQWN0aXZl U25hcHNob3Qoc25hcHNob3QpOwotCiAJCS8qCiAJCSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhl IGluZGV4IHRvIGJ1aWxkLCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZv bHZlZC4KQEAgLTQ0MTQsMTYgKzQzODQsOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlw cm9ncmVzc192YWxzWzNdID0gbmV3aWR4LT5hbUlkOwogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRl X211bHRpX3BhcmFtKDQsIHByb2dyZXNzX2luZGV4LCBwcm9ncmVzc192YWxzKTsKIAotCQl2YWxp ZGF0ZV9pbmRleChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+aW5kZXhJZCwgbmV3aWR4LT5hdXhJ bmRleElkLCBzbmFwc2hvdCk7Ci0KLQkJLyoKLQkJICogV2UgY2FuIG5vdyBkbyBhd2F5IHdpdGgg b3VyIGFjdGl2ZSBzbmFwc2hvdCwgd2Ugc3RpbGwgbmVlZCB0byBzYXZlCi0JCSAqIHRoZSB4bWlu IGxpbWl0IHRvIHdhaXQgZm9yIG9sZGVyIHNuYXBzaG90cy4KLQkJICovCi0JCWxpbWl0WG1pbiA9 IHNuYXBzaG90LT54bWluOwotCi0JCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0JCVVucmVnaXN0ZXJT bmFwc2hvdChzbmFwc2hvdCk7CisJCWxpbWl0WG1pbiA9IHZhbGlkYXRlX2luZGV4KG5ld2lkeC0+ dGFibGVJZCwgbmV3aWR4LT5pbmRleElkLCBuZXdpZHgtPmF1eEluZGV4SWQpOworCQlBc3NlcnQo IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJCS8qCiAJCSAqIFRvIGVu c3VyZSBubyBkZWFkbG9ja3MsIHdlIG11c3QgY29tbWl0IGFuZCBzdGFydCB5ZXQgYW5vdGhlcgpA QCAtNDQzNiw3ICs0Mzk4LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJLyoKIAkJICog VGhlIGluZGV4IGlzIG5vdyB2YWxpZCBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBjb250YWlucyBhbGwg Y3VycmVudGx5CiAJCSAqIGludGVyZXN0aW5nIHR1cGxlcy4gIEJ1dCBzaW5jZSBpdCBtaWdodCBu b3QgY29udGFpbiB0dXBsZXMgZGVsZXRlZAotCQkgKiBqdXN0IGJlZm9yZSB0aGUgcmVmZXJlbmNl IHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQgb3V0IGFueQorCQkgKiBqdXN0IGJlZm9y ZSB0aGUgbGF0ZXN0IHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQgb3V0IGFueQogCQkg KiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkJICoKIAkJ ICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3Qgb3IgWGlkIGluIHRoaXMgdHJhbnNh Y3Rpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCA1YmMxNmYwN2E4Ni4uNjZkNWRmYjk2ZDYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3RhYmxlYW0uaApAQCAtNzE0LDEyICs3MTQsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFi bGVBbVJvdXRpbmUKIAkJCQkJCQkJCQkgICBUYWJsZVNjYW5EZXNjIHNjYW4pOwogCiAJLyogc2Vl IHRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4gZm9yIHJlZmVyZW5jZSBhYm91dCBwYXJhbWV0ZXJz ICovCi0Jdm9pZAkJKCppbmRleF92YWxpZGF0ZV9zY2FuKSAoUmVsYXRpb24gdGFibGVfcmVsLAot CQkJCQkJCQkJCVJlbGF0aW9uIGluZGV4X3JlbCwKLQkJCQkJCQkJCQlJbmRleEluZm8gKmluZGV4 X2luZm8sCi0JCQkJCQkJCQkJU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkJCQkJVmFsaWRhdGVJ bmRleFN0YXRlICpzdGF0ZSwKLQkJCQkJCQkJCQlWYWxpZGF0ZUluZGV4U3RhdGUgKmF1eF9zdGF0 ZSk7CisJVHJhbnNhY3Rpb25JZAkJKCppbmRleF92YWxpZGF0ZV9zY2FuKSAoUmVsYXRpb24gdGFi bGVfcmVsLAorCQkJCQkJCQkJCQkJUmVsYXRpb24gaW5kZXhfcmVsLAorCQkJCQkJCQkJCQkJSW5k ZXhJbmZvICppbmRleF9pbmZvLAorCQkJCQkJCQkJCQkJVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0 ZSwKKwkJCQkJCQkJCQkJCVZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4X3N0YXRlKTsKIAogCiAJLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCkBAIC0xODM0LDE4ICsxODMzLDE2IEBAIHRhYmxlX2luZGV4X2J1aWxk X3JhbmdlX3NjYW4oUmVsYXRpb24gdGFibGVfcmVsLAogICogTm90ZTogaXQgaXMgcmVzcG9uc2li aWxpdHkgb2YgdGhhdCBmdW5jdGlvbiB0byBjbG9zZSBzb3J0c3RhdGVzIGluCiAgKiBib3RoIGBz dGF0ZWAgYW5kIGBhdXhzdGF0ZWAuCiAgKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAorc3RhdGljIGlu bGluZSBUcmFuc2FjdGlvbklkCiB0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIHRh YmxlX3JlbCwKIAkJCQkJCSAgUmVsYXRpb24gaW5kZXhfcmVsLAogCQkJCQkJICBJbmRleEluZm8g KmluZGV4X2luZm8sCi0JCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJICBWYWxpZGF0 ZUluZGV4U3RhdGUgKnN0YXRlLAogCQkJCQkJICBWYWxpZGF0ZUluZGV4U3RhdGUgKmF1eHN0YXRl KQogewogCXJldHVybiB0YWJsZV9yZWwtPnJkX3RhYmxlYW0tPmluZGV4X3ZhbGlkYXRlX3NjYW4o dGFibGVfcmVsLAogCQkJCQkJCQkJCQkJCSAgaW5kZXhfcmVsLAogCQkJCQkJCQkJCQkJCSAgaW5k ZXhfaW5mbywKLQkJCQkJCQkJCQkJCQkgIHNuYXBzaG90LAogCQkJCQkJCQkJCQkJCSAgc3RhdGUs CiAJCQkJCQkJCQkJCQkJICBhdXhzdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvdHJhbnNhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaAppbmRleCA3ZDgy Y2QyZWI1Ni4uMTVlMzQ1YzdhMTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFu c2FtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaApAQCAtMzU1LDYgKzM1NSwy MSBAQCBOb3JtYWxUcmFuc2FjdGlvbklkT2xkZXIoVHJhbnNhY3Rpb25JZCBhLCBUcmFuc2FjdGlv bklkIGIpCiAJcmV0dXJuIGI7CiB9CiAKKy8qIHJldHVybiB0aGUgbmV3ZXIgb2YgdGhlIHR3byBJ RHMgKi8KK3N0YXRpYyBpbmxpbmUgVHJhbnNhY3Rpb25JZAorVHJhbnNhY3Rpb25JZE5ld2VyKFRy YW5zYWN0aW9uSWQgYSwgVHJhbnNhY3Rpb25JZCBiKQoreworCWlmICghVHJhbnNhY3Rpb25JZElz VmFsaWQoYSkpCisJCXJldHVybiBiOworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChiKSkK KwkJcmV0dXJuIGE7CisKKwlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MoYSwgYikpCisJCXJldHVy biBhOworCXJldHVybiBiOworfQorCiAvKiByZXR1cm4gdGhlIG5ld2VyIG9mIHRoZSB0d28gSURz ICovCiBzdGF0aWMgaW5saW5lIEZ1bGxUcmFuc2FjdGlvbklkCiBGdWxsVHJhbnNhY3Rpb25JZE5l d2VyKEZ1bGxUcmFuc2FjdGlvbklkIGEsIEZ1bGxUcmFuc2FjdGlvbklkIGIpCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4 LmgKaW5kZXggZDUxYjRlOGNkMTMuLjZjNzgwNjgxOTY3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL2luZGV4LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCkBAIC0x NTIsNyArMTUyLDcgQEAgZXh0ZXJuIHZvaWQgaW5kZXhfYnVpbGQoUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCQkJCQkJYm9vbCBpc3JlaW5kZXgsCiAJCQkJCQlib29sIHBhcmFsbGVsKTsKIAotZXh0 ZXJuIHZvaWQgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJ bmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCk7CitleHRlcm4gVHJhbnNhY3Rpb25JZCB2YWxpZGF0 ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQpOwogCiBleHRl cm4gdm9pZCBpbmRleF9zZXRfc3RhdGVfZmxhZ3MoT2lkIGluZGV4SWQsIEluZGV4U3RhdGVGbGFn c0FjdGlvbiBhY3Rpb24pOwogCi0tIAoyLjQzLjAKCg== --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="v24-0010-Optimize-auxiliary-index-handling.patch" Content-Disposition: attachment; filename="v24-0010-Optimize-auxiliary-index-handling.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm1315 RnJvbSBhMzNiZDJlZjE5MDE5YmM0YTBmYjU5ZDJjMGE2YjUyYmNhZThmZGI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAzMCBEZWMgMjAyNCAxNjozNzoxMiArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI0IDEwLzEyXSBPcHRpbWl6ZSBhdXhpbGlhcnkgaW5kZXggaGFuZGxpbmcKTUlNRS1W ZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClNraXAgdW5uZWNlc3NhcnkgY29tcHV0YXRpb25z IGZvciBhdXhpbGlhcnkgaW5kaWNlcyBieToKLSBpbiB0aGUgaW5kZXjigJBpbnNlcnQgcGF0aCwg ZGV0ZWN0IGF1eGlsaWFyeSBpbmRleGVzIGFuZCBieXBhc3MgRGF0dW0gdmFsdWUgY29tcHV0YXRp b24KLSBzZXQgaW5kZXhVbmNoYW5nZWQ9ZmFsc2UgZm9yIGF1eGlsaWFyeSBpbmRpY2VzIHRvIGF2 b2lkIHJlZHVuZGFudCBjaGVja3MKClRoZXNlIG9wdGltaXphdGlvbnMgcmVkdWNlIG92ZXJoZWFk IGR1cmluZyBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMuCi0tLQogc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jICAgICAgICAgfCAxMSArKysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0luZGV4aW5nLmMgfCAxMSArKysrKysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBp bnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA3OTY0OGVh NzFhMC4uYmI0NzA2MDFjMmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTI5MzMsNiArMjkzMywxNyBA QCBGb3JtSW5kZXhEYXR1bShJbmRleEluZm8gKmluZGV4SW5mbywKIAlMaXN0Q2VsbCAgICppbmRl eHByX2l0ZW07CiAJaW50CQkJaTsKIAorCS8qIEF1eGlsaWFyeSBpbmRleCBkb2VzIG5vdCBuZWVk IGFueSB2YWx1ZXMgdG8gYmUgY29tcHV0ZWQgKi8KKwlpZiAodW5saWtlbHkoaW5kZXhJbmZvLT5p aV9BdXhpbGlhcnkpKQorCXsKKwkJZm9yIChpID0gMDsgaSA8IGluZGV4SW5mby0+aWlfTnVtSW5k ZXhBdHRyczsgaSsrKQorCQl7CisJCQl2YWx1ZXNbaV0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7 CisJCQlpc251bGxbaV0gPSB0cnVlOworCQl9CisJCXJldHVybjsKKwl9CisKIAlpZiAoaW5kZXhJ bmZvLT5paV9FeHByZXNzaW9ucyAhPSBOSUwgJiYKIAkJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9u c1N0YXRlID09IE5JTCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj SW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCmluZGV4IDBl ZGY1NGU4NTJkLi4wOWI5YjgxMWRlZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMK QEAgLTQ0MCwxMSArNDQwLDE0IEBAIEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLAogCQkgKiBUaGVyZSdzIGRlZmluaXRlbHkgZ29pbmcgdG8gYmUgYW4g aW5kZXhfaW5zZXJ0KCkgY2FsbCBmb3IgdGhpcwogCQkgKiBpbmRleC4gIElmIHdlJ3JlIGJlaW5n IGNhbGxlZCBhcyBwYXJ0IG9mIGFuIFVQREFURSBzdGF0ZW1lbnQsCiAJCSAqIGNvbnNpZGVyIGlm IHRoZSAnaW5kZXhVbmNoYW5nZWQnID0gdHJ1ZSBoaW50IHNob3VsZCBiZSBwYXNzZWQuCisJCSAq CisJCSAqIEluIGNhc2Ugb2YgYXV4aWxpYXJ5IGluZGV4IGFsd2F5cyBwYXNzIGZhbHNlIGFzIG9w dGltaXNhdGlvbi4KIAkJICovCi0JCWluZGV4VW5jaGFuZ2VkID0gdXBkYXRlICYmIGluZGV4X3Vu Y2hhbmdlZF9ieV91cGRhdGUocmVzdWx0UmVsSW5mbywKLQkJCQkJCQkJCQkJCQkJCSBlc3RhdGUs Ci0JCQkJCQkJCQkJCQkJCQkgaW5kZXhJbmZvLAotCQkJCQkJCQkJCQkJCQkJIGluZGV4UmVsYXRp b24pOworCQlpbmRleFVuY2hhbmdlZCA9IHVwZGF0ZSAmJiBsaWtlbHkoIWluZGV4SW5mby0+aWlf QXV4aWxpYXJ5KSAmJgorCQkJCQkJCQkJaW5kZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZShyZXN1bHRS ZWxJbmZvLAorCQkJCQkJCQkJCQkJCQkJICBlc3RhdGUsCisJCQkJCQkJCQkJCQkJCQkgIGluZGV4 SW5mbywKKwkJCQkJCQkJCQkJCQkJCSAgaW5kZXhSZWxhdGlvbik7CiAKIAkJc2F0aXNmaWVzQ29u c3RyYWludCA9CiAJCQlpbmRleF9pbnNlcnQoaW5kZXhSZWxhdGlvbiwgLyogaW5kZXggcmVsYXRp b24gKi8KLS0gCjIuNDMuMAoK --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="v24-0009-Track-and-drop-auxiliary-indexes-in-DROP-REINDEX.patch" Content-Disposition: attachment; filename="v24-0009-Track-and-drop-auxiliary-indexes-in-DROP-REINDEX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm1214 RnJvbSBkZTI5N2IzYTJlODYwM2RkMjc4NjZjNjk4ZmQyNzFmY2NlNzIyYmY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDozNjozMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI0IDA5LzEyXSBUcmFjayBhbmQgZHJvcCBhdXhpbGlhcnkgaW5kZXhlcyBpbiBEUk9Q L1JFSU5ERVgKCkR1cmluZyBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMsIGF1eGlsaWFyeSBp bmRleGVzIG1heSBiZSBsZWZ0IGFzIG9ycGhhbmVkIG9iamVjdHMgd2hlbiBlcnJvcnMgb2NjdXIg KGp1bmsgYXV4aWxpYXJ5IGluZGV4ZXMpLgoKVGhpcyBwYXRjaCBpbXByb3ZlcyB0aGUgaGFuZGxp bmcgb2Ygc3VjaCBhdXhpbGlhcnkgaW5kZXhlczoKLSBhZGQgYXV4aWxpYXJ5Rm9ySW5kZXhJZCBw YXJhbWV0ZXIgdG8gaW5kZXhfY3JlYXRlKCkgdG8gdHJhY2sgZGVwZW5kZW5jaWVzIGJldHdlZW4g bWFpbiBhbmQgYXV4aWxpYXJ5IGluZGV4ZXMKLSBhdXRvbWF0aWNhbGx5IGRyb3AgYXV4aWxpYXJ5 IGluZGV4ZXMgd2hlbiB0aGUgbWFpbiBpbmRleCBpcyBkcm9wcGVkCi0gZGVsZXRlIGp1bmsgYXV4 aWxpYXJ5IGluZGV4ZXMgcHJvcGVybHkgZHVyaW5nIFJFSU5ERVggb3BlcmF0aW9ucwotLS0KIGRv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgICAgICAgICB8ICAxNCArKy0KIGRvYy9z cmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tl bmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgfCAgNzEgKysrKysrKysrKy0tLS0KIHNyYy9i YWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5kLmMgICAgICAgICAgICB8ICA1NyArKysrKysrKysrKwog c3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jICAgICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICB8ICAzOCArKysrKysrLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgIHwgIDQ4ICsrKysrKysrKy0K IHNyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jICAgICAgICAgICAgICB8ICAgMyArLQogc3Jj L2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9u b2Rlcy9tYWtlZnVuY3MuaCAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCB8IDEwNSArKysrKysrKysrKysrKysrKysrLS0KIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgICAgICB8ICA1NyArKysrKysrKysr LQogMTQgZmlsZXMgY2hhbmdlZCwgMzY3IGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sCmluZGV4IDMwZGIwNzljOGQ4Li5jZjE0ZjQ3NDk0 NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sCkBAIC02NjgsMTAgKzY2OCwxNiBAQCBJ bmRleGVzOgogICAgICJpZHhfY2NhdXgiIHN0aXIgKGNvbCkgSU5WQUxJRAogPC9wcm9ncmFtbGlz dGluZz4KIAotICAgIFRoZSByZWNvbW1lbmRlZCByZWNvdmVyeQotICAgIG1ldGhvZCBpbiBzdWNo IGNhc2VzIGlzIHRvIGRyb3AgdGhlc2UgaW5kZXhlcyBhbmQgdHJ5IGFnYWluIHRvIHBlcmZvcm0K LSAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPi4gKEFub3Ro ZXIgcG9zc2liaWxpdHkgaXMKLSAgICB0byByZWJ1aWxkIHRoZSBpbmRleCB3aXRoIDxjb21tYW5k PlJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPikuCisgICAgVGhlIHJlY29tbWVu ZGVkIHJlY292ZXJ5IG1ldGhvZCBpbiBzdWNoIGNhc2VzIGlzIHRvIGRyb3AgdGhlIGluZGV4IHdp dGgKKyAgICA8Y29tbWFuZD5EUk9QIElOREVYPC9jb21tYW5kPi4gVGhlIGF1eGlsaWFyeSBpbmRl eCAoc3VmZml4ZWQgd2l0aAorICAgIDxsaXRlcmFsPmNjYXV4PC9saXRlcmFsPikgd2lsbCBiZSBh dXRvbWF0aWNhbGx5IGRyb3BwZWQgd2hlbiB0aGUgbWFpbgorICAgIGluZGV4IGlzIGRyb3BwZWQu IEFmdGVyIGRyb3BwaW5nIHRoZSBpbmRleGVzLCB5b3UgY2FuIHRyeSBhZ2FpbiB0byBwZXJmb3Jt CisgICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4uIChBbm90 aGVyIHBvc3NpYmlsaXR5IGlzIHRvCisgICAgcmVidWlsZCB0aGUgaW5kZXggd2l0aCA8Y29tbWFu ZD5SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4sCisgICAgd2hpY2ggd2lsbCBh bHNvIGhhbmRsZSBjbGVhbnVwIG9mIGFueSBpbnZhbGlkIGF1eGlsaWFyeSBpbmRleGVzLikKKyAg ICBJZiB0aGUgb25seSBpbnZhbGlkIGluZGV4IGlzIG9uZSBzdWZmaXhlZCA8bGl0ZXJhbD5jY2F1 eDwvbGl0ZXJhbD4KKyAgICByZWNvbW1lbmRlZCByZWNvdmVyeSBtZXRob2QgaXMganVzdCA8bGl0 ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPgorICAgIGZvciB0aGF0IGluZGV4LgogICAgPC9wYXJh PgogCiAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKaW5kZXggNGVkM2M5NjkwMTIuLmQ2Mjc5 MWZmOWMzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbApAQCAtNDc3LDExICs0NzcsMTUgQEAgSW5kZXhl czoKICAgICA8bGl0ZXJhbD5fY2NuZXc8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPl9jY2F1eDwvbGl0 ZXJhbD4sIHRoZW4gaXQgY29ycmVzcG9uZHMgdG8gdGhlIHRyYW5zaWVudCBvciBhdXhpbGlhcnkK ICAgICBpbmRleCBjcmVhdGVkIGR1cmluZyB0aGUgY29uY3VycmVudCBvcGVyYXRpb24sIGFuZCB0 aGUgcmVjb21tZW5kZWQKICAgICByZWNvdmVyeSBtZXRob2QgaXMgdG8gZHJvcCB0aGVzZSBpbmRl eGVzIHVzaW5nIDxsaXRlcmFsPkRST1AgSU5ERVg8L2xpdGVyYWw+LAotICAgIHRoZW4gYXR0ZW1w dCA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gYWdhaW4uCisgICAgdGhl biBhdHRlbXB0IDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBhZ2Fpbi4g VGhlIGF1eGlsaWFyeSBpbmRleAorICAgIChzdWZmaXhlZCB3aXRoIDxsaXRlcmFsPl9jY2F1eDwv bGl0ZXJhbD4pIHdpbGwgYmUgYXV0b21hdGljYWxseSBkcm9wcGVkCisgICAgYWxvbmcgd2l0aCBp dHMgbWFpbiBpbmRleC4KICAgICBJZiB0aGUgaW52YWxpZCBpbmRleCBpcyBpbnN0ZWFkIHN1ZmZp eGVkIDxsaXRlcmFsPl9jY29sZDwvbGl0ZXJhbD4sCiAgICAgaXQgY29ycmVzcG9uZHMgdG8gdGhl IG9yaWdpbmFsIGluZGV4IHdoaWNoIGNvdWxkIG5vdCBiZSBkcm9wcGVkOwogICAgIHRoZSByZWNv bW1lbmRlZCByZWNvdmVyeSBtZXRob2QgaXMgdG8ganVzdCBkcm9wIHNhaWQgaW5kZXgsIHNpbmNl IHRoZQotICAgIHJlYnVpbGQgcHJvcGVyIGhhcyBiZWVuIHN1Y2Nlc3NmdWwuCisgICAgcmVidWls ZCBwcm9wZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bC4gSWYgdGhlIG9ubHkKKyAgICBpbnZhbGlkIGlu ZGV4IGlzIG9uZSBzdWZmaXhlZCA8bGl0ZXJhbD5jY2F1eDwvbGl0ZXJhbD4gcmVjb21tZW5kZWQK KyAgICByZWNvdmVyeSBtZXRob2QgaXMganVzdCA8bGl0ZXJhbD5EUk9QIElOREVYPC9saXRlcmFs PiBmb3IgdGhhdCBpbmRleC4KICAgICBBIG5vbnplcm8gbnVtYmVyIG1heSBiZSBhcHBlbmRlZCB0 byB0aGUgc3VmZml4IG9mIHRoZSBpbnZhbGlkIGluZGV4CiAgICAgbmFtZXMgdG8ga2VlcCB0aGVt IHVuaXF1ZSwgbGlrZSA8bGl0ZXJhbD5fY2NuZXcxPC9saXRlcmFsPiwKICAgICA8bGl0ZXJhbD5f Y2NvbGQyPC9saXRlcmFsPiwgZXRjLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9k ZXBlbmRlbmN5LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwppbmRleCA3ZGRl ZDYzNGViOC4uYjU3OWQyNmFmZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVw ZW5kZW5jeS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCkBAIC0yODYs NyArMjg2LDcgQEAgcGVyZm9ybURlbGV0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwK IAkgKiBBY3F1aXJlIGRlbGV0aW9uIGxvY2sgb24gdGhlIHRhcmdldCBvYmplY3QuICAoSWRlYWxs eSB0aGUgY2FsbGVyIGhhcwogCSAqIGRvbmUgdGhpcyBhbHJlYWR5LCBidXQgbWFueSBwbGFjZXMg YXJlIHNsb3BweSBhYm91dCBpdC4pCiAJICovCi0JQWNxdWlyZURlbGV0aW9uTG9jayhvYmplY3Qs IDApOworCUFjcXVpcmVEZWxldGlvbkxvY2sob2JqZWN0LCBmbGFncyk7CiAKIAkvKgogCSAqIENv bnN0cnVjdCBhIGxpc3Qgb2Ygb2JqZWN0cyB0byBkZWxldGUgKGllLCB0aGUgZ2l2ZW4gb2JqZWN0 IHBsdXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBhMzY0MDJlYjY0OS4uNzk2NDhlYTcxYTAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMKQEAgLTc3Niw2ICs3NzYsOCBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVh cFJlbGF0aW9uLAogCQkgICAoKGZsYWdzICYgSU5ERVhfQ1JFQVRFX0FERF9DT05TVFJBSU5UKSAh PSAwKSk7CiAJLyogcGFydGl0aW9uZWQgaW5kZXhlcyBtdXN0IG5ldmVyIGJlICJidWlsdCIgYnkg dGhlbXNlbHZlcyAqLwogCUFzc2VydCghcGFydGl0aW9uZWQgfHwgKGZsYWdzICYgSU5ERVhfQ1JF QVRFX1NLSVBfQlVJTEQpKTsKKwkvKiBpaV9BdXhpbGlhcnlGb3JJbmRleElkIGFuZCBJTkRFWF9D UkVBVEVfQVVYSUxJQVJZIGFyZSByZXF1aXJlZCBib3RoIG9yIG5laXRoZXIgKi8KKwlBc3NlcnQo T2lkSXNWYWxpZChpbmRleEluZm8tPmlpX0F1eGlsaWFyeUZvckluZGV4SWQpID09IGF1eGlsaWFy eSk7CiAKIAlyZWxraW5kID0gcGFydGl0aW9uZWQgPyBSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVY IDogUkVMS0lORF9JTkRFWDsKIAlpc19leGNsdXNpb24gPSAoaW5kZXhJbmZvLT5paV9FeGNsdXNp b25PcHMgIT0gTlVMTCk7CkBAIC0xMTgxLDYgKzExODMsMTUgQEAgaW5kZXhfY3JlYXRlKFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwKIAkJCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJl bmNlZCwgREVQRU5ERU5DWV9QQVJUSVRJT05fU0VDKTsKIAkJfQogCisJCS8qCisJCSAqIFJlY29y ZCBkZXBlbmRlbmN5IG9uIHRoZSBtYWluIGluZGV4IGluIGNhc2Ugb2YgYXV4aWxpYXJ5IGluZGV4 LgorCQkgKi8KKwkJaWYgKE9pZElzVmFsaWQoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnlGb3JJbmRl eElkKSkKKwkJeworCQkJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0 aW9uSWQsIGluZGV4SW5mby0+aWlfQXV4aWxpYXJ5Rm9ySW5kZXhJZCk7CisJCQlyZWNvcmREZXBl bmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfQVVUTyk7CisJCX0KKwog CQkvKiBwbGFjZWhvbGRlciBmb3Igbm9ybWFsIGRlcGVuZGVuY2llcyAqLwogCQlhZGRycyA9IG5l d19vYmplY3RfYWRkcmVzc2VzKCk7CiAKQEAgLTE0MTMsNyArMTQyNCw4IEBAIGluZGV4X2NvbmN1 cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElk LAogCQkJCQkJCXRydWUsCiAJCQkJCQkJaW5kZXhSZWxhdGlvbi0+cmRfaW5kYW0tPmFtc3VtbWFy aXppbmcsCiAJCQkJCQkJb2xkSW5mby0+aWlfV2l0aG91dE92ZXJsYXBzLAotCQkJCQkJCWZhbHNl KTsKKwkJCQkJCQlmYWxzZSwKKwkJCQkJCQlJbnZhbGlkT2lkKTsKIAogCS8qCiAJICogRXh0cmFj dCB0aGUgbGlzdCBvZiBjb2x1bW4gbmFtZXMgYW5kIHRoZSBjb2x1bW4gbnVtYmVycyBmb3IgdGhl IG5ldwpAQCAtMTU4MSw3ICsxNTkzLDggQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9hdXgo UmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgbWFpbkluZGV4SWQsCiAJCQkJCQkJdHJ1ZSwKIAkJ CQkJCQlmYWxzZSwJLyogYXV4IGFyZSBub3Qgc3VtbWFyaXppbmcgKi8KIAkJCQkJCQlmYWxzZSwJ LyogYXV4IGFyZSBub3Qgd2l0aG91dCBvdmVybGFwcyAqLwotCQkJCQkJCXRydWUJLyogYXV4aWxp YXJ5ICovKTsKKwkJCQkJCQl0cnVlCS8qIGF1eGlsaWFyeSAqLywKKwkJCQkJCQltYWluSW5kZXhJ ZCAvKiBhdXhpbGlhcnlGb3JJbmRleElkICovKTsKIAogCS8qCiAJICogRXh0cmFjdCB0aGUgbGlz dCBvZiBjb2x1bW4gbmFtZXMgYW5kIHRoZSBjb2x1bW4gbnVtYmVycyBmb3IgdGhlIG5ldwpAQCAt MjYzMyw3ICsyNjQ2LDggQEAgQnVpbGRJbmRleEluZm8oUmVsYXRpb24gaW5kZXgpCiAJCQkJCSAg IGZhbHNlLAogCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcsCiAJCQkJCSAg IGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUs Ci0JCQkJCSAgIGluZGV4LT5yZF9yZWwtPnJlbGFtID09IFNUSVJfQU1fT0lEIC8qIGF1eGlsaWFy eSBpZmYgU1RJUiAqLyk7CisJCQkJCSAgIGluZGV4LT5yZF9yZWwtPnJlbGFtID09IFNUSVJfQU1f T0lEIC8qIGF1eGlsaWFyeSBpZmYgU1RJUiAqLywKKwkJCQkJICAgSW52YWxpZE9pZCAvKiBhdXhp bGlhcnlfZm9yX2luZGV4X2lkIGlzIHNldCBvbmx5IGR1cmluZyBidWlsZCAqLyk7CiAKIAkvKiBm aWxsIGluIGF0dHJpYnV0ZSBudW1iZXJzICovCiAJZm9yIChpID0gMDsgaSA8IG51bUF0dHM7IGkr KykKQEAgLTI2OTQsNyArMjcwOCw4IEBAIEJ1aWxkRHVtbXlJbmRleEluZm8oUmVsYXRpb24gaW5k ZXgpCiAJCQkJCSAgIGZhbHNlLAogCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFyaXpp bmcsCiAJCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+ aW5kaXN1bmlxdWUsCi0JCQkJCSAgIGluZGV4LT5yZF9yZWwtPnJlbGFtID09IFNUSVJfQU1fT0lE IC8qIGF1eGlsaWFyeSBpZmYgU1RJUiAqLyk7CisJCQkJCSAgIGluZGV4LT5yZF9yZWwtPnJlbGFt ID09IFNUSVJfQU1fT0lEIC8qIGF1eGlsaWFyeSBpZmYgU1RJUiAqLywKKwkJCQkJICAgSW52YWxp ZE9pZCk7CiAKIAkvKiBmaWxsIGluIGF0dHJpYnV0ZSBudW1iZXJzICovCiAJZm9yIChpID0gMDsg aSA8IG51bUF0dHM7IGkrKykKQEAgLTM4NjksNiArMzg4NCw3IEBAIHJlaW5kZXhfaW5kZXgoY29u c3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBpbmRleElkLAogCQkJCWhlYXBSZWxhdGlvbjsKIAlP aWQJCQloZWFwSWQ7CiAJT2lkCQkJc2F2ZV91c2VyaWQ7CisJT2lkCQkJanVua0F1eEluZGV4SWQ7 CiAJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKIAlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIAlJbmRl eEluZm8gICppbmRleEluZm87CkBAIC0zOTI1LDYgKzM5NDEsMTkgQEAgcmVpbmRleF9pbmRleChj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIGluZGV4SWQsCiAJCXBnc3RhdF9wcm9ncmVzc191 cGRhdGVfbXVsdGlfcGFyYW0oMiwgcHJvZ3Jlc3NfY29scywgcHJvZ3Jlc3NfdmFscyk7CiAJfQog CisJLyogQ2hlY2sgZm9yIHRoZSBhdXhpbGlhcnkgaW5kZXggZm9yIHRoYXQgaW5kZXgsIGl0IG5l ZWRzIHRvIGRyb3BwZWQgKi8KKwlqdW5rQXV4SW5kZXhJZCA9IGdldF9hdXhpbGlhcnlfaW5kZXgo aW5kZXhJZCk7CisJaWYgKE9pZElzVmFsaWQoanVua0F1eEluZGV4SWQpKQorCXsKKwkJT2JqZWN0 QWRkcmVzcyBvYmplY3Q7CisJCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOwor CQlvYmplY3Qub2JqZWN0SWQgPSBqdW5rQXV4SW5kZXhJZDsKKwkJb2JqZWN0Lm9iamVjdFN1Yklk ID0gMDsKKwkJcGVyZm9ybURlbGV0aW9uKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsCisJCQkJCQkJ CSBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFMIHwKKwkJCQkJCQkJIFBFUkZPUk1fREVMRVRJT05f UVVJRVRMWSk7CisJfQorCiAJLyoKIAkgKiBPcGVuIHRoZSB0YXJnZXQgaW5kZXggcmVsYXRpb24g YW5kIGdldCBhbiBleGNsdXNpdmUgbG9jayBvbiBpdCwgdG8KIAkgKiBlbnN1cmUgdGhhdCBubyBv bmUgZWxzZSBpcyB0b3VjaGluZyB0aGlzIHBhcnRpY3VsYXIgaW5kZXguCkBAIC00MjEzLDcgKzQy NDIsOCBAQCByZWluZGV4X3JlbGF0aW9uKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVs aWQsIGludCBmbGFncywKIHsKIAlSZWxhdGlvbglyZWw7CiAJT2lkCQkJdG9hc3RfcmVsaWQ7Ci0J TGlzdAkgICAqaW5kZXhJZHM7CisJTGlzdAkgICAqaW5kZXhJZHMsCisJCQkgICAqYXV4SW5kZXhJ ZHMgPSBOSUw7CiAJY2hhcgkJcGVyc2lzdGVuY2U7CiAJYm9vbAkJcmVzdWx0ID0gZmFsc2U7CiAJ TGlzdENlbGwgICAqaW5kZXhJZDsKQEAgLTQzMDIsMTMgKzQzMzIsMzAgQEAgcmVpbmRleF9yZWxh dGlvbihjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiAJZWxz ZQogCQlwZXJzaXN0ZW5jZSA9IHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZTsKIAorCWZvcmVh Y2goaW5kZXhJZCwgaW5kZXhJZHMpCisJeworCQlPaWQJCQlpbmRleE9pZCA9IGxmaXJzdF9vaWQo aW5kZXhJZCk7CisJCU9pZAkJCWluZGV4QW0gPSBnZXRfcmVsX3JlbGFtKGluZGV4T2lkKTsKKwor CQkvKiBBbGwgU1RJUiBpbmRleGVzIGFyZSBhdXhpbGlhcnkgaW5kZXhlcyAqLworCQlpZiAoaW5k ZXhBbSA9PSBTVElSX0FNX09JRCkKKwkJeworCQkJaWYgKGZsYWdzICYgUkVJTkRFWF9SRUxfU1VQ UFJFU1NfSU5ERVhfVVNFKQorCQkJCVJlbW92ZVJlaW5kZXhQZW5kaW5nKGluZGV4T2lkKTsKKwkJ CWF1eEluZGV4SWRzID0gbGFwcGVuZF9vaWQoYXV4SW5kZXhJZHMsIGluZGV4T2lkKTsKKwkJfQor CX0KKwogCS8qIFJlaW5kZXggYWxsIHRoZSBpbmRleGVzLiAqLwogCWkgPSAxOwogCWZvcmVhY2go aW5kZXhJZCwgaW5kZXhJZHMpCiAJewogCQlPaWQJCQlpbmRleE9pZCA9IGxmaXJzdF9vaWQoaW5k ZXhJZCk7CiAJCU9pZAkJCWluZGV4TmFtZXNwYWNlSWQgPSBnZXRfcmVsX25hbWVzcGFjZShpbmRl eE9pZCk7Ci0JCU9pZAkJCWluZGV4QW0gPSBnZXRfcmVsX3JlbGFtKGluZGV4T2lkKTsKKworCQkv KiBBdXhpbGlhcnkgaW5kZXhlcyBhcmUgZ29pbmcgdG8gYmUgZHJvcHBlZCBkdXJpbmcgbWFpbiBp bmRleCByZWJ1aWxkICovCisJCWlmIChsaXN0X21lbWJlcl9vaWQoYXV4SW5kZXhJZHMsIGluZGV4 T2lkKSkKKwkJCWNvbnRpbnVlOwogCiAJCS8qCiAJCSAqIFNraXAgYW55IGludmFsaWQgaW5kZXhl cyBvbiBhIFRPQVNUIHRhYmxlLiAgVGhlc2UgY2FuIG9ubHkgYmUKQEAgLTQzMzQsMTggKzQzODEs NiBAQCByZWluZGV4X3JlbGF0aW9uKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsaWQs IGludCBmbGFncywKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJaWYgKGluZGV4QW0gPT0gU1RJUl9B TV9PSUQpCi0JCXsKLQkJCWVyZXBvcnQoV0FSTklORywKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkgZXJybXNnKCJza2lwcGluZyByZWluZGV4IG9m IGF1eGlsaWFyeSBpbmRleCBcIiVzLiVzXCIiLAotCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShp bmRleE5hbWVzcGFjZUlkKSwKLQkJCQkJCQlnZXRfcmVsX25hbWUoaW5kZXhPaWQpKSkpOwotCQkJ aWYgKGZsYWdzICYgUkVJTkRFWF9SRUxfU1VQUFJFU1NfSU5ERVhfVVNFKQotCQkJCVJlbW92ZVJl aW5kZXhQZW5kaW5nKGluZGV4T2lkKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KIAkJcmVpbmRleF9p bmRleChzdG10LCBpbmRleE9pZCwgIShmbGFncyAmIFJFSU5ERVhfUkVMX0NIRUNLX0NPTlNUUkFJ TlRTKSwKIAkJCQkJICBwZXJzaXN0ZW5jZSwgcGFyYW1zKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5k LmMKaW5kZXggYzhiMTFmODg3ZTIuLjFjMjc1ZWYzNzNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX2RlcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5k LmMKQEAgLTEwMzUsNiArMTAzNSw2MyBAQCBnZXRfaW5kZXhfY29uc3RyYWludChPaWQgaW5kZXhJ ZCkKIAlyZXR1cm4gY29uc3RyYWludElkOwogfQogCisvKgorICogZ2V0X2F1eGlsaWFyeV9pbmRl eAorICoJCUdpdmVuIHRoZSBPSUQgb2YgYW4gaW5kZXgsIHJldHVybiB0aGUgT0lEIG9mIGl0cyBh dXhpbGlhcnkKKyAqCQlpbmRleCwgb3IgSW52YWxpZE9pZCBpZiB0aGVyZSBpcyBubyBhdXhpbGlh cnkgaW5kZXguCisgKi8KK09pZAorZ2V0X2F1eGlsaWFyeV9pbmRleChPaWQgaW5kZXhJZCkKK3sK KwlPaWQJCQlhdXhpbGlhcnlJbmRleE9pZCA9IEludmFsaWRPaWQ7CisJUmVsYXRpb24JZGVwUmVs OworCVNjYW5LZXlEYXRhIGtleVszXTsKKwlTeXNTY2FuRGVzYyBzY2FuOworCUhlYXBUdXBsZQl0 dXA7CisKKwkvKiBTZWFyY2ggdGhlIGRlcGVuZGVuY3kgdGFibGUgZm9yIHRoZSBpbmRleCAqLwor CWRlcFJlbCA9IHRhYmxlX29wZW4oRGVwZW5kUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsK KworCVNjYW5LZXlJbml0KCZrZXlbMF0sCisJCQkJQW51bV9wZ19kZXBlbmRfcmVmY2xhc3NpZCwK KwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1 bShSZWxhdGlvblJlbGF0aW9uSWQpKTsKKwlTY2FuS2V5SW5pdCgma2V5WzFdLAorCQkJCUFudW1f cGdfZGVwZW5kX3JlZm9iamlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwK KwkJCQlPYmplY3RJZEdldERhdHVtKGluZGV4SWQpKTsKKwlTY2FuS2V5SW5pdCgma2V5WzJdLAor CQkJCUFudW1fcGdfZGVwZW5kX3JlZm9ianN1YmlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJl ciwgRl9JTlQ0RVEsCisJCQkJSW50MzJHZXREYXR1bSgwKSk7CisKKwlzY2FuID0gc3lzdGFibGVf YmVnaW5zY2FuKGRlcFJlbCwgRGVwZW5kUmVmZXJlbmNlSW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkg IE5VTEwsIDMsIGtleSk7CisKKworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCA9IHN5c3Rh YmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJRm9ybV9wZ19kZXBlbmQgZGVwcmVjID0gKEZvcm1f cGdfZGVwZW5kKSBHRVRTVFJVQ1QodHVwKTsKKworCQkvKgorCQkgKiBXZSBhc3N1bWUgYW55IEFV VE8gZGVwZW5kZW5jeSBvbiBpbmRleCB3aXRoIHJlbF9raW5kCisJCSAqIG9mIFJFTEtJTkRfSU5E RVggaXMgdGhhdCB3ZSBhcmUgbG9va2luZyBmb3IuCisJCSAqLworCQlpZiAoZGVwcmVjLT5jbGFz c2lkID09IFJlbGF0aW9uUmVsYXRpb25JZCAmJgorCQkJKGRlcHJlYy0+ZGVwdHlwZSA9PSBERVBF TkRFTkNZX0FVVE8pICYmCisJCQlnZXRfcmVsX3JlbGtpbmQoZGVwcmVjLT5vYmppZCkgPT0gUkVM S0lORF9JTkRFWCkKKwkJeworCQkJYXV4aWxpYXJ5SW5kZXhPaWQgPSBkZXByZWMtPm9iamlkOwor CQkJYnJlYWs7CisJCX0KKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Ns b3NlKGRlcFJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiBhdXhpbGlhcnlJbmRleE9p ZDsKK30KKwogLyoKICAqIGdldF9pbmRleF9yZWZfY29uc3RyYWludHMKICAqCQlHaXZlbiB0aGUg T0lEIG9mIGFuIGluZGV4LCByZXR1cm4gdGhlIE9JRCBvZiBhbGwgZm9yZWlnbiBrZXkKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvdG9hc3RpbmcuYwppbmRleCA5Y2M0ZjA2ZGE5Zi4uM2FhNjU3Yzc5Y2IgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L3RvYXN0aW5nLmMKQEAgLTMwOCw2ICszMDgsNyBAQCBjcmVhdGVfdG9hc3RfdGFibGUoUmVsYXRp b24gcmVsLCBPaWQgdG9hc3RPaWQsIE9pZCB0b2FzdEluZGV4T2lkLAogCWluZGV4SW5mby0+aWlf QW0gPSBCVFJFRV9BTV9PSUQ7CiAJaW5kZXhJbmZvLT5paV9BbUNhY2hlID0gTlVMTDsKIAlpbmRl eEluZm8tPmlpX0F1eGlsaWFyeSA9IGZhbHNlOworCWluZGV4SW5mby0+aWlfQXV4aWxpYXJ5Rm9y SW5kZXhJZCA9IEludmFsaWRPaWQ7CiAJaW5kZXhJbmZvLT5paV9Db250ZXh0ID0gQ3VycmVudE1l bW9yeUNvbnRleHQ7CiAKIAljb2xsYXRpb25JZHNbMF0gPSBJbnZhbGlkT2lkOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9pbmRleGNtZHMuYwppbmRleCA4YzcyMWUyMDk5Mi4uN2IzZDRiMTkyODggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2luZGV4Y21kcy5jCkBAIC0yNDUsNyArMjQ1LDcgQEAgQ2hlY2tJbmRleENvbXBhdGlibGUo T2lkIG9sZElkLAogCWluZGV4SW5mbyA9IG1ha2VJbmRleEluZm8obnVtYmVyT2ZBdHRyaWJ1dGVz LCBudW1iZXJPZkF0dHJpYnV0ZXMsCiAJCQkJCQkJICBhY2Nlc3NNZXRob2RJZCwgTklMLCBOSUws IGZhbHNlLCBmYWxzZSwKIAkJCQkJCQkgIGZhbHNlLCBmYWxzZSwgYW1zdW1tYXJpemluZywKLQkJ CQkJCQkgIGlzV2l0aG91dE92ZXJsYXBzLCBpc2F1eGlsaWFyeSk7CisJCQkJCQkJICBpc1dpdGhv dXRPdmVybGFwcywgaXNhdXhpbGlhcnksIEludmFsaWRPaWQpOwogCXR5cGVJZHMgPSBwYWxsb2Nf YXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwogCWNvbGxhdGlvbklkcyA9IHBhbGxvY19h cnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CiAJb3BjbGFzc0lkcyA9IHBhbGxvY19hcnJh eShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CkBAIC05NDMsNyArOTQzLDggQEAgRGVmaW5lSW5k ZXgoT2lkIHRhYmxlSWQsCiAJCQkJCQkJICBjb25jdXJyZW50LAogCQkJCQkJCSAgYW1pc3N1bW1h cml6aW5nLAogCQkJCQkJCSAgc3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMsCi0JCQkJCQkJICBmYWxz ZSk7CisJCQkJCQkJICBmYWxzZSwKKwkJCQkJCQkgIEludmFsaWRPaWQpOwogCiAJdHlwZUlkcyA9 IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CiAJY29sbGF0aW9uSWRzID0g cGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKQEAgLTM2NzEsNiArMzY3Miw3 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJewogCQlPaWQJCQlpbmRleElkOwogCQlPaWQJ CQlhdXhJbmRleElkOworCQlPaWQJCQlqdW5rQXV4SW5kZXhJZDsKIAkJT2lkCQkJdGFibGVJZDsK IAkJT2lkCQkJYW1JZDsKIAkJYm9vbAkJc2FmZTsJCS8qIGZvciBzZXRfaW5kZXhzYWZlX3Byb2Nm bGFncyAqLwpAQCAtNDAyMCw2ICs0MDIyLDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5 KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJ UmVpbmRleEluZGV4SW5mbyAqbmV3aWR4OwogCQlPaWQJCQluZXdJbmRleElkOwogCQlPaWQJCQlh dXhJbmRleElkOworCQlPaWQJCQlqdW5rQXV4SW5kZXhJZDsKIAkJUmVsYXRpb24JaW5kZXhSZWw7 CiAJCVJlbGF0aW9uCWhlYXBSZWw7CiAJCU9pZAkJCXNhdmVfdXNlcmlkOwpAQCAtNDAyNyw2ICs0 MDMwLDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpz dG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7 CiAJCVJlbGF0aW9uCW5ld0luZGV4UmVsOwogCQlSZWxhdGlvbglhdXhJbmRleFJlbDsKKwkJUmVs YXRpb24JanVua0F1eEluZGV4UmVsOwogCQlMb2NrUmVsSWQgICpsb2NrcmVsaWQ7CiAJCU9pZAkJ CXRhYmxlc3BhY2VpZDsKIApAQCAtNDEwMCwxMiArNDEwNCwxNyBAQCBSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29u c3QgUmVpbgogCQkJCQkJCQkJCQkJICAgdGFibGVzcGFjZWlkLAogCQkJCQkJCQkJCQkJICAgYXV4 Q29uY3VycmVudE5hbWUpOwogCisJCS8qIFNlYXJjaCBmb3IgYXV4aWxpYXJ5IGluZGV4IGZvciBy ZWluZGV4ZWQgaW5kZXgsIHRvIGRyb3AgaXQgKi8KKwkJanVua0F1eEluZGV4SWQgPSBnZXRfYXV4 aWxpYXJ5X2luZGV4KGlkeC0+aW5kZXhJZCk7CisKIAkJLyoKIAkJICogTm93IG9wZW4gdGhlIHJl bGF0aW9uIG9mIHRoZSBuZXcgaW5kZXgsIGEgc2Vzc2lvbi1sZXZlbCBsb2NrIGlzCiAJCSAqIGFs c28gbmVlZGVkIG9uIGl0LgogCQkgKi8KIAkJbmV3SW5kZXhSZWwgPSBpbmRleF9vcGVuKG5ld0lu ZGV4SWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CiAJCWF1eEluZGV4UmVsID0gaW5kZXhf b3BlbihhdXhJbmRleElkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOworCQlpZiAoT2lkSXNW YWxpZChqdW5rQXV4SW5kZXhJZCkpCisJCQlqdW5rQXV4SW5kZXhSZWwgPSBpbmRleF9vcGVuKGp1 bmtBdXhJbmRleElkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwogCiAJCS8qCiAJCSAqIFNh dmUgdGhlIGxpc3Qgb2YgT0lEcyBhbmQgbG9ja3MgaW4gcHJpdmF0ZSBjb250ZXh0CkBAIC00MTE1 LDYgKzQxMjQsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0 bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQluZXdpZHggPSBwYWxsb2Nf b2JqZWN0KFJlaW5kZXhJbmRleEluZm8pOwogCQluZXdpZHgtPmluZGV4SWQgPSBuZXdJbmRleElk OwogCQluZXdpZHgtPmF1eEluZGV4SWQgPSBhdXhJbmRleElkOworCQluZXdpZHgtPmp1bmtBdXhJ bmRleElkID0ganVua0F1eEluZGV4SWQ7CiAJCW5ld2lkeC0+c2FmZSA9IGlkeC0+c2FmZTsKIAkJ bmV3aWR4LT50YWJsZUlkID0gaWR4LT50YWJsZUlkOwogCQluZXdpZHgtPmFtSWQgPSBpZHgtPmFt SWQ7CkBAIC00MTM2LDEwICs0MTQ2LDE4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCWxv Y2tyZWxpZCA9IHBhbGxvY19vYmplY3QoTG9ja1JlbElkKTsKIAkJKmxvY2tyZWxpZCA9IGF1eElu ZGV4UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CiAJCXJlbGF0aW9uTG9ja3MgPSBsYXBwZW5k KHJlbGF0aW9uTG9ja3MsIGxvY2tyZWxpZCk7CisJCWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRl eElkKSkKKwkJeworCQkJbG9ja3JlbGlkID0gcGFsbG9jX29iamVjdChMb2NrUmVsSWQpOworCQkJ KmxvY2tyZWxpZCA9IGp1bmtBdXhJbmRleFJlbC0+cmRfbG9ja0luZm8ubG9ja1JlbElkOworCQkJ cmVsYXRpb25Mb2NrcyA9IGxhcHBlbmQocmVsYXRpb25Mb2NrcywgbG9ja3JlbGlkKTsKKwkJfQog CiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCQlpbmRleF9jbG9zZShp bmRleFJlbCwgTm9Mb2NrKTsKKwkJaWYgKE9pZElzVmFsaWQoanVua0F1eEluZGV4SWQpKQorCQkJ aW5kZXhfY2xvc2UoanVua0F1eEluZGV4UmVsLCBOb0xvY2spOwogCQlpbmRleF9jbG9zZShhdXhJ bmRleFJlbCwgTm9Mb2NrKTsKIAkJaW5kZXhfY2xvc2UobmV3SW5kZXhSZWwsIE5vTG9jayk7CiAK QEAgLTQzMjAsNyArNDMzOCw4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAKIAkvKgogCSAq IEF0IHRoaXMgbW9tZW50IGFsbCB0YXJnZXQgaW5kZXhlcyBhcmUgbWFya2VkIGFzICJyZWFkeS10 by1pbnNlcnQiLiBTbywKLQkgKiB3ZSBhcmUgZnJlZSB0byBzdGFydCBwcm9jZXNzIG9mIGRyb3Bw aW5nIGF1eGlsaWFyeSBpbmRleGVzLgorCSAqIHdlIGFyZSBmcmVlIHRvIHN0YXJ0IHByb2Nlc3Mg b2YgZHJvcHBpbmcgYXV4aWxpYXJ5IGluZGV4ZXMgLSBpbmNsdWRpbmcKKwkgKiBqdXN0IGluZGV4 ZXMgZGV0ZWN0ZWQgZWFybGllci4KIAkgKi8KIAlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKIAl7 CkBAIC00MzQzLDYgKzQzNjIsOSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkgKi8KIAkJ UHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJCWluZGV4X3Nl dF9zdGF0ZV9mbGFncyhuZXdpZHgtPmF1eEluZGV4SWQsIElOREVYX0RST1BfQ0xFQVJfUkVBRFkp OworCQkvKiBFbnN1cmUganVzdCBpbmRleCBpcyBtYXJrZWQgYXMgbm9uLXJlYWR5ICovCisJCWlm IChPaWRJc1ZhbGlkKG5ld2lkeC0+anVua0F1eEluZGV4SWQpKQorCQkJaW5kZXhfc2V0X3N0YXRl X2ZsYWdzKG5ld2lkeC0+anVua0F1eEluZGV4SWQsIElOREVYX0RST1BfQ0xFQVJfUkVBRFkpOwog CQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpA QCAtNDU2MSw2ICs0NTgzLDggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJUHVzaEFjdGl2 ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAKIAkJaW5kZXhfY29uY3VycmVu dGx5X3NldF9kZWFkKG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5hdXhJbmRleElkKTsKKwkJaWYg KE9pZElzVmFsaWQobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCkpCisJCQlpbmRleF9jb25jdXJyZW50 bHlfc2V0X2RlYWQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmp1bmtBdXhJbmRleElkKTsKIAog CQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCX0KQEAgLTQ2MTIsNiArNDYzNiwxNCBAQCBSZWluZGV4 UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlv bk9pZCwgY29uc3QgUmVpbgogCQkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKIAogCQkJYWRkX2V4 YWN0X29iamVjdF9hZGRyZXNzKCZvYmplY3QsIG9iamVjdHMpOworCisJCQlpZiAoT2lkSXNWYWxp ZChpZHgtPmp1bmtBdXhJbmRleElkKSkKKwkJCXsKKworCQkJCW9iamVjdC5vYmplY3RJZCA9IGlk eC0+anVua0F1eEluZGV4SWQ7CisJCQkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwkJCQlhZGRf ZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7CisJCQl9CiAJCX0KIAogCQkv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBmYzg5MzUyYjY2MS4uMGNjODhkMzA2NGYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0xNTMzLDYgKzE1MzMsOCBAQCBSZW1vdmVS ZWxhdGlvbnMoRHJvcFN0bXQgKmRyb3ApCiAJTGlzdENlbGwgICAqY2VsbDsKIAlpbnQJCQlmbGFn cyA9IDA7CiAJTE9DS01PREUJbG9ja21vZGUgPSBBY2Nlc3NFeGNsdXNpdmVMb2NrOworCU1lbW9y eUNvbnRleHQgcHJpdmF0ZV9jb250ZXh0LAorCQkJCSAgb2xkY29udGV4dDsKIAogCS8qIERST1Ag Q09OQ1VSUkVOVExZIHVzZXMgYSB3ZWFrZXIgbG9jaywgYW5kIGhhcyBzb21lIHJlc3RyaWN0aW9u cyAqLwogCWlmIChkcm9wLT5jb25jdXJyZW50KQpAQCAtMTU5Myw5ICsxNTk1LDIwIEBAIFJlbW92 ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAkJCXJlbGtpbmQgPSAwOwkJLyoga2VlcCBjb21w aWxlciBxdWlldCAqLwogCQkJYnJlYWs7CiAJfQorCS8qCisJICogQ3JlYXRlIGEgbWVtb3J5IGNv bnRleHQgdGhhdCB3aWxsIHN1cnZpdmUgZm9yY2VkIHRyYW5zYWN0aW9uIGNvbW1pdHMgd2UKKwkg KiBtYXkgbmVlZCB0byBkbyBiZWxvdyAoaW4gY2FzZSBvZiBjb25jdXJyZW50IGluZGV4IGRyb3Ap LgorCSAqIFNpbmNlIGl0IGlzIGEgY2hpbGQgb2YgUG9ydGFsQ29udGV4dCwgaXQgd2lsbCBnbyBh d2F5IGV2ZW50dWFsbHkgZXZlbiBpZgorCSAqIHdlIHN1ZmZlciBhbiBlcnJvcjsgdGhlcmUncyBu byBuZWVkIGZvciBzcGVjaWFsIGFib3J0IGNsZWFudXAgbG9naWMuCisJICovCisJcHJpdmF0ZV9j b250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFBvcnRhbENvbnRleHQsCisJCQkJCQkJCQkJ CSJSZW1vdmVSZWxhdGlvbnMiLAorCQkJCQkJCQkJCQlBTExPQ1NFVF9TTUFMTF9TSVpFUyk7CiAK KwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHByaXZhdGVfY29udGV4dCk7CiAJ LyogTG9jayBhbmQgdmFsaWRhdGUgZWFjaCByZWxhdGlvbjsgYnVpbGQgYSBsaXN0IG9mIG9iamVj dCBhZGRyZXNzZXMgKi8KIAlvYmplY3RzID0gbmV3X29iamVjdF9hZGRyZXNzZXMoKTsKKwlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKIAlmb3JlYWNoKGNlbGwsIGRyb3AtPm9i amVjdHMpCiAJewpAQCAtMTY0Nyw2ICsxNjYwLDM0IEBAIFJlbW92ZVJlbGF0aW9ucyhEcm9wU3Rt dCAqZHJvcCkKIAkJCWZsYWdzIHw9IFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVExZOwogCQl9 CiAKKwkJLyoKKwkJICogQ29uY3VycmVudCBpbmRleCBkcm9wIHJlcXVpcmVzIHRvIGJlIHRoZSBm aXJzdCB0cmFuc2FjdGlvbi4gQnV0IGluCisJCSAqIGNhc2Ugd2UgaGF2ZSBqdW5rIGF1eGlsaWFy eSBpbmRleCAtIHdlIHdhbnQgdG8gZHJvcCBpdCB0b28gKGFuZCBhbHNvCisJCSAqIGluIGEgY29u Y3VycmVudCB3YXkpLiBJbiB0aGlzIGNhc2UgcGVyZm9ybSBzaWxlbnQgaW50ZXJuYWwgZGVsZXRp b24KKwkJICogb2YgYXV4aWxpYXJ5IGluZGV4LCBhbmQgcmVzdG9yZSB0cmFuc2FjdGlvbiBzdGF0 ZS4gSXQgaXMgZmluZSB0byBkbyBpdAorCQkgKiBpbiB0aGUgbG9vcCBiZWNhdXNlIHRoZXJlIGlz IG9ubHkgc2luZ2xlIGVsZW1lbnQgaW4gZHJvcC0+b2JqZWN0cy4KKwkJICovCisJCWlmICgoZmxh Z3MgJiBQRVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRMWSkgIT0gMCAmJgorCQkJc3RhdGUuYWN0 dWFsX3JlbGtpbmQgPT0gUkVMS0lORF9JTkRFWCkKKwkJeworCQkJT2lkIGp1bmtBdXhJbmRleE9p ZCA9IGdldF9hdXhpbGlhcnlfaW5kZXgocmVsT2lkKTsKKwkJCWlmIChPaWRJc1ZhbGlkKGp1bmtB dXhJbmRleE9pZCkpCisJCQl7CisJCQkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CisJCQkJb2JqZWN0 LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJCQkJb2JqZWN0Lm9iamVjdElkID0ganVu a0F1eEluZGV4T2lkOworCQkJCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisJCQkJcGVyZm9ybURl bGV0aW9uKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsCisJCQkJCQkJCQkJIFBFUkZPUk1fREVMRVRJ T05fQ09OQ1VSUkVOVExZIHwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCB8 CisJCQkJCQkJCQkJIFBFUkZPUk1fREVMRVRJT05fUVVJRVRMWSk7CisJCQkJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisJCQkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCQlQdXNo QWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJCQlQcmV2ZW50SW5U cmFuc2FjdGlvbkJsb2NrKHRydWUsICJEUk9QIElOREVYIENPTkNVUlJFTlRMWSIpOworCQkJfQor CQl9CisKIAkJLyoKIAkJICogQ29uY3VycmVudCBpbmRleCBkcm9wIGNhbm5vdCBiZSB1c2VkIHdp dGggcGFydGl0aW9uZWQgaW5kZXhlcywKIAkJICogZWl0aGVyLgpAQCAtMTY3NSwxMiArMTcxNiwx NyBAQCBSZW1vdmVSZWxhdGlvbnMoRHJvcFN0bXQgKmRyb3ApCiAJCW9iai5vYmplY3RJZCA9IHJl bE9pZDsKIAkJb2JqLm9iamVjdFN1YklkID0gMDsKIAorCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKHByaXZhdGVfY29udGV4dCk7CiAJCWFkZF9leGFjdF9vYmplY3RfYWRkcmVz cygmb2JqLCBvYmplY3RzKTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwog CX0KIAorCS8qIERlbGV0aW9uIG1heSBpbnZvbHZlIG11bHRpcGxlIGNvbW1pdHMsIHNvLCBzd2l0 Y2ggdG8gbWVtb3J5IGNvbnRleHQgKi8KKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKHByaXZhdGVfY29udGV4dCk7CiAJcGVyZm9ybU11bHRpcGxlRGVsZXRpb25zKG9iamVjdHMs IGRyb3AtPmJlaGF2aW9yLCBmbGFncyk7CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRl eHQpOwogCi0JZnJlZV9vYmplY3RfYWRkcmVzc2VzKG9iamVjdHMpOworCU1lbW9yeUNvbnRleHRE ZWxldGUocHJpdmF0ZV9jb250ZXh0KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L25vZGVzL21ha2VmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKaW5kZXgg YjU1NmJhNDgxN2IuLmQ3YmU4NzE1ZDUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9t YWtlZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwpAQCAtODM0LDcg KzgzNCw3IEBAIEluZGV4SW5mbyAqCiBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51 bWtleWF0dHJzLCBPaWQgYW1vaWQsIExpc3QgKmV4cHJlc3Npb25zLAogCQkJICBMaXN0ICpwcmVk aWNhdGVzLCBib29sIHVuaXF1ZSwgYm9vbCBudWxsc19ub3RfZGlzdGluY3QsCiAJCQkgIGJvb2wg aXNyZWFkeSwgYm9vbCBjb25jdXJyZW50LCBib29sIHN1bW1hcml6aW5nLAotCQkJICBib29sIHdp dGhvdXRvdmVybGFwcywgYm9vbCBhdXhpbGlhcnkpCisJCQkgIGJvb2wgd2l0aG91dG92ZXJsYXBz LCBib29sIGF1eGlsaWFyeSwgT2lkIGF1eGlsaWFyeV9mb3JfaW5kZXhfaWQpCiB7CiAJSW5kZXhJ bmZvICAqbiA9IG1ha2VOb2RlKEluZGV4SW5mbyk7CiAKQEAgLTg1MSw2ICs4NTEsNyBAQCBtYWtl SW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsIExpc3Qg KmV4cHJlc3Npb25zLAogCW4tPmlpX1N1bW1hcml6aW5nID0gc3VtbWFyaXppbmc7CiAJbi0+aWlf V2l0aG91dE92ZXJsYXBzID0gd2l0aG91dG92ZXJsYXBzOwogCW4tPmlpX0F1eGlsaWFyeSA9IGF1 eGlsaWFyeTsKKwluLT5paV9BdXhpbGlhcnlGb3JJbmRleElkID0gYXV4aWxpYXJ5X2Zvcl9pbmRl eF9pZDsKIAogCS8qIHN1bW1hcml6aW5nIGluZGV4ZXMgY2Fubm90IGNvbnRhaW4gbm9uLWtleSBh dHRyaWJ1dGVzICovCiAJQXNzZXJ0KCFzdW1tYXJpemluZyB8fCAobnVta2V5YXR0cnMgPT0gbnVt YXR0cnMpKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKaW5kZXggMGVhN2NjZjUyNDMuLjAyYmNm NWU5MzE1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaApAQCAtMTgwLDYgKzE4MCw3IEBAIGV4 dGVybiBMaXN0ICpnZXRPd25lZFNlcXVlbmNlcyhPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRJ ZGVudGl0eVNlcXVlbmNlKFJlbGF0aW9uIHJlbCwgQXR0ck51bWJlciBhdHRudW0sIGJvb2wgbWlz c2luZ19vayk7CiAKIGV4dGVybiBPaWQJZ2V0X2luZGV4X2NvbnN0cmFpbnQoT2lkIGluZGV4SWQp OworZXh0ZXJuIE9pZAlnZXRfYXV4aWxpYXJ5X2luZGV4KE9pZCBpbmRleElkKTsKIAogZXh0ZXJu IExpc3QgKmdldF9pbmRleF9yZWZfY29uc3RyYWludHMoT2lkIGluZGV4SWQpOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCmluZGV4IDFjZDAzNmEwNTk0Li41M2UxNTUwMmVjMSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKQEAgLTIxOCw2ICsyMTgsOCBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8KIAlpbnQJ CQlpaV9QYXJhbGxlbFdvcmtlcnM7CiAJLyogaXMgYXV4aWxpYXJ5IGZvciBjb25jdXJyZW50IGlu ZGV4IGJ1aWxkPyAqLwogCWJvb2wJCWlpX0F1eGlsaWFyeTsKKwkvKiBpZiBjcmVhdGluZyBhbiBh dXhpbGlhcnkgaW5kZXgsIHRoZSBPSUQgb2YgdGhlIG1haW4gaW5kZXg7IG90aGVyd2lzZSBJbnZh bGlkT2lkLiAqLworCU9pZAkJCWlpX0F1eGlsaWFyeUZvckluZGV4SWQ7CiAJLyogT2lkIG9mIGlu ZGV4IEFNICovCiAJT2lkCQkJaWlfQW07CiAJLyogcHJpdmF0ZSBjYWNoZSBhcmVhIGZvciBpbmRl eCBBTSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmggYi9zcmMv aW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaAppbmRleCA0OTA0NzQ4ZjVmYy4uMzU3NDViYzUyMWMg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL21ha2VmdW5jcy5oCkBAIC0xMDAsNyArMTAwLDcgQEAgZXh0ZXJuIEluZGV4SW5m byAqbWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lk LAogCQkJCQkJCQlib29sIHVuaXF1ZSwgYm9vbCBudWxsc19ub3RfZGlzdGluY3QsCiAJCQkJCQkJ CWJvb2wgaXNyZWFkeSwgYm9vbCBjb25jdXJyZW50LAogCQkJCQkJCQlib29sIHN1bW1hcml6aW5n LCBib29sIHdpdGhvdXRvdmVybGFwcywKLQkJCQkJCQkJYm9vbCBhdXhpbGlhcnkpOworCQkJCQkJ CQlib29sIGF1eGlsaWFyeSwgT2lkIGF1eGlsaWFyeV9mb3JfaW5kZXhfaWQpOwogCiBleHRlcm4g Tm9kZSAqbWFrZVN0cmluZ0NvbnN0KGNoYXIgKnN0ciwgaW50IGxvY2F0aW9uKTsKIGV4dGVybiBE ZWZFbGVtICptYWtlRGVmRWxlbShjaGFyICpuYW1lLCBOb2RlICphcmcsIGludCBsb2NhdGlvbik7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKaW5kZXggYTNlODVi YTEzMTAuLjg1Y2QwODhkMDgwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2NyZWF0ZV9pbmRleC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVf aW5kZXgub3V0CkBAIC0zMjY1LDIwICszMjY1LDEwOSBAQCBFUlJPUjogIHJlaW5kZXggb2YgYXV4 aWxpYXJ5IGluZGV4ICJhdXhfaW5kZXhfaW5kNl9jY2F1eCIgbm90IHN1cHBvcnRlZAogUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDZfY2NhdXg7CiBFUlJPUjogIHJlaW5k ZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJhdXhfaW5kZXhfaW5kNl9jY2F1eCIgbm90IHN1cHBvcnRl ZAogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5k ZXggY2FuIGJlY29tZSB2YWxpZC4KLURFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hF UkUgYzEgPSAxOwotRVJST1I6ICByZWxhdGlvbiAiY29uY3VyX3JlaW5kZXhfdGFiNCIgZG9lcyBu b3QgZXhpc3QKLUxJTkUgMTogREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBj MSA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIF4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90YWI1 IFdIRVJFIGMxID0gMTsKKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyByZWluZGV4IGFuZCBk cm9wcGVkCitSRUlOREVYIElOREVYIGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eCBp bmRleCBpcyBkcm9wcGVkCitcZCBhdXhfaW5kZXhfdGFiNQorICAgICAgICAgICBUYWJsZSAicHVi bGljLmF1eF9pbmRleF90YWI1IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxs YWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0KKyBjMSAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAK K0luZGV4ZXM6CisgICAgImF1eF9pbmRleF9pbmQ2IiBVTklRVUUsIGJ0cmVlIChjMSkKKworRFJP UCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKy0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNF UlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxp ZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4 X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1 bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1 cGxpY2F0ZWQuCistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNv IHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUg V0hFUkUgYzEgPSAxOwogLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5kZXgKLVJFSU5E RVggVEFCTEUgYXV4X2luZGV4X3RhYjU7Ci1FUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVl IGluZGV4ICJhdXhfaW5kZXhfaW5kNiIKLURFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNh dGVkLgotLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIGNvbmN1cnJlbnQgcmVpbmRleAogUkVJ TkRFWCBUQUJMRSBDT05DVVJSRU5UTFkgYXV4X2luZGV4X3RhYjU7CiBXQVJOSU5HOiAgc2tpcHBp bmcgcmVpbmRleCBvZiBpbnZhbGlkIGluZGV4ICJwdWJsaWMuYXV4X2luZGV4X2luZDYiCiBISU5U OiAgVXNlIERST1AgSU5ERVggb3IgUkVJTkRFWCBJTkRFWC4KIFdBUk5JTkc6ICBza2lwcGluZyBy ZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCAicHVibGljLmF1eF9pbmRleF9pbmQ2X2NjYXV4Igog Tk9USUNFOiAgdGFibGUgImF1eF9pbmRleF90YWI1IiBoYXMgbm8gaW5kZXhlcyB0aGF0IGNhbiBi ZSByZWluZGV4ZWQgY29uY3VycmVudGx5CistLSBNYWtlIHN1cmUgaXQgaXMgc3RpbGwgZXhpc3Rz CitcZCBhdXhfaW5kZXhfdGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90 YWI1IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQg CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBj MSAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAg ImF1eF9pbmRleF9pbmQ2IiBVTklRVUUsIGJ0cmVlIChjMSkgSU5WQUxJRAorICAgICJhdXhfaW5k ZXhfaW5kNl9jY2F1eCIgc3RpciAoYzEpIElOVkFMSUQKKworLS0gU2hvdWxkIGJlIHNraXBwZWQg ZHVyaW5nIHJlaW5kZXggYW5kIGRyb3BwZWQKK1JFSU5ERVggVEFCTEUgYXV4X2luZGV4X3RhYjU7 CistLSBNYWtlIHN1cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90YWI1Cisg ICAgICAgICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUg ICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGludGVnZXIgfCAgICAg ICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAiYXV4X2luZGV4X2luZDYiIFVOSVFV RSwgYnRyZWUgKGMxKQorCitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworLS0gSW5zZXJ0IGR1 cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgx KTsKKy0tIENyZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUgVU5JUVVFIElOREVYIENP TkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworRVJST1I6 ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYiCitERVRBSUw6 ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KKy0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3Vz IGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUg RlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CistLSBTaG91bGQgYmUgc2tpcHBlZCBk dXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4 X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9p bmRleF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29s dW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGlu dGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAiYXV4X2luZGV4 X2luZDYiIFVOSVFVRSwgYnRyZWUgKGMxKQorCitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2Owor LS0gSW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZB TFVFUyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUgVU5J UVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAo YzEpOworRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2lu ZDYiCitERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KKy0tIFRoaXMgbWFrZXMg dGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFs aWQuCitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CistLSBEcm9wIG1h aW4gaW5kZXggQ09OQ1VSUkVOVExZCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhf aW5kNjsKKy0tIE1ha2Ugc3VyZSBhdXhpbGlhcnkgaW5kZXggZHJvcHBlZCB0b28KK1xkIGF1eF9p bmRleF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29s dW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGlu dGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorCitEUk9QIElOREVYIGF1eF9pbmRleF9p bmQ2OworRVJST1I6ICBpbmRleCAiYXV4X2luZGV4X2luZDYiIGRvZXMgbm90IGV4aXN0CistLSBJ bnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVT ICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUg SU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7 CitFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIK K0RFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVkLgorLS0gRHJvcCBtYWluIGluZGV4 CitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eGlsaWFyeSBpbmRl eCBkcm9wcGVkIHRvbworXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1Ymxp Yy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFi bGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisK IERST1AgVEFCTEUgYXV4X2luZGV4X3RhYjU7CiAtLSBDaGVjayBoYW5kbGluZyBvZiBpbmRleGVz IHdpdGggZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMuICBUaGUKIC0tIGRlZmluaXRpb25zIG9m IHRoZSByZWJ1aWx0IGluZGV4ZXMgc2hvdWxkIG1hdGNoIHRoZSBvcmlnaW5hbApkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKaW5kZXggN2FlOGU0NDAxOWIuLjZkNTk3NzkwYjU2IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKQEAgLTEzNDAsMTEgKzEzNDAsNjIg QEAgUkVJTkRFWCBJTkRFWCBhdXhfaW5kZXhfaW5kNl9jY2F1eDsKIC0tIENvbmN1cnJlbnRseSBh bHNvCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNl9jY2F1eDsKIC0t IFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNh biBiZWNvbWUgdmFsaWQuCi1ERUxFVEUgRlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMx ID0gMTsKK0RFTEVURSBGUk9NIGF1eF9pbmRleF90YWI1IFdIRVJFIGMxID0gMTsKKy0tIFNob3Vs ZCBiZSBza2lwcGVkIGR1cmluZyByZWluZGV4IGFuZCBkcm9wcGVkCitSRUlOREVYIElOREVYIGF1 eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eCBpbmRleCBpcyBkcm9wcGVkCitcZCBhdXhf aW5kZXhfdGFiNQorRFJPUCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKworLS0gSW5zZXJ0IGR1cGxp Y2F0ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgxKTsK Ky0tIENyZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNV UlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworLS0gVGhpcyBt YWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29t ZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90YWI1IFdIRVJFIGMxID0gMTsKIC0tIFNo b3VsZCBiZSBza2lwcGVkIGR1cmluZyByZWluZGV4Ci1SRUlOREVYIFRBQkxFIGF1eF9pbmRleF90 YWI1OwotLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIGNvbmN1cnJlbnQgcmVpbmRleAogUkVJ TkRFWCBUQUJMRSBDT05DVVJSRU5UTFkgYXV4X2luZGV4X3RhYjU7CistLSBNYWtlIHN1cmUgaXQg aXMgc3RpbGwgZXhpc3RzCitcZCBhdXhfaW5kZXhfdGFiNQorLS0gU2hvdWxkIGJlIHNraXBwZWQg ZHVyaW5nIHJlaW5kZXggYW5kIGRyb3BwZWQKK1JFSU5ERVggVEFCTEUgYXV4X2luZGV4X3RhYjU7 CistLSBNYWtlIHN1cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90YWI1CitE Uk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2Fpbgor SU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGlu dmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9p bmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2 aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVM RVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJlIHNraXBw ZWQgZHVyaW5nIHJlaW5kZXggYW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZ IGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eCBpbmRleCBpcyBkcm9wcGVkCitcZCBh dXhfaW5kZXhfdGFiNQorRFJPUCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKworLS0gSW5zZXJ0IGR1 cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgx KTsKKy0tIENyZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUgVU5JUVVFIElOREVYIENP TkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworLS0gVGhp cyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJl Y29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90YWI1IFdIRVJFIGMxID0gMTsKKy0t IERyb3AgbWFpbiBpbmRleCBDT05DVVJSRU5UTFkKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGF1 eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eGlsaWFyeSBpbmRleCBkcm9wcGVkIHRvbwor XGQgYXV4X2luZGV4X3RhYjUKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CisKKy0tIEluc2Vy dCBkdXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEp LCAoMSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRF WCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKKy0t IERyb3AgbWFpbiBpbmRleAorRFJPUCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3Vy ZSBhdXhpbGlhcnkgaW5kZXggZHJvcHBlZCB0b28KK1xkIGF1eF9pbmRleF90YWI1CisKIERST1Ag VEFCTEUgYXV4X2luZGV4X3RhYjU7CiAKIC0tIENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0 aCBleHByZXNzaW9ucyBhbmQgcHJlZGljYXRlcy4gIFRoZQotLSAKMi40My4wCgo= --000000000000857292063fd91e50 Content-Type: application/octet-stream; name="v24-0012-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Disposition: attachment; filename="v24-0012-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg3fqm1617 RnJvbSAwZjQ0YzcwZjk3M2ZjMjAyOTg2YzdkYTM4YzFmYzhmNzczOGU1NDFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDoyNDo0OCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI0IDEyLzEyXSBSZW1vdmUgUFJPQ19JTl9TQUZFX0lDIG9wdGltaXphdGlvbgoKVGhp cyBvcHRpbWl6YXRpb24gYWxsb3dlZCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUg b3RoZXIgaW5kZXhlcyB3aXRob3V0IGV4cHJlc3Npb25zIG9yIHByZWRpY2F0ZXMuIFdpdGggdGhl IG5ldyBzbmFwc2hvdCBoYW5kbGluZyBhcHByb2FjaCB0aGF0IHBlcmlvZGljYWxseSByZWZyZXNo ZXMgc25hcHNob3RzLCB0aGlzIG9wdGltaXphdGlvbiBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgoK VGhlIGNoYW5nZSBzaW1wbGlmaWVzIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQgY29kZSBieToKLSBy ZW1vdmluZyB0aGUgUFJPQ19JTl9TQUZFX0lDIHByb2Nlc3Mgc3RhdHVzIGZsYWcKLSBlbGltaW5h dGluZyBzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpIGNhbGxzIGFuZCByZWxhdGVkIGxvZ2ljCi0g cmVtb3Zpbmcgc3BlY2lhbCBjYXNlIGhhbmRsaW5nIGluIEdldEN1cnJlbnRWaXJ0dWFsWElEcygp Ci0gcmVtb3ZpbmcgcmVsYXRlZCB0ZXN0IGNhc2VzIGFuZCBpbmplY3Rpb24gcG9pbnRzCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwgICA2ICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jICAgICAgICAgICAgfCAgIDYgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAgICB8ICAgNiArLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgMTQyICstLS0tLS0t LS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggICAgICAgICAgICAgICAgICAg IHwgICA4ICstCiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUgICAg fCAgIDIgKy0KIC4uLi9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0ICAgICAgICAgICAgICAgICB8 ICA1MSAtLS0tLS0tCiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVp bGQgfCAgIDEgLQogLi4uL2luamVjdGlvbl9wb2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwgICAg IHwgIDI4IC0tLS0KIDkgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMjM3IGRlbGV0 aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9yZWluZGV4X2NvbmMuc3FsCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbi5jCmluZGV4IDU1NTRjZmE2ZjRkLi5jZWJjYjc3N2VmMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYwpAQCAtMjg5MywxMSArMjg5Myw5IEBAIF9icmluX3BhcmFsbGVsX2J1aWxkX21h aW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCWludAkJCXNvcnRtZW07CiAKIAkv KgotCSAqIFRoZSBvbmx5IHBvc3NpYmxlIHN0YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNldCB0byB0 aGUgcGFyYWxsZWwgd29ya2VyIGlzCi0JICogUFJPQ19JTl9TQUZFX0lDLgorCSAqIFRoZXJlIGFy ZSBubyBwb3NzaWJsZSBzdGF0dXMgZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBhcmFsbGVs IHdvcmtlci4KIAkgKi8KLQlBc3NlcnQoKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCkgfHwKLQkJ ICAgKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gUFJPQ19JTl9TQUZFX0lDKSk7CisJQXNzZXJ0KE15 UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCk7CiAKIAkvKiBTZXQgZGVidWdfcXVlcnlfc3RyaW5nIGZv ciBpbmRpdmlkdWFsIHdvcmtlcnMgZmlyc3QgKi8KIAlzaGFyZWRxdWVyeSA9IHNobV90b2NfbG9v a3VwKHRvYywgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4v Z2luaW5zZXJ0LmMKaW5kZXggYmYyNjEwNmFhNWUuLjgyOWVjYjRlZDQxIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luaW5zZXJ0LmMKQEAgLTIxMDYsMTEgKzIxMDYsOSBAQCBfZ2luX3BhcmFsbGVsX2J1 aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCWludAkJCXNvcnRtZW07 CiAKIAkvKgotCSAqIFRoZSBvbmx5IHBvc3NpYmxlIHN0YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNl dCB0byB0aGUgcGFyYWxsZWwgd29ya2VyIGlzCi0JICogUFJPQ19JTl9TQUZFX0lDLgorCSAqIFRo ZXJlIGFyZSBubyBwb3NzaWJsZSBzdGF0dXMgZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBh cmFsbGVsIHdvcmtlci4KIAkgKi8KLQlBc3NlcnQoKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCkg fHwKLQkJICAgKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gUFJPQ19JTl9TQUZFX0lDKSk7CisJQXNz ZXJ0KE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCk7CiAKIAkvKiBTZXQgZGVidWdfcXVlcnlfc3Ry aW5nIGZvciBpbmRpdmlkdWFsIHdvcmtlcnMgZmlyc3QgKi8KIAlzaGFyZWRxdWVyeSA9IHNobV90 b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQsIHRydWUpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCA0ZjkzNmE2Y2Q5OC4uZjRlYTRjY2UwNGQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0xOTExLDExICsxOTExLDkgQEAgX2J0X3Bh cmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogI2VuZGlm CQkJCQkJCS8qIEJUUkVFX0JVSUxEX1NUQVRTICovCiAKIAkvKgotCSAqIFRoZSBvbmx5IHBvc3Np YmxlIHN0YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNldCB0byB0aGUgcGFyYWxsZWwgd29ya2VyIGlz Ci0JICogUFJPQ19JTl9TQUZFX0lDLgorCSAqIFRoZXJlIGFyZSBubyBwb3NzaWJsZSBzdGF0dXMg ZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBhcmFsbGVsIHdvcmtlci4KIAkgKi8KLQlBc3Nl cnQoKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCkgfHwKLQkJICAgKE15UHJvYy0+c3RhdHVzRmxh Z3MgPT0gUFJPQ19JTl9TQUZFX0lDKSk7CisJQXNzZXJ0KE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0g MCk7CiAKIAkvKiBTZXQgZGVidWdfcXVlcnlfc3RyaW5nIGZvciBpbmRpdmlkdWFsIHdvcmtlcnMg Zmlyc3QgKi8KIAlzaGFyZWRxdWVyeSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X1FVRVJZX1RFWFQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCA5NWQ5YmE1 NzMyNC4uMjQ4MGM2ZThjZjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xMTQsNyAr MTE0LDYgQEAgc3RhdGljIGJvb2wgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LAogCQkJCQkJCQkJCU9pZCByZWxhdGlvbk9pZCwKIAkJCQkJCQkJCQlj b25zdCBSZWluZGV4UGFyYW1zICpwYXJhbXMpOwogc3RhdGljIHZvaWQgdXBkYXRlX3JlbGlzcGFy dGl0aW9uKE9pZCByZWxhdGlvbklkLCBib29sIG5ld3ZhbCk7Ci1zdGF0aWMgaW5saW5lIHZvaWQg c2V0X2luZGV4c2FmZV9wcm9jZmxhZ3Modm9pZCk7CiAKIC8qCiAgKiBjYWxsYmFjayBhcmd1bWVu dCB0eXBlIGZvciBSYW5nZVZhckNhbGxiYWNrRm9yUmVpbmRleEluZGV4KCkKQEAgLTQxNywxMCAr NDE2LDcgQEAgQ29tcGFyZU9wY2xhc3NPcHRpb25zKGNvbnN0IERhdHVtICpvcHRzMSwgY29uc3Qg RGF0dW0gKm9wdHMyLCBpbnQgbmF0dHMpCiAgKiBsYXp5IFZBQ1VVTXMsIGJlY2F1c2UgdGhleSB3 b24ndCBiZSBmYXplZCBieSBtaXNzaW5nIGluZGV4IGVudHJpZXMKICAqIGVpdGhlci4gIChNYW51 YWwgQU5BTFlaRXMsIGhvd2V2ZXIsIGNhbid0IGJlIGV4Y2x1ZGVkIGJlY2F1c2UgdGhleQogICog bWlnaHQgYmUgd2l0aGluIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBnb2luZyB0byBkbyBhcmJpdHJh cnkgb3BlcmF0aW9ucwotICogbGF0ZXIuKSAgUHJvY2Vzc2VzIHJ1bm5pbmcgQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBvciBSRUlOREVYIENPTkNVUlJFTlRMWQotICogb24gaW5kZXhlcyB0aGF0 IGFyZSBuZWl0aGVyIGV4cHJlc3Npb25hbCBub3IgcGFydGlhbCBhcmUgYWxzbyBzYWZlIHRvCi0g KiBpZ25vcmUsIHNpbmNlIHdlIGtub3cgdGhhdCB0aG9zZSBwcm9jZXNzZXMgd29uJ3QgZXhhbWlu ZSBhbnkgZGF0YQotICogb3V0c2lkZSB0aGUgdGFibGUgdGhleSdyZSBpbmRleGluZy4KKyAqIGxh dGVyLikKICAqCiAgKiBBbHNvLCBHZXRDdXJyZW50VmlydHVhbFhJRHMgbmV2ZXIgcmVwb3J0cyBv dXIgb3duIHZ4aWQsIHNvIHdlIG5lZWQgbm90CiAgKiBjaGVjayBmb3IgdGhhdC4KQEAgLTQ0MSw4 ICs0MzcsNyBAQCBXYWl0Rm9yT2xkZXJTbmFwc2hvdHMoVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW4s IGJvb2wgcHJvZ3Jlc3MpCiAJVmlydHVhbFRyYW5zYWN0aW9uSWQgKm9sZF9zbmFwc2hvdHM7CiAK IAlvbGRfc25hcHNob3RzID0gR2V0Q3VycmVudFZpcnR1YWxYSURzKGxpbWl0WG1pbiwgdHJ1ZSwg ZmFsc2UsCi0JCQkJCQkJCQkJICBQUk9DX0lTX0FVVE9WQUNVVU0gfCBQUk9DX0lOX1ZBQ1VVTQot CQkJCQkJCQkJCSAgfCBQUk9DX0lOX1NBRkVfSUMsCisJCQkJCQkJCQkJICBQUk9DX0lTX0FVVE9W QUNVVU0gfCBQUk9DX0lOX1ZBQ1VVTSwKIAkJCQkJCQkJCQkgICZuX29sZF9zbmFwc2hvdHMpOwog CWlmIChwcm9ncmVzcykKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19X QUlURk9SX1RPVEFMLCBuX29sZF9zbmFwc2hvdHMpOwpAQCAtNDYyLDggKzQ1Nyw3IEBAIFdhaXRG b3JPbGRlclNuYXBzaG90cyhUcmFuc2FjdGlvbklkIGxpbWl0WG1pbiwgYm9vbCBwcm9ncmVzcykK IAogCQkJbmV3ZXJfc25hcHNob3RzID0gR2V0Q3VycmVudFZpcnR1YWxYSURzKGxpbWl0WG1pbiwK IAkJCQkJCQkJCQkJCQl0cnVlLCBmYWxzZSwKLQkJCQkJCQkJCQkJCQlQUk9DX0lTX0FVVE9WQUNV VU0gfCBQUk9DX0lOX1ZBQ1VVTQotCQkJCQkJCQkJCQkJCXwgUFJPQ19JTl9TQUZFX0lDLAorCQkJ CQkJCQkJCQkJCVBST0NfSVNfQVVUT1ZBQ1VVTSB8IFBST0NfSU5fVkFDVVVNLAogCQkJCQkJCQkJ CQkJCSZuX25ld2VyX3NuYXBzaG90cyk7CiAJCQlmb3IgKGogPSBpOyBqIDwgbl9vbGRfc25hcHNo b3RzOyBqKyspCiAJCQl7CkBAIC01NzcsNyArNTcxLDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxl SWQsCiAJYW1vcHRpb25zX2Z1bmN0aW9uIGFtb3B0aW9uczsKIAlib29sCQlleGNsdXNpb247CiAJ Ym9vbAkJcGFydGl0aW9uZWQ7Ci0JYm9vbAkJc2FmZV9pbmRleDsKIAlEYXR1bQkJcmVsb3B0aW9u czsKIAlpbnQxNgkgICAqY29sb3B0aW9uczsKIAlJbmRleEluZm8gICppbmRleEluZm87CkBAIC0x MTgxLDEwICsxMTc0LDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCX0KIAl9CiAKLQkv KiBJcyBpbmRleCBzYWZlIGZvciBvdGhlcnMgdG8gaWdub3JlPyAgU2VlIHNldF9pbmRleHNhZmVf cHJvY2ZsYWdzKCkgKi8KLQlzYWZlX2luZGV4ID0gaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucyA9 PSBOSUwgJiYKLQkJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUgPT0gTklMOwotCiAJLyoKIAkgKiBS ZXBvcnQgaW5kZXggY3JlYXRpb24gaWYgYXBwcm9wcmlhdGUgKGRlbGF5IHRoaXMgdGlsbCBhZnRl ciBtb3N0IG9mIHRoZQogCSAqIGVycm9yIGNoZWNrcykKQEAgLTE2NzAsMTAgKzE2NTksNiBAQCBE ZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1 aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4 KQotCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJLyoKIAkgKiBUaGUgaW5kZXggaXMg bm93IHZpc2libGUsIHNvIHdlIGNhbiByZXBvcnQgdGhlIE9JRC4gIFdoaWxlIG9uIGl0LAogCSAq IGluY2x1ZGUgdGhlIHJlcG9ydCBmb3IgdGhlIGJlZ2lubmluZyBvZiBwaGFzZSAyLgpAQCAtMTcy OCw5ICsxNzEzLDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFRlbGwgY29u Y3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8K LQlpZiAoc2FmZV9pbmRleCkKLQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKIAlwZ3N0YXRf cHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkg UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMik7CiAJLyoKQEAgLTE3NjAsMTAgKzE3NDIs NiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGlu ZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZl X2luZGV4KQotCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJLyoKIAkgKiBQaGFzZSAz IG9mIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQKIAkgKgpAQCAtMTc4OSw5ICsxNzY3LDcgQEAgRGVm aW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWls ZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQlpZiAoc2FmZV9pbmRleCkK LQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKwogCS8qCiAJICogTWVyZ2UgY29udGVudCBv ZiBhdXhpbGlhcnkgYW5kIHRhcmdldCBpbmRleGVzIC0gaW5zZXJ0IGFueSBtaXNzaW5nIGluZGV4 IGVudHJpZXMuCiAJICovCkBAIC0xODA4LDkgKzE3ODQsNiBAQCBEZWZpbmVJbmRleChPaWQgdGFi bGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29t bWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMs IGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5kZXhzYWZl X3Byb2NmbGFncygpOwogCiAJLyogV2Ugc2hvdWxkIG5vdyBkZWZpbml0ZWx5IG5vdCBiZSBhZHZl cnRpc2luZyBhbnkgeG1pbi4gKi8KIAlBc3NlcnQoTXlQcm9jLT54bWluID09IEludmFsaWRUcmFu c2FjdGlvbklkKTsKQEAgLTE4NTEsMTAgKzE4MjQsNiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJ ZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlm IGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5kZXhzYWZlX3By b2NmbGFncygpOwotCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVB VEVJRFhfUEhBU0UsCiAJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzUpOwog CS8qIE5vdyB3YWl0IGZvciBhbGwgdHJhbnNhY3Rpb24gdG8gc2VlIGF1eGlsaWFyeSBhcyAibm9u LXJlYWR5IGZvciBpbnNlcnRzIiAqLwpAQCAtMTg3NSwxMCArMTg0NCw2IEBAIERlZmluZUluZGV4 KE9pZCB0YWJsZUlkLAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGln bm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JaWYgKHNhZmVfaW5kZXgpCi0JCXNldF9p bmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1dBSVRfNik7CiAJLyogTm93IHdhaXQgZm9yIGFsbCB0cmFuc2FjdGlvbiB0byBpZ25vcmUgYXV4 aWxpYXJ5IGJlY2F1c2UgaXQgaXMgZGVhZCAqLwpAQCAtMzY1Myw3ICszNjE4LDYgQEAgUmVpbmRl eFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRp b25PaWQsIGNvbnN0IFJlaW4KIAkJT2lkCQkJanVua0F1eEluZGV4SWQ7CiAJCU9pZAkJCXRhYmxl SWQ7CiAJCU9pZAkJCWFtSWQ7Ci0JCWJvb2wJCXNhZmU7CQkvKiBmb3Igc2V0X2luZGV4c2FmZV9w cm9jZmxhZ3MgKi8KIAl9IFJlaW5kZXhJbmRleEluZm87CiAJTGlzdAkgICAqaGVhcFJlbGF0aW9u SWRzID0gTklMOwogCUxpc3QJICAgKmluZGV4SWRzID0gTklMOwpAQCAtNDAyNywxNyArMzk5MSw2 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVz dExldmVsKCk7CiAJCVJlc3RyaWN0U2VhcmNoUGF0aCgpOwogCi0JCS8qIGRldGVybWluZSBzYWZl dHkgb2YgdGhpcyBpbmRleCBmb3Igc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MgKi8KLQkJaWR4LT5z YWZlID0gKFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpbmRleFJlbCkgPT0gTklMICYmCi0J CQkJCSBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGluZGV4UmVsKSA9PSBOSUwpOwotCi0jaWZk ZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKLQkJaWYgKGlkeC0+c2FmZSkKLQkJCUlOSkVDVElPTl9Q T0lOVCgicmVpbmRleC1jb25jLWluZGV4LXNhZmUiLCBOVUxMKTsKLQkJZWxzZQotCQkJSU5KRUNU SU9OX1BPSU5UKCJyZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUiLCBOVUxMKTsKLSNlbmRpZgot CiAJCWlkeC0+dGFibGVJZCA9IFJlbGF0aW9uR2V0UmVsaWQoaGVhcFJlbCk7CiAJCWlkeC0+YW1J ZCA9IGluZGV4UmVsLT5yZF9yZWwtPnJlbGFtOwogCkBAIC00MTAzLDcgKzQwNTYsNiBAQCBSZWlu ZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxh dGlvbk9pZCwgY29uc3QgUmVpbgogCQluZXdpZHgtPmluZGV4SWQgPSBuZXdJbmRleElkOwogCQlu ZXdpZHgtPmF1eEluZGV4SWQgPSBhdXhJbmRleElkOwogCQluZXdpZHgtPmp1bmtBdXhJbmRleElk ID0ganVua0F1eEluZGV4SWQ7Ci0JCW5ld2lkeC0+c2FmZSA9IGlkeC0+c2FmZTsKIAkJbmV3aWR4 LT50YWJsZUlkID0gaWR4LT50YWJsZUlkOwogCQluZXdpZHgtPmFtSWQgPSBpZHgtPmFtSWQ7CiAK QEAgLTQyMDQsMTEgKzQxNTYsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKgot CSAqIEJlY2F1c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IGluIHRoaXMgdHJhbnNhY3Rpb24s IHRoZXJlJ3Mgbm8gbmVlZAotCSAqIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaGVy ZS4KLQkgKi8KLQogCS8qCiAJICogUGhhc2UgMiBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAq CkBAIC00MjQwLDEwICs0MTg3LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICovCiAJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5n IHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JCWlmIChuZXdpZHgtPnNhZmUp Ci0JCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJCS8qIEJ1aWxkIGF1eGlsaWFyeSBp bmRleCwgaXQgaXMgZmFzdCAtIHdpdGhvdXQgYW55IGFjdHVhbCBoZWFwIHNjYW4sIGp1c3QgYW4g ZW1wdHkgaW5kZXguICovCiAJCWluZGV4X2NvbmN1cnJlbnRseV9idWlsZChuZXdpZHgtPnRhYmxl SWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7CiAKQEAgLTQyNTIsMTEgKzQxOTUsNiBAQCBSZWluZGV4 UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlv bk9pZCwgY29uc3QgUmVpbgogCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qCi0J ICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3QgaW4gdGhpcyB0cmFuc2FjdGlvbiwg dGhlcmUncyBubyBuZWVkCi0JICogdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJl LgotCSAqLwotCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsKIAkv KgpAQCAtNDI4MSwxMCArNDIxOSw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCSAqLwog CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCS8qIFRlbGwgY29uY3VycmVudCBpbmRleGlu ZyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCQlpZiAobmV3aWR4LT5zYWZl KQotCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCQkvKgogCQkgKiBVcGRhdGUgcHJv Z3Jlc3MgZm9yIHRoZSBpbmRleCB0byBidWlsZCwgd2l0aCB0aGUgY29ycmVjdCBwYXJlbnQKIAkJ ICogdGFibGUgaW52b2x2ZWQuCkBAIC00MzA0LDExICs0MjM4LDYgQEAgUmVpbmRleFJlbGF0aW9u Q29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNv bnN0IFJlaW4KIAogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKgotCSAqIEJlY2F1 c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IG9yIFhpZCBpbiB0aGlzIHRyYW5zYWN0aW9uLCB0 aGVyZSdzIG5vCi0JICogbmVlZCB0byBzZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGhlcmUu Ci0JICovCi0KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlE WF9QSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMpOwogCVdh aXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7CkBAIC00MzMw LDEwICs0MjU5LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICovCiAJCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CiAKLQkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9y ZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JCWlmIChuZXdpZHgtPnNhZmUpCi0JCQlzZXRf aW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJCS8qCiAJCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1p Z2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKIAkJICogaGF2ZSBh IHZhbGlkIHNuYXBzaG90LgpAQCAtNDM2OSwxMCArNDI5NCw2IEBAIFJlaW5kZXhSZWxhdGlvbkNv bmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25z dCBSZWluCiAJCSAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCS8qIFRlbGwgY29u Y3VycmVudCBpbmRleGluZyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCQlp ZiAobmV3aWR4LT5zYWZlKQotCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCQkvKgog CQkgKiBVcGRhdGUgcHJvZ3Jlc3MgZm9yIHRoZSBpbmRleCB0byBidWlsZCwgd2l0aCB0aGUgY29y cmVjdCBwYXJlbnQKIAkJICogdGFibGUgaW52b2x2ZWQuCkBAIC00NDAwLDkgKzQzMjEsNiBAQCBS ZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBy ZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkgKiBpbnRlcmVzdGluZyB0dXBsZXMuICBCdXQgc2lu Y2UgaXQgbWlnaHQgbm90IGNvbnRhaW4gdHVwbGVzIGRlbGV0ZWQKIAkJICoganVzdCBiZWZvcmUg dGhlIGxhdGVzdCBzbmFwIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKIAkJICog dHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgaGF2ZSBvbGRlciBzbmFwc2hvdHMuCi0JCSAqCi0JCSAq IEJlY2F1c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IG9yIFhpZCBpbiB0aGlzIHRyYW5zYWN0 aW9uLAotCQkgKiB0aGVyZSdzIG5vIG5lZWQgdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxh ZyBoZXJlLgogCQkgKi8KIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRf NCk7CkBAIC00NDI0LDEzICs0MzQyLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNv bnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAlJTkpF Q1RJT05fUE9JTlQoInJlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zd2FwIiwg TlVMTCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qCi0JICogQmVjYXVzZSB0 aGlzIHRyYW5zYWN0aW9uIG9ubHkgZG9lcyBjYXRhbG9nIG1hbmlwdWxhdGlvbnMgYW5kIGRvZXNu J3QgZG8KLQkgKiBhbnkgaW5kZXggb3BlcmF0aW9ucywgd2UgY2FuIHNldCB0aGUgUFJPQ19JTl9T QUZFX0lDIGZsYWcgaGVyZQotCSAqIHVuY29uZGl0aW9uYWxseS4KLQkgKi8KLQlzZXRfaW5kZXhz YWZlX3Byb2NmbGFncygpOwotCiAJZm9yYm90aChsYywgaW5kZXhJZHMsIGxjMiwgbmV3SW5kZXhJ ZHMpCiAJewogCQlSZWluZGV4SW5kZXhJbmZvICpvbGRpZHggPSBsZmlyc3QobGMpOwpAQCAtNDQ4 NiwxMiArNDM5Nyw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4 U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qCi0JICogV2hp bGUgd2UgY291bGQgc2V0IFBST0NfSU5fU0FGRV9JQyBpZiBhbGwgaW5kZXhlcyBxdWFsaWZpZWQs IHRoZXJlJ3Mgbm8KLQkgKiByZWFsIG5lZWQgZm9yIHRoYXQsIGJlY2F1c2Ugd2Ugb25seSBhY3F1 aXJlIGFuIFhpZCBhZnRlciB0aGUgd2FpdCBpcwotCSAqIGRvbmUsIGFuZCB0aGF0IGxhc3RzIGZv ciBhIHZlcnkgc2hvcnQgcGVyaW9kLgotCSAqLwotCiAJLyoKIAkgKiBQaGFzZSA1IG9mIFJFSU5E RVggQ09OQ1VSUkVOVExZCiAJICoKQEAgLTQ1NTUsMTIgKzQ0NjAsNiBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwg Y29uc3QgUmVpbgogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rp b25Db21tYW5kKCk7CiAKLQkvKgotCSAqIFdoaWxlIHdlIGNvdWxkIHNldCBQUk9DX0lOX1NBRkVf SUMgaWYgYWxsIGluZGV4ZXMgcXVhbGlmaWVkLCB0aGVyZSdzIG5vCi0JICogcmVhbCBuZWVkIGZv ciB0aGF0LCBiZWNhdXNlIHdlIG9ubHkgYWNxdWlyZSBhbiBYaWQgYWZ0ZXIgdGhlIHdhaXQgaXMK LQkgKiBkb25lLCBhbmQgdGhhdCBsYXN0cyBmb3IgYSB2ZXJ5IHNob3J0IHBlcmlvZC4KLQkgKi8K LQogCS8qCiAJICogUGhhc2UgNiBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAqCkBAIC00ODI4 LDM2ICs0NzI3LDMgQEAgdXBkYXRlX3JlbGlzcGFydGl0aW9uKE9pZCByZWxhdGlvbklkLCBib29s IG5ld3ZhbCkKIAl0YWJsZV9jbG9zZShjbGFzc1JlbCwgUm93RXhjbHVzaXZlTG9jayk7CiB9CiAK LS8qCi0gKiBTZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGluIE15UHJvYy0+c3RhdHVzRmxh Z3MuCi0gKgotICogV2hlbiBkb2luZyBjb25jdXJyZW50IGluZGV4IGJ1aWxkcywgd2UgY2FuIHNl dCB0aGlzIGZsYWcKLSAqIHRvIHRlbGwgb3RoZXIgcHJvY2Vzc2VzIGNvbmN1cnJlbnRseSBydW5u aW5nIENSRUFURQotICogSU5ERVggQ09OQ1VSUkVOVExZIG9yIFJFSU5ERVggQ09OQ1VSUkVOVExZ IHRvIGlnbm9yZSB1cyB3aGVuCi0gKiBkb2luZyB0aGVpciB3YWl0cyBmb3IgY29uY3VycmVudCBz bmFwc2hvdHMuICBPbiBvbmUgaGFuZCBpdAotICogYXZvaWRzIHBvaW50bGVzc2x5IHdhaXRpbmcg Zm9yIGEgcHJvY2VzcyB0aGF0J3Mgbm90IGludGVyZXN0aW5nCi0gKiBhbnl3YXk7IGJ1dCBtb3Jl IGltcG9ydGFudGx5IGl0IGF2b2lkcyBkZWFkbG9ja3MgaW4gc29tZSBjYXNlcy4KLSAqCi0gKiBU aGlzIGNhbiBiZSBkb25lIHNhZmVseSBvbmx5IGZvciBpbmRleGVzIHRoYXQgZG9uJ3QgZXhlY3V0 ZSBhbnkKLSAqIGV4cHJlc3Npb25zIHRoYXQgY291bGQgYWNjZXNzIG90aGVyIHRhYmxlcywgc28g aW5kZXggbXVzdCBub3QgYmUKLSAqIGV4cHJlc3Npb25hbCBub3IgcGFydGlhbC4gIENhbGxlciBp cyByZXNwb25zaWJsZSBmb3Igb25seSBjYWxsaW5nCi0gKiB0aGlzIHJvdXRpbmUgd2hlbiB0aGF0 IGFzc3VtcHRpb24gaG9sZHMgdHJ1ZS4KLSAqCi0gKiAoVGhlIGZsYWcgaXMgcmVzZXQgYXV0b21h dGljYWxseSBhdCB0cmFuc2FjdGlvbiBlbmQsIHNvIGl0IG11c3QgYmUKLSAqIHNldCBmb3IgZWFj aCB0cmFuc2FjdGlvbi4pCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAotc2V0X2luZGV4c2FmZV9w cm9jZmxhZ3Modm9pZCkKLXsKLQkvKgotCSAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJl Zm9yZSBpbnN0YWxsaW5nIHhpZCBvciB4bWluIGluIE15UHJvYzsKLQkgKiBvdGhlcndpc2UsIGNv bmN1cnJlbnQgcHJvY2Vzc2VzIGNvdWxkIHNlZSBhbiBYbWluIHRoYXQgbW92ZXMgYmFja3dhcmRz LgotCSAqLwotCUFzc2VydChNeVByb2MtPnhpZCA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCAmJgot CQkgICBNeVByb2MtPnhtaW4gPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpOwotCi0JTFdMb2NrQWNx dWlyZShQcm9jQXJyYXlMb2NrLCBMV19FWENMVVNJVkUpOwotCU15UHJvYy0+c3RhdHVzRmxhZ3Mg fD0gUFJPQ19JTl9TQUZFX0lDOwotCVByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzW015UHJvYy0+cGd4 YWN0b2ZmXSA9IE15UHJvYy0+c3RhdHVzRmxhZ3M7Ci0JTFdMb2NrUmVsZWFzZShQcm9jQXJyYXlM b2NrKTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jLmgKaW5kZXggYzZmNWViY2VlZmQuLmY0N2QyNjhkNmM3IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2MuaApAQCAtNTYsMTAgKzU2LDYgQEAgc3RydWN0IFhpZENhY2hlCiAgKi8KICNkZWZp bmUJCVBST0NfSVNfQVVUT1ZBQ1VVTQkweDAxCS8qIGlzIGl0IGFuIGF1dG92YWMgd29ya2VyPyAq LwogI2RlZmluZQkJUFJPQ19JTl9WQUNVVU0JCTB4MDIJLyogY3VycmVudGx5IHJ1bm5pbmcgbGF6 eSB2YWN1dW0gKi8KLSNkZWZpbmUJCVBST0NfSU5fU0FGRV9JQwkJMHgwNAkvKiBjdXJyZW50bHkg cnVubmluZyBDUkVBVEUgSU5ERVgKLQkJCQkJCQkJCQkgKiBDT05DVVJSRU5UTFkgb3IgUkVJTkRF WAotCQkJCQkJCQkJCSAqIENPTkNVUlJFTlRMWSBvbiBub24tZXhwcmVzc2lvbmFsLAotCQkJCQkJ CQkJCSAqIG5vbi1wYXJ0aWFsIGluZGV4ICovCiAjZGVmaW5lCQlQUk9DX1ZBQ1VVTV9GT1JfV1JB UEFST1VORAkweDA4CS8qIHNldCBieSBhdXRvdmFjIG9ubHkgKi8KICNkZWZpbmUJCVBST0NfSU5f TE9HSUNBTF9ERUNPRElORwkweDEwCS8qIGN1cnJlbnRseSBkb2luZyBsb2dpY2FsCiAJCQkJCQkJ CQkJCQkgKiBkZWNvZGluZyBvdXRzaWRlIHhhY3QgKi8KQEAgLTY5LDEzICs2NSwxMyBAQCBzdHJ1 Y3QgWGlkQ2FjaGUKIAogLyogZmxhZ3MgcmVzZXQgYXQgRU9YYWN0ICovCiAjZGVmaW5lCQlQUk9D X1ZBQ1VVTV9TVEFURV9NQVNLIFwKLQkoUFJPQ19JTl9WQUNVVU0gfCBQUk9DX0lOX1NBRkVfSUMg fCBQUk9DX1ZBQ1VVTV9GT1JfV1JBUEFST1VORCkKKwkoUFJPQ19JTl9WQUNVVU0gfCBQUk9DX1ZB Q1VVTV9GT1JfV1JBUEFST1VORCkKIAogLyoKICAqIFhtaW4tcmVsYXRlZCBmbGFncy4gTWFrZSBz dXJlIGFueSBmbGFncyB0aGF0IGFmZmVjdCBob3cgdGhlIHByb2Nlc3MnIFhtaW4KICAqIHZhbHVl IGlzIGludGVycHJldGVkIGJ5IFZBQ1VVTSBhcmUgaW5jbHVkZWQgaGVyZS4KICAqLwotI2RlZmlu ZQkJUFJPQ19YTUlOX0ZMQUdTIChQUk9DX0lOX1ZBQ1VVTSB8IFBST0NfSU5fU0FGRV9JQykKKyNk ZWZpbmUJCVBST0NfWE1JTl9GTEFHUyAoUFJPQ19JTl9WQUNVVU0pCiAKIC8qCiAgKiBXZSBhbGxv dyBhIGxpbWl0ZWQgbnVtYmVyIG9mICJ3ZWFrIiByZWxhdGlvbiBsb2NrcyAoQWNjZXNzU2hhcmVM b2NrLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2Vm aWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCmluZGV4IGY0 YTYyZWQxY2E3Li5iMjE3YjFhYTk1MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9NYWtlZmlsZQpAQCAtMTEsNyArMTEsNyBAQCBFWFRFTlNJT04gPSBpbmplY3Rpb25fcG9p bnRzCiBEQVRBID0gaW5qZWN0aW9uX3BvaW50cy0tMS4wLnNxbAogUEdGSUxFREVTQyA9ICJpbmpl Y3Rpb25fcG9pbnRzIC0gZmFjaWxpdHkgZm9yIGluamVjdGlvbiBwb2ludHMiCiAKLVJFR1JFU1Mg PSBpbmplY3Rpb25fcG9pbnRzIGhhc2hhZ2cgcmVpbmRleF9jb25jIHZhY3V1bSBjaWNfcmVzZXRf c25hcHNob3RzCitSRUdSRVNTID0gaW5qZWN0aW9uX3BvaW50cyBoYXNoYWdnIHZhY3V1bSBjaWNf cmVzZXRfc25hcHNob3RzCiBSRUdSRVNTX09QVFMgPSAtLWRscGF0aD0kKHRvcF9idWlsZGRpcikv c3JjL3Rlc3QvcmVncmVzcwogCiBJU09MQVRJT04gPSBiYXNpYyBpbnBsYWNlIHN5c2NhY2hlLXVw ZGF0ZS1wcnVuZWQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhfY29uYy5vdXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGRiOGRlNGJiZTg1Li4wMDAwMDAwMDAwMAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvcmVpbmRleF9jb25jLm91dAorKysgL2Rldi9udWxsCkBA IC0xLDUxICswLDAgQEAKLS0tIFRlc3RzIGZvciBSRUlOREVYIENPTkNVUlJFTlRMWQotQ1JFQVRF IEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwotLS0gQ2hlY2sgc2FmZXR5IG9mIGluZGV4ZXMg d2l0aCBwcmVkaWNhdGVzIGFuZCBleHByZXNzaW9ucy4KLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X3NldF9sb2NhbCgpOwotIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsIAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19h dHRhY2goJ3JlaW5kZXgtY29uYy1pbmRleC1zYWZlJywgJ25vdGljZScpOwotIGluamVjdGlvbl9w b2ludHNfYXR0YWNoIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1T RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3JlaW5kZXgtY29uYy1pbmRleC1ub3Qtc2Fm ZScsICdub3RpY2UnKTsKLSBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KLSAKLSgxIHJvdykKLQotQ1JFQVRFIFNDSEVNQSByZWluZGV4X2luajsKLUNS RUFURSBUQUJMRSByZWluZGV4X2luai50YmwoaSBpbnQgcHJpbWFyeSBrZXksIHVwZGF0ZWRfYXQg dGltZXN0YW1wKTsKLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX3NpbXBsZSBPTiByZWluZGV4X2lu ai50YmwoaSk7Ci1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9leHByIE9OIHJlaW5kZXhfaW5qLnRi bChBQlMoaSkpOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfcHJlZCBPTiByZWluZGV4X2luai50 YmwoaSkgV0hFUkUgbW9kKGksIDIpID0gMDsKLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX2V4cHJf cHJlZCBPTiByZWluZGV4X2luai50YmwoYWJzKGkpKSBXSEVSRSBtb2QoaSwgMikgPSAwOwotUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX3NpbXBsZTsKLU5PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCByZWluZGV4LWNvbmMtaW5kZXgt c2FmZQotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX2V4cHI7Ci1O T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgcmVpbmRleC1jb25j LWluZGV4LW5vdC1zYWZlCi1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5p bmRfcHJlZDsKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBy ZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHJl aW5kZXhfaW5qLmluZF9leHByX3ByZWQ7Ci1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgcmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlCi0tLSBDbGVhbnVwCi1T RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXgtY29uYy1pbmRleC1zYWZlJyk7 Ci0gaW5qZWN0aW9uX3BvaW50c19kZXRhY2ggCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0g Ci0oMSByb3cpCi0KLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncmVpbmRleC1jb25j LWluZGV4LW5vdC1zYWZlJyk7Ci0gaW5qZWN0aW9uX3BvaW50c19kZXRhY2ggCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLURST1AgVEFCTEUgcmVpbmRleF9pbmoudGJs OwotRFJPUCBTQ0hFTUEgcmVpbmRleF9pbmo7Ci1EUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9p bnRzOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29u LmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCmlu ZGV4IGJhN2JjMGNjMzg0Li43ZmVhZjA1MTI5YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZApAQCAtMzYsNyArMzYsNiBAQCB0ZXN0cyArPSB7CiAg ICAgJ3NxbCc6IFsKICAgICAgICdpbmplY3Rpb25fcG9pbnRzJywKICAgICAgICdoYXNoYWdnJywK LSAgICAgICdyZWluZGV4X2NvbmMnLAogICAgICAgJ3ZhY3V1bScsCiAgICAgICAnY2ljX3Jlc2V0 X3NuYXBzaG90cycsCiAgICAgXSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNxbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggNmNmMjExZTZkNWQuLjAwMDAwMDAwMDAwCi0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNxbAorKysgL2Rldi9udWxsCkBAIC0xLDI4 ICswLDAgQEAKLS0tIFRlc3RzIGZvciBSRUlOREVYIENPTkNVUlJFTlRMWQotQ1JFQVRFIEVYVEVO U0lPTiBpbmplY3Rpb25fcG9pbnRzOwotCi0tLSBDaGVjayBzYWZldHkgb2YgaW5kZXhlcyB3aXRo IHByZWRpY2F0ZXMgYW5kIGV4cHJlc3Npb25zLgotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0 X2xvY2FsKCk7Ci1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3JlaW5kZXgtY29uYy1p bmRleC1zYWZlJywgJ25vdGljZScpOwotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdy ZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUnLCAnbm90aWNlJyk7Ci0KLUNSRUFURSBTQ0hFTUEg cmVpbmRleF9pbmo7Ci1DUkVBVEUgVEFCTEUgcmVpbmRleF9pbmoudGJsKGkgaW50IHByaW1hcnkg a2V5LCB1cGRhdGVkX2F0IHRpbWVzdGFtcCk7Ci0KLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX3Np bXBsZSBPTiByZWluZGV4X2luai50YmwoaSk7Ci1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9leHBy IE9OIHJlaW5kZXhfaW5qLnRibChBQlMoaSkpOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfcHJl ZCBPTiByZWluZGV4X2luai50YmwoaSkgV0hFUkUgbW9kKGksIDIpID0gMDsKLUNSRUFURSBVTklR VUUgSU5ERVggaW5kX2V4cHJfcHJlZCBPTiByZWluZGV4X2luai50YmwoYWJzKGkpKSBXSEVSRSBt b2QoaSwgMikgPSAwOwotCi1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5p bmRfc2ltcGxlOwotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX2V4 cHI7Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRfcHJlZDsKLVJF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9leHByX3ByZWQ7Ci0KLS0t IENsZWFudXAKLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncmVpbmRleC1jb25jLWlu ZGV4LXNhZmUnKTsKLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncmVpbmRleC1jb25j LWluZGV4LW5vdC1zYWZlJyk7Ci1EUk9QIFRBQkxFIHJlaW5kZXhfaW5qLnRibDsKLURST1AgU0NI RU1BIHJlaW5kZXhfaW5qOwotCi1EUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwotLSAK Mi40My4wCgo= --000000000000857292063fd91e50--