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.96) (envelope-from ) id 1w465u-001rVi-0D for pgsql-hackers@arkaria.postgresql.org; Sat, 21 Mar 2026 23:51:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w465q-00BzsR-23 for pgsql-hackers@arkaria.postgresql.org; Sat, 21 Mar 2026 23:50:59 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w465p-00BzsI-24 for pgsql-hackers@lists.postgresql.org; Sat, 21 Mar 2026 23:50:58 +0000 Received: from mail-lf1-x134.google.com ([2a00:1450:4864:20::134]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w465n-00000000ONp-2WTQ for pgsql-hackers@lists.postgresql.org; Sat, 21 Mar 2026 23:50:57 +0000 Received: by mail-lf1-x134.google.com with SMTP id 2adb3069b0e04-5a12c19affeso3450222e87.1 for ; Sat, 21 Mar 2026 16:50:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774137054; cv=none; d=google.com; s=arc-20240605; b=PiRoSL5n93SmvItgzzmyxT+e8+G3WNnmRDLqSmU+uwiWCgDP7sceuHKMdVu+eWGA4M /uLNcfpOKFCyykow+BYDXtPEM9Xl1bWHZBjrQ0ISAKHO9UGM+LBG+a1FVHqsweEZxNh7 cN/nUTeSlmmNaM8mNmRm9W9dHoZ7LASaEYdRKOLFfWb8DQbCuNIN0McIA0pl8ZhmV5Vh 4BXt3rFNJ9pzVvjaGASYUHCDyRYqKu36AvMO9KVqdnd3vZWbgKWD3s+9JGxxojens4L5 hiZY2OEeSapBel+B4Ic5V6yxFISbvKMZBaKDVZZ/BdR2miPBPEdAlGE/N3VRsCLZ+296 DKRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=RZv6hGzshlZ38RJQAZy3KcseirmsefUIWK/n6AEhw3M=; fh=tBFpamE+6Amj1My6BTryAXJkuAmHGbhLFsdOr0Cj/S4=; b=kxw+YquPivCh9xM8Lpwi2k1Pxi8p3aFMdXTq7ckumj9vzrUCqlYbFvXpUrtPcWixw9 pfFY4Q78zTgNql92Qo0zYNXIZwfervmaoFgBcZmi0QIHzInMSWRcI7Ur9uXG8X3TUY2J xr8uZgomXIPc20kg+1HjL3ST1r8LqejD4Ssl4RzA8GFO/dp3ifwwVD0mw1lUm2XraFEL AKuqPHFzCL+3A8EXG/0FQrU3+/tTwrW4I3anIDlu9J/iDunUc/M0+IWePFav4mlJOdhU OWaHzGeW+T03l0bMUQmwtQQPnd7XorNT48TYq22j4i9gWki6KlR9PY3psaQBBKRVRJ0g cy+A==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774137054; x=1774741854; darn=lists.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=RZv6hGzshlZ38RJQAZy3KcseirmsefUIWK/n6AEhw3M=; b=aZEblRHBhKKr5ZBixojgSKjaybwMhpFCTlCM2/LK6dIIiQ+zOVpRtSZtgyIr2bncj9 8xqUPIhXkD9sNVOICkcvXOwzioohUY6bO/LDgLvTjVgD8aGv8gENTgiQFGTotGvgmGA0 tbIDTv1rklfDc5PhC9mMy8BXANVI2DeFaafjVXbzOah3TqchMVLLgcXdP/GUuS5C5lsI Ve2mq9Dr6D8Ycx1Ntel6ayLnG5eEQM9ayhyPHj2NDhjGJufC2k0NDl4NYr9JjIuCtccj H2y3aXRVQHHkt66vENtcWYiyP+Y55BZxejZiJjEIkci5FYDnX+AB0Bv67/Ev1TQ3NUCS EX/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774137054; x=1774741854; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=RZv6hGzshlZ38RJQAZy3KcseirmsefUIWK/n6AEhw3M=; b=UqB5Px6OkVpAVJ57pNHkez4qIqVKC9u91/xPg9ihA4det/iOZtPT5obani0aHtQP8E fJUKYHteSKZhNBmGTlA6SgJ7+QJWd9byfWLkv2H33YJ2hqHuKQjnm8sa742m2zBGHvbJ Kntv0hYOkZSOcwdxcAjWX8ilfYU1U6g+XTYJIGxg7xHwQrzvuIXffXEpw/RMGjn08upF 0mwJ5Tmbt4XjrMuW6B9AUMimU8A1nnLtmAy2RBzvIj8xCIOQslJKcu/wzNxso17ZVvHJ aPftLrs0L6vAtFUEdTI/0hNls3lFxpxYeHNHimnxPJywgFB0CVF4iRVfwZnkp3ejXTQj kfYw== X-Gm-Message-State: AOJu0YydvSo5cA3eY+5THNl8cc60//E+Sd20EpGo5tlJUoRDqTe0R1HQ s7pEjR5Ndcs23CTwETgVsUHrWSK1MZ0nChnQUyfbo6aXtoTpH3S8/riF8JxMdj8Q4waczz790Vx 6lLLE+iPgiRjae7yX2ov0ietPhx0aaOg= X-Gm-Gg: ATEYQzzJwWgW/G67sfEjzZ5U8DccZNq+mWPb+6yi5dSLsjT/K1YxT45HD/J4LjMlmpV qlbhFwHA5m604w/xqGPZgXD42UqG7HRC6OZPV3wgdvCSsaZqktjrLsrKU/HRNpuJDWTQDBMdPmQ yaKuBU//UsR0uKNg47xyr4dqQaqLuaWMQl+JKtmfxN5qZH+ENXACbiPrK6cd4yjLjbhTtRkB9EB pl3bsM/YLBkARnA9YLGXTzpaegveixQ19szzZXI7+Qe3TDjswkpzGE+KGO4P5SdzfPHsvW0fJgK CQwLflnDlR9IZWSigHcsAdNTnSwl8WjmGA8thMRQXeU77YyCSUqMPHbY2tyaukHTEsbv X-Received: by 2002:a05:6512:618:10b0:5a2:85b0:1561 with SMTP id 2adb3069b0e04-5a285b01750mr1365623e87.13.1774137053517; Sat, 21 Mar 2026 16:50:53 -0700 (PDT) MIME-Version: 1.0 References: <202603201104.4wwpevsp4w57@alvherre.pgsql> In-Reply-To: <202603201104.4wwpevsp4w57@alvherre.pgsql> From: Mihail Nikalayeu Date: Sun, 22 Mar 2026 00:50:00 +0100 X-Gm-Features: AaiRm53p3eeK5M9GSlUmmgPOHeyeG7Ewpm7rj5FIZ5nG9O9wDUZTfsOpRSALj6Q Message-ID: Subject: Re: Resetting snapshots during the first phase of [CREATE |RE]INDEX CONCURRENTLY To: =?UTF-8?Q?=C3=81lvaro_Herrera?= Cc: PostgreSQL Hackers , Matthias van de Meent , Antonin Houska , Sergey Sargsyan , Hannu Krosing Content-Type: multipart/mixed; boundary="000000000000dbacbc064d91788d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000dbacbc064d91788d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello, =C3=81lvaro! Thanks for looking into it. > Or should we just consider the test as not-for-commit, and only a > development aid? Initially I thought so, but looks like it is possible to make it committabl= e. > The test in 0001 is a bit on the slow side; should we make it > optional with PG_TEST_EXTRA? I made *parameters* to be depended on PG_TEST_EXTRA ~=3D stress. It is possible to apply the same pattern for other stress tests too. > The last pgbench subtest mentions GIN in the test name but doesn't > actually run it. Do we care? Would it be good to make the table be > unlogged? Fixed, it has its own pgbench because it has its own gin_index_check. > Would it be good to make the table be unlogged? Good idea, done. > I think all-but-one backends will >complete all the 999 transactions in the first 10ms sleep that the one > backend running the CIC does. Am I right about this? It actually has enough time to do multiple CIC (I see it from the log). I updated the test to random delay, for non-stress variants - from 0 to 1, for stress - up to 10. Also, fixed a few small styling issues + added additional fixes for waiting for a snapshot to be restored by a parallel worker. Best regards, Mikhail. --000000000000dbacbc064d91788d Content-Type: application/octet-stream; name="v4-0002-Reset-snapshots-periodically-in-non-unique-non-pa.patch" Content-Disposition: attachment; filename="v4-0002-Reset-snapshots-periodically-in-non-unique-non-pa.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn0x7cml1 RnJvbSAyNGExMzQ2OTk1YTJmYmE4OGZjOWExM2Y3MTczODk4NmY1ZmMyZDBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxNCBKYW4gMjAyNiAxNTo1OTo0NyArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjQgMi80XSBSZXNldCBzbmFwc2hvdHMgcGVyaW9kaWNhbGx5IGluIG5vbi11bmlxdWUK IG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcwoKTG9uZy1saXZpbmcgc25hcHNo b3RzIHVzZWQgYnkgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBDT05DVVJS RU5UTFkgY2FuIGhvbGQgYmFjayB0aGUgZ2xvYmFsIHhtaW4gaG9yaXpvbi4gQ29tbWl0IGQ5ZDA3 NjIyMmY1YiBhdHRlbXB0ZWQgdG8gYWxsb3cgVkFDVVVNIHRvIGlnbm9yZSBzdWNoIHNuYXBzaG90 cyB0byBtaXRpZ2F0ZSB0aGlzIHByb2JsZW0uIEhvd2V2ZXIsIHRoaXMgd2FzIHJldmVydGVkIGlu IGNvbW1pdCBlMjhiYjg4NTE5NjkgYmVjYXVzZSBpdCBjb3VsZCBjYXVzZSBpbmRleGVzIHRvIG1p c3MgaGVhcCB0dXBsZXMgdGhhdCB3ZXJlIEhPVC11cGRhdGVkIGFuZCBIT1QtcHJ1bmVkIGR1cmlu ZyB0aGUgaW5kZXggY3JlYXRpb24sIGxlYWRpbmcgdG8gaW5kZXggY29ycnVwdGlvbi4KClRoaXMg cGF0Y2ggaW50cm9kdWNlcyBhbiBhbHRlcm5hdGl2ZSBieSBwZXJpb2RpY2FsbHkgcmVzZXR0aW5n IHRoZSBzbmFwc2hvdCB1c2VkIGR1cmluZyB0aGUgZmlyc3QgcGhhc2UuIEJ5IHJlc2V0dGluZyB0 aGUgc25hcHNob3QgZXZlcnkgTiBwYWdlcyBkdXJpbmcgdGhlIGhlYXAgc2NhbiwgaXQgYWxsb3dz IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4KCkN1cnJlbnRseSwgdGhpcyB0ZWNobmlxdWUg aXMgYXBwbGllZCB0bzoKCi0gb25seSBkdXJpbmcgdGhlIGZpcnN0IHNjYW4gb2YgdGhlIGhlYXA6 IFRoZSBzZWNvbmQgc2NhbiBkdXJpbmcgaW5kZXggdmFsaWRhdGlvbiBzdGlsbCB1c2VzIGEgc2lu Z2xlIHNuYXBzaG90IHRvIGVuc3VyZSBpbmRleCBjb3JyZWN0bmVzcwotIG5vbi1wYXJhbGxlbCBp bmRleCBidWlsZHM6IFBhcmFsbGVsIGluZGV4IGJ1aWxkcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQg YW5kIHdpbGwgYmUgYWRkcmVzc2VkIGluIGZvbGxvd2luZyBjb21taXRzCi0gbm9uLXVuaXF1ZSBp bmRleGVzOiBVbmlxdWUgaW5kZXggYnVpbGRzIHN0aWxsIHJlcXVpcmUgYSBjb25zaXN0ZW50IHNu YXBzaG90IHRvIGVuZm9yY2UgdW5pcXVlbmVzcyBjb25zdHJhaW50cywgd2lsbCBiZSBhZGRyZXNz ZWQgaW4gZm9sbG93aW5nIGNvbW1pdHMKCkEgbmV3IHNjYW4gb3B0aW9uIFNPX1JFU0VUX1NOQVBT SE9UIGlzIGludHJvZHVjZWQuIFdoZW4gc2V0LCBpdCBjYXVzZXMgdGhlIHNuYXBzaG90IHRvIGJl IHJlc2V0ICJiZXR3ZWVuIiBldmVyeSBTT19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSBwYWdl cyBkdXJpbmcgdGhlIHNjYW4uIFRoZSBoZWFwIHNjYW4gY29kZSBpcyBhZGp1c3RlZCB0byBzdXBw b3J0IHRoaXMgb3B0aW9uLCBhbmQgdGhlIGluZGV4IGJ1aWxkIGNvZGUgaXMgbW9kaWZpZWQgdG8g dXNlIGl0IGZvciBhcHBsaWNhYmxlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRoYXQgYXJlIG5v dCBvbiBzeXN0ZW0gY2F0YWxvZ3MgYW5kIG5vdCB1c2luZyBwYXJhbGxlbCB3b3JrZXJzLgotLS0K IGNvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMgICAgICAgICAgICAgICB8ICAgMyArLQog Y29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jICAgICAgICAgICAgIHwgICAyICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCAgMTkgKystCiBz cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jICAgICAgICAgICAgfCAgMjIgKysrKwog c3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgICAgICAgICAgIHwgICA0ICsKIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAgICAgfCAgNDcgKysrKysrLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgIDU3ICsrKysr KystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgICAgfCAgMzAg KysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMgICAgICAgICB8ICAg MyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgICAgICAgICAgICAgfCAgMTEg KysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8ICAzMSAr KysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgIDE3 ICstLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgIDEw ICsrCiBzcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyAgICAgICAgICAgICAgICAgICAgfCAgIDMg Kwogc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29kZXMudHh0ICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwgICAgICAgICAgICAgICB8ICAgMiArLQog c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNy Yy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgICAgICB8ICAyOCArKysrLQog c3JjL2luY2x1ZGUvYWNjZXNzL3hhY3QuaCAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZSAgICB8ICAgMiArLQogLi4u L2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0ICAgICAgICAgIHwgMTE1ICsrKysrKysr KysrKysrKysrKwogc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxk IHwgICAxICsKIC4uLi9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwgICAgICAgICAgICAgICB8 ICA5NSArKysrKysrKysrKysrKysKIDI1IGZpbGVzIGNoYW5nZWQsIDQ3NCBpbnNlcnRpb25zKCsp LCAzNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNl dF9zbmFwc2hvdHMuc3FsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRy ZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKaW5kZXggYjc0YWI1ZjdhMDUu LjQwODc0MTY3NjMxIDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5j CisrKyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKQEAgLTU1Nyw3ICs1NTcsOCBA QCBidF9jaGVja19ldmVyeV9sZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJv b2wgaGVhcGtleXNwYWNlLAogCQkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJ CQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNj ZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCQkgdHJ1ZSk7IC8qIHN5bmNzY2FuIE9LPyAqLwor CQkJCQkJCQkJIHRydWUsIC8qIHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIGZhbHNlKTsKIAog CQkvKgogCQkgKiBTY2FuIHdpbGwgYmVoYXZlIGFzIHRoZSBmaXJzdCBzY2FuIG9mIGEgQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0 YXR0dXBsZS5jIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCmluZGV4IDZhN2Y4 Y2I0YTdjLi5hMGU3ZWQyZTEzNyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0 YXR0dXBsZS5jCisrKyBiL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwpAQCAtMzM1 LDcgKzMzNSw3IEBAIHBnc3RhdF9oZWFwKFJlbGF0aW9uIHJlbCwgRnVuY3Rpb25DYWxsSW5mbyBm Y2luZm8pCiAJCQkJIGVycm1zZygib25seSBoZWFwIEFNIGlzIHN1cHBvcnRlZCIpKSk7CiAKIAkv KiBEaXNhYmxlIHN5bmNzY2FuIGJlY2F1c2Ugd2UgYXNzdW1lIHdlIHNjYW4gZnJvbSBibG9jayB6 ZXJvIHVwd2FyZHMgKi8KLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KHJlbCwgU25hcHNo b3RBbnksIDAsIE5VTEwsIHRydWUsIGZhbHNlKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0 cmF0KHJlbCwgU25hcHNob3RBbnksIDAsIE5VTEwsIHRydWUsIGZhbHNlLCBmYWxzZSk7CiAJaHNj YW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOwogCiAJSW5pdERpcnR5U25hcHNob3QoU25hcHNob3RE aXJ0eSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggMmEwZjhjOGUzYjguLjg1MzRkNzEyNWEw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0xMjIxLDExICsxMjIxLDEyIEBAIGJyaW5idWls ZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJ CXN0YXRlLT5ic19zb3J0c3RhdGUgPQogCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2JyaW4obWFp bnRlbmFuY2Vfd29ya19tZW0sIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkgICBUVVBMRVNPUlRfTk9O RSk7Ci0KKwkJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwogCQkvKiBzY2FuIHRoZSByZWxh dGlvbiBhbmQgbWVyZ2UgcGVyLXdvcmtlciByZXN1bHRzICovCiAJCXJlbHR1cGxlcyA9IF9icmlu X3BhcmFsbGVsX21lcmdlKHN0YXRlKTsKIAogCQlfYnJpbl9lbmRfcGFyYWxsZWwoc3RhdGUtPmJz X2xlYWRlciwgc3RhdGUpOworCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCWVsc2UJCQkJCQkvKiBu byBwYXJhbGxlbCBpbmRleCBidWlsZCAqLwogCXsKQEAgLTEyMzgsNiArMTIzOSw3IEBAIGJyaW5i dWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8p CiAJCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oaGVhcCwgaW5kZXgsIGluZGV4 SW5mbywgZmFsc2UsIHRydWUsCiAJCQkJCQkJCQkJICAgYnJpbmJ1aWxkQ2FsbGJhY2ssIHN0YXRl LCBOVUxMKTsKIAorCQlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CiAJCS8qCiAJCSAqIHBy b2Nlc3MgdGhlIGZpbmFsIGJhdGNoCiAJCSAqCkBAIC0xMjU3LDYgKzEyNTksNyBAQCBicmluYnVp bGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQog CQlicmluX2ZpbGxfZW1wdHlfcmFuZ2VzKHN0YXRlLAogCQkJCQkJCSAgIHN0YXRlLT5ic19jdXJy UmFuZ2VTdGFydCwKIAkJCQkJCQkgICBzdGF0ZS0+YnNfbWF4UmFuZ2VTdGFydCk7CisJCUFzc2Vy dCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKIAl9CiAKIAkvKiByZWxlYXNlIHJlc291cmNlcyAqLwpAQCAtMjM5MCw2ICsy MzkzLDcgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCVdhbFVzYWdlICAgKndhbHVzYWdlOwog CUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0 cnVlOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJaW50CQkJcXVl cnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC0yNDE1LDkg KzI0MTksMTYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIGxpdmUgYWNjb3JkaW5nIHRv IHRoYXQuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQpCisJeworCQlBc3NlcnQoQWN0aXZlU25h cHNob3RTZXQoKSk7CiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CisJCW5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCA9IGZhbHNlOworCX0KIAllbHNlCisJewogCQlzbmFwc2hvdCA9IFJlZ2lzdGVy U25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90 KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJfQogCiAJLyoKIAkgKiBFc3RpbWF0ZSBzaXpl IGZvciBvdXIgb3duIFBBUkFMTEVMX0tFWV9CUklOX1NIQVJFRCB3b3Jrc3BhY2UuCkBAIC0yNDYw LDYgKzI0NzEsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogSWYgbm8gRFNNIHNlZ21l bnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4 dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJ UG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAkJ CVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRleHQo cGN4dCk7CkBAIC0yNTM5LDYgKzI1NTIsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVp bGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyog SWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNl cmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKIAl7CisJ CWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwog CQlfYnJpbl9lbmRfcGFyYWxsZWwoYnJpbmxlYWRlciwgTlVMTCk7CiAJCXJldHVybjsKIAl9CkBA IC0yNTU1LDYgKzI1NzAsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAq YnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogc3VyZSB0aGF0 IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwog CVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0KTsKKwlpZiAobmVlZF9wb3BfYWN0 aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luaW5zZXJ0LmMKaW5kZXggZTU0NzgyZDlkZDguLmMzMDg1ZDE3NGM3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJzdG9y YWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAj aW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5j bHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTY4Myw2ICs2ODQsOSBAQCBnaW5idWlsZChSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJYnVpbGRz dGF0ZS5hY2N1bS5naW5zdGF0ZSA9ICZidWlsZHN0YXRlLmdpbnN0YXRlOwogCWdpbkluaXRCQSgm YnVpbGRzdGF0ZS5hY2N1bSk7CiAKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNz ZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdv cmtlcnMgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCiAJLyogUmVw b3J0IHRhYmxlIHNjYW4gcGhhc2Ugc3RhcnRlZCAqLwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVf cGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfR0lO X1BIQVNFX0lOREVYQlVJTERfVEFCTEVTQ0FOKTsKQEAgLTc0NSwxMSArNzQ5LDEzIEBAIGdpbmJ1 aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykK IAkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9naW4oaGVhcCwgaW5kZXgsCiAJCQkJCQkJCQkgIG1h aW50ZW5hbmNlX3dvcmtfbWVtLCBjb29yZGluYXRlLAogCQkJCQkJCQkJICBUVVBMRVNPUlRfTk9O RSk7CisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAogCQkvKiBzY2FuIHRoZSByZWxh dGlvbiBpbiBwYXJhbGxlbCBhbmQgbWVyZ2UgcGVyLXdvcmtlciByZXN1bHRzICovCiAJCXJlbHR1 cGxlcyA9IF9naW5fcGFyYWxsZWxfbWVyZ2Uoc3RhdGUpOwogCiAJCV9naW5fZW5kX3BhcmFsbGVs KHN0YXRlLT5ic19sZWFkZXIsIHN0YXRlKTsKKwkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1 cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAllbHNl CQkJCQkJLyogbm8gcGFyYWxsZWwgaW5kZXggYnVpbGQgKi8KIAl7CkBAIC03NTksNiArNzY1LDcg QEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5k ZXhJbmZvKQogCQkgKi8KIAkJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihoZWFw LCBpbmRleCwgaW5kZXhJbmZvLCBmYWxzZSwgdHJ1ZSwKIAkJCQkJCQkJCQkgICBnaW5CdWlsZENh bGxiYWNrLCAmYnVpbGRzdGF0ZSwgTlVMTCk7CisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKIAogCQkvKiBkdW1wIHJlbWFpbmluZyBlbnRyaWVzIHRvIHRoZSBpbmRleCAqLwogCQlvbGRD dHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oYnVpbGRzdGF0ZS50bXBDdHgpOwpAQCAtNzcyLDYg Kzc3OSw3IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleElu Zm8gKmluZGV4SW5mbykKIAkJCQkJCSAgIGxpc3QsIG5saXN0LCAmYnVpbGRzdGF0ZS5idWlsZFN0 YXRzKTsKIAkJfQogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4KTsKKwkJQXNzZXJ0KCFp bmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eG1pbikpOwogCX0KIAogCU1lbW9yeUNvbnRleHREZWxldGUoYnVpbGRzdGF0ZS5mdW5jQ3R4KTsK QEAgLTk0OCw2ICs5NTYsNyBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1 aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCVdhbFVzYWdlICAgKndh bHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNp cGF0ZXMgPSB0cnVlOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJ aW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBA IC05NzIsOSArOTgxLDE2IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogbGl2ZSBhY2NvcmRp bmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKKwl7CisJCUFzc2VydChBY3Rp dmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKKwkJbmVlZF9wb3Bf YWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJfQogCWVsc2UKKwl7CiAJCXNuYXBzaG90ID0gUmVn aXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlQdXNoQWN0aXZlU25h cHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAKIAkvKgogCSAqIEVzdGltYXRl IHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0dJTl9TSEFSRUQgd29ya3NwYWNlLgpAQCAt MTAxNyw2ICsxMDMzLDggQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWls ZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkvKiBJZiBubyBEU00gc2Vn bWVudCB3YXMgYXZhaWxhYmxlLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChw Y3h0LT5zZWcgPT0gTlVMTCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJ CQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQog CQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29udGV4 dChwY3h0KTsKQEAgLTEwOTEsNiArMTEwOSw4IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVp bGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyog SWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNl cmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKIAl7CisJ CWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwog CQlfZ2luX2VuZF9wYXJhbGxlbChnaW5sZWFkZXIsIE5VTEwpOwogCQlyZXR1cm47CiAJfQpAQCAt MTEwNyw2ICsxMTI3LDggQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWls ZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBzdXJlIHRoYXQgdGhl IGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJICovCiAJV2Fp dEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmIChuZWVkX3BvcF9hY3RpdmVf c25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0L2dpc3RidWlsZC5jCmluZGV4IDdmNTdjNzg3ZjRjLi42MjA3ZTlmNWQ4MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJvcHRp bWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2J1bGtfd3JpdGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKIAogI2lu Y2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCkBAIC0yNTks NiArMjYwLDcgQEAgZ2lzdGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRl eEluZm8gKmluZGV4SW5mbykKIAlidWlsZHN0YXRlLmluZHR1cGxlcyA9IDA7CiAJYnVpbGRzdGF0 ZS5pbmR0dXBsZXNTaXplID0gMDsKIAorCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50 IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAlpZiAoYnVpbGRzdGF0 ZS5idWlsZE1vZGUgPT0gR0lTVF9TT1JURURfQlVJTEQpCiAJewogCQkvKgpAQCAtMzUwLDYgKzM1 Miw4IEBAIGdpc3RidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZv ICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3Vs dC0+aW5kZXhfdHVwbGVzID0gKGRvdWJsZSkgYnVpbGRzdGF0ZS5pbmR0dXBsZXM7CisJSW52YWxp ZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50 IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJldHVybiByZXN1 bHQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKaW5kZXggNmRmNWU3Y2NiZDEuLmZkZjRhMzY1OWI4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAibm9k ZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5jYXQuaCIKICNpbmNsdWRl ICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdl L3JlYWRfc3RyZWFtLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUg InV0aWxzL2luZGV4X3NlbGZ1bmNzLmgiCkBAIC0yMTAsNiArMjExLDggQEAgaGFzaGJ1aWxkKFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAogCXJl c3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJcmVzdWx0LT5pbmRleF90dXBsZXMgPSBi dWlsZHN0YXRlLmluZHR1cGxlczsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNz ZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMKaW5kZXggZTViZDA2MmRlNzcuLjUyYjI3ZjAzODRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYwpAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVk ZSAidXRpbHMvc3BjY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorI2luY2x1 ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAKIHN0YXRpYyBIZWFwVHVwbGUgaGVhcF9w cmVwYXJlX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cCwKQEAgLTY5Nyw2 ICs2OTgsMzYgQEAgaGVhcF9wcmVwYXJlX3BhZ2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJ TG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiB9CiAKKy8qCisgKiBSZXNl dCB0aGUgYWN0aXZlIHNuYXBzaG90IGR1cmluZyBhIHNjYW4uCisgKiBUaGlzIGVuc3VyZXMgdGhl IHhtaW4gaG9yaXpvbiBjYW4gYWR2YW5jZSB3aGlsZSBtYWludGFpbmluZyBzYWZlIHR1cGxlIHZp c2liaWxpdHkuCisgKiBOb3RlOiBObyBvdGhlciBzbmFwc2hvdCBzaG91bGQgYmUgYWN0aXZlIGR1 cmluZyB0aGlzIG9wZXJhdGlvbi4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitoZWFwX3Jlc2V0 X3NjYW5fc25hcHNob3QoVGFibGVTY2FuRGVzYyBzc2NhbikKK3sKKwkvKiBNYWtlIHN1cmUgbm8g b3RoZXIgc25hcHNob3Qgd2FzIHNldCBhcyBhY3RpdmUuICovCisJQXNzZXJ0KEdldEFjdGl2ZVNu YXBzaG90KCkgPT0gc3NjYW4tPnJzX3NuYXBzaG90KTsKKwkvKiBBbmQgbWFrZSBzdXJlIGFjdGl2 ZSBzbmFwc2hvdCBpcyBub3QgcmVnaXN0ZXJlZC4gKi8KKwlBc3NlcnQoR2V0QWN0aXZlU25hcHNo b3QoKS0+cmVnZF9jb3VudCA9PSAwKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJc3NjYW4t PnJzX3NuYXBzaG90ID0gSW52YWxpZFNuYXBzaG90OyAvKiBqdXN0IHRvIGJlIHRpZHkgKi8KKwlB c3NlcnQoIUhhdmVSZWdpc3RlcmVkT3JBY3RpdmVTbmFwc2hvdCgpKTsKKwlJbnZhbGlkYXRlQ2F0 YWxvZ1NuYXBzaG90KCk7CisKKwkvKiBUaGUgZ29hbCBvZiBzbmFwc2hvdCByZXNldCBpcyB0byBh bGxvdyBob3Jpem9uIHRvIGFkdmFuY2UuICovCisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKKyNpZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCS8qIEluIHNvbWUg Y2FzZXMgaXQgaXMgc3RpbGwgbm90IHBvc3NpYmxlIGR1ZSB4aWQgYXNzaWduLiAqLworCWlmICgh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKQorCQlJTkpFQ1RJT05fUE9JTlQoImhl YXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUiLCBOVUxMKTsKKyNlbmRpZgorCisJUHVz aEFjdGl2ZVNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOworCXNzY2FuLT5yc19zbmFwc2hv dCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7Cit9CisKIC8qCiAgKiBoZWFwX2ZldGNoX25leHRfYnVm ZmVyIC0gcmVhZCBhbmQgcGluIHRoZSBuZXh0IGJsb2NrIGZyb20gTUFJTl9GT1JLTlVNLgogICoK QEAgLTczOCw3ICs3NjksMTIgQEAgaGVhcF9mZXRjaF9uZXh0X2J1ZmZlcihIZWFwU2NhbkRlc2Mg c2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAKIAlzY2FuLT5yc19jYnVmID0gcmVhZF9zdHJlYW1f bmV4dF9idWZmZXIoc2Nhbi0+cnNfcmVhZF9zdHJlYW0sIE5VTEwpOwogCWlmIChCdWZmZXJJc1Zh bGlkKHNjYW4tPnJzX2NidWYpKQorCXsKIAkJc2Nhbi0+cnNfY2Jsb2NrID0gQnVmZmVyR2V0Qmxv Y2tOdW1iZXIoc2Nhbi0+cnNfY2J1Zik7CisJCWlmIChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYg U09fUkVTRVRfU05BUFNIT1QgJiYKKwkJCXNjYW4tPnJzX2NibG9jayAlIFNPX1JFU0VUX1NOQVBT SE9UX0VBQ0hfTl9QQUdFID09IDApCisJCQloZWFwX3Jlc2V0X3NjYW5fc25hcHNob3QoKFRhYmxl U2NhbkRlc2MpIHNjYW4pOworCX0KIH0KIAogLyoKQEAgLTE0MDksNyArMTQ0NSwxNiBAQCBoZWFw X2VuZHNjYW4oVGFibGVTY2FuRGVzYyBzc2NhbikKIAogCWlmIChzY2FuLT5yc19wYXJhbGxlbHdv cmtlcmRhdGEgIT0gTlVMTCkKIAkJcGZyZWUoc2Nhbi0+cnNfcGFyYWxsZWx3b3JrZXJkYXRhKTsK LQorI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlpZiAoc2Nhbi0+cnNfYmFzZS5yc19mbGFn cyAmIFNPX1JFU0VUX1NOQVBTSE9UKQorCXsKKwkJQXNzZXJ0KCEoc2Nhbi0+cnNfYmFzZS5yc19m bGFncyAmIFNPX1RFTVBfU05BUFNIT1QpKTsKKwkJLyogTWFrZSBzdXJlIG5vIG90aGVyIHNuYXBz aG90IHdhcyBzZXQgYXMgYWN0aXZlLiAqLworCQlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKSA9 PSBzc2Nhbi0+cnNfc25hcHNob3QpOworCQkvKiBBbmQgbWFrZSBzdXJlIHNuYXBzaG90IGlzIG5v dCByZWdpc3RlcmVkLiAqLworCQlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKS0+cmVnZF9jb3Vu dCA9PSAwKTsKKwl9CisjZW5kaWYKIAlpZiAoc2Nhbi0+cnNfYmFzZS5yc19mbGFncyAmIFNPX1RF TVBfU05BUFNIT1QpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChzY2FuLT5yc19iYXNlLnJzX3NuYXBz aG90KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggMjUz YTczNWI2YzEuLjljYWQyZTExNWJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKQEAgLTEyMTksNiArMTIxOSw4IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9z Y2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlFeHByQ29udGV4dCAqZWNvbnRleHQ7CiAJU25h cHNob3QJc25hcHNob3Q7CiAJYm9vbAkJbmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90ID0gZmFsc2U7 CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJYm9vbAkJcmVzZXRf c25hcHNob3RzID0gZmFsc2U7CiAJVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluOwogCUJsb2NrTnVt YmVyIHByZXZpb3VzX2Jsa25vID0gSW52YWxpZEJsb2NrTnVtYmVyOwogCUJsb2NrTnVtYmVyIHJv b3RfYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7CkBAIC0xMjUzLDkgKzEyNTUsNiBAQCBoZWFw YW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJLyogQXJy YW5nZSBmb3IgZWNvbnRleHQncyBzY2FuIHR1cGxlIHRvIGJlIHRoZSB0dXBsZSB1bmRlciB0ZXN0 ICovCiAJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2xvdDsKIAotCS8qIFNldCB1cCBleGVj dXRpb24gc3RhdGUgZm9yIHByZWRpY2F0ZSwgaWYgYW55LiAqLwotCXByZWRpY2F0ZSA9IEV4ZWNQ cmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKLQogCS8qCiAJICog UHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9ybWFsIGluZGV4 IGJ1aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUg YWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCkBAIC0xMjY1LDYgKzEyNjQsMTUgQEAgaGVh cGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCSAqLwog CU9sZGVzdFhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAorCS8qCisJICogRm9yIHVuaXF1 ZSBpbmRleCB3ZSBuZWVkIGNvbnNpc3RlbnQgc25hcHNob3QgZm9yIHRoZSB3aG9sZSBzY2FuLgor CSAqIEluIGNhc2Ugb2YgcGFyYWxsZWwgc2NhbiBzb21lIGFkZGl0aW9uYWwgaW5mcmFzdHJ1Y3R1 cmUgcmVxdWlyZWQKKwkgKiB0byBwZXJmb3JtIHNjYW4gd2l0aCBTT19SRVNFVF9TTkFQU0hPVCB3 aGljaCBpcyBub3QgeWV0IHJlYWR5LgorCSAqLworCXJlc2V0X3NuYXBzaG90cyA9IGluZGV4SW5m by0+aWlfQ29uY3VycmVudCAmJgorCQkJCQkgICFpbmRleEluZm8tPmlpX1VuaXF1ZSAmJgorCQkJ CQkgICFpc19zeXN0ZW1fY2F0YWxvZzsgLyoganVzdCBmb3IgdGhlIGNhc2UgKi8KKwogCS8qIG9r YXkgdG8gaWdub3JlIGxhenkgVkFDVVVNcyBoZXJlICovCiAJaWYgKCFJc0Jvb3RzdHJhcFByb2Nl c3NpbmdNb2RlKCkgJiYgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCkKIAkJT2xkZXN0WG1pbiA9 IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoaGVhcFJlbGF0aW9uKTsKQEAgLTEy NzMsMjQgKzEyODEsNDEgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCXsKIAkJLyoKIAkJICogU2VyaWFsIGluZGV4IGJ1aWxkLgotCQkgKgot CQkgKiBNdXN0IGJlZ2luIG91ciBvd24gaGVhcCBzY2FuIGluIHRoaXMgY2FzZS4gIFdlIG1heSBh bHNvIG5lZWQgdG8KLQkJICogcmVnaXN0ZXIgYSBzbmFwc2hvdCB3aG9zZSBsaWZldGltZSBpcyB1 bmRlciBvdXIgZGlyZWN0IGNvbnRyb2wuCiAJCSAqLwogCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE9sZGVzdFhtaW4pKQogCQl7Ci0JCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0 VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJCW5lZWRfdW5yZWdpc3Rlcl9zbmFwc2hvdCA9IHRy dWU7CisJCQlzbmFwc2hvdCA9IEdldFRyYW5zYWN0aW9uU25hcHNob3QoKTsKKwkJCS8qCisJCQkg KiBNdXN0IGJlZ2luIG91ciBvd24gaGVhcCBzY2FuIGluIHRoaXMgY2FzZS4gIFdlIG1heSBhbHNv IG5lZWQgdG8KKwkJCSAqIHJlZ2lzdGVyIGEgc25hcHNob3Qgd2hvc2UgbGlmZXRpbWUgaXMgdW5k ZXIgb3VyIGRpcmVjdCBjb250cm9sLgorCQkJICogSW4gY2FzZSBvZiByZXNldHRpbmcgb2Ygc25h cHNob3QgZHVyaW5nIHRoZSBzY2FuIHJlZ2lzdHJhdGlvbiBpcworCQkJICogbm90IGFsbG93ZWQg YmVjYXVzZSBzbmFwc2hvdCBpcyBnb2luZyB0byBiZSBjaGFuZ2VkIGV2ZXJ5IHNvCisJCQkgKiBv ZnRlbi4KKwkJCSAqLworCQkJaWYgKCFyZXNldF9zbmFwc2hvdHMpCisJCQl7CisJCQkJc25hcHNo b3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKwkJCQluZWVkX3VucmVnaXN0ZXJfc25h cHNob3QgPSB0cnVlOworCQkJfQorCQkJQXNzZXJ0KCFBY3RpdmVTbmFwc2hvdFNldCgpKTsKKwkJ CVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJCQkvKiBzdG9yZSBsaW5rIHRvIHNuYXBz aG90IGJlY2F1c2UgaXQgbWF5IGJlIGNvcGllZCAqLworCQkJc25hcHNob3QgPSBHZXRBY3RpdmVT bmFwc2hvdCgpOworCQkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAkJfQogCQll bHNlCisJCXsKKwkJCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50KTsKIAkJCXNuYXBz aG90ID0gU25hcHNob3RBbnk7CisJCX0KIAogCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0 KGhlYXBSZWxhdGlvbiwJLyogcmVsYXRpb24gKi8KIAkJCQkJCQkJCSBzbmFwc2hvdCwJLyogc25h cHNob3QgKi8KIAkJCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkJIE5V TEwsCS8qIHNjYW4ga2V5ICovCiAJCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJh dGVneSBPSyAqLwotCQkJCQkJCQkJIGFsbG93X3N5bmMpOwkvKiBzeW5jc2NhbiBPSz8gKi8KKwkJ CQkJCQkJCSBhbGxvd19zeW5jLAkvKiBzeW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJCSByZXNldF9z bmFwc2hvdHMgLyogcmVzZXQgc25hcHNob3RzPyAqLyk7CiAJfQogCWVsc2UKIAl7CkBAIC0xMzA0 LDYgKzEzMjksOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJCUFzc2VydCghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpKTsKIAkJQXNz ZXJ0KGFsbG93X3N5bmMpOwogCQlzbmFwc2hvdCA9IHNjYW4tPnJzX3NuYXBzaG90OworCQlQdXNo QWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0 cnVlOwogCX0KIAogCWhzY2FuID0gKEhlYXBTY2FuRGVzYykgc2NhbjsKQEAgLTEzMTgsNiArMTM0 NSwxMyBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRp b24sCiAJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55ID8gVHJhbnNhY3Rpb25JZElzVmFs aWQoT2xkZXN0WG1pbikgOgogCQkgICAhVHJhbnNhY3Rpb25JZElzVmFsaWQoT2xkZXN0WG1pbikp OwogCUFzc2VydChzbmFwc2hvdCA9PSBTbmFwc2hvdEFueSB8fCAhYW55dmlzaWJsZSk7CisJQXNz ZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55IHx8IEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCisJ LyogU2V0IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgcHJlZGljYXRlLCBpZiBhbnkuICovCisJcHJl ZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlLCBlc3RhdGUp OworCS8qIENsZWFyIHJlZmVyZW5jZSB0byBzbmFwc2hvdCBzaW5jZSBpdCBtYXkgYmUgY2hhbmdl ZCBieSB0aGUgc2NhbiBpdHNlbGYuICovCisJaWYgKHJlc2V0X3NuYXBzaG90cykKKwkJc25hcHNo b3QgPSBJbnZhbGlkU25hcHNob3Q7CiAKIAkvKiBQdWJsaXNoIG51bWJlciBvZiBibG9ja3MgdG8g c2NhbiAqLwogCWlmIChwcm9ncmVzcykKQEAgLTE3NTMsNiArMTc4Nyw4IEBAIGhlYXBhbV9pbmRl eF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAogCXRhYmxlX2VuZHNj YW4oc2Nhbik7CiAKKwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVT bmFwc2hvdCgpOwogCS8qIHdlIGNhbiBub3cgZm9yZ2V0IG91ciBzbmFwc2hvdCwgaWYgc2V0IGFu ZCByZWdpc3RlcmVkIGJ5IHVzICovCiAJaWYgKG5lZWRfdW5yZWdpc3Rlcl9zbmFwc2hvdCkKIAkJ VW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKQEAgLTE4MjUsNyArMTg2MSw4IEBAIGhlYXBh bV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJIDAs IC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwogCQkJ CQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBPSyAqLwotCQkJCQkJCQkgZmFs c2UpOwkvKiBzeW5jc2NhbiBub3QgT0sgKi8KKwkJCQkJCQkJIGZhbHNlLAkvKiBzeW5jc2NhbiBu b3QgT0sgKi8KKwkJCQkJCQkJIGZhbHNlKTsKIAloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47 CiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX1NDQU5fQkxPQ0tTX1RP VEFMLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwppbmRleCA1ZTg5Yjg2YTYyYy4uZTQyODQxODE3 MzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCkBAIC00NzIsNyArNDcyLDcgQEAgc3lzdGFi bGVfYmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJICovCiAJCXN5c3NjYW4tPnNj YW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoaGVhcFJlbGF0aW9uLCBzbmFwc2hvdCwKIAkJCQkJ CQkJCQkJICBua2V5cywga2V5LAotCQkJCQkJCQkJCQkgIHRydWUsIGZhbHNlKTsKKwkJCQkJCQkJ CQkJICB0cnVlLCBmYWxzZSwgZmFsc2UpOwogCQlzeXNzY2FuLT5pc2NhbiA9IE5VTEw7CiAJfQog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IDQ3YTliZGEzMGM5Li42ZjA5MWQz OTgxMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTI2Miw3ICsyNjIsNyBA QCBzdGF0aWMgZG91YmxlIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsCiBzdGF0aWMgdm9pZCBfYnRfc3Bvb2xkZXN0cm95KEJUU3Bvb2wgKmJ0c3Bvb2wp Owogc3RhdGljIHZvaWQgX2J0X3Nwb29sKEJUU3Bvb2wgKmJ0c3Bvb2wsIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqc2VsZiwKIAkJCQkJICBjb25zdCBEYXR1bSAqdmFsdWVzLCBjb25zdCBib29sICpp c251bGwpOwotc3RhdGljIHZvaWQgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNw b29sICpidHNwb29sMik7CitzdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bv b2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cyk7CiBzdGF0aWMgdm9p ZCBfYnRfYnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2ludGVyIHRpZCwgRGF0 dW0gKnZhbHVlcywKIAkJCQkJCQkgICBib29sICppc251bGwsIGJvb2wgdHVwbGVJc0FsaXZlLCB2 b2lkICpzdGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVmZmVyIF9idF9ibG5ld3BhZ2UoQlRXcml0 ZVN0YXRlICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBAIC0zMjUsMTggKzMyNSwyMiBAQCBidGJ1 aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykK IAkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRleCkpOwogCiAJcmVsdHVwbGVzID0gX2J0 X3Nwb29sc19oZWFwc2NhbihoZWFwLCBpbmRleCwgJmJ1aWxkc3RhdGUsIGluZGV4SW5mbyk7CisJ QXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5p cXVlIHx8CisJCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAqIEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEp IGNvbXBsZXRpbmcgdGhlIHNvcnQgb2YgdGhlIHNwb29sIGZpbGUsICgyKQogCSAqIGluc2VydGlu ZyB0aGUgc29ydGVkIHR1cGxlcyBpbnRvIGJ0cmVlIHBhZ2VzIGFuZCAoMykgYnVpbGRpbmcgdGhl IHVwcGVyCiAJICogbGV2ZWxzLiAgRmluYWxseSwgaXQgbWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRv IGVuZCB1c2Ugb2YgcGFyYWxsZWxpc20uCiAJICovCi0JX2J0X2xlYWZidWlsZChidWlsZHN0YXRl LnNwb29sLCBidWlsZHN0YXRlLnNwb29sMik7CisJX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNw b29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzICYm IGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CiAJX2J0X3Nwb29sZGVzdHJveShidWlsZHN0YXRl LnNwb29sKTsKIAlpZiAoYnVpbGRzdGF0ZS5zcG9vbDIpCiAJCV9idF9zcG9vbGRlc3Ryb3koYnVp bGRzdGF0ZS5zcG9vbDIpOwogCWlmIChidWlsZHN0YXRlLmJ0bGVhZGVyKQogCQlfYnRfZW5kX3Bh cmFsbGVsKGJ1aWxkc3RhdGUuYnRsZWFkZXIpOworCUFzc2VydChpbmRleEluZm8tPmlpX1BhcmFs bGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fAorCQkgICFpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJ cmVzdWx0ID0gcGFsbG9jX29iamVjdChJbmRleEJ1aWxkUmVzdWx0KTsKIApAQCAtNDg0LDYgKzQ4 OCw5IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs IEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAllbHNlCiAJCXJlbHR1cGxlcyA9IF9idF9wYXJh bGxlbF9oZWFwc2NhbihidWlsZHN0YXRlLAogCQkJCQkJCQkJCSAgJmluZGV4SW5mby0+aWlfQnJv a2VuSG90Q2hhaW4pOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoaW5k ZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKKwkJ ICAhaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKIAogCS8qCiAJICogU2V0IHRoZSBwcm9ncmVzcyB0YXJnZXQgZm9yIHRoZSBu ZXh0IHBoYXNlLiAgUmVzZXQgdGhlIGJsb2NrIG51bWJlcgpAQCAtNTM5LDcgKzU0Niw3IEBAIF9i dF9zcG9vbChCVFNwb29sICpidHNwb29sLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnNlbGYsIGNv bnN0IERhdHVtICp2YWx1ZXMsIGNvCiAgKiBjcmVhdGUgYW4gZW50aXJlIGJ0cmVlLgogICovCiBz dGF0aWMgdm9pZAotX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNw b29sMikKK19idF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIs IGJvb2wgcmVzZXRfc25hcHNob3RzKQogewogCUJUV3JpdGVTdGF0ZSB3c3RhdGU7CiAKQEAgLTU2 MSwxOCArNTY4LDIxIEBAIF9idF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAq YnRzcG9vbDIpCiAJCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfUEVSRk9STVNPUlRfMik7 CiAJCXR1cGxlc29ydF9wZXJmb3Jtc29ydChidHNwb29sMi0+c29ydHN0YXRlKTsKIAl9CisJQXNz ZXJ0KCFyZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOwogCiAJd3N0YXRlLmhlYXAgPSBidHNwb29sLT5oZWFwOwogCXdzdGF0ZS5pbmRleCA9IGJ0 c3Bvb2wtPmluZGV4OwogCXdzdGF0ZS5pbnNrZXkgPSBfYnRfbWtzY2Fua2V5KHdzdGF0ZS5pbmRl eCwgTlVMTCk7CiAJLyogX2J0X21rc2NhbmtleSgpIHdvbid0IHNldCBhbGxlcXVhbGltYWdlIHdp dGhvdXQgbWV0YXBhZ2UgKi8KIAl3c3RhdGUuaW5za2V5LT5hbGxlcXVhbGltYWdlID0gX2J0X2Fs bGVxdWFsaW1hZ2Uod3N0YXRlLmluZGV4LCB0cnVlKTsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBz aG90KCk7CiAKIAkvKiByZXNlcnZlIHRoZSBtZXRhcGFnZSAqLwogCXdzdGF0ZS5idHdzX3BhZ2Vz X2FsbG9jZWQgPSBCVFJFRV9NRVRBUEFHRSArIDE7CiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRl X3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9TVUJQSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0JU UkVFX1BIQVNFX0xFQUZfTE9BRCk7CisJQXNzZXJ0KCFyZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCV9idF9sb2FkKCZ3c3RhdGUsIGJ0c3Bv b2wsIGJ0c3Bvb2wyKTsKIH0KIApAQCAtMTQxMSw2ICsxNDIxLDcgQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsK IAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCA9IHRydWU7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xF QURFUl9QQVJUSUNJUEFUSU9OCkBAIC0xNDM2LDkgKzE0NDcsMTYgQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJl bnQpCisJeworCQlBc3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CiAJCXNuYXBzaG90ID0gU25h cHNob3RBbnk7CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOworCX0KIAllbHNl CisJewogCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hv dCgpKTsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKKwl9CiAKIAkvKgogCSAqIEVz dGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JUUkVFX1NIQVJFRCB3b3Jrc3Bh Y2UsIGFuZApAQCAtMTQ5Miw2ICsxNTEwLDggQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCS8qIElm IG5vIERTTSBzZWdtZW50IHdhcyBhdmFpbGFibGUsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQp ICovCiAJaWYgKHBjeHQtPnNlZyA9PSBOVUxMKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9z bmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCWlmIChJc01WQ0NTbmFwc2hvdChz bmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFy YWxsZWxDb250ZXh0KHBjeHQpOwpAQCAtMTU4Niw2ICsxNjA2LDggQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCS8qIElmIG5vIHdvcmtlcnMgd2VyZSBzdWNjZXNzZnVsbHkgbGF1bmNoZWQsIGJhY2sg b3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPm53b3JrZXJzX2xhdW5jaGVkID09 IDApCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25h cHNob3QoKTsKIAkJX2J0X2VuZF9wYXJhbGxlbChidGxlYWRlcik7CiAJCXJldHVybjsKIAl9CkBA IC0xNjAyLDYgKzE2MjQsOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWls ZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogc3VyZSB0aGF0IHRo ZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwogCVdh aXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0KTsKKwlpZiAobmVlZF9wb3BfYWN0aXZl X3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9zcGdpc3Qvc3BnaW5zZXJ0LmMKaW5kZXggNzgwZWY2NDZhNTQuLjQ5ODMyYTM2NDcwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNs dWRlICJub2Rlcy9leGVjbm9kZXMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvYnVsa193cml0ZS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgog I2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAKQEAg LTE0Myw2ICsxNDQsOCBAQCBzcGdidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwg SW5kZXhJbmZvICppbmRleEluZm8pCiAJcmVzdWx0ID0gcGFsbG9jMF9vYmplY3QoSW5kZXhCdWls ZFJlc3VsdCk7CiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmlu ZGV4X3R1cGxlcyA9IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUludmFsaWRhdGVDYXRhbG9nU25h cHNob3QoKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGFjdC5jCmluZGV4IGFhZmM1M2UwMTY0Li43NzcyZDEzNzliYyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hhY3QuYwpAQCAtMzcwOCw2ICszNzA4LDE3IEBAIFByZXZlbnRJblRy YW5zYWN0aW9uQmxvY2soYm9vbCBpc1RvcExldmVsLCBjb25zdCBjaGFyICpzdG10VHlwZSkKIAlN eVhhY3RGbGFncyB8PSBYQUNUX0ZMQUdTX05FRURJTU1FRElBVEVDT01NSVQ7CiB9CiAKK3ZvaWQK K1ByZXZlbnRJc29sYXRpb25Vc2VzWGFjdFNuYXBzaG90KGNvbnN0IGNoYXIgKnN0bXRUeXBlKQor eworCWlmIChJc29sYXRpb25Vc2VzWGFjdFNuYXBzaG90KCkpCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTkFQUFJPUFJJQVRFX0lTT0xBVElPTl9MRVZFTF9GT1JfQ09N TUFORCksCisJCS8qIHRyYW5zbGF0b3I6ICVzIHJlcHJlc2VudHMgYW4gU1FMIHN0YXRlbWVudCBu YW1lICovCisJCQkJIGVycm1zZygiJXMgZG9lcyBub3Qgc3VwcG9ydCB0cmFuc2FjdGlvbiBpc29s YXRpb24gaGlnaGVyIHRoYW4gUkVBRCBDT01NSVRURUQiLAorCQkJCQkJc3RtdFR5cGUpKSk7Cit9 CisKIC8qCiAgKglXYXJuTm9UcmFuc2FjdGlvbkJsb2NrCiAgKglSZXF1aXJlVHJhbnNhY3Rpb25C bG9jawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IGQ4MjE5YjE4YzQ4Li5mNGRjNDU2M2M5MSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYwpAQCAtODEsNiArODEsNyBAQAogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIK ICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R1cGxlc29ydC5o IgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogCiAvKiBQb3RlbnRpYWxseSBzZXQgYnkgcGdf dXBncmFkZV9zdXBwb3J0IGZ1bmN0aW9ucyAqLwogT2lkCQkJYmluYXJ5X3VwZ3JhZGVfbmV4dF9p bmRleF9wZ19jbGFzc19vaWQgPSBJbnZhbGlkT2lkOwpAQCAtMTQ5Myw4ICsxNDk0LDggQEAgaW5k ZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAlSZWxhdGlvbglpbmRl eFJlbGF0aW9uOwogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKIAotCS8qIFRoaXMgaGFkIGJldHRl ciBtYWtlIHN1cmUgdGhhdCBhIHNuYXBzaG90IGlzIGFjdGl2ZSAqLwotCUFzc2VydChBY3RpdmVT bmFwc2hvdFNldCgpKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIAogCS8q IE9wZW4gYW5kIGxvY2sgdGhlIHBhcmVudCBoZWFwIHJlbGF0aW9uICovCiAJaGVhcFJlbCA9IHRh YmxlX29wZW4oaGVhcFJlbGF0aW9uSWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CkBAIC0x NTEyLDE5ICsxNTEzLDI5IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0 aW9uSWQsCiAKIAlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihpbmRleFJlbGF0aW9uSWQsIFJv d0V4Y2x1c2l2ZUxvY2spOwogCisJLyogQnVpbGRJbmRleEluZm8gbWF5IHJlcXVpcmUgYXMgc25h cHNob3QgZm9yIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzICovCisJUHVzaEFjdGl2ZVNuYXBz aG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJLyoKIAkgKiBXZSBoYXZlIHRvIHJlLWJ1 aWxkIHRoZSBJbmRleEluZm8gc3RydWN0LCBzaW5jZSBpdCB3YXMgbG9zdCBpbiB0aGUKIAkgKiBj b21taXQgb2YgdGhlIHRyYW5zYWN0aW9uIHdoZXJlIHRoaXMgY29uY3VycmVudCBpbmRleCB3YXMg Y3JlYXRlZCBhdAogCSAqIHRoZSBjYXRhbG9nIGxldmVsLgogCSAqLwogCWluZGV4SW5mbyA9IEJ1 aWxkSW5kZXhJbmZvKGluZGV4UmVsYXRpb24pOworCS8qIERvbmUgd2l0aCBzbmFwc2hvdCAqLwor CVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJQXNzZXJ0KCFpbmRleEluZm8tPmlpX1JlYWR5Rm9ySW5z ZXJ0cyk7CiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gdHJ1ZTsKIAlpbmRleEluZm8tPmlp X0Jyb2tlbkhvdENoYWluID0gZmFsc2U7CiAKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7 CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwogCS8qIE5v dyBidWlsZCB0aGUgaW5kZXggKi8KIAlpbmRleF9idWlsZChoZWFwUmVsLCBpbmRleFJlbGF0aW9u LCBpbmRleEluZm8sIGZhbHNlLCB0cnVlKTsKIAorCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKKwlBc3NlcnQoKGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+ aWlfVW5pcXVlKSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisKIAkv KiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucyAq LwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOwogCkBAIC0xNTM1LDEyICsx NTQ2LDE5IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAJ dGFibGVfY2xvc2UoaGVhcFJlbCwgTm9Mb2NrKTsKIAlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9u LCBOb0xvY2spOwogCisJLyoKKwkgKiBVcGRhdGluZyBwZ19pbmRleCBtaWdodCBpbnZvbHZlIFRP QVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90 LgorCSAqLworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwog CS8qCiAJICogVXBkYXRlIHRoZSBwZ19pbmRleCByb3cgdG8gbWFyayB0aGUgaW5kZXggYXMgcmVh ZHkgZm9yIGluc2VydHMuIE9uY2Ugd2UKIAkgKiBjb21taXQgdGhpcyB0cmFuc2FjdGlvbiwgYW55 IG5ldyB0cmFuc2FjdGlvbnMgdGhhdCBvcGVuIHRoZSB0YWJsZSBtdXN0CiAJICogaW5zZXJ0IG5l dyBlbnRyaWVzIGludG8gdGhlIGluZGV4IGZvciBpbnNlcnRpb25zIGFuZCBub24tSE9UIHVwZGF0 ZXMuCiAJICovCiAJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGluZGV4UmVsYXRpb25JZCwgSU5ERVhf Q1JFQVRFX1NFVF9SRUFEWSk7CisJLyogd2UgY2FuIGRvIGF3YXkgd2l0aCBvdXIgc25hcHNob3Qg Ki8KKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQogCiAvKgpAQCAtMzIzNyw3ICszMjU1LDggQEAg SW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCSAwLCAv KiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJCQkJ CQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJIHRydWUp OyAvKiBzeW5jc2NhbiBPSyAqLworCQkJCQkJCQkgdHJ1ZSwgLyogc3luY3NjYW4gT0sgKi8KKwkJ CQkJCQkJIGZhbHNlKTsKIAogCXdoaWxlICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZv cndhcmRTY2FuRGlyZWN0aW9uLCBzbG90KSkKIAl7CkBAIC0zMzAwLDEyICszMzE5LDE2IEBAIElu ZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogYXMgb2YgdGhlIHN0 YXJ0IG9mIHRoZSBzY2FuIChzZWUgdGFibGVfaW5kZXhfYnVpbGRfc2NhbiksIHdoZXJlYXMgYSBu b3JtYWwKICAqIGJ1aWxkIHRha2VzIGNhcmUgdG8gaW5jbHVkZSByZWNlbnRseS1kZWFkIHR1cGxl cy4gIFRoaXMgaXMgT0sgYmVjYXVzZQogICogd2Ugd29uJ3QgbWFyayB0aGUgaW5kZXggdmFsaWQg dW50aWwgYWxsIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGJlIGFibGUKLSAqIHRvIHNlZSB0aG9z ZSB0dXBsZXMgYXJlIGdvbmUuICBUaGUgcmVhc29uIGZvciBkb2luZyB0aGF0IGlzIHRvIGF2b2lk CisgKiB0byBzZWUgdGhvc2UgdHVwbGVzIGFyZSBnb25lLiAgT25lIG9mIHJlYXNvbnMgZm9yIGRv aW5nIHRoYXQgaXMgdG8gYXZvaWQKICAqIGJvZ3VzIHVuaXF1ZS1pbmRleCBmYWlsdXJlcyBkdWUg dG8gY29uY3VycmVudCBVUERBVEVzICh3ZSBtaWdodCBzZWUKICAqIGRpZmZlcmVudCB2ZXJzaW9u cyBvZiB0aGUgc2FtZSByb3cgYXMgYmVpbmcgdmFsaWQgd2hlbiB3ZSBwYXNzIG92ZXIgdGhlbSwK ICAqIGlmIHdlIHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVzIHVz IHdpdGggYW4gaW5kZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFkZGVk IHRvIHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAgKgorICogRnVydGhlcm1v cmUsIGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09fUkVTRVRfU05BUFNIT1Qg Zm9yIHRoZQorICogc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hvdCB0byBiZSBzZXQgYXMg YWN0aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uCisgKiBmb3IgdGhhdCBpcyB0byBwcm9w YWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgorICoKICAqIE5leHQsIHdlIG1hcmsgdGhl IGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5vdCAiaW5kaXN2YWxpZCIpIGFuZAogICog Y29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEgdGhpcmQuICBBZ2FpbiB3 ZSB3YWl0IGZvciBhbGwKICAqIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIGhhdmUgYmVlbiBtb2Rp ZnlpbmcgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4gIE5vdwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YwppbmRleCBiODljNjg1NTM2NC4uNDE1ZDAyMzZjNDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21k cy5jCkBAIC0xNzAyLDIzICsxNzAyLDE3IEBAIERlZmluZUluZGV4KFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkgKiBjaGFpbnMgY2FuIGJlIGNyZWF0ZWQgd2hlcmUgdGhlIG5ldyB0dXBsZSBhbmQgdGhl IG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBjaGFpbiBoYXZlIGRpZmZlcmVudCBpbmRleCBrZXlzLgog CSAqCi0JICogV2Ugbm93IHRha2UgYSBuZXcgc25hcHNob3QsIGFuZCBidWlsZCB0aGUgaW5kZXgg dXNpbmcgYWxsIHR1cGxlcyB0aGF0Ci0JICogYXJlIHZpc2libGUgaW4gdGhpcyBzbmFwc2hvdC4g IFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCisJICogV2UgYnVpbGQgdGhl IGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBzaW5nbGUgb3IK KwkgKiBtdWx0aXBsZSByZWZyZXNoaW5nIHNuYXBzaG90cy4gV2UgY2FuIGJlIHN1cmUgdGhhdCBh bnkgSE9UIHVwZGF0ZXMgdG8KIAkgKiB0aGVzZSB0dXBsZXMgd2lsbCBiZSBjb21wYXRpYmxlIHdp dGggdGhlIGluZGV4LCBzaW5jZSBhbnkgdXBkYXRlcyBtYWRlCiAJICogYnkgdHJhbnNhY3Rpb25z IHRoYXQgZGlkbid0IGtub3cgYWJvdXQgdGhlIGluZGV4IGFyZSBub3cgY29tbWl0dGVkIG9yCiAJ ICogcm9sbGVkIGJhY2suICBUaHVzLCBlYWNoIHZpc2libGUgdHVwbGUgaXMgZWl0aGVyIHRoZSBl bmQgb2YgaXRzCiAJICogSE9ULWNoYWluIG9yIHRoZSBleHRlbnNpb24gb2YgdGhlIGNoYWluIGlz IEhPVC1zYWZlIGZvciB0aGlzIGluZGV4LgogCSAqLwogCi0JLyogU2V0IEFjdGl2ZVNuYXBzaG90 IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhlcyBtYXkgbmVlZCBpdCAqLwotCVB1c2hBY3Rp dmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCiAJLyogUGVyZm9ybSBjb25j dXJyZW50IGJ1aWxkIG9mIGluZGV4ICovCiAJaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKHRhYmxl SWQsIGluZGV4UmVsYXRpb25JZCk7CiAKLQkvKiB3ZSBjYW4gZG8gYXdheSB3aXRoIG91ciBzbmFw c2hvdCAqLwotCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0KIAkvKgogCSAqIENvbW1pdCB0aGlzIHRy YW5zYWN0aW9uIHRvIG1ha2UgdGhlIGluZGlzcmVhZHkgdXBkYXRlIHZpc2libGUuCiAJICovCkBA IC0yODc1LDggKzI4NjksMTEgQEAgRXhlY1JlaW5kZXgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCX0KIAogCWlmIChjb25jdXJy ZW50bHkpCisJewogCQlQcmV2ZW50SW5UcmFuc2FjdGlvbkJsb2NrKGlzVG9wTGV2ZWwsCiAJCQkJ CQkJCSAgIlJFSU5ERVggQ09OQ1VSUkVOVExZIik7CisJCVByZXZlbnRJc29sYXRpb25Vc2VzWGFj dFNuYXBzaG90KCJSRUlOREVYIENPTkNVUlJFTlRMWSIpOworCX0KIAogCXBhcmFtcy5vcHRpb25z ID0KIAkJKHZlcmJvc2UgPyBSRUlOREVYT1BUX1ZFUkJPU0UgOiAwKSB8CkBAIC00MTMyLDkgKzQx MjksNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0 bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlpZiAobmV3aWR4LT5zYWZlKQogCQkJ c2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKIAotCQkvKiBTZXQgQWN0aXZlU25hcHNob3Qgc2lu Y2UgZnVuY3Rpb25zIGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0ICovCi0JCVB1c2hBY3RpdmVT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCiAJCS8qCiAJCSAqIFVwZGF0ZSBw cm9ncmVzcyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxkLCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAog CQkgKiB0YWJsZSBpbnZvbHZlZC4KQEAgLTQxNDksNyArNDE0Myw2IEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJCS8qIFBlcmZvcm0gY29uY3VycmVudCBidWlsZCBvZiBuZXcgaW5kZXggKi8K IAkJaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRl eElkKTsKIAotCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5u ZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA0MjYwNGEw Zjc1Yy4uZDZiYjM1NDZiZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAg LTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1 dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0aWxz L3NuYXBtZ3IuaCIKIAogLyogR1VDIHBhcmFtZXRlcnMgKi8KIGRvdWJsZQkJY3Vyc29yX3R1cGxl X2ZyYWN0aW9uID0gREVGQVVMVF9DVVJTT1JfVFVQTEVfRlJBQ1RJT047CkBAIC03MDI3LDYgKzcw MjgsNyBAQCBwbGFuX2NyZWF0ZV9pbmRleF93b3JrZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4 T2lkKQogCVJlbGF0aW9uCWhlYXA7CiAJUmVsYXRpb24JaW5kZXg7CiAJUmVsT3B0SW5mbyAqcmVs OworCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOwogCWludAkJCXBhcmFs bGVsX3dvcmtlcnM7CiAJQmxvY2tOdW1iZXIgaGVhcF9ibG9ja3M7CiAJZG91YmxlCQlyZWx0dXBs ZXM7CkBAIC03MDgyLDYgKzcwODQsMTIgQEAgcGxhbl9jcmVhdGVfaW5kZXhfd29ya2VycyhPaWQg dGFibGVPaWQsIE9pZCBpbmRleE9pZCkKIAloZWFwID0gdGFibGVfb3Blbih0YWJsZU9pZCwgTm9M b2NrKTsKIAlpbmRleCA9IGluZGV4X29wZW4oaW5kZXhPaWQsIE5vTG9jayk7CiAKKwkvKiBTZXQg QWN0aXZlU25hcHNob3Qgc2luY2UgZnVuY3Rpb25zIGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0 ICovCisJaWYgKCFBY3RpdmVTbmFwc2hvdFNldCgpKQorCXsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90 KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9 IHRydWU7CisJfQogCS8qCiAJICogRGV0ZXJtaW5lIGlmIGl0J3Mgc2FmZSB0byBwcm9jZWVkLgog CSAqCkBAIC03MTM5LDYgKzcxNDcsOCBAQCBwbGFuX2NyZWF0ZV9pbmRleF93b3JrZXJzKE9pZCB0 YWJsZU9pZCwgT2lkIGluZGV4T2lkKQogCQlwYXJhbGxlbF93b3JrZXJzLS07CiAKIGRvbmU6CisJ aWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAlp bmRleF9jbG9zZShpbmRleCwgTm9Mb2NrKTsKIAl0YWJsZV9jbG9zZShoZWFwLCBOb0xvY2spOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5kL3Rj b3AvdXRpbGl0eS5jCmluZGV4IDJiNjA5YmZjODI0Li5iNTUyMzIxMTZkZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5 LmMKQEAgLTE0NjMsOCArMTQ2MywxMSBAQCBQcm9jZXNzVXRpbGl0eVNsb3coUGFyc2VTdGF0ZSAq cHN0YXRlLAogCQkJCQlib29sCQlpc19hbHRlcl90YWJsZTsKIAogCQkJCQlpZiAoc3RtdC0+Y29u Y3VycmVudCkKKwkJCQkJewogCQkJCQkJUHJldmVudEluVHJhbnNhY3Rpb25CbG9jayhpc1RvcExl dmVsLAogCQkJCQkJCQkJCQkJICAiQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSIpOworCQkJCQkJ UHJldmVudElzb2xhdGlvblVzZXNYYWN0U25hcHNob3QoIkNSRUFURSBJTkRFWCBDT05DVVJSRU5U TFkiKTsKKwkJCQkJfQogCiAJCQkJCS8qCiAJCQkJCSAqIExvb2sgdXAgdGhlIHJlbGF0aW9uIE9J RCBqdXN0IG9uY2UsIHJpZ2h0IGhlcmUgYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9lcnJjb2Rlcy50eHQgYi9zcmMvYmFja2VuZC91dGlscy9lcnJjb2Rlcy50eHQKaW5kZXgg NWIyNTQwMmViYmUuLmE4MGYwOGFmMjQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9l cnJjb2Rlcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29kZXMudHh0CkBAIC0yNTks NiArMjU5LDcgQEAgU2VjdGlvbjogQ2xhc3MgMjUgLSBJbnZhbGlkIFRyYW5zYWN0aW9uIFN0YXRl CiAyNVAwMiAgICBFICAgIEVSUkNPREVfSU5fRkFJTEVEX1NRTF9UUkFOU0FDVElPTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluX2ZhaWxlZF9zcWxfdHJhbnNhY3Rpb24KIDI1UDAzICAg IEUgICAgRVJSQ09ERV9JRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9VVCAgICAgICAg ICAgICAgICAgICAgaWRsZV9pbl90cmFuc2FjdGlvbl9zZXNzaW9uX3RpbWVvdXQKIDI1UDA0ICAg IEUgICAgRVJSQ09ERV9UUkFOU0FDVElPTl9USU1FT1VUICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdHJhbnNhY3Rpb25fdGltZW91dAorMjVQMDUgICAgRSAgICBFUlJDT0RFX0lO QVBQUk9QUklBVEVfSVNPTEFUSU9OX0xFVkVMX0ZPUl9DT01NQU5EICAgICAgICAgICAgICBpbmFw cHJvcHJpYXRlX2lzb2xhdGlvbl9sZXZlbF9mb3JfY29tbWFuZAogCiBTZWN0aW9uOiBDbGFzcyAy NiAtIEludmFsaWQgU1FMIFN0YXRlbWVudCBOYW1lCiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf YW1jaGVjay90LzAwNl9jaWMucGwgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsCmlu ZGV4IDA0OTVhYzEwMjYzLi44MWNmZGU0ZTAyOCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19hbWNo ZWNrL3QvMDA2X2NpYy5wbAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsCkBA IC0xOTYsNyArMTk2LDcgQEAgJG5vZGUtPnBnYmVuY2goCiAJMCwKIAlbcXJ7YWN0dWFsbHkgcHJv Y2Vzc2VkfV0sCiAJW3Fye14kfV0sCi0JJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRoIFJFSU5E RVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBmb3IgR0lOL0dJU1QvQlJJTi9IQVNIL1NQR0lT VCcsCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRoIFJFSU5ERVgvQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBmb3IgR0lOJywKIAl7CiAJCSdjb25jdXJyZW50X29wc19naW5faWR4JyA9PiBz cHJpbnRmKHEoCiAJCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFT IGdvdGxvY2sgXGdzZXQKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCAyZmRjNTBiODY1Yi4uZmQwYzJjZjBi ZjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQzLDYgKzQzLDggQEAKICNkZWZpbmUgSEVBUF9QQUdF X1BSVU5FX01BUktfVU5VU0VEX05PVwkJKDEgPDwgMCkKICNkZWZpbmUgSEVBUF9QQUdFX1BSVU5F X0ZSRUVaRQkJCQkoMSA8PCAxKQogCisjZGVmaW5lIFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9Q QUdFCQk0MDk2CisKIHR5cGVkZWYgc3RydWN0IEJ1bGtJbnNlcnRTdGF0ZURhdGEgKkJ1bGtJbnNl cnRTdGF0ZTsKIHR5cGVkZWYgc3RydWN0IEdsb2JhbFZpc1N0YXRlIEdsb2JhbFZpc1N0YXRlOwog dHlwZWRlZiBzdHJ1Y3QgVHVwbGVUYWJsZVNsb3QgVHVwbGVUYWJsZVNsb3Q7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxl YW0uaAppbmRleCAwNjA4NDc1MjI0NS4uZDA3MDk3ODJkZGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApA QCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIKICNpbmNs dWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwc2hvdC5oIgorI2luY2x1ZGUg InV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAKICNkZWZpbmUgREVGQVVMVF9UQUJMRV9BQ0NF U1NfTUVUSE9ECSJoZWFwIgpAQCAtNjMsNiArNjQsMTcgQEAgdHlwZWRlZiBlbnVtIFNjYW5PcHRp b25zCiAKIAkvKiB1bnJlZ2lzdGVyIHNuYXBzaG90IGF0IHNjYW4gZW5kPyAqLwogCVNPX1RFTVBf U05BUFNIT1QgPSAxIDw8IDksCisJLyoKKwkgKiBSZXNldCBzY2FuIGFuZCBjYXRhbG9nIHNuYXBz aG90IGV2ZXJ5IHNvIG9mdGVuPyBJZiBzbywgZWFjaAorCSAqIFNPX1JFU0VUX1NOQVBTSE9UX0VB Q0hfTl9QQUdFIHBhZ2VzIGFjdGl2ZSBzbmFwc2hvdCBpcyBwb3BwZWQsCisJICogY2F0YWxvZyBz bmFwc2hvdCBpbnZhbGlkYXRlZCwgbGF0ZXN0IHNuYXBzaG90IHB1c2hlZCBhcyBhY3RpdmUuCisJ ICoKKwkgKiBBdCB0aGUgZW5kIG9mIHRoZSBzY2FuIHNuYXBzaG90IGlzIG5vdCBwb3BwZWQuCisJ ICogR29hbCBvZiBzdWNoIG1vZGUgaXMga2VlcCB4bWluIHByb3BhZ2F0aW5nIGhvcml6b24gZm9y d2FyZC4KKwkgKgorCSAqIHNlZSBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3QgZm9yIGRldGFpbHMu CisJICovCisJU09fUkVTRVRfU05BUFNIT1QgPSAxIDw8IDEwLAogfQkJCVNjYW5PcHRpb25zOwog CiAvKgpAQCAtOTE5LDcgKzkzMSw4IEBAIGV4dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2lu c2Nhbl9jYXRhbG9nKFJlbGF0aW9uIHJlbGF0aW9uLCBpbnQgbmtleXMsCiBzdGF0aWMgaW5saW5l IFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBz aG90IHNuYXBzaG90LAogCQkJCQkgIGludCBua2V5cywgU2NhbktleURhdGEgKmtleSwKLQkJCQkJ ICBib29sIGFsbG93X3N0cmF0LCBib29sIGFsbG93X3N5bmMpCisJCQkJCSAgYm9vbCBhbGxvd19z dHJhdCwgYm9vbCBhbGxvd19zeW5jLAorCQkJCQkgIGJvb2wgcmVzZXRfc25hcHNob3QpCiB7CiAJ dWludDMyCQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8IFNPX0FMTE9XX1BBR0VNT0RFOwogCkBA IC05MjcsNiArOTQwLDE1IEBAIHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNu YXBzaG90IHNuYXBzaG90LAogCQlmbGFncyB8PSBTT19BTExPV19TVFJBVDsKIAlpZiAoYWxsb3df c3luYykKIAkJZmxhZ3MgfD0gU09fQUxMT1dfU1lOQzsKKwlpZiAocmVzZXRfc25hcHNob3QpCisJ eworCQlJTkpFQ1RJT05fUE9JTlQoInRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hv dHMiLCBOVUxMKTsKKwkJLyogQWN0aXZlIHNuYXBzaG90IGlzIHJlcXVpcmVkIG9uIHN0YXJ0LiAq LworCQlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKSA9PSBzbmFwc2hvdCk7CisJCS8qIEFjdGl2 ZSBzbmFwc2hvdCBzaG91bGQgbm90IGJlIHJlZ2lzdGVyZWQgdG8ga2VlcCB4bWluIHByb3BhZ2F0 aW5nLiAqLworCQlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKS0+cmVnZF9jb3VudCA9PSAwKTsK KwkJZmxhZ3MgfD0gKFNPX1JFU0VUX1NOQVBTSE9UKTsKKwl9CiAKIAlyZXR1cm4gdGFibGVfYmVn aW5zY2FuX2NvbW1vbihyZWwsIHNuYXBzaG90LCBua2V5cywga2V5LCBOVUxMLCBmbGFncyk7CiB9 CkBAIC0xNzYwLDYgKzE3ODIsMTAgQEAgdGFibGVfc2Nhbl9hbmFseXplX25leHRfdHVwbGUoVGFi bGVTY2FuRGVzYyBzY2FuLAogICogdmVyeSBoYXJkIHRvIGRldGVjdCB3aGV0aGVyIHRoZXkncmUg cmVhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBjaGFpbiB0aXAuCiAgKiBUaGlzIG9ubHkgcmVh bGx5IG1ha2VzIHNlbnNlIGZvciBoZWFwIEFNLCBpdCBtaWdodCBuZWVkIHRvIGJlIGdlbmVyYWxp emVkCiAgKiBmb3Igb3RoZXIgQU1zIGxhdGVyLgorICoKKyAqIEluIGNhc2Ugb2Ygbm9uLXVuaXF1 ZSBpbmRleCBhbmQgbm9uLXBhcmFsbGVsIGNvbmN1cnJlbnQgYnVpbGQsCisgKiBTT19SRVNFVF9T TkFQU0hPVCBpcyBhcHBsaWVkIGZvciB0aGUgc2Nhbi4gVGhhdCBsZWFkcyB0byBjaGFuZ2luZyBz bmFwc2hvdHMKKyAqIG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1pbiBob3Jpem9uIHByb3BhZ2F0ZS4K ICAqLwogc3RhdGljIGlubGluZSBkb3VibGUKIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oUmVsYXRp b24gdGFibGVfcmVsLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hhY3QuaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy94YWN0LmgKaW5kZXggZjBiNGQ3OTUwNzEuLjJlM2Y2MTdhOTQ5IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGFjdC5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy94YWN0LmgKQEAgLTQ4OCw2ICs0ODgsNyBAQCBleHRlcm4gYm9vbCBJc1RyYW5zYWN0aW9u T3JUcmFuc2FjdGlvbkJsb2NrKHZvaWQpOwogZXh0ZXJuIGNoYXIgVHJhbnNhY3Rpb25CbG9ja1N0 YXR1c0NvZGUodm9pZCk7CiBleHRlcm4gdm9pZCBBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24odm9p ZCk7CiBleHRlcm4gdm9pZCBQcmV2ZW50SW5UcmFuc2FjdGlvbkJsb2NrKGJvb2wgaXNUb3BMZXZl bCwgY29uc3QgY2hhciAqc3RtdFR5cGUpOworZXh0ZXJuIHZvaWQgUHJldmVudElzb2xhdGlvblVz ZXNYYWN0U25hcHNob3QoY29uc3QgY2hhciAqc3RtdFR5cGUpOwogZXh0ZXJuIHZvaWQgUmVxdWly ZVRyYW5zYWN0aW9uQmxvY2soYm9vbCBpc1RvcExldmVsLCBjb25zdCBjaGFyICpzdG10VHlwZSk7 CiBleHRlcm4gdm9pZCBXYXJuTm9UcmFuc2FjdGlvbkJsb2NrKGJvb2wgaXNUb3BMZXZlbCwgY29u c3QgY2hhciAqc3RtdFR5cGUpOwogZXh0ZXJuIGJvb2wgSXNJblRyYW5zYWN0aW9uQmxvY2soYm9v bCBpc1RvcExldmVsKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmls ZQppbmRleCBhNDFkNzgxZjhjOS4uZWVhZWFhZjJjYzYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvTWFrZWZpbGUKQEAgLTksNyArOSw3IEBAIEVYVEVOU0lPTiA9IGluamVj dGlvbl9wb2ludHMKIERBVEEgPSBpbmplY3Rpb25fcG9pbnRzLS0xLjAuc3FsCiBQR0ZJTEVERVND ID0gImluamVjdGlvbl9wb2ludHMgLSBmYWNpbGl0eSBmb3IgaW5qZWN0aW9uIHBvaW50cyIKIAot UkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMgaGFzaGFnZyByZWluZGV4X2NvbmMgdmFjdXVtCitS RUdSRVNTID0gaW5qZWN0aW9uX3BvaW50cyBoYXNoYWdnIHJlaW5kZXhfY29uYyB2YWN1dW0gY2lj X3Jlc2V0X3NuYXBzaG90cwogUkVHUkVTU19PUFRTID0gLS1kbHBhdGg9JCh0b3BfYnVpbGRkaXIp L3NyYy90ZXN0L3JlZ3Jlc3MKIAogSVNPTEFUSU9OID0gYmFzaWMgXApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hv dHMub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19y ZXNldF9zbmFwc2hvdHMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5iNGFkOTBlYjMzOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dApAQCAtMCwwICsxLDEx NSBAQAorQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOworU0VMRUNUIGluamVjdGlv bl9wb2ludHNfc2V0X2xvY2FsKCk7CisgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2F0dGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScsICdub3Rp Y2UnKTsKKyBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9i ZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGljZScpOworIGluamVjdGlvbl9w b2ludHNfYXR0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitD UkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOworQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFw LnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOworSU5TRVJUIElOVE8gY2ljX3Jlc2V0X3Nu YXAudGJsIFNFTEVDVCBpLCBpICogSSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIHMoaSk7 CitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpbnRlZ2Vy KSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwgQVMg JCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBSRVRV Uk4gTU9EKCQxLCAyKSA9IDA7CitFTkQ7ICQkOworQ1JFQVRFIEZVTkNUSU9OIGNpY19yZXNldF9z bmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJ CQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VM RUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBSRVRVUk4gZmFsc2U7CitFTkQ7ICQkOworLS0tLS0t LS0tLS0tLS0tLQorQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxf d29ya2Vycz0wKTsKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNf cmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5z Y2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5E RVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVz ZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHgg T04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGlj YXRlX3N0YWJsZShpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90 X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2Jl Z2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jl c2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9z bmFwc2hvdHMKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9z Y2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3Rf ZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7Cist LSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50 YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJS RU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiks IGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3Ry YXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFw c2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFw X3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNf cmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJs ZV9ub19wYXJhbSgpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkgREVTQyBOVUxM UyBMQVNUKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOwor UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQkVHSU4gVFJBTlNBQ1RJT047CitD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitF UlJPUjogIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgY2Fubm90IHJ1biBpbnNpZGUgYSB0cmFu c2FjdGlvbiBibG9jaworUk9MTEJBQ0sgOworU0VUIGRlZmF1bHRfdHJhbnNhY3Rpb25faXNvbGF0 aW9uID0gc2VyaWFsaXphYmxlOworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGkpOworRVJST1I6ICBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGRv ZXMgbm90IHN1cHBvcnQgdHJhbnNhY3Rpb24gaXNvbGF0aW9uIGhpZ2hlciB0aGFuIFJFQUQgQ09N TUlUVEVECitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitF UlJPUjogIFJFSU5ERVggQ09OQ1VSUkVOVExZIGRvZXMgbm90IHN1cHBvcnQgdHJhbnNhY3Rpb24g aXNvbGF0aW9uIGhpZ2hlciB0aGFuIFJFQUQgQ09NTUlUVEVECitSRVNFVCBkZWZhdWx0X3RyYW5z YWN0aW9uX2lzb2xhdGlvbjsKK0RST1AgU0NIRU1BIGNpY19yZXNldF9zbmFwIENBU0NBREU7CitO T1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDMgb3RoZXIgb2JqZWN0cworREVUQUlMOiAgZHJvcCBj YXNjYWRlcyB0byB0YWJsZSBjaWNfcmVzZXRfc25hcC50YmwKK2Ryb3AgY2FzY2FkZXMgdG8gZnVu Y3Rpb24gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpbnRlZ2VyKQorZHJvcCBjYXNj YWRlcyB0byBmdW5jdGlvbiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFt KCkKK0RST1AgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKaW5kZXggZmNjODU0MTQ1MTUuLjVkMjk4Y2Qy NzEwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24u YnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxk CkBAIC0zNiw2ICszNiw3IEBAIHRlc3RzICs9IHsKICAgICAgICdoYXNoYWdnJywKICAgICAgICdy ZWluZGV4X2NvbmMnLAogICAgICAgJ3ZhY3V1bScsCisgICAgICAnY2ljX3Jlc2V0X3NuYXBzaG90 cycsCiAgICAgXSwKICAgICAncmVncmVzc19hcmdzJzogWyctLWRscGF0aCcsIG1lc29uLnByb2pl Y3RfYnVpbGRfcm9vdCgpIC8gJ3NyYy90ZXN0L3JlZ3Jlc3MnXSwKICAgICAjIFRoZSBpbmplY3Rp b24gcG9pbnRzIGFyZSBjbHVzdGVyLXdpZGUsIHNvIGRpc2FibGUgaW5zdGFsbGNoZWNrCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9z bmFwc2hvdHMuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNf cmVzZXRfc25hcHNob3RzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uN2Y3ZGZmYTViZTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCkBAIC0wLDAgKzEsOTUgQEAK K0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKKworU0VMRUNUIGluamVjdGlvbl9w b2ludHNfc2V0X2xvY2FsKCk7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBf cmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7CitTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMn LCAnbm90aWNlJyk7CisKKworQ1JFQVRFIFNDSEVNQSBjaWNfcmVzZXRfc25hcDsKK0NSRUFURSBU QUJMRSBjaWNfcmVzZXRfc25hcC50YmwoaSBpbnQgcHJpbWFyeSBrZXksIGogaW50KTsKK0lOU0VS VCBJTlRPIGNpY19yZXNldF9zbmFwLnRibCBTRUxFQ1QgaSwgaSAqIEkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMjAwKSBzKGkpOworCitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJl ZGljYXRlX3N0YWJsZShpbnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJCQkJCQkJCQkg IExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRf Y3VycmVudCgpJzsKKyAgICBSRVRVUk4gTU9EKCQxLCAyKSA9IDA7CitFTkQ7ICQkOworCitDUkVB VEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpIFJF VFVSTlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAor QkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCknOworICAgIFJFVFVSTiBm YWxzZTsKK0VORDsgJCQ7CisKKy0tLS0tLS0tLS0tLS0tLS0KK0FMVEVSIFRBQkxFIGNpY19yZXNl dF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9MCk7CisKK0NSRUFURSBVTklRVUUgSU5E RVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4 IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAu dGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKK1JFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFi bGUoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNf cmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7CitSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNp Y19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworCistLSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCitBTFRFUiBUQUJMRSBj aWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOworCitDUkVBVEUgVU5J UVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitSRUlOREVYIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4 IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNh dGVfc3RhYmxlKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hF UkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5VTExTIExBU1QpOworUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKKworQkVHSU4gVFJBTlNBQ1RJT047CitDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitST0xMQkFDSyA7CisKK1NFVCBk ZWZhdWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbiA9IHNlcmlhbGl6YWJsZTsKK0NSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK1JFU0VUIGRlZmF1bHRfdHJhbnNh Y3Rpb25faXNvbGF0aW9uOworCitEUk9QIFNDSEVNQSBjaWNfcmVzZXRfc25hcCBDQVNDQURFOwor CitEUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwotLSAKMi40My4wCgo= --000000000000dbacbc064d91788d Content-Type: application/octet-stream; name="v4-0001-Add-stress-tests-for-concurrent-index-builds.patch" Content-Disposition: attachment; filename="v4-0001-Add-stress-tests-for-concurrent-index-builds.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn0x7cmf0 RnJvbSBlODFiODNiYjU5NDM3NTc4OTcwNWEyYmVkZGMzMGQyNmUyMGJlNzI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjQgMS80XSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxk cwoKSW50cm9kdWNlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25z OgotIHRlc3QgY29uY3VycmVudCBpbnNlcnRzL3VwZGF0ZXMgZHVyaW5nIENSRUFURS9SRUlOREVY IElOREVYIENPTkNVUlJFTlRMWQotIGNvdmVyIHZhcmlvdXMgaW5kZXggdHlwZXMgKGJ0cmVlLCBn aW4sIGdpc3QsIGJyaW4sIGhhc2gsIHNwZ2lzdCkKLSB0ZXN0IHVuaXF1ZSBhbmQgbm9uLXVuaXF1 ZSBpbmRleGVzCi0gdGVzdCB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzCi0gdGVzdCBi b3RoIHBhcmFsbGVsIGFuZCBub24tcGFyYWxsZWwgb3BlcmF0aW9ucwoKVGhlc2UgdGVzdHMgdmVy aWZ5IHRoZSBiZWhhdmlvciBvZiB0aGUgZm9sbG93aW5nIGNvbW1pdHMuCi0tLQogc3JjL2Jpbi9w Z19hbWNoZWNrL21lc29uLmJ1aWxkICB8ICAgMSArCiBzcmMvYmluL3BnX2FtY2hlY2svdC8wMDZf Y2ljLnBsIHwgMjczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNo YW5nZWQsIDI3NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ19h bWNoZWNrL3QvMDA2X2NpYy5wbAoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNv bi5idWlsZCBiL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5idWlsZAppbmRleCA1OTJjZWY3NGVj Yi4uNTFhNjJkY2NiN2IgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5idWls ZAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQKQEAgLTI4LDYgKzI4LDcgQEAg dGVzdHMgKz0gewogICAgICAgJ3QvMDAzX2NoZWNrLnBsJywKICAgICAgICd0LzAwNF92ZXJpZnlf aGVhcGFtLnBsJywKICAgICAgICd0LzAwNV9vcGNsYXNzX2RhbWFnZS5wbCcsCisgICAgICAndC8w MDZfY2ljLnBsJywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19hbWNo ZWNrL3QvMDA2X2NpYy5wbCBiL3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjA0OTVhYzEwMjYzCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA2X2NpYy5wbApAQCAtMCwwICsxLDI3MyBA QAorIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisKKyMgVGVzdCBSRUlOREVYIENPTkNVUlJFTlRMWSB3aXRoIGNvbmN1cnJlbnQgbW9kaWZp Y2F0aW9ucyBhbmQgSE9UIHVwZGF0ZXMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwg PT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK3VzZSBjb25zdGFudCBTVFJFU1Nf UEdCRU5DSF9DTElFTlRTID0+IDMwOwordXNlIGNvbnN0YW50IFNUUkVTU19QR0JFTkNIX0pPQlMg PT4gODsKK3VzZSBjb25zdGFudCBTVFJFU1NfUEdCRU5DSF9UUkFOU0FDVElPTlMgPT4gMTAwMDA7 Cit1c2UgY29uc3RhbnQgU1RSRVNTX01BWF9TTEVFUF9NUyA9PiAxMDsKKwordXNlIGNvbnN0YW50 IERFRkFVTFRfUEdCRU5DSF9DTElFTlRTID0+IDE1OwordXNlIGNvbnN0YW50IERFRkFVTFRfUEdC RU5DSF9KT0JTID0+IDQ7Cit1c2UgY29uc3RhbnQgREVGQVVMVF9QR0JFTkNIX1RSQU5TQUNUSU9O UyA9PiA1MDA7Cit1c2UgY29uc3RhbnQgREVGQVVMVF9NQVhfU0xFRVBfTVMgPT4gMTsKKworVGVz dDo6TW9yZS0+YnVpbGRlci0+dG9kb19zdGFydCgnZmlsZXN5c3RlbSBidWcnKQorICBpZiBQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczo6aGFzX3dhbF9yZWFkX2J1ZzsKKworbXkgKCRub2RlLCAkcmVz dWx0KTsKK215ICRwZ190ZXN0X2V4dHJhID0gJEVOVntQR19URVNUX0VYVFJBfSAvLyAnJzsKK215 ICRpc19zdHJlc3MgPSAkcGdfdGVzdF9leHRyYSA9fiAvXGJzdHJlc3NcYi8gPyAxIDogMDsKK215 ICRwZ2JlbmNoX2NsaWVudHMgPQorICAkaXNfc3RyZXNzID8gU1RSRVNTX1BHQkVOQ0hfQ0xJRU5U UyA6IERFRkFVTFRfUEdCRU5DSF9DTElFTlRTOworbXkgJHBnYmVuY2hfam9icyA9ICRpc19zdHJl c3MgPyBTVFJFU1NfUEdCRU5DSF9KT0JTIDogREVGQVVMVF9QR0JFTkNIX0pPQlM7CitteSAkcGdi ZW5jaF90cmFuc2FjdGlvbnMgPQorICAkaXNfc3RyZXNzID8gU1RSRVNTX1BHQkVOQ0hfVFJBTlNB Q1RJT05TIDogREVGQVVMVF9QR0JFTkNIX1RSQU5TQUNUSU9OUzsKK215ICRtYXhfc2xlZXBfbXMg PSAkaXNfc3RyZXNzID8gU1RSRVNTX01BWF9TTEVFUF9NUyA6IERFRkFVTFRfTUFYX1NMRUVQX01T OworbXkgJHBnYmVuY2hfb3B0aW9ucyA9IHNwcmludGYoCisJJy0tbm8tdmFjdXVtIC0tY2xpZW50 PSVkIC0tam9icz0lZCAtLWV4aXQtb24tYWJvcnQgLS10cmFuc2FjdGlvbnM9JWQnLAorCSRwZ2Jl bmNoX2NsaWVudHMsCisJJHBnYmVuY2hfam9icywKKwkkcGdiZW5jaF90cmFuc2FjdGlvbnMpOwor bXkgJG5vX2hvdCA9ICRpc19zdHJlc3MgPyBpbnQocmFuZCgyKSkgOiAwOworCitwcmludCgKKwkJ c3ByaW50ZigKKwkJJ3NldHRpbmdzOiBQR19URVNUX0VYVFJBPSVzIHN0cmVzcz0lZCBjbGllbnRz PSVkIGpvYnM9JWQgdHJhbnNhY3Rpb25zPSVkIG1heF9zbGVlcF9tcz0lZCBub19ob3Q9JWQnLAor CQlkZWZpbmVkKCRFTlZ7UEdfVEVTVF9FWFRSQX0pCisJCT8gKCRwZ190ZXN0X2V4dHJhIGVxICcn ID8gJyhlbXB0eSknIDogJHBnX3Rlc3RfZXh0cmEpCisJCTogJyh1bmRlZiknLAorCQkkaXNfc3Ry ZXNzLAorCQkkcGdiZW5jaF9jbGllbnRzLAorCQkkcGdiZW5jaF9qb2JzLAorCQkkcGdiZW5jaF90 cmFuc2FjdGlvbnMsCisJCSRtYXhfc2xlZXBfbXMsCisJCSRub19ob3QpKTsKK3ByaW50ICJcbiI7 CisKKyMKKyMgVGVzdCBzZXQtdXAKKyMKKyRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCdSQ190ZXN0Jyk7Ciskbm9kZS0+aW5pdDsKKyRub2RlLT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJywKKwknbG9ja190aW1lb3V0ID0gJyAuICgxMDAwICogJFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJywgJ2ZzeW5jID0gb2ZmJyk7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsICdtYWludGVuYW5jZV93b3JrX21lbSA9IDMyTUInKTsgIyB0byBhdm9pZCBP T00KKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ3NoYXJlZF9idWZmZXJz ID0gMzJNQicpOyAjIHRvIGF2b2lkIE9PTQorJG5vZGUtPnN0YXJ0OworJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxKENSRUFURSBFWFRFTlNJT04gYW1jaGVjaykpOworJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBVTkxPR0dFRCBUQUJMRSB0YmwoaSBpbnQgcHJpbWFy eSBrZXksCisJCQkJCQkJCWMxIG1vbmV5IGRlZmF1bHQgMCwgYzIgbW9uZXkgZGVmYXVsdCAwLAor CQkJCQkJCQljMyBtb25leSBkZWZhdWx0IDAsIHVwZGF0ZWRfYXQgdGltZXN0YW1wLAorCQkJCQkJ CQlpYSBpbnQ0W10sIHAgcG9pbnQpKSk7CisKK2lmICgkbm9faG90KSB7ICRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiB0YmwoaSwg dXBkYXRlZF9hdCk7KSk7IH0KKworIyBjcmVhdGUgc2VxdWVuY2UKKyRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcShDUkVBVEUgVU5MT0dHRUQgU0VRVUVOQ0UgaW5fcm93X3JlYnVpbGQgU1RB UlQgMSBJTkNSRU1FTlQgMTspKTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShTRUxF Q1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKTspKTsKKworIyBDcmVhdGUgaGVscGVyIGZ1bmN0 aW9ucyBmb3IgcHJlZGljYXRlIHRlc3RzCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEo CisJQ1JFQVRFIEZVTkNUSU9OIHByZWRpY2F0ZV9zdGFibGUoKSBSRVRVUk5TIGJvb2wgSU1NVVRB QkxFCisJTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorCUJFR0lOCisJCUVYRUNVVEUgJ1NFTEVDVCB0 eGlkX2N1cnJlbnQoKSc7CisJCVJFVFVSTiB0cnVlOworCUVORDsgJCQ7CispKTsKKworJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKAorCUNSRUFURSBGVU5DVElPTiBwcmVkaWNhdGVfY29u c3QoaW50ZWdlcikgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCUxBTkdVQUdFIHBscGdzcWwgQVMg JCQKKwlCRUdJTgorCQlSRVRVUk4gTU9EKCQxLCAyKSA9IDA7CisJRU5EOyAkJDsKKykpOworCisj IFJ1biBDSUMvUklDIGluIGRpZmZlcmVudCBvcHRpb25zIGNvbmN1cnJlbnRseSB3aXRoIHVwc2Vy dHMKKyRub2RlLT5wZ2JlbmNoKAorCSRwZ2JlbmNoX29wdGlvbnMsCisJMCwKKwlbcXJ7YWN0dWFs bHkgcHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRo IFJFSU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWScsCisJeworCQknY29uY3VycmVudF9v cHMnID0+IHNwcmludGYocSgKKwkJCVNFVCBkZWJ1Z19wYXJhbGxlbF9xdWVyeSA9IG9mZjsgLS0g dGhpcyBpcyBiZWNhdXNlIHByZWRpY2F0ZV9zdGFibGUgaW1wbGVtZW50YXRpb24KKwkJCVNFTEVD VCBwZ190cnlfYWR2aXNvcnlfbG9jayg0Mik6OmludGVnZXIgQVMgZ290bG9jayBcZ3NldAorCQkJ XGlmIDpnb3Rsb2NrCisJCQkJU0VMRUNUIG5leHR2YWwoJ2luX3Jvd19yZWJ1aWxkJykgQVMgbGFz dF92YWx1ZSBcZ3NldAorCQkJCVxzZXQgdmFyaWFudCByYW5kb20oMCwgNSkKKwkJCQlcc2V0IHBh cmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVS IFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7CisJCQkJCVxpZiA6 dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0 YmwoaSwgdXBkYXRlZF9hdCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMQorCQkJCQkJQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0KSBXSEVSRSBw cmVkaWNhdGVfc3RhYmxlKCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMgorCQkJCQkJQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0KSBXSEVSRSBN T0QoaSwgMikgPSAwOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCkgV0hFUkUgcHJlZGlj YXRlX2NvbnN0KGkpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDQKKwkJCQkJCUNSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwocHJlZGljYXRlX2NvbnN0KGkpKTsKKwkJCQkJ XGVsaWYgOnZhcmlhbnQgPSA1CisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19p ZHggT04gdGJsKGksIHByZWRpY2F0ZV9jb25zdChpKSwgdXBkYXRlZF9hdCkgV0hFUkUgcHJlZGlj YXRlX2NvbnN0KGkpOworCQkJCQlcZW5kaWYKKwkJCQkJXHNldCBzbGVlcF9tcyByYW5kb20oMCwg JWQpCisJCQkJCVxzbGVlcCA6c2xlZXBfbXMgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4X2NoZWNr KCduZXdfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7 CisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJCVxzZXQgc2xl ZXBfbXMgcmFuZG9tKDAsICVkKQorCQkJCQlcc2xlZXAgOnNsZWVwX21zIG1zCisJCQkJCVNFTEVD VCBidF9pbmRleF9jaGVjaygnbmV3X2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUsIGNoZWNr dW5pcXVlID0+IHRydWUpOworCQkJCQlEUk9QIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4Owor CQkJCVxlbmRpZgorCQkJCVNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soNDIpOworCQkJXGVsc2UK KwkJCQlcc2V0IG51bSByYW5kb20oMTAwMCwgMTAwMDAwKQorCQkJCUJFR0lOOworCQkJCUlOU0VS VCBJTlRPIHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCksQVJSQVlb Zmxvb3IocmFuZG9tKCkqMTAwKTo6aW50XSxwb2ludChyYW5kb20oKSxyYW5kb20oKSkpCisJCQkJ CU9OIENPTkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpLCBpYSA9IEFS UkFZW2Zsb29yKHJhbmRvbSgpKjEwMCk6OmludF0sIHAgPSBwb2ludChyYW5kb20oKSxyYW5kb20o KSk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAs MCxub3coKSxBUlJBWVtmbG9vcihyYW5kb20oKSoxMDApOjppbnRdLHBvaW50KHJhbmRvbSgpLHJh bmRvbSgpKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0g bm93KCksIGlhID0gQVJSQVlbZmxvb3IocmFuZG9tKCkqMTAwKTo6aW50XSwgcCA9IHBvaW50KHJh bmRvbSgpLHJhbmRvbSgpKTsKKwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZsb29yKHJhbmRv bSgpKjpudW0pLDAsMCwwLG5vdygpLEFSUkFZW2Zsb29yKHJhbmRvbSgpKjEwMCk6OmludF0scG9p bnQocmFuZG9tKCkscmFuZG9tKCkpKQorCQkJCQlPTiBDT05GTElDVChpKSBETyBVUERBVEUgU0VU IHVwZGF0ZWRfYXQgPSBub3coKSwgaWEgPSBBUlJBWVtmbG9vcihyYW5kb20oKSoxMDApOjppbnRd LCBwID0gcG9pbnQocmFuZG9tKCkscmFuZG9tKCkpOworCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxV RVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCksQVJSQVlbZmxvb3IocmFuZG9tKCkq MTAwKTo6aW50XSxwb2ludChyYW5kb20oKSxyYW5kb20oKSkpCisJCQkJCU9OIENPTkZMSUNUKGkp IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpLCBpYSA9IEFSUkFZW2Zsb29yKHJhbmRv bSgpKjEwMCk6OmludF0sIHAgPSBwb2ludChyYW5kb20oKSxyYW5kb20oKSk7CisJCQkJSU5TRVJU IElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSxBUlJBWVtm bG9vcihyYW5kb20oKSoxMDApOjppbnRdLHBvaW50KHJhbmRvbSgpLHJhbmRvbSgpKSkKKwkJCQkJ T04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCksIGlhID0gQVJS QVlbZmxvb3IocmFuZG9tKCkqMTAwKTo6aW50XSwgcCA9IHBvaW50KHJhbmRvbSgpLHJhbmRvbSgp KTsKKwkJCQlTRUxFQ1Qgc2V0dmFsKCdpbl9yb3dfcmVidWlsZCcsIDEpOworCQkJCUNPTU1JVDsK KwkJCVxlbmRpZgorCQkJKSwgJG1heF9zbGVlcF9tcywgJG1heF9zbGVlcF9tcykKKwl9KTsKKwor JG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFRSVU5DQVRFIFRBQkxFIHRibDspKTsKKwor IyBSdW4gQ0lDL1JJQyBmb3IgdW5pcXVlIGluZGV4IGNvbmN1cnJlbnRseSB3aXRoIHVwc2VydHMK KyRub2RlLT5wZ2JlbmNoKAorCSRwZ2JlbmNoX29wdGlvbnMsCisJMCwKKwlbcXJ7YWN0dWFsbHkg cHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRoIFJF SU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBmb3IgdW5pcXVlIEJUUkVFJywKKwl7CisJ CSdjb25jdXJyZW50X29wc191bmlxdWVfaWR4JyA9PiBzcHJpbnRmKHEoCisJCQlTRUxFQ1QgcGdf dHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6 Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3RfdmFs dWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3Rf dmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBh cmFsbGVscyk7CisJCQkJCUNSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHgg T04gdGJsKGkpOworCQkJCQlcc2V0IHNsZWVwX21zIHJhbmRvbSgwLCAlZCkKKwkJCQkJXHNsZWVw IDpzbGVlcF9tcyBtcworCQkJCQlTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ25ld19pZHgnLCBoZWFw YWxsaW5kZXhlZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeDsKKwkJCQkJXHNldCBzbGVlcF9tcyByYW5kb20oMCwg JWQpCisJCQkJCVxzbGVlcCA6c2xlZXBfbXMgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4X2NoZWNr KCduZXdfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7 CisJCQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJXGVuZGlmCisJCQkJ U0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCQlcZWxzZQorCQkJCVxzZXQgbnVtIHJh bmRvbSgxLCBwb3dlcigxMCwgcmFuZG9tKDEsIDUpKSkKKwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFM VUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5vdygpLEFSUkFZW2Zsb29yKHJhbmRvbSgp KjEwMCk6OmludF0scG9pbnQocmFuZG9tKCkscmFuZG9tKCkpKQorCQkJCQlPTiBDT05GTElDVChp KSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKSwgaWEgPSBBUlJBWVtmbG9vcihyYW5k b20oKSoxMDApOjppbnRdLCBwID0gcG9pbnQocmFuZG9tKCkscmFuZG9tKCkpOworCQkJCVNFTEVD VCBzZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlcZW5kaWYKKwkJCSksICRtYXhfc2xl ZXBfbXMsICRtYXhfc2xlZXBfbXMpCisJfSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcShUUlVOQ0FURSBUQUJMRSB0Ymw7KSk7CisKKyMgUnVuIENJQy9SSUMgZm9yIEdJTiB3aXRo IHVwc2VydHMKKyRub2RlLT5wZ2JlbmNoKAorCSRwZ2JlbmNoX29wdGlvbnMsCisJMCwKKwlbcXJ7 YWN0dWFsbHkgcHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9u cyB3aXRoIFJFSU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBmb3IgR0lOL0dJU1QvQlJJ Ti9IQVNIL1NQR0lTVCcsCisJeworCQknY29uY3VycmVudF9vcHNfZ2luX2lkeCcgPT4gc3ByaW50 ZihxKAorCQkJU0VMRUNUIHBnX3RyeV9hZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rs b2NrIFxnc2V0CisJCQlcaWYgOmdvdGxvY2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgnaW5fcm93X3Jl YnVpbGQnKSBBUyBsYXN0X3ZhbHVlIFxnc2V0CisJCQkJXHNldCBwYXJhbGxlbHMgcmFuZG9tKDAs IDQpCisJCQkJXGlmIDpsYXN0X3ZhbHVlIDwgMworCQkJCQlBTFRFUiBUQUJMRSB0YmwgU0VUIChw YXJhbGxlbF93b3JrZXJzPTpwYXJhbGxlbHMpOworCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIG5ld19pZHggT04gdGJsIFVTSU5HIEdJTiAoaWEpOworCQkJCQlcc2V0IHNsZWVwX21zIHJh bmRvbSgwLCAlZCkKKwkJCQkJXHNsZWVwIDpzbGVlcF9tcyBtcworCQkJCQlTRUxFQ1QgZ2luX2lu ZGV4X2NoZWNrKCduZXdfaWR4Jyk7CisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5l d19pZHg7CisJCQkJCVxzZXQgc2xlZXBfbXMgcmFuZG9tKDAsICVkKQorCQkJCQlcc2xlZXAgOnNs ZWVwX21zIG1zCisJCQkJCVNFTEVDVCBnaW5faW5kZXhfY2hlY2soJ25ld19pZHgnKTsKKwkJCQkJ RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeDsKKwkJCQlcZW5kaWYKKwkJCQlTRUxFQ1Qg cGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJXHNldCBudW0gcmFuZG9tKDEs IHBvd2VyKDEwLCByYW5kb20oMSwgNSkpKQorCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxVRVMoZmxv b3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCksQVJSQVlbZmxvb3IocmFuZG9tKCkqMTAwKTo6 aW50XSxwb2ludChyYW5kb20oKSxyYW5kb20oKSkpCisJCQkJCU9OIENPTkZMSUNUKGkpIERPIFVQ REFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpLCBpYSA9IEFSUkFZW2Zsb29yKHJhbmRvbSgpKjEw MCk6OmludF0sIHAgPSBwb2ludChyYW5kb20oKSxyYW5kb20oKSk7CisJCQkJU0VMRUNUIHNldHZh bCgnaW5fcm93X3JlYnVpbGQnLCAxKTsKKwkJCVxlbmRpZgorCQkJKSwgJG1heF9zbGVlcF9tcywg JG1heF9zbGVlcF9tcykKKwl9KTsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFRS VU5DQVRFIFRBQkxFIHRibDspKTsKKworIyBSdW4gQ0lDL1JJQyBmb3IgR0lTVC9CUklOL0hBU0gv U1BHSVNUIGluZGV4IGNvbmN1cnJlbnRseSB3aXRoIHVwc2VydHMKKyRub2RlLT5wZ2JlbmNoKAor CSRwZ2JlbmNoX29wdGlvbnMsCisJMCwKKwlbcXJ7YWN0dWFsbHkgcHJvY2Vzc2VkfV0sCisJW3Fy e14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRoIFJFSU5ERVgvQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBmb3IgR0lTVC9CUklOL0hBU0gvU1BHSVNUJywKKwl7CisJCSdjb25jdXJy ZW50X29wc19vdGhlcl9pZHgnID0+IHNwcmludGYocSgKKwkJCVNFTEVDVCBwZ190cnlfYWR2aXNv cnlfbG9jayg0Mik6OmludGVnZXIgQVMgZ290bG9jayBcZ3NldAorCQkJXGlmIDpnb3Rsb2NrCisJ CQkJU0VMRUNUIG5leHR2YWwoJ2luX3Jvd19yZWJ1aWxkJykgQVMgbGFzdF92YWx1ZSBcZ3NldAor CQkJCVxzZXQgcGFyYWxsZWxzIHJhbmRvbSgwLCA0KQorCQkJCVxpZiA6bGFzdF92YWx1ZSA8IDMK KwkJCQkJQUxURVIgVEFCTEUgdGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz06cGFyYWxsZWxzKTsK KwkJCQkJXHNldCB2YXJpYW50IHJhbmRvbSgwLCAzKQorCQkJCQlcaWYgOnZhcmlhbnQgPSAwCisJ CQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHggT04gdGJsIFVTSU5HIEdJU1Qg KHApOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDEKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJS RU5UTFkgbmV3X2lkeCBPTiB0YmwgVVNJTkcgQlJJTiAodXBkYXRlZF9hdCk7CisJCQkJCVxlbGlm IDp2YXJpYW50ID0gMgorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9O IHRibCBVU0lORyBIQVNIICh1cGRhdGVkX2F0KTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSAzCisJ CQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHggT04gdGJsIFVTSU5HIFNQR0lT VCAocCk7CisJCQkJCVxlbmRpZgorCQkJCQlcc2V0IHNsZWVwX21zIHJhbmRvbSgwLCAlZCkKKwkJ CQkJXHNsZWVwIDpzbGVlcF9tcyBtcworCQkJCQlSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBu ZXdfaWR4OworCQkJCQlcc2V0IHNsZWVwX21zIHJhbmRvbSgwLCAlZCkKKwkJCQkJXHNsZWVwIDpz bGVlcF9tcyBtcworCQkJCQlEUk9QIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4OworCQkJCVxl bmRpZgorCQkJCVNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soNDIpOworCQkJXGVsc2UKKwkJCQlc c2V0IG51bSByYW5kb20oMSwgcG93ZXIoMTAsIHJhbmRvbSgxLCA1KSkpCisJCQkJSU5TRVJUIElO VE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSxBUlJBWVtmbG9v cihyYW5kb20oKSoxMDApOjppbnRdLHBvaW50KHJhbmRvbSgpLHJhbmRvbSgpKSkKKwkJCQkJT04g Q09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCksIGlhID0gQVJSQVlb Zmxvb3IocmFuZG9tKCkqMTAwKTo6aW50XSwgcCA9IHBvaW50KHJhbmRvbSgpLHJhbmRvbSgpKTsK KwkJCQlTRUxFQ1Qgc2V0dmFsKCdpbl9yb3dfcmVidWlsZCcsIDEpOworCQkJXGVuZGlmCisJCQkp LCAkbWF4X3NsZWVwX21zLCAkbWF4X3NsZWVwX21zKQorCQl9KTsKKworJG5vZGUtPnN0b3A7Citk b25lX3Rlc3RpbmcoKTsKLS0gCjIuNDMuMAoK --000000000000dbacbc064d91788d Content-Type: application/octet-stream; name="v4-0004-Support-snapshot-resets-in-concurrent-builds-of-u.patch" Content-Disposition: attachment; filename="v4-0004-Support-snapshot-resets-in-concurrent-builds-of-u.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn0x7cmp3 RnJvbSBiZmNmNWE5NWY4ZjAwYjhkODcxOGQ2ZjdjMWMwMDlkYTIyZTNmN2I4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxNCBKYW4gMjAyNiAxOTowMjozNCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjQgNC80XSBTdXBwb3J0IHNuYXBzaG90IHJlc2V0cyBpbiBjb25jdXJyZW50IGJ1aWxk cyBvZiB1bmlxdWUKIGluZGV4ZXMKClByZXZpb3VzbHksIGNvbmN1cnJlbnQgYnVpbGRzIG9mIHVu aXF1ZSBpbmRleCB1c2VkIGEgZml4ZWQgc25hcHNob3QgZm9yIHRoZSBlbnRpcmUgc2NhbiB0byBl bnN1cmUgcHJvcGVyIHVuaXF1ZW5lc3MgY2hlY2tzLgoKTm93IHJlc2V0IHNuYXBzaG90cyBwZXJp b2RpY2FsbHkgZHVyaW5nIGNvbmN1cnJlbnQgdW5pcXVlIGluZGV4IGJ1aWxkcywgd2hpbGUgc3Rp bGwgbWFpbnRhaW5pbmcgdW5pcXVlbmVzcyBieToKLSBpZ25vcmluZyBTbmFwc2hvdFNlbGYgZGVh ZCB0dXBsZXMgZHVyaW5nIHVuaXF1ZW5lc3MgY2hlY2tzIGluIHR1cGxlc29ydCBhcyBub3QgYSBn dWFyYW50ZWUsIGJ1dCBhIGZhaWwtZmFzdCBtZWNoYW5pY3MKLSBhZGRpbmcgYSB1bmlxdWVuZXNz IGNoZWNrIGluIF9idF9sb2FkIHRoYXQgZGV0ZWN0cyBtdWx0aXBsZSBhbGl2ZSB0dXBsZXMgd2l0 aCB0aGUgc2FtZSBrZXkgdmFsdWVzIGFzIGEgZ3VhcmFudGVlIG9mIGNvcnJlY3RuZXNzCgpUdXBs ZXMgYXJlIFNuYXBzaG90U2VsZiB0ZXN0ZWQgb25seSBpbiB0aGUgY2FzZSBvZiBlcXVhbCBpbmRl eCBrZXkgdmFsdWVzLCBvdGhlcndpc2UgX2J0X2xvYWQgd29ya3MgbGlrZSBiZWZvcmUuCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCAgICAgICAgICAgIHwgIDEyICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAgfCAgIDYgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyAgICAgICAgICB8ICAgOCArLQogc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWFkcGFnZS5jICAgICAgIHwgICAyICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgICAgfCAyMDggKysrKysrKysr KysrKy0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMgICAgICAg fCAgMTIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYyAgICAgICAgICB8 ICAzMCArKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8 ICAgOCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwg ICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMgICAgfCAg NzEgKysrKystCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggICAgICAgICAgICAgICAgICAg fCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgICAgICB8 ICAgMiArLQogc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmggICAgICAgICAgICAgICAgIHwg ICAxICsKIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8ICAg NiArCiAxNCBmaWxlcyBjaGFuZ2VkLCAyNzQgaW5zZXJ0aW9ucygrKSwgMTAwIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCmluZGV4IDc0ZTQwN2YzNzVhLi44MjlkYWQx MTk0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVAorKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCkBAIC0zODYsMTIgKzM4NiwxMiBA QCBoYXZlIHRoZSBIT1Qtc2FmZXR5IHByb3BlcnR5IGVuZm9yY2VkIGJlZm9yZSB3ZSBzdGFydCB0 byBidWlsZCB0aGUgbmV3CiBpbmRleC4KIAogQWZ0ZXIgd2FpdGluZyBmb3IgdHJhbnNhY3Rpb25z IHdoaWNoIGhhZCB0aGUgdGFibGUgb3Blbiwgd2UgYnVpbGQgdGhlIGluZGV4Ci1mb3IgYWxsIHJv d3MgdGhhdCBhcmUgdmFsaWQgaW4gYSBmcmVzaCBzbmFwc2hvdC4gIEFueSB0dXBsZXMgdmlzaWJs ZSBpbiB0aGUKLXNuYXBzaG90IHdpbGwgaGF2ZSBvbmx5IHZhbGlkIGZvcndhcmQtZ3Jvd2luZyBI T1QgY2hhaW5zLiAgKFRoZXkgbWlnaHQgaGF2ZQotb2xkZXIgSE9UIHVwZGF0ZXMgYmVoaW5kIHRo ZW0gd2hpY2ggYXJlIGJyb2tlbiwgYnV0IHRoaXMgaXMgT0sgZm9yIHRoZSBzYW1lCi1yZWFzb24g aXQncyBPSyBpbiBhIHJlZ3VsYXIgaW5kZXggYnVpbGQuKSAgQXMgYWJvdmUsIHdlIHBvaW50IHRo ZSBpbmRleAotZW50cnkgYXQgdGhlIHJvb3Qgb2YgdGhlIEhPVC11cGRhdGUgY2hhaW4gYnV0IHdl IHVzZSB0aGUga2V5IHZhbHVlIGZyb20gdGhlCi1saXZlIHR1cGxlLgorZm9yIGFsbCByb3dzIHRo YXQgYXJlIHZhbGlkIGluIGEgZnJlc2ggc25hcHNob3QsIHdoaWNoIGlzIHVwZGF0ZWQgZXZlcnkg c28KK29mdGVuLiBBbnkgdHVwbGVzIHZpc2libGUgaW4gdGhlIHNuYXBzaG90IHdpbGwgaGF2ZSBv bmx5IHZhbGlkIGZvcndhcmQtZ3Jvd2luZworSE9UIGNoYWlucy4gIChUaGV5IG1pZ2h0IGhhdmUg b2xkZXIgSE9UIHVwZGF0ZXMgYmVoaW5kIHRoZW0gd2hpY2ggYXJlIGJyb2tlbiwKK2J1dCB0aGlz IGlzIE9LIGZvciB0aGUgc2FtZSByZWFzb24gaXQncyBPSyBpbiBhIHJlZ3VsYXIgaW5kZXggYnVp bGQuKQorQXMgYWJvdmUsIHdlIHBvaW50IHRoZSBpbmRleCBlbnRyeSBhdCB0aGUgcm9vdCBvZiB0 aGUgSE9ULXVwZGF0ZSBjaGFpbiBidXQgd2UKK3VzZSB0aGUga2V5IHZhbHVlIGZyb20gdGhlIGxp dmUgdHVwbGUuCiAKIFdlIG1hcmsgdGhlIGluZGV4IG9wZW4gZm9yIGluc2VydHMgKGJ1dCBzdGls bCBub3QgcmVhZHkgZm9yIHJlYWRzKSB0aGVuCiB3ZSBhZ2FpbiB3YWl0IGZvciB0cmFuc2FjdGlv bnMgd2hpY2ggaGF2ZSB0aGUgdGFibGUgb3Blbi4gIFRoZW4gd2UgdGFrZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggYTYzOWU4YjMxZTAuLjA0NzM4ZDU5Yjkx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTEyNjEsMTUg KzEyNjEsMTUgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJl bGF0aW9uLAogCSAqIHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5U TFlfREVBRCB0dXBsZXMpLiBJbiBhCiAJICogY29uY3VycmVudCBidWlsZCwgb3IgZHVyaW5nIGJv b3RzdHJhcCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdAogCSAqIGFuZCBpbmRleCB3 aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQgd2hpbGUgdGhhdCBzbmFwc2hvdCBpcyBy ZXNldAotCSAqIGV2ZXJ5IHNvIG9mdGVuIChpbiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXgpLgor CSAqIGV2ZXJ5IHNvIG9mdGVuLgogCSAqLwogCU9sZGVzdFhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKIAogCS8qCi0JICogRm9yIHVuaXF1ZSBpbmRleCB3ZSBuZWVkIGNvbnNpc3RlbnQgc25h cHNob3QgZm9yIHRoZSB3aG9sZSBzY2FuLgorCSAqIEZvciBjb25jdXJyZW50IGJ1aWxkcyBvZiBu b24tc3lzdGVtIGluZGV4ZXMsIHdlIG1heSB3YW50IHRvIHBlcmlvZGljYWxseQorCSAqIHJlc2V0 IHNuYXBzaG90cyB0byBhbGxvdyB2YWN1dW0gdG8gY2xlYW4gdXAgdHVwbGVzLgogCSAqLwogCXJl c2V0X3NuYXBzaG90cyA9IGluZGV4SW5mby0+aWlfQ29uY3VycmVudCAmJgotCQkJCQkgICFpbmRl eEluZm8tPmlpX1VuaXF1ZSAmJgogCQkJCQkgICFpc19zeXN0ZW1fY2F0YWxvZzsgLyoganVzdCBm b3IgdGhlIGNhc2UgKi8KIAogCS8qIG9rYXkgdG8gaWdub3JlIGxhenkgVkFDVVVNcyBoZXJlICov CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMKaW5kZXggYWY3YWZmZGY0MDkuLjEwZjRm N2VlYmE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRkZWR1cC5jCkBAIC0xNDksNyArMTQ5 LDcgQEAgX2J0X2RlZHVwX3Bhc3MoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBJbmRleFR1cGxl IG5ld2l0ZW0sIFNpemUgbmV3aXRlbXN6LAogCQkJX2J0X2RlZHVwX3N0YXJ0X3BlbmRpbmcoc3Rh dGUsIGl0dXAsIG9mZm51bSk7CiAJCX0KIAkJZWxzZSBpZiAoc3RhdGUtPmRlZHVwbGljYXRlICYm Ci0JCQkJIF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBzdGF0ZS0+YmFzZSwgaXR1cCkgPiBua2V5 YXR0cyAmJgorCQkJCSBfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXAs IE5VTEwpID4gbmtleWF0dHMgJiYKIAkJCQkgX2J0X2RlZHVwX3NhdmVfaHRpZChzdGF0ZSwgaXR1 cCkpCiAJCXsKIAkJCS8qCkBAIC0zNzYsNyArMzc2LDcgQEAgX2J0X2JvdHRvbXVwZGVsX3Bhc3Mo UmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBSZWxhdGlvbiBoZWFwUmVsLAogCQkJLyogaXR1cCBz dGFydHMgZmlyc3QgcGVuZGluZyBpbnRlcnZhbCAqLwogCQkJX2J0X2RlZHVwX3N0YXJ0X3BlbmRp bmcoc3RhdGUsIGl0dXAsIG9mZm51bSk7CiAJCX0KLQkJZWxzZSBpZiAoX2J0X2tlZXBfbmF0dHNf ZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwKSA+IG5rZXlhdHRzICYmCisJCWVsc2UgaWYgKF9i dF9rZWVwX25hdHRzX2Zhc3QocmVsLCBzdGF0ZS0+YmFzZSwgaXR1cCwgTlVMTCkgPiBua2V5YXR0 cyAmJgogCQkJCSBfYnRfZGVkdXBfc2F2ZV9odGlkKHN0YXRlLCBpdHVwKSkKIAkJewogCQkJLyog VHVwbGUgaXMgZXF1YWw7IGp1c3QgYWRkZWQgaXRzIFRJRHMgdG8gcGVuZGluZyBpbnRlcnZhbCAq LwpAQCAtNzg5LDEyICs3ODksMTIgQEAgX2J0X2RvX3NpbmdsZXZhbChSZWxhdGlvbiByZWwsIFBh Z2UgcGFnZSwgQlREZWR1cFN0YXRlIHN0YXRlLAogCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQocGFn ZSwgbWlub2ZmKTsKIAlpdHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJdGVtKHBhZ2UsIGl0ZW1p ZCk7CiAKLQlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5ld2l0ZW0sIGl0dXApID4gbmtl eWF0dHMpCisJaWYgKF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBuZXdpdGVtLCBpdHVwLCBOVUxM KSA+IG5rZXlhdHRzKQogCXsKIAkJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChwYWdlLCBQYWdlR2V0 TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpKTsKIAkJaXR1cCA9IChJbmRleFR1cGxlKSBQYWdlR2V0SXRl bShwYWdlLCBpdGVtaWQpOwogCi0JCWlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbmV3aXRl bSwgaXR1cCkgPiBua2V5YXR0cykKKwkJaWYgKF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBuZXdp dGVtLCBpdHVwLCBOVUxMKSA+IG5rZXlhdHRzKQogCQkJcmV0dXJuIHRydWU7CiAJfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlYWRwYWdlLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlYWRwYWdlLmMKaW5kZXggMmJhMWNhNjYwMjMuLmM0YzI3 OGU3NzdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlYWRwYWdl LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWFkcGFnZS5jCkBAIC02MjMs NyArNjIzLDcgQEAgX2J0X3NldF9zdGFydGlrZXkoSW5kZXhTY2FuRGVzYyBzY2FuLCBCVFJlYWRQ YWdlU3RhdGUgKnBzdGF0ZSkKIAlsYXN0dHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJdGVtKHBz dGF0ZS0+cGFnZSwgaWlkKTsKIAogCS8qIERldGVybWluZSB0aGUgZmlyc3QgYXR0cmlidXRlIHdo b3NlIHZhbHVlcyBjaGFuZ2Ugb24gY2FsbGVyJ3MgcGFnZSAqLwotCWZpcnN0Y2hhbmdpbmdhdHRu dW0gPSBfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgZmlyc3R0dXAsIGxhc3R0dXApOworCWZpcnN0 Y2hhbmdpbmdhdHRudW0gPSBfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgZmlyc3R0dXAsIGxhc3R0 dXAsIE5VTEwpOwogCiAJZm9yICg7IHN0YXJ0aWtleSA8IHNvLT5udW1iZXJPZktleXM7IHN0YXJ0 aWtleSsrKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29y dC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggNjU5NGMzZTE1 YjIuLmVhYTNmMDk0NTFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtODcs NiArODcsNyBAQCB0eXBlZGVmIHN0cnVjdCBCVFNwb29sCiAJUmVsYXRpb24JaW5kZXg7CiAJYm9v bAkJaXN1bmlxdWU7CiAJYm9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OworCWJvb2wJCXVuaXF1ZV9k ZWFkX2lnbm9yZWQ7CiB9IEJUU3Bvb2w7CiAKIC8qCkBAIC0xMDUsNiArMTA2LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgQlRTaGFyZWQKIAlPaWQJCQlpbmRleHJlbGlkOwogCWJvb2wJCWlzdW5pcXVlOwog CWJvb2wJCW51bGxzX25vdF9kaXN0aW5jdDsKKwlib29sCQl1bmlxdWVfZGVhZF9pZ25vcmVkOwog CWJvb2wJCWlzY29uY3VycmVudDsKIAlpbnQJCQlzY2FudHVwbGVzb3J0c3RhdGVzOwogCkBAIC0y MDcsMTUgKzIwOSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBCVExlYWRlcgogICovCiB0eXBlZGVmIHN0 cnVjdCBCVEJ1aWxkU3RhdGUKIHsKLQlib29sCQlpc3VuaXF1ZTsKLQlib29sCQludWxsc19ub3Rf ZGlzdGluY3Q7CiAJYm9vbAkJaGF2ZWRlYWQ7CiAJUmVsYXRpb24JaGVhcDsKIAlCVFNwb29sICAg ICpzcG9vbDsKIAogCS8qCi0JICogc3Bvb2wyIGlzIG5lZWRlZCBvbmx5IHdoZW4gdGhlIGluZGV4 IGlzIGEgdW5pcXVlIGluZGV4LiBEZWFkIHR1cGxlcyBhcmUKLQkgKiBwdXQgaW50byBzcG9vbDIg aW5zdGVhZCBvZiBzcG9vbCBpbiBvcmRlciB0byBhdm9pZCB1bmlxdWVuZXNzIGNoZWNrLgorCSAq IHNwb29sMiBpcyBuZWVkZWQgb25seSB3aGVuIHRoZSBpbmRleCBpcyBhIHVuaXF1ZSBpbmRleCBh bmQgYnVpbHQKKwkgKiBub24tY29uY3VycmVudGx5LiAgRGVhZCB0dXBsZXMgYXJlIHB1dCBpbnRv IHNwb29sMiBpbnN0ZWFkIG9mIHNwb29sCisJICogaW4gb3JkZXIgdG8gYXZvaWQgdW5pcXVlbmVz cyBjaGVjay4KIAkgKi8KIAlCVFNwb29sICAgICpzcG9vbDI7CiAJZG91YmxlCQlpbmR0dXBsZXM7 CkBAIC0yNjIsNyArMjYzLDcgQEAgc3RhdGljIGRvdWJsZSBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogc3RhdGljIHZvaWQgX2J0X3Nwb29sZGVzdHJv eShCVFNwb29sICpidHNwb29sKTsKIHN0YXRpYyB2b2lkIF9idF9zcG9vbChCVFNwb29sICpidHNw b29sLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnNlbGYsCiAJCQkJCSAgY29uc3QgRGF0dW0gKnZh bHVlcywgY29uc3QgYm9vbCAqaXNudWxsKTsKLXN0YXRpYyB2b2lkIF9idF9sZWFmYnVpbGQoQlRT cG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgcmVzZXRfc25hcHNob3RzKTsK K3N0YXRpYyB2b2lkIF9idF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRz cG9vbDIsIGJvb2wgaXNjb25jdXJyZW50KTsKIHN0YXRpYyB2b2lkIF9idF9idWlsZF9jYWxsYmFj ayhSZWxhdGlvbiBpbmRleCwgSXRlbVBvaW50ZXIgdGlkLCBEYXR1bSAqdmFsdWVzLAogCQkJCQkJ CSAgIGJvb2wgKmlzbnVsbCwgYm9vbCB0dXBsZUlzQWxpdmUsIHZvaWQgKnN0YXRlKTsKIHN0YXRp YyBCdWxrV3JpdGVCdWZmZXIgX2J0X2JsbmV3cGFnZShCVFdyaXRlU3RhdGUgKndzdGF0ZSwgdWlu dDMyIGxldmVsKTsKQEAgLTMwNyw4ICszMDgsNiBAQCBidGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJl bGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJUmVzZXRVc2FnZSgpOwogI2Vu ZGlmCQkJCQkJCS8qIEJUUkVFX0JVSUxEX1NUQVRTICovCiAKLQlidWlsZHN0YXRlLmlzdW5pcXVl ID0gaW5kZXhJbmZvLT5paV9VbmlxdWU7Ci0JYnVpbGRzdGF0ZS5udWxsc19ub3RfZGlzdGluY3Qg PSBpbmRleEluZm8tPmlpX051bGxzTm90RGlzdGluY3Q7CiAJYnVpbGRzdGF0ZS5oYXZlZGVhZCA9 IGZhbHNlOwogCWJ1aWxkc3RhdGUuaGVhcCA9IGhlYXA7CiAJYnVpbGRzdGF0ZS5zcG9vbCA9IE5V TEw7CkBAIC0zMjUsMjAgKzMyNCwyMCBAQCBidGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShpbmRleCkpOwogCiAJcmVsdHVwbGVzID0gX2J0X3Nwb29sc19oZWFwc2NhbihoZWFwLCBpbmRl eCwgJmJ1aWxkc3RhdGUsIGluZGV4SW5mbyk7Ci0JQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1 cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qCiAJICogRmluaXNoIHRoZSBi dWlsZCBieSAoMSkgY29tcGxldGluZyB0aGUgc29ydCBvZiB0aGUgc3Bvb2wgZmlsZSwgKDIpCiAJ ICogaW5zZXJ0aW5nIHRoZSBzb3J0ZWQgdHVwbGVzIGludG8gYnRyZWUgcGFnZXMgYW5kICgzKSBi dWlsZGluZyB0aGUgdXBwZXIKIAkgKiBsZXZlbHMuICBGaW5hbGx5LCBpdCBtYXkgYWxzbyBiZSBu ZWNlc3NhcnkgdG8gZW5kIHVzZSBvZiBwYXJhbGxlbGlzbS4KIAkgKi8KLQlfYnRfbGVhZmJ1aWxk KGJ1aWxkc3RhdGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bvb2wyLCAhaW5kZXhJbmZvLT5paV9Vbmlx dWUgJiYgaW5kZXhJbmZvLT5paV9Db25jdXJyZW50KTsKKwlfYnRfbGVhZmJ1aWxkKGJ1aWxkc3Rh dGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bvb2wyLCBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOwog CV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9vbCk7CiAJaWYgKGJ1aWxkc3RhdGUuc3Bv b2wyKQogCQlfYnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3RhdGUuc3Bvb2wyKTsKIAlpZiAoYnVpbGRz dGF0ZS5idGxlYWRlcikKIAkJX2J0X2VuZF9wYXJhbGxlbChidWlsZHN0YXRlLmJ0bGVhZGVyKTsK LQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCBpbmRleEluZm8tPmlpX1VuaXF1 ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFpbmRl eEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOwogCiAJcmVzdWx0ID0gcGFsbG9jX29iamVjdChJbmRleEJ1aWxkUmVzdWx0KTsKIApAQCAt Mzg1LDYgKzM4NCwxMSBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0 aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJYnRzcG9vbC0+aW5kZXggPSBp bmRleDsKIAlidHNwb29sLT5pc3VuaXF1ZSA9IGluZGV4SW5mby0+aWlfVW5pcXVlOwogCWJ0c3Bv b2wtPm51bGxzX25vdF9kaXN0aW5jdCA9IGluZGV4SW5mby0+aWlfTnVsbHNOb3REaXN0aW5jdDsK KwkvKgorCSAqIFdlIG5lZWQgdG8gaWdub3JlIGRlYWQgdHVwbGVzIGZvciB1bmlxdWUgY2hlY2tz IGluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZC4KKwkgKiBJdCBpcyByZXF1aXJlZCBiZWNhdXNl IG9mIHBlcmlvZGljIHJlc2V0IG9mIHNuYXBzaG90LgorCSAqLworCWJ0c3Bvb2wtPnVuaXF1ZV9k ZWFkX2lnbm9yZWQgPSBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgJiYgaW5kZXhJbmZvLT5paV9V bmlxdWU7CiAKIAkvKiBTYXZlIGFzIHByaW1hcnkgc3Bvb2wgKi8KIAlidWlsZHN0YXRlLT5zcG9v bCA9IGJ0c3Bvb2w7CkBAIC00MzMsOCArNDM3LDkgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAogCSAq IHRoZSB1c2Ugb2YgcGFyYWxsZWxpc20gb3IgYW55IG90aGVyIGZhY3Rvci4KIAkgKi8KIAlidWls ZHN0YXRlLT5zcG9vbC0+c29ydHN0YXRlID0KLQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVl KGhlYXAsIGluZGV4LCBidWlsZHN0YXRlLT5pc3VuaXF1ZSwKLQkJCQkJCQkJCWJ1aWxkc3RhdGUt Pm51bGxzX25vdF9kaXN0aW5jdCwKKwkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKGhlYXAs IGluZGV4LCBidHNwb29sLT5pc3VuaXF1ZSwKKwkJCQkJCQkJCWJ0c3Bvb2wtPm51bGxzX25vdF9k aXN0aW5jdCwKKwkJCQkJCQkJCWJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQsCiAJCQkJCQkJ CQltYWludGVuYW5jZV93b3JrX21lbSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCVRVUExFU09SVF9O T05FKTsKIApAQCAtNDQyLDggKzQ0NywxMiBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJICogSWYg YnVpbGRpbmcgYSB1bmlxdWUgaW5kZXgsIHB1dCBkZWFkIHR1cGxlcyBpbiBhIHNlY29uZCBzcG9v bCB0byBrZWVwCiAJICogdGhlbSBvdXQgb2YgdGhlIHVuaXF1ZW5lc3MgY2hlY2suICBXZSBleHBl Y3QgdGhhdCB0aGUgc2Vjb25kIHNwb29sIChmb3IKIAkgKiBkZWFkIHR1cGxlcykgd29uJ3QgZ2V0 IHZlcnkgZnVsbCwgc28gd2UgZ2l2ZSBpdCBvbmx5IHdvcmtfbWVtLgorCSAqCisJICogSW4gY2Fz ZSBvZiBjb25jdXJyZW50IGJ1aWxkIGRlYWQgdHVwbGVzIGRvIG5vdCBuZWVkIHRvIGJlIHB1dCBp bnRvIGluZGV4CisJICogc2luY2Ugd2Ugd2FpdCBmb3IgYWxsIHNuYXBzaG90cyBvbGRlciB0aGFu IHJlZmVyZW5jZSBzbmFwc2hvdCBkdXJpbmcgdGhlCisJICogdmFsaWRhdGlvbiBwaGFzZS4KIAkg Ki8KLQlpZiAoaW5kZXhJbmZvLT5paV9VbmlxdWUpCisJaWYgKGluZGV4SW5mby0+aWlfVW5pcXVl ICYmICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpCiAJewogCQlCVFNwb29sICAgICpidHNwb29s MiA9IHBhbGxvYzBfb2JqZWN0KEJUU3Bvb2wpOwogCQlTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRl MiA9IE5VTEw7CkBAIC00NzQsNyArNDgzLDcgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlv biBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAogCQkgKiBm dWxsLCBzbyB3ZSBnaXZlIGl0IG9ubHkgd29ya19tZW0KIAkJICovCiAJCWJ1aWxkc3RhdGUtPnNw b29sMi0+c29ydHN0YXRlID0KLQkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShoZWFwLCBp bmRleCwgZmFsc2UsIGZhbHNlLCB3b3JrX21lbSwKKwkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9i dHJlZShoZWFwLCBpbmRleCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgd29ya19tZW0sCiAJCQkJCQkJ CQkJY29vcmRpbmF0ZTIsIFRVUExFU09SVF9OT05FKTsKIAl9CiAKQEAgLTQ4Nyw3ICs0OTYsNyBA QCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1 aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJCXJlbHR1cGxlcyA9IF9idF9wYXJhbGxlbF9oZWFwc2Nh bihidWlsZHN0YXRlLAogCQkJCQkJCQkJCSAgJmluZGV4SW5mby0+aWlfQnJva2VuSG90Q2hhaW4p OwogCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKLQlBc3NlcnQoIWluZGV4SW5mby0+aWlf Q29uY3VycmVudCB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFs aWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwg IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBTZXQgdGhl IHByb2dyZXNzIHRhcmdldCBmb3IgdGhlIG5leHQgcGhhc2UuICBSZXNldCB0aGUgYmxvY2sgbnVt YmVyCkBAIC01NDMsNyArNTUyLDcgQEAgX2J0X3Nwb29sKEJUU3Bvb2wgKmJ0c3Bvb2wsIGNvbnN0 IEl0ZW1Qb2ludGVyRGF0YSAqc2VsZiwgY29uc3QgRGF0dW0gKnZhbHVlcywgY28KICAqIGNyZWF0 ZSBhbiBlbnRpcmUgYnRyZWUuCiAgKi8KIHN0YXRpYyB2b2lkCi1fYnRfbGVhZmJ1aWxkKEJUU3Bv b2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cykKK19i dF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgaXNj b25jdXJyZW50KQogewogCUJUV3JpdGVTdGF0ZSB3c3RhdGU7CiAKQEAgLTU2NSw3ICs1NzQsNyBA QCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29s IHJlc2V0X3NuYXBzaG90cykKIAkJCQkJCQkJCSBQUk9HUkVTU19CVFJFRV9QSEFTRV9QRVJGT1JN U09SVF8yKTsKIAkJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KGJ0c3Bvb2wyLT5zb3J0c3RhdGUpOwog CX0KLQlBc3NlcnQoIXJlc2V0X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQ cm9jLT54bWluKSk7CisJQXNzZXJ0KCFpc2NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eG1pbikpOwogCiAJd3N0YXRlLmhlYXAgPSBidHNwb29sLT5oZWFwOwogCXdz dGF0ZS5pbmRleCA9IGJ0c3Bvb2wtPmluZGV4OwpAQCAtNTc5LDcgKzU4OCw3IEBAIF9idF9sZWFm YnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgcmVzZXRfc25h cHNob3RzKQogCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJ RFhfU1VCUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19CVFJFRV9QSEFTRV9MRUFGX0xPQUQpOwot CUFzc2VydCghcmVzZXRfc25hcHNob3RzIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2Mt PnhtaW4pKTsKKwlBc3NlcnQoIWlzY29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CiAJX2J0X2xvYWQoJndzdGF0ZSwgYnRzcG9vbCwgYnRzcG9vbDIpOwog fQogCkBAIC0xMTU2LDEzICsxMTY1LDExOCBAQCBfYnRfbG9hZChCVFdyaXRlU3RhdGUgKndzdGF0 ZSwgQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCiAJU29ydFN1cHBvcnQgc29y dEtleXM7CiAJaW50NjQJCXR1cGxlc19kb25lID0gMDsKIAlib29sCQlkZWR1cGxpY2F0ZTsKKwli b29sCQlmYWlsX29uX2FsaXZlX2R1cGxpY2F0ZTsKIAogCXdzdGF0ZS0+YnVsa3N0YXRlID0gc21n cl9idWxrX3N0YXJ0X3JlbCh3c3RhdGUtPmluZGV4LCBNQUlOX0ZPUktOVU0pOwogCiAJZGVkdXBs aWNhdGUgPSB3c3RhdGUtPmluc2tleS0+YWxsZXF1YWxpbWFnZSAmJiAhYnRzcG9vbC0+aXN1bmlx dWUgJiYKIAkJQlRHZXREZWR1cGxpY2F0ZUl0ZW1zKHdzdGF0ZS0+aW5kZXgpOworCS8qCisJICog VGhlIHVuaXF1ZV9kZWFkX2lnbm9yZWQgZG9lcyBub3QgZ3VhcmFudGVlIGFic2VuY2Ugb2YgbXVs dGlwbGUgYWxpdmUKKwkgKiB0dXBsZXMgd2l0aCB0aGUgc2FtZSB2YWx1ZXMgaW4gdGhlIHNwb29s LiBTdWNoIGEgY2FzZSBtYXkgaGFwcGVuIGlmCisJICogYWxpdmUgdHVwbGVzIGFyZSBsb2NhdGVk IGJldHdlZW4gYSBmZXcgZGVhZCB0dXBsZXMsIGxpa2UgdGhpczogYWRkZGEuCisJICovCisJZmFp bF9vbl9hbGl2ZV9kdXBsaWNhdGUgPSBidHNwb29sLT51bmlxdWVfZGVhZF9pZ25vcmVkOwogCi0J aWYgKG1lcmdlKQorCWlmIChmYWlsX29uX2FsaXZlX2R1cGxpY2F0ZSkKKwl7CisJCWJvb2wJc2Vl bl9hbGl2ZSA9IGZhbHNlLAorCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7CisJCUluZGV4VHVwbGUg cHJldiA9IE5VTEw7CisJCVR1cGxlVGFibGVTbG90IAkJKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVU YWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcih3c3RhdGUtPmhlYXApLAorCQkJCQkJCQkJCQkJCQkJ ICAgJlRUU09wc0J1ZmZlckhlYXBUdXBsZSk7CisJCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNo ID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4od3N0YXRlLT5oZWFwKTsKKworCQlBc3NlcnQoYnRz cG9vbC0+aXN1bmlxdWUpOworCQlBc3NlcnQoIWJ0c3Bvb2wyKTsKKworCQl3aGlsZSAoKGl0dXAg PSB0dXBsZXNvcnRfZ2V0aW5kZXh0dXBsZShidHNwb29sLT5zb3J0c3RhdGUsIHRydWUpKSAhPSBO VUxMKQorCQl7CisJCQlib29sCXR1cGxlc19lcXVhbCA9IGZhbHNlOworCisJCQkvKiBXaGVuIHdl IHNlZSBmaXJzdCB0dXBsZSwgY3JlYXRlIGZpcnN0IGluZGV4IHBhZ2UgKi8KKwkJCWlmIChzdGF0 ZSA9PSBOVUxMKQorCQkJCXN0YXRlID0gX2J0X3BhZ2VzdGF0ZSh3c3RhdGUsIDApOworCisJCQlp ZiAocHJldiAhPSBOVUxMKSAvKiBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgdHVwbGUgKi8KKwkJ CXsKKwkJCQlib29sCWhhc19udWxscyA9IGZhbHNlLAorCQkJCQkJY2FsbF9hZ2FpbiA9IGZhbHNl LAorCQkJCQkJaWdub3JlZCA9IGZhbHNlLAorCQkJCQkJbm93X2FsaXZlOworCQkJCUl0ZW1Qb2lu dGVyRGF0YSB0aWQ7CisKKwkJCQkvKiBpZiB0aGlzIHR1cGxlIGVxdWFsIHRvIHByZXZpb3VzIG9u ZT8gKi8KKwkJCQlpZiAod3N0YXRlLT5pbnNrZXktPmFsbGVxdWFsaW1hZ2UpCisJCQkJCXR1cGxl c19lcXVhbCA9IF9idF9rZWVwX25hdHRzX2Zhc3Qod3N0YXRlLT5pbmRleCwgcHJldiwgaXR1cCwg Jmhhc19udWxscykgPiBrZXlzejsKKwkJCQllbHNlCisJCQkJCXR1cGxlc19lcXVhbCA9IF9idF9r ZWVwX25hdHRzKHdzdGF0ZS0+aW5kZXgsIHByZXYsIGl0dXAsIHdzdGF0ZS0+aW5za2V5LCAmaGFz X251bGxzKSA+IGtleXN6OworCisJCQkJLyogaGFuZGxlIG51bGwgdmFsdWVzIGNvcnJlY3RseSAq LworCQkJCWlmIChoYXNfbnVsbHMgJiYgIWJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdCkKKwkJ CQkJdHVwbGVzX2VxdWFsID0gZmFsc2U7CisKKwkJCQlpZiAodHVwbGVzX2VxdWFsKQorCQkJCXsK KwkJCQkJLyogY2hlY2sgcHJldmlvdXMgdHVwbGUgaWYgbm90IHlldCAqLworCQkJCQlpZiAoIXBy ZXZfdGVzdGVkKQorCQkJCQl7CisJCQkJCQljYWxsX2FnYWluID0gZmFsc2U7CisJCQkJCQl0aWQg PSBwcmV2LT50X3RpZDsKKwkJCQkJCXNlZW5fYWxpdmUgPSB0YWJsZV9pbmRleF9mZXRjaF90dXBs ZShmZXRjaCwgJnRpZCwgU25hcHNob3RTZWxmLCBzbG90LCAmY2FsbF9hZ2FpbiwgJmlnbm9yZWQp OworCQkJCQkJcHJldl90ZXN0ZWQgPSB0cnVlOworCQkJCQl9CisKKwkJCQkJY2FsbF9hZ2FpbiA9 IGZhbHNlOworCQkJCQl0aWQgPSBpdHVwLT50X3RpZDsKKwkJCQkJbm93X2FsaXZlID0gdGFibGVf aW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQsIFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxf YWdhaW4sICZpZ25vcmVkKTsKKworCQkJCQkvKiBhcmUgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIGRl dGVjdGVkIGluIGVxdWFsIGdyb3VwPyAqLworCQkJCQlpZiAoc2Vlbl9hbGl2ZSAmJiBub3dfYWxp dmUpCisJCQkJCXsKKwkJCQkJCWNoYXIgKmtleV9kZXNjOworCQkJCQkJVHVwbGVEZXNjIHR1cERl cyA9IFJlbGF0aW9uR2V0RGVzY3Iod3N0YXRlLT5pbmRleCk7CisJCQkJCQlib29sIGlzbnVsbFtJ TkRFWF9NQVhfS0VZU107CisJCQkJCQlEYXR1bSB2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOworCisJ CQkJCQlpbmRleF9kZWZvcm1fdHVwbGUoaXR1cCwgdHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7CisK KwkJCQkJCWtleV9kZXNjID0gQnVpbGRJbmRleFZhbHVlRGVzY3JpcHRpb24od3N0YXRlLT5pbmRl eCwgdmFsdWVzLCBpc251bGwpOworCisJCQkJCQkvKiBrZWVwIHRoaXMgbWVzc2FnZSBpbiBzeW5j IHdpdGggdGhlIHNhbWUgaW4gY29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayAqLworCQkJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTklRVUVfVklPTEFU SU9OKSwKKwkJCQkJCQkJCQllcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwi JXNcIiIsCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHdzdGF0ZS0+aW5k ZXgpKSwKKwkJCQkJCQkJCQlrZXlfZGVzYyA/IGVycmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0 ZWQuIiwga2V5X2Rlc2MpIDoKKwkJCQkJCQkJCQllcnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4 aXN0LiIpLAorCQkJCQkJCQkJCWVycnRhYmxlY29uc3RyYWludCh3c3RhdGUtPmhlYXAsCisJCQkJ CQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHdzdGF0ZS0+aW5kZXgpKSkpOwor CQkJCQl9CisJCQkJCXNlZW5fYWxpdmUgfD0gbm93X2FsaXZlOworCQkJCX0KKwkJCX0KKworCQkJ aWYgKCF0dXBsZXNfZXF1YWwpCisJCQl7CisJCQkJc2Vlbl9hbGl2ZSA9IGZhbHNlOworCQkJCXBy ZXZfdGVzdGVkID0gZmFsc2U7CisJCQl9CisKKwkJCV9idF9idWlsZGFkZCh3c3RhdGUsIHN0YXRl LCBpdHVwLCAwKTsKKwkJCWlmIChwcmV2KSBwZnJlZShwcmV2KTsKKwkJCXByZXYgPSBDb3B5SW5k ZXhUdXBsZShpdHVwKTsKKworCQkJLyogUmVwb3J0IHByb2dyZXNzICovCisJCQlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9UVVBMRVNfRE9ORSwKKwkJCQkJ CQkJCQkgKyt0dXBsZXNfZG9uZSk7CisJCX0KKwkJaWYgKHByZXYpIHBmcmVlKHByZXYpOworCQlF eGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOworCQl0YWJsZV9pbmRleF9mZXRjaF9l bmQoZmV0Y2gpOworCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikp OworCX0KKwllbHNlIGlmIChtZXJnZSkKIAl7CiAJCS8qCiAJCSAqIEFub3RoZXIgQlRTcG9vbCBm b3IgZGVhZCB0dXBsZXMgZXhpc3RzLiBOb3cgd2UgaGF2ZSB0byBtZXJnZQpAQCAtMTMyMiw3ICsx NDM2LDcgQEAgX2J0X2xvYWQoQlRXcml0ZVN0YXRlICp3c3RhdGUsIEJUU3Bvb2wgKmJ0c3Bvb2ws IEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCQkJCQkJCQkJCUludmFsaWRPZmZzZXROdW1iZXIpOwogCQkJ fQogCQkJZWxzZSBpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdCh3c3RhdGUtPmluZGV4LCBkc3RhdGUt PmJhc2UsCi0JCQkJCQkJCQkJIGl0dXApID4ga2V5c3ogJiYKKwkJCQkJCQkJCQkgaXR1cCwgTlVM TCkgPiBrZXlzeiAmJgogCQkJCQkgX2J0X2RlZHVwX3NhdmVfaHRpZChkc3RhdGUsIGl0dXApKQog CQkJewogCQkJCS8qCkBAIC0xNDE5LDcgKzE1MzMsNiBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRC dWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJ QnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRy dWU7CiAJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKLQlib29sCQlyZXNl dF9zbmFwc2hvdDsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BB UlRJQ0lQQVRJT04KQEAgLTE0MzcsMjEgKzE1NTAsMTIgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJU QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQog CiAJc2NhbnR1cGxlc29ydHN0YXRlcyA9IGxlYWRlcnBhcnRpY2lwYXRlcyA/IHJlcXVlc3QgKyAx IDogcmVxdWVzdDsKIAotICAgIC8qCi0JICogRm9yIGNvbmN1cnJlbnQgbm9uLXVuaXF1ZSBpbmRl eCBidWlsZHMsIHdlIGNhbiBwZXJpb2RpY2FsbHkgcmVzZXQgc25hcHNob3RzCi0JICogdG8gYWxs b3cgdGhlIHhtaW4gaG9yaXpvbiB0byBhZHZhbmNlLiBUaGlzIGlzIHNhZmUgc2luY2UgdGhlc2Ug YnVpbGRzIGRvbid0Ci0JICogcmVxdWlyZSBhIGNvbnNpc3RlbnQgdmlldyBhY3Jvc3MgdGhlIGVu dGlyZSBzY2FuLiBVbmlxdWUgaW5kZXhlcyBzdGlsbCBuZWVkCi0JICogYSBzdGFibGUgc25hcHNo b3QgdG8gcHJvcGVybHkgZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLgotICAgICAqLwot CXJlc2V0X3NuYXBzaG90ID0gaXNjb25jdXJyZW50ICYmICFidHNwb29sLT5pc3VuaXF1ZTsKLQog CS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9y bWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3Qg cmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3Mg KGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuICBJbiBhCiAJ ICogY29uY3VycmVudCBidWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQg aW5kZXggd2hhdGV2ZXIncwotCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQsIHdoaWxlIHRoYXQg c25hcHNob3QgbWF5IGJlIHJlc2V0IHBlcmlvZGljYWxseSBpbgotCSAqIGNhc2Ugb2Ygbm9uLXVu aXF1ZSBpbmRleC4KKwkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LCB3aGlsZSB0aGF0IHNuYXBz aG90IG1heSBiZSByZXNldCBwZXJpb2RpY2FsbHkuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQp CiAJewpAQCAtMTQ1OSwxNiArMTU2MywxNiBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0 YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJCXNuYXBz aG90ID0gU25hcHNob3RBbnk7CiAJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOwog CX0KLQllbHNlIGlmIChyZXNldF9zbmFwc2hvdCkKKwllbHNlCiAJeworCQkvKgorCQkgKiBGb3Ig Y29uY3VycmVudCBpbmRleCBidWlsZHMsIHdlIGNhbiBwZXJpb2RpY2FsbHkgcmVzZXQgc25hcHNo b3RzIHRvIGFsbG93CisJCSAqIHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4gVGhpcyBpcyBz YWZlIHNpbmNlIHRoZXNlIGJ1aWxkcyBkb24ndAorCQkgKiByZXF1aXJlIGEgY29uc2lzdGVudCB2 aWV3IGFjcm9zcyB0aGUgZW50aXJlIHNjYW4uCisJCSAqLwogCQlzbmFwc2hvdCA9IEludmFsaWRT bmFwc2hvdDsKIAkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7 CiAJfQotCWVsc2UKLQl7Ci0JCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkpOwotCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwotCX0KIAog CS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlfQlRSRUVfU0hB UkVEIHdvcmtzcGFjZSwgYW5kCkBAIC0xNDgwLDEwICsxNTg0LDEwIEBAIF9idF9iZWdpbl9wYXJh bGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVx dWVzdCkKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIGVzdHNvcnQp OwogCiAJLyoKLQkgKiBVbmlxdWUgY2FzZSByZXF1aXJlcyBhIHNlY29uZCBzcG9vbCwgYW5kIHNv IHdlIG1heSBoYXZlIHRvIGFjY291bnQgZm9yCi0JICogYW5vdGhlciBzaGFyZWQgd29ya3NwYWNl IGZvciB0aGF0IC0tIFBBUkFMTEVMX0tFWV9UVVBMRVNPUlRfU1BPT0wyCisJICogTm9uLWNvbmN1 cnJlbnQgdW5pcXVlIGNhc2UgcmVxdWlyZXMgYSBzZWNvbmQgc3Bvb2wsIGFuZCBzbyB3ZSBtYXkg aGF2ZQorCSAqIHRvIGFjY291bnQgZm9yIGFub3RoZXIgc2hhcmVkIHdvcmtzcGFjZSAtLSBQQVJB TExFTF9LRVlfVFVQTEVTT1JUX1NQT09MMgogCSAqLwotCWlmICghYnRzcG9vbC0+aXN1bmlxdWUp CisJaWYgKCFidHNwb29sLT5pc3VuaXF1ZSB8fCBpc2NvbmN1cnJlbnQpCiAJCXNobV90b2NfZXN0 aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAyKTsKIAllbHNlCiAJewpAQCAtMTUzOCw2ICsx NjQyLDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9v bCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCWJ0c2hhcmVkLT5pbmRleHJlbGlkID0gUmVs YXRpb25HZXRSZWxpZChidHNwb29sLT5pbmRleCk7CiAJYnRzaGFyZWQtPmlzdW5pcXVlID0gYnRz cG9vbC0+aXN1bmlxdWU7CiAJYnRzaGFyZWQtPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c3Bvb2wt Pm51bGxzX25vdF9kaXN0aW5jdDsKKwlidHNoYXJlZC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGJ0 c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAJYnRzaGFyZWQtPmlzY29uY3VycmVudCA9IGlz Y29uY3VycmVudDsKIAlidHNoYXJlZC0+c2NhbnR1cGxlc29ydHN0YXRlcyA9IHNjYW50dXBsZXNv cnRzdGF0ZXM7CiAJYnRzaGFyZWQtPnF1ZXJ5aWQgPSBwZ3N0YXRfZ2V0X215X3F1ZXJ5X2lkKCk7 CkBAIC0xNTUyLDcgKzE2NTcsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpi dWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJdGFibGVfcGFyYWxs ZWxzY2FuX2luaXRpYWxpemUoYnRzcG9vbC0+aGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRhYmxl U2NhbkZyb21CVFNoYXJlZChidHNoYXJlZCksCiAJCQkJCQkJCSAgc25hcHNob3QsCi0JCQkJCQkJ CSAgcmVzZXRfc25hcHNob3QpOworCQkJCQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgogCSAq IFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2Vy dmVkIHNwYWNlLgpAQCAtMTU2NSw4ICsxNjcwLDggQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVp bGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCXNo bV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX0JUUkVFX1NIQVJFRCwgYnRzaGFy ZWQpOwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1RVUExFU09SVCwg c2hhcmVkc29ydCk7CiAKLQkvKiBVbmlxdWUgY2FzZSByZXF1aXJlcyBhIHNlY29uZCBzcG9vbCwg YW5kIGFzc29jaWF0ZWQgc2hhcmVkIHN0YXRlICovCi0JaWYgKCFidHNwb29sLT5pc3VuaXF1ZSkK KwkvKiBOb24tY29uY3VycmVudCB1bmlxdWUgY2FzZSByZXF1aXJlcyBhIHNlY29uZCBzcG9vbCBh bmQgc2hhcmVkIHN0YXRlICovCisJaWYgKCFidHNwb29sLT5pc3VuaXF1ZSB8fCBpc2NvbmN1cnJl bnQpCiAJCXNoYXJlZHNvcnQyID0gTlVMTDsKIAllbHNlCiAJewpAQCAtMTYzMiw3ICsxNzM3LDcg QEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2Nv bmN1cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBz bmFwc2hvdHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKiBXYWl0IHVu dGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3QuCiAJICovCi0JaWYgKHJl c2V0X3NuYXBzaG90KQorCWlmIChpc2NvbmN1cnJlbnQpCiAJCVdhaXRGb3JQYXJhbGxlbFdvcmtl cnNUb0F0dGFjaChwY3h0LCB0cnVlKTsKIAogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNlbHZlcyAq LwpAQCAtMTY0MywxMyArMTc0OCwxMyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogQ2FsbGVy IG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBsYXVuY2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAg TWFrZQogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhh bmcgZm9yZXZlci4KIAkgKi8KLQlpZiAoIXJlc2V0X3NuYXBzaG90KQorCWlmICghaXNjb25jdXJy ZW50KQogCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgZmFsc2UpOwogCWlm IChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAlJ bnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7Ci0JQXNzZXJ0KCFyZXNldF9zbmFwc2hvdCB8fCAh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFpc2NvbmN1cnJl bnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogfQogCiAvKgpAQCAt MTc0OSw5ICsxODU0LDEwIEBAIF9idF9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2VyKEJUQnVp bGRTdGF0ZSAqYnVpbGRzdGF0ZSkKIAlsZWFkZXJ3b3JrZXItPmluZGV4ID0gYnVpbGRzdGF0ZS0+ c3Bvb2wtPmluZGV4OwogCWxlYWRlcndvcmtlci0+aXN1bmlxdWUgPSBidWlsZHN0YXRlLT5zcG9v bC0+aXN1bmlxdWU7CiAJbGVhZGVyd29ya2VyLT5udWxsc19ub3RfZGlzdGluY3QgPSBidWlsZHN0 YXRlLT5zcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0OworCWxlYWRlcndvcmtlci0+dW5pcXVlX2Rl YWRfaWdub3JlZCA9IGJ1aWxkc3RhdGUtPnNwb29sLT51bmlxdWVfZGVhZF9pZ25vcmVkOwogCiAJ LyogSW5pdGlhbGl6ZSBzZWNvbmQgc3Bvb2wsIGlmIHJlcXVpcmVkICovCi0JaWYgKCFidGxlYWRl ci0+YnRzaGFyZWQtPmlzdW5pcXVlKQorCWlmICghYnRsZWFkZXItPmJ0c2hhcmVkLT5pc3VuaXF1 ZSB8fCBidGxlYWRlci0+YnRzaGFyZWQtPmlzY29uY3VycmVudCkKIAkJbGVhZGVyd29ya2VyMiA9 IE5VTEw7CiAJZWxzZQogCXsKQEAgLTE4NTIsMTEgKzE5NTgsMTIgQEAgX2J0X3BhcmFsbGVsX2J1 aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCWJ0c3Bvb2wtPmluZGV4 ID0gaW5kZXhSZWw7CiAJYnRzcG9vbC0+aXN1bmlxdWUgPSBidHNoYXJlZC0+aXN1bmlxdWU7CiAJ YnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0ID0gYnRzaGFyZWQtPm51bGxzX25vdF9kaXN0aW5j dDsKKwlidHNwb29sLT51bmlxdWVfZGVhZF9pZ25vcmVkID0gYnRzaGFyZWQtPnVuaXF1ZV9kZWFk X2lnbm9yZWQ7CiAKIAkvKiBMb29rIHVwIHNoYXJlZCBzdGF0ZSBwcml2YXRlIHRvIHR1cGxlc29y dC5jICovCiAJc2hhcmVkc29ydCA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1RV UExFU09SVCwgZmFsc2UpOwogCXR1cGxlc29ydF9hdHRhY2hfc2hhcmVkKHNoYXJlZHNvcnQsIHNl Zyk7Ci0JaWYgKCFidHNoYXJlZC0+aXN1bmlxdWUpCisJaWYgKCFidHNoYXJlZC0+aXN1bmlxdWUg fHwgYnRzaGFyZWQtPmlzY29uY3VycmVudCkKIAl7CiAJCWJ0c3Bvb2wyID0gTlVMTDsKIAkJc2hh cmVkc29ydDIgPSBOVUxMOwpAQCAtMTkzNiw2ICsyMDQzLDcgQEAgX2J0X3BhcmFsbGVsX3NjYW5f YW5kX3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsCiAJCQkJCQkJCQkJ CQkJIGJ0c3Bvb2wtPmluZGV4LAogCQkJCQkJCQkJCQkJCSBidHNwb29sLT5pc3VuaXF1ZSwKIAkJ CQkJCQkJCQkJCQkgYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0LAorCQkJCQkJCQkJCQkJCSBi dHNwb29sLT51bmlxdWVfZGVhZF9pZ25vcmVkLAogCQkJCQkJCQkJCQkJCSBzb3J0bWVtLCBjb29y ZGluYXRlLAogCQkJCQkJCQkJCQkJCSBUVVBMRVNPUlRfTk9ORSk7CiAKQEAgLTE5NTgsMTQgKzIw NjYsMTIgQEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRT cG9vbCAqYnRzcG9vbDIsCiAJCWNvb3JkaW5hdGUyLT5uUGFydGljaXBhbnRzID0gLTE7CiAJCWNv b3JkaW5hdGUyLT5zaGFyZWRzb3J0ID0gc2hhcmVkc29ydDI7CiAJCWJ0c3Bvb2wyLT5zb3J0c3Rh dGUgPQotCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bv b2wtPmluZGV4LCBmYWxzZSwgZmFsc2UsCisJCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUo YnRzcG9vbC0+aGVhcCwgYnRzcG9vbC0+aW5kZXgsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCiAJCQkJ CQkJCQkJTWluKHNvcnRtZW0sIHdvcmtfbWVtKSwgY29vcmRpbmF0ZTIsCiAJCQkJCQkJCQkJZmFs c2UpOwogCX0KIAogCS8qIEZpbGwgaW4gYnVpbGRzdGF0ZSBmb3IgX2J0X2J1aWxkX2NhbGxiYWNr KCkgKi8KLQlidWlsZHN0YXRlLmlzdW5pcXVlID0gYnRzaGFyZWQtPmlzdW5pcXVlOwotCWJ1aWxk c3RhdGUubnVsbHNfbm90X2Rpc3RpbmN0ID0gYnRzaGFyZWQtPm51bGxzX25vdF9kaXN0aW5jdDsK IAlidWlsZHN0YXRlLmhhdmVkZWFkID0gZmFsc2U7CiAJYnVpbGRzdGF0ZS5oZWFwID0gYnRzcG9v bC0+aGVhcDsKIAlidWlsZHN0YXRlLnNwb29sID0gYnRzcG9vbDsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c3BsaXRsb2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0c3BsaXRsb2MuYwppbmRleCBkZTllY2EzYzhiMi4uYjE3NGZiOGQzZWUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c3BsaXRsb2MuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKQEAgLTY4OCw3ICs2ODgsNyBAQCBf YnRfYWZ0ZXJuZXdpdGVtb2ZmKEZpbmRTcGxpdERhdGEgKnN0YXRlLCBPZmZzZXROdW1iZXIgbWF4 b2ZmLAogCXsKIAkJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChzdGF0ZS0+b3JpZ3BhZ2UsIG1heG9m Zik7CiAJCXR1cCA9IChJbmRleFR1cGxlKSBQYWdlR2V0SXRlbShzdGF0ZS0+b3JpZ3BhZ2UsIGl0 ZW1pZCk7Ci0JCWtlZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgdHVw LCBzdGF0ZS0+bmV3aXRlbSk7CisJCWtlZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3Rh dGUtPnJlbCwgdHVwLCBzdGF0ZS0+bmV3aXRlbSwgTlVMTCk7CiAKIAkJaWYgKGtlZXBuYXR0cyA+ IDEgJiYga2VlcG5hdHRzIDw9IG5rZXlhdHRzKQogCQl7CkBAIC03MTksNyArNzE5LDcgQEAgX2J0 X2FmdGVybmV3aXRlbW9mZihGaW5kU3BsaXREYXRhICpzdGF0ZSwgT2Zmc2V0TnVtYmVyIG1heG9m ZiwKIAkJIV9idF9hZGphY2VudGh0aWQoJnR1cC0+dF90aWQsICZzdGF0ZS0+bmV3aXRlbS0+dF90 aWQpKQogCQlyZXR1cm4gZmFsc2U7CiAJLyogQ2hlY2sgc2FtZSBjb25kaXRpb25zIGFzIHJpZ2h0 bW9zdCBpdGVtIGNhc2UsIHRvbyAqLwotCWtlZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzX2Zhc3Qo c3RhdGUtPnJlbCwgdHVwLCBzdGF0ZS0+bmV3aXRlbSk7CisJa2VlcG5hdHRzID0gX2J0X2tlZXBf bmF0dHNfZmFzdChzdGF0ZS0+cmVsLCB0dXAsIHN0YXRlLT5uZXdpdGVtLCBOVUxMKTsKIAogCWlm IChrZWVwbmF0dHMgPiAxICYmIGtlZXBuYXR0cyA8PSBua2V5YXR0cykKIAl7CkBAIC05NjgsNyAr OTY4LDcgQEAgX2J0X3N0cmF0ZWd5KEZpbmRTcGxpdERhdGEgKnN0YXRlLCBTcGxpdFBvaW50ICps ZWZ0cGFnZSwKIAkgKiBhdm9pZCBhcHBlbmRpbmcgYSBoZWFwIFRJRCBpbiBuZXcgaGlnaCBrZXks IHdlJ3JlIGRvbmUuICBGaW5pc2ggc3BsaXQKIAkgKiB3aXRoIGRlZmF1bHQgc3RyYXRlZ3kgYW5k IGluaXRpYWwgc3BsaXQgaW50ZXJ2YWwuCiAJICovCi0JcGVyZmVjdHBlbmFsdHkgPSBfYnRfa2Vl cF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIGxlZnRtb3N0LCByaWdodG1vc3QpOworCXBlcmZlY3Rw ZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwgcmlnaHRt b3N0LCBOVUxMKTsKIAlpZiAocGVyZmVjdHBlbmFsdHkgPD0gaW5kbmtleWF0dHMpCiAJCXJldHVy biBwZXJmZWN0cGVuYWx0eTsKIApAQCAtOTg5LDcgKzk4OSw3IEBAIF9idF9zdHJhdGVneShGaW5k U3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQb2ludCAqbGVmdHBhZ2UsCiAJICogSWYgcGFnZSBpcyBl bnRpcmVseSBmdWxsIG9mIGR1cGxpY2F0ZXMsIGEgc2luZ2xlIHZhbHVlIHN0cmF0ZWd5IHNwbGl0 CiAJICogd2lsbCBiZSBwZXJmb3JtZWQuCiAJICovCi0JcGVyZmVjdHBlbmFsdHkgPSBfYnRfa2Vl cF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIGxlZnRtb3N0LCByaWdodG1vc3QpOworCXBlcmZlY3Rw ZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwgcmlnaHRt b3N0LCBOVUxMKTsKIAlpZiAocGVyZmVjdHBlbmFsdHkgPD0gaW5kbmtleWF0dHMpCiAJewogCQkq c3RyYXRlZ3kgPSBTUExJVF9NQU5ZX0RVUExJQ0FURVM7CkBAIC0xMDI4LDcgKzEwMjgsNyBAQCBf YnRfc3RyYXRlZ3koRmluZFNwbGl0RGF0YSAqc3RhdGUsIFNwbGl0UG9pbnQgKmxlZnRwYWdlLAog CQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHN0YXRlLT5vcmlncGFnZSwgUF9ISUtFWSk7CiAJCWhp a2V5ID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJdGVtKHN0YXRlLT5vcmlncGFnZSwgaXRlbWlkKTsK IAkJcGVyZmVjdHBlbmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIGhpa2V5 LAotCQkJCQkJCQkJCQkgc3RhdGUtPm5ld2l0ZW0pOworCQkJCQkJCQkJCQkgc3RhdGUtPm5ld2l0 ZW0sIE5VTEwpOwogCQlpZiAocGVyZmVjdHBlbmFsdHkgPD0gaW5kbmtleWF0dHMpCiAJCQkqc3Ry YXRlZ3kgPSBTUExJVF9TSU5HTEVfVkFMVUU7CiAJCWVsc2UKQEAgLTExNTAsNyArMTE1MCw3IEBA IF9idF9zcGxpdF9wZW5hbHR5KEZpbmRTcGxpdERhdGEgKnN0YXRlLCBTcGxpdFBvaW50ICpzcGxp dCkKIAlsYXN0bGVmdCA9IF9idF9zcGxpdF9sYXN0bGVmdChzdGF0ZSwgc3BsaXQpOwogCWZpcnN0 cmlnaHQgPSBfYnRfc3BsaXRfZmlyc3RyaWdodChzdGF0ZSwgc3BsaXQpOwogCi0JcmV0dXJuIF9i dF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQpOworCXJl dHVybiBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0 LCBOVUxMKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0dXRpbHMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYwppbmRleCA5 YjA5MTg1ODk5Ny4uMTNmYjY3NmUzODkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0dXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxz LmMKQEAgLTMwLDkgKzMwLDYgQEAKIAogCiBzdGF0aWMgaW50CV9idF9jb21wYXJlX2ludChjb25z dCB2b2lkICp2YSwgY29uc3Qgdm9pZCAqdmIpOwotc3RhdGljIGludAlfYnRfa2VlcF9uYXR0cyhS ZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsCi0JCQkJCQkgICBJbmRleFR1cGxlIGZp cnN0cmlnaHQsIEJUU2Nhbkluc2VydCBpdHVwX2tleSk7Ci0KIAogLyoKICAqIF9idF9ta3NjYW5r ZXkKQEAgLTcwOCw3ICs3MDUsNyBAQCBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRleFR1 cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAJQXNzZXJ0KCFCVHJlZVR1cGxl SXNQaXZvdChsYXN0bGVmdCkgJiYgIUJUcmVlVHVwbGVJc1Bpdm90KGZpcnN0cmlnaHQpKTsKIAog CS8qIERldGVybWluZSBob3cgbWFueSBhdHRyaWJ1dGVzIG11c3QgYmUga2VwdCBpbiB0cnVuY2F0 ZWQgdHVwbGUgKi8KLQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0cyhyZWwsIGxhc3RsZWZ0LCBm aXJzdHJpZ2h0LCBpdHVwX2tleSk7CisJa2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0dHMocmVsLCBs YXN0bGVmdCwgZmlyc3RyaWdodCwgaXR1cF9rZXksIE5VTEwpOwogCiAjaWZkZWYgREVCVUdfTk9f VFJVTkNBVEUKIAkvKiBGb3JjZSB0cnVuY2F0aW9uIHRvIGJlIGluZWZmZWN0aXZlIGZvciB0ZXN0 aW5nIHB1cnBvc2VzICovCkBAIC04MjYsMTcgKzgyMywyNCBAQCBfYnRfdHJ1bmNhdGUoUmVsYXRp b24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAvKgog ICogX2J0X2tlZXBfbmF0dHMgLSBob3cgbWFueSBrZXkgYXR0cmlidXRlcyB0byBrZWVwIHdoZW4g dHJ1bmNhdGluZy4KICAqCisgKiBUaGlzIGlzIGV4cG9ydGVkIHRvIGJlIHVzZWQgYXMgY29tcGFy aXNvbiBmdW5jdGlvbiBkdXJpbmcgY29uY3VycmVudAorICogdW5pcXVlIGluZGV4IGJ1aWxkIGlu IGNhc2UgX2J0X2tlZXBfbmF0dHNfZmFzdCBpcyBub3Qgc3VpdGFibGUgYmVjYXVzZQorICogY29s bGF0aW9uIGlzIG5vdCAiYWxsZXF1YWxpbWFnZSIvZGVkdXBsaWNhdGlvbi1zYWZlLgorICoKICAq IENhbGxlciBwcm92aWRlcyB0d28gdHVwbGVzIHRoYXQgZW5jbG9zZSBhIHNwbGl0IHBvaW50LiAg Q2FsbGVyJ3MgaW5zZXJ0aW9uCiAgKiBzY2Fua2V5IGlzIHVzZWQgdG8gY29tcGFyZSB0aGUgdHVw bGVzOyB0aGUgc2NhbmtleSdzIGFyZ3VtZW50IHZhbHVlcyBhcmUKICAqIG5vdCBjb25zaWRlcmVk IGhlcmUuCiAgKgorICogaGFzbnVsbHMgdmFsdWUgc2V0IHRvIHRydWUgaW4gY2FzZSBvZiBhbnkg bnVsbCBjb2x1bW4gaW4gYW55IHR1cGxlLgorICoKICAqIFRoaXMgY2FuIHJldHVybiBhIG51bWJl ciBvZiBhdHRyaWJ1dGVzIHRoYXQgaXMgb25lIGdyZWF0ZXIgdGhhbiB0aGUKICAqIG51bWJlciBv ZiBrZXkgYXR0cmlidXRlcyBmb3IgdGhlIGluZGV4IHJlbGF0aW9uLiAgVGhpcyBpbmRpY2F0ZXMg dGhhdCB0aGUKICAqIGNhbGxlciBtdXN0IHVzZSBhIGhlYXAgVElEIGFzIGEgdW5pcXVlLWlmaWVy IGluIG5ldyBwaXZvdCB0dXBsZS4KICAqLwotc3RhdGljIGludAoraW50CiBfYnRfa2VlcF9uYXR0 cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdo dCwKLQkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tleSkKKwkJCSAgIEJUU2Nhbkluc2VydCBpdHVw X2tleSwKKwkJCSAgIGJvb2wgKmhhc251bGxzKQogewogCWludAkJCW5rZXlhdHRzID0gSW5kZXhS ZWxhdGlvbkdldE51bWJlck9mS2V5QXR0cmlidXRlcyhyZWwpOwogCVR1cGxlRGVzYwlpdHVwZGVz YyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKQEAgLTg2Miw2ICs4NjYsOCBAQCBfYnRfa2VlcF9u YXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3Ry aWdodCwKIAogCQlkYXR1bTEgPSBpbmRleF9nZXRhdHRyKGxhc3RsZWZ0LCBhdHRudW0sIGl0dXBk ZXNjLCAmaXNOdWxsMSk7CiAJCWRhdHVtMiA9IGluZGV4X2dldGF0dHIoZmlyc3RyaWdodCwgYXR0 bnVtLCBpdHVwZGVzYywgJmlzTnVsbDIpOworCQlpZiAoaGFzbnVsbHMpCisJCQkqaGFzbnVsbHMg fD0gaXNOdWxsMSB8IGlzTnVsbDI7CiAKIAkJaWYgKGlzTnVsbDEgIT0gaXNOdWxsMikKIAkJCWJy ZWFrOwpAQCAtODgxLDcgKzg4Nyw3IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5k ZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogCSAqIGV4cGVjdGVkIGlu IGFuIGFsbGVxdWFsaW1hZ2UgaW5kZXguCiAJICovCiAJQXNzZXJ0KCFpdHVwX2tleS0+YWxsZXF1 YWxpbWFnZSB8fAotCQkgICBrZWVwbmF0dHMgPT0gX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIGxh c3RsZWZ0LCBmaXJzdHJpZ2h0KSk7CisJCSAgIGtlZXBuYXR0cyA9PSBfYnRfa2VlcF9uYXR0c19m YXN0KHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQsIE5VTEwpKTsKIAogCXJldHVybiBrZWVwbmF0 dHM7CiB9CkBAIC04OTIsNyArODk4LDggQEAgX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJ bmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAgKiBUaGlzIGlzIGV4 cG9ydGVkIHNvIHRoYXQgYSBjYW5kaWRhdGUgc3BsaXQgcG9pbnQgY2FuIGhhdmUgaXRzIGVmZmVj dCBvbgogICogc3VmZml4IHRydW5jYXRpb24gaW5leHBlbnNpdmVseSBldmFsdWF0ZWQgYWhlYWQg b2YgdGltZSB3aGVuIGZpbmRpbmcgYQogICogc3BsaXQgbG9jYXRpb24uICBBIG5haXZlIGJpdHdp c2UgYXBwcm9hY2ggdG8gZGF0dW0gY29tcGFyaXNvbnMgaXMgdXNlZCB0bwotICogc2F2ZSBjeWNs ZXMuCisgKiBzYXZlIGN5Y2xlcy4gQWxzbywgaXQgbWF5IGJlIHVzZWQgYXMgY29tcGFyaXNvbiBm dW5jdGlvbiBkdXJpbmcgY29uY3VycmVudAorICogYnVpbGQgb2YgdW5pcXVlIGluZGV4LgogICoK ICAqIFRoZSBhcHByb2FjaCB0YWtlbiBoZXJlIHVzdWFsbHkgcHJvdmlkZXMgdGhlIHNhbWUgYW5z d2VyIGFzIF9idF9rZWVwX25hdHRzCiAgKiB3aWxsIChmb3IgdGhlIHNhbWUgcGFpciBvZiB0dXBs ZXMgZnJvbSBhIGhlYXBrZXlzcGFjZSBpbmRleCksIHNpbmNlIHRoZQpAQCAtOTAxLDYgKzkwOCw4 IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5k ZXhUdXBsZSBmaXJzdHJpZ2h0LAogICogImVxdWFsIGltYWdlIiBjb2x1bW5zLCByb3V0aW5lIGlz IGd1YXJhbnRlZWQgdG8gZ2l2ZSB0aGUgc2FtZSByZXN1bHQgYXMKICAqIF9idF9rZWVwX25hdHRz IHdvdWxkLgogICoKKyAqIGhhc251bGxzIHZhbHVlIHNldCB0byB0cnVlIGluIGNhc2Ugb2YgYW55 IG51bGwgY29sdW1uIGluIGFueSB0dXBsZS4KKyAqCiAgKiBDYWxsZXJzIGNhbiByZWx5IG9uIHRo ZSBmYWN0IHRoYXQgYXR0cmlidXRlcyBjb25zaWRlcmVkIGVxdWFsIGhlcmUgYXJlCiAgKiBkZWZp bml0ZWx5IGFsc28gZXF1YWwgYWNjb3JkaW5nIHRvIF9idF9rZWVwX25hdHRzLCBldmVuIHdoZW4g dGhlIGluZGV4IHVzZXMKICAqIGFuIG9wY2xhc3Mgb3IgY29sbGF0aW9uIHRoYXQgaXMgbm90ICJh bGxlcXVhbGltYWdlIi9kZWR1cGxpY2F0aW9uLXNhZmUuCkBAIC05MDksNyArOTE4LDggQEAgX2J0 X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxl IGZpcnN0cmlnaHQsCiAgKiBtb3JlIGJhbGFuY2VkIHNwbGl0IHBvaW50LgogICovCiBpbnQKLV9i dF9rZWVwX25hdHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRl eFR1cGxlIGZpcnN0cmlnaHQpCitfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5k ZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAorCQkJCQlib29sICpoYXNu dWxscykKIHsKIAlUdXBsZURlc2MJaXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CiAJ aW50CQkJa2V5c3ogPSBJbmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1dGVzKHJlbCk7 CkBAIC05MjYsNiArOTM2LDggQEAgX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiByZWwsIElu ZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCkKIAogCQlkYXR1bTEgPSBp bmRleF9nZXRhdHRyKGxhc3RsZWZ0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMSk7CiAJCWRh dHVtMiA9IGluZGV4X2dldGF0dHIoZmlyc3RyaWdodCwgYXR0bnVtLCBpdHVwZGVzYywgJmlzTnVs bDIpOworCQlpZiAoaGFzbnVsbHMpCisJCQkqaGFzbnVsbHMgfD0gaXNOdWxsMSB8IGlzTnVsbDI7 CiAJCWF0dCA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKGl0dXBkZXNjLCBhdHRudW0gLSAxKTsKIAog CQlpZiAoaXNOdWxsMSAhPSBpc051bGwyKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDdjN2E0MWZkMDll Li5kMGVlZjdiMWIwNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisr KyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMTUzNCw3ICsxNTM0LDcgQEAgaW5k ZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAlpbmRleF9idWlsZCho ZWFwUmVsLCBpbmRleFJlbGF0aW9uLCBpbmRleEluZm8sIGZhbHNlLCB0cnVlKTsKIAogCUludmFs aWRhdGVDYXRhbG9nU25hcHNob3QoKTsKLQlBc3NlcnQoaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwg IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFu Z2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucyAqLwogCUF0RU9YYWN0X0dVQyhmYWxzZSwg c2F2ZV9uZXN0bGV2ZWwpOwpAQCAtMzMyNSw5ICszMzI1LDkgQEAgSW5kZXhDaGVja0V4Y2x1c2lv bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKiBpZiB3ZSB1c2VkIEhlYXBUdXBsZVNhdGlzZmll c1ZhY3V1bSkuICBUaGlzIGxlYXZlcyB1cyB3aXRoIGFuIGluZGV4IHRoYXQKICAqIGRvZXMgbm90 IGNvbnRhaW4gYW55IHR1cGxlcyBhZGRlZCB0byB0aGUgdGFibGUgd2hpbGUgd2UgYnVpbHQgdGhl IGluZGV4LgogICoKLSAqIEZ1cnRoZXJtb3JlLCBpbiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXgg d2Ugc2V0IFNPX1JFU0VUX1NOQVBTSE9UIGZvciB0aGUKLSAqIHNjYW4sIHdoaWNoIGNhdXNlcyBu ZXcgc25hcHNob3QgdG8gYmUgc2V0IGFzIGFjdGl2ZSBldmVyeSBzbyBvZnRlbi4gVGhlIHJlYXNv bgotICogZm9yIHRoYXQgaXMgdG8gcHJvcGFnYXRlIHRoZSB4bWluIGhvcml6b24gZm9yd2FyZC4K KyAqIEZ1cnRoZXJtb3JlLCB3ZSBzZXQgU09fUkVTRVRfU05BUFNIT1QgZm9yIHRoZSBzY2FuLCB3 aGljaCBjYXVzZXMgbmV3CisgKiBzbmFwc2hvdCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5IHNv IG9mdGVuLiBUaGUgcmVhc29uIGZvciB0aGF0IGlzIHRvCisgKiBwcm9wYWdhdGUgdGhlIHhtaW4g aG9yaXpvbiBmb3J3YXJkLgogICoKICAqIE5leHQsIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3Jl YWR5IiAoYnV0IHN0aWxsIG5vdCAiaW5kaXN2YWxpZCIpIGFuZAogICogY29tbWl0IHRoZSBzZWNv bmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEgdGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggNDE1ZDAyMzZjNDYuLjk3MDI5YmUzNzhmIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTcwMiw4ICsxNzAyLDggQEAgRGVmaW5lSW5k ZXgoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCSAqIGNoYWlucyBjYW4gYmUgY3JlYXRlZCB3aGVyZSB0 aGUgbmV3IHR1cGxlIGFuZCB0aGUgb2xkIHR1cGxlIGluIHRoZQogCSAqIGNoYWluIGhhdmUgZGlm ZmVyZW50IGluZGV4IGtleXMuCiAJICoKLQkgKiBXZSBidWlsZCB0aGUgaW5kZXggdXNpbmcgYWxs IHR1cGxlcyB0aGF0IGFyZSB2aXNpYmxlIHVzaW5nIHNpbmdsZSBvcgotCSAqIG11bHRpcGxlIHJl ZnJlc2hpbmcgc25hcHNob3RzLiBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0 bworCSAqIFdlIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2li bGUgdXNpbmcgbXVsdGlwbGUKKwkgKiByZWZyZXNoaW5nIHNuYXBzaG90cy4gV2UgY2FuIGJlIHN1 cmUgdGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KIAkgKiB0aGVzZSB0dXBsZXMgd2lsbCBiZSBjb21w YXRpYmxlIHdpdGggdGhlIGluZGV4LCBzaW5jZSBhbnkgdXBkYXRlcyBtYWRlCiAJICogYnkgdHJh bnNhY3Rpb25zIHRoYXQgZGlkbid0IGtub3cgYWJvdXQgdGhlIGluZGV4IGFyZSBub3cgY29tbWl0 dGVkIG9yCiAJICogcm9sbGVkIGJhY2suICBUaHVzLCBlYWNoIHZpc2libGUgdHVwbGUgaXMgZWl0 aGVyIHRoZSBlbmQgb2YgaXRzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1 cGxlc29ydHZhcmlhbnRzLmMgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlh bnRzLmMKaW5kZXggMjUwOWFjM2UzYTQuLmMzZDhmOTI0MzRhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jCkBAIC0yNSw2ICsyNSw4IEBACiAjaW5jbHVkZSAi YWNjZXNzL2hhc2guaCIKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL25idHJlZS5oIgorI2luY2x1ZGUgImFjY2Vzcy9yZWxzY2FuLmgiCisjaW5jbHVk ZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5o IgpAQCAtMzUsNiArMzcsNyBAQAogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1 ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3R1cGxlc29ydC5oIgorI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogCiAKIC8qIHNvcnQtdHlwZSBjb2RlcyBmb3Igc29ydF9fc3RhcnQg cHJvYmVzICovCkBAIC0xMzYsNiArMTM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAogCWJvb2wJCWVu Zm9yY2VVbmlxdWU7CS8qIGNvbXBsYWluIGlmIHdlIGZpbmQgZHVwbGljYXRlIHR1cGxlcyAqLwog CWJvb2wJCXVuaXF1ZU51bGxzTm90RGlzdGluY3Q7IC8qIHVuaXF1ZSBjb25zdHJhaW50IG51bGwg dHJlYXRtZW50ICovCisJYm9vbAkJdW5pcXVlRGVhZElnbm9yZWQ7IC8qIGlnbm9yZSBkZWFkIHR1 cGxlcyBpbiB1bmlxdWUgY2hlY2sgKi8KIH0gVHVwbGVzb3J0SW5kZXhCVHJlZUFyZzsKIAogLyoK QEAgLTM2MSw2ICszNjUsNyBAQCB0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24g aGVhcFJlbCwKIAkJCQkJCQlSZWxhdGlvbiBpbmRleFJlbCwKIAkJCQkJCQlib29sIGVuZm9yY2VV bmlxdWUsCiAJCQkJCQkJYm9vbCB1bmlxdWVOdWxsc05vdERpc3RpbmN0LAorCQkJCQkJCWJvb2wg dW5pcXVlRGVhZElnbm9yZWQsCiAJCQkJCQkJaW50IHdvcmtNZW0sCiAJCQkJCQkJU29ydENvb3Jk aW5hdGUgY29vcmRpbmF0ZSwKIAkJCQkJCQlpbnQgc29ydG9wdCkKQEAgLTQwMyw2ICs0MDgsNyBA QCB0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24gaGVhcFJlbCwKIAlhcmctPmlu ZGV4LmluZGV4UmVsID0gaW5kZXhSZWw7CiAJYXJnLT5lbmZvcmNlVW5pcXVlID0gZW5mb3JjZVVu aXF1ZTsKIAlhcmctPnVuaXF1ZU51bGxzTm90RGlzdGluY3QgPSB1bmlxdWVOdWxsc05vdERpc3Rp bmN0OworCWFyZy0+dW5pcXVlRGVhZElnbm9yZWQgPSB1bmlxdWVEZWFkSWdub3JlZDsKIAogCWlu ZGV4U2NhbktleSA9IF9idF9ta3NjYW5rZXkoaW5kZXhSZWwsIE5VTEwpOwogCkBAIC0xNjcwLDYg KzE2NzYsNyBAQCBjb21wYXJldHVwX2luZGV4X2J0cmVlX3RpZWJyZWFrKGNvbnN0IFNvcnRUdXBs ZSAqYSwgY29uc3QgU29ydFR1cGxlICpiLAogCQlEYXR1bQkJdmFsdWVzW0lOREVYX01BWF9LRVlT XTsKIAkJYm9vbAkJaXNudWxsW0lOREVYX01BWF9LRVlTXTsKIAkJY2hhcgkgICAqa2V5X2Rlc2M7 CisJCWJvb2wJCXVuaXF1ZUNoZWNrRmFpbCA9IHRydWU7CiAKIAkJLyoKIAkJICogU29tZSByYXRo ZXIgYnJhaW4tZGVhZCBpbXBsZW1lbnRhdGlvbnMgb2YgcXNvcnQgKHN1Y2ggYXMgdGhlIG9uZSBp bgpAQCAtMTY3OSwxOCArMTY4Niw1OCBAQCBjb21wYXJldHVwX2luZGV4X2J0cmVlX3RpZWJyZWFr KGNvbnN0IFNvcnRUdXBsZSAqYSwgY29uc3QgU29ydFR1cGxlICpiLAogCQkgKi8KIAkJQXNzZXJ0 KHR1cGxlMSAhPSB0dXBsZTIpOwogCi0JCWluZGV4X2RlZm9ybV90dXBsZSh0dXBsZTEsIHR1cERl cywgdmFsdWVzLCBpc251bGwpOwotCi0JCWtleV9kZXNjID0gQnVpbGRJbmRleFZhbHVlRGVzY3Jp cHRpb24oYXJnLT5pbmRleC5pbmRleFJlbCwgdmFsdWVzLCBpc251bGwpOwotCi0JCWVyZXBvcnQo RVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9OKSwKLQkJCQkgZXJy bXNnKCJjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCBcIiVzXCIiLAotCQkJCQkJUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUoYXJnLT5pbmRleC5pbmRleFJlbCkpLAotCQkJCSBrZXlfZGVzYyA/ IGVycmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQuIiwga2V5X2Rlc2MpIDoKLQkJCQkgZXJy ZGV0YWlsKCJEdXBsaWNhdGUga2V5cyBleGlzdC4iKSwKLQkJCQkgZXJydGFibGVjb25zdHJhaW50 KGFyZy0+aW5kZXguaGVhcFJlbCwKLQkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGFy Zy0+aW5kZXguaW5kZXhSZWwpKSkpOworCQkvKiBUaGlzIGlzIGZhaWwtZmFzdCBjaGVjaywgc2Vl IF9idF9sb2FkIGZvciBkZXRhaWxzLiAqLworCQlpZiAoYXJnLT51bmlxdWVEZWFkSWdub3JlZCkK KwkJeworCQkJYm9vbAlhbnlfdHVwbGVfZGVhZCwKKwkJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlLAor CQkJCQlpZ25vcmVkOworCisJCQlUdXBsZVRhYmxlU2xvdAkqc2xvdCA9IE1ha2VTaW5nbGVUdXBs ZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKGFyZy0+aW5kZXguaGVhcFJlbCksCisJCQkJCQkJ CQkJCQkJCQkgJlRUU09wc0J1ZmZlckhlYXBUdXBsZSk7CisJCQlJdGVtUG9pbnRlckRhdGEgdGlk ID0gdHVwbGUxLT50X3RpZDsKKworCQkJSW5kZXhGZXRjaFRhYmxlRGF0YSAqZmV0Y2ggPSB0YWJs ZV9pbmRleF9mZXRjaF9iZWdpbihhcmctPmluZGV4LmhlYXBSZWwpOworCQkJYW55X3R1cGxlX2Rl YWQgPSAhdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQsIFNuYXBzaG90U2VsZiwg c2xvdCwgJmNhbGxfYWdhaW4sICZpZ25vcmVkKTsKKworCQkJaWYgKCFhbnlfdHVwbGVfZGVhZCkK KwkJCXsKKwkJCQljYWxsX2FnYWluID0gZmFsc2U7CisJCQkJdGlkID0gdHVwbGUyLT50X3RpZDsK KwkJCQlhbnlfdHVwbGVfZGVhZCA9ICF0YWJsZV9pbmRleF9mZXRjaF90dXBsZShmZXRjaCwgJnRp ZCwgU25hcHNob3RTZWxmLCBzbG90LCAmY2FsbF9hZ2FpbiwKKwkJCQkJCQkJCQkJCQkJICAmaWdu b3JlZCk7CisJCQl9CisKKwkJCWlmIChhbnlfdHVwbGVfZGVhZCkKKwkJCXsKKwkJCQllbG9nKERF QlVHNSwgInNraXBwaW5nIGR1cGxpY2F0ZSB2YWx1ZXMgYmVjYXVzZSBzb21lIG9mIHRoZW0gYXJl IGRlYWQ6ICgldSwldSkgdnMgKCV1LCV1KSIsCisJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVt YmVyKCZ0dXBsZTEtPnRfdGlkKSwKKwkJCQkJIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZ0 dXBsZTEtPnRfdGlkKSwKKwkJCQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJnR1cGxlMi0+ dF90aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnR1cGxlMi0+dF90aWQp KTsKKworCQkJCXVuaXF1ZUNoZWNrRmFpbCA9IGZhbHNlOworCQkJfQorCQkJRXhlY0Ryb3BTaW5n bGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKwkJCXRhYmxlX2luZGV4X2ZldGNoX2VuZChmZXRjaCk7 CisJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCQl9CisJ CWlmICh1bmlxdWVDaGVja0ZhaWwpCisJCXsKKwkJCWluZGV4X2RlZm9ybV90dXBsZSh0dXBsZTEs IHR1cERlcywgdmFsdWVzLCBpc251bGwpOworCisJCQlrZXlfZGVzYyA9IEJ1aWxkSW5kZXhWYWx1 ZURlc2NyaXB0aW9uKGFyZy0+aW5kZXguaW5kZXhSZWwsIHZhbHVlcywgaXNudWxsKTsKKworCQkJ Lyoga2VlcCB0aGlzIGVycm9yIG1lc3NhZ2UgaW4gc3luYyB3aXRoIHRoZSBzYW1lIGluIF9idF9s b2FkICovCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOSVFVRV9W SU9MQVRJT04pLAorCQkJCQkJCWVycm1zZygiY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXgg XCIlc1wiIiwKKwkJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoYXJnLT5pbmRleC5p bmRleFJlbCkpLAorCQkJCQkJCWtleV9kZXNjID8gZXJyZGV0YWlsKCJLZXkgJXMgaXMgZHVwbGlj YXRlZC4iLCBrZXlfZGVzYykgOgorCQkJCQkJCWVycmRldGFpbCgiRHVwbGljYXRlIGtleXMgZXhp c3QuIiksCisJCQkJCQkJZXJydGFibGVjb25zdHJhaW50KGFyZy0+aW5kZXguaGVhcFJlbCwKKwkJ CQkJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoYXJnLT5pbmRleC5pbmRleFJlbCkp KSk7CisJCX0KIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJl ZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCmluZGV4IGRhNzUwM2M1N2I2Li5iNzI0 NDVhNzYxMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaApAQCAtMTMwOSw4ICsxMzA5LDEwIEBAIGV4dGVybiBi b29sIGJ0cHJvcGVydHkoT2lkIGluZGV4X29pZCwgaW50IGF0dG5vLAogZXh0ZXJuIGNoYXIgKmJ0 YnVpbGRwaGFzZW5hbWUoaW50NjQgcGhhc2VudW0pOwogZXh0ZXJuIEluZGV4VHVwbGUgX2J0X3Ry dW5jYXRlKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwKIAkJCQkJCQkgICBJbmRl eFR1cGxlIGZpcnN0cmlnaHQsIEJUU2Nhbkluc2VydCBpdHVwX2tleSk7CitleHRlcm4gaW50CV9i dF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBs ZSBmaXJzdHJpZ2h0LAorCQkJCQkJICAgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LCBib29sICpoYXNu dWxscyk7CiBleHRlcm4gaW50CV9idF9rZWVwX25hdHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRl eFR1cGxlIGxhc3RsZWZ0LAotCQkJCQkJCQlJbmRleFR1cGxlIGZpcnN0cmlnaHQpOworCQkJCQkJ CQlJbmRleFR1cGxlIGZpcnN0cmlnaHQsIGJvb2wgKmhhc251bGxzKTsKIGV4dGVybiBib29sIF9i dF9jaGVja19uYXR0cyhSZWxhdGlvbiByZWwsIGJvb2wgaGVhcGtleXNwYWNlLCBQYWdlIHBhZ2Us CiAJCQkJCQkJT2Zmc2V0TnVtYmVyIG9mZm51bSk7CiBleHRlcm4gdm9pZCBfYnRfY2hlY2tfdGhp cmRfcGFnZShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXAsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRl eCA4NGIwNmZmYTQyZi4uOTIyOTBlNzk1OTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vz cy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMTc4NCw3 ICsxNzg0LDcgQEAgdGFibGVfc2Nhbl9hbmFseXplX25leHRfdHVwbGUoVGFibGVTY2FuRGVzYyBz Y2FuLAogICogVGhpcyBvbmx5IHJlYWxseSBtYWtlcyBzZW5zZSBmb3IgaGVhcCBBTSwgaXQgbWln aHQgbmVlZCB0byBiZSBnZW5lcmFsaXplZAogICogZm9yIG90aGVyIEFNcyBsYXRlci4KICAqCi0g KiBJbiBjYXNlIG9mIG5vbi11bmlxdWUgY29uY3VycmVudCBpbmRleCBidWlsZCwKKyAqIEluIGNh c2Ugb2YgY29uY3VycmVudCBpbmRleCBidWlsZCwKICAqIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGFw cGxpZWQgZm9yIHRoZSBzY2FuLiBUaGF0IGxlYWRzIHRvIGNoYW5naW5nIHNuYXBzaG90cwogICog b24gdGhlIGZseSB0byBhbGxvdyB4bWluIGhvcml6b24gcHJvcGFnYXRlLgogICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3R1 cGxlc29ydC5oCmluZGV4IGRhNjhmNDVhY2YyLi40NDhkYzgzYWE1OCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVz b3J0LmgKQEAgLTM5Niw2ICszOTYsNyBAQCBleHRlcm4gVHVwbGVzb3J0c3RhdGUgKnR1cGxlc29y dF9iZWdpbl9pbmRleF9idHJlZShSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCQkJCQkJICAgUmVs YXRpb24gaW5kZXhSZWwsCiAJCQkJCQkJCQkJCQkgICBib29sIGVuZm9yY2VVbmlxdWUsCiAJCQkJ CQkJCQkJCQkgICBib29sIHVuaXF1ZU51bGxzTm90RGlzdGluY3QsCisJCQkJCQkJCQkJCQkgICBi b29sCXVuaXF1ZURlYWRJZ25vcmVkLAogCQkJCQkJCQkJCQkJICAgaW50IHdvcmtNZW0sIFNvcnRD b29yZGluYXRlIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkJCQkgICBpbnQgc29ydG9wdCk7CiBleHRl cm4gVHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9pbmRleF9oYXNoKFJlbGF0aW9uIGhl YXBSZWwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhw ZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKaW5kZXggZjJmMjAyNWIy YzguLmJiODRkNjFmNDBkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CkBA IC00MSw3ICs0MSwxMSBAQCBFTkQ7ICQkOwogLS0tLS0tLS0tLS0tLS0tLQogQUxURVIgVEFCTEUg Y2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0wKTsKIENSRUFURSBVTklR VUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2Fu X3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIFJFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRf c25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg aGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04g Y2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKQEAgLTg2 LDcgKzkwLDkgQEAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3Nj YW5fc25hcHNob3RfZWZmZWN0aXZlJyk7CiAoMSByb3cpCiAKIENSRUFURSBVTklRVUUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRp YWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxl bHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJs KGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxl X3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCi0tIAoyLjQzLjAKCg== --000000000000dbacbc064d91788d Content-Type: application/octet-stream; name="v4-0003-Support-snapshot-resets-in-parallel-concurrent-in.patch" Content-Disposition: attachment; filename="v4-0003-Support-snapshot-resets-in-parallel-concurrent-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn0x7cmn2 RnJvbSA0MDMwZWE1MjQ5OTMyMzA1ZDZmMWU1YWYxZmVlN2E0NjM3ZTIxYzVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxNCBKYW4gMjAyNiAxODo0NTo1NiArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjQgMy80XSBTdXBwb3J0IHNuYXBzaG90IHJlc2V0cyBpbiBwYXJhbGxlbCBjb25jdXJy ZW50IGluZGV4CiBidWlsZHMKCkV4dGVuZCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldCBzdXBwb3J0 IHRvIHBhcmFsbGVsIGJ1aWxkcywgcHJldmlvdXNseSBsaW1pdGVkIHRvIG5vbi1wYXJhbGxlbCBv cGVyYXRpb25zLiBUaGlzIGFsbG93cyB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UgZHVyaW5n IHBhcmFsbGVsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIGFzIHdlbGwuCgpUaGUgbWFpbiBsaW1p dGF0aW9uIG9mIGFwcGx5aW5nIHRoYXQgdGVjaG5pcXVlIHRvIHBhcmFsbGVsIGJ1aWxkcyB3YXMg YSByZXF1aXJlbWVudCB0byB3YWl0IHVudGlsIHdvcmtlciBwcm9jZXNzZXMgcmVzdG9yZSB0aGVp ciBpbml0aWFsIHNuYXBzaG90IGZyb20gbGVhZGVyLgoKVG8gYWRkcmVzcyB0aGlzLCBmb2xsb3dp bmcgY2hhbmdlcyBhcHBsaWVkOgotIGFkZCBpbmZyYXN0cnVjdHVyZSB0byB0cmFjayBzbmFwc2hv dCByZXN0b3JhdGlvbiBpbiBwYXJhbGxlbCB3b3JrZXJzCi0gZXh0ZW5kIHBhcmFsbGVsIHNjYW4g aW5pdGlhbGl6YXRpb24gdG8gc3VwcG9ydCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMKLSB3YWl0 IGZvciBwYXJhbGxlbCB3b3JrZXJzIHRvIHJlc3RvcmUgdGhlaXIgaW5pdGlhbCBzbmFwc2hvdHMg YmVmb3JlIHByb2NlZWRpbmcgd2l0aCBzY2FuCi0gcmVsYXggbGltaXRhdGlvbiBmb3IgcGFyYWxs ZWwgd29ya2VyIHRvIGNhbGwgR2V0TGF0ZXN0U25hcHNob3QKLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCA1NCArKysrKysrKystLS0tLS0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jICAgICAgICAgICAgfCA1MSArKysrKysrKy0t LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgICB8IDEy ICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAgICB8IDYw ICsrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAg ICAgICAgICAgIHwgMzcgKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3Bh cmFsbGVsLmMgICAgICAgICB8IDYyICsrKysrKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlU2Vxc2Nhbi5jICAgICAgICAgICAgfCAgMyArLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3Rp bWUvc25hcG1nci5jICAgICAgICAgICAgICB8ICA4IC0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL3Bh cmFsbGVsLmggICAgICAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9yZWxz Y2FuLmggICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFt LmggICAgICAgICAgICAgICAgICB8ICA1ICstCiAuLi4vZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBz aG90cy5vdXQgICAgICAgICAgfCAyNSArKysrKysrLQogLi4uL3NxbC9jaWNfcmVzZXRfc25hcHNo b3RzLnNxbCAgICAgICAgICAgICAgIHwgIDUgKy0KIDE1IGZpbGVzIGNoYW5nZWQsIDI0NCBpbnNl cnRpb25zKCspLCA4NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggODUz NGQ3MTI1YTAuLmQzZmM4YzE0YTc5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0xNDcsNyAr MTQ3LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpbkxlYWRlcgogCSAqLwogCUJyaW5TaGFyZWQgKmJy aW5zaGFyZWQ7CiAJU2hhcmVkc29ydCAqc2hhcmVkc29ydDsKLQlTbmFwc2hvdAlzbmFwc2hvdDsK IAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiB9IEJy aW5MZWFkZXI7CkBAIC0yMzUsNyArMjM0LDcgQEAgc3RhdGljIHZvaWQgYnJpbl9maWxsX2VtcHR5 X3JhbmdlcyhCcmluQnVpbGRTdGF0ZSAqc3RhdGUsCiBzdGF0aWMgdm9pZCBfYnJpbl9iZWdpbl9w YXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsCiAJCQkJCQkJCSBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpOwogc3Rh dGljIHZvaWQgX2JyaW5fZW5kX3BhcmFsbGVsKEJyaW5MZWFkZXIgKmJyaW5sZWFkZXIsIEJyaW5C dWlsZFN0YXRlICpzdGF0ZSk7Ci1zdGF0aWMgU2l6ZSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9z aGFyZWQoUmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25hcHNob3QpOworc3RhdGljIFNpemUgX2Jy aW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0aW9uIGhlYXApOwogc3RhdGljIGRvdWJs ZSBfYnJpbl9wYXJhbGxlbF9oZWFwc2NhbihCcmluQnVpbGRTdGF0ZSAqc3RhdGUpOwogc3RhdGlj IGRvdWJsZSBfYnJpbl9wYXJhbGxlbF9tZXJnZShCcmluQnVpbGRTdGF0ZSAqc3RhdGUpOwogc3Rh dGljIHZvaWQgX2JyaW5fbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtlcihCcmluQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwKQEAgLTEyMjYsNyArMTIyNSw2IEBAIGJyaW5idWlsZChSZWxhdGlvbiBo ZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCXJlbHR1cGxlcyA9 IF9icmluX3BhcmFsbGVsX21lcmdlKHN0YXRlKTsKIAogCQlfYnJpbl9lbmRfcGFyYWxsZWwoc3Rh dGUtPmJzX2xlYWRlciwgc3RhdGUpOwotCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVu dCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCWVsc2UJCQkJ CQkvKiBubyBwYXJhbGxlbCBpbmRleCBidWlsZCAqLwogCXsKQEAgLTEyNTksNyArMTI1Nyw2IEBA IGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRl eEluZm8pCiAJCWJyaW5fZmlsbF9lbXB0eV9yYW5nZXMoc3RhdGUsCiAJCQkJCQkJICAgc3RhdGUt PmJzX2N1cnJSYW5nZVN0YXJ0LAogCQkJCQkJCSAgIHN0YXRlLT5ic19tYXhSYW5nZVN0YXJ0KTsK LQkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAogCS8qIHJlbGVhc2UgcmVzb3VyY2VzICovCkBAIC0x Mjc1LDYgKzEyNzIsOSBAQCBicmluYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs IEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCXJlc3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7 CiAJcmVzdWx0LT5pbmRleF90dXBsZXMgPSBpZHh0dXBsZXM7CiAKKwlJbnZhbGlkYXRlQ2F0YWxv Z1NuYXBzaG90KCk7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApA QCAtMjM4NCw3ICsyMzg0LDYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUg KmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogewogCVBhcmFsbGVs Q29udGV4dCAqcGN4dDsKIAlpbnQJCQlzY2FudHVwbGVzb3J0c3RhdGVzOwotCVNuYXBzaG90CXNu YXBzaG90OwogCVNpemUJCWVzdGJyaW5zaGFyZWQ7CiAJU2l6ZQkJZXN0c29ydDsKIAlCcmluU2hh cmVkICpicmluc2hhcmVkOwpAQCAtMjQxNSwyNSArMjQxNCwyNSBAQCBfYnJpbl9iZWdpbl9wYXJh bGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsCiAJICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEg bm9ybWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11 c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVj a3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuICBJbiBh Ci0JICogY29uY3VycmVudCBidWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBh bmQgaW5kZXggd2hhdGV2ZXIncwotCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCisJICogY29u Y3VycmVudCBidWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgcHVzaCBp dCBhcyBhY3RpdmUuCisJICogTGF0ZXIgd2UgaW5kZXggd2hhdGV2ZXIncyBsaXZlIGFjY29yZGlu ZyB0byB0aGF0IHNuYXBzaG90IHdoaWxlIHRoYXQKKwkgKiBzbmFwc2hvdCBpcyByZXNldCBwZXJp b2RpY2FsbHkuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQpCiAJewogCQlBc3NlcnQoQWN0aXZl U25hcHNob3RTZXQoKSk7Ci0JCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CiAJCW5lZWRfcG9wX2Fj dGl2ZV9zbmFwc2hvdCA9IGZhbHNlOwogCX0KIAllbHNlCiAJewotCQlzbmFwc2hvdCA9IFJlZ2lz dGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJQXNzZXJ0KCFBY3RpdmVT bmFwc2hvdFNldCgpKTsKIAkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNo b3QoKSk7CiAJfQogCiAJLyoKIAkgKiBFc3RpbWF0ZSBzaXplIGZvciBvdXIgb3duIFBBUkFMTEVM X0tFWV9CUklOX1NIQVJFRCB3b3Jrc3BhY2UuCiAJICovCi0JZXN0YnJpbnNoYXJlZCA9IF9icmlu X3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChoZWFwLCBzbmFwc2hvdCk7CisJZXN0YnJpbnNoYXJl ZCA9IF9icmluX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChoZWFwKTsKIAlzaG1fdG9jX2VzdGlt YXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIGVzdGJyaW5zaGFyZWQpOwogCWVzdHNvcnQgPSB0 dXBsZXNvcnRfZXN0aW1hdGVfc2hhcmVkKHNjYW50dXBsZXNvcnRzdGF0ZXMpOwogCXNobV90b2Nf ZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgZXN0c29ydCk7CkBAIC0yNDczLDggKzI0 NzIsNiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwg UmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJewogCQlpZiAobmVlZF9wb3BfYWN0aXZl X3NuYXBzaG90KQogCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJaWYgKElzTVZDQ1NuYXBzaG90 KHNuYXBzaG90KSkKLQkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ryb3lQ YXJhbGxlbENvbnRleHQocGN4dCk7CiAJCUV4aXRQYXJhbGxlbE1vZGUoKTsKIAkJcmV0dXJuOwpA QCAtMjQ5OSw3ICsyNDk2LDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUg KmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCiAJdGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUoaGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkZy b21CcmluU2hhcmVkKGJyaW5zaGFyZWQpLAotCQkJCQkJCQkgIHNuYXBzaG90KTsKKwkJCQkJCQkJ ICBpc2NvbmN1cnJlbnQgPyBJbnZhbGlkU25hcHNob3QgOiBTbmFwc2hvdEFueSwKKwkJCQkJCQkJ ICBpc2NvbmN1cnJlbnQpOwogCiAJLyoKIAkgKiBTdG9yZSBzaGFyZWQgdHVwbGVzb3J0LXByaXZh dGUgc3RhdGUsIGZvciB3aGljaCB3ZSByZXNlcnZlZCBzcGFjZS4KQEAgLTI1NDUsNyArMjU0Myw2 IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkJYnJpbmxlYWRlci0+bnBhcnRpY2lwYW50dHVw bGVzb3J0cysrOwogCWJyaW5sZWFkZXItPmJyaW5zaGFyZWQgPSBicmluc2hhcmVkOwogCWJyaW5s ZWFkZXItPnNoYXJlZHNvcnQgPSBzaGFyZWRzb3J0OwotCWJyaW5sZWFkZXItPnNuYXBzaG90ID0g c25hcHNob3Q7CiAJYnJpbmxlYWRlci0+d2FsdXNhZ2UgPSB3YWx1c2FnZTsKIAlicmlubGVhZGVy LT5idWZmZXJ1c2FnZSA9IGJ1ZmZlcnVzYWdlOwogCkBAIC0yNTYxLDYgKzI1NTgsMTMgQEAgX2Jy aW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhl YXAsIFJlbGF0aW9uIGluZGV4LAogCS8qIFNhdmUgbGVhZGVyIHN0YXRlIG5vdyB0aGF0IGl0J3Mg Y2xlYXIgYnVpbGQgd2lsbCBiZSBwYXJhbGxlbCAqLwogCWJ1aWxkc3RhdGUtPmJzX2xlYWRlciA9 IGJyaW5sZWFkZXI7CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBzbmFw c2hvdHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkgKiBXZSBuZWVkIHRv IHdhaXQgdW50aWwgYWxsIHdvcmtlcnMgaW1wb3J0ZWQgaW5pdGlhbCBzbmFwc2hvdC4KKwkgKi8K KwlpZiAoaXNjb25jdXJyZW50KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4 dCwgdHJ1ZSk7CisKIAkvKiBKb2luIGhlYXAgc2NhbiBvdXJzZWx2ZXMgKi8KIAlpZiAobGVhZGVy cGFydGljaXBhdGVzKQogCQlfYnJpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2VyKGJ1aWxk c3RhdGUsIGhlYXAsIGluZGV4KTsKQEAgLTI1NjksOSArMjU3MywxMyBAQCBfYnJpbl9iZWdpbl9w YXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBsYXVuY2hlZCB3b3Jr ZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1z dGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlXYWl0Rm9yUGFyYWxsZWxX b3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFpc2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQYXJh bGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCBmYWxzZSk7CiAJaWYgKG5lZWRfcG9wX2FjdGl2ZV9z bmFwc2hvdCkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKKworCUludmFsaWRhdGVDYXRhbG9nU25h cHNob3QoKTsKKwlBc3NlcnQoIWJyaW5sZWFkZXItPmJyaW5zaGFyZWQtPmlzY29uY3VycmVudCB8 fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiB9CiAKIC8qCkBAIC0yNTky LDkgKzI2MDAsNiBAQCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJpbkxlYWRlciAqYnJpbmxlYWRlciwg QnJpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCWZvciAoaSA9IDA7IGkgPCBicmlubGVhZGVyLT5wY3h0 LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmYnJp bmxlYWRlci0+YnVmZmVydXNhZ2VbaV0sICZicmlubGVhZGVyLT53YWx1c2FnZVtpXSk7CiAKLQkv KiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlmIG9uZSB3YXMgdXNlZCAq LwotCWlmIChJc01WQ0NTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hvdCkpCi0JCVVucmVnaXN0 ZXJTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hvdCk7CiAJRGVzdHJveVBhcmFsbGVsQ29udGV4 dChicmlubGVhZGVyLT5wY3h0KTsKIAlFeGl0UGFyYWxsZWxNb2RlKCk7CiB9CkBAIC0yNzk0LDE0 ICsyNzk5LDE0IEBAIF9icmluX3BhcmFsbGVsX21lcmdlKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSkK IAogLyoKICAqIFJldHVybnMgc2l6ZSBvZiBzaGFyZWQgbWVtb3J5IHJlcXVpcmVkIHRvIHN0b3Jl IHN0YXRlIGZvciBhIHBhcmFsbGVsCi0gKiBicmluIGluZGV4IGJ1aWxkIGJhc2VkIG9uIHRoZSBz bmFwc2hvdCBpdHMgcGFyYWxsZWwgc2NhbiB3aWxsIHVzZS4KKyAqIGJyaW4gaW5kZXggYnVpbGQu CiAgKi8KIHN0YXRpYyBTaXplCi1fYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRp b24gaGVhcCwgU25hcHNob3Qgc25hcHNob3QpCitfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFy ZWQoUmVsYXRpb24gaGVhcCkKIHsKIAkvKiBjLmYuIHNobV90b2NfYWxsb2NhdGUgYXMgdG8gd2h5 IEJVRkZFUkFMSUdOIGlzIHVzZWQgKi8KIAlyZXR1cm4gYWRkX3NpemUoQlVGRkVSQUxJR04oc2l6 ZW9mKEJyaW5TaGFyZWQpKSwKLQkJCQkJdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKGhlYXAs IHNuYXBzaG90KSk7CisJCQkJCXRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShoZWFwLCBJbnZh bGlkU25hcHNob3QpKTsKIH0KIAogLyoKQEAgLTI5NjMsNiArMjk2OCwxMyBAQCBfYnJpbl9wYXJh bGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAogCV9icmlu X3BhcmFsbGVsX3NjYW5fYW5kX2J1aWxkKGJ1aWxkc3RhdGUsIGJyaW5zaGFyZWQsIHNoYXJlZHNv cnQsCiAJCQkJCQkJCSAgaGVhcFJlbCwgaW5kZXhSZWwsIHNvcnRtZW0sIGZhbHNlKTsKKwlpZiAo YnJpbnNoYXJlZC0+aXNjb25jdXJyZW50KQorCXsKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJ SW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eG1pbikpOworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25T bmFwc2hvdCgpKTsKKwl9CiAKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBkdXJpbmcgcGFy YWxsZWwgZXhlY3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBB UkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2Vy dC5jCmluZGV4IGMzMDg1ZDE3NGM3Li5lOTIyMGIwYTcyZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dp bmluc2VydC5jCkBAIC0xMzgsNyArMTM4LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgR2luTGVhZGVyCiAJ ICovCiAJR2luQnVpbGRTaGFyZWQgKmdpbnNoYXJlZDsKIAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0 OwotCVNuYXBzaG90CXNuYXBzaG90OwogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVz YWdlICpidWZmZXJ1c2FnZTsKIH0gR2luTGVhZGVyOwpAQCAtMTg4LDcgKzE4Nyw3IEBAIHR5cGVk ZWYgc3RydWN0CiBzdGF0aWMgdm9pZCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUg KmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCQkJCQkJCQlib29s IGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpOwogc3RhdGljIHZvaWQgX2dpbl9lbmRfcGFyYWxs ZWwoR2luTGVhZGVyICpnaW5sZWFkZXIsIEdpbkJ1aWxkU3RhdGUgKnN0YXRlKTsKLXN0YXRpYyBT aXplIF9naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0aW9uIGhlYXAsIFNuYXBzaG90 IHNuYXBzaG90KTsKK3N0YXRpYyBTaXplIF9naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJl bGF0aW9uIGhlYXApOwogc3RhdGljIGRvdWJsZSBfZ2luX3BhcmFsbGVsX2hlYXBzY2FuKEdpbkJ1 aWxkU3RhdGUgKnN0YXRlKTsKIHN0YXRpYyBkb3VibGUgX2dpbl9wYXJhbGxlbF9tZXJnZShHaW5C dWlsZFN0YXRlICpzdGF0ZSk7CiBzdGF0aWMgdm9pZCBfZ2luX2xlYWRlcl9wYXJ0aWNpcGF0ZV9h c193b3JrZXIoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKQEAgLTc1NSw3ICs3NTQsNiBAQCBn aW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleElu Zm8pCiAJCXJlbHR1cGxlcyA9IF9naW5fcGFyYWxsZWxfbWVyZ2Uoc3RhdGUpOwogCiAJCV9naW5f ZW5kX3BhcmFsbGVsKHN0YXRlLT5ic19sZWFkZXIsIHN0YXRlKTsKLQkJQXNzZXJ0KCFpbmRleElu Zm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikp OwogCX0KIAllbHNlCQkJCQkJLyogbm8gcGFyYWxsZWwgaW5kZXggYnVpbGQgKi8KIAl7CkBAIC03 NzksNyArNzc3LDYgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIElu ZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkJCQkJICAgbGlzdCwgbmxpc3QsICZidWlsZHN0YXRlLmJ1 aWxkU3RhdHMpOwogCQl9CiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDdHgpOwotCQlBc3Nl cnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQ cm9jLT54bWluKSk7CiAJfQogCiAJTWVtb3J5Q29udGV4dERlbGV0ZShidWlsZHN0YXRlLmZ1bmND dHgpOwpAQCAtODA5LDYgKzgwNiw3IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAogCXJlc3VsdC0+aGVhcF90dXBsZXMgPSBy ZWx0dXBsZXM7CiAJcmVzdWx0LT5pbmRleF90dXBsZXMgPSBidWlsZHN0YXRlLmluZHR1cGxlczsK KwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFs aWQoTXlQcm9jLT54bWluKSk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpAQCAtOTQ3LDcgKzk0NSw2 IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiB7CiAJUGFyYWxsZWxDb250ZXh0ICpwY3h0OwogCWlu dAkJCXNjYW50dXBsZXNvcnRzdGF0ZXM7Ci0JU25hcHNob3QJc25hcHNob3Q7CiAJU2l6ZQkJZXN0 Z2luc2hhcmVkOwogCVNpemUJCWVzdHNvcnQ7CiAJR2luQnVpbGRTaGFyZWQgKmdpbnNoYXJlZDsK QEAgLTk3NywyNSArOTc0LDI1IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAq YnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogUHJlcGFyZSBm b3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9ybWFsIGluZGV4IGJ1aWxkLCB3 ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxl cyBhbmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0 byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuICBJbiBhCi0JICogY29uY3VycmVudCBidWls ZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgaW5kZXggd2hhdGV2ZXIncwot CSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCisJICogY29uY3VycmVudCBidWlsZCwgd2UgdGFr ZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgcHVzaCBpdCBhcyBhY3RpdmUuCisJICogTGF0 ZXIgd2UgaW5kZXggd2hhdGV2ZXIncyBsaXZlIGFjY29yZGluZyB0byB0aGF0IHNuYXBzaG90IHdo aWxlIHRoYXQKKwkgKiBzbmFwc2hvdCBpcyByZXNldCBwZXJpb2RpY2FsbHkuCiAJICovCiAJaWYg KCFpc2NvbmN1cnJlbnQpCiAJewogCQlBc3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7Ci0JCXNu YXBzaG90ID0gU25hcHNob3RBbnk7CiAJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNl OwogCX0KIAllbHNlCiAJewotCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCgpKTsKKwkJQXNzZXJ0KCFBY3RpdmVTbmFwc2hvdFNldCgpKTsKIAkJUHVz aEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJfQogCiAJLyoKIAkg KiBFc3RpbWF0ZSBzaXplIGZvciBvdXIgb3duIFBBUkFMTEVMX0tFWV9HSU5fU0hBUkVEIHdvcmtz cGFjZS4KIAkgKi8KLQllc3RnaW5zaGFyZWQgPSBfZ2luX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJl ZChoZWFwLCBzbmFwc2hvdCk7CisJZXN0Z2luc2hhcmVkID0gX2dpbl9wYXJhbGxlbF9lc3RpbWF0 ZV9zaGFyZWQoaGVhcCk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9y LCBlc3RnaW5zaGFyZWQpOwogCWVzdHNvcnQgPSB0dXBsZXNvcnRfZXN0aW1hdGVfc2hhcmVkKHNj YW50dXBsZXNvcnRzdGF0ZXMpOwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGlt YXRvciwgZXN0c29ydCk7CkBAIC0xMDM1LDggKzEwMzIsNiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVs KEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LAogCXsKIAkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJCVBvcEFjdGl2ZVNuYXBz aG90KCk7Ci0JCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCi0JCQlVbnJlZ2lzdGVyU25h cHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwogCQlFeGl0 UGFyYWxsZWxNb2RlKCk7CiAJCXJldHVybjsKQEAgLTEwNjAsNyArMTA1NSw4IEBAIF9naW5fYmVn aW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiAKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShoZWFwLAogCQkJ CQkJCQkgIFBhcmFsbGVsVGFibGVTY2FuRnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCksCi0J CQkJCQkJCSAgc25hcHNob3QpOworCQkJCQkJCQkgIGlzY29uY3VycmVudCA/IEludmFsaWRTbmFw c2hvdCA6IFNuYXBzaG90QW55LAorCQkJCQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgogCSAq IFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2Vy dmVkIHNwYWNlLgpAQCAtMTEwMiw3ICsxMDk4LDYgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5C dWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkJ Z2lubGVhZGVyLT5ucGFydGljaXBhbnR0dXBsZXNvcnRzKys7CiAJZ2lubGVhZGVyLT5naW5zaGFy ZWQgPSBnaW5zaGFyZWQ7CiAJZ2lubGVhZGVyLT5zaGFyZWRzb3J0ID0gc2hhcmVkc29ydDsKLQln aW5sZWFkZXItPnNuYXBzaG90ID0gc25hcHNob3Q7CiAJZ2lubGVhZGVyLT53YWx1c2FnZSA9IHdh bHVzYWdlOwogCWdpbmxlYWRlci0+YnVmZmVydXNhZ2UgPSBidWZmZXJ1c2FnZTsKIApAQCAtMTEx OCw2ICsxMTEzLDEzIEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogU2F2ZSBsZWFkZXIgc3Rh dGUgbm93IHRoYXQgaXQncyBjbGVhciBidWlsZCB3aWxsIGJlIHBhcmFsbGVsICovCiAJYnVpbGRz dGF0ZS0+YnNfbGVhZGVyID0gZ2lubGVhZGVyOwogCisJLyoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1 cnJlbnQgYnVpbGQgc25hcHNob3RzIGFyZSBnb2luZyB0byBiZSByZXNldCBwZXJpb2RpY2FsbHku CisJICogV2UgbmVlZCB0byB3YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwg c25hcHNob3QuCisJICovCisJaWYgKGlzY29uY3VycmVudCkKKwkJV2FpdEZvclBhcmFsbGVsV29y a2Vyc1RvQXR0YWNoKHBjeHQsIHRydWUpOworCiAJLyogSm9pbiBoZWFwIHNjYW4gb3Vyc2VsdmVz ICovCiAJaWYgKGxlYWRlcnBhcnRpY2lwYXRlcykKIAkJX2dpbl9sZWFkZXJfcGFydGljaXBhdGVf YXNfd29ya2VyKGJ1aWxkc3RhdGUsIGhlYXAsIGluZGV4KTsKQEAgLTExMjYsOSArMTEyOCwxMiBA QCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIENhbGxlciBuZWVkcyB0byB3YWl0IGZvciBhbGwg bGF1bmNoZWQgd29ya2VycyB3aGVuIHdlIHJldHVybi4gIE1ha2UKIAkgKiBzdXJlIHRoYXQgdGhl IGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJICovCi0JV2Fp dEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmICghaXNjb25jdXJyZW50KQor CQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgZmFsc2UpOwogCWlmIChuZWVk X3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJSW52YWxpZGF0 ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCghZ2lubGVhZGVyLT5naW5zaGFyZWQtPmlzY29u Y3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiB9CiAKIC8q CkBAIC0xMTQ5LDkgKzExNTQsNiBAQCBfZ2luX2VuZF9wYXJhbGxlbChHaW5MZWFkZXIgKmdpbmxl YWRlciwgR2luQnVpbGRTdGF0ZSAqc3RhdGUpCiAJZm9yIChpID0gMDsgaSA8IGdpbmxlYWRlci0+ cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQ7IGkrKykKIAkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnko JmdpbmxlYWRlci0+YnVmZmVydXNhZ2VbaV0sICZnaW5sZWFkZXItPndhbHVzYWdlW2ldKTsKIAot CS8qIEZyZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZDQyBzbmFwc2hvdCwgaWYgb25lIHdhcyB1c2Vk ICovCi0JaWYgKElzTVZDQ1NuYXBzaG90KGdpbmxlYWRlci0+c25hcHNob3QpKQotCQlVbnJlZ2lz dGVyU25hcHNob3QoZ2lubGVhZGVyLT5zbmFwc2hvdCk7CiAJRGVzdHJveVBhcmFsbGVsQ29udGV4 dChnaW5sZWFkZXItPnBjeHQpOwogCUV4aXRQYXJhbGxlbE1vZGUoKTsKIH0KQEAgLTE4MjYsMTQg KzE4MjgsMTQgQEAgX2dpbl9wYXJhbGxlbF9tZXJnZShHaW5CdWlsZFN0YXRlICpzdGF0ZSkKIAog LyoKICAqIFJldHVybnMgc2l6ZSBvZiBzaGFyZWQgbWVtb3J5IHJlcXVpcmVkIHRvIHN0b3JlIHN0 YXRlIGZvciBhIHBhcmFsbGVsCi0gKiBnaW4gaW5kZXggYnVpbGQgYmFzZWQgb24gdGhlIHNuYXBz aG90IGl0cyBwYXJhbGxlbCBzY2FuIHdpbGwgdXNlLgorICogZ2luIGluZGV4IGJ1aWxkLgogICov CiBzdGF0aWMgU2l6ZQotX2dpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVh cCwgU25hcHNob3Qgc25hcHNob3QpCitfZ2luX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChSZWxh dGlvbiBoZWFwKQogewogCS8qIGMuZi4gc2htX3RvY19hbGxvY2F0ZSBhcyB0byB3aHkgQlVGRkVS QUxJR04gaXMgdXNlZCAqLwogCXJldHVybiBhZGRfc2l6ZShCVUZGRVJBTElHTihzaXplb2YoR2lu QnVpbGRTaGFyZWQpKSwKLQkJCQkJdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKGhlYXAsIHNu YXBzaG90KSk7CisJCQkJCXRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShoZWFwLCBJbnZhbGlk U25hcHNob3QpKTsKIH0KIAogLyoKQEAgLTIyMTgsNiArMjIyMCwxMyBAQCBfZ2luX3BhcmFsbGVs X2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCiAJX2dpbl9wYXJh bGxlbF9zY2FuX2FuZF9idWlsZCgmYnVpbGRzdGF0ZSwgZ2luc2hhcmVkLCBzaGFyZWRzb3J0LAog CQkJCQkJCQkgaGVhcFJlbCwgaW5kZXhSZWwsIHNvcnRtZW0sIGZhbHNlKTsKKwlpZiAoZ2luc2hh cmVkLT5pc2NvbmN1cnJlbnQpCisJeworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQlJbnZhbGlk YXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQ cm9jLT54bWluKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90 KCkpOworCX0KIAogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBl eGVjdXRpb24gKi8KIAlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxf S0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKaW5kZXggOWNhZDJlMTE1YmQuLmE2MzllOGIzMWUwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTEyNjAsMTQgKzEyNjAsMTMgQEAgaGVhcGFt X2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCSAqIFNuYXBz aG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBkbyBvdXIgb3du IHRpbWUKIAkgKiBxdWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4IFJFQ0VOVExZ X0RFQUQgdHVwbGVzKS4gSW4gYQogCSAqIGNvbmN1cnJlbnQgYnVpbGQsIG9yIGR1cmluZyBib290 c3RyYXAsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QKLQkgKiBhbmQgaW5kZXggd2hh dGV2ZXIncyBsaXZlIGFjY29yZGluZyB0byB0aGF0LgorCSAqIGFuZCBpbmRleCB3aGF0ZXZlcidz IGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQgd2hpbGUgdGhhdCBzbmFwc2hvdCBpcyByZXNldAorCSAq IGV2ZXJ5IHNvIG9mdGVuIChpbiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXgpLgogCSAqLwogCU9s ZGVzdFhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAogCS8qCiAJICogRm9yIHVuaXF1ZSBp bmRleCB3ZSBuZWVkIGNvbnNpc3RlbnQgc25hcHNob3QgZm9yIHRoZSB3aG9sZSBzY2FuLgotCSAq IEluIGNhc2Ugb2YgcGFyYWxsZWwgc2NhbiBzb21lIGFkZGl0aW9uYWwgaW5mcmFzdHJ1Y3R1cmUg cmVxdWlyZWQKLQkgKiB0byBwZXJmb3JtIHNjYW4gd2l0aCBTT19SRVNFVF9TTkFQU0hPVCB3aGlj aCBpcyBub3QgeWV0IHJlYWR5LgogCSAqLwogCXJlc2V0X3NuYXBzaG90cyA9IGluZGV4SW5mby0+ aWlfQ29uY3VycmVudCAmJgogCQkJCQkgICFpbmRleEluZm8tPmlpX1VuaXF1ZSAmJgpAQCAtMTMy OSw4ICsxMzI4LDExIEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJQXNzZXJ0KCFJc0Jvb3RzdHJhcFByb2Nlc3NpbmdNb2RlKCkpOwogCQlB c3NlcnQoYWxsb3dfc3luYyk7CiAJCXNuYXBzaG90ID0gc2Nhbi0+cnNfc25hcHNob3Q7Ci0JCVB1 c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7Ci0JCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9 IHRydWU7CisJCWlmICghcmVzZXRfc25hcHNob3RzKQorCQl7CisJCQlQdXNoQWN0aXZlU25hcHNo b3Qoc25hcHNob3QpOworCQkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwkJfQog CX0KIAogCWhzY2FuID0gKEhlYXBTY2FuRGVzYykgc2NhbjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKaW5kZXggNmYwOTFkMzk4MTMuLjY1OTRjM2UxNWIyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHNvcnQuYwpAQCAtMzI1LDIyICszMjUsMjAgQEAgYnRidWlsZChSZWxhdGlvbiBo ZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCQkgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUoaW5kZXgpKTsKIAogCXJlbHR1cGxlcyA9IF9idF9zcG9vbHNfaGVhcHNj YW4oaGVhcCwgaW5kZXgsICZidWlsZHN0YXRlLCBpbmRleEluZm8pOwotCUFzc2VydChpbmRleElu Zm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fAotCQkgICFp bmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+ aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8q CiAJICogRmluaXNoIHRoZSBidWlsZCBieSAoMSkgY29tcGxldGluZyB0aGUgc29ydCBvZiB0aGUg c3Bvb2wgZmlsZSwgKDIpCiAJICogaW5zZXJ0aW5nIHRoZSBzb3J0ZWQgdHVwbGVzIGludG8gYnRy ZWUgcGFnZXMgYW5kICgzKSBidWlsZGluZyB0aGUgdXBwZXIKIAkgKiBsZXZlbHMuICBGaW5hbGx5 LCBpdCBtYXkgYWxzbyBiZSBuZWNlc3NhcnkgdG8gZW5kIHVzZSBvZiBwYXJhbGxlbGlzbS4KIAkg Ki8KLQlfYnRfbGVhZmJ1aWxkKGJ1aWxkc3RhdGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bvb2wyLCAh aW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgJiYgaW5kZXhJbmZvLT5paV9Db25jdXJyZW50 KTsKKwlfYnRfbGVhZmJ1aWxkKGJ1aWxkc3RhdGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bvb2wyLCAh aW5kZXhJbmZvLT5paV9VbmlxdWUgJiYgaW5kZXhJbmZvLT5paV9Db25jdXJyZW50KTsKIAlfYnRf c3Bvb2xkZXN0cm95KGJ1aWxkc3RhdGUuc3Bvb2wpOwogCWlmIChidWlsZHN0YXRlLnNwb29sMikK IAkJX2J0X3Nwb29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sMik7CiAJaWYgKGJ1aWxkc3RhdGUu YnRsZWFkZXIpCiAJCV9idF9lbmRfcGFyYWxsZWwoYnVpbGRzdGF0ZS5idGxlYWRlcik7Ci0JQXNz ZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVl IHx8Ci0JCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFs aWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwg aW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOwogCiAJcmVzdWx0ID0gcGFsbG9jX29iamVjdChJbmRleEJ1aWxkUmVzdWx0KTsKIApAQCAt NDg5LDggKzQ4Nyw3IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkJcmVsdHVwbGVzID0gX2J0X3Bh cmFsbGVsX2hlYXBzY2FuKGJ1aWxkc3RhdGUsCiAJCQkJCQkJCQkJICAmaW5kZXhJbmZvLT5paV9C cm9rZW5Ib3RDaGFpbik7CiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwotCUFzc2VydChp bmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fAot CQkgICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4 SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsK IAogCS8qCiAJICogU2V0IHRoZSBwcm9ncmVzcyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAg UmVzZXQgdGhlIGJsb2NrIG51bWJlcgpAQCAtMTQyMiw2ICsxNDE5LDcgQEAgX2J0X2JlZ2luX3Bh cmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCBy ZXF1ZXN0KQogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNp cGF0ZXMgPSB0cnVlOwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJ Ym9vbAkJcmVzZXRfc25hcHNob3Q7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxF X0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC0xNDM5LDEyICsxNDM3LDIxIEBAIF9idF9iZWdpbl9w YXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQg cmVxdWVzdCkKIAogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFkZXJwYXJ0aWNpcGF0ZXMgPyBy ZXF1ZXN0ICsgMSA6IHJlcXVlc3Q7CiAKKyAgICAvKgorCSAqIEZvciBjb25jdXJyZW50IG5vbi11 bmlxdWUgaW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cwor CSAqIHRvIGFsbG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4gVGhpcyBpcyBzYWZlIHNp bmNlIHRoZXNlIGJ1aWxkcyBkb24ndAorCSAqIHJlcXVpcmUgYSBjb25zaXN0ZW50IHZpZXcgYWNy b3NzIHRoZSBlbnRpcmUgc2Nhbi4gVW5pcXVlIGluZGV4ZXMgc3RpbGwgbmVlZAorCSAqIGEgc3Rh YmxlIHNuYXBzaG90IHRvIHByb3Blcmx5IGVuZm9yY2UgdW5pcXVlbmVzcyBjb25zdHJhaW50cy4K KyAgICAgKi8KKwlyZXNldF9zbmFwc2hvdCA9IGlzY29uY3VycmVudCAmJiAhYnRzcG9vbC0+aXN1 bmlxdWU7CisKIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24u ICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RBbnkgYmVjYXVz ZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1 YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMp LiAgSW4gYQogCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25h cHNob3QgYW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0Lgor CSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQsIHdoaWxlIHRoYXQgc25hcHNob3QgbWF5IGJlIHJl c2V0IHBlcmlvZGljYWxseSBpbgorCSAqIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleC4KIAkgKi8K IAlpZiAoIWlzY29uY3VycmVudCkKIAl7CkBAIC0xNDUyLDYgKzE0NTksMTEgQEAgX2J0X2JlZ2lu X3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGlu dCByZXF1ZXN0KQogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVf c25hcHNob3QgPSBmYWxzZTsKIAl9CisJZWxzZSBpZiAocmVzZXRfc25hcHNob3QpCisJeworCQlz bmFwc2hvdCA9IEludmFsaWRTbmFwc2hvdDsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5z YWN0aW9uU25hcHNob3QoKSk7CisJfQogCWVsc2UKIAl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwpAQCAtMTUxMiw3ICsxNTI0LDcgQEAg X2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1 cnJlbnQsIGludCByZXF1ZXN0KQogCXsKIAkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkK IAkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0JCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkp CisJCWlmIChzbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3QgJiYgSXNNVkNDU25hcHNob3Qoc25h cHNob3QpKQogCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFs bGVsQ29udGV4dChwY3h0KTsKIAkJRXhpdFBhcmFsbGVsTW9kZSgpOwpAQCAtMTUzOSw3ICsxNTUx LDggQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBp c2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCWJ0c2hhcmVkLT5icm9rZW5ob3RjaGFpbiA9IGZh bHNlOwogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKGJ0c3Bvb2wtPmhlYXAsCiAJCQkJ CQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpLAotCQkJCQkJCQkg IHNuYXBzaG90KTsKKwkJCQkJCQkJICBzbmFwc2hvdCwKKwkJCQkJCQkJICByZXNldF9zbmFwc2hv dCk7CiAKIAkvKgogCSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9y IHdoaWNoIHdlIHJlc2VydmVkIHNwYWNlLgpAQCAtMTYxNSw2ICsxNjI4LDEzIEBAIF9idF9iZWdp bl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBp bnQgcmVxdWVzdCkKIAkvKiBTYXZlIGxlYWRlciBzdGF0ZSBub3cgdGhhdCBpdCdzIGNsZWFyIGJ1 aWxkIHdpbGwgYmUgcGFyYWxsZWwgKi8KIAlidWlsZHN0YXRlLT5idGxlYWRlciA9IGJ0bGVhZGVy OwogCisJLyoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgc25hcHNob3RzIGFyZSBn b2luZyB0byBiZSByZXNldCBwZXJpb2RpY2FsbHkuCisJICogV2FpdCB1bnRpbCBhbGwgd29ya2Vy cyBpbXBvcnRlZCBpbml0aWFsIHNuYXBzaG90LgorCSAqLworCWlmIChyZXNldF9zbmFwc2hvdCkK KwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIHRydWUpOworCiAJLyogSm9p biBoZWFwIHNjYW4gb3Vyc2VsdmVzICovCiAJaWYgKGxlYWRlcnBhcnRpY2lwYXRlcykKIAkJX2J0 X2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSk7CkBAIC0xNjIzLDkgKzE2 NDMsMTMgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9v bCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIENhbGxlciBuZWVkcyB0byB3YWl0IGZv ciBhbGwgbGF1bmNoZWQgd29ya2VycyB3aGVuIHdlIHJldHVybi4gIE1ha2UKIAkgKiBzdXJlIHRo YXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJICov Ci0JV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmICghcmVzZXRfc25h cHNob3QpCisJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCBmYWxzZSk7CiAJ aWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwor CUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoIXJlc2V0X3NuYXBzaG90IHx8 ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIH0KIAogLyoKQEAgLTE2NDcs NyArMTY3MSw3IEBAIF9idF9lbmRfcGFyYWxsZWwoQlRMZWFkZXIgKmJ0bGVhZGVyKQogCQlJbnN0 ckFjY3VtUGFyYWxsZWxRdWVyeSgmYnRsZWFkZXItPmJ1ZmZlcnVzYWdlW2ldLCAmYnRsZWFkZXIt PndhbHVzYWdlW2ldKTsKIAogCS8qIEZyZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZDQyBzbmFwc2hv dCwgaWYgb25lIHdhcyB1c2VkICovCi0JaWYgKElzTVZDQ1NuYXBzaG90KGJ0bGVhZGVyLT5zbmFw c2hvdCkpCisJaWYgKGJ0bGVhZGVyLT5zbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3QgJiYgSXNN VkNDU25hcHNob3QoYnRsZWFkZXItPnNuYXBzaG90KSkKIAkJVW5yZWdpc3RlclNuYXBzaG90KGJ0 bGVhZGVyLT5zbmFwc2hvdCk7CiAJRGVzdHJveVBhcmFsbGVsQ29udGV4dChidGxlYWRlci0+cGN4 dCk7CiAJRXhpdFBhcmFsbGVsTW9kZSgpOwpAQCAtMTg5Nyw2ICsxOTIxLDcgQEAgX2J0X3BhcmFs bGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsCiAJ U29ydENvb3JkaW5hdGUgY29vcmRpbmF0ZTsKIAlCVEJ1aWxkU3RhdGUgYnVpbGRzdGF0ZTsKIAlU YWJsZVNjYW5EZXNjIHNjYW47CisJUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuOwogCWRvdWJs ZQkJcmVsdHVwbGVzOwogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKIApAQCAtMTk1MSwxMSArMTk3 NiwxNSBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNw b29sICpidHNwb29sMiwKIAkvKiBKb2luIHBhcmFsbGVsIHNjYW4gKi8KIAlpbmRleEluZm8gPSBC dWlsZEluZGV4SW5mbyhidHNwb29sLT5pbmRleCk7CiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50 ID0gYnRzaGFyZWQtPmlzY29uY3VycmVudDsKLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3BhcmFs bGVsKGJ0c3Bvb2wtPmhlYXAsCi0JCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJl ZChidHNoYXJlZCkpOworCXBzY2FuID0gUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRz aGFyZWQpOworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoYnRzcG9vbC0+aGVhcCwg cHNjYW4pOwogCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oYnRzcG9vbC0+aGVh cCwgYnRzcG9vbC0+aW5kZXgsIGluZGV4SW5mbywKIAkJCQkJCQkJCSAgIHRydWUsIHByb2dyZXNz LCBfYnRfYnVpbGRfY2FsbGJhY2ssCiAJCQkJCQkJCQkgICAmYnVpbGRzdGF0ZSwgc2Nhbik7CisJ SW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCWlmIChwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBz aG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCUFzc2VydCghcHNjYW4tPnBoc19yZXNldF9z bmFwc2hvdCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKiBF eGVjdXRlIHRoaXMgd29ya2VyJ3MgcGFydCBvZiB0aGUgc29ydCAqLwogCWlmIChwcm9ncmVzcykK QEAgLTE5OTEsNCArMjAyMCw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wg KmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCXR1cGxlc29ydF9lbmQoYnRzcG9vbC0+c29y dHN0YXRlKTsKIAlpZiAoYnRzcG9vbDIpCiAJCXR1cGxlc29ydF9lbmQoYnRzcG9vbDItPnNvcnRz dGF0ZSk7CisJQXNzZXJ0KCFwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90IHx8ICFUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlpZiAocHNjYW4tPnBoc19yZXNldF9zbmFwc2hv dCkKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwppbmRleCBkZmRhMWFmNDEyZS4uMjZkZjU2Mzg5MjEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtMTMyLDEwICsxMzIsMTAgQEAgdGFi bGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3Qp CiB7CiAJU2l6ZQkJc3ogPSAwOwogCi0JaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKKwlp ZiAoc25hcHNob3QgIT0gSW52YWxpZFNuYXBzaG90ICYmIElzTVZDQ1NuYXBzaG90KHNuYXBzaG90 KSkKIAkJc3ogPSBhZGRfc2l6ZShzeiwgRXN0aW1hdGVTbmFwc2hvdFNwYWNlKHNuYXBzaG90KSk7 CiAJZWxzZQotCQlBc3NlcnQoc25hcHNob3QgPT0gU25hcHNob3RBbnkpOworCQlBc3NlcnQoc25h cHNob3QgPT0gU25hcHNob3RBbnkgfHwgc25hcHNob3QgPT0gSW52YWxpZFNuYXBzaG90KTsKIAog CXN6ID0gYWRkX3NpemUoc3osIHJlbC0+cmRfdGFibGVhbS0+cGFyYWxsZWxzY2FuX2VzdGltYXRl KHJlbCkpOwogCkBAIC0xNDQsMjEgKzE0NCwzNiBAQCB0YWJsZV9wYXJhbGxlbHNjYW5fZXN0aW1h dGUoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAogdm9pZAogdGFibGVfcGFyYWxs ZWxzY2FuX2luaXRpYWxpemUoUmVsYXRpb24gcmVsLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNj YW4sCi0JCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCkKKwkJCQkJCQkgIFNuYXBzaG90IHNuYXBz aG90LCBib29sIHJlc2V0X3NuYXBzaG90KQogewogCVNpemUJCXNuYXBzaG90X29mZiA9IHJlbC0+ cmRfdGFibGVhbS0+cGFyYWxsZWxzY2FuX2luaXRpYWxpemUocmVsLCBwc2Nhbik7CiAKIAlwc2Nh bi0+cGhzX3NuYXBzaG90X29mZiA9IHNuYXBzaG90X29mZjsKIAotCWlmIChJc01WQ0NTbmFwc2hv dChzbmFwc2hvdCkpCisJLyoKKwkgKiBJbml0aWFsaXplIHBhcmFsbGVsIHNjYW4gZGVzY3JpcHRp b24uIEZvciBub3JtYWwgc2NhbnMgd2l0aCBhIHJlZ3VsYXIKKwkgKiBNVkNDIHNuYXBzaG90LCBz ZXJpYWxpemUgdGhlIHNuYXBzaG90IGluZm8uIEZvciBzY2FucyB0aGF0IHVzZSBwZXJpb2RpYwor CSAqIHNuYXBzaG90IHJlc2V0cywgbWFyayB0aGUgc2NhbiBhY2NvcmRpbmdseS4KKwkgKi8KKwlp ZiAocmVzZXRfc25hcHNob3QpCisJeworCQlBc3NlcnQoc25hcHNob3QgPT0gSW52YWxpZFNuYXBz aG90KTsKKwkJcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkgPSBmYWxzZTsKKwkJcHNjYW4tPnBoc19y ZXNldF9zbmFwc2hvdCA9IHRydWU7CisJCUlOSkVDVElPTl9QT0lOVCgidGFibGVfcGFyYWxsZWxz Y2FuX2luaXRpYWxpemUiLCBOVUxMKTsKKwl9CisJZWxzZSBpZiAoSXNNVkNDU25hcHNob3Qoc25h cHNob3QpKQogCXsKIAkJU2VyaWFsaXplU25hcHNob3Qoc25hcHNob3QsIChjaGFyICopIHBzY2Fu ICsgcHNjYW4tPnBoc19zbmFwc2hvdF9vZmYpOwogCQlwc2Nhbi0+cGhzX3NuYXBzaG90X2FueSA9 IGZhbHNlOworCQlwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90ID0gZmFsc2U7CiAJfQogCWVsc2UK IAl7CiAJCUFzc2VydChzbmFwc2hvdCA9PSBTbmFwc2hvdEFueSk7CisJCUFzc2VydCghcmVzZXRf c25hcHNob3QpOwogCQlwc2Nhbi0+cGhzX3NuYXBzaG90X2FueSA9IHRydWU7CisJCXBzY2FuLT5w aHNfcmVzZXRfc25hcHNob3QgPSBmYWxzZTsKIAl9CiB9CiAKQEAgLTE3MSw3ICsxODYsMTkgQEAg dGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxl U2NhbkRlc2MgcHNjYW4pCiAKIAlBc3NlcnQoUmVsRmlsZUxvY2F0b3JFcXVhbHMocmVsYXRpb24t PnJkX2xvY2F0b3IsIHBzY2FuLT5waHNfbG9jYXRvcikpOwogCi0JaWYgKCFwc2Nhbi0+cGhzX3Nu YXBzaG90X2FueSkKKwkvKgorCSAqIEZvciBzY2FucyB0aGF0CisJICogdXNlIHBlcmlvZGljIHNu YXBzaG90IHJlc2V0cywgbWFyayB0aGUgc2NhbiBhY2NvcmRpbmdseSBhbmQgdXNlIHRoZSBhY3Rp dmUKKwkgKiBzbmFwc2hvdCBhcyB0aGUgaW5pdGlhbCBzdGF0ZS4KKwkgKi8KKwlpZiAocHNjYW4t PnBoc19yZXNldF9zbmFwc2hvdCkKKwl7CisJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsK KwkJZmxhZ3MgfD0gU09fUkVTRVRfU05BUFNIT1Q7CisJCS8qIFN0YXJ0IHdpdGggY3VycmVudCBh Y3RpdmUgc25hcHNob3QuICovCisJCXNuYXBzaG90ID0gR2V0QWN0aXZlU25hcHNob3QoKTsKKwl9 CisJZWxzZSBpZiAoIXBzY2FuLT5waHNfc25hcHNob3RfYW55KQogCXsKIAkJLyogU25hcHNob3Qg d2FzIHNlcmlhbGl6ZWQgLS0gcmVzdG9yZSBpdCAqLwogCQlzbmFwc2hvdCA9IFJlc3RvcmVTbmFw c2hvdCgoY2hhciAqKSBwc2NhbiArIHBzY2FuLT5waHNfc25hcHNob3Rfb2ZmKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCmluZGV4IGFiMWRmYjMwZTczLi4wZDIwMThjZTE1NCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCkBAIC03OSw2ICs3OSw3IEBACiAj ZGVmaW5lIFBBUkFMTEVMX0tFWV9SRUxNQVBQRVJfU1RBVEUJCVVJTlQ2NENPTlNUKDB4RkZGRkZG RkZGRkZGMDAwRCkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1VOQ09NTUlUVEVERU5VTVMJCVVJTlQ2 NENPTlNUKDB4RkZGRkZGRkZGRkZGMDAwRSkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0NMSUVOVENP Tk5JTkZPCQkJVUlOVDY0Q09OU1QoMHhGRkZGRkZGRkZGRkYwMDBGKQorI2RlZmluZSBQQVJBTExF TF9LRVlfU05BUFNIT1RfUkVTVE9SRUQJCVVJTlQ2NENPTlNUKDB4RkZGRkZGRkZGRkZGMDAxMCkK IAogLyogRml4ZWQtc2l6ZSBwYXJhbGxlbCBzdGF0ZS4gKi8KIHR5cGVkZWYgc3RydWN0IEZpeGVk UGFyYWxsZWxTdGF0ZQpAQCAtMzA4LDYgKzMwOSwxMCBAQCBJbml0aWFsaXplUGFyYWxsZWxEU00o UGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQkJCQkJCQkJCXBjeHQtPm53b3JrZXJzKSk7CiAJCXNo bV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKIAorCQlzaG1fdG9jX2Vz dGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIG11bF9zaXplKHNpemVvZihib29sKSwKKwkJ CQkJCQkgICBwY3h0LT5ud29ya2VycykpOworCQlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQt PmVzdGltYXRvciwgMSk7CisKIAkJLyogRXN0aW1hdGUgaG93IG11Y2ggd2UnbGwgbmVlZCBmb3Ig dGhlIGVudHJ5cG9pbnQgaW5mby4gKi8KIAkJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ ZXN0aW1hdG9yLCBzdHJsZW4ocGN4dC0+bGlicmFyeV9uYW1lKSArCiAJCQkJCQkJICAgc3RybGVu KHBjeHQtPmZ1bmN0aW9uX25hbWUpICsgMik7CkBAIC0zNzksNiArMzg0LDcgQEAgSW5pdGlhbGl6 ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJY2hhcgkgICAqZW50cnlwb2lu dHN0YXRlOwogCQljaGFyCSAgICp1bmNvbW1pdHRlZGVudW1zc3BhY2U7CiAJCWNoYXIJICAgKmNs aWVudGNvbm5pbmZvc3BhY2U7CisJCWJvb2wJICAgKnNuYXBzaG90X3NldF9mbGFnX3NwYWNlOwog CQlTaXplCQlsbmFtZWxlbjsKIAogCQkvKiBTZXJpYWxpemUgc2hhcmVkIGxpYnJhcmllcyB3ZSBo YXZlIGxvYWRlZC4gKi8KQEAgLTQ5NCw2ICs1MDAsMTkgQEAgSW5pdGlhbGl6ZVBhcmFsbGVsRFNN KFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJc3RyY3B5KGVudHJ5cG9pbnRzdGF0ZSwgcGN4dC0+ bGlicmFyeV9uYW1lKTsKIAkJc3RyY3B5KGVudHJ5cG9pbnRzdGF0ZSArIGxuYW1lbGVuICsgMSwg cGN4dC0+ZnVuY3Rpb25fbmFtZSk7CiAJCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxM RUxfS0VZX0VOVFJZUE9JTlQsIGVudHJ5cG9pbnRzdGF0ZSk7CisKKwkJLyoKKwkJICogRXN0YWJs aXNoIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSB0byBwYXNzIGluZm9ybWF0aW9uIGFib3V0IGltcG9y dGluZworCQkgKiBvZiBzbmFwc2hvdC4KKwkJICovCisJCXNuYXBzaG90X3NldF9mbGFnX3NwYWNl ID0KKwkJCQlzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgbXVsX3NpemUoc2l6ZW9mKGJvb2wp LCBwY3h0LT5ud29ya2VycykpOworCQlmb3IgKGkgPSAwOyBpIDwgcGN4dC0+bndvcmtlcnM7ICsr aSkKKwkJeworCQkJcGN4dC0+d29ya2VyW2ldLnNuYXBzaG90X3Jlc3RvcmVkID0gJnNuYXBzaG90 X3NldF9mbGFnX3NwYWNlW2ldOworCQkJKnBjeHQtPndvcmtlcltpXS5zbmFwc2hvdF9yZXN0b3Jl ZCA9IGZhbHNlOworCQl9CisJCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZ X1NOQVBTSE9UX1JFU1RPUkVELCBzbmFwc2hvdF9zZXRfZmxhZ19zcGFjZSk7CiAJfQogCiAJLyog VXBkYXRlIG53b3JrZXJzX3RvX2xhdW5jaCwgaW4gY2FzZSB3ZSBjaGFuZ2VkIG53b3JrZXJzIGFi b3ZlLiAqLwpAQCAtNjcwLDYgKzY4OSwxMCBAQCBMYXVuY2hQYXJhbGxlbFdvcmtlcnMoUGFyYWxs ZWxDb250ZXh0ICpwY3h0KQogICogV2FpdCBmb3IgYWxsIHdvcmtlcnMgdG8gYXR0YWNoIHRvIHRo ZWlyIGVycm9yIHF1ZXVlcywgYW5kIHRocm93IGFuIGVycm9yIGlmCiAgKiBhbnkgd29ya2VyIGZh aWxzIHRvIGRvIHRoaXMuCiAgKgorICogd2FpdF9mb3Jfc25hcHNob3Q6IHRyYWNrIHdoZXRoZXIg ZWFjaCBwYXJhbGxlbCB3b3JrZXIgaGFzIHN1Y2Nlc3NmdWxseSByZXN0b3JlZAorICogaXRzIHNu YXBzaG90LiBUaGlzIGlzIG5lZWRlZCB3aGVuIHVzaW5nIHBlcmlvZGljIHNuYXBzaG90IHJlc2V0 cyB0byBlbnN1cmUgYWxsCisgKiB3b3JrZXJzIGhhdmUgYSB2YWxpZCBpbml0aWFsIHNuYXBzaG90 IGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggdGhlIHNjYW4uCisgKgogICogQ2FsbGVycyBjYW4gYXNz dW1lIHRoYXQgaWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHN1Y2Nlc3NmdWxseSwgdGhlbiB0aGUK ICAqIG51bWJlciBvZiB3b3JrZXJzIGdpdmVuIGJ5IHBjeHQtPm53b3JrZXJzX2xhdW5jaGVkIGhh dmUgaW5pdGlhbGl6ZWQgYW5kCiAgKiBhdHRhY2hlZCB0byB0aGVpciBlcnJvciBxdWV1ZXMuICBX aGV0aGVyIG9yIG5vdCB0aGVzZSB3b3JrZXJzIGFyZSBndWFyYW50ZWVkCkBAIC02OTksNyArNzIy LDcgQEAgTGF1bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKICAqIGNh bGwgdGhpcyBmdW5jdGlvbiBhdCBhbGwuCiAgKi8KIHZvaWQKLVdhaXRGb3JQYXJhbGxlbFdvcmtl cnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQpCitXYWl0Rm9yUGFyYWxsZWxXb3JrZXJz VG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0LCBib29sIHdhaXRfZm9yX3NuYXBzaG90KQog ewogCWludAkJCWk7CiAKQEAgLTc0Myw5ICs3NjYsMjQgQEAgV2FpdEZvclBhcmFsbGVsV29ya2Vy c1RvQXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCQltcSA9IHNobV9tcV9nZXRfcXVl dWUocGN4dC0+d29ya2VyW2ldLmVycm9yX21xaCk7CiAJCQkJaWYgKHNobV9tcV9nZXRfc2VuZGVy KG1xKSAhPSBOVUxMKQogCQkJCXsKLQkJCQkJLyogWWVzLCBzbyBpdCBpcyBrbm93biB0byBiZSBh dHRhY2hlZC4gKi8KLQkJCQkJcGN4dC0+a25vd25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7 Ci0JCQkJCSsrcGN4dC0+bmtub3duX2F0dGFjaGVkX3dvcmtlcnM7CisJCQkJCXBnX3JlYWRfYmFy cmllcigpOworCQkJCQlpZiAoIXdhaXRfZm9yX3NuYXBzaG90IHx8ICpwY3h0LT53b3JrZXJbaV0u c25hcHNob3RfcmVzdG9yZWQpCisJCQkJCXsKKwkJCQkJCS8qIFdvcmtlciBpcyBrbm93biB0byBi ZSBhdHRhY2hlZC4gKi8KKwkJCQkJCXBjeHQtPmtub3duX2F0dGFjaGVkX3dvcmtlcnNbaV0gPSB0 cnVlOworCQkJCQkJKytwY3h0LT5ua25vd25fYXR0YWNoZWRfd29ya2VyczsKKwkJCQkJfQorCQkJ CQllbHNlCisJCQkJCXsKKwkJCQkJCS8qCisJCQkJCQkgKiBXb3JrZXIgYXR0YWNoZWQgYnV0IGhh c24ndCByZXN0b3JlZCBpdHMgc25hcHNob3QgeWV0LgorCQkJCQkJICovCisJCQkJCQlyYyA9IFdh aXRMYXRjaChNeUxhdGNoLAorCQkJCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8 IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCQkgICAxMCwgV0FJVF9FVkVOVF9CR1dPUktF Ul9TVEFSVFVQKTsKKwkJCQkJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJCQkJCQlSZXNldExh dGNoKE15TGF0Y2gpOworCQkJCQl9CiAJCQkJfQogCQkJfQogCQkJZWxzZSBpZiAoc3RhdHVzID09 IEJHV0hfU1RPUFBFRCkKQEAgLTc4OCw2ICs4MjYsMTYgQEAgV2FpdEZvclBhcmFsbGVsV29ya2Vy c1RvQXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCWJyZWFrOwogCQl9CiAJfQorCisJ LyogU2V0IHNuYXBzaG90IHJlc3RvcmVkIGZsYWcgdG8gZmFsc2UuICovCisJaWYgKHBjeHQtPm53 b3JrZXJzID4gMCkKKwl7CisJCWJvb2wJICAgKnNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlOworCQlz bmFwc2hvdF9yZXN0b3JlZF9zcGFjZSA9CisJCQkJc2htX3RvY19sb29rdXAocGN4dC0+dG9jLCBQ QVJBTExFTF9LRVlfU05BUFNIT1RfUkVTVE9SRUQsIGZhbHNlKTsKKwkJZm9yIChpID0gMDsgaSA8 IHBjeHQtPm53b3JrZXJzOyArK2kpCisJCQlzbmFwc2hvdF9yZXN0b3JlZF9zcGFjZVtpXSA9IGZh bHNlOworCX0KIH0KIAogLyoKQEAgLTEzMDQsNiArMTM1Miw3IEBAIFBhcmFsbGVsV29ya2VyTWFp bihEYXR1bSBtYWluX2FyZykKIAlzaG1fdG9jICAgICp0b2M7CiAJRml4ZWRQYXJhbGxlbFN0YXRl ICpmcHM7CiAJY2hhcgkgICAqZXJyb3JfcXVldWVfc3BhY2U7CisJYm9vbAkgICAqc25hcHNob3Rf cmVzdG9yZWRfc3BhY2U7CiAJc2htX21xCSAgICptcTsKIAlzaG1fbXFfaGFuZGxlICptcWg7CiAJ Y2hhcgkgICAqbGlicmFyeXNwYWNlOwpAQCAtMTUwNyw2ICsxNTU2LDExIEBAIFBhcmFsbGVsV29y a2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJCQkJCQkgICBmcHMtPnBhcmFsbGVsX2xlYWRlcl9w Z3Byb2MpOwogCVB1c2hBY3RpdmVTbmFwc2hvdChhc25hcHNob3QpOwogCisJLyogU25hcHNob3Qg aXMgcmVzdG9yZWQsIHNldCBmbGFnIHRvIG1ha2UgbGVhZGVyIGtub3cgYWJvdXQgaXQuICovCisJ c25hcHNob3RfcmVzdG9yZWRfc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tF WV9TTkFQU0hPVF9SRVNUT1JFRCwgZmFsc2UpOworCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlW1Bh cmFsbGVsV29ya2VyTnVtYmVyXSA9IHRydWU7CisJcGdfd3JpdGVfYmFycmllcigpOworCiAJLyoK IAkgKiBXZSd2ZSBjaGFuZ2VkIHdoaWNoIHR1cGxlcyB3ZSBjYW4gc2VlLCBhbmQgbXVzdCB0aGVy ZWZvcmUgaW52YWxpZGF0ZQogCSAqIHN5c3RlbSBjYWNoZXMuCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXgg ZjRkYzQ1NjNjOTEuLjdjN2E0MWZkMDllIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0xNTM0LDcgKzE1 MzQsNyBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCWlu ZGV4X2J1aWxkKGhlYXBSZWwsIGluZGV4UmVsYXRpb24sIGluZGV4SW5mbywgZmFsc2UsIHRydWUp OwogCiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwotCUFzc2VydCgoaW5kZXhJbmZvLT5p aV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUpIHx8ICFUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoaW5kZXhJbmZvLT5paV9VbmlxdWUg fHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogUm9sbCBiYWNr IGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8KIAlBdEVPWGFj dF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5j CmluZGV4IDhmMjE5ZjYwYTkzLi4wNmE5MTY5MjA3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vx c2Nhbi5jCkBAIC0zNzIsNyArMzcyLDggQEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplRFNNKFNlcVNj YW5TdGF0ZSAqbm9kZSwKIAlwc2NhbiA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBub2Rl LT5wc2Nhbl9sZW4pOwogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKG5vZGUtPnNzLnNz X2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkJICBwc2NhbiwKLQkJCQkJCQkJICBlc3RhdGUtPmVz X3NuYXBzaG90KTsKKwkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJCQkgIGZh bHNlKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5f bm9kZV9pZCwgcHNjYW4pOwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9CiAJCXRhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwppbmRleCA2MTc3MTNiZGUwNC4u ZjFiZjczN2YzOTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5n ZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKQEAg LTQ1Niw3ICs0NTYsOCBAQCBFeGVjVGlkUmFuZ2VTY2FuSW5pdGlhbGl6ZURTTShUaWRSYW5nZVNj YW5TdGF0ZSAqbm9kZSwgUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCXBzY2FuID0gc2htX3RvY19h bGxvY2F0ZShwY3h0LT50b2MsIG5vZGUtPnRyc3NfcHNjYW5sZW4pOwogCXRhYmxlX3BhcmFsbGVs c2Nhbl9pbml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkJICBw c2NhbiwKLQkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKKwkJCQkJCQkJICBlc3RhdGUt PmVzX3NuYXBzaG90LAorCQkJCQkJCQkgIGZhbHNlKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50 b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgcHNjYW4pOwogCW5vZGUtPnNzLnNz X2N1cnJlbnRTY2FuRGVzYyA9CiAJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF90aWRyYW5nZShu b2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy90aW1lL3NuYXBtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCmluZGV4 IDJlNjE5N2Y1ZjM1Li5kZjkxMTY1MzJjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv dGltZS9zbmFwbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKQEAg LTM1MywxNCArMzUzLDYgQEAgR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCh2b2lkKQogU25hcHNob3QK IEdldExhdGVzdFNuYXBzaG90KHZvaWQpCiB7Ci0JLyoKLQkgKiBXZSBtaWdodCBiZSBhYmxlIHRv IHJlbGF4IHRoaXMsIGJ1dCBub3RoaW5nIHRoYXQgY291bGQgb3RoZXJ3aXNlIHdvcmsKLQkgKiBu ZWVkcyBpdC4KLQkgKi8KLQlpZiAoSXNJblBhcmFsbGVsTW9kZSgpKQotCQllbG9nKEVSUk9SLAot CQkJICJjYW5ub3QgdXBkYXRlIFNlY29uZGFyeVNuYXBzaG90IGR1cmluZyBhIHBhcmFsbGVsIG9w ZXJhdGlvbiIpOwotCiAJLyoKIAkgKiBTbyBmYXIgdGhlcmUgYXJlIG5vIGNhc2VzIHJlcXVpcmlu ZyBzdXBwb3J0IGZvciBHZXRMYXRlc3RTbmFwc2hvdCgpCiAJICogZHVyaW5nIGxvZ2ljYWwgZGVj b2RpbmcsIGJ1dCBpdCB3b3VsZG4ndCBiZSBoYXJkIHRvIGFkZCBpZiByZXF1aXJlZC4KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3BhcmFsbGVsLmgKaW5kZXggNjBmODU3Njc1ZTAuLjlhM2UxNGUwYzBlIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFy YWxsZWwuaApAQCAtMjgsNiArMjgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFdvcmtlcklu Zm8KIHsKIAlCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpiZ3doYW5kbGU7CiAJc2htX21xX2hhbmRs ZSAqZXJyb3JfbXFoOworCWJvb2wJCSAgKnNuYXBzaG90X3Jlc3RvcmVkOwogfSBQYXJhbGxlbFdv cmtlckluZm87CiAKIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsQ29udGV4dApAQCAtNjcsNyArNjgs NyBAQCBleHRlcm4gdm9pZCBJbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpw Y3h0KTsKIGV4dGVybiB2b2lkIFJlaW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4 dCAqcGN4dCk7CiBleHRlcm4gdm9pZCBSZWluaXRpYWxpemVQYXJhbGxlbFdvcmtlcnMoUGFyYWxs ZWxDb250ZXh0ICpwY3h0LCBpbnQgbndvcmtlcnNfdG9fbGF1bmNoKTsKIGV4dGVybiB2b2lkIExh dW5jaFBhcmFsbGVsV29ya2VycyhQYXJhbGxlbENvbnRleHQgKnBjeHQpOwotZXh0ZXJuIHZvaWQg V2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7Citl eHRlcm4gdm9pZCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0 ICpwY3h0LCBib29sIHdhaXRfZm9yX3NuYXBzaG90KTsKIGV4dGVybiB2b2lkIFdhaXRGb3JQYXJh bGxlbFdvcmtlcnNUb0ZpbmlzaChQYXJhbGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIHZvaWQg RGVzdHJveVBhcmFsbGVsQ29udGV4dChQYXJhbGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIGJv b2wgUGFyYWxsZWxDb250ZXh0QWN0aXZlKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL3JlbHNjYW4uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKaW5kZXggY2Uz NDBjMDc2ZjguLmFjZmEwNmFlZDc4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVs c2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKQEAgLTgxLDYgKzgxLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxUYWJsZVNjYW5EZXNjRGF0YQogCVJlbEZpbGVMb2Nh dG9yIHBoc19sb2NhdG9yOyAvKiBwaHlzaWNhbCByZWxhdGlvbiB0byBzY2FuICovCiAJYm9vbAkJ cGhzX3N5bmNzY2FuOwkvKiByZXBvcnQgbG9jYXRpb24gdG8gc3luY3NjYW4gbG9naWM/ICovCiAJ Ym9vbAkJcGhzX3NuYXBzaG90X2FueTsJLyogU25hcHNob3RBbnksIG5vdCBwaHNfc25hcHNob3Rf ZGF0YT8gKi8KKwlib29sCQlwaHNfcmVzZXRfc25hcHNob3Q7IC8qIHVzZSBTT19SRVNFVF9TTkFQ U0hPVD8gKi8KIAlTaXplCQlwaHNfc25hcHNob3Rfb2ZmOwkvKiBkYXRhIGZvciBzbmFwc2hvdCAq LwogfSBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhOwogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxU YWJsZVNjYW5EZXNjRGF0YSAqUGFyYWxsZWxUYWJsZVNjYW5EZXNjOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgK aW5kZXggZDA3MDk3ODJkZGUuLjg0YjA2ZmZhNDJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTEx NTEsNyArMTE1MSw4IEBAIGV4dGVybiBTaXplIHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShS ZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KTsKICAqLwogZXh0ZXJuIHZvaWQgdGFibGVf cGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCSAgUGFyYWxs ZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAotCQkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QpOwor CQkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCisJCQkJCQkJCQkJICBib29sIHJlc2V0X3Nu YXBzaG90KTsKIAogLyoKICAqIEJlZ2luIGEgcGFyYWxsZWwgc2Nhbi4gYHBzY2FuYCBuZWVkcyB0 byBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgd2l0aApAQCAtMTc4Myw3ICsxNzg0LDcgQEAgdGFibGVf c2Nhbl9hbmFseXplX25leHRfdHVwbGUoVGFibGVTY2FuRGVzYyBzY2FuLAogICogVGhpcyBvbmx5 IHJlYWxseSBtYWtlcyBzZW5zZSBmb3IgaGVhcCBBTSwgaXQgbWlnaHQgbmVlZCB0byBiZSBnZW5l cmFsaXplZAogICogZm9yIG90aGVyIEFNcyBsYXRlci4KICAqCi0gKiBJbiBjYXNlIG9mIG5vbi11 bmlxdWUgaW5kZXggYW5kIG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGJ1aWxkLAorICogSW4gY2Fz ZSBvZiBub24tdW5pcXVlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsCiAgKiBTT19SRVNFVF9TTkFQ U0hPVCBpcyBhcHBsaWVkIGZvciB0aGUgc2Nhbi4gVGhhdCBsZWFkcyB0byBjaGFuZ2luZyBzbmFw c2hvdHMKICAqIG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1pbiBob3Jpem9uIHByb3BhZ2F0ZS4KICAq LwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVk L2NpY19yZXNldF9zbmFwc2hvdHMub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CmluZGV4IGI0YWQ5MGViMzM5Li5m MmYyMDI1YjJjOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRz L2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMv aW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dApAQCAtMTcs NiArMTcsMTIgQEAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9iZWdpbnNj YW5fc3RyYXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGljZScKICAKICgxIHJvdykKIAorU0VMRUNU IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZScs ICdub3RpY2UnKTsKKyBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKwogQ1JFQVRFIFNDSEVNQSBjaWNfcmVzZXRfc25hcDsKIENS RUFURSBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwoaSBpbnQgcHJpbWFyeSBrZXksIGogaW50KTsK IElOU0VSVCBJTlRPIGNpY19yZXNldF9zbmFwLnRibCBTRUxFQ1QgaSwgaSAqIEkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMjAwKSBzKGkpOwpAQCAtNzIsMzAgKzc4LDQ1IEBAIE5PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNo b3RfZWZmZWN0aXZlCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CiAtLSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25h cC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOworLS0gRGV0YWNoIHRvIGtlZXAgdGVzdCBz dGFibGUsIHNpbmNlIHBhcmFsbGVsIHdvcmtlciBtYXkgY29tcGxldGUgc2NhbiBiZWZvcmUgbGVh ZGVyCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFw c2hvdF9lZmZlY3RpdmUnKTsKKyBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJS RU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKIFJFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibChpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwg MikgPSAwOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRh YmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4 IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNh dGVfc3RhYmxlKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKLU5PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3Rf ZWZmZWN0aXZlCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwotTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIERS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVz ZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7CitOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUK IFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5f aW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owog Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkgREVT QyBOVUxMUyBMQVNUKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsKK05PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5p dGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFs bGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CiBCRUdJTiBUUkFOU0FDVElPTjsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4 IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv aW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwgYi9zcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCmluZGV4 IDdmN2RmZmE1YmU0Li4zNzgxOWJmMGZiNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCkBA IC0zLDcgKzMsNyBAQCBDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7CiBTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0 dGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScsICdub3RpY2UnKTsKIFNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0 X3NuYXBzaG90cycsICdub3RpY2UnKTsKLQorU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNo KCd0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZScsICdub3RpY2UnKTsKIAogQ1JFQVRFIFND SEVNQSBjaWNfcmVzZXRfc25hcDsKIENSRUFURSBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwoaSBp bnQgcHJpbWFyeSBrZXksIGogaW50KTsKQEAgLTUzLDYgKzUzLDkgQEAgRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogLS0gVGhlIHNhbWUgaW4gcGFyYWxsZWwgbW9k ZQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0y KTsKIAorLS0gRGV0YWNoIHRvIGtlZXAgdGVzdCBzdGFibGUsIHNpbmNlIHBhcmFsbGVsIHdvcmtl ciBtYXkgY29tcGxldGUgc2NhbiBiZWZvcmUgbGVhZGVyCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19kZXRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnKTsKKwogQ1JFQVRF IFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsK IFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIERST1AgSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKLS0gCjIuNDMuMAoK --000000000000dbacbc064d91788d--