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 1vDoa1-00GqUf-IL for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Oct 2025 18:38:01 +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 1vDoa0-00EYW4-HB for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Oct 2025 18:37: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 1vDoZz-00EYVj-KK for pgsql-hackers@lists.postgresql.org; Tue, 28 Oct 2025 18:37:59 +0000 Received: from mail-lj1-x22e.google.com ([2a00:1450:4864:20::22e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vDoZp-004kHR-0d for pgsql-hackers@postgresql.org; Tue, 28 Oct 2025 18:37:58 +0000 Received: by mail-lj1-x22e.google.com with SMTP id 38308e7fff4ca-378cfbf83f2so68255741fa.1 for ; Tue, 28 Oct 2025 11:37:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1761676663; x=1762281463; 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=XpP2ajGXXiL+OYhJgBQ/SXPWwQZCVKlAGoc61zaSyXs=; b=EFspgXDkj+8QeJXlspIonpKpu+67Bn1594eUdXwLDcgXr7D0A3sRgbSbPEZiIqzibW GGyg4ayJfds0jRJtbg3iwoOUJKYFwhUbwW8A42EBKaF9AAfqwiEnDvbaFCqU8Nls3mBw D0XiYEBgf326pTqoMbS9e9Yy20Cil05TiKQVfCv0OEHrfZ89QIzsMV/UCqs9ElpjML/U Ta+XX4NyvPE293uaYgL6Jk9df2r7iweEwsBJyvT1TKQQWNmY2kFRcZOWOv2Bk3oKkvV3 L78VPJn+h58secjD6t1tHetkoA39lNwZUxp384ZAhnG74J47LC7IRB21kQ3pBMZAzFNg aG/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761676663; x=1762281463; 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=XpP2ajGXXiL+OYhJgBQ/SXPWwQZCVKlAGoc61zaSyXs=; b=w337buiTyg1i1Xfx4OeHn4R82uDJSRPI4g3JXsARizRrir31UTJO5PlyqAg/5RAlPO ZiwBw7/fB0MTb96ssD9E8vEpurxfBo1aijL6ytNIl0eNGDL8/dOptA+GhpZQ9vVp/OUP WRbRjKIAkQ+KPL+hG6xXrkfMH13iF0Sxo+sQRlg6rr0R8n4QGUWmIPRcCzE3/1er28yN JlZcmFlkbXZjQEPzS8yX7769WO0u1ZIEGfqw471G9smf0kHsje/u4ZEXpRAVuxW0lsVr U8f2mwu8kXYcXQ4W5jzHohsBYBW2/14hZzrUiQiGR3/WFHphmC8fo4Va3g18s2CNESsD nw/w== X-Forwarded-Encrypted: i=1; AJvYcCWjBrQ/JJjn9pjIBcd0OU65jJ90r9W2IggiM+J930CLifGUFJMa6QzRLLeDSyPBhsjqMTXrGY81g0wX2q3W@postgresql.org X-Gm-Message-State: AOJu0YwylUh5wD+d595kqFKz1eQNQZgWBUXwY0I7uhkTwWsVBDnr6c1H cAOtXSMOKuXZvqHTzgrCUk9Er9W/yEIyXH8oPu70wTjkO06S7GrRy5JFaa8Fd5IjL13S8FM6ZW+ upkwHR8jCujVsC0URaMPyVem/JgCAbLM= X-Gm-Gg: ASbGncu7oyYdR8yCH5B/EFwPi6sKjJeqe73WkUZSgefMbXNbhqt+VnVYwA+qd7bw32E /EinqOochIU2ClAAElyxaPDp3n+U4BywH8r4bFtG02GyUavkGuIcHcwvUBUkIUiddUaPkm3VJj2 ckKrCCBaR/CSH5PX77VgMqKphB8eoHPsEZyj6hwB0fV14KSu+DvOsTs2agl9jg5I4BSFtWbwm6Q Mhhoj5P/tBMuJ/D61RK2F8xyu1xJJ7cnFLC54dNHXVW+P/2yMmB4cIR5KiJmQ== X-Google-Smtp-Source: AGHT+IH5+IfIXWvMPo03CgeDWO7hf821RwhkdflCoamQn9p0jo30eDfoVVvpUAxH8r/ee/DOWdrEk2ADo7x0cEeLi78= X-Received: by 2002:a05:651c:551:b0:376:4a97:75ec with SMTP id 38308e7fff4ca-37a053890e8mr1288491fa.49.1761676662667; Tue, 28 Oct 2025 11:37:42 -0700 (PDT) MIME-Version: 1.0 References: <202505181556.3n6oiowvntyr@alvherre.pgsql> In-Reply-To: From: Mihail Nikalayeu Date: Tue, 28 Oct 2025 19:37:00 +0100 X-Gm-Features: AWmQ_bls4OTkwXbqPt14-CVkVt76KA6EE00Tot-Co99XscjDyN5Rs4tH5XlBmKI 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="000000000000b0374806423c4f93" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b0374806423c4f93 Content-Type: text/plain; charset="UTF-8" Fixed and assert caused https://cirrus-ci.com/task/4890065790304256?logs=test_world#L157 to fail. --000000000000b0374806423c4f93 Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0007-Add-Datum-storage-support-to-tuplestore.patch" Content-Disposition: attachment; filename="v25-0007-Add-Datum-storage-support-to-tuplestore.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhaumwjc4 RnJvbSBkMjQzMDI1NmU0YWQzNjM4YjQ0YzhlNjEwMGRhZjBhNjg2NjQzNGUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAyNSBKYW4gMjAyNSAxMzozMzoyMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI1IDA3LzEyXSBBZGQgRGF0dW0gc3RvcmFnZSBzdXBwb3J0IHRvIHR1cGxlc3RvcmUK 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 cmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCk7CiAKLS0gCjIuNDguMQoK --000000000000b0374806423c4f93 Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0012-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Disposition: attachment; filename="v25-0012-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhaumwiw0 RnJvbSA0MzU5NmI3MGQ5ZTRiYTBlYzBlNmI5M2EwYmQ4ZTg4OGRlZWZhZjFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDoyNDo0OCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI1IDEyLzEyXSBSZW1vdmUgUFJPQ19JTl9TQUZFX0lDIG9wdGltaXphdGlvbgoKVGhp 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 Mi40OC4xCgo= --000000000000b0374806423c4f93 Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0011-Refresh-snapshot-periodically-during-index-valid.patch" Content-Disposition: attachment; filename="v25-0011-Refresh-snapshot-periodically-during-index-valid.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhaumwj41 RnJvbSBlNzhmY2Y3Y2ZhMDhjYzdkODZjMTk5MDY3YjFkYTdkOTYwNDJhMmJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAyMSBBcHIgMjAyNSAxNDoxODozMiArMDIwMApTdWJqZWN0OiBb UEFUQ0ggdjI1IDExLzEyXSBSZWZyZXNoIHNuYXBzaG90IHBlcmlvZGljYWxseSBkdXJpbmcgaW5k 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 Y2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDc1NjA3 YTM0Y2YyLi43ZDEwNmEzZDIzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMzUzNiw4ICszNTM2LDkg QEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKiBpbnNlcnQg dGhlaXIgbmV3IHR1cGxlcyBpbnRvIGl0LiBBdCB0aGUgc2FtZSBtb21lbnQgd2UgY2xlYXIgImlu ZGlzcmVhZHkiIGZvcgogICogYXV4aWxpYXJ5IGluZGV4LCBzaW5jZSBpdCBpcyBubyBtb3JlIHJl cXVpcmVkIHRvIGJlIHVwZGF0ZWQuCiAgKgotICogV2UgdGhlbiB0YWtlIGEgbmV3IHJlZmVyZW5j ZSBzbmFwc2hvdCwgYW55IHR1cGxlcyB0aGF0IGFyZSB2YWxpZCBhY2NvcmRpbmcKLSAqIHRvIHRo aXMgc25hcCwgYnV0IGFyZSBub3QgaW4gdGhlIGluZGV4LCBtdXN0IGJlIGFkZGVkIHRvIHRoZSBp bmRleC4KKyAqIFdlIHRoZW4gdGFrZSBhIG5ldyBzbmFwc2hvdCwgYW55IHR1cGxlcyB0aGF0IGFy ZSB2YWxpZCBhY2NvcmRpbmcKKyAqIHRvIHRoaXMgc25hcCwgYnV0IGFyZSBub3QgaW4gdGhlIGlu ZGV4LCBtdXN0IGJlIGFkZGVkIHRvIHRoZSBpbmRleC4gSW4KKyAqIG9yZGVyIHRvIHByb3BhZ2F0 ZSB4bWluIHdlIHJlc2V0IHRoYXQgc25hcHNob3QgZXZlcnkgZmV3IHNvIG9mdGVuLgogICogKEFu eSB0dXBsZXMgY29tbWl0dGVkIGxpdmUgYWZ0ZXIgdGhlIHNuYXAgd2lsbCBiZSBpbnNlcnRlZCBp bnRvIHRoZQogICogaW5kZXggYnkgdGhlaXIgb3JpZ2luYXRpbmcgdHJhbnNhY3Rpb24uICBBbnkg dHVwbGVzIGNvbW1pdHRlZCBkZWFkIGJlZm9yZQogICogdGhlIHNuYXAgbmVlZCBub3QgYmUgaW5k ZXhlZCwgYmVjYXVzZSB3ZSB3aWxsIHdhaXQgb3V0IGFsbCB0cmFuc2FjdGlvbnMKQEAgLTM1NTAs NyArMzU1MSw3IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog ICogVElEcyBvZiBib3RoIGF1eGlsaWFyeSBhbmQgdGFyZ2V0IGluZGV4ZXMsIGFuZCBkb2luZyBh ICJtZXJnZSBqb2luIiBhZ2FpbnN0CiAgKiB0aGUgVElEIGxpc3RzIHRvIHNlZSB3aGljaCB0dXBs ZXMgZnJvbSBhdXhpbGlhcnkgaW5kZXggYXJlIG1pc3NpbmcgZnJvbSB0aGUKICAqIHRhcmdldCBp bmRleC4gIFRodXMgd2Ugd2lsbCBlbnN1cmUgdGhhdCBhbGwgdHVwbGVzIHZhbGlkIGFjY29yZGlu ZyB0byB0aGUKLSAqIHJlZmVyZW5jZSBzbmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LiBOb3RpY2Ug d2UgbmVlZCB0byBkbyBidWxrZGVsZXRlIGluIHRoZQorICogbGF0ZXN0IHNuYXBzaG90IGFyZSBp biB0aGUgaW5kZXguIE5vdGljZSB3ZSBuZWVkIHRvIGRvIGJ1bGtkZWxldGUgaW4gdGhlCiAgKiBw YXJ0aWN1bGFyIG9yZGVyOiBhdXhpbGlhcnkgZmlyc3QsIHRhcmdldCBsYXN0LgogICoKICAqIEJ1 aWxkaW5nIGEgdW5pcXVlIGluZGV4IHRoaXMgd2F5IGlzIHRyaWNreTogd2UgbWlnaHQgdHJ5IHRv IGluc2VydCBhCkBAIC0zNTcxLDEzICszNTcyLDE0IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogICoKICAqIEFsc28sIHNvbWUgYWN0aW9ucyB0byBjb25jdXJy ZW50IGRyb3AgdGhlIGF1eGlsaWFyeSBpbmRleCBhcmUgcGVyZm9ybWVkLgogICovCi12b2lkCi12 YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNu YXBzaG90IHNuYXBzaG90KQorVHJhbnNhY3Rpb25JZAordmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJ ZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkKQogewogCVJlbGF0aW9uCWhlYXBSZWxhdGlv biwKIAkJCQlpbmRleFJlbGF0aW9uLAogCQkJCWF1eEluZGV4UmVsYXRpb247CiAJSW5kZXhJbmZv ICAqaW5kZXhJbmZvOworCVRyYW5zYWN0aW9uSWQgbGltaXRYbWluOwogCUluZGV4VmFjdXVtSW5m byBpdmluZm8sIGF1eGl2aW5mbzsKIAlWYWxpZGF0ZUluZGV4U3RhdGUgc3RhdGUsIGF1eFN0YXRl OwogCU9pZAkJCXNhdmVfdXNlcmlkOwpAQCAtMzYyNyw4ICszNjI5LDEyIEBAIHZhbGlkYXRlX2lu ZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNob3Qgc25h cHNob3QpCiAJICogRmV0Y2ggaW5mbyBuZWVkZWQgZm9yIGluZGV4X2luc2VydC4gIChZb3UgbWln aHQgdGhpbmsgdGhpcyBzaG91bGQgYmUKIAkgKiBwYXNzZWQgaW4gZnJvbSBEZWZpbmVJbmRleCwg YnV0IGl0cyBjb3B5IGlzIGxvbmcgZ29uZSBkdWUgdG8gaGF2aW5nCiAJICogYmVlbiBidWlsdCBp biBhIHByZXZpb3VzIHRyYW5zYWN0aW9uLikKKwkgKgorCSAqIFdlIG1pZ2h0IG5lZWQgc25hcHNo b3QgZm9yIGluZGV4IGV4cHJlc3Npb25zIG9yIHByZWRpY2F0ZXMuCiAJICovCisJUHVzaEFjdGl2 ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJaW5kZXhJbmZvID0gQnVpbGRJ bmRleEluZm8oaW5kZXhSZWxhdGlvbik7CisJUG9wQWN0aXZlU25hcHNob3QoKTsKIAogCS8qIG1h cmsgYnVpbGQgaXMgY29uY3VycmVudCBqdXN0IGZvciBjb25zaXN0ZW5jeSAqLwogCWluZGV4SW5m by0+aWlfQ29uY3VycmVudCA9IHRydWU7CkBAIC0zNjY0LDYgKzM2NzAsOSBAQCB2YWxpZGF0ZV9p bmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNu YXBzaG90KQogCQkJCQkJCQkJCSAgIE5VTEwsIFRVUExFU09SVF9OT05FKTsKIAlhdXhTdGF0ZS5o dHVwcyA9IGF1eFN0YXRlLml0dXBzID0gYXV4U3RhdGUudHVwc19pbnNlcnRlZCA9IDA7CiAKKwkv KiB0dXBsZXNvcnRfYmVnaW5fZGF0dW0gbWF5IHJlcXVpcmUgY2F0YWxvZyBzbmFwc2hvdCAqLwor CUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwogCSh2b2lkKSBpbmRleF9idWxrX2RlbGV0 ZSgmYXV4aXZpbmZvLCBOVUxMLAogCQkJCQkJCSB2YWxpZGF0ZV9pbmRleF9jYWxsYmFjaywgJmF1 eFN0YXRlKTsKIAkvKiBJZiBhdXggaW5kZXggaXMgZW1wdHksIG1lcmdlIG1heSBiZSBza2lwcGVk ICovCkBAIC0zNjk4LDYgKzM3MDcsOSBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQg aW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCQkJCQkJCQkJCQlO VUxMLCBUVVBMRVNPUlRfTk9ORSk7CiAJc3RhdGUuaHR1cHMgPSBzdGF0ZS5pdHVwcyA9IHN0YXRl LnR1cHNfaW5zZXJ0ZWQgPSAwOwogCisJLyogdHVwbGVzb3J0X2JlZ2luX2RhdHVtIG1heSByZXF1 aXJlIGNhdGFsb2cgc25hcHNob3QgKi8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisK IAkvKiBhbWJ1bGtkZWxldGUgdXBkYXRlcyBwcm9ncmVzcyBtZXRyaWNzICovCiAJKHZvaWQpIGlu ZGV4X2J1bGtfZGVsZXRlKCZpdmluZm8sIE5VTEwsCiAJCQkJCQkJIHZhbGlkYXRlX2luZGV4X2Nh bGxiYWNrLCAmc3RhdGUpOwpAQCAtMzcxNywxOSArMzcyOSwyNCBAQCB2YWxpZGF0ZV9pbmRleChP aWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90 KQogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDMsIHByb2dyZXNzX2luZGV4 LCBwcm9ncmVzc192YWxzKTsKIAl9CiAJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KHN0YXRlLnR1cGxl c29ydCk7CisJLyogdHVwbGVzb3J0X3BlcmZvcm1zb3J0IG1heSByZXF1aXJlIGNhdGFsb2cgc25h cHNob3QgKi8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisKIAl0dXBsZXNvcnRfcGVy Zm9ybXNvcnQoYXV4U3RhdGUudHVwbGVzb3J0KTsKKwkvKiB0dXBsZXNvcnRfcGVyZm9ybXNvcnQg bWF5IHJlcXVpcmUgY2F0YWxvZyBzbmFwc2hvdCAqLworCUludmFsaWRhdGVDYXRhbG9nU25hcHNo b3QoKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJ LyoKIAkgKiBOb3cgbWVyZ2UgYm90aCBpbmRleGVzCiAJICovCiAJcGdzdGF0X3Byb2dyZXNzX3Vw ZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURYTUVSR0UpOwotCXRhYmxlX2luZGV4X3ZhbGlkYXRl X3NjYW4oaGVhcFJlbGF0aW9uLAotCQkJCQkJCSAgaW5kZXhSZWxhdGlvbiwKLQkJCQkJCQkgIGlu ZGV4SW5mbywKLQkJCQkJCQkgIHNuYXBzaG90LAotCQkJCQkJCSAgJnN0YXRlLAotCQkJCQkJCSAg JmF1eFN0YXRlKTsKKwlsaW1pdFhtaW4gPSB0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuKGhlYXBS ZWxhdGlvbiwKKwkJCQkJCQkJCQkgIGluZGV4UmVsYXRpb24sCisJCQkJCQkJCQkJICBpbmRleElu Zm8sCisJCQkJCQkJCQkJICAmc3RhdGUsCisJCQkJCQkJCQkJICAmYXV4U3RhdGUpOwogCiAJLyog VHVwbGUgc29ydCBjbG9zZWQgYnkgdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbiAqLwogCUFzc2Vy dChzdGF0ZS50dXBsZXNvcnQgPT0gTlVMTCAmJiBhdXhTdGF0ZS50dXBsZXNvcnQgPT0gTlVMTCk7 CkBAIC0zNzUyLDYgKzM3NjksOSBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5k 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 c0FjdGlvbiBhY3Rpb24pOwogCi0tIAoyLjQ4LjEKCg== --000000000000b0374806423c4f93 Content-Type: text/x-patch; charset="UTF-8"; name="v25-0010-Optimize-auxiliary-index-handling.patch" Content-Disposition: attachment; filename="v25-0010-Optimize-auxiliary-index-handling.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhaumwj62 RnJvbSA3NWMxYzg0NzZlNDc3MjI5ZjFiYTA0MGVjMmIzZmNhYWQ3ZDUyZGI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAzMCBEZWMgMjAyNCAxNjozNzoxMiArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI1IDEwLzEyXSBPcHRpbWl6ZSBhdXhpbGlhcnkgaW5kZXggaGFuZGxpbmcKTUlNRS1W ZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClNraXAgdW5uZWNlc3NhcnkgY29tcHV0YXRpb25z IGZvciBhdXhpbGlhcnkgaW5kaWNlcyBieToKLSBpbiB0aGUgaW5kZXjigJBpbnNlcnQgcGF0aCwg ZGV0ZWN0IGF1eGlsaWFyeSBpbmRleGVzIGFuZCBieXBhc3MgRGF0dW0gdmFsdWUgY29tcHV0YXRp b24KLSBzZXQgaW5kZXhVbmNoYW5nZWQ9ZmFsc2UgZm9yIGF1eGlsaWFyeSBpbmRpY2VzIHRvIGF2 b2lkIHJlZHVuZGFudCBjaGVja3MKClRoZXNlIG9wdGltaXphdGlvbnMgcmVkdWNlIG92ZXJoZWFk IGR1cmluZyBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMuCi0tLQogc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jICAgICAgICAgfCAxMSArKysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0luZGV4aW5nLmMgfCAxMSArKysrKysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBp bnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBiOTVkZGE0 MjdjNi4uNzU2MDdhMzRjZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTI5MzQsNiArMjkzNCwxNyBA 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 b24gKi8KLS0gCjIuNDguMQoK --000000000000b0374806423c4f93 Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0009-Track-and-drop-auxiliary-indexes-in-DROP-REINDEX.patch" Content-Disposition: attachment; filename="v25-0009-Track-and-drop-auxiliary-indexes-in-DROP-REINDEX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhaumwja3 RnJvbSAxYjljZDgyOTZmMTRhNWVhNzUyYTBlMWIyZWIxYzg5N2UyYjc4M2M4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDozNjozMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI1IDA5LzEyXSBUcmFjayBhbmQgZHJvcCBhdXhpbGlhcnkgaW5kZXhlcyBpbiBEUk9Q 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 ZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCAyODNjODdmNDMyNy4uYjk1ZGRhNDI3YzYgMTAwNjQ0 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 MjYzNCw3ICsyNjQ3LDggQEAgQnVpbGRJbmRleEluZm8oUmVsYXRpb24gaW5kZXgpCiAJCQkJCSAg IGZhbHNlLAogCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcsCiAJCQkJCSAg IGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUs Ci0JCQkJCSAgIGluZGV4LT5yZF9yZWwtPnJlbGFtID09IFNUSVJfQU1fT0lEIC8qIGF1eGlsaWFy eSBpZmYgU1RJUiAqLyk7CisJCQkJCSAgIGluZGV4LT5yZF9yZWwtPnJlbGFtID09IFNUSVJfQU1f T0lEIC8qIGF1eGlsaWFyeSBpZmYgU1RJUiAqLywKKwkJCQkJICAgSW52YWxpZE9pZCAvKiBhdXhp bGlhcnlfZm9yX2luZGV4X2lkIGlzIHNldCBvbmx5IGR1cmluZyBidWlsZCAqLyk7CiAKIAkvKiBm aWxsIGluIGF0dHJpYnV0ZSBudW1iZXJzICovCiAJZm9yIChpID0gMDsgaSA8IG51bUF0dHM7IGkr KykKQEAgLTI2OTUsNyArMjcwOSw4IEBAIEJ1aWxkRHVtbXlJbmRleEluZm8oUmVsYXRpb24gaW5k ZXgpCiAJCQkJCSAgIGZhbHNlLAogCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFyaXpp bmcsCiAJCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+ aW5kaXN1bmlxdWUsCi0JCQkJCSAgIGluZGV4LT5yZF9yZWwtPnJlbGFtID09IFNUSVJfQU1fT0lE IC8qIGF1eGlsaWFyeSBpZmYgU1RJUiAqLyk7CisJCQkJCSAgIGluZGV4LT5yZF9yZWwtPnJlbGFt ID09IFNUSVJfQU1fT0lEIC8qIGF1eGlsaWFyeSBpZmYgU1RJUiAqLywKKwkJCQkJICAgSW52YWxp ZE9pZCk7CiAKIAkvKiBmaWxsIGluIGF0dHJpYnV0ZSBudW1iZXJzICovCiAJZm9yIChpID0gMDsg aSA8IG51bUF0dHM7IGkrKykKQEAgLTM4NzAsNiArMzg4NSw3IEBAIHJlaW5kZXhfaW5kZXgoY29u c3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBpbmRleElkLAogCQkJCWhlYXBSZWxhdGlvbjsKIAlP aWQJCQloZWFwSWQ7CiAJT2lkCQkJc2F2ZV91c2VyaWQ7CisJT2lkCQkJanVua0F1eEluZGV4SWQ7 CiAJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKIAlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIAlJbmRl eEluZm8gICppbmRleEluZm87CkBAIC0zOTI2LDYgKzM5NDIsMTkgQEAgcmVpbmRleF9pbmRleChj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIGluZGV4SWQsCiAJCXBnc3RhdF9wcm9ncmVzc191 cGRhdGVfbXVsdGlfcGFyYW0oMiwgcHJvZ3Jlc3NfY29scywgcHJvZ3Jlc3NfdmFscyk7CiAJfQog CisJLyogQ2hlY2sgZm9yIHRoZSBhdXhpbGlhcnkgaW5kZXggZm9yIHRoYXQgaW5kZXgsIGl0IG5l ZWRzIHRvIGRyb3BwZWQgKi8KKwlqdW5rQXV4SW5kZXhJZCA9IGdldF9hdXhpbGlhcnlfaW5kZXgo aW5kZXhJZCk7CisJaWYgKE9pZElzVmFsaWQoanVua0F1eEluZGV4SWQpKQorCXsKKwkJT2JqZWN0 QWRkcmVzcyBvYmplY3Q7CisJCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOwor CQlvYmplY3Qub2JqZWN0SWQgPSBqdW5rQXV4SW5kZXhJZDsKKwkJb2JqZWN0Lm9iamVjdFN1Yklk ID0gMDsKKwkJcGVyZm9ybURlbGV0aW9uKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsCisJCQkJCQkJ CSBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFMIHwKKwkJCQkJCQkJIFBFUkZPUk1fREVMRVRJT05f UVVJRVRMWSk7CisJfQorCiAJLyoKIAkgKiBPcGVuIHRoZSB0YXJnZXQgaW5kZXggcmVsYXRpb24g YW5kIGdldCBhbiBleGNsdXNpdmUgbG9jayBvbiBpdCwgdG8KIAkgKiBlbnN1cmUgdGhhdCBubyBv bmUgZWxzZSBpcyB0b3VjaGluZyB0aGlzIHBhcnRpY3VsYXIgaW5kZXguCkBAIC00MjE0LDcgKzQy NDMsOCBAQCByZWluZGV4X3JlbGF0aW9uKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVs aWQsIGludCBmbGFncywKIHsKIAlSZWxhdGlvbglyZWw7CiAJT2lkCQkJdG9hc3RfcmVsaWQ7Ci0J TGlzdAkgICAqaW5kZXhJZHM7CisJTGlzdAkgICAqaW5kZXhJZHMsCisJCQkgICAqYXV4SW5kZXhJ ZHMgPSBOSUw7CiAJY2hhcgkJcGVyc2lzdGVuY2U7CiAJYm9vbAkJcmVzdWx0ID0gZmFsc2U7CiAJ TGlzdENlbGwgICAqaW5kZXhJZDsKQEAgLTQzMDMsMTMgKzQzMzMsMzAgQEAgcmVpbmRleF9yZWxh dGlvbihjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiAJZWxz ZQogCQlwZXJzaXN0ZW5jZSA9IHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZTsKIAorCWZvcmVh Y2goaW5kZXhJZCwgaW5kZXhJZHMpCisJeworCQlPaWQJCQlpbmRleE9pZCA9IGxmaXJzdF9vaWQo aW5kZXhJZCk7CisJCU9pZAkJCWluZGV4QW0gPSBnZXRfcmVsX3JlbGFtKGluZGV4T2lkKTsKKwor CQkvKiBBbGwgU1RJUiBpbmRleGVzIGFyZSBhdXhpbGlhcnkgaW5kZXhlcyAqLworCQlpZiAoaW5k ZXhBbSA9PSBTVElSX0FNX09JRCkKKwkJeworCQkJaWYgKGZsYWdzICYgUkVJTkRFWF9SRUxfU1VQ UFJFU1NfSU5ERVhfVVNFKQorCQkJCVJlbW92ZVJlaW5kZXhQZW5kaW5nKGluZGV4T2lkKTsKKwkJ CWF1eEluZGV4SWRzID0gbGFwcGVuZF9vaWQoYXV4SW5kZXhJZHMsIGluZGV4T2lkKTsKKwkJfQor CX0KKwogCS8qIFJlaW5kZXggYWxsIHRoZSBpbmRleGVzLiAqLwogCWkgPSAxOwogCWZvcmVhY2go aW5kZXhJZCwgaW5kZXhJZHMpCiAJewogCQlPaWQJCQlpbmRleE9pZCA9IGxmaXJzdF9vaWQoaW5k ZXhJZCk7CiAJCU9pZAkJCWluZGV4TmFtZXNwYWNlSWQgPSBnZXRfcmVsX25hbWVzcGFjZShpbmRl eE9pZCk7Ci0JCU9pZAkJCWluZGV4QW0gPSBnZXRfcmVsX3JlbGFtKGluZGV4T2lkKTsKKworCQkv KiBBdXhpbGlhcnkgaW5kZXhlcyBhcmUgZ29pbmcgdG8gYmUgZHJvcHBlZCBkdXJpbmcgbWFpbiBp bmRleCByZWJ1aWxkICovCisJCWlmIChsaXN0X21lbWJlcl9vaWQoYXV4SW5kZXhJZHMsIGluZGV4 T2lkKSkKKwkJCWNvbnRpbnVlOwogCiAJCS8qCiAJCSAqIFNraXAgYW55IGludmFsaWQgaW5kZXhl cyBvbiBhIFRPQVNUIHRhYmxlLiAgVGhlc2UgY2FuIG9ubHkgYmUKQEAgLTQzMzUsMTggKzQzODIs 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 aCBleHByZXNzaW9ucyBhbmQgcHJlZGljYXRlcy4gIFRoZQotLSAKMi40OC4xCgo= --000000000000b0374806423c4f93 Content-Type: text/x-patch; charset="UTF-8"; name="v25-0008-Use-auxiliary-indexes-for-concurrent-index-opera.patch" Content-Disposition: attachment; filename="v25-0008-Use-auxiliary-indexes-for-concurrent-index-opera.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhaumwjg5 RnJvbSBmNzc1YTZhMTVhYTZmMWY0MDA0NDJiZWYwOGVhMGMyNzIyODAyNDA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNTowMzoxMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI1IDA4LzEyXSBVc2UgYXV4aWxpYXJ5IGluZGV4ZXMgZm9yIGNvbmN1cnJlbnQgaW5k 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 dGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA5YjA5ZDA1 MmIwYy4uMjgzYzg3ZjQzMjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu 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 X2J1aWxkCiAgKgpAQCAtMjQ3MCw3ICsyNjMzLDggQEAgQnVpbGRJbmRleEluZm8oUmVsYXRpb24g aW5kZXgpCiAJCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc3JlYWR5LAogCQkJCQkgICBmYWxzZSwK IAkJCQkJICAgaW5kZXgtPnJkX2luZGFtLT5hbXN1bW1hcml6aW5nLAotCQkJCQkgICBpbmRleFN0 cnVjdC0+aW5kaXNleGNsdXNpb24gJiYgaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlKTsKKwkJCQkJ ICAgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uICYmIGluZGV4U3RydWN0LT5pbmRpc3VuaXF1 ZSwKKwkJCQkJICAgaW5kZXgtPnJkX3JlbC0+cmVsYW0gPT0gU1RJUl9BTV9PSUQgLyogYXV4aWxp YXJ5IGlmZiBTVElSICovKTsKIAogCS8qIGZpbGwgaW4gYXR0cmlidXRlIG51bWJlcnMgKi8KIAlm b3IgKGkgPSAwOyBpIDwgbnVtQXR0czsgaSsrKQpAQCAtMjUzMCw3ICsyNjk0LDggQEAgQnVpbGRE dW1teUluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCkKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlz cmVhZHksCiAJCQkJCSAgIGZhbHNlLAogCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFy aXppbmcsCi0JCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVj dC0+aW5kaXN1bmlxdWUpOworCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24gJiYg aW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlLAorCQkJCQkgICBpbmRleC0+cmRfcmVsLT5yZWxhbSA9 PSBTVElSX0FNX09JRCAvKiBhdXhpbGlhcnkgaWZmIFNUSVIgKi8pOwogCiAJLyogZmlsbCBpbiBh dHRyaWJ1dGUgbnVtYmVycyAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1BdHRzOyBpKyspCkBAIC0z MzA3LDEyICszNDcyLDIxIEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0 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 MiwxOCArMzQ5NiwyMSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlv 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 cyBjb21taXR0ZWQgZGVhZCBiZWZvcmUKQEAgLTMzNDEsMTIgKzM1MTgsMTQgQEAgSW5kZXhDaGVj a0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKiB0aGF0IG1pZ2h0IGNhcmUgYWJv dXQgdGhlbSBiZWZvcmUgd2UgbWFyayB0aGUgaW5kZXggdmFsaWQuKQogICoKICAqIHZhbGlkYXRl X2luZGV4KCkgd29ya3MgYnkgZmlyc3QgZ2F0aGVyaW5nIGFsbCB0aGUgVElEcyBjdXJyZW50bHkg aW4gdGhlCi0gKiBpbmRleCwgdXNpbmcgYSBidWxrZGVsZXRlIGNhbGxiYWNrIHRoYXQganVzdCBz dG9yZXMgdGhlIFRJRHMgYW5kIGRvZXNuJ3QKKyAqIGluZGV4ZXMsIHVzaW5nIGEgYnVsa2RlbGV0 ZSBjYWxsYmFjayB0aGF0IGp1c3Qgc3RvcmVzIHRoZSBUSURzIGFuZCBkb2Vzbid0CiAgKiBldmVy IHNheSAiZGVsZXRlIGl0Ii4gIChUaGlzIHNob3VsZCBiZSBmYXN0ZXIgdGhhbiBhIHBsYWluIGlu ZGV4c2NhbjsKICAqIGFsc28sIG5vdCBhbGwgaW5kZXggQU1zIHN1cHBvcnQgZnVsbC1pbmRleCBp bmRleHNjYW4uKSAgVGhlbiB3ZSBzb3J0IHRoZQotICogVElEcywgYW5kIGZpbmFsbHkgc2NhbiB0 aGUgdGFibGUgZG9pbmcgYSAibWVyZ2Ugam9pbiIgYWdhaW5zdCB0aGUgVElEIGxpc3QKLSAqIHRv IHNlZSB3aGljaCB0dXBsZXMgYXJlIG1pc3NpbmcgZnJvbSB0aGUgaW5kZXguICBUaHVzIHdlIHdp bGwgZW5zdXJlIHRoYXQKLSAqIGFsbCB0dXBsZXMgdmFsaWQgYWNjb3JkaW5nIHRvIHRoZSByZWZl cmVuY2Ugc25hcHNob3QgYXJlIGluIHRoZSBpbmRleC4KKyAqIFRJRHMgb2YgYm90aCBhdXhpbGlh cnkgYW5kIHRhcmdldCBpbmRleGVzLCBhbmQgZG9pbmcgYSAibWVyZ2Ugam9pbiIgYWdhaW5zdAor ICogdGhlIFRJRCBsaXN0cyB0byBzZWUgd2hpY2ggdHVwbGVzIGZyb20gYXV4aWxpYXJ5IGluZGV4 IGFyZSBtaXNzaW5nIGZyb20gdGhlCisgKiB0YXJnZXQgaW5kZXguICBUaHVzIHdlIHdpbGwgZW5z dXJlIHRoYXQgYWxsIHR1cGxlcyB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlCisgKiByZWZlcmVuY2Ug c25hcHNob3QgYXJlIGluIHRoZSBpbmRleC4gTm90aWNlIHdlIG5lZWQgdG8gZG8gYnVsa2RlbGV0 ZSBpbiB0aGUKKyAqIHBhcnRpY3VsYXIgb3JkZXI6IGF1eGlsaWFyeSBmaXJzdCwgdGFyZ2V0IGxh c3QuCiAgKgogICogQnVpbGRpbmcgYSB1bmlxdWUgaW5kZXggdGhpcyB3YXkgaXMgdHJpY2t5OiB3 ZSBtaWdodCB0cnkgdG8gaW5zZXJ0IGEKICAqIHR1cGxlIHRoYXQgaXMgYWxyZWFkeSBkZWFkIG9y IGlzIGluIHByb2Nlc3Mgb2YgYmVpbmcgZGVsZXRlZCwgYW5kIHdlCkBAIC0zMzY0LDIyICszNTQz LDI2IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogbm90 IGluZGV4KS4gIFRoZW4gd2UgbWFyayB0aGUgaW5kZXggImluZGlzdmFsaWQiIGFuZCBjb21taXQu ICBTdWJzZXF1ZW50CiAgKiB0cmFuc2FjdGlvbnMgd2lsbCBiZSBhYmxlIHRvIHVzZSBpdCBmb3Ig cXVlcmllcy4KICAqCi0gKiBEb2luZyB0d28gZnVsbCB0YWJsZSBzY2FucyBpcyBhIGJydXRlLWZv cmNlIHN0cmF0ZWd5LiAgV2UgY291bGQgdHJ5IHRvIGJlCi0gKiBjbGV2ZXJlciwgZWcgc3Rvcmlu ZyBuZXcgdHVwbGVzIGluIGEgc3BlY2lhbCBhcmVhIG9mIHRoZSB0YWJsZSAocGVyaGFwcwotICog bWFraW5nIHRoZSB0YWJsZSBhcHBlbmQtb25seSBieSBzZXR0aW5nIHVzZV9mc20pLiAgSG93ZXZl ciB0aGF0IHdvdWxkCi0gKiBhZGQgeWV0IG1vcmUgbG9ja2luZyBpc3N1ZXMuCisgKiBBbHNvLCBz b21lIGFjdGlvbnMgdG8gY29uY3VycmVudCBkcm9wIHRoZSBhdXhpbGlhcnkgaW5kZXggYXJlIHBl cmZvcm1lZC4KICAqLwogdm9pZAotdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4 SWQsIFNuYXBzaG90IHNuYXBzaG90KQordmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGlu ZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIHsKIAlSZWxhdGlvbglo ZWFwUmVsYXRpb24sCi0JCQkJaW5kZXhSZWxhdGlvbjsKKwkJCQlpbmRleFJlbGF0aW9uLAorCQkJ CWF1eEluZGV4UmVsYXRpb247CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwotCUluZGV4VmFjdXVt SW5mbyBpdmluZm87Ci0JVmFsaWRhdGVJbmRleFN0YXRlIHN0YXRlOworCUluZGV4VmFjdXVtSW5m byBpdmluZm8sIGF1eGl2aW5mbzsKKwlWYWxpZGF0ZUluZGV4U3RhdGUgc3RhdGUsIGF1eFN0YXRl OwogCU9pZAkJCXNhdmVfdXNlcmlkOwogCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJ c2F2ZV9uZXN0bGV2ZWw7CisJLyogVXNlIDgwJSBvZiBtYWludGVuYW5jZV93b3JrX21lbSB0byB0 YXJnZXQgaW5kZXggc29ydGluZyBhbmQKKwkgKiAxMCUgcmVzdCBmb3IgYXV4aWxpYXJ5LgorCSAq CisJICogUmVzdCAxMCUgd2lsbCBiZSB1c2VkIGZvciB0dXBsZXN0b3JlIGxhdGVyLiAqLworCWlu dDY0CQltYWluX3dvcmtfbWVtX3BhcnQgPSAoaW50NjQpIG1haW50ZW5hbmNlX3dvcmtfbWVtICog OCAvIDEwOworCWludAkJCWF1eF93b3JrX21lbV9wYXJ0ID0gbWFpbnRlbmFuY2Vfd29ya19tZW0g LyAxMDsKIAogCXsKIAkJY29uc3QgaW50CXByb2dyZXNzX2luZGV4W10gPSB7CkBAIC0zNDEyLDYg KzM1OTUsNyBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNo b3Qgc25hcHNob3QpCiAJUmVzdHJpY3RTZWFyY2hQYXRoKCk7CiAKIAlpbmRleFJlbGF0aW9uID0g aW5kZXhfb3BlbihpbmRleElkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwlhdXhJbmRleFJlbGF0aW9u ID0gaW5kZXhfb3BlbihhdXhJbmRleElkLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAogCS8qCiAJICog RmV0Y2ggaW5mbyBuZWVkZWQgZm9yIGluZGV4X2luc2VydC4gIChZb3UgbWlnaHQgdGhpbmsgdGhp cyBzaG91bGQgYmUKQEAgLTM0MzYsMTUgKzM2MjAsNTUgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhl 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 X2luc2VydGVkID0gMDsKIApAQCAtMzQ2NywyNyArMzY5MSwzMCBAQCB2YWxpZGF0ZV9pbmRleChP aWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJCXBnc3RhdF9wcm9n cmVzc191cGRhdGVfbXVsdGlfcGFyYW0oMywgcHJvZ3Jlc3NfaW5kZXgsIHByb2dyZXNzX3ZhbHMp OwogCX0KIAl0dXBsZXNvcnRfcGVyZm9ybXNvcnQoc3RhdGUudHVwbGVzb3J0KTsKKwl0dXBsZXNv cnRfcGVyZm9ybXNvcnQoYXV4U3RhdGUudHVwbGVzb3J0KTsKIAogCS8qCi0JICogTm93IHNjYW4g dGhlIGhlYXAgYW5kICJtZXJnZSIgaXQgd2l0aCB0aGUgaW5kZXgKKwkgKiBOb3cgbWVyZ2UgYm90 aCBpbmRleGVzCiAJICovCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURB VEVfVEFCTEVTQ0FOKTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFU RV9JRFhNRVJHRSk7CiAJdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbihoZWFwUmVsYXRpb24sCiAJ CQkJCQkJICBpbmRleFJlbGF0aW9uLAogCQkJCQkJCSAgaW5kZXhJbmZvLAogCQkJCQkJCSAgc25h cHNob3QsCi0JCQkJCQkJICAmc3RhdGUpOworCQkJCQkJCSAgJnN0YXRlLAorCQkJCQkJCSAgJmF1 eFN0YXRlKTsKIAotCS8qIERvbmUgd2l0aCB0dXBsZXNvcnQgb2JqZWN0ICovCi0JdHVwbGVzb3J0 X2VuZChzdGF0ZS50dXBsZXNvcnQpOworCS8qIFR1cGxlIHNvcnQgY2xvc2VkIGJ5IHRhYmxlX2lu ZGV4X3ZhbGlkYXRlX3NjYW4gKi8KKwlBc3NlcnQoc3RhdGUudHVwbGVzb3J0ID09IE5VTEwgJiYg YXV4U3RhdGUudHVwbGVzb3J0ID09IE5VTEwpOwogCiAJLyogTWFrZSBzdXJlIHRvIHJlbGVhc2Ug cmVzb3VyY2VzIGNhY2hlZCBpbiBpbmRleEluZm8gKGlmIG5lZWRlZCkuICovCiAJaW5kZXhfaW5z ZXJ0X2NsZWFudXAoaW5kZXhSZWxhdGlvbiwgaW5kZXhJbmZvKTsKIAogCWVsb2coREVCVUcyLAot CQkgInZhbGlkYXRlX2luZGV4IGZvdW5kICUuMGYgaGVhcCB0dXBsZXMsICUuMGYgaW5kZXggdHVw bGVzOyBpbnNlcnRlZCAlLjBmIG1pc3NpbmcgdHVwbGVzIiwKLQkJIHN0YXRlLmh0dXBzLCBzdGF0 ZS5pdHVwcywgc3RhdGUudHVwc19pbnNlcnRlZCk7CisJCSAidmFsaWRhdGVfaW5kZXggZmV0Y2hl ZCAlLjBmIGhlYXAgdHVwbGVzLCAlLjBmIGluZGV4IHR1cGxlczsiCisJCQkJCQkiICUuMGYgYXV4 IGluZGV4IHR1cGxlczsgaW5zZXJ0ZWQgJS4wZiBtaXNzaW5nIHR1cGxlcyIsCisJCSBzdGF0ZS5o dHVwcywgc3RhdGUuaXR1cHMsIGF1eFN0YXRlLml0dXBzLCBzdGF0ZS50dXBzX2luc2VydGVkKTsK IAogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rp b25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CkBAIC0zNDk2LDYg KzM3MjMsNyBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNo b3Qgc25hcHNob3QpCiAJU2V0VXNlcklkQW5kU2VjQ29udGV4dChzYXZlX3VzZXJpZCwgc2F2ZV9z ZWNfY29udGV4dCk7CiAKIAkvKiBDbG9zZSByZWxzLCBidXQga2VlcCBsb2NrcyAqLworCWluZGV4 X2Nsb3NlKGF1eEluZGV4UmVsYXRpb24sIE5vTG9jayk7CiAJaW5kZXhfY2xvc2UoaW5kZXhSZWxh dGlvbiwgTm9Mb2NrKTsKIAl0YWJsZV9jbG9zZShoZWFwUmVsYXRpb24sIE5vTG9jayk7CiB9CkBA IC0zNTU2LDYgKzM3ODQsMTEgQEAgaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKE9pZCBpbmRleElkLCBJ bmRleFN0YXRlRmxhZ3NBY3Rpb24gYWN0aW9uKQogCQkJQXNzZXJ0KCFpbmRleEZvcm0tPmluZGlz dmFsaWQpOwogCQkJaW5kZXhGb3JtLT5pbmRpc3ZhbGlkID0gdHJ1ZTsKIAkJCWJyZWFrOworCQlj YXNlIElOREVYX0RST1BfQ0xFQVJfUkVBRFk6CisJCQkvKiBDbGVhciBpbmRpc3JlYWR5IGR1cmlu ZyBhIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgc2VxdWVuY2UgKi8KKwkJCUFzc2VydCghaW5k ZXhGb3JtLT5pbmRpc3ZhbGlkKTsKKwkJCWluZGV4Rm9ybS0+aW5kaXNyZWFkeSA9IGZhbHNlOwor CQkJYnJlYWs7CiAJCWNhc2UgSU5ERVhfRFJPUF9DTEVBUl9WQUxJRDoKIAogCQkJLyoKQEAgLTM4 MjcsNiArNDA2MCwxMyBAQCByZWluZGV4X2luZGV4KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBP aWQgaW5kZXhJZCwKIAkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25TdHJhdHMgPSBOVUxMOwogCX0K IAorCS8qIEF1eGlsaWFyeSBpbmRleGVzIGFyZSBub3QgYWxsb3dlZCB0byBiZSByZWJ1aWx0ICov CisJaWYgKGluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KQorCQllcmVwb3J0KEVSUk9SLAorCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1zZygicmVpbmRl eCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlc1wiIG5vdCBzdXBwb3J0ZWQiLAorCQkJCQlSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShpUmVsKSkpKTsKKwogCS8qIFN1cHByZXNzIHVzZSBvZiB0aGUgdGFy Z2V0IGluZGV4IHdoaWxlIHJlYnVpbGRpbmcgaXQgKi8KIAlTZXRSZWluZGV4UHJvY2Vzc2luZyho ZWFwSWQsIGluZGV4SWQpOwogCkBAIC00MDY5LDYgKzQzMDksNyBAQCByZWluZGV4X3JlbGF0aW9u KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsaWQsIGludCBmbGFncywKIAl7CiAJCU9p ZAkJCWluZGV4T2lkID0gbGZpcnN0X29pZChpbmRleElkKTsKIAkJT2lkCQkJaW5kZXhOYW1lc3Bh Y2VJZCA9IGdldF9yZWxfbmFtZXNwYWNlKGluZGV4T2lkKTsKKwkJT2lkCQkJaW5kZXhBbSA9IGdl dF9yZWxfcmVsYW0oaW5kZXhPaWQpOwogCiAJCS8qCiAJCSAqIFNraXAgYW55IGludmFsaWQgaW5k ZXhlcyBvbiBhIFRPQVNUIHRhYmxlLiAgVGhlc2UgY2FuIG9ubHkgYmUKQEAgLTQwOTQsNiArNDMz NSwxOCBAQCByZWluZGV4X3JlbGF0aW9uKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVs 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 IG9yaWdpbmFsCiAtLSBkZWZpbml0aW9ucy4KLS0gCjIuNDguMQoK --000000000000b0374806423c4f93 Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0004-Support-snapshot-resets-in-parallel-concurrent-i.patch" Content-Disposition: attachment; filename="v25-0004-Support-snapshot-resets-in-parallel-concurrent-i.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhaumwjr8 RnJvbSBhNjNkM2I3NGQwNGU2OTA0YjEyZDk5OGExZWYzYjE4ODdmNmIyZDY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxIEphbiAyMDI1IDE1OjI1OjIwICswMTAwClN1YmplY3Q6IFtQ QVRDSCB2MjUgMDQvMTJdIFN1cHBvcnQgc25hcHNob3QgcmVzZXRzIGluIHBhcmFsbGVsIGNvbmN1 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 ZGV4LmMKaW5kZXggZjUwMjIxOTMwZmQuLjMyYjdlNjMxMWViIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBA IC0xNTMzLDcgKzE1MzMsNyBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxh dGlvbklkLAogCWluZGV4X2J1aWxkKGhlYXBSZWwsIGluZGV4UmVsYXRpb24sIGluZGV4SW5mbywg ZmFsc2UsIHRydWUpOwogCiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwotCUFzc2VydCgo aW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUpIHx8 ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoaW5kZXhJbmZv LT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJ LyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMg Ki8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlU2Vxc2Nhbi5jCmluZGV4IDk0MDQ3ZDI5NDMwLi5mMTYyODRkNGQwZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC0zNzEsNyArMzcxLDggQEAgRXhlY1NlcVNjYW5Jbml0aWFs aXplRFNNKFNlcVNjYW5TdGF0ZSAqbm9kZSwKIAlwc2NhbiA9IHNobV90b2NfYWxsb2NhdGUocGN4 dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4pOwogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl KG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkJICBwc2NhbiwKLQkJCQkJCQkJ ICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKKwkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90LAor CQkJCQkJCQkgIGZhbHNlKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIG5vZGUtPnNzLnBz LnBsYW4tPnBsYW5fbm9kZV9pZCwgcHNjYW4pOwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVz YyA9CiAJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRp b24sIHBzY2FuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKaW5kZXggOGUxYTkxOGYxMzAuLjY4 ZWE5ODQwNWJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYwpAQCAtMzUzLDE0ICszNTMsNiBA QCBHZXRUcmFuc2FjdGlvblNuYXBzaG90KHZvaWQpCiBTbmFwc2hvdAogR2V0TGF0ZXN0U25hcHNo b3Qodm9pZCkKIHsKLQkvKgotCSAqIFdlIG1pZ2h0IGJlIGFibGUgdG8gcmVsYXggdGhpcywgYnV0 IG5vdGhpbmcgdGhhdCBjb3VsZCBvdGhlcndpc2Ugd29yawotCSAqIG5lZWRzIGl0LgotCSAqLwot CWlmIChJc0luUGFyYWxsZWxNb2RlKCkpCi0JCWVsb2coRVJST1IsCi0JCQkgImNhbm5vdCB1cGRh dGUgU2Vjb25kYXJ5U25hcHNob3QgZHVyaW5nIGEgcGFyYWxsZWwgb3BlcmF0aW9uIik7Ci0KIAkv KgogCSAqIFNvIGZhciB0aGVyZSBhcmUgbm8gY2FzZXMgcmVxdWlyaW5nIHN1cHBvcnQgZm9yIEdl dExhdGVzdFNuYXBzaG90KCkKIAkgKiBkdXJpbmcgbG9naWNhbCBkZWNvZGluZywgYnV0IGl0IHdv dWxkbid0IGJlIGhhcmQgdG8gYWRkIGlmIHJlcXVpcmVkLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvYWNjZXNzL3BhcmFsbGVsLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaAppbmRl eCBmMzdiZTZkNTY5MC4uYTczNjJmN2I0M2IgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9wYXJhbGxlbC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCkBAIC0yNiw2 ICsyNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsV29ya2VySW5mbwogewogCUJhY2tncm91 bmRXb3JrZXJIYW5kbGUgKmJnd2hhbmRsZTsKIAlzaG1fbXFfaGFuZGxlICplcnJvcl9tcWg7CisJ Ym9vbAkJICAqc25hcHNob3RfcmVzdG9yZWQ7CiB9IFBhcmFsbGVsV29ya2VySW5mbzsKIAogdHlw ZWRlZiBzdHJ1Y3QgUGFyYWxsZWxDb250ZXh0CkBAIC02NSw3ICs2Niw3IEBAIGV4dGVybiB2b2lk IEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIHZv aWQgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKIGV4dGVy biB2b2lkIFJlaW5pdGlhbGl6ZVBhcmFsbGVsV29ya2VycyhQYXJhbGxlbENvbnRleHQgKnBjeHQs IGludCBud29ya2Vyc190b19sYXVuY2gpOwogZXh0ZXJuIHZvaWQgTGF1bmNoUGFyYWxsZWxXb3Jr ZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7Ci1leHRlcm4gdm9pZCBXYWl0Rm9yUGFyYWxsZWxX b3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKK2V4dGVybiB2b2lkIFdhaXRG b3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQsIGJvb2wgd2Fp dF9mb3Jfc25hcHNob3QpOwogZXh0ZXJuIHZvaWQgV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvRmlu aXNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gdm9pZCBEZXN0cm95UGFyYWxsZWxD b250ZXh0KFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gYm9vbCBQYXJhbGxlbENvbnRl eHRBY3RpdmUodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAppbmRleCBiNWUwZmIzODZjMC4uNTA0NDFj NThjZWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAtODIsNiArODIsNyBAQCB0eXBlZGVmIHN0cnVj dCBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhCiAJUmVsRmlsZUxvY2F0b3IgcGhzX2xvY2F0b3I7 IC8qIHBoeXNpY2FsIHJlbGF0aW9uIHRvIHNjYW4gKi8KIAlib29sCQlwaHNfc3luY3NjYW47CS8q IHJlcG9ydCBsb2NhdGlvbiB0byBzeW5jc2NhbiBsb2dpYz8gKi8KIAlib29sCQlwaHNfc25hcHNo b3RfYW55OwkvKiBTbmFwc2hvdEFueSwgbm90IHBoc19zbmFwc2hvdF9kYXRhPyAqLworCWJvb2wJ CXBoc19yZXNldF9zbmFwc2hvdDsgLyogdXNlIFNPX1JFU0VUX1NOQVBTSE9UPyAqLwogCVNpemUJ CXBoc19zbmFwc2hvdF9vZmY7CS8qIGRhdGEgZm9yIHNuYXBzaG90ICovCiB9IFBhcmFsbGVsVGFi bGVTY2FuRGVzY0RhdGE7CiB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRh ICpQYXJhbGxlbFRhYmxlU2NhbkRlc2M7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv dGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCA3MWFmMTRkMWMz MS4uNjEzNjE1Yzc4Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMTE0MCw3ICsxMTQwLDggQEAg ZXh0ZXJuIFNpemUgdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJlbGF0aW9uIHJlbCwgU25h cHNob3Qgc25hcHNob3QpOwogICovCiBleHRlcm4gdm9pZCB0YWJsZV9wYXJhbGxlbHNjYW5faW5p dGlhbGl6ZShSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkRlc2Mg cHNjYW4sCi0JCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCk7CisJCQkJCQkJCQkJICBTbmFw c2hvdCBzbmFwc2hvdCwKKwkJCQkJCQkJCQkgIGJvb2wgcmVzZXRfc25hcHNob3QpOwogCiAvKgog ICogQmVnaW4gYSBwYXJhbGxlbCBzY2FuLiBgcHNjYW5gIG5lZWRzIHRvIGhhdmUgYmVlbiBpbml0 aWFsaXplZCB3aXRoCkBAIC0xNzYyLDkgKzE3NjMsOSBAQCB0YWJsZV9zY2FuX2FuYWx5emVfbmV4 dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKICAq IFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0sIGl0IG1pZ2h0IG5lZWQg dG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIuCiAgKgotICogSW4gY2Fz ZSBvZiBub24tdW5pcXVlIGluZGV4IGFuZCBub24tcGFyYWxsZWwgY29uY3VycmVudCBidWlsZAot ICogU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhlIHNjYW4uIFRoYXQgbGVhZHMg Zm9yIGNoYW5naW5nIHNuYXBzaG90cwotICogb24gdGhlIGZseSB0byBhbGxvdyB4bWluIGhvcml6 b24gcHJvcGFnYXRlLgorICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGNvbmN1cnJlbnQgIGluZGV4 IGJ1aWxkIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGFwcGxpZWQKKyAqIGZvciB0aGUgc2Nhbi4gVGhh dCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNob3RzIG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1pbgor ICogaG9yaXpvbiBwcm9wYWdhdGUuCiAgKi8KIHN0YXRpYyBpbmxpbmUgZG91YmxlCiB0YWJsZV9p bmRleF9idWlsZF9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91 dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRf c25hcHNob3RzLm91dAppbmRleCA5NDhkMTIzMmFhMC4uNTk1YTQwMDBjZTAgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25h cHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0 ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTE3LDYgKzE3LDEyIEBAIFNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90 cycsICdub3RpY2UnCiAgCiAoMSByb3cpCiAKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFj aCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7CisgaW5qZWN0aW9u X3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK IENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3Nu YXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CiBJTlNFUlQgSU5UTyBjaWNfcmVzZXRf c25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgcyhp KTsKQEAgLTcyLDMwICs3OCw0NSBAQCBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogLS0gVGhlIHNhbWUgaW4gcGFyYWxs ZWwgbW9kZQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29y a2Vycz0yKTsKKy0tIERldGFjaCB0byBrZWVwIHRlc3Qgc3RhYmxlLCBzaW5jZSBwYXJhbGxlbCB3 b3JrZXIgbWF5IGNvbXBsZXRlIHNjYW4gYmVmb3JlIGxlYWRlcgorU0VMRUNUIGluamVjdGlvbl9w b2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJyk7CisgaW5q ZWN0aW9uX3BvaW50c19kZXRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoaSk7CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2Fu X2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3Nu YXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlh bGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVs c2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKIE5PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3Ry YXRfcmVzZXRfc25hcHNob3RzCi1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFw c2hvdHMKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFw X3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNf cmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJs ZV9ub19wYXJhbSgpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1AgSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5U TFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpIERFU0MgTlVMTFMgTEFTVCk7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2Fu X2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3Nu YXAudGJsIFVTSU5HIEJSSU4oaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJP UCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBTQ0hFTUEgY2lj X3Jlc2V0X3NuYXAgQ0FTQ0FERTsKIE5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMyBvdGhlciBv YmplY3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3Fs L2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbAppbmRleCA1MDcyNTM1YjM1NS4uMjk0MWFh N2FlMzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwv Y2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApAQCAtMyw3ICszLDcgQEAgQ1JFQVRF IEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0 X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nh bl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNl Jyk7Ci0KK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfcGFyYWxsZWxzY2Fu X2luaXRpYWxpemUnLCAnbm90aWNlJyk7CiAKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7 CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGlu dCk7CkBAIC01Myw2ICs1Myw5IEBAIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKIC0tIFRoZSBzYW1lIGluIHBhcmFsbGVsIG1vZGUKIEFMVEVSIFRBQkxFIGNpY19y ZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9Mik7CiAKKy0tIERldGFjaCB0byBr ZWVwIHRlc3Qgc3RhYmxlLCBzaW5jZSBwYXJhbGxlbCB3b3JrZXIgbWF5IGNvbXBsZXRlIHNjYW4g YmVmb3JlIGxlYWRlcgorU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0 X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJyk7CisKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CkBAIC04Myw0ICs4Niw0IEBAIERST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKIAogRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FE RTsKIAotRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKK0RST1AgRVhURU5TSU9OIGlu amVjdGlvbl9wb2ludHM7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotLSAKMi40OC4xCgo= --000000000000b0374806423c4f93 Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0006-Add-STIR-access-method-and-flags-related-to-auxi.patch" Content-Disposition: attachment; filename="v25-0006-Add-STIR-access-method-and-flags-related-to-auxi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhaumwjk6 RnJvbSAwN2RmNDVhNmQyZWMxMzAxZjM4YjZiYzcxZGUwMzM5YWY1ZmJhOTc5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAyMSBEZWMgMjAyNCAxODozNjoxMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI1IDA2LzEyXSBBZGQgU1RJUiBhY2Nlc3MgbWV0aG9kIGFuZCBmbGFncyByZWxhdGVk 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 YyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCAwNjY5NDA3YmUwYy4uOWIwOWQw NTJiMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTM0MzQsNiArMzQzNCw3IEBAIHZhbGlkYXRlX2lu 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 aXN0IG9mIGFjY2VzcyBtZXRob2RzCi0tIAoyLjQ4LjEKCg== --000000000000b0374806423c4f93 Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0003-Reset-snapshots-periodically-in-non-unique-non-p.patch" Content-Disposition: attachment; filename="v25-0003-Reset-snapshots-periodically-in-non-unique-non-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhaumwju9 RnJvbSBmNDg3MWNjZmU4OTU2NjQ4NzNlNDc4OGI5ZTI4ZTE2NDc5MzE4NmEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAyMToxMDoyMyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI1IDAzLzEyXSBSZXNldCBzbmFwc2hvdHMgcGVyaW9kaWNhbGx5IGluIG5vbi11bmlx 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 ICAgIHwgIDMxICsrKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAg ICAgICAgIHwgIDE0ICstLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAg ICAgICAgIHwgICA5ICsrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgICAg ICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCAgICAgICAgICAgICAg ICAgIHwgIDI4ICsrKystCiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZp bGUgICAgfCAgIDIgKy0KIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAg ICAgICB8IDEwNSArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9tZXNvbi5idWlsZCB8ICAgMSArCiAuLi4vc3FsL2NpY19yZXNldF9zbmFwc2hvdHMu c3FsICAgICAgICAgICAgICAgfCAgODYgKysrKysrKysrKysrKysKIDIwIGZpbGVzIGNoYW5nZWQs IDQyOCBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBz aG90cy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9h bWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMK aW5kZXggMjQ0NWYwMDE3MDAuLjI1YTMyYTEzNTY1IDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hl Y2svdmVyaWZ5X25idHJlZS5jCisrKyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMK QEAgLTU1OCw3ICs1NTgsOCBAQCBidF9jaGVja19ldmVyeV9sZXZlbChSZWxhdGlvbiByZWwsIFJl bGF0aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtleXNwYWNlLAogCQkJCQkJCQkJIDAsIC8qIG51bWJl ciBvZiBrZXlzICovCiAJCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJCQkJCQkJCSB0 cnVlLAkvKiBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCQkgdHJ1ZSk7IC8q IHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIHRydWUsIC8qIHN5bmNzY2FuIE9LPyAqLworCQkJ CQkJCQkJIGZhbHNlKTsKIAogCQkvKgogCQkgKiBTY2FuIHdpbGwgYmVoYXZlIGFzIHRoZSBmaXJz dCBzY2FuIG9mIGEgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWQpkaWZmIC0tZ2l0IGEvY29udHJp Yi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0 dXBsZS5jCmluZGV4IGI1ZGU2OGI3MjMyLi4zMzFiNGYyYjkxNiAxMDA2NDQKLS0tIGEvY29udHJp Yi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCisrKyBiL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdz dGF0dHVwbGUuYwpAQCAtMzM1LDcgKzMzNSw3IEBAIHBnc3RhdF9oZWFwKFJlbGF0aW9uIHJlbCwg RnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAJCQkJIGVycm1zZygib25seSBoZWFwIEFNIGlzIHN1 cHBvcnRlZCIpKSk7CiAKIAkvKiBEaXNhYmxlIHN5bmNzY2FuIGJlY2F1c2Ugd2UgYXNzdW1lIHdl IHNjYW4gZnJvbSBibG9jayB6ZXJvIHVwd2FyZHMgKi8KLQlzY2FuID0gdGFibGVfYmVnaW5zY2Fu X3N0cmF0KHJlbCwgU25hcHNob3RBbnksIDAsIE5VTEwsIHRydWUsIGZhbHNlKTsKKwlzY2FuID0g dGFibGVfYmVnaW5zY2FuX3N0cmF0KHJlbCwgU25hcHNob3RBbnksIDAsIE5VTEwsIHRydWUsIGZh bHNlLCBmYWxzZSk7CiAJaHNjYW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOwogCiAJSW5pdERpcnR5 U25hcHNob3QoU25hcHNob3REaXJ0eSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggN2ZmNzQ2 N2U0NjIuLjE4NmVkZDBkMjI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0xMjE2LDExICsx MjE2LDEyIEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJ bmZvICppbmRleEluZm8pCiAJCXN0YXRlLT5ic19zb3J0c3RhdGUgPQogCQkJdHVwbGVzb3J0X2Jl Z2luX2luZGV4X2JyaW4obWFpbnRlbmFuY2Vfd29ya19tZW0sIGNvb3JkaW5hdGUsCiAJCQkJCQkJ CQkgICBUVVBMRVNPUlRfTk9ORSk7Ci0KKwkJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwog CQkvKiBzY2FuIHRoZSByZWxhdGlvbiBhbmQgbWVyZ2UgcGVyLXdvcmtlciByZXN1bHRzICovCiAJ CXJlbHR1cGxlcyA9IF9icmluX3BhcmFsbGVsX21lcmdlKHN0YXRlKTsKIAogCQlfYnJpbl9lbmRf cGFyYWxsZWwoc3RhdGUtPmJzX2xlYWRlciwgc3RhdGUpOworCQlBc3NlcnQoIWluZGV4SW5mby0+ aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJ fQogCWVsc2UJCQkJCQkvKiBubyBwYXJhbGxlbCBpbmRleCBidWlsZCAqLwogCXsKQEAgLTEyMzMs NiArMTIzNCw3IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5k ZXhJbmZvICppbmRleEluZm8pCiAJCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4o aGVhcCwgaW5kZXgsIGluZGV4SW5mbywgZmFsc2UsIHRydWUsCiAJCQkJCQkJCQkJICAgYnJpbmJ1 aWxkQ2FsbGJhY2ssIHN0YXRlLCBOVUxMKTsKIAorCQlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90 KCk7CiAJCS8qCiAJCSAqIHByb2Nlc3MgdGhlIGZpbmFsIGJhdGNoCiAJCSAqCkBAIC0xMjUyLDYg KzEyNTQsNyBAQCBicmluYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4 SW5mbyAqaW5kZXhJbmZvKQogCQlicmluX2ZpbGxfZW1wdHlfcmFuZ2VzKHN0YXRlLAogCQkJCQkJ CSAgIHN0YXRlLT5ic19jdXJyUmFuZ2VTdGFydCwKIAkJCQkJCQkgICBzdGF0ZS0+YnNfbWF4UmFu Z2VTdGFydCk7CisJCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2Fj dGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAKIAkvKiByZWxlYXNlIHJlc291cmNl cyAqLwpAQCAtMjM3NCw2ICsyMzc3LDcgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxk U3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCVdhbFVz YWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFk ZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9 IHRydWU7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJ UEFUSU9OCkBAIC0yMzk5LDkgKzI0MDMsMTYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1 aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAq IGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQpCisJewor CQlBc3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7 CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOworCX0KIAllbHNlCisJewogCQlz bmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJ UHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJfQogCiAJLyoK IAkgKiBFc3RpbWF0ZSBzaXplIGZvciBvdXIgb3duIFBBUkFMTEVMX0tFWV9CUklOX1NIQVJFRCB3 b3Jrc3BhY2UuCkBAIC0yNDQ0LDYgKzI0NTUsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmlu QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJ LyogSWYgbm8gRFNNIHNlZ21lbnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQgKGRvIHNlcmlhbCBi dWlsZCkgKi8KIAlpZiAocGN4dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAobmVlZF9wb3BfYWN0 aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYgKElzTVZDQ1NuYXBz aG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ry b3lQYXJhbGxlbENvbnRleHQocGN4dCk7CkBAIC0yNTIzLDYgKzI1MzYsOCBAQCBfYnJpbl9iZWdp bl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiAJLyogSWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hl ZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1 bmNoZWQgPT0gMCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BB Y3RpdmVTbmFwc2hvdCgpOwogCQlfYnJpbl9lbmRfcGFyYWxsZWwoYnJpbmxlYWRlciwgTlVMTCk7 CiAJCXJldHVybjsKIAl9CkBAIC0yNTM5LDYgKzI1NTQsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxl bChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3QgaGFu ZyBmb3JldmVyLgogCSAqLwogCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0KTsK KwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKaW5kZXggZTlkNGIyNzQyN2UuLjJm OTQ3ZDM2NjE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKQEAgLTI4LDYgKzI4LDcg QEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAj aW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5j bHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTY0Niw2ICs2NDcsOCBAQCBnaW5idWlsZChSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJYnVpbGRz dGF0ZS5hY2N1bS5naW5zdGF0ZSA9ICZidWlsZHN0YXRlLmdpbnN0YXRlOwogCWdpbkluaXRCQSgm YnVpbGRzdGF0ZS5hY2N1bSk7CiAKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8 fCBpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54aWQpKTsKKwogCS8qIFJlcG9ydCB0YWJsZSBzY2FuIHBoYXNlIHN0YXJ0ZWQgKi8K IAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9TVUJQSEFT RSwKIAkJCQkJCQkJIFBST0dSRVNTX0dJTl9QSEFTRV9JTkRFWEJVSUxEX1RBQkxFU0NBTik7CkBA IC03MDgsMTEgKzcxMSwxMyBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRl eCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfZ2luKGhl YXAsIGluZGV4LAogCQkJCQkJCQkJICBtYWludGVuYW5jZV93b3JrX21lbSwgY29vcmRpbmF0ZSwK IAkJCQkJCQkJCSAgVFVQTEVTT1JUX05PTkUpOworCQlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90 KCk7CiAKIAkJLyogc2NhbiB0aGUgcmVsYXRpb24gaW4gcGFyYWxsZWwgYW5kIG1lcmdlIHBlci13 b3JrZXIgcmVzdWx0cyAqLwogCQlyZWx0dXBsZXMgPSBfZ2luX3BhcmFsbGVsX21lcmdlKHN0YXRl KTsKIAogCQlfZ2luX2VuZF9wYXJhbGxlbChzdGF0ZS0+YnNfbGVhZGVyLCBzdGF0ZSk7CisJCUFz c2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhtaW4pKTsKIAl9CiAJZWxzZQkJCQkJCS8qIG5vIHBhcmFsbGVsIGluZGV4IGJ1aWxk ICovCiAJewpAQCAtNzIyLDYgKzcyNyw3IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0 aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJICovCiAJCXJlbHR1cGxlcyA9IHRh YmxlX2luZGV4X2J1aWxkX3NjYW4oaGVhcCwgaW5kZXgsIGluZGV4SW5mbywgZmFsc2UsIHRydWUs CiAJCQkJCQkJCQkJICAgZ2luQnVpbGRDYWxsYmFjaywgJmJ1aWxkc3RhdGUsIE5VTEwpOworCQlJ bnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CiAKIAkJLyogZHVtcCByZW1haW5pbmcgZW50cmll cyB0byB0aGUgaW5kZXggKi8KIAkJb2xkQ3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGJ1aWxk c3RhdGUudG1wQ3R4KTsKQEAgLTczNSw2ICs3NDEsNyBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCQkJCQkgICBsaXN0LCBu bGlzdCwgJmJ1aWxkc3RhdGUuYnVpbGRTdGF0cyk7CiAJCX0KIAkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZEN0eCk7CisJCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAKIAlNZW1vcnlDb250ZXh0RGVs ZXRlKGJ1aWxkc3RhdGUuZnVuY0N0eCk7CkBAIC05MDcsNiArOTE0LDcgQEAgX2dpbl9iZWdpbl9w YXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlv biBpbmRleCwKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNh Z2U7CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsKKwlib29sCQluZWVkX3BvcF9h Y3RpdmVfc25hcHNob3QgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVuOwogCiAjaWZkZWYgRElTQUJM RV9MRUFERVJfUEFSVElDSVBBVElPTgpAQCAtOTMxLDkgKzkzOSwxNiBAQCBfZ2luX2JlZ2luX3Bh cmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAogCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCiAJICovCiAJaWYgKCFpc2NvbmN1 cnJlbnQpCisJeworCQlBc3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CiAJCXNuYXBzaG90ID0g U25hcHNob3RBbnk7CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOworCX0KIAll bHNlCisJewogCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFw c2hvdCgpKTsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7 CisJfQogCiAJLyoKIAkgKiBFc3RpbWF0ZSBzaXplIGZvciBvdXIgb3duIFBBUkFMTEVMX0tFWV9H SU5fU0hBUkVEIHdvcmtzcGFjZS4KQEAgLTk3Niw2ICs5OTEsOCBAQCBfZ2luX2JlZ2luX3BhcmFs bGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGlu ZGV4LAogCS8qIElmIG5vIERTTSBzZWdtZW50IHdhcyBhdmFpbGFibGUsIGJhY2sgb3V0IChkbyBz ZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPnNlZyA9PSBOVUxMKQogCXsKKwkJaWYgKG5lZWRf cG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCWlmIChJc01W Q0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwog CQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwpAQCAtMTA1MCw2ICsxMDY3LDggQEAgX2dp bl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUgc3VjY2Vzc2Z1bGx5IGxh dW5jaGVkLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5ud29ya2Vy c19sYXVuY2hlZCA9PSAwKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJ CVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCV9naW5fZW5kX3BhcmFsbGVsKGdpbmxlYWRlciwgTlVM TCk7CiAJCXJldHVybjsKIAl9CkBAIC0xMDY2LDYgKzEwODUsOCBAQCBfZ2luX2JlZ2luX3BhcmFs bGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGlu ZGV4LAogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhh bmcgZm9yZXZlci4KIAkgKi8KIAlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7 CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsK IH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKaW5kZXggOWIyZWM5ODE1ZjEu LmJmYzI3NDc0NDMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVp bGQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwpAQCAtNDMsNiAr NDMsNyBAQAogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJzdG9y YWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVsa193cml0ZS5oIgorI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRl ICJ1dGlscy9yZWwuaCIKQEAgLTI1OSw2ICsyNjAsNyBAQCBnaXN0YnVpbGQoUmVsYXRpb24gaGVh cCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCWJ1aWxkc3RhdGUuaW5k dHVwbGVzID0gMDsKIAlidWlsZHN0YXRlLmluZHR1cGxlc1NpemUgPSAwOwogCisJQXNzZXJ0KCFp bmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eGlkKSk7CiAJaWYgKGJ1aWxkc3RhdGUuYnVpbGRNb2RlID09IEdJU1RfU09SVEVEX0JVSUxEKQog CXsKIAkJLyoKQEAgLTM1MCw2ICszNTIsNyBAQCBnaXN0YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0LT5oZWFwX3R1cGxl cyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IChkb3VibGUpIGJ1aWxkc3Rh dGUuaW5kdHVwbGVzOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oYXNoL2hhc2guYwppbmRleCA1MzA2MWM4MTlmYi4uMzcxMWJhZWEwNTIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoLmMKQEAgLTE5Nyw2ICsxOTcsNyBAQCBoYXNoYnVpbGQoUmVsYXRpb24gaGVh cCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0LT5oZWFw X3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1aWxkc3RhdGUu aW5kdHVwbGVzOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2Fj dGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggZWQwYzBjMmRjOWYuLmQ3Mzk2ODQ3NWMwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgInV0aWxzL2lu dmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvc3BjY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNj YWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAKIHN0YXRpYyBI ZWFwVHVwbGUgaGVhcF9wcmVwYXJlX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxl IHR1cCwKQEAgLTYzMyw2ICs2MzQsMzYgQEAgaGVhcF9wcmVwYXJlX3BhZ2VzY2FuKFRhYmxlU2Nh bkRlc2Mgc3NjYW4pCiAJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiB9 CiAKKy8qCisgKiBSZXNldCB0aGUgYWN0aXZlIHNuYXBzaG90IGR1cmluZyBhIHNjYW4uCisgKiBU aGlzIGVuc3VyZXMgdGhlIHhtaW4gaG9yaXpvbiBjYW4gYWR2YW5jZSB3aGlsZSBtYWludGFpbmlu ZyBzYWZlIHR1cGxlIHZpc2liaWxpdHkuCisgKiBOb3RlOiBObyBvdGhlciBzbmFwc2hvdCBzaG91 bGQgYmUgYWN0aXZlIGR1cmluZyB0aGlzIG9wZXJhdGlvbi4KKyAqLworc3RhdGljIGlubGluZSB2 b2lkCitoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3QoVGFibGVTY2FuRGVzYyBzc2NhbikKK3sKKwkv KiBNYWtlIHN1cmUgbm8gb3RoZXIgc25hcHNob3Qgd2FzIHNldCBhcyBhY3RpdmUuICovCisJQXNz ZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCkgPT0gc3NjYW4tPnJzX3NuYXBzaG90KTsKKwkvKiBBbmQg bWFrZSBzdXJlIGFjdGl2ZSBzbmFwc2hvdCBpcyBub3QgcmVnaXN0ZXJlZC4gKi8KKwlBc3NlcnQo R2V0QWN0aXZlU25hcHNob3QoKS0+cmVnZF9jb3VudCA9PSAwKTsKKwlQb3BBY3RpdmVTbmFwc2hv dCgpOworCisJc3NjYW4tPnJzX3NuYXBzaG90ID0gSW52YWxpZFNuYXBzaG90OyAvKiBqdXN0IG90 IGJlIHRpZHkgKi8KKwlBc3NlcnQoIUhhdmVSZWdpc3RlcmVkT3JBY3RpdmVTbmFwc2hvdCgpKTsK KwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisKKwkvKiBHb2FsIG9mIHNuYXBzaG90IHJl c2V0IGlzIHRvIGFsbG93IGhvcml6b24gdG8gYWR2YW5jZS4gKi8KKwlBc3NlcnQoIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworI2lmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJ LyogSW4gc29tZSBjYXNlcyBpdCBpcyBzdGlsbCBub3QgcG9zc2libGUgZHVlIHhpZCBhc3NpZ24u ICovCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpCisJCUlOSkVDVElP Tl9QT0lOVCgiaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZSIsIE5VTEwpOworI2Vu ZGlmCisKKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJc3NjYW4t PnJzX3NuYXBzaG90ID0gR2V0QWN0aXZlU25hcHNob3QoKTsKK30KKwogLyoKICAqIGhlYXBfZmV0 Y2hfbmV4dF9idWZmZXIgLSByZWFkIGFuZCBwaW4gdGhlIG5leHQgYmxvY2sgZnJvbSBNQUlOX0ZP UktOVU0uCiAgKgpAQCAtNjc0LDcgKzcwNSwxMiBAQCBoZWFwX2ZldGNoX25leHRfYnVmZmVyKEhl YXBTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcikKIAogCXNjYW4tPnJzX2NidWYgPSBy ZWFkX3N0cmVhbV9uZXh0X2J1ZmZlcihzY2FuLT5yc19yZWFkX3N0cmVhbSwgTlVMTCk7CiAJaWYg KEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfY2J1ZikpCisJewogCQlzY2FuLT5yc19jYmxvY2sgPSBC dWZmZXJHZXRCbG9ja051bWJlcihzY2FuLT5yc19jYnVmKTsKKwkJaWYgKChzY2FuLT5yc19iYXNl LnJzX2ZsYWdzICYgU09fUkVTRVRfU05BUFNIT1QpICYmCisJCQkoc2Nhbi0+cnNfY2Jsb2NrICUg U09fUkVTRVRfU05BUFNIT1RfRUFDSF9OX1BBR0UgPT0gMCkpCisJCQloZWFwX3Jlc2V0X3NjYW5f c25hcHNob3QoKFRhYmxlU2NhbkRlc2MpIHNjYW4pOworCX0KIH0KIAogLyoKQEAgLTEzMzYsNiAr MTM3MiwxNSBAQCBoZWFwX2VuZHNjYW4oVGFibGVTY2FuRGVzYyBzc2NhbikKIAlpZiAoc2Nhbi0+ cnNfcGFyYWxsZWx3b3JrZXJkYXRhICE9IE5VTEwpCiAJCXBmcmVlKHNjYW4tPnJzX3BhcmFsbGVs d29ya2VyZGF0YSk7CiAKKwlpZiAoc2Nhbi0+cnNfYmFzZS5yc19mbGFncyAmIFNPX1JFU0VUX1NO QVBTSE9UKQorCXsKKwkJQXNzZXJ0KCEoc2Nhbi0+cnNfYmFzZS5yc19mbGFncyAmIFNPX1RFTVBf U05BUFNIT1QpKTsKKwkJLyogTWFrZSBzdXJlIG5vIG90aGVyIHNuYXBzaG90IHdhcyBzZXQgYXMg YWN0aXZlLiAqLworCQlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKSA9PSBzc2Nhbi0+cnNfc25h cHNob3QpOworCQkvKiBBbmQgbWFrZSBzdXJlIHNuYXBzaG90IGlzIG5vdCByZWdpc3RlcmVkLiAq LworCQlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKS0+cmVnZF9jb3VudCA9PSAwKTsKKwl9CisK IAlpZiAoc2Nhbi0+cnNfYmFzZS5yc19mbGFncyAmIFNPX1RFTVBfU05BUFNIT1QpCiAJCVVucmVn aXN0ZXJTbmFwc2hvdChzY2FuLT5yc19iYXNlLnJzX3NuYXBzaG90KTsKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggYmNiYWM4NDRiYjYuLmUzMmVlNzM5NzMz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTExOTQsNiAr MTE5NCw4IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxh dGlvbiwKIAlFeHByQ29udGV4dCAqZWNvbnRleHQ7CiAJU25hcHNob3QJc25hcHNob3Q7CiAJYm9v bAkJbmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90ID0gZmFsc2U7CisJYm9vbAkJbmVlZF9wb3BfYWN0 aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJYm9vbAkJcmVzZXRfc25hcHNob3RzID0gZmFsc2U7CiAJ VHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluOwogCUJsb2NrTnVtYmVyIHByZXZpb3VzX2Jsa25vID0g SW52YWxpZEJsb2NrTnVtYmVyOwogCUJsb2NrTnVtYmVyIHJvb3RfYmxrbm8gPSBJbnZhbGlkQmxv Y2tOdW1iZXI7CkBAIC0xMjI4LDkgKzEyMzAsNiBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vf c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJLyogQXJyYW5nZSBmb3IgZWNvbnRleHQncyBz Y2FuIHR1cGxlIHRvIGJlIHRoZSB0dXBsZSB1bmRlciB0ZXN0ICovCiAJZWNvbnRleHQtPmVjeHRf c2NhbnR1cGxlID0gc2xvdDsKIAotCS8qIFNldCB1cCBleGVjdXRpb24gc3RhdGUgZm9yIHByZWRp Y2F0ZSwgaWYgYW55LiAqLwotCXByZWRpY2F0ZSA9IEV4ZWNQcmVwYXJlUXVhbChpbmRleEluZm8t PmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKLQogCS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0 aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9ybWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkgKiBT bmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3Vy IG93biB0aW1lCkBAIC0xMjQwLDYgKzEyMzksMTUgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3Jhbmdl X3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCSAqLwogCU9sZGVzdFhtaW4gPSBJbnZhbGlk VHJhbnNhY3Rpb25JZDsKIAorCS8qCisJICogRm9yIHVuaXF1ZSBpbmRleCB3ZSBuZWVkIGNvbnNp c3RlbnQgc25hcHNob3QgZm9yIHRoZSB3aG9sZSBzY2FuLgorCSAqIEluIGNhc2Ugb2YgcGFyYWxs ZWwgc2NhbiBzb21lIGFkZGl0aW9uYWwgaW5mcmFzdHJ1Y3R1cmUgcmVxdWlyZWQKKwkgKiB0byBw ZXJmb3JtIHNjYW4gd2l0aCBTT19SRVNFVF9TTkFQU0hPVCB3aGljaCBpcyBub3QgeWV0IHJlYWR5 LgorCSAqLworCXJlc2V0X3NuYXBzaG90cyA9IGluZGV4SW5mby0+aWlfQ29uY3VycmVudCAmJgor CQkJCQkgICFpbmRleEluZm8tPmlpX1VuaXF1ZSAmJgorCQkJCQkgICFpc19zeXN0ZW1fY2F0YWxv ZzsgLyoganVzdCBmb3IgdGhlIGNhc2UgKi8KKwogCS8qIG9rYXkgdG8gaWdub3JlIGxhenkgVkFD VVVNcyBoZXJlICovCiAJaWYgKCFJc0Jvb3RzdHJhcFByb2Nlc3NpbmdNb2RlKCkgJiYgIWluZGV4 SW5mby0+aWlfQ29uY3VycmVudCkKIAkJT2xkZXN0WG1pbiA9IEdldE9sZGVzdE5vblJlbW92YWJs ZVRyYW5zYWN0aW9uSWQoaGVhcFJlbGF0aW9uKTsKQEAgLTEyNDgsMjQgKzEyNTYsNDEgQEAgaGVh cGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXsKIAkJ LyoKIAkJICogU2VyaWFsIGluZGV4IGJ1aWxkLgotCQkgKgotCQkgKiBNdXN0IGJlZ2luIG91ciBv d24gaGVhcCBzY2FuIGluIHRoaXMgY2FzZS4gIFdlIG1heSBhbHNvIG5lZWQgdG8KLQkJICogcmVn aXN0ZXIgYSBzbmFwc2hvdCB3aG9zZSBsaWZldGltZSBpcyB1bmRlciBvdXIgZGlyZWN0IGNvbnRy b2wuCiAJCSAqLwogCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFhtaW4pKQogCQl7 Ci0JCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgp KTsKLQkJCW5lZWRfdW5yZWdpc3Rlcl9zbmFwc2hvdCA9IHRydWU7CisJCQlzbmFwc2hvdCA9IEdl dFRyYW5zYWN0aW9uU25hcHNob3QoKTsKKwkJCS8qCisJCQkgKiBNdXN0IGJlZ2luIG91ciBvd24g aGVhcCBzY2FuIGluIHRoaXMgY2FzZS4gIFdlIG1heSBhbHNvIG5lZWQgdG8KKwkJCSAqIHJlZ2lz dGVyIGEgc25hcHNob3Qgd2hvc2UgbGlmZXRpbWUgaXMgdW5kZXIgb3VyIGRpcmVjdCBjb250cm9s LgorCQkJICogSW4gY2FzZSBvZiByZXNldHRpbmcgb2Ygc25hcHNob3QgZHVyaW5nIHRoZSBzY2Fu IHJlZ2lzdHJhdGlvbiBpcworCQkJICogbm90IGFsbG93ZWQgYmVjYXVzZSBzbmFwc2hvdCBpcyBn b2luZyB0byBiZSBjaGFuZ2VkIGV2ZXJ5IHNvCisJCQkgKiBvZnRlbi4KKwkJCSAqLworCQkJaWYg KCFyZXNldF9zbmFwc2hvdHMpCisJCQl7CisJCQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90 KHNuYXBzaG90KTsKKwkJCQluZWVkX3VucmVnaXN0ZXJfc25hcHNob3QgPSB0cnVlOworCQkJfQor CQkJQXNzZXJ0KCFBY3RpdmVTbmFwc2hvdFNldCgpKTsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChz bmFwc2hvdCk7CisJCQkvKiBzdG9yZSBsaW5rIHRvIHNuYXBzaG90IGJlY2F1c2UgaXQgbWF5IGJl IGNvcGllZCAqLworCQkJc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOworCQkJbmVlZF9w b3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAkJfQogCQllbHNlCisJCXsKKwkJCUFzc2VydCgh aW5kZXhJbmZvLT5paV9Db25jdXJyZW50KTsKIAkJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CisJ CX0KIAogCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KGhlYXBSZWxhdGlvbiwJLyogcmVs YXRpb24gKi8KIAkJCQkJCQkJCSBzbmFwc2hvdCwJLyogc25hcHNob3QgKi8KIAkJCQkJCQkJCSAw LCAvKiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkJIE5VTEwsCS8qIHNjYW4ga2V5ICovCiAJ CQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBPSyAqLwotCQkJCQkJCQkJ IGFsbG93X3N5bmMpOwkvKiBzeW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJCSBhbGxvd19zeW5jLAkv KiBzeW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJCSByZXNldF9zbmFwc2hvdHMgLyogcmVzZXQgc25h cHNob3RzPyAqLyk7CiAJfQogCWVsc2UKIAl7CkBAIC0xMjc5LDYgKzEzMDQsOCBAQCBoZWFwYW1f aW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCUFzc2VydCgh SXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpKTsKIAkJQXNzZXJ0KGFsbG93X3N5bmMpOwogCQlz bmFwc2hvdCA9IHNjYW4tPnJzX3NuYXBzaG90OworCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNo b3QpOworCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOwogCX0KIAogCWhzY2FuID0g KEhlYXBTY2FuRGVzYykgc2NhbjsKQEAgLTEyOTMsNiArMTMyMCwxMyBAQCBoZWFwYW1faW5kZXhf YnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJQXNzZXJ0KHNuYXBzaG90 ID09IFNuYXBzaG90QW55ID8gVHJhbnNhY3Rpb25JZElzVmFsaWQoT2xkZXN0WG1pbikgOgogCQkg ICAhVHJhbnNhY3Rpb25JZElzVmFsaWQoT2xkZXN0WG1pbikpOwogCUFzc2VydChzbmFwc2hvdCA9 PSBTbmFwc2hvdEFueSB8fCAhYW55dmlzaWJsZSk7CisJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBz aG90QW55IHx8IEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCisJLyogU2V0IHVwIGV4ZWN1dGlvbiBz dGF0ZSBmb3IgcHJlZGljYXRlLCBpZiBhbnkuICovCisJcHJlZGljYXRlID0gRXhlY1ByZXBhcmVR dWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlLCBlc3RhdGUpOworCS8qIENsZWFyIHJlZmVyZW5j ZSB0byBzbmFwc2hvdCBzaW5jZSBpdCBtYXkgYmUgY2hhbmdlZCBieSB0aGUgc2NhbiBpdHNlbGYu ICovCisJaWYgKHJlc2V0X3NuYXBzaG90cykKKwkJc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7 CiAKIAkvKiBQdWJsaXNoIG51bWJlciBvZiBibG9ja3MgdG8gc2NhbiAqLwogCWlmIChwcm9ncmVz cykKQEAgLTE3MjgsNiArMTc2Miw4IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKIAogCXRhYmxlX2VuZHNjYW4oc2Nhbik7CiAKKwlpZiAobmVl ZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCS8qIHdlIGNh biBub3cgZm9yZ2V0IG91ciBzbmFwc2hvdCwgaWYgc2V0IGFuZCByZWdpc3RlcmVkIGJ5IHVzICov CiAJaWYgKG5lZWRfdW5yZWdpc3Rlcl9zbmFwc2hvdCkKIAkJVW5yZWdpc3RlclNuYXBzaG90KHNu YXBzaG90KTsKQEAgLTE4MDAsNyArMTgzNiw4IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2Fu KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICov CiAJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVy IGFjY2VzcyBzdHJhdGVneSBPSyAqLwotCQkJCQkJCQkgZmFsc2UpOwkvKiBzeW5jc2NhbiBub3Qg T0sgKi8KKwkJCQkJCQkJIGZhbHNlLAkvKiBzeW5jc2NhbiBub3QgT0sgKi8KKwkJCQkJCQkJIGZh bHNlKTsKIAloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47CiAKIAlwZ3N0YXRfcHJvZ3Jlc3Nf dXBkYXRlX3BhcmFtKFBST0dSRVNTX1NDQU5fQkxPQ0tTX1RPVEFMLApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgv Z2VuYW0uYwppbmRleCAwY2IyN2FmMTMxMC4uYzljNTMwNDQ3NDggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRl eC9nZW5hbS5jCkBAIC00NjQsNyArNDY0LDcgQEAgc3lzdGFibGVfYmVnaW5zY2FuKFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwKIAkJICovCiAJCXN5c3NjYW4tPnNjYW4gPSB0YWJsZV9iZWdpbnNjYW5f c3RyYXQoaGVhcFJlbGF0aW9uLCBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJICBua2V5cywga2V5LAot CQkJCQkJCQkJCQkgIHRydWUsIGZhbHNlKTsKKwkJCQkJCQkJCQkJICB0cnVlLCBmYWxzZSwgZmFs c2UpOwogCQlzeXNzY2FuLT5pc2NhbiA9IE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0c29ydC5jCmluZGV4IDg4MjhhN2E4Zjg5Li43YjA5YWQ4NzhiNyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnRzb3J0LmMKQEAgLTI1OSw3ICsyNTksNyBAQCBzdGF0aWMgZG91YmxlIF9idF9z cG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiBzdGF0aWMgdm9p ZCBfYnRfc3Bvb2xkZXN0cm95KEJUU3Bvb2wgKmJ0c3Bvb2wpOwogc3RhdGljIHZvaWQgX2J0X3Nw b29sKEJUU3Bvb2wgKmJ0c3Bvb2wsIEl0ZW1Qb2ludGVyIHNlbGYsCiAJCQkJCSAgRGF0dW0gKnZh bHVlcywgYm9vbCAqaXNudWxsKTsKLXN0YXRpYyB2b2lkIF9idF9sZWFmYnVpbGQoQlRTcG9vbCAq YnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpOworc3RhdGljIHZvaWQgX2J0X2xlYWZidWlsZChC VFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMp Owogc3RhdGljIHZvaWQgX2J0X2J1aWxkX2NhbGxiYWNrKFJlbGF0aW9uIGluZGV4LCBJdGVtUG9p bnRlciB0aWQsIERhdHVtICp2YWx1ZXMsCiAJCQkJCQkJICAgYm9vbCAqaXNudWxsLCBib29sIHR1 cGxlSXNBbGl2ZSwgdm9pZCAqc3RhdGUpOwogc3RhdGljIEJ1bGtXcml0ZUJ1ZmZlciBfYnRfYmxu ZXdwYWdlKEJUV3JpdGVTdGF0ZSAqd3N0YXRlLCB1aW50MzIgbGV2ZWwpOwpAQCAtMzIyLDE4ICsz MjIsMjIgQEAgYnRidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZv ICppbmRleEluZm8pCiAJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kZXgpKTsKIAogCXJl bHR1cGxlcyA9IF9idF9zcG9vbHNfaGVhcHNjYW4oaGVhcCwgaW5kZXgsICZidWlsZHN0YXRlLCBp bmRleEluZm8pOworCUFzc2VydChpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRl eEluZm8tPmlpX1VuaXF1ZSB8fAorCQkgICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBGaW5pc2ggdGhl IGJ1aWxkIGJ5ICgxKSBjb21wbGV0aW5nIHRoZSBzb3J0IG9mIHRoZSBzcG9vbCBmaWxlLCAoMikK IAkgKiBpbnNlcnRpbmcgdGhlIHNvcnRlZCB0dXBsZXMgaW50byBidHJlZSBwYWdlcyBhbmQgKDMp IGJ1aWxkaW5nIHRoZSB1cHBlcgogCSAqIGxldmVscy4gIEZpbmFsbHksIGl0IG1heSBhbHNvIGJl IG5lY2Vzc2FyeSB0byBlbmQgdXNlIG9mIHBhcmFsbGVsaXNtLgogCSAqLwotCV9idF9sZWFmYnVp bGQoYnVpbGRzdGF0ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIpOworCV9idF9sZWFmYnVpbGQo YnVpbGRzdGF0ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRleEluZm8tPmlpX1BhcmFs bGVsV29ya2VycyAmJiBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOwogCV9idF9zcG9vbGRlc3Ry b3koYnVpbGRzdGF0ZS5zcG9vbCk7CiAJaWYgKGJ1aWxkc3RhdGUuc3Bvb2wyKQogCQlfYnRfc3Bv b2xkZXN0cm95KGJ1aWxkc3RhdGUuc3Bvb2wyKTsKIAlpZiAoYnVpbGRzdGF0ZS5idGxlYWRlcikK IAkJX2J0X2VuZF9wYXJhbGxlbChidWlsZHN0YXRlLmJ0bGVhZGVyKTsKKwlBc3NlcnQoaW5kZXhJ bmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKKwkJICAh aW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2Mt PnhtaW4pKTsKIAogCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxvYyhzaXplb2Yo SW5kZXhCdWlsZFJlc3VsdCkpOwogCkBAIC00ODEsNiArNDg1LDkgQEAgX2J0X3Nwb29sc19oZWFw c2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0 YXRlLAogCWVsc2UKIAkJcmVsdHVwbGVzID0gX2J0X3BhcmFsbGVsX2hlYXBzY2FuKGJ1aWxkc3Rh dGUsCiAJCQkJCQkJCQkJICAmaW5kZXhJbmZvLT5paV9Ccm9rZW5Ib3RDaGFpbik7CisJSW52YWxp ZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydChpbmRleEluZm8tPmlpX1BhcmFsbGVsV29y a2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fAorCQkgICFpbmRleEluZm8tPmlpX0NvbmN1 cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkg KiBTZXQgdGhlIHByb2dyZXNzIHRhcmdldCBmb3IgdGhlIG5leHQgcGhhc2UuICBSZXNldCB0aGUg YmxvY2sgbnVtYmVyCkBAIC01MzYsNyArNTQzLDcgQEAgX2J0X3Nwb29sKEJUU3Bvb2wgKmJ0c3Bv b2wsIEl0ZW1Qb2ludGVyIHNlbGYsIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCkKICAqIGNy ZWF0ZSBhbiBlbnRpcmUgYnRyZWUuCiAgKi8KIHN0YXRpYyB2b2lkCi1fYnRfbGVhZmJ1aWxkKEJU U3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQorX2J0X2xlYWZidWlsZChCVFNwb29s ICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpCiB7CiAJ QlRXcml0ZVN0YXRlIHdzdGF0ZTsKIApAQCAtNTU4LDE4ICs1NjUsMjEgQEAgX2J0X2xlYWZidWls ZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikKIAkJCQkJCQkJCSBQUk9HUkVT U19CVFJFRV9QSEFTRV9QRVJGT1JNU09SVF8yKTsKIAkJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KGJ0 c3Bvb2wyLT5zb3J0c3RhdGUpOwogCX0KKwlBc3NlcnQoIXJlc2V0X3NuYXBzaG90cyB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAl3c3RhdGUuaGVhcCA9IGJ0c3Bv b2wtPmhlYXA7CiAJd3N0YXRlLmluZGV4ID0gYnRzcG9vbC0+aW5kZXg7CiAJd3N0YXRlLmluc2tl eSA9IF9idF9ta3NjYW5rZXkod3N0YXRlLmluZGV4LCBOVUxMKTsKIAkvKiBfYnRfbWtzY2Fua2V5 KCkgd29uJ3Qgc2V0IGFsbGVxdWFsaW1hZ2Ugd2l0aG91dCBtZXRhcGFnZSAqLwogCXdzdGF0ZS5p bnNrZXktPmFsbGVxdWFsaW1hZ2UgPSBfYnRfYWxsZXF1YWxpbWFnZSh3c3RhdGUuaW5kZXgsIHRy dWUpOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAogCS8qIHJlc2VydmUgdGhlIG1l dGFwYWdlICovCiAJd3N0YXRlLmJ0d3NfcGFnZXNfYWxsb2NlZCA9IEJUUkVFX01FVEFQQUdFICsg MTsKIAogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NV QlBIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfTEVBRl9MT0FEKTsKKwlBc3Nl cnQoIXJlc2V0X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWlu KSk7CiAJX2J0X2xvYWQoJndzdGF0ZSwgYnRzcG9vbCwgYnRzcG9vbDIpOwogfQogCkBAIC0xNDEw LDYgKzE0MjAsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRl LCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7 CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9 IHRydWU7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAlpbnQJCQlx dWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MzUs OSArMTQ0NiwxNiBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRl LCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogbGl2ZSBhY2NvcmRpbmcgdG8g dGhhdC4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKKwl7CisJCUFzc2VydChBY3RpdmVTbmFw c2hvdFNldCgpKTsKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKKwkJbmVlZF9wb3BfYWN0aXZl X3NuYXBzaG90ID0gZmFsc2U7CisJfQogCWVsc2UKKwl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlQdXNoQWN0aXZlU25hcHNob3Qo c25hcHNob3QpOworCX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3VyIG93biBQQVJB TExFTF9LRVlfQlRSRUVfU0hBUkVEIHdvcmtzcGFjZSwgYW5kCkBAIC0xNDkxLDYgKzE1MDksOCBA QCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29u Y3VycmVudCwgaW50IHJlcXVlc3QpCiAJLyogSWYgbm8gRFNNIHNlZ21lbnQgd2FzIGF2YWlsYWJs ZSwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+c2VnID09IE5VTEwp CiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNo b3QoKTsKIAkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFw c2hvdChzbmFwc2hvdCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CkBAIC0xNTg1 LDYgKzE2MDUsOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRl LCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJLyogSWYgbm8gd29ya2VycyB3ZXJl IHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlp ZiAocGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlfYnRfZW5kX3BhcmFsbGVs KGJ0bGVhZGVyKTsKIAkJcmV0dXJuOwogCX0KQEAgLTE2MDEsNiArMTYyMyw4IEBAIF9idF9iZWdp bl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBp bnQgcmVxdWVzdCkKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxs IG5vdCBoYW5nIGZvcmV2ZXIuCiAJICovCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNo KHBjeHQpOworCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBz aG90KCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3Nw Z2luc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYwppbmRleCA2 YTYxZTA5M2ZhMC4uMDZjMDFjZjMzNjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9z cGdpc3Qvc3BnaW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNl cnQuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWxrX3dyaXRlLmgi CisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIK ICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKIApAQCAtMTQzLDYgKzE0NCw3IEBAIHNwZ2J1aWxkKFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAlyZXN1 bHQgPSAoSW5kZXhCdWlsZFJlc3VsdCAqKSBwYWxsb2MwKHNpemVvZihJbmRleEJ1aWxkUmVzdWx0 KSk7CiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1 cGxlcyA9IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25j dXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJldHVy biByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggNWQ5ZGIxNjdlNTkuLmY1MDIyMTkzMGZk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleC5jCkBAIC04MCw2ICs4MCw3IEBACiAjaW5jbHVkZSAidXRpbHMvc25h cG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHVw bGVzb3J0LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAKIC8qIFBvdGVudGlhbGx5IHNl dCBieSBwZ191cGdyYWRlX3N1cHBvcnQgZnVuY3Rpb25zICovCiBPaWQJCQliaW5hcnlfdXBncmFk ZV9uZXh0X2luZGV4X3BnX2NsYXNzX29pZCA9IEludmFsaWRPaWQ7CkBAIC0xNDkyLDggKzE0OTMs OCBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCVJlbGF0 aW9uCWluZGV4UmVsYXRpb247CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwogCi0JLyogVGhpcyBo YWQgYmV0dGVyIG1ha2Ugc3VyZSB0aGF0IGEgc25hcHNob3QgaXMgYWN0aXZlICovCi0JQXNzZXJ0 KEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQ cm9jLT54bWluKSk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkp OwogCiAJLyogT3BlbiBhbmQgbG9jayB0aGUgcGFyZW50IGhlYXAgcmVsYXRpb24gKi8KIAloZWFw UmVsID0gdGFibGVfb3BlbihoZWFwUmVsYXRpb25JZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2Nr KTsKQEAgLTE1MTEsMTkgKzE1MTIsMjkgQEAgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBo ZWFwUmVsYXRpb25JZCwKIAogCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKGluZGV4UmVsYXRp b25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKKwkvKiBCdWlsZEluZGV4SW5mbyBtYXkgcmVxdWly ZSBhcyBzbmFwc2hvdCBmb3IgZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMgKi8KKwlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkvKgogCSAqIFdlIGhhdmUg dG8gcmUtYnVpbGQgdGhlIEluZGV4SW5mbyBzdHJ1Y3QsIHNpbmNlIGl0IHdhcyBsb3N0IGluIHRo ZQogCSAqIGNvbW1pdCBvZiB0aGUgdHJhbnNhY3Rpb24gd2hlcmUgdGhpcyBjb25jdXJyZW50IGlu ZGV4IHdhcyBjcmVhdGVkIGF0CiAJICogdGhlIGNhdGFsb2cgbGV2ZWwuCiAJICovCiAJaW5kZXhJ bmZvID0gQnVpbGRJbmRleEluZm8oaW5kZXhSZWxhdGlvbik7CisJLyogRG9uZSB3aXRoIHNuYXBz aG90ICovCisJUG9wQWN0aXZlU25hcHNob3QoKTsKIAlBc3NlcnQoIWluZGV4SW5mby0+aWlfUmVh ZHlGb3JJbnNlcnRzKTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSB0cnVlOwogCWluZGV4 SW5mby0+aWlfQnJva2VuSG90Q2hhaW4gPSBmYWxzZTsKIAorCUludmFsaWRhdGVDYXRhbG9nU25h cHNob3QoKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwor CiAJLyogTm93IGJ1aWxkIHRoZSBpbmRleCAqLwogCWluZGV4X2J1aWxkKGhlYXBSZWwsIGluZGV4 UmVsYXRpb24sIGluZGV4SW5mbywgZmFsc2UsIHRydWUpOwogCisJSW52YWxpZGF0ZUNhdGFsb2dT bmFwc2hvdCgpOworCUFzc2VydCgoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5k ZXhJbmZvLT5paV9VbmlxdWUpIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4p KTsKKwogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVu Y3Rpb25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CiAKQEAgLTE1 MzQsMTIgKzE1NDUsMTkgQEAgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRp b25JZCwKIAl0YWJsZV9jbG9zZShoZWFwUmVsLCBOb0xvY2spOwogCWluZGV4X2Nsb3NlKGluZGV4 UmVsYXRpb24sIE5vTG9jayk7CiAKKwkvKgorCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGlu dm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkgKiBoYXZlIGEgdmFsaWQg c25hcHNob3QuCisJICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNo b3QoKSk7CiAJLyoKIAkgKiBVcGRhdGUgdGhlIHBnX2luZGV4IHJvdyB0byBtYXJrIHRoZSBpbmRl eCBhcyByZWFkeSBmb3IgaW5zZXJ0cy4gT25jZSB3ZQogCSAqIGNvbW1pdCB0aGlzIHRyYW5zYWN0 aW9uLCBhbnkgbmV3IHRyYW5zYWN0aW9ucyB0aGF0IG9wZW4gdGhlIHRhYmxlIG11c3QKIAkgKiBp bnNlcnQgbmV3IGVudHJpZXMgaW50byB0aGUgaW5kZXggZm9yIGluc2VydGlvbnMgYW5kIG5vbi1I T1QgdXBkYXRlcy4KIAkgKi8KIAlpbmRleF9zZXRfc3RhdGVfZmxhZ3MoaW5kZXhSZWxhdGlvbklk LCBJTkRFWF9DUkVBVEVfU0VUX1JFQURZKTsKKwkvKiB3ZSBjYW4gZG8gYXdheSB3aXRoIG91ciBz bmFwc2hvdCAqLworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CiAKIC8qCkBAIC0zMjM2LDcgKzMy NTQsOCBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJ CQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAq LwogCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBPSyAqLwotCQkJCQkJ CQkgdHJ1ZSk7IC8qIHN5bmNzY2FuIE9LICovCisJCQkJCQkJCSB0cnVlLCAvKiBzeW5jc2NhbiBP SyAqLworCQkJCQkJCQkgZmFsc2UpOwogCiAJd2hpbGUgKHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3Qo c2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNsb3QpKQogCXsKQEAgLTMyOTksMTIgKzMzMTgs MTYgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKiBhcyBv ZiB0aGUgc3RhcnQgb2YgdGhlIHNjYW4gKHNlZSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKSwgd2hl cmVhcyBhIG5vcm1hbAogICogYnVpbGQgdGFrZXMgY2FyZSB0byBpbmNsdWRlIHJlY2VudGx5LWRl YWQgdHVwbGVzLiAgVGhpcyBpcyBPSyBiZWNhdXNlCiAgKiB3ZSB3b24ndCBtYXJrIHRoZSBpbmRl eCB2YWxpZCB1bnRpbCBhbGwgdHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgYmUgYWJsZQotICogdG8g c2VlIHRob3NlIHR1cGxlcyBhcmUgZ29uZS4gIFRoZSByZWFzb24gZm9yIGRvaW5nIHRoYXQgaXMg dG8gYXZvaWQKKyAqIHRvIHNlZSB0aG9zZSB0dXBsZXMgYXJlIGdvbmUuICBPbmUgb2YgcmVhc29u cyBmb3IgZG9pbmcgdGhhdCBpcyB0byBhdm9pZAogICogYm9ndXMgdW5pcXVlLWluZGV4IGZhaWx1 cmVzIGR1ZSB0byBjb25jdXJyZW50IFVQREFURXMgKHdlIG1pZ2h0IHNlZQogICogZGlmZmVyZW50 IHZlcnNpb25zIG9mIHRoZSBzYW1lIHJvdyBhcyBiZWluZyB2YWxpZCB3aGVuIHdlIHBhc3Mgb3Zl ciB0aGVtLAogICogaWYgd2UgdXNlZCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0pLiAgVGhpcyBs ZWF2ZXMgdXMgd2l0aCBhbiBpbmRleCB0aGF0CiAgKiBkb2VzIG5vdCBjb250YWluIGFueSB0dXBs ZXMgYWRkZWQgdG8gdGhlIHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRoZSBpbmRleC4KICAqCisgKiBG dXJ0aGVybW9yZSwgaW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4IHdlIHNldCBTT19SRVNFVF9T TkFQU0hPVCBmb3IgdGhlCisgKiBzY2FuLCB3aGljaCBjYXVzZXMgbmV3IHNuYXBzaG90IHRvIGJl IHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFzb24KKyAqIGZvciB0aGF0IGlz IHRvIHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9uIGZvcndhcmQuCisgKgogICogTmV4dCwgd2Ug bWFyayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQgc3RpbGwgbm90ICJpbmRpc3ZhbGlkIikg YW5kCiAgKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBhbmQgc3RhcnQgYSB0aGlyZC4g IEFnYWluIHdlIHdhaXQgZm9yIGFsbAogICogdHJhbnNhY3Rpb25zIHRoYXQgY291bGQgaGF2ZSBi ZWVuIG1vZGlmeWluZyB0aGUgdGFibGUgdG8gdGVybWluYXRlLiAgTm93CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2lu ZGV4Y21kcy5jCmluZGV4IGIxMDQyOWMzNzIxLi5hNzk5NDY1MmVhZCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv aW5kZXhjbWRzLmMKQEAgLTE2OTMsMjMgKzE2OTMsMTcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxl SWQsCiAJICogY2hhaW5zIGNhbiBiZSBjcmVhdGVkIHdoZXJlIHRoZSBuZXcgdHVwbGUgYW5kIHRo ZSBvbGQgdHVwbGUgaW4gdGhlCiAJICogY2hhaW4gaGF2ZSBkaWZmZXJlbnQgaW5kZXgga2V5cy4K IAkgKgotCSAqIFdlIG5vdyB0YWtlIGEgbmV3IHNuYXBzaG90LCBhbmQgYnVpbGQgdGhlIGluZGV4 IHVzaW5nIGFsbCB0dXBsZXMgdGhhdAotCSAqIGFyZSB2aXNpYmxlIGluIHRoaXMgc25hcHNob3Qu ICBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bworCSAqIFdlIGJ1aWxkIHRo ZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2libGUgdXNpbmcgc2luZ2xlIG9y CisJICogbXVsdGlwbGUgcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdlIGNhbiBiZSBzdXJlIHRoYXQg YW55IEhPVCB1cGRhdGVzIHRvCiAJICogdGhlc2UgdHVwbGVzIHdpbGwgYmUgY29tcGF0aWJsZSB3 aXRoIHRoZSBpbmRleCwgc2luY2UgYW55IHVwZGF0ZXMgbWFkZQogCSAqIGJ5IHRyYW5zYWN0aW9u cyB0aGF0IGRpZG4ndCBrbm93IGFib3V0IHRoZSBpbmRleCBhcmUgbm93IGNvbW1pdHRlZCBvcgog CSAqIHJvbGxlZCBiYWNrLiAgVGh1cywgZWFjaCB2aXNpYmxlIHR1cGxlIGlzIGVpdGhlciB0aGUg ZW5kIG9mIGl0cwogCSAqIEhPVC1jaGFpbiBvciB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBjaGFpbiBp cyBIT1Qtc2FmZSBmb3IgdGhpcyBpbmRleC4KIAkgKi8KIAotCS8qIFNldCBBY3RpdmVTbmFwc2hv dCBzaW5jZSBmdW5jdGlvbnMgaW4gdGhlIGluZGV4ZXMgbWF5IG5lZWQgaXQgKi8KLQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQogCS8qIFBlcmZvcm0gY29u Y3VycmVudCBidWlsZCBvZiBpbmRleCAqLwogCWluZGV4X2NvbmN1cnJlbnRseV9idWlsZCh0YWJs ZUlkLCBpbmRleFJlbGF0aW9uSWQpOwogCi0JLyogd2UgY2FuIGRvIGF3YXkgd2l0aCBvdXIgc25h cHNob3QgKi8KLQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCiAJLyoKIAkgKiBDb21taXQgdGhpcyB0 cmFuc2FjdGlvbiB0byBtYWtlIHRoZSBpbmRpc3JlYWR5IHVwZGF0ZSB2aXNpYmxlLgogCSAqLwpA QCAtNDEwNiw5ICs0MTAwLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJaWYgKG5ld2lk eC0+c2FmZSkKIAkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CiAKLQkJLyogU2V0IEFjdGl2 ZVNuYXBzaG90IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhlcyBtYXkgbmVlZCBpdCAqLwot CQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQogCQkvKgog CQkgKiBVcGRhdGUgcHJvZ3Jlc3MgZm9yIHRoZSBpbmRleCB0byBidWlsZCwgd2l0aCB0aGUgY29y cmVjdCBwYXJlbnQKIAkJICogdGFibGUgaW52b2x2ZWQuCkBAIC00MTIzLDcgKzQxMTQsNiBAQCBS ZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBy ZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkvKiBQZXJmb3JtIGNvbmN1cnJlbnQgYnVpbGQgb2Yg bmV3IGluZGV4ICovCiAJCWluZGV4X2NvbmN1cnJlbnRseV9idWlsZChuZXdpZHgtPnRhYmxlSWQs IG5ld2lkeC0+aW5kZXhJZCk7CiAKLQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMK aW5kZXggNDFiZDgzNTM0MzAuLjJhMjViYjA2NTRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v cGxhbm5lci5jCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgi CiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc2VsZnVuY3MuaCIKKyNp bmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKIC8qIEdVQyBwYXJhbWV0ZXJzICovCiBkb3VibGUJ CWN1cnNvcl90dXBsZV9mcmFjdGlvbiA9IERFRkFVTFRfQ1VSU09SX1RVUExFX0ZSQUNUSU9OOwpA QCAtNjkyNyw2ICs2OTI4LDcgQEAgcGxhbl9jcmVhdGVfaW5kZXhfd29ya2VycyhPaWQgdGFibGVP aWQsIE9pZCBpbmRleE9pZCkKIAlSZWxhdGlvbgloZWFwOwogCVJlbGF0aW9uCWluZGV4OwogCVJl bE9wdEluZm8gKnJlbDsKKwlib29sCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsK IAlpbnQJCQlwYXJhbGxlbF93b3JrZXJzOwogCUJsb2NrTnVtYmVyIGhlYXBfYmxvY2tzOwogCWRv dWJsZQkJcmVsdHVwbGVzOwpAQCAtNjk4Miw2ICs2OTg0LDExIEBAIHBsYW5fY3JlYXRlX2luZGV4 X3dvcmtlcnMoT2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQpCiAJaGVhcCA9IHRhYmxlX29wZW4o dGFibGVPaWQsIE5vTG9jayk7CiAJaW5kZXggPSBpbmRleF9vcGVuKGluZGV4T2lkLCBOb0xvY2sp OwogCisJLyogU2V0IEFjdGl2ZVNuYXBzaG90IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhl cyBtYXkgbmVlZCBpdCAqLworCWlmICghQWN0aXZlU25hcHNob3RTZXQoKSkgeworCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJbmVlZF9wb3BfYWN0aXZl X3NuYXBzaG90ID0gdHJ1ZTsKKwl9CiAJLyoKIAkgKiBEZXRlcm1pbmUgaWYgaXQncyBzYWZlIHRv IHByb2NlZWQuCiAJICoKQEAgLTcwMzksNiArNzA0Niw4IEBAIHBsYW5fY3JlYXRlX2luZGV4X3dv cmtlcnMoT2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQpCiAJCXBhcmFsbGVsX3dvcmtlcnMtLTsK IAogZG9uZToKKwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFw c2hvdCgpOwogCWluZGV4X2Nsb3NlKGluZGV4LCBOb0xvY2spOwogCXRhYmxlX2Nsb3NlKGhlYXAs IE5vTG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBlNjBkMzRkYWQyNS4uOGIzZWM2NDMwYWQg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQzLDYgKzQzLDggQEAKICNkZWZpbmUgSEVBUF9QQUdFX1BS VU5FX01BUktfVU5VU0VEX05PVwkJKDEgPDwgMCkKICNkZWZpbmUgSEVBUF9QQUdFX1BSVU5FX0ZS RUVaRQkJCQkoMSA8PCAxKQogCisjZGVmaW5lIFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdF CQk0MDk2CisKIHR5cGVkZWYgc3RydWN0IEJ1bGtJbnNlcnRTdGF0ZURhdGEgKkJ1bGtJbnNlcnRT dGF0ZTsKIHR5cGVkZWYgc3RydWN0IEdsb2JhbFZpc1N0YXRlIEdsb2JhbFZpc1N0YXRlOwogdHlw ZWRlZiBzdHJ1Y3QgVHVwbGVUYWJsZVNsb3QgVHVwbGVUYWJsZVNsb3Q7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aAppbmRleCBlMTZiZjAyNTY5Mi4uNzFhZjE0ZDFjMzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAt MjUsNiArMjUsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIKICNpbmNsdWRl ICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwc2hvdC5oIgorI2luY2x1ZGUgInV0 aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAKICNkZWZpbmUgREVGQVVMVF9UQUJMRV9BQ0NFU1Nf TUVUSE9ECSJoZWFwIgpAQCAtNjMsNiArNjQsMTcgQEAgdHlwZWRlZiBlbnVtIFNjYW5PcHRpb25z CiAKIAkvKiB1bnJlZ2lzdGVyIHNuYXBzaG90IGF0IHNjYW4gZW5kPyAqLwogCVNPX1RFTVBfU05B UFNIT1QgPSAxIDw8IDksCisJLyoKKwkgKiBSZXNldCBzY2FuIGFuZCBjYXRhbG9nIHNuYXBzaG90 IGV2ZXJ5IHNvIG9mdGVuPyBJZiBzbywgZWFjaAorCSAqIFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hf Tl9QQUdFIHBhZ2VzIGFjdGl2ZSBzbmFwc2hvdCBpcyBwb3BwZWQsCisJICogY2F0YWxvZyBzbmFw c2hvdCBpbnZhbGlkYXRlZCwgbGF0ZXN0IHNuYXBzaG90IHB1c2hlZCBhcyBhY3RpdmUuCisJICoK KwkgKiBBdCB0aGUgZW5kIG9mIHRoZSBzY2FuIHNuYXBzaG90IGlzIG5vdCBwb3BwZWQuCisJICog R29hbCBvZiBzdWNoIG1vZGUgaXMga2VlcCB4bWluIHByb3BhZ2F0aW5nIGhvcml6b24gZm9yd2Fy ZC4KKwkgKgorCSAqIHNlZSBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3QgZm9yIGRldGFpbHMuCisJ ICovCisJU09fUkVTRVRfU05BUFNIT1QgPSAxIDw8IDEwLAogfQkJCVNjYW5PcHRpb25zOwogCiAv KgpAQCAtODk5LDcgKzkxMSw4IEBAIGV4dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nh bl9jYXRhbG9nKFJlbGF0aW9uIHJlbGF0aW9uLCBpbnQgbmtleXMsCiBzdGF0aWMgaW5saW5lIFRh YmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90 IHNuYXBzaG90LAogCQkJCQkgIGludCBua2V5cywgU2NhbktleURhdGEgKmtleSwKLQkJCQkJICBi b29sIGFsbG93X3N0cmF0LCBib29sIGFsbG93X3N5bmMpCisJCQkJCSAgYm9vbCBhbGxvd19zdHJh dCwgYm9vbCBhbGxvd19zeW5jLAorCQkJCQkgIGJvb2wgcmVzZXRfc25hcHNob3QpCiB7CiAJdWlu dDMyCQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8IFNPX0FMTE9XX1BBR0VNT0RFOwogCkBAIC05 MDcsNiArOTIwLDE1IEBAIHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBz aG90IHNuYXBzaG90LAogCQlmbGFncyB8PSBTT19BTExPV19TVFJBVDsKIAlpZiAoYWxsb3dfc3lu YykKIAkJZmxhZ3MgfD0gU09fQUxMT1dfU1lOQzsKKwlpZiAocmVzZXRfc25hcHNob3QpCisJewor CQlJTkpFQ1RJT05fUE9JTlQoInRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMi LCBOVUxMKTsKKwkJLyogQWN0aXZlIHNuYXBzaG90IGlzIHJlcXVpcmVkIG9uIHN0YXJ0LiAqLwor CQlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKSA9PSBzbmFwc2hvdCk7CisJCS8qIEFjdGl2ZSBz bmFwc2hvdCBzaG91bGQgbm90IGJlIHJlZ2lzdGVyZWQgdG8ga2VlcCB4bWluIHByb3BhZ2F0aW5n LiAqLworCQlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKS0+cmVnZF9jb3VudCA9PSAwKTsKKwkJ ZmxhZ3MgfD0gKFNPX1JFU0VUX1NOQVBTSE9UKTsKKwl9CiAKIAlyZXR1cm4gcmVsLT5yZF90YWJs ZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksIE5VTEwsIGZsYWdzKTsK IH0KQEAgLTE3MzksNiArMTc2MSwxMCBAQCB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZShU YWJsZVNjYW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKICAqIHZlcnkgaGFy ZCB0byBkZXRlY3Qgd2hldGhlciB0aGV5J3JlIHJlYWxseSBpbmNvbXBhdGlibGUgd2l0aCB0aGUg Y2hhaW4gdGlwLgogICogVGhpcyBvbmx5IHJlYWxseSBtYWtlcyBzZW5zZSBmb3IgaGVhcCBBTSwg aXQgbWlnaHQgbmVlZCB0byBiZSBnZW5lcmFsaXplZAogICogZm9yIG90aGVyIEFNcyBsYXRlci4K KyAqCisgKiBJbiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXggYW5kIG5vbi1wYXJhbGxlbCBjb25j dXJyZW50IGJ1aWxkCisgKiBTT19SRVNFVF9TTkFQU0hPVCBpcyBhcHBsaWVkIGZvciB0aGUgc2Nh bi4gVGhhdCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNob3RzCisgKiBvbiB0aGUgZmx5IHRvIGFs bG93IHhtaW4gaG9yaXpvbiBwcm9wYWdhdGUuCiAgKi8KIHN0YXRpYyBpbmxpbmUgZG91YmxlCiB0 YWJsZV9pbmRleF9idWlsZF9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVs ZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZQppbmRleCBmYzgyY2Q2N2Y2Yy4uZjRhNjJlZDFj YTcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmls ZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKQEAgLTEx LDcgKzExLDcgQEAgRVhURU5TSU9OID0gaW5qZWN0aW9uX3BvaW50cwogREFUQSA9IGluamVjdGlv bl9wb2ludHMtLTEuMC5zcWwKIFBHRklMRURFU0MgPSAiaW5qZWN0aW9uX3BvaW50cyAtIGZhY2ls aXR5IGZvciBpbmplY3Rpb24gcG9pbnRzIgogCi1SRUdSRVNTID0gaW5qZWN0aW9uX3BvaW50cyBo YXNoYWdnIHJlaW5kZXhfY29uYyB2YWN1dW0KK1JFR1JFU1MgPSBpbmplY3Rpb25fcG9pbnRzIGhh c2hhZ2cgcmVpbmRleF9jb25jIHZhY3V1bSBjaWNfcmVzZXRfc25hcHNob3RzCiBSRUdSRVNTX09Q VFMgPSAtLWRscGF0aD0kKHRvcF9idWlsZGRpcikvc3JjL3Rlc3QvcmVncmVzcwogCiBJU09MQVRJ T04gPSBiYXNpYyBpbnBsYWNlIHN5c2NhY2hlLXVwZGF0ZS1wcnVuZWQKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNo b3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNf cmVzZXRfc25hcHNob3RzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uOTQ4ZDEyMzJhYTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTAsMCArMSwx MDUgQEAKK0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKK1NFTEVDVCBpbmplY3Rp b25fcG9pbnRzX3NldF9sb2NhbCgpOworIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90 aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVf YmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cycsICdub3RpY2UnKTsKKyBpbmplY3Rpb25f cG9pbnRzX2F0dGFjaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor Q1JFQVRFIFNDSEVNQSBjaWNfcmVzZXRfc25hcDsKK0NSRUFURSBUQUJMRSBjaWNfcmVzZXRfc25h cC50YmwoaSBpbnQgcHJpbWFyeSBrZXksIGogaW50KTsKK0lOU0VSVCBJTlRPIGNpY19yZXNldF9z bmFwLnRibCBTRUxFQ1QgaSwgaSAqIEkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBzKGkp OworQ1JFQVRFIEZVTkNUSU9OIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaW50ZWdl cikgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCQkJCQkJCQkJICBMQU5HVUFHRSBwbHBnc3FsIEFT ICQkCitCRUdJTgorICAgIEVYRUNVVEUgJ1NFTEVDVCB0eGlkX2N1cnJlbnQoKSc7CisgICAgUkVU VVJOIE1PRCgkMSwgMikgPSAwOworRU5EOyAkJDsKK0NSRUFURSBGVU5DVElPTiBjaWNfcmVzZXRf c25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCkgUkVUVVJOUyBib29sIElNTVVUQUJMRQor CQkJCQkJCQkJICBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJTgorICAgIEVYRUNVVEUgJ1NF TEVDVCB0eGlkX2N1cnJlbnQoKSc7CisgICAgUkVUVVJOIGZhbHNlOworRU5EOyAkJDsKKy0tLS0t LS0tLS0tLS0tLS0KK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVs X3dvcmtlcnM9MCk7CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwor Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2lu c2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jl c2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4 IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7 CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRf cmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBp ZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRp Y2F0ZV9zdGFibGUoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hv dF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9i ZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQor RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19y ZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKK05PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRf c25hcHNob3RzCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jl c2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwor Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRf c2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90 X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor LS0gVGhlIHNhbWUgaW4gcGFyYWxsZWwgbW9kZQorQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAu dGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0yKTsKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoTU9EKGksIDIp LCBqKSBXSEVSRSBNT0QoaSwgMikgPSAwOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJs KGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0 cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25h cHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVh cF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFi bGVfbm9fcGFyYW0oKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpIERFU0MgTlVM TFMgTEFTVCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5E RVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsK K1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgU0NIRU1BIGNpY19yZXNl dF9zbmFwIENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDMgb3RoZXIgb2JqZWN0 cworREVUQUlMOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBjaWNfcmVzZXRfc25hcC50YmwKK2Ry b3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShp bnRlZ2VyKQorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBjaWNfcmVzZXRfc25hcC5wcmVkaWNh dGVfc3RhYmxlX25vX3BhcmFtKCkKK0RST1AgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQg Yi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKaW5kZXggMjAz OTBkNmI0YmYuLmJhN2JjMGNjMzg0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL21lc29uLmJ1aWxkCkBAIC0zOCw2ICszOCw3IEBAIHRlc3RzICs9IHsKICAgICAgICdo YXNoYWdnJywKICAgICAgICdyZWluZGV4X2NvbmMnLAogICAgICAgJ3ZhY3V1bScsCisgICAgICAn Y2ljX3Jlc2V0X3NuYXBzaG90cycsCiAgICAgXSwKICAgICAncmVncmVzc19hcmdzJzogWyctLWRs cGF0aCcsIG1lc29uLnByb2plY3RfYnVpbGRfcm9vdCgpIC8gJ3NyYy90ZXN0L3JlZ3Jlc3MnXSwK ICAgICAjIFRoZSBpbmplY3Rpb24gcG9pbnRzIGFyZSBjbHVzdGVyLXdpZGUsIHNvIGRpc2FibGUg aW5zdGFsbGNoZWNrCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uNTA3MjUzNWIzNTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3Fs CkBAIC0wLDAgKzEsODYgQEAKK0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKKwor U0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CitTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90aWNl Jyk7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJh dF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CisKKworQ1JFQVRFIFNDSEVNQSBjaWNfcmVz ZXRfc25hcDsKK0NSRUFURSBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwoaSBpbnQgcHJpbWFyeSBr ZXksIGogaW50KTsKK0lOU0VSVCBJTlRPIGNpY19yZXNldF9zbmFwLnRibCBTRUxFQ1QgaSwgaSAq IEkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBzKGkpOworCitDUkVBVEUgRlVOQ1RJT04g Y2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpbnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1N VVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgICAgRVhF Q1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBSRVRVUk4gTU9EKCQxLCAyKSA9IDA7 CitFTkQ7ICQkOworCitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0 YWJsZV9ub19wYXJhbSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VB R0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50 KCknOworICAgIFJFVFVSTiBmYWxzZTsKK0VORDsgJCQ7CisKKy0tLS0tLS0tLS0tLS0tLS0KK0FM VEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9MCk7CisK K0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50 YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHgg T04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsK K1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9z bmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRi bChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7 CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOworUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCistLSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBt b2RlCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJz PTIpOworCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0 X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5U TFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChpLCAy KSA9IDA7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNf cmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19w YXJhbSgpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5E RVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5VTExTIExB U1QpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJP UCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsKK1JF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0 X3NuYXAgQ0FTQ0FERTsKKworRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKLS0gCjIu NDguMQoK --000000000000b0374806423c4f93 Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0005-Support-snapshot-resets-in-concurrent-builds-of-.patch" Content-Disposition: attachment; filename="v25-0005-Support-snapshot-resets-in-concurrent-builds-of-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhaumwjo7 RnJvbSA0MTFmMjk1Yzk0MTY4ZWFiYzhkNmYyNjQxMGQxMDRjOTcyMWViYjViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVGh1LCA2IE1hciAyMDI1IDE0OjU0OjQ0ICswMTAwClN1YmplY3Q6IFtQ QVRDSCB2MjUgMDUvMTJdIFN1cHBvcnQgc25hcHNob3QgcmVzZXRzIGluIGNvbmN1cnJlbnQgYnVp 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 L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCAzMmI3ZTYzMTFlYi4uMDY2OTQwN2Jl MGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTE1MzMsNyArMTUzMyw3IEBAIGluZGV4X2NvbmN1cnJl bnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAJaW5kZXhfYnVpbGQoaGVhcFJlbCwgaW5k ZXhSZWxhdGlvbiwgaW5kZXhJbmZvLCBmYWxzZSwgdHJ1ZSk7CiAKIAlJbnZhbGlkYXRlQ2F0YWxv Z1NuYXBzaG90KCk7Ci0JQXNzZXJ0KGluZGV4SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KE15UHJvYy0+eG1pbikpOwogCiAJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRl ZCBieSBpbmRleCBmdW5jdGlvbnMgKi8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxl dmVsKTsKQEAgLTMzMjQsOSArMzMyNCw5IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogICogaWYgd2UgdXNlZCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0pLiAg VGhpcyBsZWF2ZXMgdXMgd2l0aCBhbiBpbmRleCB0aGF0CiAgKiBkb2VzIG5vdCBjb250YWluIGFu eSB0dXBsZXMgYWRkZWQgdG8gdGhlIHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRoZSBpbmRleC4KICAq Ci0gKiBGdXJ0aGVybW9yZSwgaW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4IHdlIHNldCBTT19S RVNFVF9TTkFQU0hPVCBmb3IgdGhlCi0gKiBzY2FuLCB3aGljaCBjYXVzZXMgbmV3IHNuYXBzaG90 IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFzb24KLSAqIGZvciB0 aGF0IGlzIHRvIHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9uIGZvcndhcmQuCisgKiBGdXJ0aGVy bW9yZSwgd2Ugc2V0IFNPX1JFU0VUX1NOQVBTSE9UIGZvciB0aGUgc2Nhbiwgd2hpY2ggY2F1c2Vz IG5ldworICogc25hcHNob3QgdG8gYmUgc2V0IGFzIGFjdGl2ZSBldmVyeSBzbyBvZnRlbi4gVGhl IHJlYXNvbiAgZm9yIHRoYXQgaXMgdG8KKyAqIHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9uIGZv cndhcmQuCiAgKgogICogTmV4dCwgd2UgbWFyayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQg c3RpbGwgbm90ICJpbmRpc3ZhbGlkIikgYW5kCiAgKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2Fj dGlvbiBhbmQgc3RhcnQgYSB0aGlyZC4gIEFnYWluIHdlIHdhaXQgZm9yIGFsbApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9pbmRleGNtZHMuYwppbmRleCBhNzk5NDY1MmVhZC4uZGRhMWViMGU5NGMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2luZGV4Y21kcy5jCkBAIC0xNjkzLDggKzE2OTMsOCBAQCBEZWZpbmVJbmRleChPaWQgdGFi bGVJZCwKIAkgKiBjaGFpbnMgY2FuIGJlIGNyZWF0ZWQgd2hlcmUgdGhlIG5ldyB0dXBsZSBhbmQg dGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBjaGFpbiBoYXZlIGRpZmZlcmVudCBpbmRleCBrZXlz LgogCSAqCi0JICogV2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUg dmlzaWJsZSB1c2luZyBzaW5nbGUgb3IKLQkgKiBtdWx0aXBsZSByZWZyZXNoaW5nIHNuYXBzaG90 cy4gV2UgY2FuIGJlIHN1cmUgdGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KKwkgKiBXZSBidWlsZCB0 aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0aGF0IGFyZSB2aXNpYmxlIHVzaW5nIG11bHRpcGxl CisJICogcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1 cGRhdGVzIHRvCiAJICogdGhlc2UgdHVwbGVzIHdpbGwgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBp bmRleCwgc2luY2UgYW55IHVwZGF0ZXMgbWFkZQogCSAqIGJ5IHRyYW5zYWN0aW9ucyB0aGF0IGRp ZG4ndCBrbm93IGFib3V0IHRoZSBpbmRleCBhcmUgbm93IGNvbW1pdHRlZCBvcgogCSAqIHJvbGxl ZCBiYWNrLiAgVGh1cywgZWFjaCB2aXNpYmxlIHR1cGxlIGlzIGVpdGhlciB0aGUgZW5kIG9mIGl0 cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jCmluZGV4IDg5MGNk YmUxMjA0Li4xY2UyZTJhZDYzYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90 dXBsZXNvcnR2YXJpYW50cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0 dmFyaWFudHMuYwpAQCAtMjQsNiArMjQsOCBAQAogI2luY2x1ZGUgImFjY2Vzcy9oYXNoLmgiCiAj aW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9uYnRyZWUu aCIKKyNpbmNsdWRlICJhY2Nlc3MvcmVsc2Nhbi5oIgorI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFt LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29s bGF0aW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKQEAgLTMzLDYgKzM1LDcg QEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIK ICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIK IAogCiAvKiBzb3J0LXR5cGUgY29kZXMgZm9yIHNvcnRfX3N0YXJ0IHByb2JlcyAqLwpAQCAtMTM0 LDYgKzEzNyw3IEBAIHR5cGVkZWYgc3RydWN0CiAKIAlib29sCQllbmZvcmNlVW5pcXVlOwkvKiBj b21wbGFpbiBpZiB3ZSBmaW5kIGR1cGxpY2F0ZSB0dXBsZXMgKi8KIAlib29sCQl1bmlxdWVOdWxs c05vdERpc3RpbmN0OyAvKiB1bmlxdWUgY29uc3RyYWludCBudWxsIHRyZWF0bWVudCAqLworCWJv b2wJCXVuaXF1ZURlYWRJZ25vcmVkOyAvKiBpZ25vcmUgZGVhZCB0dXBsZXMgaW4gdW5pcXVlIGNo ZWNrICovCiB9IFR1cGxlc29ydEluZGV4QlRyZWVBcmc7CiAKIC8qCkBAIC0zNTksNiArMzYzLDcg QEAgdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJCQkJ UmVsYXRpb24gaW5kZXhSZWwsCiAJCQkJCQkJYm9vbCBlbmZvcmNlVW5pcXVlLAogCQkJCQkJCWJv b2wgdW5pcXVlTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQlib29sIHVuaXF1ZURlYWRJZ25vcmVk LAogCQkJCQkJCWludCB3b3JrTWVtLAogCQkJCQkJCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUs CiAJCQkJCQkJaW50IHNvcnRvcHQpCkBAIC00MDEsNiArNDA2LDcgQEAgdHVwbGVzb3J0X2JlZ2lu X2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJYXJnLT5pbmRleC5pbmRleFJlbCA9IGlu ZGV4UmVsOwogCWFyZy0+ZW5mb3JjZVVuaXF1ZSA9IGVuZm9yY2VVbmlxdWU7CiAJYXJnLT51bmlx dWVOdWxsc05vdERpc3RpbmN0ID0gdW5pcXVlTnVsbHNOb3REaXN0aW5jdDsKKwlhcmctPnVuaXF1 ZURlYWRJZ25vcmVkID0gdW5pcXVlRGVhZElnbm9yZWQ7CiAKIAlpbmRleFNjYW5LZXkgPSBfYnRf bWtzY2Fua2V5KGluZGV4UmVsLCBOVUxMKTsKIApAQCAtMTY1NCw2ICsxNjYwLDcgQEAgY29tcGFy ZXR1cF9pbmRleF9idHJlZV90aWVicmVhayhjb25zdCBTb3J0VHVwbGUgKmEsIGNvbnN0IFNvcnRU dXBsZSAqYiwKIAkJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJCWJvb2wJCWlzbnVs bFtJTkRFWF9NQVhfS0VZU107CiAJCWNoYXIJICAgKmtleV9kZXNjOworCQlib29sCQl1bmlxdWVD aGVja0ZhaWwgPSB0cnVlOwogCiAJCS8qCiAJCSAqIFNvbWUgcmF0aGVyIGJyYWluLWRlYWQgaW1w bGVtZW50YXRpb25zIG9mIHFzb3J0IChzdWNoIGFzIHRoZSBvbmUgaW4KQEAgLTE2NjMsMTggKzE2 NzAsNTggQEAgY29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayhjb25zdCBTb3J0VHVwbGUg KmEsIGNvbnN0IFNvcnRUdXBsZSAqYiwKIAkJICovCiAJCUFzc2VydCh0dXBsZTEgIT0gdHVwbGUy KTsKIAotCQlpbmRleF9kZWZvcm1fdHVwbGUodHVwbGUxLCB0dXBEZXMsIHZhbHVlcywgaXNudWxs KTsKLQotCQlrZXlfZGVzYyA9IEJ1aWxkSW5kZXhWYWx1ZURlc2NyaXB0aW9uKGFyZy0+aW5kZXgu aW5kZXhSZWwsIHZhbHVlcywgaXNudWxsKTsKLQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJj b2RlKEVSUkNPREVfVU5JUVVFX1ZJT0xBVElPTiksCi0JCQkJIGVycm1zZygiY291bGQgbm90IGNy ZWF0ZSB1bmlxdWUgaW5kZXggXCIlc1wiIiwKLQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1l KGFyZy0+aW5kZXguaW5kZXhSZWwpKSwKLQkJCQkga2V5X2Rlc2MgPyBlcnJkZXRhaWwoIktleSAl cyBpcyBkdXBsaWNhdGVkLiIsIGtleV9kZXNjKSA6Ci0JCQkJIGVycmRldGFpbCgiRHVwbGljYXRl IGtleXMgZXhpc3QuIiksCi0JCQkJIGVycnRhYmxlY29uc3RyYWludChhcmctPmluZGV4LmhlYXBS ZWwsCi0JCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4LmluZGV4UmVs KSkpKTsKKwkJLyogVGhpcyBpcyBmYWlsLWZhc3QgY2hlY2ssIHNlZSBfYnRfbG9hZCBmb3IgZGV0 YWlscy4gKi8KKwkJaWYgKGFyZy0+dW5pcXVlRGVhZElnbm9yZWQpCisJCXsKKwkJCWJvb2wJYW55 X3R1cGxlX2RlYWQsCisJCQkJCWNhbGxfYWdhaW4gPSBmYWxzZSwKKwkJCQkJaWdub3JlZDsKKwor CQkJVHVwbGVUYWJsZVNsb3QJKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRp b25HZXREZXNjcihhcmctPmluZGV4LmhlYXBSZWwpLAorCQkJCQkJCQkJCQkJCQkJICZUVFNPcHNC dWZmZXJIZWFwVHVwbGUpOworCQkJSXRlbVBvaW50ZXJEYXRhIHRpZCA9IHR1cGxlMS0+dF90aWQ7 CisKKwkJCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNoID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVn aW4oYXJnLT5pbmRleC5oZWFwUmVsKTsKKwkJCWFueV90dXBsZV9kZWFkID0gIXRhYmxlX2luZGV4 X2ZldGNoX3R1cGxlKGZldGNoLCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZjYWxsX2FnYWlu LCAmaWdub3JlZCk7CisKKwkJCWlmICghYW55X3R1cGxlX2RlYWQpCisJCQl7CisJCQkJY2FsbF9h Z2FpbiA9IGZhbHNlOworCQkJCXRpZCA9IHR1cGxlMi0+dF90aWQ7CisJCQkJYW55X3R1cGxlX2Rl YWQgPSAhdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0dXBsZTItPnRfdGlkLCBTbmFw c2hvdFNlbGYsIHNsb3QsICZjYWxsX2FnYWluLAorCQkJCQkJCQkJCQkJCQkgICZpZ25vcmVkKTsK KwkJCX0KKworCQkJaWYgKGFueV90dXBsZV9kZWFkKQorCQkJeworCQkJCWVsb2coREVCVUc1LCAi c2tpcHBpbmcgZHVwbGljYXRlIHZhbHVlcyBiZWNhdXNlIHNvbWUgb2YgdGhlbSBhcmUgZGVhZDog KCV1LCV1KSB2cyAoJXUsJXUpIiwKKwkJCQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJnR1 cGxlMS0+dF90aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnR1cGxlMS0+ dF90aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmdHVwbGUyLT50X3RpZCks CisJCQkJCSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdHVwbGUyLT50X3RpZCkpOworCisJ CQkJdW5pcXVlQ2hlY2tGYWlsID0gZmFsc2U7CisJCQl9CisJCQlFeGVjRHJvcFNpbmdsZVR1cGxl VGFibGVTbG90KHNsb3QpOworCQkJdGFibGVfaW5kZXhfZmV0Y2hfZW5kKGZldGNoKTsKKwkJCUFz c2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJCX0KKwkJaWYgKHVu aXF1ZUNoZWNrRmFpbCkKKwkJeworCQkJaW5kZXhfZGVmb3JtX3R1cGxlKHR1cGxlMSwgdHVwRGVz LCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCWtleV9kZXNjID0gQnVpbGRJbmRleFZhbHVlRGVzY3Jp cHRpb24oYXJnLT5pbmRleC5pbmRleFJlbCwgdmFsdWVzLCBpc251bGwpOworCisJCQkvKiBrZWVw IHRoaXMgZXJyb3IgbWVzc2FnZSBpbiBzeW5jIHdpdGggdGhlIHNhbWUgaW4gX2J0X2xvYWQgKi8K KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5JUVVFX1ZJT0xBVElP TiksCisJCQkJCQkJZXJybXNnKCJjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCBcIiVzXCIi LAorCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4LmluZGV4UmVs KSksCisJCQkJCQkJa2V5X2Rlc2MgPyBlcnJkZXRhaWwoIktleSAlcyBpcyBkdXBsaWNhdGVkLiIs IGtleV9kZXNjKSA6CisJCQkJCQkJZXJyZGV0YWlsKCJEdXBsaWNhdGUga2V5cyBleGlzdC4iKSwK KwkJCQkJCQllcnJ0YWJsZWNvbnN0cmFpbnQoYXJnLT5pbmRleC5oZWFwUmVsLAorCQkJCQkJCQkJ CQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4LmluZGV4UmVsKSkpKTsKKwkJ fQogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKaW5kZXggOWFiNDY3Y2I4ZmQuLjBjOWYwZTFmM2E2 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL25idHJlZS5oCkBAIC0xMzQwLDggKzEzNDAsMTAgQEAgZXh0ZXJuIGJvb2wgYnRw cm9wZXJ0eShPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8sCiBleHRlcm4gY2hhciAqYnRidWlsZHBo YXNlbmFtZShpbnQ2NCBwaGFzZW51bSk7CiBleHRlcm4gSW5kZXhUdXBsZSBfYnRfdHJ1bmNhdGUo UmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LAogCQkJCQkJCSAgIEluZGV4VHVwbGUg Zmlyc3RyaWdodCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5KTsKK2V4dGVybiBpbnQJX2J0X2tlZXBf bmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0 cmlnaHQsCisJCQkJCQkgICBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIGJvb2wgKmhhc251bGxzKTsK IGV4dGVybiBpbnQJX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUg bGFzdGxlZnQsCi0JCQkJCQkJCUluZGV4VHVwbGUgZmlyc3RyaWdodCk7CisJCQkJCQkJCUluZGV4 VHVwbGUgZmlyc3RyaWdodCwgYm9vbCAqaGFzbnVsbHMpOwogZXh0ZXJuIGJvb2wgX2J0X2NoZWNr X25hdHRzKFJlbGF0aW9uIHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsIFBhZ2UgcGFnZSwKIAkJCQkJ CQlPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIGV4dGVybiB2b2lkIF9idF9jaGVja190aGlyZF9wYWdl KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IDYxMzYx NWM3OGNkLi44ZjVhYTBkNzE0NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxl YW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC0xNzYzLDkgKzE3NjMs OCBAQCB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRy YW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2Ug Zm9yIGhlYXAgQU0sIGl0IG1pZ2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhl ciBBTXMgbGF0ZXIuCiAgKgotICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGNvbmN1cnJlbnQgIGlu ZGV4IGJ1aWxkIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGFwcGxpZWQKLSAqIGZvciB0aGUgc2Nhbi4g VGhhdCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNob3RzIG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1p bgotICogaG9yaXpvbiBwcm9wYWdhdGUuCisgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgaW5kZXgg YnVpbGQgU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhlIHNjYW4uCisgKiBUaGF0 IGxlYWRzIGZvciBjaGFuZ2luZyBzbmFwc2hvdHMgb24gdGhlIGZseSB0byBhbGxvdyB4bWluIGhv cml6b24gcHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJsZQogdGFibGVfaW5kZXhf YnVpbGRfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91 dGlscy90dXBsZXNvcnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oCmluZGV4IGVm NzlmMjU5ZjkzLi5lYjliYzMwZTVkYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVw bGVzb3J0LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKQEAgLTQyOSw2ICs0 MjksNyBAQCBleHRlcm4gVHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJl ZShSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCQkJCQkJICAgUmVsYXRpb24gaW5kZXhSZWwsCiAJ CQkJCQkJCQkJCQkgICBib29sIGVuZm9yY2VVbmlxdWUsCiAJCQkJCQkJCQkJCQkgICBib29sIHVu aXF1ZU51bGxzTm90RGlzdGluY3QsCisJCQkJCQkJCQkJCQkgICBib29sCXVuaXF1ZURlYWRJZ25v cmVkLAogCQkJCQkJCQkJCQkJICAgaW50IHdvcmtNZW0sIFNvcnRDb29yZGluYXRlIGNvb3JkaW5h dGUsCiAJCQkJCQkJCQkJCQkgICBpbnQgc29ydG9wdCk7CiBleHRlcm4gVHVwbGVzb3J0c3RhdGUg KnR1cGxlc29ydF9iZWdpbl9pbmRleF9oYXNoKFJlbGF0aW9uIGhlYXBSZWwsCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3Nu YXBzaG90cy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQv Y2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKaW5kZXggNTk1YTQwMDBjZTAuLjlmMDNmYTMwMzNjIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2lj X3Jlc2V0X3NuYXBzaG90cy5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CkBAIC00MSw3ICs0MSwxMSBAQCBF TkQ7ICQkOwogLS0tLS0tLS0tLS0tLS0tLQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJs IFNFVCAocGFyYWxsZWxfd29ya2Vycz0wKTsKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBz aG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBf cmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3Nu YXBzaG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJs KGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxl X2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKQEAgLTg2LDcgKzkwLDkgQEAgU0VMRUNU IGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0 aXZlJyk7CiAoMSByb3cpCiAKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQog RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0 aWFsaXplCi0tIAoyLjQ4LjEKCg== --000000000000b0374806423c4f93 Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Disposition: attachment; filename="v25-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhaumwjx10 RnJvbSBiYWQ4MjZiZWEzNDI0ZTkxZjM4YjA1MjYyMTU3YjBhZTU3NDM3MjNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDowOTo1MiArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI1IDAxLzEyXSBUaGlzIGlzIGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9y 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 CX0KIH0KIAotLSAKMi40OC4xCgo= --000000000000b0374806423c4f93 Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0002-Add-stress-tests-for-concurrent-index-builds.patch" Content-Disposition: attachment; filename="v25-0002-Add-stress-tests-for-concurrent-index-builds.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhaumwjz11 RnJvbSA3MGI4ZTYxNDdjZWJjYzQyN2I0ZGY0MTljYWM3Y2M3ZjkwNTY5NzNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjI1IDAyLzEyXSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IGJ1 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 NDguMQoK --000000000000b0374806423c4f93--