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 1vynDk-000QVr-35 for pgsql-hackers@arkaria.postgresql.org; Sat, 07 Mar 2026 08:41:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vynDj-008EmS-02 for pgsql-hackers@arkaria.postgresql.org; Sat, 07 Mar 2026 08:41:11 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vynDi-008EmK-1Y for pgsql-hackers@lists.postgresql.org; Sat, 07 Mar 2026 08:41:11 +0000 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vynDf-00000001Jzt-0iE8 for pgsql-hackers@lists.postgresql.org; Sat, 07 Mar 2026 08:41:10 +0000 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-4852e09e23dso3424675e9.0 for ; Sat, 07 Mar 2026 00:41:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1772872864; x=1773477664; darn=lists.postgresql.org; h=in-reply-to:references:subject:cc:from:to:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=FHj76mE2APqcBAwXLrA9NfGgC1ucR1ds6z5ygoiSeD0=; b=EoWApFld9/jukPFz1qg/Dgj3OSgiZ8WkjCVDJfYuJ56xDtlwxobQpBCO4LNQQuvWpP JuzZZofwHI4cJYXipEjgLxW9vHLBE5yRdJgpIl24bZfKl0SQpa7FGaPR1cL1PT0jyjD0 oaYlMJcIr39TAzVrFdXbBlsA15iMaoVLh42VeL5ix0GOPNN/nWubOgkUR3yQYpdAPTnF T3sb26iiuFKKAs6KbqvAH4irEeRL4NPOvg8hYIQCPlPiIYMxXqu7bcJ3mXh9aqDlk+K1 wfifC5RHHtTVsM3zKkj2NTyKKGZw3+JQY4+i5pyYVjKpLycOpewEEoHbCT80yDLgFTM1 mbVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772872864; x=1773477664; h=in-reply-to:references:subject:cc:from:to:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=FHj76mE2APqcBAwXLrA9NfGgC1ucR1ds6z5ygoiSeD0=; b=wgZPBFgVH0MUxpt/17h29CSNhdTP/LWOkgFEI0d4dafR21jpfpcpmbOXVQ+9CajC+J oGGsIYBQ09WqPSpKDJfrVgtBoCMSNzpZo6414veQia1ShUGFPc4s3QJacDSZBRjVaz3d wAPs6occ6ocjpjz+tUIBKAEd5sv5RafpfCf9XLX40XXV0qaF2f4Sch1fKKJsiLbZt3cC in7nMt4s+Sib87RyYLW0RYgUCMtiLDwXFNYzWDrTjUGaUB/ByVHtiJsXmXhAEt5sGZLY Kv4Np6IpGeN6drlo0lJqticNfEqXZEu3LtZpB9qK07XCJBL0NuttcE8iuXqNWMJ2OtRS etGQ== X-Gm-Message-State: AOJu0YzkUVDMaseXTvVmHtJB6mIuCBcRvyzXw1jCfLaV8DPEP1/FJ5Iz cMbqyqS4TAXaEca3j6yvpSVAgav8RR4376QblszovXhPZPhv9ojWcwun3vKZlj0zl0Y= X-Gm-Gg: ATEYQzy3Kx+dy8qHXZEDDL/qgIpejLss/nQSsvH5TP8hyPOgxsRJwSXR5GIlmVCyc0l IRwySjjZv8FiJbuwcpxsikQdK3v8At/qlOWwA6Fm3/24RCDx93VFsJEo3G/VK3kt1JneSYMEUeH r9Rj3NLZEKbZTqBdyEoluYsr+nmf0KztsKA7JHkw+0JqwR1vFp9X8cW0tAkCBbOYMkeDhvNtzEg r+brprbI/a1hJNu4D0pqPL/HP2vSupjrEPofuqaSBqrPOPaUNpBo0odcBf6YVUm8nUzbIJb5oHL 2Z4QP20EUHFdZY56kJE2E11HUeXtDeEFVpbDRfdYMGW6lOlh9MSrlLiYa39GiCSRcTFjKmMvK4c D5HCZXnLHhHSTAQH0pra3msOZAnv82ye/p0X+so/hOKw2YPFwYo0D7wtiqElEyq01N0VY/MyD7J M5iSoCeISKPE2H3yzS2Bc6WlZrO3nZMRbvK9hDhCpEs1/nqJFgDtEDLMvWpDk= X-Received: by 2002:a05:600c:4591:b0:483:6d4a:7e6d with SMTP id 5b1f17b1804b1-48526978644mr73241995e9.30.1772872864137; Sat, 07 Mar 2026 00:41:04 -0800 (PST) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48527686bcesm153505075e9.7.2026.03.07.00.41.02 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 07 Mar 2026 00:41:02 -0800 (PST) Content-Type: multipart/mixed; boundary=d9d7b9a076c0bfd4fb96e32b2c58c74be5f2a3fad308416dcd5a3e47825b Mime-Version: 1.0 Date: Sat, 07 Mar 2026 09:41:02 +0100 Message-Id: To: "Heikki Linnakangas" From: "Jelte Fennema-Nio" Cc: "PostgreSQL Hackers" , "Alvaro Herrera" , "Jacob Champion" Subject: Re: Don't use the deprecated and insecure PQcancel in our frontend tools anymore X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: <88dfe280-ba29-4943-95b8-63abc9f3f771@iki.fi> <9d7ba3ac-d660-483e-8f68-9096a2464e90@iki.fi> In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --d9d7b9a076c0bfd4fb96e32b2c58c74be5f2a3fad308416dcd5a3e47825b Content-Type: multipart/alternative; boundary=130020eebc1c2c713fabbeecedbe39128f6f10e93d4c14ba9553e412dc4b --130020eebc1c2c713fabbeecedbe39128f6f10e93d4c14ba9553e412dc4b Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Sat Mar 7, 2026 at 1:01 AM CET, Jelte Fennema-Nio wrote: > I took a look at this, and attached a fixup patch that does this.=20 Now with the actual attachements... --130020eebc1c2c713fabbeecedbe39128f6f10e93d4c14ba9553e412dc4b-- --d9d7b9a076c0bfd4fb96e32b2c58c74be5f2a3fad308416dcd5a3e47825b Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=nocfbot.v0-0001-POC-Use-non-blocking-apis-for-frontend-tools.patch Content-Type: text/x-patch; charset=utf-8; name=nocfbot.v0-0001-POC-Use-non-blocking-apis-for-frontend-tools.patch RnJvbSAwZTM3ZjZhY2NhODY5ZWE0NzFhODQwZjk1MTFhZGYxZGU4NTZiNWQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTYXQsIDEzIERlYyAyMDI1IDEzOjA1OjUwICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MF0gUE9DOiBVc2Ugbm9uLWJsb2NraW5nIGFwaXMgZm9yIGZyb250ZW5kIHRvb2xzCgpQT0MgYnkg Q2xhdWRlIENvZGUsIHRvIHNlZSB3aGF0IHdvdWxkIGJlIG5lZWRlZCB0byBjaGFuZ2UgYWxsCmZl X3V0aWxzL2NhbmNlbC5jIHVzZXJzIHRvIHVzZSBub24tYmxvY2tpbmcgQVBJcy4gVGhpcyBjb2Rl IGlzIGFuCmV4dHJlbWVseSByb3VnaCBkcmFmdCwgb25seSBtZWFudCBhcyBhIHdheSB0byBnYXVn ZSBmZWFzaWJpbGl0eSBvZiB0aGlzCmFwcHJvYWNoLgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2Jl bmNoLmMgICAgIHwgIDM4ICstCiBzcmMvYmluL3BzcWwvY29tbWFuZC5jICAgICAgICB8ICAgNSAr LQogc3JjL2Jpbi9wc3FsL2NvbW1vbi5jICAgICAgICAgfCAgNDcgKy0KIHNyYy9iaW4vcHNxbC9j b3B5LmMgICAgICAgICAgIHwgIDU0ICstCiBzcmMvYmluL3BzcWwvbGFyZ2Vfb2JqLmMgICAgICB8 ICAxMiArLQogc3JjL2ZlX3V0aWxzL01ha2VmaWxlICAgICAgICAgfCAgIDIgKy0KIHNyYy9mZV91 dGlscy9jYW5jZWwuYyAgICAgICAgIHwgOTE0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0KIHNyYy9mZV91dGlscy9wYXJhbGxlbF9zbG90LmMgIHwgIDQ1ICstCiBzcmMvZmVfdXRp bHMvcXVlcnlfdXRpbHMuYyAgICB8ICAgOCArLQogc3JjL2luY2x1ZGUvZmVfdXRpbHMvY2FuY2Vs LmggfCAgMzQgKy0KIDEwIGZpbGVzIGNoYW5nZWQsIDk1MyBpbnNlcnRpb25zKCspLCAyMDYgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggMWRhZTkxOGNjMDkuLjhlYmVmY2VlZWJmIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9w Z2JlbmNoLmMKQEAgLTg2Nyw3ICs4NjcsNyBAQCBnZXRfdGFibGVfcmVsa2luZChQR2Nvbm4gKmNv biwgY29uc3QgY2hhciAqdGFibGUpCiAJY29uc3QgY2hhciAqc3FsID0KIAkJIlNFTEVDVCByZWxr aW5kIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBXSEVSRSBvaWQ9JDE6OnBnX2NhdGFsb2cucmVn Y2xhc3MiOwogCi0JcmVzID0gUFFleGVjUGFyYW1zKGNvbiwgc3FsLCAxLCBOVUxMLCBwYXJhbXMs IE5VTEwsIE5VTEwsIDApOworCXJlcyA9IGNhbmNlbGxhYmxlX2V4ZWNfcGFyYW1zKGNvbiwgc3Fs LCAxLCBOVUxMLCBwYXJhbXMsIE5VTEwsIE5VTEwsIDApOwogCWlmIChQUXJlc3VsdFN0YXR1cyhy ZXMpICE9IFBHUkVTX1RVUExFU19PSykKIAl7CiAJCXBnX2xvZ19lcnJvcigicXVlcnkgZmFpbGVk OiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbikpOwpAQCAtMTQ5MCwxMyArMTQ5MCwxMyBAQCBhY2N1 bVN0YXRzKFN0YXRzRGF0YSAqc3RhdHMsIGJvb2wgc2tpcHBlZCwgZG91YmxlIGxhdCwgZG91Ymxl IGxhZywKIAl9CiB9CiAKLS8qIGNhbGwgUFFleGVjKCkgYW5kIGV4aXQoKSBvbiBmYWlsdXJlICov CisvKiBjYWxsIGNhbmNlbGxhYmxlX2V4ZWMoKSBhbmQgZXhpdCgpIG9uIGZhaWx1cmUgKi8KIHN0 YXRpYyB2b2lkCiBleGVjdXRlU3RhdGVtZW50KFBHY29ubiAqY29uLCBjb25zdCBjaGFyICpzcWwp CiB7CiAJUEdyZXN1bHQgICAqcmVzOwogCi0JcmVzID0gUFFleGVjKGNvbiwgc3FsKTsKKwlyZXMg PSBjYW5jZWxsYWJsZV9leGVjKGNvbiwgc3FsKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAh PSBQR1JFU19DT01NQU5EX09LKQogCXsKIAkJcGdfbG9nX2Vycm9yKCJxdWVyeSBmYWlsZWQ6ICVz IiwgUFFlcnJvck1lc3NhZ2UoY29uKSk7CkBAIC0xNTA2LDEzICsxNTA2LDEzIEBAIGV4ZWN1dGVT dGF0ZW1lbnQoUEdjb25uICpjb24sIGNvbnN0IGNoYXIgKnNxbCkKIAlQUWNsZWFyKHJlcyk7CiB9 CiAKLS8qIGNhbGwgUFFleGVjKCkgYW5kIGNvbXBsYWluLCBidXQgd2l0aG91dCBleGl0aW5nLCBv biBmYWlsdXJlICovCisvKiBjYWxsIGNhbmNlbGxhYmxlX2V4ZWMoKSBhbmQgY29tcGxhaW4sIGJ1 dCB3aXRob3V0IGV4aXRpbmcsIG9uIGZhaWx1cmUgKi8KIHN0YXRpYyB2b2lkCiB0cnlFeGVjdXRl U3RhdGVtZW50KFBHY29ubiAqY29uLCBjb25zdCBjaGFyICpzcWwpCiB7CiAJUEdyZXN1bHQgICAq cmVzOwogCi0JcmVzID0gUFFleGVjKGNvbiwgc3FsKTsKKwlyZXMgPSBjYW5jZWxsYWJsZV9leGVj KGNvbiwgc3FsKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09L KQogCXsKIAkJcGdfbG9nX2Vycm9yKCIlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbikpOwpAQCAtNTA1 OSw3ICs1MDU5LDcgQEAgaW5pdFBvcHVsYXRlVGFibGUoUEdjb25uICpjb24sIGNvbnN0IGNoYXIg KnRhYmxlLCBpbnQ2NCBiYXNlLAogCWVsc2UgaWYgKG4gPT0gLTEpCiAJCXBnX2ZhdGFsKCJpbnZh bGlkIGZvcm1hdCBzdHJpbmciKTsKIAotCXJlcyA9IFBRZXhlYyhjb24sIGNvcHlfc3RhdGVtZW50 KTsKKwlyZXMgPSBjYW5jZWxsYWJsZV9leGVjKGNvbiwgY29weV9zdGF0ZW1lbnQpOwogCiAJaWYg KFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09QWV9JTikKIAkJcGdfZmF0YWwoInVuZXhw ZWN0ZWQgY29weSBpbiByZXN1bHQ6ICVzIiwgUFFlcnJvck1lc3NhZ2UoY29uKSk7CkBAIC01MzM4 LDcgKzUzMzgsNiBAQCBydW5Jbml0U3RlcHMoY29uc3QgY2hhciAqaW5pdGlhbGl6ZV9zdGVwcykK IAkJcGdfZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgY29ubmVjdGlvbiBmb3IgaW5pdGlhbGl6YXRp b24iKTsKIAogCXNldHVwX2NhbmNlbF9oYW5kbGVyKE5VTEwpOwotCVNldENhbmNlbENvbm4oY29u KTsKIAogCWZvciAoc3RlcCA9IGluaXRpYWxpemVfc3RlcHM7ICpzdGVwICE9ICdcMCc7IHN0ZXAr KykKIAl7CkBAIC01Mzk5LDcgKzUzOTgsNiBAQCBydW5Jbml0U3RlcHMoY29uc3QgY2hhciAqaW5p dGlhbGl6ZV9zdGVwcykKIAl9CiAKIAlmcHJpbnRmKHN0ZGVyciwgImRvbmUgaW4gJS4yZiBzICgl cykuXG4iLCBydW5fdGltZSwgc3RhdHMuZGF0YSk7Ci0JUmVzZXRDYW5jZWxDb25uKCk7CiAJUFFm aW5pc2goY29uKTsKIAl0ZXJtUFFFeHBCdWZmZXIoJnN0YXRzKTsKIH0KQEAgLTU0MTcsNyArNTQx NSw3IEBAIEdldFRhYmxlSW5mbyhQR2Nvbm4gKmNvbiwgYm9vbCBzY2FsZV9naXZlbikKIAkgKiBn ZXQgdGhlIHNjYWxpbmcgZmFjdG9yIHRoYXQgc2hvdWxkIGJlIHNhbWUgYXMgY291bnQoKikgZnJv bQogCSAqIHBnYmVuY2hfYnJhbmNoZXMgaWYgdGhpcyBpcyBub3QgYSBjdXN0b20gcXVlcnkKIAkg Ki8KLQlyZXMgPSBQUWV4ZWMoY29uLCAic2VsZWN0IGNvdW50KCopIGZyb20gcGdiZW5jaF9icmFu Y2hlcyIpOworCXJlcyA9IGNhbmNlbGxhYmxlX2V4ZWMoY29uLCAic2VsZWN0IGNvdW50KCopIGZy b20gcGdiZW5jaF9icmFuY2hlcyIpOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVT X1RVUExFU19PSykKIAl7CiAJCWNoYXIJICAgKnNxbFN0YXRlID0gUFFyZXN1bHRFcnJvckZpZWxk KHJlcywgUEdfRElBR19TUUxTVEFURSk7CkBAIC01NDU2LDE3ICs1NDU0LDE3IEBAIEdldFRhYmxl SW5mbyhQR2Nvbm4gKmNvbiwgYm9vbCBzY2FsZV9naXZlbikKIAkgKiBXZSBhc3N1bWUgbm8gcGFy dGl0aW9uaW5nIG9uIGFueSBmYWlsdXJlLCBzbyBhcyB0byBhdm9pZCBmYWlsaW5nIG9uIGFuCiAJ ICogb2xkIHZlcnNpb24gd2l0aG91dCAicGdfcGFydGl0aW9uZWRfdGFibGUiLgogCSAqLwotCXJl cyA9IFBRZXhlYyhjb24sCi0JCQkJICJzZWxlY3Qgby5uLCBwLnBhcnRzdHJhdCwgcGdfY2F0YWxv Zy5jb3VudChpLmluaHBhcmVudCkgIgotCQkJCSAiZnJvbSBwZ19jYXRhbG9nLnBnX2NsYXNzIGFz IGMgIgotCQkJCSAiam9pbiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBhcyBuIG9uIChuLm9pZCA9 IGMucmVsbmFtZXNwYWNlKSAiCi0JCQkJICJjcm9zcyBqb2luIGxhdGVyYWwgKHNlbGVjdCBwZ19j YXRhbG9nLmFycmF5X3Bvc2l0aW9uKHBnX2NhdGFsb2cuY3VycmVudF9zY2hlbWFzKHRydWUpLCBu Lm5zcG5hbWUpKSBhcyBvKG4pICIKLQkJCQkgImxlZnQgam9pbiBwZ19jYXRhbG9nLnBnX3BhcnRp dGlvbmVkX3RhYmxlIGFzIHAgb24gKHAucGFydHJlbGlkID0gYy5vaWQpICIKLQkJCQkgImxlZnQg am9pbiBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGFzIGkgb24gKGMub2lkID0gaS5pbmhwYXJlbnQp ICIKLQkJCQkgIndoZXJlIGMucmVsbmFtZSA9ICdwZ2JlbmNoX2FjY291bnRzJyBhbmQgby5uIGlz IG5vdCBudWxsICIKLQkJCQkgImdyb3VwIGJ5IDEsIDIgIgotCQkJCSAib3JkZXIgYnkgMSBhc2Mg IgotCQkJCSAibGltaXQgMSIpOworCXJlcyA9IGNhbmNlbGxhYmxlX2V4ZWMoY29uLAorCQkJCQkJ ICAgInNlbGVjdCBvLm4sIHAucGFydHN0cmF0LCBwZ19jYXRhbG9nLmNvdW50KGkuaW5ocGFyZW50 KSAiCisJCQkJCQkgICAiZnJvbSBwZ19jYXRhbG9nLnBnX2NsYXNzIGFzIGMgIgorCQkJCQkJICAg ImpvaW4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgYXMgbiBvbiAobi5vaWQgPSBjLnJlbG5hbWVz cGFjZSkgIgorCQkJCQkJICAgImNyb3NzIGpvaW4gbGF0ZXJhbCAoc2VsZWN0IHBnX2NhdGFsb2cu YXJyYXlfcG9zaXRpb24ocGdfY2F0YWxvZy5jdXJyZW50X3NjaGVtYXModHJ1ZSksIG4ubnNwbmFt ZSkpIGFzIG8obikgIgorCQkJCQkJICAgImxlZnQgam9pbiBwZ19jYXRhbG9nLnBnX3BhcnRpdGlv bmVkX3RhYmxlIGFzIHAgb24gKHAucGFydHJlbGlkID0gYy5vaWQpICIKKwkJCQkJCSAgICJsZWZ0 IGpvaW4gcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBhcyBpIG9uIChjLm9pZCA9IGkuaW5ocGFyZW50 KSAiCisJCQkJCQkgICAid2hlcmUgYy5yZWxuYW1lID0gJ3BnYmVuY2hfYWNjb3VudHMnIGFuZCBv Lm4gaXMgbm90IG51bGwgIgorCQkJCQkJICAgImdyb3VwIGJ5IDEsIDIgIgorCQkJCQkJICAgIm9y ZGVyIGJ5IDEgYXNjICIKKwkJCQkJCSAgICJsaW1pdCAxIik7CiAKIAlpZiAoUFFyZXN1bHRTdGF0 dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3Fs L2NvbW1hbmQuYyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKaW5kZXggZTYzNjVkODIzY2UuLjIz OGQ2MmRjODZjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvY29tbWFuZC5jCisrKyBiL3NyYy9i aW4vcHNxbC9jb21tYW5kLmMKQEAgLTQyOTksNyArNDI5OSw2IEBAIGRvX2Nvbm5lY3QoZW51bSB0 cml2YWx1ZSByZXVzZV9wcmV2aW91c19zcGVjaWZpY2F0aW9uLAogCQkJCSAqLwogCQkJCVBRZmlu aXNoKG9fY29ubik7CiAJCQkJcHNldC5kYiA9IE5VTEw7Ci0JCQkJUmVzZXRDYW5jZWxDb25uKCk7 CiAJCQkJVW5zeW5jVmFyaWFibGVzKCk7CiAJCQl9CiAKQEAgLTYyMjUsNyArNjIyNCw3IEBAIGxv b2t1cF9vYmplY3Rfb2lkKEVkaXRhYmxlT2JqZWN0VHlwZSBvYmpfdHlwZSwgY29uc3QgY2hhciAq ZGVzYywKIAkJZGVzdHJveVBRRXhwQnVmZmVyKHF1ZXJ5KTsKIAkJcmV0dXJuIGZhbHNlOwogCX0K LQlyZXMgPSBQUWV4ZWMocHNldC5kYiwgcXVlcnktPmRhdGEpOworCXJlcyA9IGNhbmNlbGxhYmxl X2V4ZWMocHNldC5kYiwgcXVlcnktPmRhdGEpOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpID09 IFBHUkVTX1RVUExFU19PSyAmJiBQUW50dXBsZXMocmVzKSA9PSAxKQogCQkqb2JqX29pZCA9IGF0 b29pZChQUWdldHZhbHVlKHJlcywgMCwgMCkpOwogCWVsc2UKQEAgLTYzMDcsNyArNjMwNiw3IEBA IGdldF9jcmVhdGVfb2JqZWN0X2NtZChFZGl0YWJsZU9iamVjdFR5cGUgb2JqX3R5cGUsIE9pZCBv aWQsCiAJCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7CiAJCXJldHVybiBmYWxzZTsKIAl9Ci0J cmVzID0gUFFleGVjKHBzZXQuZGIsIHF1ZXJ5LT5kYXRhKTsKKwlyZXMgPSBjYW5jZWxsYWJsZV9l eGVjKHBzZXQuZGIsIHF1ZXJ5LT5kYXRhKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSA9PSBQ R1JFU19UVVBMRVNfT0sgJiYgUFFudHVwbGVzKHJlcykgPT0gMSkKIAl7CiAJCXJlc2V0UFFFeHBC dWZmZXIoYnVmKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tb24uYyBiL3NyYy9iaW4v cHNxbC9jb21tb24uYwppbmRleCAyZWFkZDM5MWE5Yy4uMTE5Y2E5OWI0MTggMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcHNxbC9jb21tb24uYworKysgYi9zcmMvYmluL3BzcWwvY29tbW9uLmMKQEAgLTM4 Miw3ICszODIsNiBAQCBDaGVja0Nvbm5lY3Rpb24odm9pZCkKIAkJCQlQUWZpbmlzaChwc2V0LmRl YWRfY29ubik7CiAJCQlwc2V0LmRlYWRfY29ubiA9IHBzZXQuZGI7CiAJCQlwc2V0LmRiID0gTlVM TDsKLQkJCVJlc2V0Q2FuY2VsQ29ubigpOwogCQkJVW5zeW5jVmFyaWFibGVzKCk7CiAJCX0KIAkJ ZWxzZQpAQCAtNTgzLDcgKzU4Miw3IEBAIENsZWFyT3JTYXZlQWxsUmVzdWx0cyh2b2lkKQogewog CVBHcmVzdWx0ICAgKnJlc3VsdDsKIAotCXdoaWxlICgocmVzdWx0ID0gUFFnZXRSZXN1bHQocHNl dC5kYikpICE9IE5VTEwpCisJd2hpbGUgKChyZXN1bHQgPSBjYW5jZWxsYWJsZV9nZXRyZXN1bHQo cHNldC5kYikpICE9IE5VTEwpCiAJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdCk7CiB9CiAKQEAg LTY4MSwxMSArNjgwLDcgQEAgUFNRTGV4ZWMoY29uc3QgY2hhciAqcXVlcnkpCiAJCQlyZXR1cm4g TlVMTDsKIAl9CiAKLQlTZXRDYW5jZWxDb25uKHBzZXQuZGIpOwotCi0JcmVzID0gUFFleGVjKHBz ZXQuZGIsIHF1ZXJ5KTsKLQotCVJlc2V0Q2FuY2VsQ29ubigpOworCXJlcyA9IGNhbmNlbGxhYmxl X2V4ZWMocHNldC5kYiwgcXVlcnkpOwogCiAJaWYgKCFBY2NlcHRSZXN1bHQocmVzLCB0cnVlKSkK IAl7CkBAIC03MTksMTIgKzcxNCw4IEBAIFBTUUxleGVjV2F0Y2goY29uc3QgY2hhciAqcXVlcnks IGNvbnN0IHByaW50UXVlcnlPcHQgKm9wdCwgRklMRSAqcHJpbnRRdWVyeUZvdXQsCiAJCXJldHVy biAwOwogCX0KIAotCVNldENhbmNlbENvbm4ocHNldC5kYik7Ci0KIAlyZXMgPSBFeGVjUXVlcnlB bmRQcm9jZXNzUmVzdWx0cyhxdWVyeSwgJmVsYXBzZWRfbXNlYywgTlVMTCwgdHJ1ZSwgbWluX3Jv d3MsIG9wdCwgcHJpbnRRdWVyeUZvdXQpOwogCi0JUmVzZXRDYW5jZWxDb25uKCk7Ci0KIAkvKiBQ b3NzaWJsZSBtaWNyb3RpbWluZyBvdXRwdXQgKi8KIAlpZiAodGltaW5nKQogCQlQcmludFRpbWlu ZyhlbGFwc2VkX21zZWMpOwpAQCAtOTQzLDggKzkzNCw2IEBAIEhhbmRsZUNvcHlSZXN1bHQoUEdy ZXN1bHQgKipyZXN1bHRwLCBGSUxFICpjb3B5c3RyZWFtKQogCUFzc2VydChyZXN1bHRfc3RhdHVz ID09IFBHUkVTX0NPUFlfT1VUIHx8CiAJCSAgIHJlc3VsdF9zdGF0dXMgPT0gUEdSRVNfQ09QWV9J Tik7CiAKLQlTZXRDYW5jZWxDb25uKHBzZXQuZGIpOwotCiAJaWYgKHJlc3VsdF9zdGF0dXMgPT0g UEdSRVNfQ09QWV9PVVQpCiAJewogCQlzdWNjZXNzID0gaGFuZGxlQ29weU91dChwc2V0LmRiLApA QCAtOTczLDcgKzk2Miw2IEBAIEhhbmRsZUNvcHlSZXN1bHQoUEdyZXN1bHQgKipyZXN1bHRwLCBG SUxFICpjb3B5c3RyZWFtKQogCQkJCQkJCSAgIFBRYmluYXJ5VHVwbGVzKCpyZXN1bHRwKSwKIAkJ CQkJCQkgICAmY29weV9yZXN1bHQpOwogCX0KLQlSZXNldENhbmNlbENvbm4oKTsKIAogCS8qCiAJ ICogUmVwbGFjZSB0aGUgUEdSRVNfQ09QWV9PVVQvSU4gcmVzdWx0IHdpdGggQ09QWSBjb21tYW5k J3MgZXhpdCBzdGF0dXMsCkBAIC0xMTYyLDggKzExNTAsNiBAQCBTZW5kUXVlcnkoY29uc3QgY2hh ciAqcXVlcnkpCiAJCWZmbHVzaChwc2V0LmxvZ2ZpbGUpOwogCX0KIAotCVNldENhbmNlbENvbm4o cHNldC5kYik7Ci0KIAl0cmFuc2FjdGlvbl9zdGF0dXMgPSBQUXRyYW5zYWN0aW9uU3RhdHVzKHBz ZXQuZGIpOwogCiAJaWYgKHRyYW5zYWN0aW9uX3N0YXR1cyA9PSBQUVRSQU5TX0lETEUgJiYKQEAg LTExNzIsNyArMTE1OCw3IEBAIFNlbmRRdWVyeShjb25zdCBjaGFyICpxdWVyeSkKIAl7CiAJCVBH cmVzdWx0ICAgKnJlc3VsdDsKIAotCQlyZXN1bHQgPSBQUWV4ZWMocHNldC5kYiwgIkJFR0lOIik7 CisJCXJlc3VsdCA9IGNhbmNlbGxhYmxlX2V4ZWMocHNldC5kYiwgIkJFR0lOIik7CiAJCWlmIChQ UXJlc3VsdFN0YXR1cyhyZXN1bHQpICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJCXsKIAkJCXBnX2xv Z19pbmZvKCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsKQEAgLTExOTAsNyArMTE3Niw3 IEBAIFNlbmRRdWVyeShjb25zdCBjaGFyICpxdWVyeSkKIAl7CiAJCVBHcmVzdWx0ICAgKnJlc3Vs dDsKIAotCQlyZXN1bHQgPSBQUWV4ZWMocHNldC5kYiwgIlNBVkVQT0lOVCBwZ19wc3FsX3RlbXBv cmFyeV9zYXZlcG9pbnQiKTsKKwkJcmVzdWx0ID0gY2FuY2VsbGFibGVfZXhlYyhwc2V0LmRiLCAi U0FWRVBPSU5UIHBnX3BzcWxfdGVtcG9yYXJ5X3NhdmVwb2ludCIpOwogCQlpZiAoUFFyZXN1bHRT dGF0dXMocmVzdWx0KSAhPSBQR1JFU19DT01NQU5EX09LKQogCQl7CiAJCQlwZ19sb2dfaW5mbygi JXMiLCBQUWVycm9yTWVzc2FnZShwc2V0LmRiKSk7CkBAIC0xMjU4LDcgKzEyNDQsNyBAQCBTZW5k UXVlcnkoY29uc3QgY2hhciAqcXVlcnkpCiAJCXsKIAkJCVBHcmVzdWx0ICAgKnN2cHRyZXM7CiAK LQkJCXN2cHRyZXMgPSBQUWV4ZWMocHNldC5kYiwgc3ZwdGNtZCk7CisJCQlzdnB0cmVzID0gY2Fu Y2VsbGFibGVfZXhlYyhwc2V0LmRiLCBzdnB0Y21kKTsKIAkJCWlmIChQUXJlc3VsdFN0YXR1cyhz dnB0cmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQogCQkJewogCQkJCXBnX2xvZ19pbmZvKCIlcyIs IFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsKQEAgLTEyOTMsOSArMTI3OSw2IEBAIFNlbmRRdWVy eShjb25zdCBjaGFyICpxdWVyeSkKIAogc2VuZHF1ZXJ5X2NsZWFudXA6CiAKLQkvKiBnbG9iYWwg Y2FuY2VsbGF0aW9uIHJlc2V0ICovCi0JUmVzZXRDYW5jZWxDb25uKCk7Ci0KIAkvKiByZXNldCBc ZydzIG91dHB1dC10by1maWxlbmFtZSB0cmlnZ2VyICovCiAJaWYgKHBzZXQuZ2ZuYW1lKQogCXsK QEAgLTEzNzAsNyArMTM1Myw3IEBAIERlc2NyaWJlUXVlcnkoY29uc3QgY2hhciAqcXVlcnksIGRv dWJsZSAqZWxhcHNlZF9tc2VjKQogCSAqIGFueXdheS4gIChTbyB0aGVyZSdzIG5vIGdyZWF0IG5l ZWQgdG8gY2xlYXIgaXQgd2hlbiBkb25lLCB3aGljaCBpcyBhCiAJICogZ29vZCB0aGluZyBiZWNh dXNlIGxpYnBxIHByb3ZpZGVzIG5vIGVhc3kgd2F5IHRvIGRvIHRoYXQuKQogCSAqLwotCXJlc3Vs dCA9IFBRcHJlcGFyZShwc2V0LmRiLCAiIiwgcXVlcnksIDAsIE5VTEwpOworCXJlc3VsdCA9IGNh bmNlbGxhYmxlX3ByZXBhcmUocHNldC5kYiwgIiIsIHF1ZXJ5LCAwLCBOVUxMKTsKIAlpZiAoUFFy ZXN1bHRTdGF0dXMocmVzdWx0KSAhPSBQR1JFU19DT01NQU5EX09LKQogCXsKIAkJcGdfbG9nX2lu Zm8oIiVzIiwgUFFlcnJvck1lc3NhZ2UocHNldC5kYikpOwpAQCAtMTM4MCw3ICsxMzYzLDcgQEAg RGVzY3JpYmVRdWVyeShjb25zdCBjaGFyICpxdWVyeSwgZG91YmxlICplbGFwc2VkX21zZWMpCiAJ fQogCVBRY2xlYXIocmVzdWx0KTsKIAotCXJlc3VsdCA9IFBRZGVzY3JpYmVQcmVwYXJlZChwc2V0 LmRiLCAiIik7CisJcmVzdWx0ID0gY2FuY2VsbGFibGVfZGVzY3JpYmVfcHJlcGFyZWQocHNldC5k YiwgIiIpOwogCU9LID0gQWNjZXB0UmVzdWx0KHJlc3VsdCwgdHJ1ZSkgJiYKIAkJKFBRcmVzdWx0 U3RhdHVzKHJlc3VsdCkgPT0gUEdSRVNfQ09NTUFORF9PSyk7CiAJaWYgKE9LICYmIHJlc3VsdCkK QEAgLTE0MjgsNyArMTQxMSw3IEBAIERlc2NyaWJlUXVlcnkoY29uc3QgY2hhciAqcXVlcnksIGRv dWJsZSAqZWxhcHNlZF9tc2VjKQogCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIikgcyhu YW1lLCB0cCwgdHBtKSIpOwogCQkJUFFjbGVhcihyZXN1bHQpOwogCi0JCQlyZXN1bHQgPSBQUWV4 ZWMocHNldC5kYiwgYnVmLmRhdGEpOworCQkJcmVzdWx0ID0gY2FuY2VsbGFibGVfZXhlYyhwc2V0 LmRiLCBidWYuZGF0YSk7CiAJCQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1bHQsIHRydWUpOwogCiAJ CQlpZiAodGltaW5nKQpAQCAtMTQ2Nyw3ICsxNDUwLDcgQEAgZGlzY2FyZEFib3J0ZWRQaXBlbGlu ZVJlc3VsdHModm9pZCkKIHsKIAlmb3IgKDs7KQogCXsKLQkJUEdyZXN1bHQgICAqcmVzID0gUFFn ZXRSZXN1bHQocHNldC5kYik7CisJCVBHcmVzdWx0ICAgKnJlcyA9IGNhbmNlbGxhYmxlX2dldHJl c3VsdChwc2V0LmRiKTsKIAkJRXhlY1N0YXR1c1R5cGUgcmVzdWx0X3N0YXR1cyA9IFBRcmVzdWx0 U3RhdHVzKHJlcyk7CiAKIAkJaWYgKHJlc3VsdF9zdGF0dXMgPT0gUEdSRVNfUElQRUxJTkVfU1lO QykKQEAgLTE0OTEsNyArMTQ3NCw3IEBAIGRpc2NhcmRBYm9ydGVkUGlwZWxpbmVSZXN1bHRzKHZv aWQpCiAJCQkgKiBGZXRjaCByZXN1bHQgdG8gY29uc3VtZSB0aGUgZW5kIG9mIHRoZSBjdXJyZW50 IHF1ZXJ5IGJlaW5nCiAJCQkgKiBwcm9jZXNzZWQuCiAJCQkgKi8KLQkJCWZhdGFsX3JlcyA9IFBR Z2V0UmVzdWx0KHBzZXQuZGIpOworCQkJZmF0YWxfcmVzID0gY2FuY2VsbGFibGVfZ2V0cmVzdWx0 KHBzZXQuZGIpOwogCQkJQXNzZXJ0KGZhdGFsX3JlcyA9PSBOVUxMKTsKIAkJCXJldHVybiByZXM7 CiAJCX0KQEAgLTE3NTksOCArMTc0Miw4IEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKGNv bnN0IGNoYXIgKnF1ZXJ5LAogCQlyZXR1cm4gMDsKIAl9CiAKLQkvKiBmaXJzdCByZXN1bHQgKi8K LQlyZXN1bHQgPSBQUWdldFJlc3VsdChwc2V0LmRiKTsKKwkvKiBmaXJzdCByZXN1bHQgLS0gdXNl IGNhbmNlbGxhYmxlIHdhaXQgZm9yIHRoZSBwb3RlbnRpYWxseSBsb25nIHdhaXQgKi8KKwlyZXN1 bHQgPSBjYW5jZWxsYWJsZV9nZXRyZXN1bHQocHNldC5kYik7CiAJaWYgKG1pbl9yb3dzID4gMCAm JiBQUW50dXBsZXMocmVzdWx0KSA8IG1pbl9yb3dzKQogCXsKIAkJcmV0dXJuX2Vhcmx5ID0gdHJ1 ZTsKQEAgLTE4MjgsNyArMTgxMSw3IEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKGNvbnN0 IGNoYXIgKnF1ZXJ5LAogCQkJCXJlc3VsdCA9IGRpc2NhcmRBYm9ydGVkUGlwZWxpbmVSZXN1bHRz KCk7CiAJCQl9CiAJCQllbHNlCi0JCQkJcmVzdWx0ID0gUFFnZXRSZXN1bHQocHNldC5kYik7CisJ CQkJcmVzdWx0ID0gY2FuY2VsbGFibGVfZ2V0cmVzdWx0KHBzZXQuZGIpOwogCiAJCQkvKgogCQkJ ICogR2V0IGN1cnJlbnQgdGltaW5nIG1lYXN1cmUgaW4gY2FzZSBhbiBlcnJvciBvY2N1cnMKQEAg LTE5ODcsNyArMTk3MCw3IEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKGNvbnN0IGNoYXIg KnF1ZXJ5LAogCQkJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdCk7CiAKIAkJCQkvKiBnZXQgdGhl IG5leHQgcmVzdWx0LCBsb29wIGlmIGl0J3MgUEdSRVNfVFVQTEVTX0NIVU5LICovCi0JCQkJcmVz dWx0ID0gUFFnZXRSZXN1bHQocHNldC5kYik7CisJCQkJcmVzdWx0ID0gY2FuY2VsbGFibGVfZ2V0 cmVzdWx0KHBzZXQuZGIpOwogCQkJfSB3aGlsZSAoUFFyZXN1bHRTdGF0dXMocmVzdWx0KSA9PSBQ R1JFU19UVVBMRVNfQ0hVTkspOwogCiAJCQkvKiBXZSBleHBlY3QgYW4gZW1wdHkgUEdSRVNfVFVQ TEVTX09LLCBlbHNlIHRoZXJlJ3MgYSBwcm9ibGVtICovCkBAIC0yMDgxLDcgKzIwNjQsNyBAQCBF eGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFyICpxdWVyeSwKIAkJICogdG8gcHJv Y2Vzcy4gIFdlIG5lZWQgdG8gZG8gdGhhdCB0byBjaGVjayB3aGV0aGVyIHRoaXMgaXMgdGhlIGxh c3QuCiAJCSAqLwogCQlpZiAoUFFwaXBlbGluZVN0YXR1cyhwc2V0LmRiKSA9PSBQUV9QSVBFTElO RV9PRkYpCi0JCQluZXh0X3Jlc3VsdCA9IFBRZ2V0UmVzdWx0KHBzZXQuZGIpOworCQkJbmV4dF9y ZXN1bHQgPSBjYW5jZWxsYWJsZV9nZXRyZXN1bHQocHNldC5kYik7CiAJCWVsc2UKIAkJewogCQkJ LyoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb3B5LmMgYi9zcmMvYmluL3BzcWwvY29weS5j CmluZGV4IDZhOGE5NzkyZTdkLi5mYzI4NTM3YWNjMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3Fs L2NvcHkuYworKysgYi9zcmMvYmluL3BzcWwvY29weS5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5j bHVkZSAiY29tbW9uLmgiCiAjaW5jbHVkZSAiY29tbW9uL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJj b3B5LmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvY2FuY2VsLmgiCiAjaW5jbHVkZSAibGlicHEtZmUu aCIKICNpbmNsdWRlICJwcWV4cGJ1ZmZlci5oIgogI2luY2x1ZGUgInByb21wdC5oIgpAQCAtNDM2 LDEwICs0MzcsMjQgQEAgaGFuZGxlQ29weU91dChQR2Nvbm4gKmNvbm4sIEZJTEUgKmNvcHlzdHJl YW0sIFBHcmVzdWx0ICoqcmVzKQogCWJvb2wJCU9LID0gdHJ1ZTsKIAljaGFyCSAgICpidWY7CiAJ aW50CQkJcmV0OworCWJvb2wJCWNhbmNlbF9zZW50ID0gZmFsc2U7CiAKIAlmb3IgKDs7KQogCXsK LQkJcmV0ID0gUFFnZXRDb3B5RGF0YShjb25uLCAmYnVmLCAwKTsKKwkJLyogVXNlIGFzeW5jIG1v ZGUgc28gd2UgY2FuIHdhdGNoIGZvciBjYW5jZWwgaW50ZXJydXB0cyAqLworCQlyZXQgPSBQUWdl dENvcHlEYXRhKGNvbm4sICZidWYsIDEpOworCisJCWlmIChyZXQgPT0gMCkKKwkJeworCQkJLyog Tm8gZGF0YSBhdmFpbGFibGUgeWV0LCB3YWl0IGZvciBzb2NrZXQgb3IgY2FuY2VsICovCisJCQlp ZiAoIWNhbmNlbGxhYmxlX3NvY2tldF93YWl0KGNvbm4sICZjYW5jZWxfc2VudCwgZmFsc2UpKQor CQkJeworCQkJCU9LID0gZmFsc2U7CisJCQkJYnJlYWs7CisJCQl9CisJCQlQUWNvbnN1bWVJbnB1 dChjb25uKTsKKwkJCWNvbnRpbnVlOworCQl9CiAKIAkJaWYgKHJldCA8IDApCiAJCQlicmVhazsJ CQkJLyogZG9uZSBvciBzZXJ2ZXIvY29ubmVjdGlvbiBlcnJvciAqLwpAQCAtNDgwLDcgKzQ5NSw3 IEBAIGhhbmRsZUNvcHlPdXQoUEdjb25uICpjb25uLCBGSUxFICpjb3B5c3RyZWFtLCBQR3Jlc3Vs dCAqKnJlcykKIAkgKiBidXQgaGFzbid0IGV4aXRlZCBDT1BZX09VVCBzdGF0ZSBpbnRlcm5hbGx5 LiAgU28gd2UgaWdub3JlIHRoZQogCSAqIHBvc3NpYmlsaXR5IGhlcmUuCiAJICovCi0JKnJlcyA9 IFBRZ2V0UmVzdWx0KGNvbm4pOworCSpyZXMgPSBjYW5jZWxsYWJsZV9nZXRyZXN1bHQoY29ubik7 CiAJaWYgKFBRcmVzdWx0U3RhdHVzKCpyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJewogCQlw Z19sb2dfaW5mbygiJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CkBAIC01MTMsNiArNTI4LDEw IEBAIGhhbmRsZUNvcHlJbihQR2Nvbm4gKmNvbm4sIEZJTEUgKmNvcHlzdHJlYW0sIGJvb2wgaXNi aW5hcnksIFBHcmVzdWx0ICoqcmVzKQogCWJvb2wJCU9LOwogCWNoYXIJCWJ1ZltDT1BZQlVGU0la XTsKIAlib29sCQlzaG93cHJvbXB0OworCWJvb2wJCWNhbmNlbF9zZW50ID0gZmFsc2U7CisKKwkv KiBTZXQgbm9uLWJsb2NraW5nIG1vZGUgc28gUFFwdXRDb3B5RGF0YS9FbmQgd29uJ3QgYmxvY2sg aW50ZXJuYWxseSAqLworCVBRc2V0bm9uYmxvY2tpbmcoY29ubiwgMSk7CiAKIAkvKgogCSAqIEVz dGFibGlzaCBsb25nam1wIGRlc3RpbmF0aW9uIGZvciBleGl0aW5nIGZyb20gd2FpdC1mb3ItaW5w dXQuIChUaGlzIGlzCkBAIC01MjMsOSArNTQyLDEwIEBAIGhhbmRsZUNvcHlJbihQR2Nvbm4gKmNv bm4sIEZJTEUgKmNvcHlzdHJlYW0sIGJvb2wgaXNiaW5hcnksIFBHcmVzdWx0ICoqcmVzKQogCQkv KiBnb3QgaGVyZSB3aXRoIGxvbmdqbXAgKi8KIAogCQkvKiBUZXJtaW5hdGUgZGF0YSB0cmFuc2Zl ciAqLwotCQlQUXB1dENvcHlFbmQoY29ubiwKLQkJCQkJIChQUXByb3RvY29sVmVyc2lvbihjb25u KSA8IDMpID8gTlVMTCA6Ci0JCQkJCSBfKCJjYW5jZWxlZCBieSB1c2VyIikpOworCQljYW5jZWxs YWJsZV9wdXRfY29weV9lbmQoY29ubiwKKwkJCQkJCQkJIChQUXByb3RvY29sVmVyc2lvbihjb25u KSA8IDMpID8gTlVMTCA6CisJCQkJCQkJCSBfKCJjYW5jZWxlZCBieSB1c2VyIiksCisJCQkJCQkJ CSAmY2FuY2VsX3NlbnQpOwogCiAJCU9LID0gZmFsc2U7CiAJCWdvdG8gY29weWluX2NsZWFudXA7 CkBAIC01NjksNyArNTg5LDcgQEAgaGFuZGxlQ29weUluKFBHY29ubiAqY29ubiwgRklMRSAqY29w eXN0cmVhbSwgYm9vbCBpc2JpbmFyeSwgUEdyZXN1bHQgKipyZXMpCiAJCQlpZiAoYnVmbGVuIDw9 IDApCiAJCQkJYnJlYWs7CiAKLQkJCWlmIChQUXB1dENvcHlEYXRhKGNvbm4sIGJ1ZiwgYnVmbGVu KSA8PSAwKQorCQkJaWYgKGNhbmNlbGxhYmxlX3B1dF9jb3B5X2RhdGEoY29ubiwgYnVmLCBidWZs ZW4sICZjYW5jZWxfc2VudCkgPD0gMCkKIAkJCXsKIAkJCQlPSyA9IGZhbHNlOwogCQkJCWJyZWFr OwpAQCAtNjY3LDcgKzY4Nyw3IEBAIGhhbmRsZUNvcHlJbihQR2Nvbm4gKmNvbm4sIEZJTEUgKmNv cHlzdHJlYW0sIGJvb2wgaXNiaW5hcnksIFBHcmVzdWx0ICoqcmVzKQogCQkJICovCiAJCQlpZiAo YnVmbGVuID49IENPUFlCVUZTSVogLSA1IHx8IChjb3B5ZG9uZSAmJiBidWZsZW4gPiAwKSkKIAkJ CXsKLQkJCQlpZiAoUFFwdXRDb3B5RGF0YShjb25uLCBidWYsIGJ1ZmxlbikgPD0gMCkKKwkJCQlp ZiAoY2FuY2VsbGFibGVfcHV0X2NvcHlfZGF0YShjb25uLCBidWYsIGJ1ZmxlbiwgJmNhbmNlbF9z ZW50KSA8PSAwKQogCQkJCXsKIAkJCQkJT0sgPSBmYWxzZTsKIAkJCQkJYnJlYWs7CkBAIC02ODgs OSArNzA4LDEwIEBAIGhhbmRsZUNvcHlJbihQR2Nvbm4gKmNvbm4sIEZJTEUgKmNvcHlzdHJlYW0s IGJvb2wgaXNiaW5hcnksIFBHcmVzdWx0ICoqcmVzKQogCSAqIGtlZXAgdGhlIHZlcnNpb24gY2hl Y2tzIGp1c3QgaW4gY2FzZSB5b3UncmUgdXNpbmcgYSBwcmUtdjE0IGxpYnBxLnNvIGF0CiAJICog cnVudGltZSkKIAkgKi8KLQlpZiAoUFFwdXRDb3B5RW5kKGNvbm4sCi0JCQkJCSAoT0sgfHwgUFFw cm90b2NvbFZlcnNpb24oY29ubikgPCAzKSA/IE5VTEwgOgotCQkJCQkgXygiYWJvcnRlZCBiZWNh dXNlIG9mIHJlYWQgZmFpbHVyZSIpKSA8PSAwKQorCWlmIChjYW5jZWxsYWJsZV9wdXRfY29weV9l bmQoY29ubiwKKwkJCQkJCQkJIChPSyB8fCBQUXByb3RvY29sVmVyc2lvbihjb25uKSA8IDMpID8g TlVMTCA6CisJCQkJCQkJCSBfKCJhYm9ydGVkIGJlY2F1c2Ugb2YgcmVhZCBmYWlsdXJlIiksCisJ CQkJCQkJCSAmY2FuY2VsX3NlbnQpIDw9IDApCiAJCU9LID0gZmFsc2U7CiAKIGNvcHlpbl9jbGVh bnVwOgpAQCAtNzE3LDE1ICs3MzgsMjAgQEAgY29weWluX2NsZWFudXA6CiAJICogY29ubmVjdGlv biBpcyBsb3N0LiAgQnV0IHRoYXQncyBmaW5lOyBpdCB3aWxsIGdldCB1cyBvdXQgb2YgQ09QWV9J TgogCSAqIHN0YXRlLCB3aGljaCBpcyB3aGF0IHdlIG5lZWQuKQogCSAqLwotCXdoaWxlICgqcmVz ID0gUFFnZXRSZXN1bHQoY29ubiksIFBRcmVzdWx0U3RhdHVzKCpyZXMpID09IFBHUkVTX0NPUFlf SU4pCisJd2hpbGUgKCpyZXMgPSBjYW5jZWxsYWJsZV9nZXRyZXN1bHQoY29ubiksIFBRcmVzdWx0 U3RhdHVzKCpyZXMpID09IFBHUkVTX0NPUFlfSU4pCiAJewogCQlPSyA9IGZhbHNlOwogCQlQUWNs ZWFyKCpyZXMpOwogCQkvKiBXZSBjYW4ndCBzZW5kIGFuIGVycm9yIG1lc3NhZ2UgaWYgd2UncmUg dXNpbmcgcHJvdG9jb2wgdmVyc2lvbiAyICovCi0JCVBRcHV0Q29weUVuZChjb25uLAotCQkJCQkg KFBRcHJvdG9jb2xWZXJzaW9uKGNvbm4pIDwgMykgPyBOVUxMIDoKLQkJCQkJIF8oInRyeWluZyB0 byBleGl0IGNvcHkgbW9kZSIpKTsKKwkJY2FuY2VsbGFibGVfcHV0X2NvcHlfZW5kKGNvbm4sCisJ CQkJCQkJCSAoUFFwcm90b2NvbFZlcnNpb24oY29ubikgPCAzKSA/IE5VTEwgOgorCQkJCQkJCQkg XygidHJ5aW5nIHRvIGV4aXQgY29weSBtb2RlIiksCisJCQkJCQkJCSAmY2FuY2VsX3NlbnQpOwog CX0KKworCS8qIFJlc3RvcmUgYmxvY2tpbmcgbW9kZSAqLworCVBRc2V0bm9uYmxvY2tpbmcoY29u biwgMCk7CisKIAlpZiAoUFFyZXN1bHRTdGF0dXMoKnJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykK IAl7CiAJCXBnX2xvZ19pbmZvKCIlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcHNxbC9sYXJnZV9vYmouYyBiL3NyYy9iaW4vcHNxbC9sYXJnZV9vYmouYwpp bmRleCAwMjFmNzhlMGY3OC4uOTQ5Zjk4NGZmNTggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9s YXJnZV9vYmouYworKysgYi9zcmMvYmluL3BzcWwvbGFyZ2Vfb2JqLmMKQEAgLTE0Nyw5ICsxNDcs NyBAQCBkb19sb19leHBvcnQoY29uc3QgY2hhciAqbG9pZF9hcmcsIGNvbnN0IGNoYXIgKmZpbGVu YW1lX2FyZykKIAlpZiAoIXN0YXJ0X2xvX3hhY3QoIlxcbG9fZXhwb3J0IiwgJm93bl90cmFuc2Fj dGlvbikpCiAJCXJldHVybiBmYWxzZTsKIAotCVNldENhbmNlbENvbm4oTlVMTCk7Ci0Jc3RhdHVz ID0gbG9fZXhwb3J0KHBzZXQuZGIsIGF0b29pZChsb2lkX2FyZyksIGZpbGVuYW1lX2FyZyk7Ci0J UmVzZXRDYW5jZWxDb25uKCk7CisJc3RhdHVzID0gY2FuY2VsbGFibGVfbG9fZXhwb3J0KHBzZXQu ZGIsIGF0b29pZChsb2lkX2FyZyksIGZpbGVuYW1lX2FyZyk7CiAKIAkvKiBvZiBjb3Vyc2UgdGhp cyBzdGF0dXMgaXMgZG9jdW1lbnRlZCBub3doZXJlIDooICovCiAJaWYgKHN0YXR1cyAhPSAxKQpA QCAtMTgzLDkgKzE4MSw3IEBAIGRvX2xvX2ltcG9ydChjb25zdCBjaGFyICpmaWxlbmFtZV9hcmcs IGNvbnN0IGNoYXIgKmNvbW1lbnRfYXJnKQogCWlmICghc3RhcnRfbG9feGFjdCgiXFxsb19pbXBv cnQiLCAmb3duX3RyYW5zYWN0aW9uKSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JU2V0Q2FuY2VsQ29u bihOVUxMKTsKLQlsb2lkID0gbG9faW1wb3J0KHBzZXQuZGIsIGZpbGVuYW1lX2FyZyk7Ci0JUmVz ZXRDYW5jZWxDb25uKCk7CisJbG9pZCA9IGNhbmNlbGxhYmxlX2xvX2ltcG9ydChwc2V0LmRiLCBm aWxlbmFtZV9hcmcpOwogCiAJaWYgKGxvaWQgPT0gSW52YWxpZE9pZCkKIAl7CkBAIC0yNDUsOSAr MjQxLDcgQEAgZG9fbG9fdW5saW5rKGNvbnN0IGNoYXIgKmxvaWRfYXJnKQogCWlmICghc3RhcnRf bG9feGFjdCgiXFxsb191bmxpbmsiLCAmb3duX3RyYW5zYWN0aW9uKSkKIAkJcmV0dXJuIGZhbHNl OwogCi0JU2V0Q2FuY2VsQ29ubihOVUxMKTsKLQlzdGF0dXMgPSBsb191bmxpbmsocHNldC5kYiwg bG9pZCk7Ci0JUmVzZXRDYW5jZWxDb25uKCk7CisJc3RhdHVzID0gY2FuY2VsbGFibGVfbG9fdW5s aW5rKHBzZXQuZGIsIGxvaWQpOwogCiAJaWYgKHN0YXR1cyA9PSAtMSkKIAl7CmRpZmYgLS1naXQg YS9zcmMvZmVfdXRpbHMvTWFrZWZpbGUgYi9zcmMvZmVfdXRpbHMvTWFrZWZpbGUKaW5kZXggY2Jm YmY5M2FjNjkuLjgwOWFiMjFjYzBjIDEwMDY0NAotLS0gYS9zcmMvZmVfdXRpbHMvTWFrZWZpbGUK KysrIGIvc3JjL2ZlX3V0aWxzL01ha2VmaWxlCkBAIC0xNyw3ICsxNyw3IEBAIHN1YmRpciA9IHNy Yy9mZV91dGlscwogdG9wX2J1aWxkZGlyID0gLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIp L3NyYy9NYWtlZmlsZS5nbG9iYWwKIAotb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLURGUk9OVEVORCAt SSQobGlicHFfc3JjZGlyKSAkKENQUEZMQUdTKQorb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLURGUk9O VEVORCAtSSQobGlicHFfc3JjZGlyKSAtSSQodG9wX3NyY2Rpcikvc3JjL3BvcnQgJChDUFBGTEFH UykKIAogT0JKUyA9IFwKIAlhcmNoaXZlLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2ZlX3V0aWxzL2Nh bmNlbC5jIGIvc3JjL2ZlX3V0aWxzL2NhbmNlbC5jCmluZGV4IGU2Yjc1NDM5ZjU2Li41MTRhOGY1 NGM4MiAxMDA2NDQKLS0tIGEvc3JjL2ZlX3V0aWxzL2NhbmNlbC5jCisrKyBiL3NyYy9mZV91dGls cy9jYW5jZWwuYwpAQCAtMiw5ICsyLDQ3IEBACiAgKgogICogUXVlcnkgY2FuY2VsbGF0aW9uIHN1 cHBvcnQgZm9yIGZyb250ZW5kIGNvZGUKICAqCi0gKiBBc3NvcnRlZCB1dGlsaXR5IGZ1bmN0aW9u cyB0byBjb250cm9sIHF1ZXJ5IGNhbmNlbGxhdGlvbiB3aXRoIHNpZ25hbAotICogaGFuZGxlciBm b3IgU0lHSU5ULgorICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgU0lHSU5UL0N0cmwtQyBoYW5kbGlu ZyBmb3IgZnJvbnRlbmQgdG9vbHMgdGhhdCBuZWVkCisgKiB0byBjYW5jZWwgcXVlcmllcyBydW5u aW5nIG9uIHRoZSBzZXJ2ZXIuICBJdCBjb21iaW5lcyB0aHJlZSBjb21wbGV0ZWx5CisgKiBpbmRl cGVuZGVudCBtZWNoYW5pc21zLCBhbnkgY29tYmluYXRpb24gb2Ygd2hpY2ggY2FuIGJlIHVzZWQg YnkgYSBjYWxsZXI6CiAgKgorICogMS4gU2VydmVyIGNhbmNlbCByZXF1ZXN0IC0tIE9mdGVuIHdo YXQgYXBwbGljYXRpb25zIG5lZWQuIFdoZW4gYSBxdWVyeSBpcworICogICAgcnVubmluZywgYW5k IHRoZSBtYWluIHRocmVhZCBpcyB3YWl0aW5nIGZvciB0aGUgcmVzdWx0IG9mIHRoYXQgcXVlcnkg aW4gYQorICogICAgYmxvY2tpbmcgbWFubmVyLCB3ZSB3YW50IFNJR0lOVC9DdHJsLUMgdG8gY2Fu Y2VsIHRoYXQgcXVlcnkuIFRoaXMgY2FuIGJlCisgKiAgICBkb25lIGJ5IHdhaXRpbmcgZm9yIHRo ZSBxdWVyeSB1c2luZyBjYW5jZWxsYWJsZV9nZXRyZXN1bHQoKSBvcgorICogICAgY2FuY2VsbGFi bGVfZXhlYygpIGluc3RlYWQgb2YgUFFnZXRSZXN1bHQoKSBvciBQUWV4ZWMoKS4gVGhlc2UgZnVu Y3Rpb25zCisgKiAgICB3YWl0IG9uIGJvdGggdGhlIHNlcnZlciBjb25uZWN0aW9uIGFuZCBhIGNh bmNlbCBpbnRlcnJ1cHQgc2ltdWx0YW5lb3VzbHkuCisgKiAgICBXaGVuIFNJR0lOVC9DdHJsLUMg aXMgcmVjZWl2ZWQgdGhlIGNhbmNlbCByZXF1ZXN0IGlzIHNlbnQgdG8gdGhlIHNlcnZlcgorICog ICAgZnJvbSB0aGUgbWFpbiB0aHJlYWQsIHdoaWNoIGF2b2lkcyByYWNlIGNvbmRpdGlvbnMgdGhh dCB3b3VsZCBvY2N1ciBpZgorICogICAgdGhlIGNhbmNlbCB3ZXJlIHNlbnQgZnJvbSBhIGRpZmZl cmVudCB0aHJlYWQuCisgKgorICogMi4gQ2FuY2VsUmVxdWVzdGVkIGZsYWcgLS0gQSBtb3JlIGlu dm9sdmVkIGJ1dCBhbHNvIG11Y2ggbW9yZSBmbGV4aWJsZSB3YXkKKyAqICAgIG9mIGNhbmNlbGxp bmcuIEEgdm9sYXRpbGUgc2lnX2F0b21pY190IENhbmNlbFJlcXVlc3RlZCBmbGFnIGlzIHNldCB0 bworICogICAgdHJ1ZSB3aGVuZXZlciBTSUdJTlQgaXMgcmVjZWl2ZWQuIFRoaXMgbWVhbnMgdGhh dCB0aGUgYXBwbGljYXRpb24gY29kZQorICogICAgY2FuIGZ1bGx5IGNvbnRyb2wgd2hhdCBpdCBk b2VzIHdpdGggdGhpcyBmbGFnLiBUaGUgcHJpbWFyeSB1c2VjYXNlIGZvcgorICogICAgdGhpcyBp cyB3aGVuIHRoZSBhcHBsaWNhdGlvbiBjb2RlIGlzIG5vdCBibG9ja2VkIChpbmRlZmluaXRlbHkp LCBidXQKKyAqICAgIG5lZWRzIHRvIHRha2UgYW4gYWN0aW9uIHdoZW4gQ3RybC1DIGlzIHByZXNz ZWQsIHN1Y2ggYXMgYnJlYWsgb3V0IG9mIGEKKyAqICAgIGxvbmcgcnVubmluZyBsb29wLgorICoK KyAqIDMuIENhbmNlbCBjYWxsYmFjayAtLSBUaGUgbW9zdCBjb21wbGV4IHdheSBvZiBoYW5kbGlu ZyBhIHNpZ2ludC4gQW4gb3B0aW9uYWwKKyAqICAgIGZ1bmN0aW9uIHBvaW50ZXIgcmVnaXN0ZXJl ZCB2aWEgc2V0dXBfY2FuY2VsX2hhbmRsZXIoKS4gIElmIHNldCwgaXQgaXMKKyAqICAgIGNhbGxl ZCBkaXJlY3RseSBmcm9tIHRoZSBzaWduYWwgaGFuZGxlciwgc28gaXQgbXVzdCBiZSBhc3luYy1z aWduYWwtc2FmZS4KKyAqICAgIFdyaXRpbmcgYXN5bmMtc2lnbmFsLXNhZmUgY29kZSBpcyBub3Qg ZWFzeSwgc28gdGhpcyBpcyBvbmx5IHJlY29tbWVuZGVkCisgKiAgICBhcyBhIGxhc3QgcmVzb3J0 LiBwc3FsIHVzZXMgdGhpcyB0byBsb25nam1wIGJhY2sgdG8gdGhlIG1haW4gbG9vcCB3aGVuIG5v CisgKiAgICBxdWVyeSBpcyBhY3RpdmUuCisgKgorICogT24gVW5peCwgdGhlIFNJR0lOVCBzaWdu YWwgaGFuZGxlciBjYW5ub3QgY2FsbCBQUWNhbmNlbEJsb2NraW5nKCkgZGlyZWN0bHkKKyAqIGJl Y2F1c2UgaXQgaXMgbm90IGFzeW5jLXNpZ25hbC1zYWZlLiAgSW5zdGVhZCwgd2UgdXNlIGEgcGlw ZSAodGhlICJzZWxmLXBpcGUKKyAqIHRyaWNrIikgdG8gaW50ZXJydXB0IHRoZSBtYWluIHRocmVh ZCdzIHNlbGVjdCgpL3BvbGwoKSBjYWxsLiAgVGhlIHNpZ25hbAorICogaGFuZGxlciB3cml0ZXMg YSBieXRlIHRvIHRoZSBwaXBlLCB3aGljaCBtYWtlcyB0aGUgbWFpbiB0aHJlYWQncyB3YWl0Cisg KiByZXR1cm4uICBUaGUgbWFpbiB0aHJlYWQgdGhlbiBub3RpY2VzIHRoZSBjYW5jZWwgcmVxdWVz dCBhbmQgc2VuZHMgaXQgdG8gdGhlCisgKiBzZXJ2ZXIgc3luY2hyb25vdXNseS4KKyAqCisgKiBP biBXaW5kb3dzLCB0aGUgY29uc29sZSBjb250cm9sIGhhbmRsZXIgcnVucyBpbiBhIHNlcGFyYXRl IE9TLXByb3ZpZGVkCisgKiB0aHJlYWQuICBXZSB1c2UgYSBXaW5kb3dzIGV2ZW50IG9iamVjdCBh cyB0aGUgZXF1aXZhbGVudCBvZiB0aGUgc2VsZi1waXBlOgorICogdGhlIGNvbnNvbGUgaGFuZGxl ciBzaWduYWxzIHRoZSBldmVudCwgYW5kIHRoZSBtYWluIHRocmVhZCB1c2VzCisgKiBXYWl0Rm9y TXVsdGlwbGVPYmplY3RzIHRvIHdhaXQgb24gYm90aCB0aGUgc29ja2V0IGFuZCB0aGUgY2FuY2Vs IGV2ZW50CisgKiBzaW11bHRhbmVvdXNseSwgc28gY2FuY2VsbGF0aW9uIGlzIG5vdGljZWQgaW5z dGFudGx5LgogICoKICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKQEAgLTE2LDExICs1 NCwxOCBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKIAorI2luY2x1ZGUgPGZjbnRsLmg+ CisjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKLSNpbmNsdWRlICJj b21tb24vY29ubmVjdC5oIgorI2lmbmRlZiBXSU4zMgorI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4K KyNlbmRpZgorCisjaW5jbHVkZSAiY29tbW9uL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91dGls cy9jYW5jZWwuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKKyNpbmNsdWRl ICJsaWJwcS9saWJwcS1mcy5oIgogCiAKIC8qCkBAIC0zNiwxMSArODEsNiBAQAogCQkodm9pZCkg cmNfOyBcCiAJfSB3aGlsZSAoMCkKIAotLyoKLSAqIENvbnRhaW5zIGFsbCB0aGUgaW5mb3JtYXRp b24gbmVlZGVkIHRvIGNhbmNlbCBhIHF1ZXJ5IGlzc3VlZCBmcm9tCi0gKiBhIGRhdGFiYXNlIGNv bm5lY3Rpb24gdG8gdGhlIGJhY2tlbmQuCi0gKi8KLXN0YXRpYyBQR2NhbmNlbCAqdm9sYXRpbGUg Y2FuY2VsQ29ubiA9IE5VTEw7CiAKIC8qCiAgKiBQcmVkZXRlcm1pbmVkIGxvY2FsaXplZCBlcnJv ciBzdHJpbmdzIC0tLSBuZWVkZWQgdG8gYXZvaWQgdHJ5aW5nCkBAIC01OCwxNjkgKzk4LDc3MCBA QCBzdGF0aWMgY29uc3QgY2hhciAqY2FuY2VsX25vdF9zZW50X21zZyA9IE5VTEw7CiAgKi8KIHZv bGF0aWxlIHNpZ19hdG9taWNfdCBDYW5jZWxSZXF1ZXN0ZWQgPSBmYWxzZTsKIAotI2lmZGVmIFdJ TjMyCi1zdGF0aWMgQ1JJVElDQUxfU0VDVElPTiBjYW5jZWxDb25uTG9jazsKLSNlbmRpZgotCiAv KgogICogQWRkaXRpb25hbCBjYWxsYmFjayBmb3IgY2FuY2VsbGF0aW9ucy4KICAqLwogc3RhdGlj IHZvaWQgKCpjYW5jZWxfY2FsbGJhY2spICh2b2lkKSA9IE5VTEw7CiAKKyNpZm5kZWYgV0lOMzIK Ky8qCisgKiBPbiBVbml4LCB0aGUgU0lHSU5UIHNpZ25hbCBoYW5kbGVyIGNhbm5vdCBjYWxsIFBR Y2FuY2VsQmxvY2tpbmcoKSBkaXJlY3RseQorICogYmVjYXVzZSBpdCBpcyBub3QgYXN5bmMtc2ln bmFsLXNhZmUuICBJbnN0ZWFkLCB3ZSB1c2UgYSBwaXBlIHRvIGludGVycnVwdAorICogdGhlIG1h aW4gdGhyZWFkOiB0aGUgc2lnbmFsIGhhbmRsZXIgd3JpdGVzIGEgYnl0ZSB0byB0aGUgcGlwZSwg YW5kIHRoZSBtYWluCisgKiB0aHJlYWQncyBzZWxlY3QoKSBjYWxsIHJldHVybnMgYmVjYXVzZSB0 aGUgcGlwZSdzIHJlYWQgZW5kIGJlY29tZXMgcmVhZGFibGUuCisgKiBUaGUgbWFpbiB0aHJlYWQg dGhlbiBzZW5kcyB0aGUgY2FuY2VsIHJlcXVlc3QgdG8gdGhlIHNlcnZlci4KKyAqLworc3RhdGlj IGludAljYW5jZWxfcGlwZVsyXSA9IHstMSwgLTF9OworI2Vsc2UKKy8qCisgKiBPbiBXaW5kb3dz LCB3ZSB1c2UgYW4gZXZlbnQgb2JqZWN0IHRvIHdha2UgdGhlIG1haW4gdGhyZWFkJ3MKKyAqIFdh aXRGb3JNdWx0aXBsZU9iamVjdHMoKSBjYWxsIHdoZW4gQ3RybC1DIGlzIHByZXNzZWQuCisgKi8K K3N0YXRpYyBIQU5ETEUgY2FuY2VsX2V2ZW50ID0gTlVMTDsKKyNlbmRpZgorCiAKIC8qCi0gKiBT ZXRDYW5jZWxDb25uCi0gKgotICogU2V0IGNhbmNlbENvbm4gdG8gcG9pbnQgdG8gdGhlIGN1cnJl bnQgZGF0YWJhc2UgY29ubmVjdGlvbi4KKyAqIFNlbmQgYSBjYW5jZWwgcmVxdWVzdCB0byB0aGUg Z2l2ZW4gY29ubmVjdGlvbi4KICAqLwogdm9pZAotU2V0Q2FuY2VsQ29ubihQR2Nvbm4gKmNvbm4p CitzZW5kX2NhbmNlbChQR2Nvbm4gKmNvbm4pCiB7Ci0JUEdjYW5jZWwgICAqb2xkQ2FuY2VsQ29u bjsKKwlQR2NhbmNlbENvbm4gKmNhbmNlbENvbm4gPSBQUWNhbmNlbENyZWF0ZShjb25uKTsKIAot I2lmZGVmIFdJTjMyCi0JRW50ZXJDcml0aWNhbFNlY3Rpb24oJmNhbmNlbENvbm5Mb2NrKTsKLSNl bmRpZgorCWlmIChjYW5jZWxfc2VudF9tc2cpCisJCXdyaXRlX3N0ZGVycihjYW5jZWxfc2VudF9t c2cpOwogCi0JLyogRnJlZSB0aGUgb2xkIG9uZSBpZiB3ZSBoYXZlIG9uZSAqLwotCW9sZENhbmNl bENvbm4gPSBjYW5jZWxDb25uOworCWlmICghUFFjYW5jZWxCbG9ja2luZyhjYW5jZWxDb25uKSkK Kwl7CisJCWlmIChjYW5jZWxfbm90X3NlbnRfbXNnKQorCQkJd3JpdGVfc3RkZXJyKGNhbmNlbF9u b3Rfc2VudF9tc2cpOworCQl3cml0ZV9zdGRlcnIoUFFjYW5jZWxFcnJvck1lc3NhZ2UoY2FuY2Vs Q29ubikpOworCX0KIAotCS8qIGJlIHN1cmUgaGFuZGxlX3NpZ2ludCBkb2Vzbid0IHVzZSBwb2lu dGVyIHdoaWxlIGZyZWVpbmcgKi8KLQljYW5jZWxDb25uID0gTlVMTDsKKwlQUWNhbmNlbEZpbmlz aChjYW5jZWxDb25uKTsKK30KIAotCWlmIChvbGRDYW5jZWxDb25uICE9IE5VTEwpCi0JCVBRZnJl ZUNhbmNlbChvbGRDYW5jZWxDb25uKTsKIAotCWNhbmNlbENvbm4gPSBQUWdldENhbmNlbChjb25u KTsKKyNpZm5kZWYgV0lOMzIKIAotI2lmZGVmIFdJTjMyCi0JTGVhdmVDcml0aWNhbFNlY3Rpb24o JmNhbmNlbENvbm5Mb2NrKTsKLSNlbmRpZgorLyoKKyAqIERyYWluIGFueSBwZW5kaW5nIGJ5dGVz IGZyb20gdGhlIGNhbmNlbCBwaXBlLiAgVGhpcyBzaG91bGQgYmUgY2FsbGVkCisgKiBiZWZvcmUg ZW50ZXJpbmcgYSBjYW5jZWxsYWJsZSB3YWl0LCBzbyB0aGF0IGEgc3RhbGUgc2lnbmFsIGZyb20g YQorICogcHJldmlvdXMgcXVlcnkgZG9lc24ndCBpbW1lZGlhdGVseSB0cmlnZ2VyIGEgY2FuY2Vs LgorICovCitzdGF0aWMgdm9pZAorZHJhaW5fY2FuY2VsX3BpcGUodm9pZCkKK3sKKwlpZiAoY2Fu Y2VsX3BpcGVbMF0gPj0gMCkKKwl7CisJCWNoYXIJCWJ1ZlsxNl07CisJCWludAkJCXNhdmVfZXJy bm8gPSBlcnJubzsKKworCQl3aGlsZSAocmVhZChjYW5jZWxfcGlwZVswXSwgYnVmLCBzaXplb2Yo YnVmKSkgPiAwKQorCQkJIC8qIGxvb3AgKi8gOworCisJCWVycm5vID0gc2F2ZV9lcnJubzsKKwl9 CiB9CiAKKyNlbmRpZgkJCQkJCQkvKiAhV0lOMzIgKi8KKworCiAvKgotICogUmVzZXRDYW5jZWxD b25uCisgKiBjYW5jZWxsYWJsZV9zb2NrZXRfd2FpdAorICoKKyAqIFdhaXQgZm9yIHRoZSBnaXZl biBjb25uZWN0aW9uJ3Mgc29ja2V0IHRvIGJlY29tZSByZWFkYWJsZSAob3Igd3JpdGFibGUgaWYK KyAqIGZvcl93cml0ZSBpcyB0cnVlKSwgd2hpbGUgYWxzbyB3YXRjaGluZyBmb3IgYSBjYW5jZWwg aW50ZXJydXB0CisgKiAoU0lHSU5UL0N0cmwtQykuCiAgKgotICogRnJlZSB0aGUgY3VycmVudCBj YW5jZWwgY29ubmVjdGlvbiwgaWYgYW55LCBhbmQgc2V0IHRvIE5VTEwuCisgKiBJZiBhIGNhbmNl bCBpbnRlcnJ1cHQgYXJyaXZlcyBkdXJpbmcgdGhlIHdhaXQsIGEgY2FuY2VsIHJlcXVlc3QgaXMg c2VudCB0bworICogdGhlIHNlcnZlci4gIFRoZSBjYW5jZWwgaXMgc2VudCBhdCBtb3N0IG9uY2Ug cGVyIGNhbGwgKHRyYWNrZWQgdmlhCisgKiAqY2FuY2VsX3NlbnQsIHdoaWNoIHRoZSBjYWxsZXIg c2hvdWxkIGluaXRpYWxpemUgdG8gZmFsc2UpLiAgQWZ0ZXIgc2VuZGluZworICogdGhlIGNhbmNl bCwgdGhpcyBmdW5jdGlvbiBjb250aW51ZXMgd2FpdGluZyBmb3IgdGhlIHNvY2tldCwgc2luY2Ug dGhlIHNlcnZlcgorICogaXMgZXhwZWN0ZWQgdG8gcmVzcG9uZCB3aXRoIGFuIGVycm9yIHRoYXQg dGhlIGNhbGxlciB3aWxsIHByb2Nlc3Mgbm9ybWFsbHkuCisgKgorICogUmV0dXJucyB0cnVlIGlm IHRoZSBzb2NrZXQgaXMgcmVhZHksIGZhbHNlIG9uIGVycm9yLgogICovCi12b2lkCi1SZXNldENh bmNlbENvbm4odm9pZCkKK2Jvb2wKK2NhbmNlbGxhYmxlX3NvY2tldF93YWl0KFBHY29ubiAqY29u biwgYm9vbCAqY2FuY2VsX3NlbnQsIGJvb2wgZm9yX3dyaXRlKQogewotCVBHY2FuY2VsICAgKm9s ZENhbmNlbENvbm47CisJaW50CQkJc29jayA9IFBRc29ja2V0KGNvbm4pOwogCi0jaWZkZWYgV0lO MzIKLQlFbnRlckNyaXRpY2FsU2VjdGlvbigmY2FuY2VsQ29ubkxvY2spOwotI2VuZGlmCisJaWYg KHNvY2sgPCAwKQorCQlyZXR1cm4gZmFsc2U7CisKKwlmb3IgKDs7KQorCXsKKyNpZm5kZWYgV0lO MzIKKwkJZmRfc2V0CQlzb2NrX21hc2s7CisJCWZkX3NldAkJY2FuY2VsX21hc2s7CisJCWZkX3Nl dAkgICAqcmVhZF9zZXQ7CisJCWZkX3NldAkgICAqd3JpdGVfc2V0OworCQlpbnQJCQltYXhGZDsK KwkJaW50CQkJcmM7CisKKwkJRkRfWkVSTygmc29ja19tYXNrKTsKKwkJRkRfU0VUKHNvY2ssICZz b2NrX21hc2spOworCQltYXhGZCA9IHNvY2s7CisKKwkJRkRfWkVSTygmY2FuY2VsX21hc2spOwor CQlpZiAoY2FuY2VsX3BpcGVbMF0gPj0gMCkKKwkJeworCQkJRkRfU0VUKGNhbmNlbF9waXBlWzBd LCAmY2FuY2VsX21hc2spOworCQkJaWYgKGNhbmNlbF9waXBlWzBdID4gbWF4RmQpCisJCQkJbWF4 RmQgPSBjYW5jZWxfcGlwZVswXTsKKwkJfQorCisJCWlmIChmb3Jfd3JpdGUpCisJCXsKKwkJCXJl YWRfc2V0ID0gJmNhbmNlbF9tYXNrOworCQkJd3JpdGVfc2V0ID0gJnNvY2tfbWFzazsKKwkJfQor CQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBXYXRjaCBib3RoIHRoZSBzb2NrZXQgYW5kIHRoZSBj YW5jZWwgcGlwZSBmb3IgcmVhZGFiaWxpdHkuCisJCQkgKiBNZXJnZSB0aGVtIGludG8gb25lIGZk X3NldC4KKwkJCSAqLworCQkJaWYgKGNhbmNlbF9waXBlWzBdID49IDApCisJCQkJRkRfU0VUKGNh bmNlbF9waXBlWzBdLCAmc29ja19tYXNrKTsKKwkJCXJlYWRfc2V0ID0gJnNvY2tfbWFzazsKKwkJ CXdyaXRlX3NldCA9IE5VTEw7CisJCX0KIAotCW9sZENhbmNlbENvbm4gPSBjYW5jZWxDb25uOwor CQlyYyA9IHNlbGVjdChtYXhGZCArIDEsIHJlYWRfc2V0LCB3cml0ZV9zZXQsIE5VTEwsIE5VTEwp OwogCi0JLyogYmUgc3VyZSBoYW5kbGVfc2lnaW50IGRvZXNuJ3QgdXNlIHBvaW50ZXIgd2hpbGUg ZnJlZWluZyAqLwotCWNhbmNlbENvbm4gPSBOVUxMOworCQlpZiAocmMgPCAwKQorCQl7CisJCQlp ZiAoZXJybm8gPT0gRUlOVFIpCisJCQkJY29udGludWU7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0K IAotCWlmIChvbGRDYW5jZWxDb25uICE9IE5VTEwpCi0JCVBRZnJlZUNhbmNlbChvbGRDYW5jZWxD b25uKTsKKwkJLyogQ2hlY2sgY2FuY2VsIHBpcGUgKGFsd2F5cyBpbiByZWFkX3NldCBmb3Igd3Jp dGUsIG1lcmdlZCBmb3IgcmVhZCkgKi8KKwkJaWYgKGNhbmNlbF9waXBlWzBdID49IDAgJiYKKwkJ CSgoZm9yX3dyaXRlICYmIEZEX0lTU0VUKGNhbmNlbF9waXBlWzBdLCAmY2FuY2VsX21hc2spKSB8 fAorCQkJICghZm9yX3dyaXRlICYmIEZEX0lTU0VUKGNhbmNlbF9waXBlWzBdLCAmc29ja19tYXNr KSkpKQorCQl7CisJCQlkcmFpbl9jYW5jZWxfcGlwZSgpOwogCi0jaWZkZWYgV0lOMzIKLQlMZWF2 ZUNyaXRpY2FsU2VjdGlvbigmY2FuY2VsQ29ubkxvY2spOworCQkJaWYgKCEqY2FuY2VsX3NlbnQp CisJCQl7CisJCQkJc2VuZF9jYW5jZWwoY29ubik7CisJCQkJKmNhbmNlbF9zZW50ID0gdHJ1ZTsK KwkJCX0KKworCQkJLyogQ2hlY2sgaWYgdGhlIHNvY2tldCBpcyBhbHNvIHJlYWR5ICovCisJCQlp ZiAoZm9yX3dyaXRlKQorCQkJeworCQkJCWlmICghRkRfSVNTRVQoc29jaywgJnNvY2tfbWFzaykp CisJCQkJCWNvbnRpbnVlOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCWlmICghRkRfSVNTRVQo c29jaywgJnNvY2tfbWFzaykpCisJCQkJCWNvbnRpbnVlOworCQkJfQorCQl9CisKKwkJaWYgKEZE X0lTU0VUKHNvY2ssICZzb2NrX21hc2spKQorCQkJcmV0dXJuIHRydWU7CisjZWxzZQkJCQkJCQkv KiBXSU4zMiAqLworCQlIQU5ETEUJCWV2ZW50c1syXTsKKwkJV1NBRVZFTlQJc29ja19ldmVudDsK KwkJRFdPUkQJCXJldDsKKwkJbG9uZwkJbmV0X2V2ZW50czsKKworCQluZXRfZXZlbnRzID0gZm9y X3dyaXRlID8gRkRfV1JJVEUgOiAoRkRfUkVBRCB8IEZEX0NMT1NFKTsKKworCQlzb2NrX2V2ZW50 ID0gV1NBQ3JlYXRlRXZlbnQoKTsKKwkJaWYgKHNvY2tfZXZlbnQgPT0gV1NBX0lOVkFMSURfRVZF TlQpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJaWYgKFdTQUV2ZW50U2VsZWN0KHNvY2ssIHNvY2tf ZXZlbnQsIG5ldF9ldmVudHMpICE9IDApCisJCXsKKwkJCVdTQUNsb3NlRXZlbnQoc29ja19ldmVu dCk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKworCQlldmVudHNbMF0gPSBzb2NrX2V2ZW50Owor CQlldmVudHNbMV0gPSBjYW5jZWxfZXZlbnQ7CisKKwkJcmV0ID0gV2FpdEZvck11bHRpcGxlT2Jq ZWN0cyhjYW5jZWxfZXZlbnQgPyAyIDogMSwKKwkJCQkJCQkJCSBldmVudHMsIEZBTFNFLCBJTkZJ TklURSk7CisKKwkJV1NBRXZlbnRTZWxlY3Qoc29jaywgc29ja19ldmVudCwgMCk7CisJCVdTQUNs b3NlRXZlbnQoc29ja19ldmVudCk7CisKKwkJaWYgKHJldCA9PSBXQUlUX09CSkVDVF8wKQorCQl7 CisJCQkvKiBTb2NrZXQgaXMgcmVhZHkgKi8KKwkJCXJldHVybiB0cnVlOworCQl9CisJCWVsc2Ug aWYgKHJldCA9PSBXQUlUX09CSkVDVF8wICsgMSkKKwkJeworCQkJLyogQ2FuY2VsIGV2ZW50IHNp Z25hbGVkICovCisJCQlSZXNldEV2ZW50KGNhbmNlbF9ldmVudCk7CisKKwkJCWlmICghKmNhbmNl bF9zZW50KQorCQkJeworCQkJCXNlbmRfY2FuY2VsKGNvbm4pOworCQkJCSpjYW5jZWxfc2VudCA9 IHRydWU7CisJCQl9CisKKwkJCS8qIExvb3AgYmFjayB0byB3YWl0IGZvciB0aGUgc29ja2V0ICov CisJCQljb250aW51ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIFdBSVRfRkFJTEVEIG9yIHVu ZXhwZWN0ZWQgcmV0dXJuICovCisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKyNlbmRpZgkJCQkJCQkv KiBXSU4zMiAqLworCX0KK30KKworCisvKgorICogY2FuY2VsbGFibGVfZ2V0cmVzdWx0CisgKgor ICogTGlrZSBQUWdldFJlc3VsdCwgYnV0IGNhbmNlbGxhYmxlIHZpYSBTSUdJTlQuICBXaGVuIGEg Y2FuY2VsIGludGVycnVwdAorICogYXJyaXZlcyB3aGlsZSB3YWl0aW5nIGZvciBkYXRhIGZyb20g dGhlIHNlcnZlciwgYSBjYW5jZWwgcmVxdWVzdCBpcyBzZW50CisgKiB0byB0aGUgc2VydmVyLiAg VGhlIHNlcnZlciBpcyB0aGVuIGV4cGVjdGVkIHRvIHJlc3BvbmQgd2l0aCBhbiBlcnJvciwKKyAq IHdoaWNoIHdpbGwgYmUgcmV0dXJuZWQgYXMgdGhlIFBHcmVzdWx0LgorICovCitQR3Jlc3VsdCAq CitjYW5jZWxsYWJsZV9nZXRyZXN1bHQoUEdjb25uICpjb25uKQoreworCWJvb2wJCWNhbmNlbF9z ZW50ID0gZmFsc2U7CisKKyNpZm5kZWYgV0lOMzIKKwlkcmFpbl9jYW5jZWxfcGlwZSgpOworI2Vs c2UKKwlpZiAoY2FuY2VsX2V2ZW50KQorCQlSZXNldEV2ZW50KGNhbmNlbF9ldmVudCk7CiAjZW5k aWYKKworCXdoaWxlIChQUWlzQnVzeShjb25uKSkKKwl7CisJCWlmICghY2FuY2VsbGFibGVfc29j a2V0X3dhaXQoY29ubiwgJmNhbmNlbF9zZW50LCBmYWxzZSkpCisJCQlicmVhazsKKworCQlpZiAo IVBRY29uc3VtZUlucHV0KGNvbm4pKQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIFBRZ2V0UmVz dWx0KGNvbm4pOworfQorCisvKgorICogY2FuY2VsbGFibGVfZXhlYworICoKKyAqIExpa2UgUFFl eGVjLCBidXQgY2FuY2VsbGFibGUgdmlhIFNJR0lOVC4KKyAqLworUEdyZXN1bHQgKgorY2FuY2Vs bGFibGVfZXhlYyhQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnF1ZXJ5KQoreworCVBHcmVzdWx0 ICAgKmxhc3RSZXN1bHQgPSBOVUxMOworCVBHcmVzdWx0ICAgKnJlc3VsdDsKKworCWlmICghUFFz ZW5kUXVlcnkoY29ubiwgcXVlcnkpKQorCQlyZXR1cm4gUFFnZXRSZXN1bHQoY29ubik7CisKKwl3 aGlsZSAoKHJlc3VsdCA9IGNhbmNlbGxhYmxlX2dldHJlc3VsdChjb25uKSkgIT0gTlVMTCkKKwl7 CisJCVBRY2xlYXIobGFzdFJlc3VsdCk7CisJCWxhc3RSZXN1bHQgPSByZXN1bHQ7CisJfQorCisJ cmV0dXJuIGxhc3RSZXN1bHQ7CiB9CiAKIAogLyoKLSAqIENvZGUgdG8gc3VwcG9ydCBxdWVyeSBj YW5jZWxsYXRpb24KKyAqIGNhbmNlbGxhYmxlX2V4ZWNfcGFyYW1zCisgKgorICogTGlrZSBQUWV4 ZWNQYXJhbXMsIGJ1dCBjYW5jZWxsYWJsZSB2aWEgU0lHSU5ULgorICovCitQR3Jlc3VsdCAqCitj YW5jZWxsYWJsZV9leGVjX3BhcmFtcyhQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnF1ZXJ5LAor CQkJCQkJaW50IG5QYXJhbXMsIGNvbnN0IE9pZCAqcGFyYW1UeXBlcywKKwkJCQkJCWNvbnN0IGNo YXIgKmNvbnN0ICpwYXJhbVZhbHVlcywKKwkJCQkJCWNvbnN0IGludCAqcGFyYW1MZW5ndGhzLCBj b25zdCBpbnQgKnBhcmFtRm9ybWF0cywKKwkJCQkJCWludCByZXN1bHRGb3JtYXQpCit7CisJUEdy ZXN1bHQgICAqbGFzdFJlc3VsdCA9IE5VTEw7CisJUEdyZXN1bHQgICAqcmVzdWx0OworCisJaWYg KCFQUXNlbmRRdWVyeVBhcmFtcyhjb25uLCBxdWVyeSwgblBhcmFtcywgcGFyYW1UeXBlcywKKwkJ CQkJCSAgIHBhcmFtVmFsdWVzLCBwYXJhbUxlbmd0aHMsIHBhcmFtRm9ybWF0cywKKwkJCQkJCSAg IHJlc3VsdEZvcm1hdCkpCisJCXJldHVybiBQUWdldFJlc3VsdChjb25uKTsKKworCXdoaWxlICgo cmVzdWx0ID0gY2FuY2VsbGFibGVfZ2V0cmVzdWx0KGNvbm4pKSAhPSBOVUxMKQorCXsKKwkJUFFj bGVhcihsYXN0UmVzdWx0KTsKKwkJbGFzdFJlc3VsdCA9IHJlc3VsdDsKKwl9CisKKwlyZXR1cm4g bGFzdFJlc3VsdDsKK30KKworLyoKKyAqIGNhbmNlbGxhYmxlX3ByZXBhcmUKICAqCi0gKiBOb3Rl IHRoYXQgc2VuZGluZyB0aGUgY2FuY2VsIGRpcmVjdGx5IGZyb20gdGhlIHNpZ25hbCBoYW5kbGVy IGlzIHNhZmUKLSAqIGJlY2F1c2UgUFFjYW5jZWwoKSBpcyB3cml0dGVuIHRvIG1ha2UgaXQgc28u ICBXZSB1c2Ugd3JpdGUoKSB0byByZXBvcnQKLSAqIHRvIHN0ZGVyciBiZWNhdXNlIGl0J3MgYmV0 dGVyIHRvIHVzZSBzaW1wbGUgZmFjaWxpdGllcyBpbiBhIHNpZ25hbAotICogaGFuZGxlci4KKyAq IExpa2UgUFFwcmVwYXJlLCBidXQgY2FuY2VsbGFibGUgdmlhIFNJR0lOVC4KKyAqLworUEdyZXN1 bHQgKgorY2FuY2VsbGFibGVfcHJlcGFyZShQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnN0bXRO YW1lLAorCQkJCQljb25zdCBjaGFyICpxdWVyeSwgaW50IG5QYXJhbXMsCisJCQkJCWNvbnN0IE9p ZCAqcGFyYW1UeXBlcykKK3sKKwlQR3Jlc3VsdCAgICpsYXN0UmVzdWx0ID0gTlVMTDsKKwlQR3Jl c3VsdCAgICpyZXN1bHQ7CisKKwlpZiAoIVBRc2VuZFByZXBhcmUoY29ubiwgc3RtdE5hbWUsIHF1 ZXJ5LCBuUGFyYW1zLCBwYXJhbVR5cGVzKSkKKwkJcmV0dXJuIFBRZ2V0UmVzdWx0KGNvbm4pOwor CisJd2hpbGUgKChyZXN1bHQgPSBjYW5jZWxsYWJsZV9nZXRyZXN1bHQoY29ubikpICE9IE5VTEwp CisJeworCQlQUWNsZWFyKGxhc3RSZXN1bHQpOworCQlsYXN0UmVzdWx0ID0gcmVzdWx0OworCX0K KworCXJldHVybiBsYXN0UmVzdWx0OworfQorCisvKgorICogY2FuY2VsbGFibGVfZGVzY3JpYmVf cHJlcGFyZWQKICAqCi0gKiBPbiBXaW5kb3dzLCB0aGUgc2lnbmFsIGNhbmNlbGluZyBoYXBwZW5z IG9uIGEgc2VwYXJhdGUgdGhyZWFkLCBiZWNhdXNlCi0gKiB0aGF0J3MgaG93IFNldENvbnNvbGVD dHJsSGFuZGxlciB3b3Jrcy4gIFRoZSBQUWNhbmNlbCBmdW5jdGlvbiBpcyBzYWZlCi0gKiBmb3Ig dGhpcyAodW5saWtlIFBRcmVxdWVzdENhbmNlbCkuICBIb3dldmVyLCBhIENSSVRJQ0FMX1NFQ1RJ T04gaXMgcmVxdWlyZWQKLSAqIHRvIHByb3RlY3QgdGhlIFBHY2FuY2VsIHN0cnVjdHVyZSBhZ2Fp bnN0IGJlaW5nIGNoYW5nZWQgd2hpbGUgdGhlIHNpZ25hbAotICogdGhyZWFkIGlzIHVzaW5nIGl0 LgorICogTGlrZSBQUWRlc2NyaWJlUHJlcGFyZWQsIGJ1dCBjYW5jZWxsYWJsZSB2aWEgU0lHSU5U LgogICovCitQR3Jlc3VsdCAqCitjYW5jZWxsYWJsZV9kZXNjcmliZV9wcmVwYXJlZChQR2Nvbm4g KmNvbm4sIGNvbnN0IGNoYXIgKnN0bXROYW1lKQoreworCVBHcmVzdWx0ICAgKmxhc3RSZXN1bHQg PSBOVUxMOworCVBHcmVzdWx0ICAgKnJlc3VsdDsKIAotI2lmbmRlZiBXSU4zMgorCWlmICghUFFz ZW5kRGVzY3JpYmVQcmVwYXJlZChjb25uLCBzdG10TmFtZSkpCisJCXJldHVybiBQUWdldFJlc3Vs dChjb25uKTsKKworCXdoaWxlICgocmVzdWx0ID0gY2FuY2VsbGFibGVfZ2V0cmVzdWx0KGNvbm4p KSAhPSBOVUxMKQorCXsKKwkJUFFjbGVhcihsYXN0UmVzdWx0KTsKKwkJbGFzdFJlc3VsdCA9IHJl c3VsdDsKKwl9CisKKwlyZXR1cm4gbGFzdFJlc3VsdDsKK30KIAogLyoKLSAqIGhhbmRsZV9zaWdp bnQKKyAqIGNhbmNlbGxhYmxlX2ZsdXNoCiAgKgotICogSGFuZGxlIGludGVycnVwdCBzaWduYWxz IGJ5IGNhbmNlbGluZyB0aGUgY3VycmVudCBjb21tYW5kLCBpZiBjYW5jZWxDb25uCi0gKiBpcyBz ZXQuCisgKiBGbHVzaCBwZW5kaW5nIG91dHB1dCBvbiB0aGUgY29ubmVjdGlvbiwgd2FpdGluZyBm b3IgdGhlIHNvY2tldCB0byBiZWNvbWUKKyAqIHdyaXRhYmxlIGlmIG5lZWRlZC4gIENhbmNlbGxh YmxlIHZpYSBTSUdJTlQuCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9y IG9yIGNhbmNlbC4KICAqLwotc3RhdGljIHZvaWQKLWhhbmRsZV9zaWdpbnQoU0lHTkFMX0FSR1Mp CitzdGF0aWMgaW50CitjYW5jZWxsYWJsZV9mbHVzaChQR2Nvbm4gKmNvbm4sIGJvb2wgKmNhbmNl bF9zZW50KQogewotCWNoYXIJCWVycmJ1ZlsyNTZdOworCWludAkJCXJjOwogCi0JQ2FuY2VsUmVx dWVzdGVkID0gdHJ1ZTsKKwl3aGlsZSAoKHJjID0gUFFmbHVzaChjb25uKSkgPiAwKQorCXsKKwkJ aWYgKCFjYW5jZWxsYWJsZV9zb2NrZXRfd2FpdChjb25uLCBjYW5jZWxfc2VudCwgdHJ1ZSkpCisJ CQlyZXR1cm4gLTE7CisJfQogCi0JaWYgKGNhbmNlbF9jYWxsYmFjayAhPSBOVUxMKQotCQljYW5j ZWxfY2FsbGJhY2soKTsKKwlyZXR1cm4gcmM7Cit9CisKKy8qCisgKiBjYW5jZWxsYWJsZV9wdXRf Y29weV9kYXRhCisgKgorICogTGlrZSBQUXB1dENvcHlEYXRhLCBidXQgY2FuY2VsbGFibGUgdmlh IFNJR0lOVC4gIFRoZSBjb25uZWN0aW9uIG11c3QgYmUgaW4KKyAqIG5vbi1ibG9ja2luZyBtb2Rl LgorICoKKyAqIFJldHVybnMgMSBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvciBvciBjYW5jZWwuCisg Ki8KK2ludAorY2FuY2VsbGFibGVfcHV0X2NvcHlfZGF0YShQR2Nvbm4gKmNvbm4sIGNvbnN0IGNo YXIgKmJ1ZmZlciwgaW50IG5ieXRlcywKKwkJCQkJCSAgYm9vbCAqY2FuY2VsX3NlbnQpCit7CisJ aW50CQkJcmM7CiAKLQkvKiBTZW5kIFF1ZXJ5Q2FuY2VsIGlmIHdlIGFyZSBwcm9jZXNzaW5nIGEg ZGF0YWJhc2UgcXVlcnkgKi8KLQlpZiAoY2FuY2VsQ29ubiAhPSBOVUxMKQorCWZvciAoOzspCiAJ ewotCQlpZiAoUFFjYW5jZWwoY2FuY2VsQ29ubiwgZXJyYnVmLCBzaXplb2YoZXJyYnVmKSkpCisJ CXJjID0gUFFwdXRDb3B5RGF0YShjb25uLCBidWZmZXIsIG5ieXRlcyk7CisKKwkJaWYgKHJjIDwg MCkKKwkJCXJldHVybiAtMTsKKworCQlpZiAocmMgPiAwKQogCQl7Ci0JCQl3cml0ZV9zdGRlcnIo Y2FuY2VsX3NlbnRfbXNnKTsKKwkJCS8qIERhdGEgcXVldWVkLCBmbHVzaCBpdCAqLworCQkJaWYg KGNhbmNlbGxhYmxlX2ZsdXNoKGNvbm4sIGNhbmNlbF9zZW50KSA8IDApCisJCQkJcmV0dXJuIC0x OworCQkJcmV0dXJuIDE7CiAJCX0KLQkJZWxzZQorCisJCS8qIHJjID09IDA6IHdvdWxkIGJsb2Nr LCBmbHVzaCBhbmQgcmV0cnkgKi8KKwkJaWYgKGNhbmNlbGxhYmxlX2ZsdXNoKGNvbm4sIGNhbmNl bF9zZW50KSA8IDApCisJCQlyZXR1cm4gLTE7CisJfQorfQorCisvKgorICogY2FuY2VsbGFibGVf cHV0X2NvcHlfZW5kCisgKgorICogTGlrZSBQUXB1dENvcHlFbmQsIGJ1dCBjYW5jZWxsYWJsZSB2 aWEgU0lHSU5ULiAgVGhlIGNvbm5lY3Rpb24gbXVzdCBiZSBpbgorICogbm9uLWJsb2NraW5nIG1v ZGUuCisgKgorICogUmV0dXJucyAxIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yIG9yIGNhbmNlbC4K KyAqLworaW50CitjYW5jZWxsYWJsZV9wdXRfY29weV9lbmQoUEdjb25uICpjb25uLCBjb25zdCBj aGFyICplcnJvcm1zZywKKwkJCQkJCSBib29sICpjYW5jZWxfc2VudCkKK3sKKwlpbnQJCQlyYzsK KworCWZvciAoOzspCisJeworCQlyYyA9IFBRcHV0Q29weUVuZChjb25uLCBlcnJvcm1zZyk7CisK KwkJaWYgKHJjIDwgMCkKKwkJCXJldHVybiAtMTsKKworCQlpZiAocmMgPiAwKQogCQl7Ci0JCQl3 cml0ZV9zdGRlcnIoY2FuY2VsX25vdF9zZW50X21zZyk7Ci0JCQl3cml0ZV9zdGRlcnIoZXJyYnVm KTsKKwkJCS8qIEVuZCBtZXNzYWdlIHF1ZXVlZCwgZmx1c2ggaXQgKi8KKwkJCWlmIChjYW5jZWxs YWJsZV9mbHVzaChjb25uLCBjYW5jZWxfc2VudCkgPCAwKQorCQkJCXJldHVybiAtMTsKKwkJCXJl dHVybiAxOwogCQl9CisKKwkJLyogcmMgPT0gMDogd291bGQgYmxvY2ssIGZsdXNoIGFuZCByZXRy eSAqLworCQlpZiAoY2FuY2VsbGFibGVfZmx1c2goY29ubiwgY2FuY2VsX3NlbnQpIDwgMCkKKwkJ CXJldHVybiAtMTsKIAl9CiB9CiAKIC8qCi0gKiBzZXR1cF9jYW5jZWxfaGFuZGxlcgorICogSGVs cGVyIHRvIGV4ZWN1dGUgYSBsb18qIFNRTCBmdW5jdGlvbiB2aWEgY2FuY2VsbGFibGVfZXhlY19w YXJhbXMgYW5kCisgKiByZXR1cm4gYSBzaW5nbGUgaW50ZWdlciBjb2x1bW4gcmVzdWx0LiAgUmV0 dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIHdpdGgKKyAqIHRoZSBpbnRlZ2VyIHJlc3VsdCBpbiAqcmVz dWx0LiAgUmV0dXJucyBmYWxzZSBvbiBmYWlsdXJlLgorICovCitzdGF0aWMgYm9vbAorbG9fZXhl Y19pbnQoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpxdWVyeSwgaW50IG5QYXJhbXMsCisJCQlj b25zdCBjaGFyICpjb25zdCAqcGFyYW1WYWx1ZXMsIGludCAqcmVzdWx0KQoreworCVBHcmVzdWx0 ICAgKnJlczsKKworCXJlcyA9IGNhbmNlbGxhYmxlX2V4ZWNfcGFyYW1zKGNvbm4sIHF1ZXJ5LCBu UGFyYW1zLCBOVUxMLAorCQkJCQkJCQkgIHBhcmFtVmFsdWVzLCBOVUxMLCBOVUxMLCAwKTsKKwor CWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSyB8fAorCQlQUW50dXBs ZXMocmVzKSAhPSAxIHx8IFBRbmZpZWxkcyhyZXMpICE9IDEpCisJeworCQlQUWNsZWFyKHJlcyk7 CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkqcmVzdWx0ID0gYXRvaShQUWdldHZhbHVlKHJlcywg MCwgMCkpOworCVBRY2xlYXIocmVzKTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworI2RlZmluZSBMT19C VUZTSVpFIDgxOTIKKworLyoKKyAqIGNhbmNlbGxhYmxlX2xvX2V4cG9ydAogICoKLSAqIFJlZ2lz dGVyIHF1ZXJ5IGNhbmNlbGxhdGlvbiBjYWxsYmFjayBmb3IgU0lHSU5ULgorICogTGlrZSBsb19l eHBvcnQsIGJ1dCBlYWNoIHNlcnZlciByb3VuZC10cmlwIGlzIGNhbmNlbGxhYmxlIHZpYSBTSUdJ TlQuCisgKiBSZXR1cm5zIDEgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZS4KICAqLwotdm9pZAot c2V0dXBfY2FuY2VsX2hhbmRsZXIodm9pZCAoKnF1ZXJ5X2NhbmNlbF9jYWxsYmFjaykgKHZvaWQp KQoraW50CitjYW5jZWxsYWJsZV9sb19leHBvcnQoUEdjb25uICpjb25uLCBPaWQgbG9iaklkLCBj b25zdCBjaGFyICpmaWxlbmFtZSkKIHsKLQljYW5jZWxfY2FsbGJhY2sgPSBxdWVyeV9jYW5jZWxf Y2FsbGJhY2s7Ci0JY2FuY2VsX3NlbnRfbXNnID0gXygiQ2FuY2VsIHJlcXVlc3Qgc2VudFxuIik7 Ci0JY2FuY2VsX25vdF9zZW50X21zZyA9IF8oIkNvdWxkIG5vdCBzZW5kIGNhbmNlbCByZXF1ZXN0 OiAiKTsKKwljaGFyCQlvaWRidWZbMzJdOworCWNoYXIJCWZkYnVmWzMyXTsKKwljaGFyCQlsZW5i dWZbMzJdOworCWNvbnN0IGNoYXIgKnBhcmFtc1syXTsKKwlpbnQJCQlsb2JqOworCWludAkJCWZk OworCWludAkJCXJlc3VsdCA9IDE7CisKKwkvKiBsb19vcGVuICovCisJc3ByaW50ZihvaWRidWYs ICIldSIsIGxvYmpJZCk7CisJc3ByaW50ZihsZW5idWYsICIlZCIsIElOVl9SRUFEKTsKKwlwYXJh bXNbMF0gPSBvaWRidWY7CisJcGFyYW1zWzFdID0gbGVuYnVmOworCWlmICghbG9fZXhlY19pbnQo Y29ubiwgIlNFTEVDVCBsb19vcGVuKCQxOjpvaWQsICQyOjppbnQ0KSIsCisJCQkJCSAyLCBwYXJh bXMsICZsb2JqKSkKKwkJcmV0dXJuIC0xOworCWlmIChsb2JqID09IC0xKQorCQlyZXR1cm4gLTE7 CisKKwlzcHJpbnRmKGZkYnVmLCAiJWQiLCBsb2JqKTsKKworCS8qIE9wZW4gbG9jYWwgZmlsZSAq LworCWZkID0gb3BlbihmaWxlbmFtZSwgT19DUkVBVCB8IE9fV1JPTkxZIHwgT19UUlVOQyB8IFBH X0JJTkFSWSwgMDY2Nik7CisJaWYgKGZkIDwgMCkKKwl7CisJCXBnX2xvZ19lcnJvcigiY291bGQg bm90IG9wZW4gZmlsZSBcIiVzXCI6ICVtIiwgZmlsZW5hbWUpOworCQlwYXJhbXNbMF0gPSBmZGJ1 ZjsKKwkJY2FuY2VsbGFibGVfZXhlY19wYXJhbXMoY29ubiwgIlNFTEVDVCBsb19jbG9zZSgkMTo6 aW50NCkiLAorCQkJCQkJCQkxLCBOVUxMLCBwYXJhbXMsIE5VTEwsIE5VTEwsIDApOworCQlyZXR1 cm4gLTE7CisJfQogCi0JcHFzaWduYWwoU0lHSU5ULCBoYW5kbGVfc2lnaW50KTsKKwkvKiBSZWFk IGxvb3AgKi8KKwlzcHJpbnRmKGxlbmJ1ZiwgIiVkIiwgTE9fQlVGU0laRSk7CisJcGFyYW1zWzBd ID0gZmRidWY7CisJcGFyYW1zWzFdID0gbGVuYnVmOworCWZvciAoOzspCisJeworCQlQR3Jlc3Vs dCAgICpyZXM7CisJCWNoYXIJICAgKmRhdGE7CisJCWludAkJCW5ieXRlczsKKwkJaW50CQkJd3Jp dHRlbjsKKworCQlyZXMgPSBjYW5jZWxsYWJsZV9leGVjX3BhcmFtcyhjb25uLAorCQkJCQkJCQkJ ICAiU0VMRUNUIGxvcmVhZCgkMTo6aW50NCwgJDI6OmludDQpIiwKKwkJCQkJCQkJCSAgMiwgTlVM TCwgcGFyYW1zLCBOVUxMLCBOVUxMLCAxKTsKKwkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0g UEdSRVNfVFVQTEVTX09LKQorCQl7CisJCQlQUWNsZWFyKHJlcyk7CisJCQlyZXN1bHQgPSAtMTsK KwkJCWJyZWFrOworCQl9CisKKwkJbmJ5dGVzID0gUFFnZXRsZW5ndGgocmVzLCAwLCAwKTsKKwkJ aWYgKG5ieXRlcyA9PSAwKQorCQl7CisJCQlQUWNsZWFyKHJlcyk7CisJCQlicmVhazsKKwkJfQor CisJCWRhdGEgPSBQUWdldHZhbHVlKHJlcywgMCwgMCk7CisJCXdyaXR0ZW4gPSB3cml0ZShmZCwg ZGF0YSwgbmJ5dGVzKTsKKwkJUFFjbGVhcihyZXMpOworCisJCWlmICh3cml0dGVuICE9IG5ieXRl cykKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgd3JpdGUgdG8gZmlsZSBcIiVzXCI6 ICVtIiwgZmlsZW5hbWUpOworCQkJcmVzdWx0ID0gLTE7CisJCQlicmVhazsKKwkJfQorCX0KKwor CWNsb3NlKGZkKTsKKworCS8qCisJICogSWYgdGhlIHJlYWQgbG9vcCBmYWlsZWQsIHdlJ3JlIGxp a2VseSBpbiBhbiBhYm9ydGVkIHRyYW5zYWN0aW9uLCBzbworCSAqIHNraXAgbG9fY2xvc2UgdG8g YXZvaWQgb3ZlcndyaXRpbmcgdGhlIHVzZWZ1bCBlcnJvciBtZXNzYWdlLgorCSAqLworCWlmIChy ZXN1bHQgPT0gMSkKKwl7CisJCWludAkJCWNsb3NlX3Jlc3VsdDsKKworCQlwYXJhbXNbMF0gPSBm ZGJ1ZjsKKwkJaWYgKCFsb19leGVjX2ludChjb25uLCAiU0VMRUNUIGxvX2Nsb3NlKCQxOjppbnQ0 KSIsCisJCQkJCQkgMSwgcGFyYW1zLCAmY2xvc2VfcmVzdWx0KSB8fAorCQkJY2xvc2VfcmVzdWx0 ICE9IDApCisJCQlyZXN1bHQgPSAtMTsKKwl9CisKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKgor ICogY2FuY2VsbGFibGVfbG9faW1wb3J0CisgKgorICogTGlrZSBsb19pbXBvcnQsIGJ1dCBlYWNo IHNlcnZlciByb3VuZC10cmlwIGlzIGNhbmNlbGxhYmxlIHZpYSBTSUdJTlQuCisgKiBSZXR1cm5z IHRoZSBPSUQgb2YgdGhlIG5ldyBsYXJnZSBvYmplY3QsIG9yIEludmFsaWRPaWQgb24gZmFpbHVy ZS4KKyAqLworT2lkCitjYW5jZWxsYWJsZV9sb19pbXBvcnQoUEdjb25uICpjb25uLCBjb25zdCBj aGFyICpmaWxlbmFtZSkKK3sKKwljaGFyCQlvaWRidWZbMzJdOworCWNoYXIJCWZkYnVmWzMyXTsK KwljaGFyCQltb2RlYnVmWzMyXTsKKwljb25zdCBjaGFyICpwYXJhbXNbMl07CisJaW50CQkJcGFy YW1MZW5ndGhzWzJdOworCWludAkJCXBhcmFtRm9ybWF0c1syXTsKKwlpbnQJCQlmZDsKKwlPaWQJ CQlsb2JqT2lkOworCWludAkJCWxvYmo7CisJaW50CQkJdG1wOworCWNoYXIJCWJ1ZltMT19CVUZT SVpFXTsKKwlpbnQJCQluYnl0ZXM7CisKKwkvKiBPcGVuIGxvY2FsIGZpbGUgKi8KKwlmZCA9IG9w ZW4oZmlsZW5hbWUsIE9fUkRPTkxZIHwgUEdfQklOQVJZLCAwNjY2KTsKKwlpZiAoZmQgPCAwKQor CXsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJW0iLCBmaWxl bmFtZSk7CisJCXJldHVybiBJbnZhbGlkT2lkOworCX0KKworCS8qIGxvX2NyZWF0ICovCisJc3By aW50Zihtb2RlYnVmLCAiJWQiLCBJTlZfUkVBRCB8IElOVl9XUklURSk7CisJcGFyYW1zWzBdID0g bW9kZWJ1ZjsKKwlpZiAoIWxvX2V4ZWNfaW50KGNvbm4sICJTRUxFQ1QgbG9fY3JlYXQoJDE6Omlu dDQpIiwKKwkJCQkJIDEsIHBhcmFtcywgJnRtcCkpCisJeworCQljbG9zZShmZCk7CisJCXJldHVy biBJbnZhbGlkT2lkOworCX0KKwlsb2JqT2lkID0gKE9pZCkgdG1wOworCWlmIChsb2JqT2lkID09 IEludmFsaWRPaWQpCisJeworCQljbG9zZShmZCk7CisJCXJldHVybiBJbnZhbGlkT2lkOworCX0K KworCS8qIGxvX29wZW4gKi8KKwlzcHJpbnRmKG9pZGJ1ZiwgIiV1IiwgbG9iak9pZCk7CisJc3By aW50Zihtb2RlYnVmLCAiJWQiLCBJTlZfV1JJVEUpOworCXBhcmFtc1swXSA9IG9pZGJ1ZjsKKwlw YXJhbXNbMV0gPSBtb2RlYnVmOworCWlmICghbG9fZXhlY19pbnQoY29ubiwgIlNFTEVDVCBsb19v cGVuKCQxOjpvaWQsICQyOjppbnQ0KSIsCisJCQkJCSAyLCBwYXJhbXMsICZsb2JqKSkKKwl7CisJ CWNsb3NlKGZkKTsKKwkJcmV0dXJuIEludmFsaWRPaWQ7CisJfQorCWlmIChsb2JqID09IC0xKQor CXsKKwkJY2xvc2UoZmQpOworCQlyZXR1cm4gSW52YWxpZE9pZDsKKwl9CisKKwlzcHJpbnRmKGZk YnVmLCAiJWQiLCBsb2JqKTsKKworCS8qIFdyaXRlIGxvb3A6IHJlYWQgZnJvbSBmaWxlLCB3cml0 ZSB0byBsYXJnZSBvYmplY3QgKi8KKwl3aGlsZSAoKG5ieXRlcyA9IHJlYWQoZmQsIGJ1ZiwgTE9f QlVGU0laRSkpID4gMCkKKwl7CisJCVBHcmVzdWx0ICAgKnJlczsKKworCQlwYXJhbUZvcm1hdHNb MF0gPSAwOwkvKiB0ZXh0IGZvciBmZCAqLworCQlwYXJhbUZvcm1hdHNbMV0gPSAxOwkvKiBiaW5h cnkgZm9yIGJ5dGVhIGRhdGEgKi8KKwkJcGFyYW1MZW5ndGhzWzBdID0gMDsKKwkJcGFyYW1MZW5n dGhzWzFdID0gbmJ5dGVzOworCQlwYXJhbXNbMF0gPSBmZGJ1ZjsKKwkJcGFyYW1zWzFdID0gYnVm OworCisJCXJlcyA9IGNhbmNlbGxhYmxlX2V4ZWNfcGFyYW1zKGNvbm4sCisJCQkJCQkJCQkgICJT RUxFQ1QgbG93cml0ZSgkMTo6aW50NCwgJDI6OmJ5dGVhKSIsCisJCQkJCQkJCQkgIDIsIE5VTEws IHBhcmFtcywKKwkJCQkJCQkJCSAgcGFyYW1MZW5ndGhzLCBwYXJhbUZvcm1hdHMsIDApOworCQlp ZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCisJCXsKKwkJCVBRY2xl YXIocmVzKTsKKwkJCWNsb3NlKGZkKTsKKwkJCXJldHVybiBJbnZhbGlkT2lkOworCQl9CisKKwkJ dG1wID0gYXRvaShQUWdldHZhbHVlKHJlcywgMCwgMCkpOworCQlQUWNsZWFyKHJlcyk7CisKKwkJ aWYgKHRtcCAhPSBuYnl0ZXMpCisJCXsKKwkJCWNsb3NlKGZkKTsKKwkJCXJldHVybiBJbnZhbGlk T2lkOworCQl9CisJfQorCisJaWYgKG5ieXRlcyA8IDApCisJeworCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCByZWFkIGZyb20gZmlsZSBcIiVzXCI6ICVtIiwgZmlsZW5hbWUpOworCQlwYXJhbXNb MF0gPSBmZGJ1ZjsKKwkJcGFyYW1Gb3JtYXRzWzBdID0gMDsKKwkJY2FuY2VsbGFibGVfZXhlY19w YXJhbXMoY29ubiwgIlNFTEVDVCBsb19jbG9zZSgkMTo6aW50NCkiLAorCQkJCQkJCQkxLCBOVUxM LCBwYXJhbXMsIE5VTEwsIE5VTEwsIDApOworCQljbG9zZShmZCk7CisJCXJldHVybiBJbnZhbGlk T2lkOworCX0KKworCWNsb3NlKGZkKTsKKworCS8qIGxvX2Nsb3NlICovCisJcGFyYW1zWzBdID0g ZmRidWY7CisJaWYgKCFsb19leGVjX2ludChjb25uLCAiU0VMRUNUIGxvX2Nsb3NlKCQxOjppbnQ0 KSIsCisJCQkJCSAxLCBwYXJhbXMsICZ0bXApIHx8CisJCXRtcCAhPSAwKQorCQlyZXR1cm4gSW52 YWxpZE9pZDsKKworCXJldHVybiBsb2JqT2lkOworfQorCisvKgorICogY2FuY2VsbGFibGVfbG9f dW5saW5rCisgKgorICogTGlrZSBsb191bmxpbmssIGJ1dCBjYW5jZWxsYWJsZSB2aWEgU0lHSU5U LgorICogUmV0dXJucyAxIG9uIHN1Y2Nlc3MsIC0xIG9uIGZhaWx1cmUuCisgKi8KK2ludAorY2Fu Y2VsbGFibGVfbG9fdW5saW5rKFBHY29ubiAqY29ubiwgT2lkIGxvYmpJZCkKK3sKKwljaGFyCQlv aWRidWZbMzJdOworCWNvbnN0IGNoYXIgKnBhcmFtc1sxXTsKKwlpbnQJCQlyZXN1bHQ7CisKKwlz cHJpbnRmKG9pZGJ1ZiwgIiV1IiwgbG9iaklkKTsKKwlwYXJhbXNbMF0gPSBvaWRidWY7CisKKwlp ZiAoIWxvX2V4ZWNfaW50KGNvbm4sICJTRUxFQ1QgbG9fdW5saW5rKCQxOjpvaWQpIiwKKwkJCQkJ IDEsIHBhcmFtcywgJnJlc3VsdCkpCisJCXJldHVybiAtMTsKKworCXJldHVybiByZXN1bHQ7Cit9 CisKKy8qCisgKiBjYW5jZWxfcGlwZV9mZAorICoKKyAqIFJldHVybiB0aGUgcmVhZCBlbmQgb2Yg dGhlIGNhbmNlbCBwaXBlLCBmb3IgdXNlIGluIHNlbGVjdCgpL3BvbGwoKSBieQorICogY2FsbGVy cyB0aGF0IG1hbmFnZSB0aGVpciBvd24gd2FpdCBsb29wcyAoZS5nLiBwYXJhbGxlbF9zbG90LmMp LgorICogUmV0dXJucyAtMSBvbiBXaW5kb3dzIG9yIGlmIHRoZSBjYW5jZWwgaGFuZGxlciBoYXNu J3QgYmVlbiBzZXQgdXAuCisgKi8KK2ludAorY2FuY2VsX3BpcGVfZmQodm9pZCkKK3sKKyNpZm5k ZWYgV0lOMzIKKwlyZXR1cm4gY2FuY2VsX3BpcGVbMF07CisjZWxzZQorCXJldHVybiAtMTsKKyNl bmRpZgogfQogCi0jZWxzZQkJCQkJCQkvKiBXSU4zMiAqLwogCisjaWZkZWYgV0lOMzIKKy8qCisg KiBDb25zb2xlIGNvbnRyb2wgaGFuZGxlciBmb3IgV2luZG93cy4KKyAqCisgKiBUaGlzIHJ1bnMg aW4gYSBzZXBhcmF0ZSB0aHJlYWQgY3JlYXRlZCBieSB0aGUgT1MuICBJdCBzZXRzCisgKiBDYW5j ZWxSZXF1ZXN0ZWQgYW5kIGludm9rZXMgdGhlIGNhbGxiYWNrLCBidXQgZG9lcyBub3Qgc2VuZCBh IGNhbmNlbAorICogcmVxdWVzdCBpdHNlbGYgLS0gdGhhdCBpcyBkb25lIGJ5IHRoZSBtYWluIHRo cmVhZCBpbiB0aGUgY2FuY2VsbGFibGUKKyAqIHdhaXQgZnVuY3Rpb25zIHdoZW4gaXQgbm90aWNl cyBDYW5jZWxSZXF1ZXN0ZWQuCisgKi8KIHN0YXRpYyBCT09MIFdJTkFQSQogY29uc29sZUhhbmRs ZXIoRFdPUkQgZHdDdHJsVHlwZSkKIHsKLQljaGFyCQllcnJidWZbMjU2XTsKLQogCWlmIChkd0N0 cmxUeXBlID09IENUUkxfQ19FVkVOVCB8fAogCQlkd0N0cmxUeXBlID09IENUUkxfQlJFQUtfRVZF TlQpCiAJewogCQlDYW5jZWxSZXF1ZXN0ZWQgPSB0cnVlOwogCisJCWlmIChjYW5jZWxfZXZlbnQp CisJCQlTZXRFdmVudChjYW5jZWxfZXZlbnQpOworCiAJCWlmIChjYW5jZWxfY2FsbGJhY2sgIT0g TlVMTCkKIAkJCWNhbmNlbF9jYWxsYmFjaygpOwogCi0JCS8qIFNlbmQgUXVlcnlDYW5jZWwgaWYg d2UgYXJlIHByb2Nlc3NpbmcgYSBkYXRhYmFzZSBxdWVyeSAqLwotCQlFbnRlckNyaXRpY2FsU2Vj dGlvbigmY2FuY2VsQ29ubkxvY2spOwotCQlpZiAoY2FuY2VsQ29ubiAhPSBOVUxMKQotCQl7Ci0J CQlpZiAoUFFjYW5jZWwoY2FuY2VsQ29ubiwgZXJyYnVmLCBzaXplb2YoZXJyYnVmKSkpCi0JCQl7 Ci0JCQkJd3JpdGVfc3RkZXJyKGNhbmNlbF9zZW50X21zZyk7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7 Ci0JCQkJd3JpdGVfc3RkZXJyKGNhbmNlbF9ub3Rfc2VudF9tc2cpOwotCQkJCXdyaXRlX3N0ZGVy cihlcnJidWYpOwotCQkJfQotCQl9Ci0KLQkJTGVhdmVDcml0aWNhbFNlY3Rpb24oJmNhbmNlbENv bm5Mb2NrKTsKLQogCQlyZXR1cm4gVFJVRTsKIAl9CiAJZWxzZQpAQCAtMjI4LDE2ICs4NjksNzcg QEAgY29uc29sZUhhbmRsZXIoRFdPUkQgZHdDdHJsVHlwZSkKIAkJcmV0dXJuIEZBTFNFOwogfQog CisjZWxzZQkJCQkJCQkvKiAhV0lOMzIgKi8KKworLyoKKyAqIFNpZ25hbCBoYW5kbGVyIGZvciBT SUdJTlQuICBTZXRzIENhbmNlbFJlcXVlc3RlZCBhbmQgd2FrZXMgdXAgdGhlIG1haW4KKyAqIHRo cmVhZCBieSB3cml0aW5nIHRvIHRoZSBwaXBlLgorICovCitzdGF0aWMgdm9pZAoraGFuZGxlX3Np Z2ludChTSUdOQUxfQVJHUykKK3sKKwlpbnQJCQlzYXZlX2Vycm5vID0gZXJybm87CisJY2hhcgkJ YyA9IDE7CisKKwlDYW5jZWxSZXF1ZXN0ZWQgPSB0cnVlOworCisJaWYgKGNhbmNlbF9jYWxsYmFj ayAhPSBOVUxMKQorCQljYW5jZWxfY2FsbGJhY2soKTsKKworCS8qIFdha2UgdXAgdGhlIG1haW4g dGhyZWFkJ3Mgc2VsZWN0KCkgY2FsbCAqLworCWlmIChjYW5jZWxfcGlwZVsxXSA+PSAwKQorCQko dm9pZCkgd3JpdGUoY2FuY2VsX3BpcGVbMV0sICZjLCAxKTsKKworCWVycm5vID0gc2F2ZV9lcnJu bzsKK30KKworI2VuZGlmCQkJCQkJCS8qIFdJTjMyICovCisKKworLyoKKyAqIHNldHVwX2NhbmNl bF9oYW5kbGVyCisgKgorICogU2V0IHVwIGhhbmRsZXIgZm9yIFNJR0lOVCAoVW5peCkgb3IgY29u c29sZSBldmVudHMgKFdpbmRvd3MpIHRvIHNlbmQgYQorICogY2FuY2VsIHJlcXVlc3QgdG8gdGhl IHNlcnZlci4KKyAqCisgKiBUaGUgb3B0aW9uYWwgY2FsbGJhY2sgaXMgaW52b2tlZCBkaXJlY3Rs eSBmcm9tIHRoZSBzaWduYWwgaGFuZGxlciBjb250ZXh0CisgKiBvbiBldmVyeSBTSUdJTlQgKG9u IFVuaXgpLCBzbyBpdCBtdXN0IGJlIGFzeW5jLXNpZ25hbC1zYWZlLgorICovCiB2b2lkCi1zZXR1 cF9jYW5jZWxfaGFuZGxlcih2b2lkICgqY2FsbGJhY2spICh2b2lkKSkKK3NldHVwX2NhbmNlbF9o YW5kbGVyKHZvaWQgKCpxdWVyeV9jYW5jZWxfY2FsbGJhY2spICh2b2lkKSkKIHsKLQljYW5jZWxf Y2FsbGJhY2sgPSBjYWxsYmFjazsKKwljYW5jZWxfY2FsbGJhY2sgPSBxdWVyeV9jYW5jZWxfY2Fs bGJhY2s7CiAJY2FuY2VsX3NlbnRfbXNnID0gXygiQ2FuY2VsIHJlcXVlc3Qgc2VudFxuIik7CiAJ Y2FuY2VsX25vdF9zZW50X21zZyA9IF8oIkNvdWxkIG5vdCBzZW5kIGNhbmNlbCByZXF1ZXN0OiAi KTsKIAotCUluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oJmNhbmNlbENvbm5Mb2NrKTsKLQorI2lm ZGVmIFdJTjMyCisJY2FuY2VsX2V2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgVFJVRSwgRkFMU0Us IE5VTEwpOworCWlmIChjYW5jZWxfZXZlbnQgPT0gTlVMTCkKKwl7CisJCXBnX2xvZ19lcnJvcigi Y291bGQgbm90IGNyZWF0ZSBldmVudCBmb3IgY2FuY2VsOiBlcnJvciBjb2RlICVsdSIsCisJCQkJ CSBHZXRMYXN0RXJyb3IoKSk7CisJCWV4aXQoMSk7CisJfQogCVNldENvbnNvbGVDdHJsSGFuZGxl cihjb25zb2xlSGFuZGxlciwgVFJVRSk7Ci19CisjZWxzZQogCi0jZW5kaWYJCQkJCQkJLyogV0lO MzIgKi8KKwkvKgorCSAqIENyZWF0ZSB0aGUgcGlwZSB0aGF0IHRoZSBzaWduYWwgaGFuZGxlciB1 c2VzIHRvIHdha2UgdGhlIG1haW4gdGhyZWFkLgorCSAqIFNlZSBjb21tZW50IG9uIGNhbmNlbF9w aXBlIGFib3ZlLgorCSAqLworCWlmIChwaXBlKGNhbmNlbF9waXBlKSA8IDApCisJeworCQlwZ19s b2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgcGlwZSBmb3IgY2FuY2VsOiAlbSIpOworCQlleGl0 KDEpOworCX0KKworCS8qCisJICogTWFrZSBib3RoIGVuZHMgbm9uLWJsb2NraW5nOiB0aGUgd3Jp dGUgZW5kIHNvIHRoYXQgdGhlIHNpZ25hbCBoYW5kbGVyCisJICogd29uJ3QgYmxvY2ssIGFuZCB0 aGUgcmVhZCBlbmQgc28gdGhhdCBkcmFpbl9jYW5jZWxfcGlwZSgpIHdvbid0IGJsb2NrLgorCSAq LworCWZjbnRsKGNhbmNlbF9waXBlWzBdLCBGX1NFVEZMLCBPX05PTkJMT0NLKTsKKwlmY250bChj YW5jZWxfcGlwZVsxXSwgRl9TRVRGTCwgT19OT05CTE9DSyk7CisKKwlwcXNpZ25hbChTSUdJTlQs IGhhbmRsZV9zaWdpbnQpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9zcmMvZmVfdXRpbHMvcGFy YWxsZWxfc2xvdC5jIGIvc3JjL2ZlX3V0aWxzL3BhcmFsbGVsX3Nsb3QuYwppbmRleCBmYjllNmNj NGVjMS4uZGJmOTU4YzU2NTYgMTAwNjQ0Ci0tLSBhL3NyYy9mZV91dGlscy9wYXJhbGxlbF9zbG90 LmMKKysrIGIvc3JjL2ZlX3V0aWxzL3BhcmFsbGVsX3Nsb3QuYwpAQCAtNjAsMTMgKzYwLDExIEBA IGNvbnN1bWVRdWVyeVJlc3VsdChQYXJhbGxlbFNsb3QgKnNsb3QpCiAJYm9vbAkJb2sgPSB0cnVl OwogCVBHcmVzdWx0ICAgKnJlc3VsdDsKIAotCVNldENhbmNlbENvbm4oc2xvdC0+Y29ubmVjdGlv bik7Ci0Jd2hpbGUgKChyZXN1bHQgPSBQUWdldFJlc3VsdChzbG90LT5jb25uZWN0aW9uKSkgIT0g TlVMTCkKKwl3aGlsZSAoKHJlc3VsdCA9IGNhbmNlbGxhYmxlX2dldHJlc3VsdChzbG90LT5jb25u ZWN0aW9uKSkgIT0gTlVMTCkKIAl7CiAJCWlmICghcHJvY2Vzc1F1ZXJ5UmVzdWx0KHNsb3QsIHJl c3VsdCkpCiAJCQlvayA9IGZhbHNlOwogCX0KLQlSZXNldENhbmNlbENvbm4oKTsKIAlyZXR1cm4g b2s7CiB9CiAKQEAgLTgxLDYgKzc5LDcgQEAgc2VsZWN0X2xvb3AoaW50IG1heEZkLCBmZF9zZXQg KndvcmtlcnNldCkKIHsKIAlpbnQJCQlpOwogCWZkX3NldAkJc2F2ZVNldCA9ICp3b3JrZXJzZXQ7 CisJaW50CQkJY2FuY2VsX2ZkID0gY2FuY2VsX3BpcGVfZmQoKTsKIAogCWlmIChDYW5jZWxSZXF1 ZXN0ZWQpCiAJCXJldHVybiAtMTsKQEAgLTg5LDcgKzg4LDggQEAgc2VsZWN0X2xvb3AoaW50IG1h eEZkLCBmZF9zZXQgKndvcmtlcnNldCkKIAl7CiAJCS8qCiAJCSAqIE9uIFdpbmRvd3MsIHdlIG5l ZWQgdG8gY2hlY2sgb25jZSBpbiBhIHdoaWxlIGZvciBjYW5jZWwgcmVxdWVzdHM7Ci0JCSAqIG9u IG90aGVyIHBsYXRmb3JtcyB3ZSByZWx5IG9uIHNlbGVjdCgpIHJldHVybmluZyB3aGVuIGludGVy cnVwdGVkLgorCQkgKiBvbiBvdGhlciBwbGF0Zm9ybXMgdGhlIGNhbmNlbCBwaXBlIG1ha2VzIHNl bGVjdCgpIHJldHVybgorCQkgKiBpbW1lZGlhdGVseSB3aGVuIFNJR0lOVCBhcnJpdmVzLgogCQkg Ki8KIAkJc3RydWN0IHRpbWV2YWwgKnR2cDsKICNpZmRlZiBXSU4zMgpAQCAtMTAxLDYgKzEwMSwx NiBAQCBzZWxlY3RfbG9vcChpbnQgbWF4RmQsIGZkX3NldCAqd29ya2Vyc2V0KQogI2VuZGlmCiAK IAkJKndvcmtlcnNldCA9IHNhdmVTZXQ7CisKKyNpZm5kZWYgV0lOMzIKKwkJaWYgKGNhbmNlbF9m ZCA+PSAwKQorCQl7CisJCQlGRF9TRVQoY2FuY2VsX2ZkLCB3b3JrZXJzZXQpOworCQkJaWYgKGNh bmNlbF9mZCA+IG1heEZkKQorCQkJCW1heEZkID0gY2FuY2VsX2ZkOworCQl9CisjZW5kaWYKKwog CQlpID0gc2VsZWN0KG1heEZkICsgMSwgd29ya2Vyc2V0LCBOVUxMLCBOVUxMLCB0dnApOwogCiAj aWZkZWYgV0lOMzIKQEAgLTExNSwxMCArMTI1LDI1IEBAIHNlbGVjdF9sb29wKGludCBtYXhGZCwg ZmRfc2V0ICp3b3JrZXJzZXQpCiAKIAkJaWYgKGkgPCAwICYmIGVycm5vID09IEVJTlRSKQogCQkJ Y29udGludWU7CQkJLyogaWdub3JlIHRoaXMgKi8KLQkJaWYgKGkgPCAwIHx8IENhbmNlbFJlcXVl c3RlZCkKLQkJCXJldHVybiAtMTsJCQkvKiBidXQgbm90IHRoaXMgKi8KKwkJaWYgKGkgPCAwKQor CQkJcmV0dXJuIC0xOworCisjaWZuZGVmIFdJTjMyCisJCWlmIChjYW5jZWxfZmQgPj0gMCAmJiBG RF9JU1NFVChjYW5jZWxfZmQsIHdvcmtlcnNldCkpCisJCQlyZXR1cm4gLTE7CQkJLyogY2FuY2Vs IHJlcXVlc3RlZCAqLworI2VuZGlmCisKKwkJaWYgKENhbmNlbFJlcXVlc3RlZCkKKwkJCXJldHVy biAtMTsKIAkJaWYgKGkgPT0gMCkKIAkJCWNvbnRpbnVlOwkJCS8qIHRpbWVvdXQgKFdpbjMyIG9u bHkpICovCisKKyNpZm5kZWYgV0lOMzIKKwkJLyogUmVtb3ZlIHRoZSBjYW5jZWwgcGlwZSBmcm9t IHRoZSByZXR1cm5lZCBzZXQgKi8KKwkJaWYgKGNhbmNlbF9mZCA+PSAwKQorCQkJRkRfQ0xSKGNh bmNlbF9mZCwgd29ya2Vyc2V0KTsKKyNlbmRpZgorCiAJCWJyZWFrOwogCX0KIApAQCAtMjM1LDEz ICsyNjAsMTUgQEAgd2FpdF9vbl9zbG90cyhQYXJhbGxlbFNsb3RBcnJheSAqc2EpCiAJaWYgKGNh bmNlbGNvbm4gPT0gTlVMTCkKIAkJcmV0dXJuIGZhbHNlOwogCi0JU2V0Q2FuY2VsQ29ubihjYW5j ZWxjb25uKTsKIAlpID0gc2VsZWN0X2xvb3AobWF4RmQsICZzbG90c2V0KTsKLQlSZXNldENhbmNl bENvbm4oKTsKIAotCS8qIGZhaWx1cmU/ICovCisJLyogZmFpbHVyZSBvciBjYW5jZWw/ICovCiAJ aWYgKGkgPCAwKQorCXsKKwkJaWYgKENhbmNlbFJlcXVlc3RlZCAmJiBjYW5jZWxjb25uICE9IE5V TEwpCisJCQlzZW5kX2NhbmNlbChjYW5jZWxjb25uKTsKIAkJcmV0dXJuIGZhbHNlOworCX0KIAog CWZvciAoaSA9IDA7IGkgPCBzYS0+bnVtc2xvdHM7IGkrKykKIAl7CmRpZmYgLS1naXQgYS9zcmMv ZmVfdXRpbHMvcXVlcnlfdXRpbHMuYyBiL3NyYy9mZV91dGlscy9xdWVyeV91dGlscy5jCmluZGV4 IGMwNWZkOWMyMWRmLi43ZTViNjY3NjEwMiAxMDA2NDQKLS0tIGEvc3JjL2ZlX3V0aWxzL3F1ZXJ5 X3V0aWxzLmMKKysrIGIvc3JjL2ZlX3V0aWxzL3F1ZXJ5X3V0aWxzLmMKQEAgLTI2LDcgKzI2LDcg QEAgZXhlY3V0ZVF1ZXJ5KFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcXVlcnksIGJvb2wgZWNo bykKIAlpZiAoZWNobykKIAkJcHJpbnRmKCIlc1xuIiwgcXVlcnkpOwogCi0JcmVzID0gUFFleGVj KGNvbm4sIHF1ZXJ5KTsKKwlyZXMgPSBjYW5jZWxsYWJsZV9leGVjKGNvbm4sIHF1ZXJ5KTsKIAlp ZiAoIXJlcyB8fAogCQlQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKIAl7 CkBAIC01MSw3ICs1MSw3IEBAIGV4ZWN1dGVDb21tYW5kKFBHY29ubiAqY29ubiwgY29uc3QgY2hh ciAqcXVlcnksIGJvb2wgZWNobykKIAlpZiAoZWNobykKIAkJcHJpbnRmKCIlc1xuIiwgcXVlcnkp OwogCi0JcmVzID0gUFFleGVjKGNvbm4sIHF1ZXJ5KTsKKwlyZXMgPSBjYW5jZWxsYWJsZV9leGVj KGNvbm4sIHF1ZXJ5KTsKIAlpZiAoIXJlcyB8fAogCQlQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBH UkVTX0NPTU1BTkRfT0spCiAJewpAQCAtNzksOSArNzksNyBAQCBleGVjdXRlTWFpbnRlbmFuY2VD b21tYW5kKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcXVlcnksIGJvb2wgZWNobykKIAlpZiAo ZWNobykKIAkJcHJpbnRmKCIlc1xuIiwgcXVlcnkpOwogCi0JU2V0Q2FuY2VsQ29ubihjb25uKTsK LQlyZXMgPSBQUWV4ZWMoY29ubiwgcXVlcnkpOwotCVJlc2V0Q2FuY2VsQ29ubigpOworCXJlcyA9 IGNhbmNlbGxhYmxlX2V4ZWMoY29ubiwgcXVlcnkpOwogCiAJciA9IChyZXMgJiYgUFFyZXN1bHRT dGF0dXMocmVzKSA9PSBQR1JFU19DT01NQU5EX09LKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvZmVfdXRpbHMvY2FuY2VsLmggYi9zcmMvaW5jbHVkZS9mZV91dGlscy9jYW5jZWwuaAppbmRl eCBlMTc0ZmI4M2I5Mi4uMTY2NGMyNzhhOTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2ZlX3V0 aWxzL2NhbmNlbC5oCisrKyBiL3NyYy9pbmNsdWRlL2ZlX3V0aWxzL2NhbmNlbC5oCkBAIC0yLDYg KzIsNyBAQAogICoKICAqIFF1ZXJ5IGNhbmNlbGxhdGlvbiBzdXBwb3J0IGZvciBmcm9udGVuZCBj b2RlCiAgKgorICogU2VlIGNhbmNlbC5jIGZvciBhbiBvdmVydmlldyBvZiB0aGUgdGhyZWUgY2Fu Y2VsbGF0aW9uIG1lY2hhbmlzbXMuCiAgKgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2 LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5p YQpAQCAtMjAsMTMgKzIxLDMyIEBACiAKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdf YXRvbWljX3QgQ2FuY2VsUmVxdWVzdGVkOwogCi1leHRlcm4gdm9pZCBTZXRDYW5jZWxDb25uKFBH Y29ubiAqY29ubik7Ci1leHRlcm4gdm9pZCBSZXNldENhbmNlbENvbm4odm9pZCk7Ci0KLS8qCi0g KiBBIGNhbGxiYWNrIGNhbiBiZSBvcHRpb25hbGx5IHNldCB1cCB0byBiZSBjYWxsZWQgYXQgY2Fu Y2VsbGF0aW9uCi0gKiB0aW1lLgotICovCiBleHRlcm4gdm9pZCBzZXR1cF9jYW5jZWxfaGFuZGxl cih2b2lkICgqcXVlcnlfY2FuY2VsX2NhbGxiYWNrKSAodm9pZCkpOwogCitleHRlcm4gdm9pZCBz ZW5kX2NhbmNlbChQR2Nvbm4gKmNvbm4pOworZXh0ZXJuIFBHcmVzdWx0ICpjYW5jZWxsYWJsZV9l eGVjKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcXVlcnkpOworZXh0ZXJuIFBHcmVzdWx0ICpj YW5jZWxsYWJsZV9leGVjX3BhcmFtcyhQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnF1ZXJ5LAor CQkJCQkJCQkJCSBpbnQgblBhcmFtcywgY29uc3QgT2lkICpwYXJhbVR5cGVzLAorCQkJCQkJCQkJ CSBjb25zdCBjaGFyICpjb25zdCAqcGFyYW1WYWx1ZXMsCisJCQkJCQkJCQkJIGNvbnN0IGludCAq cGFyYW1MZW5ndGhzLAorCQkJCQkJCQkJCSBjb25zdCBpbnQgKnBhcmFtRm9ybWF0cywKKwkJCQkJ CQkJCQkgaW50IHJlc3VsdEZvcm1hdCk7CitleHRlcm4gUEdyZXN1bHQgKmNhbmNlbGxhYmxlX3By ZXBhcmUoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpzdG10TmFtZSwKKwkJCQkJCQkJCSBjb25z dCBjaGFyICpxdWVyeSwgaW50IG5QYXJhbXMsCisJCQkJCQkJCQkgY29uc3QgT2lkICpwYXJhbVR5 cGVzKTsKK2V4dGVybiBQR3Jlc3VsdCAqY2FuY2VsbGFibGVfZGVzY3JpYmVfcHJlcGFyZWQoUEdj b25uICpjb25uLAorCQkJCQkJCQkJCQkgICBjb25zdCBjaGFyICpzdG10TmFtZSk7CitleHRlcm4g UEdyZXN1bHQgKmNhbmNlbGxhYmxlX2dldHJlc3VsdChQR2Nvbm4gKmNvbm4pOworZXh0ZXJuIGJv b2wgY2FuY2VsbGFibGVfc29ja2V0X3dhaXQoUEdjb25uICpjb25uLCBib29sICpjYW5jZWxfc2Vu dCwKKwkJCQkJCQkJCWJvb2wgZm9yX3dyaXRlKTsKK2V4dGVybiBpbnQJY2FuY2VsbGFibGVfcHV0 X2NvcHlfZGF0YShQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmJ1ZmZlciwKKwkJCQkJCQkJCSAg aW50IG5ieXRlcywgYm9vbCAqY2FuY2VsX3NlbnQpOworZXh0ZXJuIGludAljYW5jZWxsYWJsZV9w dXRfY29weV9lbmQoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICplcnJvcm1zZywKKwkJCQkJCQkJ CSBib29sICpjYW5jZWxfc2VudCk7CitleHRlcm4gaW50CWNhbmNlbGxhYmxlX2xvX2V4cG9ydChQ R2Nvbm4gKmNvbm4sIE9pZCBsb2JqSWQsCisJCQkJCQkJCSAgY29uc3QgY2hhciAqZmlsZW5hbWUp OworZXh0ZXJuIE9pZAljYW5jZWxsYWJsZV9sb19pbXBvcnQoUEdjb25uICpjb25uLCBjb25zdCBj aGFyICpmaWxlbmFtZSk7CitleHRlcm4gaW50CWNhbmNlbGxhYmxlX2xvX3VubGluayhQR2Nvbm4g KmNvbm4sIE9pZCBsb2JqSWQpOworZXh0ZXJuIGludAljYW5jZWxfcGlwZV9mZCh2b2lkKTsKKwog I2VuZGlmCQkJCQkJCS8qIENBTkNFTF9IICovCgpiYXNlLWNvbW1pdDogZjk1ZDczZWQ0MzMyMDdj NDMyMzgwMmRjOTZlNTJmM2U1NTUzYTg2YwotLSAKMi41My4wCgo= --d9d7b9a076c0bfd4fb96e32b2c58c74be5f2a3fad308416dcd5a3e47825b Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0001-Move-Windows-pthread-compatibility-functions-to-s.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0001-Move-Windows-pthread-compatibility-functions-to-s.patch RnJvbSA2ZDQzNmFkZThhZDdmNmZiNzc1MDI2NjllMTRiNzFkZGE0NjE4YjFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTYXQsIDEzIERlYyAyMDI1IDE4OjE4OjEzICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 NSAxLzVdIE1vdmUgV2luZG93cyBwdGhyZWFkIGNvbXBhdGliaWxpdHkgZnVuY3Rpb25zIHRvCiBz cmMvcG9ydAoKVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBvZiBhIGZvbGxvdy11cCBjb21taXQgd2hp Y2ggd2lsbCBzdGFydCB0byB1c2UKdGhlc2UgZnVuY3Rpb25zIGluIG1vcmUgcGxhY2VzIHRoYW4g anVzdCBsaWJwcS4KLS0tCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMSArCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZSAgICAgICAgICAgICAg ICAgIHwgMSAtCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9tZXNvbi5idWlsZCAgICAgICAgICAgICAg IHwgMiArLQogc3JjL3BvcnQvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDEgKwogc3JjL3tpbnRlcmZhY2VzL2xpYnBxID0+IHBvcnR9L3B0aHJlYWQtd2luMzIuYyB8IDQg KystLQogNSBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBy ZW5hbWUgc3JjL3tpbnRlcmZhY2VzL2xpYnBxID0+IHBvcnR9L3B0aHJlYWQtd2luMzIuYyAoOTQl KQoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBmNGUzYmQz MDdjOC4uOTI4NDE5Mzc3MWEgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1 cmUuYWMKQEAgLTE5NDksNiArMTk0OSw3IEBAIGlmIHRlc3QgIiRQT1JUTkFNRSIgPSAid2luMzIi OyB0aGVuCiAgIEFDX0xJQk9CSihkaXJtb2QpCiAgIEFDX0xJQk9CSihraWxsKQogICBBQ19MSUJP Qkoob3BlbikKKyAgQUNfTElCT0JKKHB0aHJlYWQtd2luMzIpCiAgIEFDX0xJQk9CSihzeXN0ZW0p CiAgIEFDX0xJQk9CSih3aW4zMmNvbW1vbikKICAgQUNfTElCT0JKKHdpbjMyZGxvcGVuKQpkaWZm IC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvTWFrZWZpbGUgYi9zcmMvaW50ZXJmYWNlcy9s aWJwcS9NYWtlZmlsZQppbmRleCAwOTYzOTk1ZWVkNC4uZDZjZmIwMGQ2NTUgMTAwNjQ0Ci0tLSBh L3NyYy9pbnRlcmZhY2VzL2xpYnBxL01ha2VmaWxlCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx L01ha2VmaWxlCkBAIC03NSw3ICs3NSw2IEBAIGVuZGlmCiAKIGlmZXEgKCQoUE9SVE5BTUUpLCB3 aW4zMikKIE9CSlMgKz0gXAotCXB0aHJlYWQtd2luMzIubyBcCiAJd2luMzIubwogZW5kaWYKIApk aWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbWVzb24uYnVpbGQgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS9tZXNvbi5idWlsZAppbmRleCBiMGFlNzIxNjdhMS4uYjk0OTc4MGI4NWIgMTAw NjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL21lc29uLmJ1aWxkCisrKyBiL3NyYy9pbnRl cmZhY2VzL2xpYnBxL21lc29uLmJ1aWxkCkBAIC0yMCw3ICsyMCw3IEBAIGxpYnBxX3NvdXJjZXMg PSBmaWxlcygKIGxpYnBxX3NvX3NvdXJjZXMgPSBbXSAjIGZvciBzaGFyZWQgbGliLCBpbiBhZGRp dGlvbiB0byB0aGUgYWJvdmUKIAogaWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnCi0gIGxpYnBx X3NvdXJjZXMgKz0gZmlsZXMoJ3B0aHJlYWQtd2luMzIuYycsICd3aW4zMi5jJykKKyAgbGlicHFf c291cmNlcyArPSBmaWxlcygnd2luMzIuYycpCiAgIGxpYnBxX3NvX3NvdXJjZXMgKz0gcmNfbGli X2dlbi5wcm9jZXNzKHdpbjMydmVyX3JjLCBleHRyYV9hcmdzOiBbCiAgICAgJy0tTkFNRScsICds aWJwcScsCiAgICAgJy0tRklMRURFU0MnLCAnUG9zdGdyZVNRTCBBY2Nlc3MgTGlicmFyeScsXSkK ZGlmZiAtLWdpdCBhL3NyYy9wb3J0L21lc29uLmJ1aWxkIGIvc3JjL3BvcnQvbWVzb24uYnVpbGQK aW5kZXggNzI5NmY4ZTNjMDMuLmEwZmMxM2E1ZTYyIDEwMDY0NAotLS0gYS9zcmMvcG9ydC9tZXNv bi5idWlsZAorKysgYi9zcmMvcG9ydC9tZXNvbi5idWlsZApAQCAtMzIsNiArMzIsNyBAQCBpZiBo b3N0X3N5c3RlbSA9PSAnd2luZG93cycKICAgICAnZGlybW9kLmMnLAogICAgICdraWxsLmMnLAog ICAgICdvcGVuLmMnLAorICAgICdwdGhyZWFkLXdpbjMyLmMnLAogICAgICdzeXN0ZW0uYycsCiAg ICAgJ3dpbjMyY29tbW9uLmMnLAogICAgICd3aW4zMmRsb3Blbi5jJywKZGlmZiAtLWdpdCBhL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL3B0aHJlYWQtd2luMzIuYyBiL3NyYy9wb3J0L3B0aHJlYWQtd2lu MzIuYwpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBzcmMvaW50ZXJmYWNlcy9saWJw cS9wdGhyZWFkLXdpbjMyLmMKcmVuYW1lIHRvIHNyYy9wb3J0L3B0aHJlYWQtd2luMzIuYwppbmRl eCBjZjY2Mjg0ZjAwNy4uNDhkNjhiNjkzYTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxL3B0aHJlYWQtd2luMzIuYworKysgYi9zcmMvcG9ydC9wdGhyZWFkLXdpbjMyLmMKQEAgLTUs MTIgKzUsMTIgQEAKICoKICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMjYsIFBvc3RncmVTUUwgR2xv YmFsIERldmVsb3BtZW50IEdyb3VwCiAqIElERU5USUZJQ0FUSU9OCi0qCXNyYy9pbnRlcmZhY2Vz L2xpYnBxL3B0aHJlYWQtd2luMzIuYworKglzcmMvcG9ydC9wdGhyZWFkLXdpbjMyLmMKICoKICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAqLwogCi0jaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKKyNpbmNsdWRl ICJjLmgiCiAKICNpbmNsdWRlICJwdGhyZWFkLXdpbjMyLmgiCiAKCmJhc2UtY29tbWl0OiBmOTVk NzNlZDQzMzIwN2M0MzIzODAyZGM5NmU1MmYzZTU1NTNhODZjCi0tIAoyLjUzLjAKCg== --d9d7b9a076c0bfd4fb96e32b2c58c74be5f2a3fad308416dcd5a3e47825b Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0002-Don-t-use-deprecated-and-insecure-PQcancel-psql-a.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0002-Don-t-use-deprecated-and-insecure-PQcancel-psql-a.patch RnJvbSBiOGNmMzZmZDVjOWNmZDJiM2YwMjI4MTA1NjU0OTFlMTc4MDQyMWMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTYXQsIDEzIERlYyAyMDI1IDEzOjA1OjUwICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 NSAyLzVdIERvbid0IHVzZSBkZXByZWNhdGVkIGFuZCBpbnNlY3VyZSBQUWNhbmNlbCBwc3FsIGFu ZAogb3RoZXIgdG9vbHMgYW55bW9yZQoKQWxsIG9mIG91ciBmcm9udGVuZCB0b29scyB0aGF0IHVz ZWQgb3VyIGZlX3V0aWxzIHRvIGNhbmNlbCBxdWVyaWVzLAppbmNsdWRpbmcgcHNxbCwgc3RpbGwg dXNlZCBQUWNhbmNlbCB0byBzZW5kIGNhbmNlbCByZXF1ZXN0cyB0byB0aGUKc2VydmVyLiBUaGF0 IGZ1bmN0aW9uIGlzIGluc2VjdXJlLCBiZWNhdXNlIGl0IGRvZXMgbm90IHVzZSBlbmNyeXB0aW9u IHRvCnNlbmQgdGhlIGNhbmNlbCByZXF1ZXN0LiBUaGlzIHN0YXJ0cyB1c2luZyB0aGUgbmV3IGNh bmNlbGxhdGlvbiBBUElzCihpbnRyb2R1Y2VkIGluIDYxNDYxYTMwMCkgZm9yIGFsbCB0aGVzZSBm cm9udGVuZCB0b29scy4gVGhlc2UgQVBJcyB1c2UKdGhlIHNhbWUgZW5jcnlwdGlvbiBzZXR0aW5n cyBhcyB0aGUgY29ubmVjdGlvbiB0aGF0J3MgYmVpbmcgY2FuY2VsbGVkLgpTaW5jZSB0aGVzZSBB UElzIGFyZSBub3Qgc2lnbmFsLXNhZmUgdGhpcyByZXF1aXJlZCBhIHJlZmFjdG9yIHRvIG5vdApz ZW5kIHRoZSBjYW5jZWwgcmVxdWVzdCBpbiBhIHNpZ25hbCBoYW5kbGVyIGFueW1vcmUsIGJ1dCBp bnN0ZWFkIHVzaW5nIGEKZGVkaWNhdGVkIHRocmVhZC4gU2ltaWxhciBsb2dpYyB3YXMgYWxyZWFk eSB1c2VkIGZvciBXaW5kb3dzIGFueXdheSwgc28KdGhpcyBhbHNvIGhhcyB0aGUgYmVuZWZpdCB0 aGF0IGl0IG1ha2VzIHRoZSBjYW5jZWwgbG9naWMgbW9yZSB1bmlmb3JtCmFjcm9zcyBvdXIgc3Vw cG9ydGVkIHBsYXRmb3Jtcy4KClRoZSBjYWxscyB0byBQUWNhbmNlbCBpbiBwZ19kdW1wIGFyZSBz dGlsbCBrZXB0IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4KYSBsYXRlciBjb21taXQuIFRoZSByZWFz b24gZm9yIHRoYXQgaXMgdGhhdCB0aGF0IGNvZGUgZG9lcyBub3QgdXNlCnRoZSBoZWxwZXJzIGZy b20gZmVfdXRpbHMgdG8gY2FuY2VsIHF1ZXJpZXMsIGFuZCBpbnN0ZWFkIGltcGxlbWVudHMgaXRz Cm93biBsb2dpYy4KLS0tCiBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICB8ICAgMiArLQog c3JjL2ZlX3V0aWxzL01ha2VmaWxlICAgICAgICAgfCAgIDIgKy0KIHNyYy9mZV91dGlscy9jYW5j ZWwuYyAgICAgICAgIHwgMzY4ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIHNy Yy9pbmNsdWRlL2ZlX3V0aWxzL2NhbmNlbC5oIHwgICA0IC0KIDQgZmlsZXMgY2hhbmdlZCwgMjUy IGluc2VydGlvbnMoKyksIDEyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9tZXNvbi5idWls ZCBiL21lc29uLmJ1aWxkCmluZGV4IGRkZjUxNzI5ODJmLi5lNzJkOTE1MDBiYiAxMDA2NDQKLS0t IGEvbWVzb24uYnVpbGQKKysrIGIvbWVzb24uYnVpbGQKQEAgLTM0ODIsNyArMzQ4Miw3IEBAIGZy b250ZW5kX2NvZGUgPSBkZWNsYXJlX2RlcGVuZGVuY3koCiAgIGluY2x1ZGVfZGlyZWN0b3JpZXM6 IFtwb3N0Z3Jlc19pbmNdLAogICBsaW5rX3dpdGg6IFtmZV91dGlscywgY29tbW9uX3N0YXRpYywg cGdwb3J0X3N0YXRpY10sCiAgIHNvdXJjZXM6IGdlbmVyYXRlZF9oZWFkZXJzX3N0YW1wLAotICBk ZXBlbmRlbmNpZXM6IFtvc19kZXBzLCBsaWJpbnRsXSwKKyAgZGVwZW5kZW5jaWVzOiBbb3NfZGVw cywgbGliaW50bCwgdGhyZWFkX2RlcF0sCiApCiAKIGJhY2tlbmRfYm90aF9kZXBzICs9IFsKZGlm ZiAtLWdpdCBhL3NyYy9mZV91dGlscy9NYWtlZmlsZSBiL3NyYy9mZV91dGlscy9NYWtlZmlsZQpp bmRleCBjYmZiZjkzYWM2OS4uODA5YWIyMWNjMGMgMTAwNjQ0Ci0tLSBhL3NyYy9mZV91dGlscy9N YWtlZmlsZQorKysgYi9zcmMvZmVfdXRpbHMvTWFrZWZpbGUKQEAgLTE3LDcgKzE3LDcgQEAgc3Vi ZGlyID0gc3JjL2ZlX3V0aWxzCiB0b3BfYnVpbGRkaXIgPSAuLi8uLgogaW5jbHVkZSAkKHRvcF9i dWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCi1vdmVycmlkZSBDUFBGTEFHUyA6PSAtREZS T05URU5EIC1JJChsaWJwcV9zcmNkaXIpICQoQ1BQRkxBR1MpCitvdmVycmlkZSBDUFBGTEFHUyA6 PSAtREZST05URU5EIC1JJChsaWJwcV9zcmNkaXIpIC1JJCh0b3Bfc3JjZGlyKS9zcmMvcG9ydCAk KENQUEZMQUdTKQogCiBPQkpTID0gXAogCWFyY2hpdmUubyBcCmRpZmYgLS1naXQgYS9zcmMvZmVf dXRpbHMvY2FuY2VsLmMgYi9zcmMvZmVfdXRpbHMvY2FuY2VsLmMKaW5kZXggZTZiNzU0MzlmNTYu LjVkNjQ1YzU1NGFiIDEwMDY0NAotLS0gYS9zcmMvZmVfdXRpbHMvY2FuY2VsLmMKKysrIGIvc3Jj L2ZlX3V0aWxzL2NhbmNlbC5jCkBAIC0yLDkgKzIsMzggQEAKICAqCiAgKiBRdWVyeSBjYW5jZWxs YXRpb24gc3VwcG9ydCBmb3IgZnJvbnRlbmQgY29kZQogICoKLSAqIEFzc29ydGVkIHV0aWxpdHkg ZnVuY3Rpb25zIHRvIGNvbnRyb2wgcXVlcnkgY2FuY2VsbGF0aW9uIHdpdGggc2lnbmFsCi0gKiBo YW5kbGVyIGZvciBTSUdJTlQuCisgKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBTSUdJTlQvQ3RybC1D IGhhbmRsaW5nIGZvciBmcm9udGVuZCB0b29scyB0aGF0IG5lZWQKKyAqIHRvIGNhbmNlbCBxdWVy aWVzIHJ1bm5pbmcgb24gdGhlIHNlcnZlci4gIEl0IGNvbWJpbmVzIHRocmVlIGNvbXBsZXRlbHkK KyAqIGluZGVwZW5kZW50IG1lY2hhbmlzbXMsIGFueSBjb21iaW5hdGlvbiBvZiB3aGljaCBjYW4g YmUgdXNlZCBieSBhIGNhbGxlcjoKICAqCisgKiAxLiBTZXJ2ZXIgY2FuY2VsIHJlcXVlc3QgLS0g T2Z0ZW4gd2hhdCBhcHBsaWNhdGlvbnMgbmVlZC4gV2hlbiBhIHF1ZXJ5IGlzCisgKiAgICBydW5u aW5nLCBhbmQgdGhlIG1haW4gdGhyZWFkIGlzIHdhaXRpbmcgZm9yIHRoZSByZXN1bHQgb2YgdGhh dCBxdWVyeSBpbiBhCisgKiAgICBibG9ja2luZyBtYW5uZXIsIHdlIHdhbnQgU0lHSU5UL0N0cmwt QyB0byBjYW5jZWwgdGhhdCBxdWVyeS4gVGhpcyBjYW4gYmUKKyAqICAgIGRvbmUgYnkgaGF2aW5n IHRoZSBhcHBsaWNhdGlvbiBjYWxsIFNldENhbmNlbENvbm4oKSB0byByZWdpc3RlciB0aGUKKyAq ICAgIGNvbm5lY3Rpb24gdGhhdCBpcyBydW5uaW5nIHRoZSBxdWVyeSwgcHJpb3IgdG8gd2FpdGlu ZyBmb3IgdGhlIHJlc3VsdC4KKyAqICAgIFdoZW4gU0lHSU5UL0N0cmwtQyBpcyByZWNlaXZlZCBh IGNhbmNlbCByZXF1ZXN0IGZvciB0aGlzIGNvbm5lY3Rpb24gd2lsbAorICogICAgdGhlbiBiZSBz ZW50IHRvIHRoZSBzZXJ2ZXIgZnJvbSBhIHNlcGFyYXRlIHRocmVhZC4gVGhhdCBpbiB0dXJuIHdp bGwgdGhlbgorICogICAgKGFzc3VtaW5nIGEgY28tb3BlcmF0aW5nIHNlcnZlcikgY2F1c2UgdGhl IHNlcnZlciB0byBjYW5jZWwgdGhlIHF1ZXJ5IGFuZAorICogICAgc2VuZCBhbiBlcnJvciB0byB0 aGUgd2FpdGluZyBjbGllbnQgb24gdGhlIG1haW4gdGhyZWFkLiBUaGUgY2FuY2VsCisgKiAgICBj b25uZWN0aW9uIGlzIGEgcHJvY2Vzcy13aWRlIGdsb2JhbCwgc28gb25seSBvbmUgY29ubmVjdGlv biBjYW4gYmUgdGhlCisgKiAgICBjYW5jZWwgdGFyZ2V0IGF0IGEgdGltZS4gUmVzZXRDYW5jZWxD b25uKCkgY2FuIGJlIHVzZWQgdG8gdW5yZWdpc3RlciB0aGUKKyAqICAgIGNvbm5lY3Rpb24gYWdh aW4sIHByZXZlbnRpbmcgc2VuZGluZyBhIGNhbmNlbCByZXF1ZXN0IGlmIFNJR0lOVC9DdHJsLUMg aXMKKyAqICAgIHJlY2VpdmVkIGFmdGVyIGJsb2NraW5nIHdhaXQgaGFzIGFscmVhZHkgY29tcGxl dGVkLgorICoKKyAqIDIuIENhbmNlbFJlcXVlc3RlZCBmbGFnIC0tIEEgbW9yZSBpbnZvbHZlZCBi dXQgYWxzbyBtdWNoIG1vcmUgZmxleGlibGUgd2F5CisgKiAgICBvZiBjYW5jZWxsaW5nLiBBIHZv bGF0aWxlIHNpZ19hdG9taWNfdCBDYW5jZWxSZXF1ZXN0ZWQgZmxhZyBpcyBzZXQgdG8KKyAqICAg IHRydWUgd2hlbmV2ZXIgU0lHSU5UIGlzIHJlY2VpdmVkLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGFw cGxpY2F0aW9uIGNvZGUKKyAqICAgIGNhbiBmdWxseSBjb250cm9sIHdoYXQgaXQgZG9lcyB3aXRo IHRoaXMgZmxhZy4gVGhlIHByaW1hcnkgdXNlY2FzZSBmb3IKKyAqICAgIHRoaXMgaXMgd2hlbiB0 aGUgYXBwbGljYXRpb24gY29kZSBpcyBub3QgYmxvY2tlZCAoaW5kZWZpbml0ZWx5KSwgYnV0Cisg KiAgICBuZWVkcyB0byB0YWtlIGFuIGFjdGlvbiB3aGVuIEN0cmwtQyBpcyBwcmVzc2VkLCBzdWNo IGFzIGJyZWFrIG91dCBvZiBhCisgKiAgICBsb25nIHJ1bm5pbmcgbG9vcC4KKyAqCisgKiAzLiBD YW5jZWwgY2FsbGJhY2sgLS0gVGhlIG1vc3QgY29tcGxleCB3YXkgb2YgaGFuZGxpbmcgYSBzaWdp bnQuIEFuIG9wdGlvbmFsCisgKiAgICBmdW5jdGlvbiBwb2ludGVyIHJlZ2lzdGVyZWQgdmlhIHNl dHVwX2NhbmNlbF9oYW5kbGVyKCkuICBJZiBzZXQsIGl0IGlzCisgKiAgICBjYWxsZWQgZGlyZWN0 bHkgZnJvbSB0aGUgc2lnbmFsIGhhbmRsZXIsIHNvIGl0IG11c3QgYmUgYXN5bmMtc2lnbmFsLXNh ZmUuCisgKiAgICBXcml0aW5nIGFzeW5jLXNpZ25hbC1zYWZlIGNvZGUgaXMgbm90IGVhc3ksIHNv IHRoaXMgaXMgb25seSByZWNvbW1lbmRlZAorICogICAgYXMgYSBsYXN0IHJlc29ydC4gcHNxbCB1 c2VzIHRoaXMgdG8gbG9uZ2ptcCBiYWNrIHRvIHRoZSBtYWluIGxvb3Agd2hlbiBubworICogICAg cXVlcnkgaXMgYWN0aXZlLgogICoKICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2 LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAogICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKQEAg LTE2LDkgKzQ1LDIxIEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgogCisjaW5jbHVkZSA8 c2lnbmFsLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKKyNpZm5kZWYgV0lOMzIKKyNpbmNsdWRl IDxmY250bC5oPgorI2VuZGlmCisKKyNpZmRlZiBXSU4zMgorI2luY2x1ZGUgInB0aHJlYWQtd2lu MzIuaCIKKyNlbHNlCisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKICNpbmNsdWRlICJj b21tb24vY29ubmVjdC5oIgorI2luY2x1ZGUgImNvbW1vbi9sb2dnaW5nLmgiCiAjaW5jbHVkZSAi ZmVfdXRpbHMvY2FuY2VsLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvc3RyaW5nX3V0aWxzLmgiCiAK QEAgLTM2LDExICs3NywyMiBAQAogCQkodm9pZCkgcmNfOyBcCiAJfSB3aGlsZSAoMCkKIAorCiAv KgotICogQ29udGFpbnMgYWxsIHRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gY2FuY2VsIGEgcXVl cnkgaXNzdWVkIGZyb20KLSAqIGEgZGF0YWJhc2UgY29ubmVjdGlvbiB0byB0aGUgYmFja2VuZC4K KyAqIENhbmNlbCBjb25uZWN0aW9uIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gc2VuZCBjYW5jZWwg cmVxdWVzdHMuCiAgKi8KLXN0YXRpYyBQR2NhbmNlbCAqdm9sYXRpbGUgY2FuY2VsQ29ubiA9IE5V TEw7CitzdGF0aWMgUEdjYW5jZWxDb25uICpjYW5jZWxDb25uID0gTlVMTDsKKworLyoKKyAqIEdl bmVyYXRpb24gY291bnRlciBmb3IgY2FuY2VsQ29ubi4gSW5jcmVtZW50ZWQgZWFjaCB0aW1lIGNh bmNlbENvbm4gaXMKKyAqIGNoYW5nZWQuIFVzZWQgdG8gZGV0ZWN0IGlmIGNhbmNlbENvbm4gd2Fz IHJlcGxhY2VkIHdoaWxlIHdlIHdlcmUgdXNpbmcgaXQuCisgKi8KK3N0YXRpYyB1aW50NjQgY2Fu Y2VsQ29ubkdlbmVyYXRpb24gPSAwOworCisvKgorICogTXV0ZXggcHJvdGVjdGluZyBjYW5jZWxD b25uIGFuZCBjYW5jZWxDb25uR2VuZXJhdGlvbi4KKyAqLworc3RhdGljIHB0aHJlYWRfbXV0ZXhf dCBjYW5jZWxDb25uTG9jayA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7CiAKIC8qCiAgKiBQ cmVkZXRlcm1pbmVkIGxvY2FsaXplZCBlcnJvciBzdHJpbmdzIC0tLSBuZWVkZWQgdG8gYXZvaWQg dHJ5aW5nCkBAIC01OCwxODYgKzExMCwyNjYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNhbmNlbF9u b3Rfc2VudF9tc2cgPSBOVUxMOwogICovCiB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2FuY2VsUmVx dWVzdGVkID0gZmFsc2U7CiAKLSNpZmRlZiBXSU4zMgotc3RhdGljIENSSVRJQ0FMX1NFQ1RJT04g Y2FuY2VsQ29ubkxvY2s7Ci0jZW5kaWYKLQogLyoKICAqIEFkZGl0aW9uYWwgY2FsbGJhY2sgZm9y IGNhbmNlbGxhdGlvbnMuCiAgKi8KIHN0YXRpYyB2b2lkICgqY2FuY2VsX2NhbGxiYWNrKSAodm9p ZCkgPSBOVUxMOwogCisjaWZuZGVmIFdJTjMyCisvKgorICogT24gVW5peCwgdGhlIFNJR0lOVCBz aWduYWwgaGFuZGxlciBjYW5ub3QgY2FsbCBQUWNhbmNlbEJsb2NraW5nKCkgZGlyZWN0bHkKKyAq IGJlY2F1c2UgaXQgaXMgbm90IGFzeW5jLXNpZ25hbC1zYWZlLiAgSW5zdGVhZCwgd2UgdXNlIGEg cGlwZSB0byB3YWtlIGEKKyAqIGRlZGljYXRlZCBjYW5jZWwgdGhyZWFkOiB0aGUgc2lnbmFsIGhh bmRsZXIgd3JpdGVzIGEgYnl0ZSB0byB0aGUgcGlwZSwgYW5kCisgKiB0aGUgY2FuY2VsIHRocmVh ZCdzIGJsb2NraW5nIHJlYWQoKSByZXR1cm5zLCB0cmlnZ2VyaW5nIHRoZSBhY3R1YWwgY2FuY2Vs CisgKiByZXF1ZXN0LgorICovCitzdGF0aWMgaW50CWNhbmNlbF9waXBlWzJdID0gey0xLCAtMX07 CitzdGF0aWMgcHRocmVhZF90IGNhbmNlbF90aHJlYWQ7CisjZW5kaWYKKwogCiAvKgotICogU2V0 Q2FuY2VsQ29ubgorICogU2VuZCBhIGNhbmNlbCByZXF1ZXN0IHRvIHRoZSBjb25uZWN0aW9uLCBp ZiBvbmUgaXMgc2V0LgorICoKKyAqIENhbGxlZCBmcm9tIHRoZSBjYW5jZWwgdGhyZWFkIChVbml4 KSBvciB0aGUgY29uc29sZSBoYW5kbGVyIHRocmVhZAorICogKFdpbmRvd3MpLCBuZXZlciBmcm9t IHRoZSBzaWduYWwgaGFuZGxlciBpdHNlbGYuCiAgKgotICogU2V0IGNhbmNlbENvbm4gdG8gcG9p bnQgdG8gdGhlIGN1cnJlbnQgZGF0YWJhc2UgY29ubmVjdGlvbi4KKyAqIFRvIGF2b2lkIHRoZSBj YW5jZWwgY29ubmVjdGlvbiBiZWluZyBmcmVlZCBieSBhIGNvbmN1cnJlbnQKKyAqIFNldENhbmNl bENvbm4oKS9SZXNldENhbmNlbENvbm4oKSBjYWxsIG9uIHRoZSBtYWluIHRocmVhZCB3aGlsZSB3 ZSBhcmUKKyAqIHVzaW5nIGl0LCB3ZSB0ZW1wb3JhcmlseSB0YWtlIGl0IG91dCBvZiB0aGUgZ2xv YmFsIHZhcmlhYmxlIHdoaWxlIHNlbmRpbmcKKyAqIHRoZSByZXF1ZXN0LiAgQSBnZW5lcmF0aW9u IGNvdW50ZXIgbGV0cyB1cyBkZXRlY3Qgd2hldGhlciB0aGUgbWFpbiB0aHJlYWQKKyAqIHJlcGxh Y2VkIGl0IGluIHRoZSBtZWFudGltZSwgaW4gd2hpY2ggY2FzZSB3ZSBmcmVlIHRoZSBvbGQgb25l IGluc3RlYWQgb2YKKyAqIHB1dHRpbmcgaXQgYmFjay4KKyAqCisgKiBOb3RlOiB0aGVyZSBpcyBh biBpbmhlcmVudCByYWNlIHdoZXJlLCBpZiB0aGlzIHRocmVhZCBpcyBzbG93IHRvIHByb2Nlc3MK KyAqIHRoZSB3YWtldXAgKGUuZy4gZHVlIHRvIGEgbmV0d29yayBkZWxheSBzZW5kaW5nIGEgcHJl dmlvdXMgY2FuY2VsKSwgdGhlCisgKiBtYWluIHRocmVhZCBtYXkgaGF2ZSBhbHJlYWR5IG1vdmVk IG9uIHRvIGEgZGlmZmVyZW50IHF1ZXJ5IGJ5IHRoZSB0aW1lIHdlCisgKiBzZW5kIHRoZSBjYW5j ZWwuICBUaGlzIGlzIHVuYXZvaWRhYmxlIHdpdGggdGhlIHNlcnZlcidzIGNhbmNlbCBwcm90b2Nv bCwKKyAqIHdoaWNoIGlkZW50aWZpZXMgdGhlIHNlc3Npb24gYnV0IG5vdCBpbmRpdmlkdWFsIHF1 ZXJpZXMuCiAgKi8KLXZvaWQKLVNldENhbmNlbENvbm4oUEdjb25uICpjb25uKQorc3RhdGljIHZv aWQKK1NlbmRDYW5jZWxSZXF1ZXN0KHZvaWQpCiB7Ci0JUEdjYW5jZWwgICAqb2xkQ2FuY2VsQ29u bjsKKwlQR2NhbmNlbENvbm4gKmNjOworCXVpbnQ2NAkJZ2VuZXJhdGlvbjsKKwlib29sCQlwdXRD b25uZWN0aW9uQmFjayA9IGZhbHNlOworCisJLyoKKwkgKiBCb3Jyb3cgdGhlIGNhbmNlbCBjb25u ZWN0aW9uIGZyb20gdGhlIGdsb2JhbCwgc2V0dGluZyBpdCB0byBOVUxMIHNvCisJICogdGhhdCBT ZXRDYW5jZWxDb25uL1Jlc2V0Q2FuY2VsQ29ubiB3b24ndCBmcmVlIGl0IHdoaWxlIHdlJ3JlIHVz aW5nIGl0LgorCSAqLworCXB0aHJlYWRfbXV0ZXhfbG9jaygmY2FuY2VsQ29ubkxvY2spOworCWNj ID0gY2FuY2VsQ29ubjsKKwlnZW5lcmF0aW9uID0gY2FuY2VsQ29ubkdlbmVyYXRpb247CisJY2Fu Y2VsQ29ubiA9IE5VTEw7CisJcHRocmVhZF9tdXRleF91bmxvY2soJmNhbmNlbENvbm5Mb2NrKTsK IAotI2lmZGVmIFdJTjMyCi0JRW50ZXJDcml0aWNhbFNlY3Rpb24oJmNhbmNlbENvbm5Mb2NrKTsK LSNlbmRpZgorCWlmIChjYyA9PSBOVUxMKQorCQlyZXR1cm47CiAKLQkvKiBGcmVlIHRoZSBvbGQg b25lIGlmIHdlIGhhdmUgb25lICovCi0Jb2xkQ2FuY2VsQ29ubiA9IGNhbmNlbENvbm47CisJd3Jp dGVfc3RkZXJyKGNhbmNlbF9zZW50X21zZyk7CiAKLQkvKiBiZSBzdXJlIGhhbmRsZV9zaWdpbnQg ZG9lc24ndCB1c2UgcG9pbnRlciB3aGlsZSBmcmVlaW5nICovCi0JY2FuY2VsQ29ubiA9IE5VTEw7 CisJaWYgKCFQUWNhbmNlbEJsb2NraW5nKGNjKSkKKwl7CisJCWNoYXIJICAgKmVycm1zZyA9IFBR Y2FuY2VsRXJyb3JNZXNzYWdlKGNjKTsKIAotCWlmIChvbGRDYW5jZWxDb25uICE9IE5VTEwpCi0J CVBRZnJlZUNhbmNlbChvbGRDYW5jZWxDb25uKTsKKwkJd3JpdGVfc3RkZXJyKGNhbmNlbF9ub3Rf c2VudF9tc2cpOworCQlpZiAoZXJybXNnKQorCQkJd3JpdGVfc3RkZXJyKGVycm1zZyk7CisJfQor CS8qIFJlc2V0IGZvciBwb3NzaWJsZSByZXVzZSAqLworCVBRY2FuY2VsUmVzZXQoY2MpOworCisJ LyoKKwkgKiBQdXQgdGhlIGNhbmNlbCBjb25uZWN0aW9uIGJhY2sgaWYgaXQgd2Fzbid0IHJlcGxh Y2VkIHdoaWxlIHdlIHdlcmUKKwkgKiB1c2luZyBpdC4KKwkgKi8KKwlwdGhyZWFkX211dGV4X2xv Y2soJmNhbmNlbENvbm5Mb2NrKTsKKwlpZiAoY2FuY2VsQ29ubkdlbmVyYXRpb24gPT0gZ2VuZXJh dGlvbikKKwl7CisJCS8qIEdlbmVyYXRpb24gdW5jaGFuZ2VkLCBwdXQgaXQgYmFjayBmb3IgcmV1 c2UgKi8KKwkJY2FuY2VsQ29ubiA9IGNjOworCQlwdXRDb25uZWN0aW9uQmFjayA9IHRydWU7CisJ fQorCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZjYW5jZWxDb25uTG9jayk7CiAKLQljYW5jZWxDb25u ID0gUFFnZXRDYW5jZWwoY29ubik7CisJLyogSWYgaXQgd2FzIHJlcGxhY2VkLCB3ZSBmcmVlIGl0 LCBiZWNhdXNlIHdlIHdlcmUgdGhlIGxhc3QgdXNlciAqLworCWlmICghcHV0Q29ubmVjdGlvbkJh Y2spCisJCVBRY2FuY2VsRmluaXNoKGNjKTsKK30KIAotI2lmZGVmIFdJTjMyCi0JTGVhdmVDcml0 aWNhbFNlY3Rpb24oJmNhbmNlbENvbm5Mb2NrKTsKLSNlbmRpZgorCisvKgorICogSGVscGVyIHRv IHJlcGxhY2UgY2FuY2VsQ29ubiB3aXRoIGEgbmV3IHZhbHVlLgorICovCitzdGF0aWMgdm9pZAor U2V0Q2FuY2VsQ29ubkludGVybmFsKFBHY2FuY2VsQ29ubiAqbmV3Q2FuY2VsQ29ubikKK3sKKwlQ R2NhbmNlbENvbm4gKm9sZENhbmNlbENvbm47CisKKwlwdGhyZWFkX211dGV4X2xvY2soJmNhbmNl bENvbm5Mb2NrKTsKKwlvbGRDYW5jZWxDb25uID0gY2FuY2VsQ29ubjsKKwljYW5jZWxDb25uID0g bmV3Q2FuY2VsQ29ubjsKKwljYW5jZWxDb25uR2VuZXJhdGlvbisrOworCXB0aHJlYWRfbXV0ZXhf dW5sb2NrKCZjYW5jZWxDb25uTG9jayk7CisKKwlpZiAob2xkQ2FuY2VsQ29ubiAhPSBOVUxMKQor CQlQUWNhbmNlbEZpbmlzaChvbGRDYW5jZWxDb25uKTsKK30KKworLyoKKyAqIFNldENhbmNlbENv bm4KKyAqCisgKiBTZXQgY2FuY2VsQ29ubiB0byBwb2ludCB0byBhIGNhbmNlbCBjb25uZWN0aW9u IGZvciB0aGUgZ2l2ZW4gZGF0YWJhc2UKKyAqIGNvbm5lY3Rpb24uIFRoaXMgY3JlYXRlcyBhIG5l dyBQR2NhbmNlbENvbm4gdGhhdCBjYW4gYmUgdXNlZCB0byBzZW5kCisgKiBjYW5jZWwgcmVxdWVz dHMuCisgKi8KK3ZvaWQKK1NldENhbmNlbENvbm4oUEdjb25uICpjb25uKQoreworCVNldENhbmNl bENvbm5JbnRlcm5hbChQUWNhbmNlbENyZWF0ZShjb25uKSk7CiB9CiAKIC8qCiAgKiBSZXNldENh bmNlbENvbm4KICAqCi0gKiBGcmVlIHRoZSBjdXJyZW50IGNhbmNlbCBjb25uZWN0aW9uLCBpZiBh bnksIGFuZCBzZXQgdG8gTlVMTC4KKyAqIENsZWFyIGNhbmNlbENvbm4sIHByZXZlbnRpbmcgYW55 IHBlbmRpbmcgY2FuY2VsIGZyb20gYmVpbmcgc2VudC4KICAqLwogdm9pZAogUmVzZXRDYW5jZWxD b25uKHZvaWQpCiB7Ci0JUEdjYW5jZWwgICAqb2xkQ2FuY2VsQ29ubjsKKwlTZXRDYW5jZWxDb25u SW50ZXJuYWwoTlVMTCk7Cit9CiAKLSNpZmRlZiBXSU4zMgotCUVudGVyQ3JpdGljYWxTZWN0aW9u KCZjYW5jZWxDb25uTG9jayk7Ci0jZW5kaWYKIAotCW9sZENhbmNlbENvbm4gPSBjYW5jZWxDb25u OworI2lmZGVmIFdJTjMyCisvKgorICogQ29uc29sZSBjb250cm9sIGhhbmRsZXIgZm9yIFdpbmRv d3MuCisgKgorICogVGhpcyBydW5zIGluIGEgc2VwYXJhdGUgdGhyZWFkIGNyZWF0ZWQgYnkgdGhl IE9TLCBzbyB3ZSBjYW4gc2FmZWx5IGNhbGwKKyAqIHRoZSBibG9ja2luZyBjYW5jZWwgQVBJIGRp cmVjdGx5LgorICovCitzdGF0aWMgQk9PTCBXSU5BUEkKK2NvbnNvbGVIYW5kbGVyKERXT1JEIGR3 Q3RybFR5cGUpCit7CisJaWYgKGR3Q3RybFR5cGUgPT0gQ1RSTF9DX0VWRU5UIHx8CisJCWR3Q3Ry bFR5cGUgPT0gQ1RSTF9CUkVBS19FVkVOVCkKKwl7CisJCUNhbmNlbFJlcXVlc3RlZCA9IHRydWU7 CiAKLQkvKiBiZSBzdXJlIGhhbmRsZV9zaWdpbnQgZG9lc24ndCB1c2UgcG9pbnRlciB3aGlsZSBm cmVlaW5nICovCi0JY2FuY2VsQ29ubiA9IE5VTEw7CisJCWlmIChjYW5jZWxfY2FsbGJhY2sgIT0g TlVMTCkKKwkJCWNhbmNlbF9jYWxsYmFjaygpOwogCi0JaWYgKG9sZENhbmNlbENvbm4gIT0gTlVM TCkKLQkJUFFmcmVlQ2FuY2VsKG9sZENhbmNlbENvbm4pOworCQlTZW5kQ2FuY2VsUmVxdWVzdCgp OwogCi0jaWZkZWYgV0lOMzIKLQlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmY2FuY2VsQ29ubkxvY2sp OwotI2VuZGlmCisJCXJldHVybiBUUlVFOworCX0KKwllbHNlCisJCS8qIFJldHVybiBGQUxTRSBm b3IgYW55IHNpZ25hbHMgbm90IGJlaW5nIGhhbmRsZWQgKi8KKwkJcmV0dXJuIEZBTFNFOwogfQog CisjZWxzZQkJCQkJCQkvKiAhV0lOMzIgKi8KIAogLyoKLSAqIENvZGUgdG8gc3VwcG9ydCBxdWVy eSBjYW5jZWxsYXRpb24KLSAqCi0gKiBOb3RlIHRoYXQgc2VuZGluZyB0aGUgY2FuY2VsIGRpcmVj dGx5IGZyb20gdGhlIHNpZ25hbCBoYW5kbGVyIGlzIHNhZmUKLSAqIGJlY2F1c2UgUFFjYW5jZWwo KSBpcyB3cml0dGVuIHRvIG1ha2UgaXQgc28uICBXZSB1c2Ugd3JpdGUoKSB0byByZXBvcnQKLSAq IHRvIHN0ZGVyciBiZWNhdXNlIGl0J3MgYmV0dGVyIHRvIHVzZSBzaW1wbGUgZmFjaWxpdGllcyBp biBhIHNpZ25hbAotICogaGFuZGxlci4KLSAqCi0gKiBPbiBXaW5kb3dzLCB0aGUgc2lnbmFsIGNh bmNlbGluZyBoYXBwZW5zIG9uIGEgc2VwYXJhdGUgdGhyZWFkLCBiZWNhdXNlCi0gKiB0aGF0J3Mg aG93IFNldENvbnNvbGVDdHJsSGFuZGxlciB3b3Jrcy4gIFRoZSBQUWNhbmNlbCBmdW5jdGlvbiBp cyBzYWZlCi0gKiBmb3IgdGhpcyAodW5saWtlIFBRcmVxdWVzdENhbmNlbCkuICBIb3dldmVyLCBh IENSSVRJQ0FMX1NFQ1RJT04gaXMgcmVxdWlyZWQKLSAqIHRvIHByb3RlY3QgdGhlIFBHY2FuY2Vs IHN0cnVjdHVyZSBhZ2FpbnN0IGJlaW5nIGNoYW5nZWQgd2hpbGUgdGhlIHNpZ25hbAotICogdGhy ZWFkIGlzIHVzaW5nIGl0LgorICogQ2FuY2VsIHRocmVhZCBtYWluIGZ1bmN0aW9uLiBXYWl0cyBm b3IgdGhlIHNpZ25hbCBoYW5kbGVyIHRvIHdyaXRlIHRvIHRoZQorICogcGlwZSwgdGhlbiBzZW5k cyBhIGNhbmNlbCByZXF1ZXN0LgogICovCitzdGF0aWMgdm9pZCAqCitjYW5jZWxfdGhyZWFkX21h aW4odm9pZCAqYXJnKQoreworCWZvciAoOzspCisJeworCQljaGFyCQlidWZbMTZdOworCQlzc2l6 ZV90CQlyYzsKIAotI2lmbmRlZiBXSU4zMgorCQkvKiBXYWl0IGZvciBzaWduYWwgaGFuZGxlciB0 byB3YWtlIHVzIHVwICovCisJCXJjID0gcmVhZChjYW5jZWxfcGlwZVswXSwgYnVmLCBzaXplb2Yo YnVmKSk7CisJCWlmIChyYyA8PSAwKQorCQl7CisJCQlpZiAoZXJybm8gPT0gRUlOVFIpCisJCQkJ Y29udGludWU7CisJCQkvKiBQaXBlIGNsb3NlZCBvciBlcnJvciAtIGV4aXQgdGhyZWFkICovCisJ CQlicmVhazsKKwkJfQorCisJCVNlbmRDYW5jZWxSZXF1ZXN0KCk7CisJfQorCisJcmV0dXJuIE5V TEw7Cit9CiAKIC8qCi0gKiBoYW5kbGVfc2lnaW50Ci0gKgotICogSGFuZGxlIGludGVycnVwdCBz aWduYWxzIGJ5IGNhbmNlbGluZyB0aGUgY3VycmVudCBjb21tYW5kLCBpZiBjYW5jZWxDb25uCi0g KiBpcyBzZXQuCisgKiBTaWduYWwgaGFuZGxlciBmb3IgU0lHSU5ULiBTZXRzIENhbmNlbFJlcXVl c3RlZCBhbmQgd2FrZXMgdXAgdGhlIGNhbmNlbAorICogdGhyZWFkIGJ5IHdyaXRpbmcgdG8gdGhl IHBpcGUuCiAgKi8KIHN0YXRpYyB2b2lkCiBoYW5kbGVfc2lnaW50KFNJR05BTF9BUkdTKQogewot CWNoYXIJCWVycmJ1ZlsyNTZdOworCWludAkJCXNhdmVfZXJybm8gPSBlcnJubzsKKwljaGFyCQlj ID0gMTsKIAogCUNhbmNlbFJlcXVlc3RlZCA9IHRydWU7CiAKIAlpZiAoY2FuY2VsX2NhbGxiYWNr ICE9IE5VTEwpCiAJCWNhbmNlbF9jYWxsYmFjaygpOwogCi0JLyogU2VuZCBRdWVyeUNhbmNlbCBp ZiB3ZSBhcmUgcHJvY2Vzc2luZyBhIGRhdGFiYXNlIHF1ZXJ5ICovCi0JaWYgKGNhbmNlbENvbm4g IT0gTlVMTCkKLQl7Ci0JCWlmIChQUWNhbmNlbChjYW5jZWxDb25uLCBlcnJidWYsIHNpemVvZihl cnJidWYpKSkKLQkJewotCQkJd3JpdGVfc3RkZXJyKGNhbmNlbF9zZW50X21zZyk7Ci0JCX0KLQkJ ZWxzZQotCQl7Ci0JCQl3cml0ZV9zdGRlcnIoY2FuY2VsX25vdF9zZW50X21zZyk7Ci0JCQl3cml0 ZV9zdGRlcnIoZXJyYnVmKTsKLQkJfQotCX0KKwkvKiBXYWtlIHVwIHRoZSBjYW5jZWwgdGhyZWFk IC0gd3JpdGUoKSBpcyBhc3luYy1zaWduYWwtc2FmZSAqLworCWlmIChjYW5jZWxfcGlwZVsxXSA+ PSAwKQorCQkodm9pZCkgd3JpdGUoY2FuY2VsX3BpcGVbMV0sICZjLCAxKTsKKworCWVycm5vID0g c2F2ZV9lcnJubzsKIH0KIAorI2VuZGlmCQkJCQkJCS8qIFdJTjMyICovCisKKwogLyoKICAqIHNl dHVwX2NhbmNlbF9oYW5kbGVyCiAgKgotICogUmVnaXN0ZXIgcXVlcnkgY2FuY2VsbGF0aW9uIGNh bGxiYWNrIGZvciBTSUdJTlQuCisgKiBTZXQgdXAgaGFuZGxlciBmb3IgU0lHSU5UIChVbml4KSBv ciBjb25zb2xlIGV2ZW50cyAoV2luZG93cykgdG8gc2VuZCBhCisgKiBjYW5jZWwgcmVxdWVzdCB0 byB0aGUgc2VydmVyLgorICoKKyAqIFRoZSBvcHRpb25hbCBjYWxsYmFjayBpcyBpbnZva2VkIGRp cmVjdGx5IGZyb20gdGhlIHNpZ25hbCBoYW5kbGVyIGNvbnRleHQKKyAqIG9uIGV2ZXJ5IFNJR0lO VCAob24gVW5peCksIHNvIGl0IG11c3QgYmUgYXN5bmMtc2lnbmFsLXNhZmUuCiAgKi8KIHZvaWQK IHNldHVwX2NhbmNlbF9oYW5kbGVyKHZvaWQgKCpxdWVyeV9jYW5jZWxfY2FsbGJhY2spICh2b2lk KSkKIHsKIAljYW5jZWxfY2FsbGJhY2sgPSBxdWVyeV9jYW5jZWxfY2FsbGJhY2s7Ci0JY2FuY2Vs X3NlbnRfbXNnID0gXygiQ2FuY2VsIHJlcXVlc3Qgc2VudFxuIik7CisJY2FuY2VsX3NlbnRfbXNn ID0gXygiU2VuZGluZyBjYW5jZWwgcmVxdWVzdFxuIik7CiAJY2FuY2VsX25vdF9zZW50X21zZyA9 IF8oIkNvdWxkIG5vdCBzZW5kIGNhbmNlbCByZXF1ZXN0OiAiKTsKIAotCXBxc2lnbmFsKFNJR0lO VCwgaGFuZGxlX3NpZ2ludCk7Ci19CisjaWZkZWYgV0lOMzIKKwlTZXRDb25zb2xlQ3RybEhhbmRs ZXIoY29uc29sZUhhbmRsZXIsIFRSVUUpOworI2Vsc2UKIAotI2Vsc2UJCQkJCQkJLyogV0lOMzIg Ki8KKwkvKgorCSAqIENyZWF0ZSB0aGUgcGlwZSBhbmQgY2FuY2VsIHRocmVhZCAoc2VlIGNvbW1l bnQgb24gY2FuY2VsX3BpcGUgYWJvdmUpLgorCSAqLworCWlmIChwaXBlKGNhbmNlbF9waXBlKSA8 IDApCisJeworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgcGlwZSBmb3IgY2FuY2Vs OiAlbSIpOworCQlleGl0KDEpOworCX0KIAotc3RhdGljIEJPT0wgV0lOQVBJCi1jb25zb2xlSGFu ZGxlcihEV09SRCBkd0N0cmxUeXBlKQotewotCWNoYXIJCWVycmJ1ZlsyNTZdOworCS8qCisJICog TWFrZSB0aGUgd3JpdGUgZW5kIG5vbi1ibG9ja2luZywgc28gdGhhdCB0aGUgc2lnbmFsIGhhbmRs ZXIgd29uJ3QgYmxvY2sKKwkgKiBpZiB0aGUgcGlwZSBidWZmZXIgaXMgZnVsbCAod2hpY2ggaXMg dmVyeSB1bmxpa2VseSBpbiBwcmFjdGljZSBidXQKKwkgKiBwb3NzaWJsZSBpbiB0aGVvcnkpLgor CSAqLworCWZjbnRsKGNhbmNlbF9waXBlWzFdLCBGX1NFVEZMLCBPX05PTkJMT0NLKTsKIAotCWlm IChkd0N0cmxUeXBlID09IENUUkxfQ19FVkVOVCB8fAotCQlkd0N0cmxUeXBlID09IENUUkxfQlJF QUtfRVZFTlQpCiAJewotCQlDYW5jZWxSZXF1ZXN0ZWQgPSB0cnVlOwotCi0JCWlmIChjYW5jZWxf Y2FsbGJhY2sgIT0gTlVMTCkKLQkJCWNhbmNlbF9jYWxsYmFjaygpOworCQlpbnQJCQlyYyA9IHB0 aHJlYWRfY3JlYXRlKCZjYW5jZWxfdGhyZWFkLCBOVUxMLCBjYW5jZWxfdGhyZWFkX21haW4sIE5V TEwpOwogCi0JCS8qIFNlbmQgUXVlcnlDYW5jZWwgaWYgd2UgYXJlIHByb2Nlc3NpbmcgYSBkYXRh YmFzZSBxdWVyeSAqLwotCQlFbnRlckNyaXRpY2FsU2VjdGlvbigmY2FuY2VsQ29ubkxvY2spOwot CQlpZiAoY2FuY2VsQ29ubiAhPSBOVUxMKQorCQlpZiAocmMgIT0gMCkKIAkJewotCQkJaWYgKFBR Y2FuY2VsKGNhbmNlbENvbm4sIGVycmJ1Ziwgc2l6ZW9mKGVycmJ1ZikpKQotCQkJewotCQkJCXdy aXRlX3N0ZGVycihjYW5jZWxfc2VudF9tc2cpOwotCQkJfQotCQkJZWxzZQotCQkJewotCQkJCXdy aXRlX3N0ZGVycihjYW5jZWxfbm90X3NlbnRfbXNnKTsKLQkJCQl3cml0ZV9zdGRlcnIoZXJyYnVm KTsKLQkJCX0KKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSBjYW5jZWwgdGhyZWFk OiAlcyIsIHN0cmVycm9yKHJjKSk7CisJCQlleGl0KDEpOwogCQl9Ci0KLQkJTGVhdmVDcml0aWNh bFNlY3Rpb24oJmNhbmNlbENvbm5Mb2NrKTsKLQotCQlyZXR1cm4gVFJVRTsKIAl9Ci0JZWxzZQot CQkvKiBSZXR1cm4gRkFMU0UgZm9yIGFueSBzaWduYWxzIG5vdCBiZWluZyBoYW5kbGVkICovCi0J CXJldHVybiBGQUxTRTsKLX0KIAotdm9pZAotc2V0dXBfY2FuY2VsX2hhbmRsZXIodm9pZCAoKmNh bGxiYWNrKSAodm9pZCkpCi17Ci0JY2FuY2VsX2NhbGxiYWNrID0gY2FsbGJhY2s7Ci0JY2FuY2Vs X3NlbnRfbXNnID0gXygiQ2FuY2VsIHJlcXVlc3Qgc2VudFxuIik7Ci0JY2FuY2VsX25vdF9zZW50 X21zZyA9IF8oIkNvdWxkIG5vdCBzZW5kIGNhbmNlbCByZXF1ZXN0OiAiKTsKLQotCUluaXRpYWxp emVDcml0aWNhbFNlY3Rpb24oJmNhbmNlbENvbm5Mb2NrKTsKLQotCVNldENvbnNvbGVDdHJsSGFu ZGxlcihjb25zb2xlSGFuZGxlciwgVFJVRSk7CisJcHFzaWduYWwoU0lHSU5ULCBoYW5kbGVfc2ln aW50KTsKKyNlbmRpZgogfQotCi0jZW5kaWYJCQkJCQkJLyogV0lOMzIgKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2ZlX3V0aWxzL2NhbmNlbC5oIGIvc3JjL2luY2x1ZGUvZmVfdXRpbHMvY2Fu Y2VsLmgKaW5kZXggZTE3NGZiODNiOTIuLjhhZmIyZDc3OGJmIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9mZV91dGlscy9jYW5jZWwuaAorKysgYi9zcmMvaW5jbHVkZS9mZV91dGlscy9jYW5jZWwu aApAQCAtMjMsMTAgKzIzLDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9t aWNfdCBDYW5jZWxSZXF1ZXN0ZWQ7CiBleHRlcm4gdm9pZCBTZXRDYW5jZWxDb25uKFBHY29ubiAq Y29ubik7CiBleHRlcm4gdm9pZCBSZXNldENhbmNlbENvbm4odm9pZCk7CiAKLS8qCi0gKiBBIGNh bGxiYWNrIGNhbiBiZSBvcHRpb25hbGx5IHNldCB1cCB0byBiZSBjYWxsZWQgYXQgY2FuY2VsbGF0 aW9uCi0gKiB0aW1lLgotICovCiBleHRlcm4gdm9pZCBzZXR1cF9jYW5jZWxfaGFuZGxlcih2b2lk ICgqcXVlcnlfY2FuY2VsX2NhbGxiYWNrKSAodm9pZCkpOwogCiAjZW5kaWYJCQkJCQkJLyogQ0FO Q0VMX0ggKi8KLS0gCjIuNTMuMAoK --d9d7b9a076c0bfd4fb96e32b2c58c74be5f2a3fad308416dcd5a3e47825b Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0003-pg_dump-Don-t-use-the-deprecated-and-insecure-PQc.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0003-pg_dump-Don-t-use-the-deprecated-and-insecure-PQc.patch RnJvbSBiOGYzYjM2MWE4Y2FiOWNiZmM1ZmY4Zjg0YTc5ZjgwN2VmOGRkZmJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTdW4sIDggRmViIDIwMjYgMTk6MDA6MTIgKzAxMDAKU3ViamVjdDogW1BBVENIIHY1 IDMvNV0gcGdfZHVtcDogRG9uJ3QgdXNlIHRoZSBkZXByZWNhdGVkIGFuZCBpbnNlY3VyZQogUFFj YW5jZWwKCnBnX2R1bXAgc3RpbGwgdXNlZCBQUWNhbmNlbCB0byBzZW5kIGNhbmNlbCByZXF1ZXN0 cyB0byB0aGUgc2VydmVyIHdoZW4KdGhlIGR1bXAgd2FzIGNhbmNlbGxlZC4gVGhhdCBsaWJwcSBm dW5jdGlvbiBpcyBpbnNlY3VyZSwgYmVjYXVzZSBpdCBkb2VzCm5vdCB1c2UgZW5jcnlwdGlvbiB0 byBzZW5kIHRoZSBjYW5jZWwgcmVxdWVzdC4gVGhpcyBjb21taXQgc3RhcnRzIHVzaW5nIHRoZSBu ZXcKY2FuY2VsbGF0aW9uIEFQSXMgKGludHJvZHVjZWQgaW4gNjE0NjFhMzAwKSBpbiBwZ19kdW1w LiBUaGVzZSBBUElzIHVzZQp0aGUgc2FtZSBlbmNyeXB0aW9uIHNldHRpbmdzIGFzIHRoZSBjb25u ZWN0aW9uIHRoYXQncyBiZWluZyBjYW5jZWxsZWQuClNpbmNlIHRoZXNlIEFQSXMgYXJlIG5vdCBz aWduYWwtc2FmZSB0aGlzIHJlcXVpcmVkIGEgcmVmYWN0b3IgdG8gbm90CnNlbmQgdGhlIGNhbmNl bCByZXF1ZXN0IGluIGEgc2lnbmFsIGhhbmRsZXIgYW55bW9yZSwgYnV0IGluc3RlYWQgdXNpbmcg YQpkZWRpY2F0ZWQgdGhyZWFkLiBXaW5kb3dzIHdhcyBhbHJlYWR5IGRvaW5nIHRoYXQgdG9vLCBz byBub3cgdGhlIHBhdGhzCmNhbiBzaGFyZSBzb21lIGNvZGUuIFRoZXJlJ3Mgc3RpbGwgcXVpdGUg YSBiaXQgb2YgYmVoYXZpb3VyYWwgZGlmZmVyZW5jZQp0aG91Z2gsIGJlY2F1c2UgdGhlIHBnX2R1 bXAgaXMgdXNpbmcgdGhyZWFkcyBmb3IgcGFyYWxsZWxpc20gb24gV2luZG93cywKYnV0IHByb2Nl c3NlcyBvbiBVbml4ZXMuCi0tLQogc3JjL2Jpbi9wZ19kdW1wL01ha2VmaWxlICAgICAgICAgICAg IHwgICAyICstCiBzcmMvYmluL3BnX2R1bXAvbWVzb24uYnVpbGQgICAgICAgICAgfCAgIDIgKwog c3JjL2Jpbi9wZ19kdW1wL3BhcmFsbGVsLmMgICAgICAgICAgIHwgNDA0ICsrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jIHwgICAy ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmggfCAgIDggKy0KIHNyYy9i aW4vcGdfZHVtcC9wZ19iYWNrdXBfZGIuYyAgICAgICB8ICAgNyArLQogNiBmaWxlcyBjaGFuZ2Vk LCAyMjIgaW5zZXJ0aW9ucygrKSwgMjAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC9NYWtlZmlsZSBiL3NyYy9iaW4vcGdfZHVtcC9NYWtlZmlsZQppbmRleCA3OTA3 M2IwYTBlYS4uZjc2MzQ2YzRmNmMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9NYWtlZmls ZQorKysgYi9zcmMvYmluL3BnX2R1bXAvTWFrZWZpbGUKQEAgLTIxLDcgKzIxLDcgQEAgZXhwb3J0 IExaNAogZXhwb3J0IFpTVEQKIGV4cG9ydCB3aXRoX2ljdQogCi1vdmVycmlkZSBDUFBGTEFHUyA6 PSAtSSQobGlicHFfc3JjZGlyKSAkKENQUEZMQUdTKQorb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLUkk KGxpYnBxX3NyY2RpcikgLUkkKHRvcF9zcmNkaXIpL3NyYy9wb3J0ICQoQ1BQRkxBR1MpCiBMREZM QUdTX0lOVEVSTkFMICs9IC1MJCh0b3BfYnVpbGRkaXIpL3NyYy9mZV91dGlscyAtbHBnZmV1dGls cyAkKGxpYnBxX3BncG9ydCkKIAogT0JKUyA9IFwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9tZXNvbi5idWlsZCBiL3NyYy9iaW4vcGdfZHVtcC9tZXNvbi5idWlsZAppbmRleCA3YzlhNDc1 OTYzYi4uYzc3MmNkMGUyYzAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9tZXNvbi5idWls ZAorKysgYi9zcmMvYmluL3BnX2R1bXAvbWVzb24uYnVpbGQKQEAgLTIyLDYgKzIyLDggQEAgcGdf ZHVtcF9jb21tb25fc291cmNlcyA9IGZpbGVzKAogcGdfZHVtcF9jb21tb24gPSBzdGF0aWNfbGli cmFyeSgnbGlicGdkdW1wX2NvbW1vbicsCiAgIHBnX2R1bXBfY29tbW9uX3NvdXJjZXMsCiAgIGNf cGNoOiBwY2hfcG9zdGdyZXNfZmVfaCwKKyAgIyBwb3J0IG5lZWRzIHRvIGJlIGluIGluY2x1ZGUg cGF0aCBkdWUgdG8gcHRocmVhZC13aW4zMi5oCisgIGluY2x1ZGVfZGlyZWN0b3JpZXM6IFsnLi4v Li4vcG9ydCddLAogICBkZXBlbmRlbmNpZXM6IFtmcm9udGVuZF9jb2RlLCBsaWJwcSwgbHo0LCB6 bGliLCB6c3RkXSwKICAga3dhcmdzOiBpbnRlcm5hbF9saWJfYXJncywKICkKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfZHVtcC9wYXJhbGxlbC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BhcmFsbGVsLmMK aW5kZXggYTI4NTYxZmJkODQuLmNjMmZkN2VlY2Y3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1 bXAvcGFyYWxsZWwuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGFyYWxsZWwuYwpAQCAtNTgsOCAr NTgsMTIgQEAKICNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNs dWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNlbHNlCisjaW5jbHVkZSAicHRo cmVhZC13aW4zMi5oIgogI2VuZGlmCiAKKyNpbmNsdWRlICJjb21tb24vbG9nZ2luZy5oIgogI2lu Y2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogI2luY2x1ZGUgInBhcmFsbGVsLmgiCiAj aW5jbHVkZSAicGdfYmFja3VwX3V0aWxzLmgiCkBAIC0xNjcsNiArMTcxLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgRHVtcFNpZ25hbEluZm9ybWF0aW9uCiAJQXJjaGl2ZUhhbmRsZSAqbXlBSDsJCS8qIGRh dGFiYXNlIGNvbm5lY3Rpb24gdG8gaXNzdWUgY2FuY2VsIGZvciAqLwogCVBhcmFsbGVsU3RhdGUg KnBzdGF0ZTsJCS8qIHBhcmFsbGVsIHN0YXRlLCBpZiBhbnkgKi8KIAlib29sCQloYW5kbGVyX3Nl dDsJLyogc2lnbmFsIGhhbmRsZXIgc2V0IHVwIGluIHRoaXMgcHJvY2Vzcz8gKi8KKwlib29sCQlj YW5jZWxfcmVxdWVzdGVkOwkvKiBjYW5jZWwgcmVxdWVzdGVkIHZpYSBzaWduYWw/ICovCiAjaWZu ZGVmIFdJTjMyCiAJYm9vbAkJYW1fd29ya2VyOwkJLyogYW0gSSBhIHdvcmtlciBwcm9jZXNzPyAq LwogI2VuZGlmCkBAIC0xNzQsOCArMTc5LDIwIEBAIHR5cGVkZWYgc3RydWN0IER1bXBTaWduYWxJ bmZvcm1hdGlvbgogCiBzdGF0aWMgdm9sYXRpbGUgRHVtcFNpZ25hbEluZm9ybWF0aW9uIHNpZ25h bF9pbmZvOwogCi0jaWZkZWYgV0lOMzIKLXN0YXRpYyBDUklUSUNBTF9TRUNUSU9OIHNpZ25hbF9p bmZvX2xvY2s7CisvKgorICogTXV0ZXggcHJvdGVjdGluZyBzaWduYWxfaW5mbyBkdXJpbmcgY2Fu Y2VsIG9wZXJhdGlvbnMuCisgKi8KK3N0YXRpYyBwdGhyZWFkX211dGV4X3Qgc2lnbmFsX2luZm9f bG9jazsKKworI2lmbmRlZiBXSU4zMgorLyoKKyAqIE9uIFVuaXgsIHRoZSBzaWduYWwgaGFuZGxl ciBjYW5ub3QgY2FsbCBQUWNhbmNlbEJsb2NraW5nKCkgZGlyZWN0bHkgYmVjYXVzZQorICogaXQg aXMgbm90IGFzeW5jLXNpZ25hbC1zYWZlLiAgSW5zdGVhZCwgd2UgdXNlIGEgcGlwZSB0byB3YWtl IGEgZGVkaWNhdGVkCisgKiBjYW5jZWwgdGhyZWFkOiB0aGUgc2lnbmFsIGhhbmRsZXIgd3JpdGVz IGEgYnl0ZSB0byB0aGUgcGlwZSwgYW5kIHRoZSBjYW5jZWwKKyAqIHRocmVhZCdzIGJsb2NraW5n IHJlYWQoKSByZXR1cm5zLCB0cmlnZ2VyaW5nIHRoZSBhY3R1YWwgY2FuY2VsIHJlcXVlc3RzLgor ICovCitzdGF0aWMgaW50CWNhbmNlbF9waXBlWzJdID0gey0xLCAtMX07CitzdGF0aWMgcHRocmVh ZF90IGNhbmNlbF90aHJlYWQ7CiAjZW5kaWYKIAogLyoKQEAgLTIwOSw2ICsyMjYsNyBAQCBzdGF0 aWMgdm9pZCBXYWl0Rm9yVGVybWluYXRpbmdXb3JrZXJzKFBhcmFsbGVsU3RhdGUgKnBzdGF0ZSk7 CiBzdGF0aWMgdm9pZCBzZXRfY2FuY2VsX2hhbmRsZXIodm9pZCk7CiBzdGF0aWMgdm9pZCBzZXRf Y2FuY2VsX3BzdGF0ZShQYXJhbGxlbFN0YXRlICpwc3RhdGUpOwogc3RhdGljIHZvaWQgc2V0X2Nh bmNlbF9zbG90X2FyY2hpdmUoUGFyYWxsZWxTbG90ICpzbG90LCBBcmNoaXZlSGFuZGxlICpBSCk7 CitzdGF0aWMgdm9pZCBTdG9wV29ya2Vycyh2b2lkKTsKIHN0YXRpYyB2b2lkIFJ1bldvcmtlcihB cmNoaXZlSGFuZGxlICpBSCwgUGFyYWxsZWxTbG90ICpzbG90KTsKIHN0YXRpYyBpbnQJR2V0SWRs ZVdvcmtlcihQYXJhbGxlbFN0YXRlICpwc3RhdGUpOwogc3RhdGljIGJvb2wgSGFzRXZlcnlXb3Jr ZXJUZXJtaW5hdGVkKFBhcmFsbGVsU3RhdGUgKnBzdGF0ZSk7CkBAIC00MjQsMzIgKzQ0Miw5IEBA IFNodXRkb3duV29ya2Vyc0hhcmQoUGFyYWxsZWxTdGF0ZSAqcHN0YXRlKQogCS8qCiAJICogRm9y Y2UgZWFybHkgdGVybWluYXRpb24gb2YgYW55IGNvbW1hbmRzIGN1cnJlbnRseSBpbiBwcm9ncmVz cy4KIAkgKi8KLSNpZm5kZWYgV0lOMzIKLQkvKiBPbiBub24tV2luZG93cywgc2VuZCBTSUdURVJN IHRvIGVhY2ggd29ya2VyIHByb2Nlc3MuICovCi0JZm9yIChpID0gMDsgaSA8IHBzdGF0ZS0+bnVt V29ya2VyczsgaSsrKQotCXsKLQkJcGlkX3QJCXBpZCA9IHBzdGF0ZS0+cGFyYWxsZWxTbG90W2ld LnBpZDsKLQotCQlpZiAocGlkICE9IDApCi0JCQlraWxsKHBpZCwgU0lHVEVSTSk7Ci0JfQotI2Vs c2UKLQotCS8qCi0JICogT24gV2luZG93cywgc2VuZCBxdWVyeSBjYW5jZWxzIGRpcmVjdGx5IHRv IHRoZSB3b3JrZXJzJyBiYWNrZW5kcy4gIFVzZQotCSAqIGEgY3JpdGljYWwgc2VjdGlvbiB0byBl bnN1cmUgd29ya2VyIHRocmVhZHMgZG9uJ3QgY2hhbmdlIHN0YXRlLgotCSAqLwotCUVudGVyQ3Jp dGljYWxTZWN0aW9uKCZzaWduYWxfaW5mb19sb2NrKTsKLQlmb3IgKGkgPSAwOyBpIDwgcHN0YXRl LT5udW1Xb3JrZXJzOyBpKyspCi0JewotCQlBcmNoaXZlSGFuZGxlICpBSCA9IHBzdGF0ZS0+cGFy YWxsZWxTbG90W2ldLkFIOwotCQljaGFyCQllcnJidWZbMV07Ci0KLQkJaWYgKEFIICE9IE5VTEwg JiYgQUgtPmNvbm5DYW5jZWwgIT0gTlVMTCkKLQkJCSh2b2lkKSBQUWNhbmNlbChBSC0+Y29ubkNh bmNlbCwgZXJyYnVmLCBzaXplb2YoZXJyYnVmKSk7Ci0JfQotCUxlYXZlQ3JpdGljYWxTZWN0aW9u KCZzaWduYWxfaW5mb19sb2NrKTsKLSNlbmRpZgorCXB0aHJlYWRfbXV0ZXhfbG9jaygmc2lnbmFs X2luZm9fbG9jayk7CisJU3RvcFdvcmtlcnMoKTsKKwlwdGhyZWFkX211dGV4X3VubG9jaygmc2ln bmFsX2luZm9fbG9jayk7CiAKIAkvKiBOb3cgd2FpdCBmb3IgdGhlbSB0byB0ZXJtaW5hdGUuICov CiAJV2FpdEZvclRlcm1pbmF0aW5nV29ya2Vycyhwc3RhdGUpOwpAQCAtNTMzLDc0ICs1MjgsNTQg QEAgV2FpdEZvclRlcm1pbmF0aW5nV29ya2VycyhQYXJhbGxlbFN0YXRlICpwc3RhdGUpCiAgKiBj b3VsZCBsZWF2ZSBhIFNRTCBjb21tYW5kIChlLmcuLCBDUkVBVEUgSU5ERVggb24gYSBsYXJnZSB0 YWJsZSkgcnVubmluZwogICogZm9yIGEgbG9uZyB0aW1lLiAgSW5zdGVhZCwgd2UgdHJ5IHRvIHNl bmQgYSBjYW5jZWwgcmVxdWVzdCBhbmQgdGhlbiBkaWUuCiAgKiBwZ19kdW1wIHByb2JhYmx5IGRv ZXNuJ3QgcmVhbGx5IG5lZWQgdGhpcywgYnV0IHdlIG1pZ2h0IGFzIHdlbGwgdXNlIGl0Ci0gKiB0 aGVyZSB0b28uICBOb3RlIHRoYXQgc2VuZGluZyB0aGUgY2FuY2VsIGRpcmVjdGx5IGZyb20gdGhl IHNpZ25hbCBoYW5kbGVyCi0gKiBpcyBzYWZlIGJlY2F1c2UgUFFjYW5jZWwoKSBpcyB3cml0dGVu IHRvIG1ha2UgaXQgc28uCisgKiB0aGVyZSB0b28uCiAgKgotICogSW4gcGFyYWxsZWwgb3BlcmF0 aW9uIG9uIFVuaXgsIGVhY2ggcHJvY2VzcyBpcyByZXNwb25zaWJsZSBmb3IgY2FuY2VsaW5nCi0g KiBpdHMgb3duIGNvbm5lY3Rpb24gKHRoaXMgbXVzdCBiZSBzbyBiZWNhdXNlIG5vYm9keSBlbHNl IGhhcyBhY2Nlc3MgdG8gaXQpLgotICogRnVydGhlcm1vcmUsIHRoZSBsZWFkZXIgcHJvY2VzcyBz aG91bGQgYXR0ZW1wdCB0byBmb3J3YXJkIGl0cyBzaWduYWwgdG8KLSAqIGVhY2ggY2hpbGQuICBJ biBzaW1wbGUgbWFudWFsIHVzZSBvZiBwZ19kdW1wL3BnX3Jlc3RvcmUsIGZvcndhcmRpbmcgaXNu J3QKLSAqIG5lZWRlZCBiZWNhdXNlIHR5cGluZyBjb250cm9sLUMgYXQgdGhlIGNvbnNvbGUgd291 bGQgZGVsaXZlciBTSUdJTlQgdG8KLSAqIGV2ZXJ5IG1lbWJlciBvZiB0aGUgdGVybWluYWwgcHJv Y2VzcyBncm91cCAtLS0gYnV0IGluIG90aGVyIHNjZW5hcmlvcyBpdAotICogbWlnaHQgYmUgdGhh dCBvbmx5IHRoZSBsZWFkZXIgZ2V0cyBzaWduYWxlZC4KKyAqIE9uIFVuaXgsIHRoZSBzaWduYWwg aGFuZGxlciB3YWtlcyB1cCBhIGRlZGljYXRlZCBjYW5jZWwgdGhyZWFkIHZpYSBhCisgKiBzZWxm LXBpcGUsIHdoaWNoIHRoZW4gc2VuZHMgdGhlIGNhbmNlbCBhbmQgY2FsbHMgX2V4aXQoKS4gIFRo aXMgdGhyZWFkIGFsc28KKyAqIGZvcndhcmRzIHRoZSBzaWduYWwgdG8gZWFjaCBjaGlsZCBzbyB0 aGV5IGNhbiBhbHNvIGNhbmNlbCB0aGVpciBxdWVyaWVzLiBJbgorICogc2ltcGxlIG1hbnVhbCB1 c2Ugb2YgcGdfZHVtcC9wZ19yZXN0b3JlLCBmb3J3YXJkaW5nIGlzbid0IG5lZWRlZCBiZWNhdXNl CisgKiB0eXBpbmcgY29udHJvbC1DIGF0IHRoZSBjb25zb2xlIHdvdWxkIGRlbGl2ZXIgU0lHSU5U IHRvIGV2ZXJ5IG1lbWJlciBvZiB0aGUKKyAqIHRlcm1pbmFsIHByb2Nlc3MgZ3JvdXAgLS0tIGJ1 dCBpbiBvdGhlciBzY2VuYXJpb3MgaXQgbWlnaHQgYmUgdGhhdCBvbmx5IHRoZQorICogbGVhZGVy IGdldHMgc2lnbmFsZWQuCiAgKgogICogT24gV2luZG93cywgdGhlIGNhbmNlbCBoYW5kbGVyIHJ1 bnMgaW4gYSBzZXBhcmF0ZSB0aHJlYWQsIGJlY2F1c2UgdGhhdCdzCiAgKiBob3cgU2V0Q29uc29s ZUN0cmxIYW5kbGVyIHdvcmtzLiAgV2UgbWFrZSBpdCBzdG9wIHdvcmtlciB0aHJlYWRzLCBzZW5k CiAgKiBjYW5jZWxzIG9uIGFsbCBhY3RpdmUgY29ubmVjdGlvbnMsIGFuZCB0aGVuIHJldHVybiBG QUxTRSwgd2hpY2ggd2lsbCBhbGxvdwogICogdGhlIHByb2Nlc3MgdG8gZGllLiAgRm9yIHNhZmV0 eSdzIHNha2UsIHdlIHVzZSBhIGNyaXRpY2FsIHNlY3Rpb24gdG8KLSAqIHByb3RlY3QgdGhlIFBH Y2FuY2VsIHN0cnVjdHVyZXMgYWdhaW5zdCBiZWluZyBjaGFuZ2VkIHdoaWxlIHRoZSBzaWduYWwK KyAqIHByb3RlY3QgdGhlIFBHY2FuY2VsQ29ubiBzdHJ1Y3R1cmVzIGFnYWluc3QgYmVpbmcgY2hh bmdlZCB3aGlsZSB0aGUgc2lnbmFsCiAgKiB0aHJlYWQgcnVucy4KICAqLwogCi0jaWZuZGVmIFdJ TjMyCi0KIC8qCi0gKiBTaWduYWwgaGFuZGxlciAoVW5peCBvbmx5KQorICogQ2FuY2VsIGFsbCBh Y3RpdmUgcXVlcmllcyBhbmQgcHJpbnQgdGVybWluYXRpb24gbWVzc2FnZS4KICAqLwogc3RhdGlj IHZvaWQKLXNpZ1Rlcm1IYW5kbGVyKFNJR05BTF9BUkdTKQorQ2FuY2VsQmFja2VuZHModm9pZCkK IHsKLQlpbnQJCQlpOwotCWNoYXIJCWVycmJ1ZlsxXTsKKwlwdGhyZWFkX211dGV4X2xvY2soJnNp Z25hbF9pbmZvX2xvY2spOwogCi0JLyoKLQkgKiBTb21lIHBsYXRmb3JtcyBhbGxvdyBkZWxpdmVy eSBvZiBuZXcgc2lnbmFscyB0byBpbnRlcnJ1cHQgYW4gYWN0aXZlCi0JICogc2lnbmFsIGhhbmRs ZXIuICBUaGF0IGNvdWxkIG11Y2sgdXAgb3VyIGF0dGVtcHQgdG8gc2VuZCBQUWNhbmNlbCwgc28K LQkgKiBkaXNhYmxlIHRoZSBzaWduYWxzIHRoYXQgc2V0X2NhbmNlbF9oYW5kbGVyIGVuYWJsZWQu Ci0JICovCi0JcHFzaWduYWwoU0lHSU5ULCBTSUdfSUdOKTsKLQlwcXNpZ25hbChTSUdURVJNLCBT SUdfSUdOKTsKLQlwcXNpZ25hbChTSUdRVUlULCBTSUdfSUdOKTsKKwlzaWduYWxfaW5mby5jYW5j ZWxfcmVxdWVzdGVkID0gdHJ1ZTsKIAogCS8qCi0JICogSWYgd2UncmUgaW4gdGhlIGxlYWRlciwg Zm9yd2FyZCBzaWduYWwgdG8gYWxsIHdvcmtlcnMuICAoSXQgc2VlbXMgYmVzdAotCSAqIHRvIGRv IHRoaXMgYmVmb3JlIFBRY2FuY2VsOyBraWxsaW5nIHRoZSBsZWFkZXIgdHJhbnNhY3Rpb24gd2ls bCByZXN1bHQKLQkgKiBpbiBpbnZhbGlkLXNuYXBzaG90IGVycm9ycyBmcm9tIGFjdGl2ZSB3b3Jr ZXJzLCB3aGljaCBtYXliZSB3ZSBjYW4KLQkgKiBxdWlldCBieSBraWxsaW5nIHdvcmtlcnMgZmly c3QuKSAgSWdub3JlIGFueSBlcnJvcnMuCisJICogU3RvcCB3b3JrZXJzIGZpcnN0IHRvIGF2b2lk IGludmFsaWQtc25hcHNob3QgZXJyb3JzIGlmIHRoZSBsZWFkZXIKKwkgKiBjYW5jZWxzIGJlZm9y ZSB3b3JrZXJzLgogCSAqLwotCWlmIChzaWduYWxfaW5mby5wc3RhdGUgIT0gTlVMTCkKLQl7Ci0J CWZvciAoaSA9IDA7IGkgPCBzaWduYWxfaW5mby5wc3RhdGUtPm51bVdvcmtlcnM7IGkrKykKLQkJ ewotCQkJcGlkX3QJCXBpZCA9IHNpZ25hbF9pbmZvLnBzdGF0ZS0+cGFyYWxsZWxTbG90W2ldLnBp ZDsKKwlTdG9wV29ya2VycygpOwogCi0JCQlpZiAocGlkICE9IDApCi0JCQkJa2lsbChwaWQsIFNJ R1RFUk0pOwotCQl9Ci0JfQorCWlmIChzaWduYWxfaW5mby5teUFIICE9IE5VTEwgJiYgc2lnbmFs X2luZm8ubXlBSC0+Y2FuY2VsQ29ubiAhPSBOVUxMKQorCQkodm9pZCkgUFFjYW5jZWxCbG9ja2lu ZyhzaWduYWxfaW5mby5teUFILT5jYW5jZWxDb25uKTsKIAotCS8qCi0JICogU2VuZCBRdWVyeUNh bmNlbCBpZiB3ZSBoYXZlIGEgY29ubmVjdGlvbiB0byBzZW5kIHRvLiAgSWdub3JlIGVycm9ycywK LQkgKiB0aGVyZSdzIG5vdCBtdWNoIHdlIGNhbiBkbyBhYm91dCB0aGVtIGFueXdheS4KLQkgKi8K LQlpZiAoc2lnbmFsX2luZm8ubXlBSCAhPSBOVUxMICYmIHNpZ25hbF9pbmZvLm15QUgtPmNvbm5D YW5jZWwgIT0gTlVMTCkKLQkJKHZvaWQpIFBRY2FuY2VsKHNpZ25hbF9pbmZvLm15QUgtPmNvbm5D YW5jZWwsIGVycmJ1Ziwgc2l6ZW9mKGVycmJ1ZikpOworCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZz aWduYWxfaW5mb19sb2NrKTsKIAogCS8qCi0JICogUmVwb3J0IHdlJ3JlIHF1aXR0aW5nLCB1c2lu ZyBub3RoaW5nIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiB3cml0ZSgyKS4KLQkgKiBXaGVuIGluIHBh cmFsbGVsIG9wZXJhdGlvbiwgb25seSB0aGUgbGVhZGVyIHByb2Nlc3Mgc2hvdWxkIGRvIHRoaXMu CisJICogUHJpbnQgdGVybWluYXRpb24gbWVzc2FnZS4gSW4gcGFyYWxsZWwgb3BlcmF0aW9uLCBv bmx5IHRoZSBsZWFkZXIKKwkgKiBzaG91bGQgcHJpbnQgdGhpcy4gT24gV2luZG93cywgd29ya2Vy cyBhcmUgdGhyZWFkcyBpbiB0aGUgc2FtZSBwcm9jZXNzCisJICogYW5kIHRoZSBjb25zb2xlIGhh bmRsZXIgb25seSBydW5zIGluIHRoZSBsZWFkZXIgY29udGV4dCwgc28gd2UgY2FuCisJICogYWx3 YXlzIHByaW50IGl0LgogCSAqLworI2lmbmRlZiBXSU4zMgogCWlmICghc2lnbmFsX2luZm8uYW1f d29ya2VyKQorI2VuZGlmCiAJewogCQlpZiAocHJvZ25hbWUpCiAJCXsKQEAgLTYwOSwxNzIgKzU4 NCwyMDQgQEAgc2lnVGVybUhhbmRsZXIoU0lHTkFMX0FSR1MpCiAJCX0KIAkJd3JpdGVfc3RkZXJy KCJ0ZXJtaW5hdGVkIGJ5IHVzZXJcbiIpOwogCX0KLQotCS8qCi0JICogQW5kIGRpZSwgdXNpbmcg X2V4aXQoKSBub3QgZXhpdCgpIGJlY2F1c2UgdGhlIGxhdHRlciB3aWxsIGludm9rZSBhdGV4aXQK LQkgKiBoYW5kbGVycyB0aGF0IGNhbiBmYWlsIGlmIHdlIGludGVycnVwdGVkIHJlbGF0ZWQgY29k ZS4KLQkgKi8KLQlfZXhpdCgxKTsKIH0KIAogLyoKLSAqIEVuYWJsZSBjYW5jZWwgaW50ZXJydXB0 IGhhbmRsZXIsIGlmIG5vdCBhbHJlYWR5IGRvbmUuCisgKiBTdG9wIGFsbCB3b3JrZXIgcHJvY2Vz c2VzL3RocmVhZHMuCisgKgorICogT24gVW5peCwgc2VuZCBTSUdURVJNIHRvIGVhY2ggd29ya2Vy IHByb2Nlc3M7IHRoZWlyIHNpZ25hbCBoYW5kbGVycyB3aWxsCisgKiBzZW5kIGNhbmNlbCByZXF1 ZXN0cyB0byB0aGVpciBiYWNrZW5kcy4KKyAqCisgKiBPbiBXaW5kb3dzLCB3b3JrZXJzIGFyZSB0 aHJlYWRzIGluIHRoZSBzYW1lIHByb2Nlc3MsIHNvIHdlIHNlbmQgY2FuY2VsCisgKiByZXF1ZXN0 cyBkaXJlY3RseSB0byB0aGVpciBiYWNrZW5kcy4KKyAqCisgKiBDYWxsZXIgbXVzdCBob2xkIHNp Z25hbF9pbmZvX2xvY2suCiAgKi8KIHN0YXRpYyB2b2lkCi1zZXRfY2FuY2VsX2hhbmRsZXIodm9p ZCkKK1N0b3BXb3JrZXJzKHZvaWQpCiB7Ci0JLyoKLQkgKiBXaGVuIGZvcmtpbmcsIHNpZ25hbF9p bmZvLmhhbmRsZXJfc2V0IHdpbGwgcHJvcGFnYXRlIGludG8gdGhlIG5ldwotCSAqIHByb2Nlc3Ms IGJ1dCB0aGF0J3MgZmluZSBiZWNhdXNlIHRoZSBzaWduYWwgaGFuZGxlciBzdGF0ZSBkb2VzIHRv by4KLQkgKi8KLQlpZiAoIXNpZ25hbF9pbmZvLmhhbmRsZXJfc2V0KQorCWludAkJCWk7CisKKwlp ZiAoc2lnbmFsX2luZm8ucHN0YXRlID09IE5VTEwpCisJCXJldHVybjsKKworCWZvciAoaSA9IDA7 IGkgPCBzaWduYWxfaW5mby5wc3RhdGUtPm51bVdvcmtlcnM7IGkrKykKIAl7Ci0JCXNpZ25hbF9p bmZvLmhhbmRsZXJfc2V0ID0gdHJ1ZTsKKyNpZm5kZWYgV0lOMzIKKwkJcGlkX3QJCXBpZCA9IHNp Z25hbF9pbmZvLnBzdGF0ZS0+cGFyYWxsZWxTbG90W2ldLnBpZDsKKworCQlpZiAocGlkICE9IDAp CisJCQlraWxsKHBpZCwgU0lHVEVSTSk7CisjZWxzZQorCQlBcmNoaXZlSGFuZGxlICpBSCA9IHNp Z25hbF9pbmZvLnBzdGF0ZS0+cGFyYWxsZWxTbG90W2ldLkFIOwogCi0JCXBxc2lnbmFsKFNJR0lO VCwgc2lnVGVybUhhbmRsZXIpOwotCQlwcXNpZ25hbChTSUdURVJNLCBzaWdUZXJtSGFuZGxlcik7 Ci0JCXBxc2lnbmFsKFNJR1FVSVQsIHNpZ1Rlcm1IYW5kbGVyKTsKKwkJaWYgKEFIICE9IE5VTEwg JiYgQUgtPmNhbmNlbENvbm4gIT0gTlVMTCkKKwkJCSh2b2lkKSBQUWNhbmNlbEJsb2NraW5nKEFI LT5jYW5jZWxDb25uKTsKKyNlbmRpZgogCX0KIH0KIAotI2Vsc2UJCQkJCQkJLyogV0lOMzIgKi8K KyNpZmRlZiBXSU4zMgogCiAvKgogICogQ29uc29sZSBpbnRlcnJ1cHQgaGFuZGxlciAtLS0gcnVu cyBpbiBhIG5ld2x5LXN0YXJ0ZWQgdGhyZWFkLgogICoKLSAqIEFmdGVyIHN0b3BwaW5nIG90aGVy IHRocmVhZHMgYW5kIHNlbmRpbmcgY2FuY2VsIHJlcXVlc3RzIG9uIGFsbCBvcGVuCi0gKiBjb25u ZWN0aW9ucywgd2UgcmV0dXJuIEZBTFNFIHdoaWNoIHdpbGwgYWxsb3cgdGhlIGRlZmF1bHQgRXhp dFByb2Nlc3MoKQotICogYWN0aW9uIHRvIGJlIHRha2VuLgorICogU2VuZCBjYW5jZWwgcmVxdWVz dHMgb24gYWxsIG9wZW4gY29ubmVjdGlvbnMgYW5kIHJldHVybiBGQUxTRSB0byBhbGxvdworICog dGhlIGRlZmF1bHQgRXhpdFByb2Nlc3MoKSBhY3Rpb24gdG8gdGVybWluYXRlIHRoZSBwcm9jZXNz LgogICovCiBzdGF0aWMgQk9PTCBXSU5BUEkKIGNvbnNvbGVIYW5kbGVyKERXT1JEIGR3Q3RybFR5 cGUpCiB7Ci0JaW50CQkJaTsKLQljaGFyCQllcnJidWZbMV07Ci0KIAlpZiAoZHdDdHJsVHlwZSA9 PSBDVFJMX0NfRVZFTlQgfHwKIAkJZHdDdHJsVHlwZSA9PSBDVFJMX0JSRUFLX0VWRU5UKQogCXsK LQkJLyogQ3JpdGljYWwgc2VjdGlvbiBwcmV2ZW50cyBjaGFuZ2luZyBkYXRhIHdlIGxvb2sgYXQg aGVyZSAqLwotCQlFbnRlckNyaXRpY2FsU2VjdGlvbigmc2lnbmFsX2luZm9fbG9jayk7CisJCUNh bmNlbEJhY2tlbmRzKCk7CisJfQogCi0JCS8qCi0JCSAqIElmIGluIHBhcmFsbGVsIG1vZGUsIHN0 b3Agd29ya2VyIHRocmVhZHMgYW5kIHNlbmQgUXVlcnlDYW5jZWwgdG8KLQkJICogdGhlaXIgY29u bmVjdGVkIGJhY2tlbmRzLiAgVGhlIG1haW4gcG9pbnQgb2Ygc3RvcHBpbmcgdGhlIHdvcmtlcgot CQkgKiB0aHJlYWRzIGlzIHRvIGtlZXAgdGhlbSBmcm9tIHJlcG9ydGluZyB0aGUgcXVlcnkgY2Fu Y2VscyBhcyBlcnJvcnMsCi0JCSAqIHdoaWNoIHdvdWxkIGNsdXR0ZXIgdGhlIHVzZXIncyBzY3Jl ZW4uICBXZSBuZWVkbid0IHN0b3AgdGhlIGxlYWRlcgotCQkgKiB0aHJlYWQgc2luY2UgaXQgd29u J3QgYmUgZG9pbmcgbXVjaCBhbnl3YXkuICBEbyB0aGlzIGJlZm9yZQotCQkgKiBjYW5jZWxpbmcg dGhlIG1haW4gdHJhbnNhY3Rpb24sIGVsc2Ugd2UgbWlnaHQgZ2V0IGludmFsaWQtc25hcHNob3QK LQkJICogZXJyb3JzIHJlcG9ydGVkIGJlZm9yZSB3ZSBjYW4gc3RvcCB0aGUgd29ya2Vycy4gIEln bm9yZSBlcnJvcnMsCi0JCSAqIHRoZXJlJ3Mgbm90IG11Y2ggd2UgY2FuIGRvIGFib3V0IHRoZW0g YW55d2F5LgotCQkgKi8KLQkJaWYgKHNpZ25hbF9pbmZvLnBzdGF0ZSAhPSBOVUxMKQorCS8qIEFs d2F5cyByZXR1cm4gRkFMU0UgdG8gYWxsb3cgc2lnbmFsIGhhbmRsaW5nIHRvIGNvbnRpbnVlICov CisJcmV0dXJuIEZBTFNFOworfQorCisjZWxzZQkJCQkJCQkvKiAhV0lOMzIgKi8KKworLyoKKyAq IENhbmNlbCB0aHJlYWQgbWFpbiBmdW5jdGlvbi4gV2FpdHMgZm9yIHRoZSBzaWduYWwgaGFuZGxl ciB0byB3cml0ZSB0byB0aGUKKyAqIHBpcGUsIHRoZW4gY2FuY2VscyBiYWNrZW5kcyBhbmQgY2Fs bHMgX2V4aXQoKS4KKyAqLworc3RhdGljIHZvaWQgKgorY2FuY2VsX3RocmVhZF9tYWluKHZvaWQg KmFyZykKK3sKKwlmb3IgKDs7KQorCXsKKwkJY2hhcgkJYnVmWzE2XTsKKwkJc3NpemVfdAkJcmM7 CisKKwkJLyogV2FpdCBmb3Igc2lnbmFsIGhhbmRsZXIgdG8gd2FrZSB1cyB1cCAqLworCQlyYyA9 IHJlYWQoY2FuY2VsX3BpcGVbMF0sIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCQlpZiAocmMgPD0gMCkK IAkJewotCQkJZm9yIChpID0gMDsgaSA8IHNpZ25hbF9pbmZvLnBzdGF0ZS0+bnVtV29ya2Vyczsg aSsrKQotCQkJewotCQkJCVBhcmFsbGVsU2xvdCAqc2xvdCA9ICYoc2lnbmFsX2luZm8ucHN0YXRl LT5wYXJhbGxlbFNsb3RbaV0pOwotCQkJCUFyY2hpdmVIYW5kbGUgKkFIID0gc2xvdC0+QUg7Ci0J CQkJSEFORExFCQloVGhyZWFkID0gKEhBTkRMRSkgc2xvdC0+aFRocmVhZDsKLQotCQkJCS8qCi0J CQkJICogVXNpbmcgVGVybWluYXRlVGhyZWFkIGhlcmUgbWF5IGxlYXZlIHNvbWUgcmVzb3VyY2Vz IGxlYWtlZCwKLQkJCQkgKiBidXQgaXQgZG9lc24ndCBtYXR0ZXIgc2luY2Ugd2UncmUgYWJvdXQg dG8gZW5kIHRoZSB3aG9sZQotCQkJCSAqIHByb2Nlc3MuCi0JCQkJICovCi0JCQkJaWYgKGhUaHJl YWQgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0JCQkJCVRlcm1pbmF0ZVRocmVhZChoVGhyZWFk LCAwKTsKLQotCQkJCWlmIChBSCAhPSBOVUxMICYmIEFILT5jb25uQ2FuY2VsICE9IE5VTEwpCi0J CQkJCSh2b2lkKSBQUWNhbmNlbChBSC0+Y29ubkNhbmNlbCwgZXJyYnVmLCBzaXplb2YoZXJyYnVm KSk7Ci0JCQl9CisJCQlpZiAoZXJybm8gPT0gRUlOVFIpCisJCQkJY29udGludWU7CisJCQkvKiBQ aXBlIGNsb3NlZCBvciBlcnJvciAtIGV4aXQgdGhyZWFkICovCisJCQlicmVhazsKIAkJfQogCi0J CS8qCi0JCSAqIFNlbmQgUXVlcnlDYW5jZWwgdG8gbGVhZGVyIGNvbm5lY3Rpb24sIGlmIGVuYWJs ZWQuICBJZ25vcmUgZXJyb3JzLAotCQkgKiB0aGVyZSdzIG5vdCBtdWNoIHdlIGNhbiBkbyBhYm91 dCB0aGVtIGFueXdheS4KLQkJICovCi0JCWlmIChzaWduYWxfaW5mby5teUFIICE9IE5VTEwgJiYg c2lnbmFsX2luZm8ubXlBSC0+Y29ubkNhbmNlbCAhPSBOVUxMKQotCQkJKHZvaWQpIFBRY2FuY2Vs KHNpZ25hbF9pbmZvLm15QUgtPmNvbm5DYW5jZWwsCi0JCQkJCQkJZXJyYnVmLCBzaXplb2YoZXJy YnVmKSk7Ci0KLQkJTGVhdmVDcml0aWNhbFNlY3Rpb24oJnNpZ25hbF9pbmZvX2xvY2spOworCQlD YW5jZWxCYWNrZW5kcygpOwogCiAJCS8qCi0JCSAqIFJlcG9ydCB3ZSdyZSBxdWl0dGluZywgdXNp bmcgbm90aGluZyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4KLQkJICogd3JpdGUoMikuICAoV2UgbWln aHQgYmUgYWJsZSB0byBnZXQgYXdheSB3aXRoIHVzaW5nIHBnX2xvZ18qKCkKLQkJICogaGVyZSwg YnV0IHNpbmNlIHdlIHRlcm1pbmF0ZWQgb3RoZXIgdGhyZWFkcyB1bmNsZWFubHkgYWJvdmUsIGl0 Ci0JCSAqIHNlZW1zIGJldHRlciB0byBhc3N1bWUgYXMgbGl0dGxlIGFzIHBvc3NpYmxlLikKKwkJ ICogQW5kIGRpZSwgdXNpbmcgX2V4aXQoKSBub3QgZXhpdCgpIGJlY2F1c2UgdGhlIGxhdHRlciB3 aWxsIGludm9rZQorCQkgKiBhdGV4aXQgaGFuZGxlcnMgdGhhdCBjYW4gZmFpbCBpZiB3ZSBpbnRl cnJ1cHRlZCByZWxhdGVkIGNvZGUuCiAJCSAqLwotCQlpZiAocHJvZ25hbWUpCi0JCXsKLQkJCXdy aXRlX3N0ZGVycihwcm9nbmFtZSk7Ci0JCQl3cml0ZV9zdGRlcnIoIjogIik7Ci0JCX0KLQkJd3Jp dGVfc3RkZXJyKCJ0ZXJtaW5hdGVkIGJ5IHVzZXJcbiIpOworCQlfZXhpdCgxKTsKIAl9CiAKLQkv KiBBbHdheXMgcmV0dXJuIEZBTFNFIHRvIGFsbG93IHNpZ25hbCBoYW5kbGluZyB0byBjb250aW51 ZSAqLwotCXJldHVybiBGQUxTRTsKKwlyZXR1cm4gTlVMTDsKIH0KIAorLyoKKyAqIFNpZ25hbCBo YW5kbGVyIChVbml4IG9ubHkpLiAgV2FrZXMgdXAgdGhlIGNhbmNlbCB0aHJlYWQgYnkgd3JpdGlu ZyB0byB0aGUKKyAqIHBpcGUuCisgKi8KK3N0YXRpYyB2b2lkCitzaWdUZXJtSGFuZGxlcihTSUdO QUxfQVJHUykKK3sKKwlpbnQJCQlzYXZlX2Vycm5vID0gZXJybm87CisJY2hhcgkJYyA9IDE7CisK KwkvKiBXYWtlIHVwIHRoZSBjYW5jZWwgdGhyZWFkIC0gd3JpdGUoKSBpcyBhc3luYy1zaWduYWwt c2FmZSAqLworCWlmIChjYW5jZWxfcGlwZVsxXSA+PSAwKQorCQkodm9pZCkgd3JpdGUoY2FuY2Vs X3BpcGVbMV0sICZjLCAxKTsKKworCWVycm5vID0gc2F2ZV9lcnJubzsKK30KKworI2VuZGlmCQkJ CQkJCS8qIFdJTjMyICovCisKIC8qCiAgKiBFbmFibGUgY2FuY2VsIGludGVycnVwdCBoYW5kbGVy LCBpZiBub3QgYWxyZWFkeSBkb25lLgogICovCiBzdGF0aWMgdm9pZAogc2V0X2NhbmNlbF9oYW5k bGVyKHZvaWQpCiB7Ci0JaWYgKCFzaWduYWxfaW5mby5oYW5kbGVyX3NldCkKKwlpZiAoc2lnbmFs X2luZm8uaGFuZGxlcl9zZXQpCisJCXJldHVybjsKKworCXNpZ25hbF9pbmZvLmhhbmRsZXJfc2V0 ID0gdHJ1ZTsKKworCXB0aHJlYWRfbXV0ZXhfaW5pdCgmc2lnbmFsX2luZm9fbG9jaywgTlVMTCk7 CisKKyNpZmRlZiBXSU4zMgorCVNldENvbnNvbGVDdHJsSGFuZGxlcihjb25zb2xlSGFuZGxlciwg VFJVRSk7CisjZWxzZQorCisJLyoKKwkgKiBDcmVhdGUgdGhlIHBpcGUgYW5kIGNhbmNlbCB0aHJl YWQgKHNlZSBjb21tZW50IG9uIGNhbmNlbF9waXBlIGFib3ZlKS4KKwkgKi8KKwlpZiAocGlwZShj YW5jZWxfcGlwZSkgPCAwKQogCXsKLQkJc2lnbmFsX2luZm8uaGFuZGxlcl9zZXQgPSB0cnVlOwor CQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgcGlwZSBmb3IgY2FuY2VsOiAlbSIpOwor CQlleGl0KDEpOworCX0KIAotCQlJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKCZzaWduYWxfaW5m b19sb2NrKTsKKwkvKgorCSAqIE1ha2UgdGhlIHdyaXRlIGVuZCBub24tYmxvY2tpbmcsIHNvIHRo YXQgdGhlIHNpZ25hbCBoYW5kbGVyIHdvbid0IGJsb2NrCisJICogaWYgdGhlIHBpcGUgYnVmZmVy IGlzIGZ1bGwgKHdoaWNoIGlzIHZlcnkgdW5saWtlbHkgaW4gcHJhY3RpY2UgYnV0CisJICogcG9z c2libGUgaW4gdGhlb3J5KS4KKwkgKi8KKwlmY250bChjYW5jZWxfcGlwZVsxXSwgRl9TRVRGTCwg T19OT05CTE9DSyk7CiAKLQkJU2V0Q29uc29sZUN0cmxIYW5kbGVyKGNvbnNvbGVIYW5kbGVyLCBU UlVFKTsKKwl7CisJCWludAkJCXJjID0gcHRocmVhZF9jcmVhdGUoJmNhbmNlbF90aHJlYWQsIE5V TEwsIGNhbmNlbF90aHJlYWRfbWFpbiwgTlVMTCk7CisKKwkJaWYgKHJjICE9IDApCisJCXsKKwkJ CXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSBjYW5jZWwgdGhyZWFkOiAlcyIsIHN0cmVy cm9yKHJjKSk7CisJCQlleGl0KDEpOworCQl9CiAJfQotfQogCi0jZW5kaWYJCQkJCQkJLyogV0lO MzIgKi8KKwlwcXNpZ25hbChTSUdJTlQsIHNpZ1Rlcm1IYW5kbGVyKTsKKwlwcXNpZ25hbChTSUdU RVJNLCBzaWdUZXJtSGFuZGxlcik7CisJcHFzaWduYWwoU0lHUVVJVCwgc2lnVGVybUhhbmRsZXIp OworI2VuZGlmCit9CiAKIAogLyoKICAqIHNldF9hcmNoaXZlX2NhbmNlbF9pbmZvCiAgKgotICog RmlsbCBBSC0+Y29ubkNhbmNlbCB3aXRoIGNhbmNlbGxhdGlvbiBpbmZvIGZvciB0aGUgc3BlY2lm aWVkIGRhdGFiYXNlCisgKiBGaWxsIEFILT5jYW5jZWxDb25uIHdpdGggY2FuY2VsbGF0aW9uIGlu Zm8gZm9yIHRoZSBzcGVjaWZpZWQgZGF0YWJhc2UKICAqIGNvbm5lY3Rpb247IG9yIGNsZWFyIGl0 IGlmIGNvbm4gaXMgTlVMTC4KICAqLwogdm9pZAogc2V0X2FyY2hpdmVfY2FuY2VsX2luZm8oQXJj aGl2ZUhhbmRsZSAqQUgsIFBHY29ubiAqY29ubikKIHsKLQlQR2NhbmNlbCAgICpvbGRDb25uQ2Fu Y2VsOworCVBHY2FuY2VsQ29ubiAqb2xkQ2FuY2VsQ29ubjsKIAogCS8qCi0JICogQWN0aXZhdGUg dGhlIGludGVycnVwdCBoYW5kbGVyIGlmIHdlIGRpZG4ndCB5ZXQgaW4gdGhpcyBwcm9jZXNzLiAg T24KLQkgKiBXaW5kb3dzLCB0aGlzIGFsc28gaW5pdGlhbGl6ZXMgc2lnbmFsX2luZm9fbG9jazsg dGhlcmVmb3JlIGl0J3MKLQkgKiBpbXBvcnRhbnQgdGhhdCB0aGlzIGhhcHBlbiBhdCBsZWFzdCBv bmNlIGJlZm9yZSB3ZSBmb3JrIG9mZiBhbnkKLQkgKiB0aHJlYWRzLgorCSAqIEFjdGl2YXRlIHRo ZSBpbnRlcnJ1cHQgaGFuZGxlciBpZiB3ZSBkaWRuJ3QgeWV0IGluIHRoaXMgcHJvY2Vzcy4gIFRo aXMKKwkgKiBhbHNvIGluaXRpYWxpemVzIHNpZ25hbF9pbmZvX2xvY2s7IHRoZXJlZm9yZSBpdCdz IGltcG9ydGFudCB0aGF0IHRoaXMKKwkgKiBoYXBwZW4gYXQgbGVhc3Qgb25jZSBiZWZvcmUgd2Ug Zm9yayBvZmYgYW55IHRocmVhZHMuCiAJICovCiAJc2V0X2NhbmNlbF9oYW5kbGVyKCk7CiAKIAkv KgotCSAqIE9uIFVuaXgsIHdlIGFzc3VtZSB0aGF0IHN0b3JpbmcgYSBwb2ludGVyIHZhbHVlIGlz IGF0b21pYyB3aXRoIHJlc3BlY3QKLQkgKiB0byBhbnkgcG9zc2libGUgc2lnbmFsIGludGVycnVw dC4gIE9uIFdpbmRvd3MsIHVzZSBhIGNyaXRpY2FsIHNlY3Rpb24uCisJICogVXNlIG11dGV4IHRv IHByZXZlbnQgdGhlIGNhbmNlbCBoYW5kbGVyIGZyb20gdXNpbmcgdGhlIHBvaW50ZXIgd2hpbGUK KwkgKiB3ZSdyZSBjaGFuZ2luZyBpdC4KIAkgKi8KLQotI2lmZGVmIFdJTjMyCi0JRW50ZXJDcml0 aWNhbFNlY3Rpb24oJnNpZ25hbF9pbmZvX2xvY2spOwotI2VuZGlmCisJcHRocmVhZF9tdXRleF9s b2NrKCZzaWduYWxfaW5mb19sb2NrKTsKIAogCS8qIEZyZWUgdGhlIG9sZCBvbmUgaWYgd2UgaGF2 ZSBvbmUgKi8KLQlvbGRDb25uQ2FuY2VsID0gQUgtPmNvbm5DYW5jZWw7CisJb2xkQ2FuY2VsQ29u biA9IEFILT5jYW5jZWxDb25uOwogCS8qIGJlIHN1cmUgaW50ZXJydXB0IGhhbmRsZXIgZG9lc24n dCB1c2UgcG9pbnRlciB3aGlsZSBmcmVlaW5nICovCi0JQUgtPmNvbm5DYW5jZWwgPSBOVUxMOwor CUFILT5jYW5jZWxDb25uID0gTlVMTDsKIAotCWlmIChvbGRDb25uQ2FuY2VsICE9IE5VTEwpCi0J CVBRZnJlZUNhbmNlbChvbGRDb25uQ2FuY2VsKTsKKwlpZiAob2xkQ2FuY2VsQ29ubiAhPSBOVUxM KQorCQlQUWNhbmNlbEZpbmlzaChvbGRDYW5jZWxDb25uKTsKIAogCS8qIFNldCB0aGUgbmV3IG9u ZSBpZiBzcGVjaWZpZWQgKi8KIAlpZiAoY29ubikKLQkJQUgtPmNvbm5DYW5jZWwgPSBQUWdldENh bmNlbChjb25uKTsKKwkJQUgtPmNhbmNlbENvbm4gPSBQUWNhbmNlbENyZWF0ZShjb25uKTsKIAog CS8qCiAJICogT24gVW5peCwgdGhlcmUncyBvbmx5IGV2ZXIgb25lIGFjdGl2ZSBBcmNoaXZlSGFu ZGxlIHBlciBwcm9jZXNzLCBzbyB3ZQpAQCAtNzkwLDQ5ICs3OTcsMzUgQEAgc2V0X2FyY2hpdmVf Y2FuY2VsX2luZm8oQXJjaGl2ZUhhbmRsZSAqQUgsIFBHY29ubiAqY29ubikKIAkJc2lnbmFsX2lu Zm8ubXlBSCA9IEFIOwogI2VuZGlmCiAKLSNpZmRlZiBXSU4zMgotCUxlYXZlQ3JpdGljYWxTZWN0 aW9uKCZzaWduYWxfaW5mb19sb2NrKTsKLSNlbmRpZgorCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZz aWduYWxfaW5mb19sb2NrKTsKIH0KIAogLyoKICAqIHNldF9jYW5jZWxfcHN0YXRlCiAgKgogICog U2V0IHNpZ25hbF9pbmZvLnBzdGF0ZSB0byBwb2ludCB0byB0aGUgc3BlY2lmaWVkIFBhcmFsbGVs U3RhdGUsIGlmIGFueS4KLSAqIFdlIG5lZWQgdGhpcyBtYWlubHkgdG8gaGF2ZSBhbiBpbnRlcmxv Y2sgYWdhaW5zdCBXaW5kb3dzIHNpZ25hbCB0aHJlYWQuCisgKiBXZSBuZWVkIHRoaXMgbWFpbmx5 IHRvIGhhdmUgYW4gaW50ZXJsb2NrIGFnYWluc3QgdGhlIGNhbmNlbCBoYW5kbGVyIHRocmVhZC4K ICAqLwogc3RhdGljIHZvaWQKIHNldF9jYW5jZWxfcHN0YXRlKFBhcmFsbGVsU3RhdGUgKnBzdGF0 ZSkKIHsKLSNpZmRlZiBXSU4zMgotCUVudGVyQ3JpdGljYWxTZWN0aW9uKCZzaWduYWxfaW5mb19s b2NrKTsKLSNlbmRpZgotCisJcHRocmVhZF9tdXRleF9sb2NrKCZzaWduYWxfaW5mb19sb2NrKTsK IAlzaWduYWxfaW5mby5wc3RhdGUgPSBwc3RhdGU7Ci0KLSNpZmRlZiBXSU4zMgotCUxlYXZlQ3Jp dGljYWxTZWN0aW9uKCZzaWduYWxfaW5mb19sb2NrKTsKLSNlbmRpZgorCXB0aHJlYWRfbXV0ZXhf dW5sb2NrKCZzaWduYWxfaW5mb19sb2NrKTsKIH0KIAogLyoKICAqIHNldF9jYW5jZWxfc2xvdF9h cmNoaXZlCiAgKgogICogU2V0IFBhcmFsbGVsU2xvdCdzIEFIIGZpZWxkIHRvIHBvaW50IHRvIHRo ZSBzcGVjaWZpZWQgYXJjaGl2ZSwgaWYgYW55LgotICogV2UgbmVlZCB0aGlzIG1haW5seSB0byBo YXZlIGFuIGludGVybG9jayBhZ2FpbnN0IFdpbmRvd3Mgc2lnbmFsIHRocmVhZC4KKyAqIFdlIG5l ZWQgdGhpcyBtYWlubHkgdG8gaGF2ZSBhbiBpbnRlcmxvY2sgYWdhaW5zdCB0aGUgY2FuY2VsIGhh bmRsZXIgdGhyZWFkLgogICovCiBzdGF0aWMgdm9pZAogc2V0X2NhbmNlbF9zbG90X2FyY2hpdmUo UGFyYWxsZWxTbG90ICpzbG90LCBBcmNoaXZlSGFuZGxlICpBSCkKIHsKLSNpZmRlZiBXSU4zMgot CUVudGVyQ3JpdGljYWxTZWN0aW9uKCZzaWduYWxfaW5mb19sb2NrKTsKLSNlbmRpZgotCisJcHRo cmVhZF9tdXRleF9sb2NrKCZzaWduYWxfaW5mb19sb2NrKTsKIAlzbG90LT5BSCA9IEFIOwotCi0j aWZkZWYgV0lOMzIKLQlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmc2lnbmFsX2luZm9fbG9jayk7Ci0j ZW5kaWYKKwlwdGhyZWFkX211dGV4X3VubG9jaygmc2lnbmFsX2luZm9fbG9jayk7CiB9CiAKIApA QCAtOTQ3LDcgKzk0MCw3IEBAIFBhcmFsbGVsQmFja3VwU3RhcnQoQXJjaGl2ZUhhbmRsZSAqQUgp CiAKIAkvKgogCSAqIFRlbXBvcmFyaWx5IGRpc2FibGUgcXVlcnkgY2FuY2VsbGF0aW9uIG9uIHRo ZSBsZWFkZXIgY29ubmVjdGlvbi4gIFRoaXMKLQkgKiBlbnN1cmVzIHRoYXQgY2hpbGQgcHJvY2Vz c2VzIHdvbid0IGluaGVyaXQgdmFsaWQgQUgtPmNvbm5DYW5jZWwKKwkgKiBlbnN1cmVzIHRoYXQg Y2hpbGQgcHJvY2Vzc2VzIHdvbid0IGluaGVyaXQgdmFsaWQgQUgtPmNhbmNlbENvbm4KIAkgKiBz ZXR0aW5ncyBhbmQgdGh1cyB3b24ndCB0cnkgdG8gaXNzdWUgY2FuY2VscyBhZ2FpbnN0IHRoZSBs ZWFkZXIncwogCSAqIGNvbm5lY3Rpb24uICBObyBoYXJtIGlzIGRvbmUgaWYgd2UgZmFpbCB3aGls ZSBpdCdzIGRpc2FibGVkLCBiZWNhdXNlCiAJICogdGhlIGxlYWRlciBjb25uZWN0aW9uIGlzIGlk bGUgYXQgdGhpcyBwb2ludCBhbnl3YXkuCkBAIC0xMDA1LDYgKzk5OCwxNyBAQCBQYXJhbGxlbEJh Y2t1cFN0YXJ0KEFyY2hpdmVIYW5kbGUgKkFIKQogCQkJLyogaW5zdHJ1Y3Qgc2lnbmFsIGhhbmRs ZXIgdGhhdCB3ZSdyZSBpbiBhIHdvcmtlciBub3cgKi8KIAkJCXNpZ25hbF9pbmZvLmFtX3dvcmtl ciA9IHRydWU7CiAKKwkJCS8qCisJCQkgKiBSZXNldCBjYW5jZWwgaGFuZGxlciBzdGF0ZSBzbyB0 aGF0IHRoZSB3b3JrZXIgd2lsbCBzZXQgdXAgaXRzCisJCQkgKiBvd24gY2FuY2VsIHRocmVhZCB3 aGVuIGl0IGNhbGxzIHNldF9hcmNoaXZlX2NhbmNlbF9pbmZvKCkuCisJCQkgKiBUaHJlYWRzIGRv bid0IHN1cnZpdmUgZm9yaygpLCBzbyB3ZSBjYW4ndCB1c2UgdGhlIGxlYWRlcidzLgorCQkJICog QWxzbyBjbG9zZSB0aGUgaW5oZXJpdGVkIHBpcGUgZmRzLgorCQkJICovCisJCQlzaWduYWxfaW5m by5oYW5kbGVyX3NldCA9IGZhbHNlOworCQkJY2xvc2UoY2FuY2VsX3BpcGVbMF0pOworCQkJY2xv c2UoY2FuY2VsX3BpcGVbMV0pOworCQkJY2FuY2VsX3BpcGVbMF0gPSBjYW5jZWxfcGlwZVsxXSA9 IC0xOworCiAJCQkvKiBjbG9zZSByZWFkIGVuZCBvZiBXb3JrZXIgLT4gTGVhZGVyICovCiAJCQlj bG9zZXNvY2tldChwaXBlV01bUElQRV9SRUFEXSk7CiAJCQkvKiBjbG9zZSB3cml0ZSBlbmQgb2Yg TGVhZGVyIC0+IFdvcmtlciAqLwpAQCAtMTQyMSw4ICsxNDI1LDE4IEBAIExpc3RlblRvV29ya2Vy cyhBcmNoaXZlSGFuZGxlICpBSCwgUGFyYWxsZWxTdGF0ZSAqcHN0YXRlLCBib29sIGRvX3dhaXQp CiAKIAlpZiAoIW1zZykKIAl7Ci0JCS8qIElmIGRvX3dhaXQgaXMgdHJ1ZSwgd2UgbXVzdCBoYXZl IGRldGVjdGVkIEVPRiBvbiBzb21lIHNvY2tldCAqLwotCQlpZiAoZG9fd2FpdCkKKwkJLyoKKwkJ ICogSWYgZG9fd2FpdCBpcyB0cnVlLCB3ZSBtdXN0IGhhdmUgZGV0ZWN0ZWQgRU9GIG9uIHNvbWUg c29ja2V0LiBJZgorCQkgKiBpdCdzIGR1ZSB0byBhIGNhbmNlbCByZXF1ZXN0LCB0aGF0J3MgZXhw ZWN0ZWQsIG90aGVyd2lzZSBpdCdzIGEKKwkJICogcHJvYmxlbS4KKwkJICovCisJCWJvb2wJCWNh bmNlbF9yZXF1ZXN0ZWQ7CisKKwkJcHRocmVhZF9tdXRleF9sb2NrKCZzaWduYWxfaW5mb19sb2Nr KTsKKwkJY2FuY2VsX3JlcXVlc3RlZCA9IHNpZ25hbF9pbmZvLmNhbmNlbF9yZXF1ZXN0ZWQ7CisJ CXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZzaWduYWxfaW5mb19sb2NrKTsKKworCQlpZiAoZG9fd2Fp dCAmJiAhY2FuY2VsX3JlcXVlc3RlZCkKIAkJCXBnX2ZhdGFsKCJhIHdvcmtlciBwcm9jZXNzIGRp ZWQgdW5leHBlY3RlZGx5Iik7CiAJCXJldHVybiBmYWxzZTsKIAl9CmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFj a3VwX2FyY2hpdmVyLmMKaW5kZXggZGY4YTY5ZDNiNzkuLmFlMDM3ZTcwZDU1IDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCkBAIC01MjA4LDcgKzUyMDgsNyBAQCBDbG9uZUFyY2hp dmUoQXJjaGl2ZUhhbmRsZSAqQUgpCiAKIAkvKiBUaGUgY2xvbmUgd2lsbCBoYXZlIGl0cyBvd24g Y29ubmVjdGlvbiwgc28gZGlzcmVnYXJkIGNvbm5lY3Rpb24gc3RhdGUgKi8KIAljbG9uZS0+Y29u bmVjdGlvbiA9IE5VTEw7Ci0JY2xvbmUtPmNvbm5DYW5jZWwgPSBOVUxMOworCWNsb25lLT5jYW5j ZWxDb25uID0gTlVMTDsKIAljbG9uZS0+Y3VyclVzZXIgPSBOVUxMOwogCWNsb25lLT5jdXJyU2No ZW1hID0gTlVMTDsKIAljbG9uZS0+Y3VyclRhYmxlQW0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2Jh Y2t1cF9hcmNoaXZlci5oCmluZGV4IDM2NTA3M2IzZWFlLi41NGU0MDk5YmU1MyAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oCisrKyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaApAQCAtMjg4LDggKzI4OCwxMiBAQCBzdHJ1Y3QgX2Fy Y2hpdmVIYW5kbGUKIAljaGFyCSAgICpzYXZlZFBhc3N3b3JkOwkvKiBwYXNzd29yZCBmb3Igcm9w dC0+dXNlcm5hbWUsIGlmIGtub3duICovCiAJY2hhcgkgICAqdXNlX3JvbGU7CiAJUEdjb25uCSAg ICpjb25uZWN0aW9uOwotCS8qIElmIGNvbm5DYW5jZWwgaXNuJ3QgTlVMTCwgU0lHSU5UIGhhbmRs ZXIgd2lsbCBzZW5kIGEgY2FuY2VsICovCi0JUEdjYW5jZWwgICAqdm9sYXRpbGUgY29ubkNhbmNl bDsKKworCS8qCisJICogSWYgY2FuY2VsQ29ubiBpc24ndCBOVUxMLCBTSUdJTlQgaGFuZGxlciB3 aWxsIHRyaWdnZXIgdGhlIGNhbmNlbCB0aHJlYWQKKwkgKiB0byBzZW5kIGEgY2FuY2VsLgorCSAq LworCVBHY2FuY2VsQ29ubiAqY2FuY2VsQ29ubjsKIAogCWludAkJCWNvbm5lY3RUb0RCOwkvKiBG bGFnIHRvIGluZGljYXRlIGlmIGRpcmVjdCBEQiBjb25uZWN0aW9uIGlzCiAJCQkJCQkJCSAqIHJl cXVpcmVkICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2RiLmMgYi9z cmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2RiLmMKaW5kZXggNWMzNDkyNzliZWIuLjBjYzI5YThh YTcwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2RiLmMKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kYi5jCkBAIC04NCw3ICs4NCw3IEBAIFJlY29ubmVjdFRv U2VydmVyKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpkYm5hbWUpCiAKIAkvKgogCSAq IE5vdGU6IHdlIHdhbnQgdG8gZXN0YWJsaXNoIHRoZSBuZXcgY29ubmVjdGlvbiwgYW5kIGluIHBh cnRpY3VsYXIgdXBkYXRlCi0JICogQXJjaGl2ZUhhbmRsZSdzIGNvbm5DYW5jZWwsIGJlZm9yZSBj bG9zaW5nIG9sZCBjb25uZWN0aW9uLiAgT3RoZXJ3aXNlCisJICogQXJjaGl2ZUhhbmRsZSdzIGNh bmNlbENvbm4sIGJlZm9yZSBjbG9zaW5nIG9sZCBjb25uZWN0aW9uLiAgT3RoZXJ3aXNlCiAJICog YW4gaWxsLXRpbWVkIFNJR0lOVCBjb3VsZCB0cnkgdG8gYWNjZXNzIGEgZGVhZCBjb25uZWN0aW9u LgogCSAqLwogCUFILT5jb25uZWN0aW9uID0gTlVMTDsJCS8qIGRvZGdlIGVycm9yIGNoZWNrIGlu IENvbm5lY3REYXRhYmFzZUFoeCAqLwpAQCAtMTY0LDEyICsxNjQsMTEgQEAgdm9pZAogRGlzY29u bmVjdERhdGFiYXNlKEFyY2hpdmUgKkFIWCkKIHsKIAlBcmNoaXZlSGFuZGxlICpBSCA9IChBcmNo aXZlSGFuZGxlICopIEFIWDsKLQljaGFyCQllcnJidWZbMV07CiAKIAlpZiAoIUFILT5jb25uZWN0 aW9uKQogCQlyZXR1cm47CiAKLQlpZiAoQUgtPmNvbm5DYW5jZWwpCisJaWYgKEFILT5jYW5jZWxD b25uKQogCXsKIAkJLyoKIAkJICogSWYgd2UgaGF2ZSBhbiBhY3RpdmUgcXVlcnksIHNlbmQgYSBj YW5jZWwgYmVmb3JlIGNsb3NpbmcsIGlnbm9yaW5nCkBAIC0xNzcsNyArMTc2LDcgQEAgRGlzY29u bmVjdERhdGFiYXNlKEFyY2hpdmUgKkFIWCkKIAkJICogaGVscGZ1bCBkdXJpbmcgcGdfZmF0YWwo KS4KIAkJICovCiAJCWlmIChQUXRyYW5zYWN0aW9uU3RhdHVzKEFILT5jb25uZWN0aW9uKSA9PSBQ UVRSQU5TX0FDVElWRSkKLQkJCSh2b2lkKSBQUWNhbmNlbChBSC0+Y29ubkNhbmNlbCwgZXJyYnVm LCBzaXplb2YoZXJyYnVmKSk7CisJCQkodm9pZCkgUFFjYW5jZWxCbG9ja2luZyhBSC0+Y2FuY2Vs Q29ubik7CiAKIAkJLyoKIAkJICogUHJldmVudCBzaWduYWwgaGFuZGxlciBmcm9tIHNlbmRpbmcg YSBjYW5jZWwgYWZ0ZXIgdGhpcy4KLS0gCjIuNTMuMAoK --d9d7b9a076c0bfd4fb96e32b2c58c74be5f2a3fad308416dcd5a3e47825b Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0004-fixup-Don-t-use-deprecated-and-insecure-PQcancel-.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0004-fixup-Don-t-use-deprecated-and-insecure-PQcancel-.patch RnJvbSAzMDAwYWQ4ZTFhZmNjYTA1NDc5ZWQyZDU5MDMyMTRiOTZkYzE3MjI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTYXQsIDcgTWFyIDIwMjYgMDA6MDA6MzggKzAxMDAKU3ViamVjdDogW1BBVENIIHY1 IDQvNV0gZml4dXAhIERvbid0IHVzZSBkZXByZWNhdGVkIGFuZCBpbnNlY3VyZSBQUWNhbmNlbCBw c3FsCiBhbmQgb3RoZXIgdG9vbHMgYW55bW9yZQoKS2VlcCB0cmFjayBvZiBnZW5lcmF0aW9uIHRo YXQgc2hvdWxkIGJlIGNhbmNlbGxlZC4KLS0tCiBzcmMvZmVfdXRpbHMvY2FuY2VsLmMgfCA0NiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMzcgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvZmVf dXRpbHMvY2FuY2VsLmMgYi9zcmMvZmVfdXRpbHMvY2FuY2VsLmMKaW5kZXggNWQ2NDVjNTU0YWIu LmNhYWYzZTdjNjc1IDEwMDY0NAotLS0gYS9zcmMvZmVfdXRpbHMvY2FuY2VsLmMKKysrIGIvc3Jj L2ZlX3V0aWxzL2NhbmNlbC5jCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXNf ZmUuaCIKIAogI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN0ZGF0b21pYy5oPgogI2lu Y2x1ZGUgPHVuaXN0ZC5oPgogCiAjaWZuZGVmIFdJTjMyCkBAIC04NSw5ICs4NiwyMiBAQCBzdGF0 aWMgUEdjYW5jZWxDb25uICpjYW5jZWxDb25uID0gTlVMTDsKIAogLyoKICAqIEdlbmVyYXRpb24g Y291bnRlciBmb3IgY2FuY2VsQ29ubi4gSW5jcmVtZW50ZWQgZWFjaCB0aW1lIGNhbmNlbENvbm4g aXMKLSAqIGNoYW5nZWQuIFVzZWQgdG8gZGV0ZWN0IGlmIGNhbmNlbENvbm4gd2FzIHJlcGxhY2Vk IHdoaWxlIHdlIHdlcmUgdXNpbmcgaXQuCisgKiBjaGFuZ2VkICh1bmRlciBjYW5jZWxDb25uTG9j aykuIFJlYWQgYnkgdGhlIHNpZ25hbCBoYW5kbGVyICh3aGljaCBjYW4gcnVuCisgKiBvbiBhbnkg dGhyZWFkKSBhbmQgYnkgdGhlIGNhbmNlbCB0aHJlYWQsIHNvIGl0IG5lZWRzIHRvIGJlIGF0b21p Yy4KICAqLwotc3RhdGljIHVpbnQ2NCBjYW5jZWxDb25uR2VuZXJhdGlvbiA9IDA7CitzdGF0aWMg X0F0b21pYyBzaWdfYXRvbWljX3QgY2FuY2VsQ29ubkdlbmVyYXRpb24gPSAwOworCisvKgorICog VGhlIGdlbmVyYXRpb24gdGhhdCB3YXMgY3VycmVudCB3aGVuIFNJR0lOVCB3YXMgcmVjZWl2ZWQu ICBUaGUgY2FuY2VsCisgKiB0aHJlYWQgY29tcGFyZXMgdGhpcyBhZ2FpbnN0IGNhbmNlbENvbm5H ZW5lcmF0aW9uIGJlZm9yZSBzZW5kaW5nIGEgY2FuY2VsCisgKiByZXF1ZXN0LCBzbyB0aGF0IGEg c3RhbGUgc2lnbmFsIChmcm9tIGEgcXVlcnkgdGhhdCBhbHJlYWR5IGZpbmlzaGVkKSBkb2VzCisg KiBub3QgY2FuY2VsIGEgc3Vic2VxdWVudCBxdWVyeS4KKyAqCisgKiBXcml0dGVuIGJ5IHRoZSBz aWduYWwgaGFuZGxlciAob3IgV2luZG93cyBjb25zb2xlIGhhbmRsZXIpIGFuZCByZWFkIGJ5Cisg KiB0aGUgY2FuY2VsIHRocmVhZCwgc28gaXQgbXVzdCBiZSBhbiBhdG9taWMgdHlwZSBmb3IgY3Jv c3MtdGhyZWFkIHNhZmV0eS4KKyAqIHNpZ19hdG9taWNfdCBpcyBndWFyYW50ZWVkIGxvY2stZnJl ZSBhbmQgdGh1cyBzYWZlIGluIHNpZ25hbCBoYW5kbGVycy4KKyAqLworc3RhdGljIF9BdG9taWMg c2lnX2F0b21pY190IGNhbmNlbENvbm5HZW5lcmF0aW9uRHVyaW5nU2lnbmFsID0gMDsKIAogLyoK ICAqIE11dGV4IHByb3RlY3RpbmcgY2FuY2VsQ29ubiBhbmQgY2FuY2VsQ29ubkdlbmVyYXRpb24u CkBAIC0xNTEsMjIgKzE2NSwyOSBAQCBzdGF0aWMgdm9pZAogU2VuZENhbmNlbFJlcXVlc3Qodm9p ZCkKIHsKIAlQR2NhbmNlbENvbm4gKmNjOwotCXVpbnQ2NAkJZ2VuZXJhdGlvbjsKKwlzaWdfYXRv bWljX3QgZ2VuZXJhdGlvbjsKIAlib29sCQlwdXRDb25uZWN0aW9uQmFjayA9IGZhbHNlOwogCiAJ LyoKIAkgKiBCb3Jyb3cgdGhlIGNhbmNlbCBjb25uZWN0aW9uIGZyb20gdGhlIGdsb2JhbCwgc2V0 dGluZyBpdCB0byBOVUxMIHNvCiAJICogdGhhdCBTZXRDYW5jZWxDb25uL1Jlc2V0Q2FuY2VsQ29u biB3b24ndCBmcmVlIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgorCSAqCisJICogQWxzbyBjaGVj ayB0aGF0IHRoZSBnZW5lcmF0aW9uIG1hdGNoZXMgd2hhdCB0aGUgc2lnbmFsIGhhbmRsZXIKKwkg KiBjYXB0dXJlZC4gSWYgaXQgZG9lc24ndCwgdGhlIG1haW4gdGhyZWFkIGFscmVhZHkgbW92ZWQg b24gdG8gYQorCSAqIGRpZmZlcmVudCBxdWVyeSAob3Igbm8gcXVlcnkgYXQgYWxsKSwgc28gc2Vu ZGluZyBhIGNhbmNlbCB3b3VsZCBiZQorCSAqIHdyb25nLgogCSAqLwogCXB0aHJlYWRfbXV0ZXhf bG9jaygmY2FuY2VsQ29ubkxvY2spOwogCWNjID0gY2FuY2VsQ29ubjsKLQlnZW5lcmF0aW9uID0g Y2FuY2VsQ29ubkdlbmVyYXRpb247CisJZ2VuZXJhdGlvbiA9IGF0b21pY19sb2FkKCZjYW5jZWxD b25uR2VuZXJhdGlvbik7CisJaWYgKGNjID09IE5VTEwgfHwgZ2VuZXJhdGlvbiAhPSBhdG9taWNf bG9hZCgmY2FuY2VsQ29ubkdlbmVyYXRpb25EdXJpbmdTaWduYWwpKQorCXsKKwkJcHRocmVhZF9t dXRleF91bmxvY2soJmNhbmNlbENvbm5Mb2NrKTsKKwkJcmV0dXJuOworCX0KIAljYW5jZWxDb25u ID0gTlVMTDsKIAlwdGhyZWFkX211dGV4X3VubG9jaygmY2FuY2VsQ29ubkxvY2spOwogCi0JaWYg KGNjID09IE5VTEwpCi0JCXJldHVybjsKLQogCXdyaXRlX3N0ZGVycihjYW5jZWxfc2VudF9tc2cp OwogCiAJaWYgKCFQUWNhbmNlbEJsb2NraW5nKGNjKSkKQEAgLTE4NSw3ICsyMDYsNyBAQCBTZW5k Q2FuY2VsUmVxdWVzdCh2b2lkKQogCSAqIHVzaW5nIGl0LgogCSAqLwogCXB0aHJlYWRfbXV0ZXhf bG9jaygmY2FuY2VsQ29ubkxvY2spOwotCWlmIChjYW5jZWxDb25uR2VuZXJhdGlvbiA9PSBnZW5l cmF0aW9uKQorCWlmIChhdG9taWNfbG9hZCgmY2FuY2VsQ29ubkdlbmVyYXRpb24pID09IGdlbmVy YXRpb24pCiAJewogCQkvKiBHZW5lcmF0aW9uIHVuY2hhbmdlZCwgcHV0IGl0IGJhY2sgZm9yIHJl dXNlICovCiAJCWNhbmNlbENvbm4gPSBjYzsKQEAgLTIxMCw3ICsyMzEsNyBAQCBTZXRDYW5jZWxD b25uSW50ZXJuYWwoUEdjYW5jZWxDb25uICpuZXdDYW5jZWxDb25uKQogCXB0aHJlYWRfbXV0ZXhf bG9jaygmY2FuY2VsQ29ubkxvY2spOwogCW9sZENhbmNlbENvbm4gPSBjYW5jZWxDb25uOwogCWNh bmNlbENvbm4gPSBuZXdDYW5jZWxDb25uOwotCWNhbmNlbENvbm5HZW5lcmF0aW9uKys7CisJYXRv bWljX2ZldGNoX2FkZCgmY2FuY2VsQ29ubkdlbmVyYXRpb24sIDEpOwogCXB0aHJlYWRfbXV0ZXhf dW5sb2NrKCZjYW5jZWxDb25uTG9jayk7CiAKIAlpZiAob2xkQ2FuY2VsQ29ubiAhPSBOVUxMKQpA QCAtMjU2LDYgKzI3Nyw3IEBAIGNvbnNvbGVIYW5kbGVyKERXT1JEIGR3Q3RybFR5cGUpCiAJCWR3 Q3RybFR5cGUgPT0gQ1RSTF9CUkVBS19FVkVOVCkKIAl7CiAJCUNhbmNlbFJlcXVlc3RlZCA9IHRy dWU7CisJCWF0b21pY19zdG9yZSgmY2FuY2VsQ29ubkdlbmVyYXRpb25EdXJpbmdTaWduYWwsIGF0 b21pY19sb2FkKCZjYW5jZWxDb25uR2VuZXJhdGlvbikpOwogCiAJCWlmIChjYW5jZWxfY2FsbGJh Y2sgIT0gTlVMTCkKIAkJCWNhbmNlbF9jYWxsYmFjaygpOwpAQCAtMzExLDYgKzMzMywxMiBAQCBo YW5kbGVfc2lnaW50KFNJR05BTF9BUkdTKQogCiAJQ2FuY2VsUmVxdWVzdGVkID0gdHJ1ZTsKIAor CS8qCisJICogQ2FwdHVyZSB0aGUgY3VycmVudCBnZW5lcmF0aW9uIHNvIHRoZSBjYW5jZWwgdGhy ZWFkIGNhbiB2ZXJpZnkgaXQncworCSAqIHN0aWxsIHNlbmRpbmcgdGhlIGNhbmNlbCBmb3IgdGhl IHJpZ2h0IHF1ZXJ5LgorCSAqLworCWF0b21pY19zdG9yZSgmY2FuY2VsQ29ubkdlbmVyYXRpb25E dXJpbmdTaWduYWwsIGF0b21pY19sb2FkKCZjYW5jZWxDb25uR2VuZXJhdGlvbikpOworCiAJaWYg KGNhbmNlbF9jYWxsYmFjayAhPSBOVUxMKQogCQljYW5jZWxfY2FsbGJhY2soKTsKIAotLSAKMi41 My4wCgo= --d9d7b9a076c0bfd4fb96e32b2c58c74be5f2a3fad308416dcd5a3e47825b Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0005-fixup-Don-t-use-deprecated-and-insecure-PQcancel-.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0005-fixup-Don-t-use-deprecated-and-insecure-PQcancel-.patch RnJvbSBhMjkwZTE2MzViOGIwYTVkNGM2MGIwYmRjMjgwNjg0YjBiMzk0Y2Q2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTYXQsIDcgTWFyIDIwMjYgMDA6MDU6MDUgKzAxMDAKU3ViamVjdDogW1BBVENIIHY1 IDUvNV0gZml4dXAhIERvbid0IHVzZSBkZXByZWNhdGVkIGFuZCBpbnNlY3VyZSBQUWNhbmNlbCBw c3FsCiBhbmQgb3RoZXIgdG9vbHMgYW55bW9yZQoKRHJhaW4gdGhlIHBpcGUgaW4gdGhlIGNhbmNl bCB0aHJlYWQuCi0tLQogc3JjL2ZlX3V0aWxzL2NhbmNlbC5jIHwgMTAgKysrKysrKysrLQogMSBm aWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L3NyYy9mZV91dGlscy9jYW5jZWwuYyBiL3NyYy9mZV91dGlscy9jYW5jZWwuYwppbmRleCBjYWFm M2U3YzY3NS4uYTU2MDdiMjA0Y2MgMTAwNjQ0Ci0tLSBhL3NyYy9mZV91dGlscy9jYW5jZWwuYwor KysgYi9zcmMvZmVfdXRpbHMvY2FuY2VsLmMKQEAgLTMwNSw3ICszMDUsNyBAQCBjYW5jZWxfdGhy ZWFkX21haW4odm9pZCAqYXJnKQogCQljaGFyCQlidWZbMTZdOwogCQlzc2l6ZV90CQlyYzsKIAot CQkvKiBXYWl0IGZvciBzaWduYWwgaGFuZGxlciB0byB3YWtlIHVzIHVwICovCisJCS8qIFdhaXQg Zm9yIHNpZ25hbCBoYW5kbGVyIHRvIHdha2UgdXMgdXAgKGJsb2NraW5nIHJlYWQpICovCiAJCXJj ID0gcmVhZChjYW5jZWxfcGlwZVswXSwgYnVmLCBzaXplb2YoYnVmKSk7CiAJCWlmIChyYyA8PSAw KQogCQl7CkBAIC0zMTUsNiArMzE1LDE0IEBAIGNhbmNlbF90aHJlYWRfbWFpbih2b2lkICphcmcp CiAJCQlicmVhazsKIAkJfQogCisJCS8qIERyYWluIHRoZSBwaXBlIHNvIG11bHRpcGxlIFNJR0lO VHMgZG9uJ3QgcXVldWUgdXAgZXh0cmEgd2FrZXVwcyAqLworCQlmY250bChjYW5jZWxfcGlwZVsw XSwgRl9TRVRGTCwgT19OT05CTE9DSyk7CisJCXdoaWxlIChyZWFkKGNhbmNlbF9waXBlWzBdLCBi dWYsIHNpemVvZihidWYpKSA+IDApCisJCXsKKwkJCS8qIGxvb3AgdW50aWwgcGlwZSBpcyBkcmFp bmVkICovCisJCX0KKwkJZmNudGwoY2FuY2VsX3BpcGVbMF0sIEZfU0VURkwsIDApOworCiAJCVNl bmRDYW5jZWxSZXF1ZXN0KCk7CiAJfQogCi0tIAoyLjUzLjAKCg== --d9d7b9a076c0bfd4fb96e32b2c58c74be5f2a3fad308416dcd5a3e47825b--