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 1vxXuy-00GuTH-23 for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Mar 2026 22:08:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vxXuw-00924a-0s for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Mar 2026 22:08:38 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vxXuv-00924R-1G for pgsql-hackers@lists.postgresql.org; Tue, 03 Mar 2026 22:08:38 +0000 Received: from mail-qk1-x72c.google.com ([2607:f8b0:4864:20::72c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vxXus-00000000Gus-1m3l for pgsql-hackers@postgresql.org; Tue, 03 Mar 2026 22:08:36 +0000 Received: by mail-qk1-x72c.google.com with SMTP id af79cd13be357-8c710439535so399871285a.1 for ; Tue, 03 Mar 2026 14:08:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772575713; cv=none; d=google.com; s=arc-20240605; b=FFEh0NK6EIXYQWG9B41iPntG+KT5NKvI7Ih/njljmy7gQgOKHOFxC0gEoK+wEYinuL 3lhpFV2EIrOKO1Z46t4dHyFiACv1BOwjnpO27458OGlMK9MMDryP5U8ews3Vb5j7ihNB fVXbrjV/FNFpgomEYDWKcIiXMlovA4pViwKCJRuifeDWr1sYuDRjXxCRhawY4DQpHiiG 4RfZvO1g3Dh9cPTB1FmDrNYIggPGkoDW/jo1+eCD56GeGx0mAamknc3/CYZkiUF6rkwC kxRExJTbKQf1qTg/gfTJ5x3kTDCXpFv45uUGfOp1AfougMMr2x9svmQR7ssqoBZ8zZxl DU3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=YLJ0bttzzUzBFT+guvMXX+094t/bXuvr37wvAdewqc0=; fh=pfkmzW6GKlJ0l1fsmHrQ2YGNtR4HiNVrGovoMNulRlY=; b=BNCAEoI5cSFOl+cG71evRF00kr3nUzlfA1H/8GNFQ/HyBOYnn+Y/SHfZ2vEHb/G87q 8JjnmCr/SdK0sygB2phbzobjO+RfbYHVHMDnUtvl7OVS6bo+Nil/Y9lbzlVC+j/nJpYt cxNhvuVIcZjfX5vKOuV5XQC9kJyjk7xjZf2BoLunKimlMS+CeSXaKtx3rcSKnZcL2p6E 5dqpato2fDTdYjiYGsQETAE1Y/dl9wvAF39CK/JMIeJ4rXpSBNEIyklbFiQjCsg0g/Pf ds8PjOwelXutQGJMv3J+54u/OVru4+Q0HTQsiCv1wU6yFGpf/2H2o6kvaUWBznL9PMwZ WCIA==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1772575713; x=1773180513; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=YLJ0bttzzUzBFT+guvMXX+094t/bXuvr37wvAdewqc0=; b=STG5+2uJYK36DO/ogFjrgjhBLmCdjo/HzqOnH911BgadwKuMLDpLNAoeNrfmYaCOr2 N8+57SDYGheiliV/PZb3HSqFIGIG7dqv9J0P6E+xb7I435Y+orNKpbszASQch4kjQUW8 AT3Eqeitcs0Yhnmk51sgfN2jVo3tNESqqHEkt0FMLEBM/u5B5l31t4kcZXKbBWC4WBQD Yq1Azd7hpotf4bRpOq0cqxwo+rotxeeTnjYad83db+LdmpEdDmnMLM+3vv3+76JJKPcQ 1iya86TSouVUfnVzBjvEszp5WVT7R2v49bhi5CB0d5Eb7wNMW42Yu68oCoKnXdDDzchZ eEfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772575713; x=1773180513; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=YLJ0bttzzUzBFT+guvMXX+094t/bXuvr37wvAdewqc0=; b=nF2xeb2mEcyGihIILG7T17s+GiYyj9fdRnjANkJUkJa1uuPCQPDROFv3X7W/qWngdG jimP0QviUzVWE5YoJ+PqeSgt9XlrEZlfJp9AvqSBJ3LZJ7Itydq+RfUW2nTWIdOMco7l xAHgHNPF3Wmhp5jAx+E33WUDBZcAbC/xGUZdBELNTU9ucpnC1+6LQiL1xZonPyNjbnXM Ox+tI8bXZ5i9mNi0j+/JTWwwy/vI+I2Qr6oHKOn4X8BblYznukl2r1SU6Jh7l4P4LUvE IV+Y1xvfMixIRvliJkDP5CdcJi/wPoNDhu66bBebOSnO2ltkBaaXuoxuXa5zOWBf+Ln0 m/Wg== X-Gm-Message-State: AOJu0Yzanf2Z/ZlRIBc0UH30qgrjYCrjMmaRkyc7cw+5CCzc+UZtjZNu 0wpH0Zl71ArTfsbcrgmo9VZAv8dfa2FAONOcuLIPQUcCQwtvRCtIij+Z7tWBM/yNKeooWnNK7Ju gvDS05XbEZcAkvG4E1XZb0LKYoMUZI/DU8xwk/j8i X-Gm-Gg: ATEYQzwdMEMD5Coqqwq7eX5gI1l7dUaXGJCfv7eeeAizv+jnUqrcEcFQ8yV6AFP73Od ZQjUZHZRgxtKHRGzT9ZCrJ2m5QeObwVP23ZRiXhdeiRO04rZ0SdgAepwcfF6uX6P4DPQ5WItF1r DN/p51Ddsrd5Ey0AOY0CjK3ohsZ1Sk74roG1KlB0n/FqvJIzNFKjuooa/DCG++1K3LJdfY/KqAI d+ZRspPNXhDB7iR7IM/6u8PAGdXnvmcTenmiuSlx1p98tPQejrmAJffh5WC5iHd1iAlbu/i6fdc PqqcPLAQHQ== X-Received: by 2002:a05:620a:bc1:b0:8cb:4fa5:d460 with SMTP id af79cd13be357-8cbc8f5a0c9mr2170473985a.74.1772575713244; Tue, 03 Mar 2026 14:08:33 -0800 (PST) MIME-Version: 1.0 References: <3720B2E1-0B96-4063-8D63-B5AE6AFEA159@gmail.com> In-Reply-To: From: Jacob Champion Date: Tue, 3 Mar 2026 14:08:21 -0800 X-Gm-Features: AaiRm52iTSjejfzLa0EgmbBJB8dOwCOh55AdA0taEJqWIQ6HDE8NhZ1qq0-c-Hg Message-ID: Subject: Re: [oauth] Stabilize the libpq-oauth ABI (and allow alternative implementations?) To: Zsolt Parragi Cc: PostgreSQL Hackers , Chao Li Content-Type: multipart/mixed; boundary="000000000000bab6b3064c25f1fe" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000bab6b3064c25f1fe Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Feb 27, 2026 at 11:42=E2=80=AFAM Jacob Champion wrote: > 0001 should be ready to go. I meant to put 0002 up in its own thread > at the beginning of the week but got sidetracked, so I'll go do that > now. Done at [1]. v5 incorporates that version of the patch in -0002 and makes some minor test updates for better coverage in -0003. > 0003 has to wait on Valgrind, and 0004-5 have to wait on 0002. v5-0006 is my experiment in Valgrind (and also AddressSanitizer, and also generic pointer poisoning). I think it's interesting, and it seems clean enough for some subset to be committable for 19. The weak-symbol support for ASan is the most suspect; I have no idea if it links correctly across all platforms. It's probably better for me to propose generic ASan support in utils/memdebug.h at some point in the future, and drop it from this patch. I don't plan to block the other patches on -0006, since -0004 is blocking PGOAUTHCAFILE. --Jacob [1] https://postgr.es/m/CAOYmi%2B%3DMHD%2BWKD4rsTn0v8220mYfyLGhEc5EfhmtqrAb= 7SmC5g%40mail.gmail.com --000000000000bab6b3064c25f1fe Content-Type: text/plain; charset="US-ASCII"; name="since-v4.diff.txt" Content-Disposition: attachment; filename="since-v4.diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmb5r23y0 MTogIGNhZWM5Mzc5MDU1ID0gMTogIGNhZWM5Mzc5MDU1IG9hdXRoOiBSZXBvcnQgY2xlYW51cCBl cnJvcnMgYXMgd2FybmluZ3Mgb24gc3RkZXJyCjI6ICA2YTJlZGE0NjkyNyAhIDI6ICA3MjI4YWYx MTRjYSBsaWJwcTogQWRkIFBRZ2V0VGhyZWFkTG9jaygpIHRvIG1pcnJvciBQUXJlZ2lzdGVyVGhy ZWFkTG9jaygpCiAgICBAQCBDb21taXQgbWVzc2FnZQogICAgICAgICBSZXZpZXdlZC1ieTogWnNv bHQgUGFycmFnaSA8enNvbHQucGFycmFnaUBwZXJjb25hLmNvbT4KICAgICAgICAgRGlzY3Vzc2lv bjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQU9ZbWklMkJtRVVfcTlzcjFQTW1FLTRyTHdGTiUzRE9q eW5kRHdGWnZwc01VM1JOSkxyTTlnJTQwbWFpbC5nbWFpbC5jb20KICAgICAKICAgICsgIyMgZG9j L3NyYy9zZ21sL2xpYnBxLnNnbWwgIyMKICAgICtAQCBkb2Mvc3JjL3NnbWwvbGlicHEuc2dtbDog aW50IFBRaXN0aHJlYWRzYWZlKCk7CiAgICArICAgIEtlcmJlcm9zIGNhbGxzIGJlY2F1c2UgS2Vy YmVyb3MgZnVuY3Rpb25zIGFyZSBub3QgdGhyZWFkLXNhZmUuICBTZWUKICAgICsgICAgZnVuY3Rp b24gPGZ1bmN0aW9uPlBRcmVnaXN0ZXJUaHJlYWRMb2NrPC9mdW5jdGlvbj4gaW4gdGhlCiAgICAr ICAgIDxhcHBsaWNhdGlvbj5saWJwcTwvYXBwbGljYXRpb24+IHNvdXJjZSBjb2RlIGZvciBhIHdh eSB0byBkbyBjb29wZXJhdGl2ZQogICAgKy0gICBsb2NraW5nIGJldHdlZW4gPGFwcGxpY2F0aW9u PmxpYnBxPC9hcHBsaWNhdGlvbj4gYW5kIHlvdXIgYXBwbGljYXRpb24uCiAgICArKyAgIGxvY2tp bmcgYmV0d2VlbiA8YXBwbGljYXRpb24+bGlicHE8L2FwcGxpY2F0aW9uPiBhbmQgeW91ciBhcHBs aWNhdGlvbi4gKE5vdGUKICAgICsrICAgdGhhdCBpdCBpcyBvbmx5IHNhZmUgdG8gY2FsbCA8ZnVu Y3Rpb24+UFFyZWdpc3RlclRocmVhZExvY2s8L2Z1bmN0aW9uPiB3aGVuCiAgICArKyAgIHRoZXJl IGFyZSBubyBvcGVuIGNvbm5lY3Rpb25zLikgQ2xpZW50cyBtYXkgcmV0cmlldmUgdGhlIGN1cnJl bnQgbG9ja2luZwogICAgKysgICBjYWxsYmFjayB3aXRoIDxmdW5jdGlvbj5QUWdldFRocmVhZExv Y2s8L2Z1bmN0aW9uPjsgaWYgbm8gY3VzdG9tIGNhbGxiYWNrCiAgICArKyAgIGhhcyBiZWVuIHJl Z2lzdGVyZWQsIGEgZGVmYXVsdCBpcyB1c2VkLgogICAgKyAgIDwvcGFyYT4KICAgICsgCiAgICAr ICAgPHBhcmE+CiAgICArCiAgICAgICMjIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0 ICMjCiAgICAgQEAgc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQ6IFBRZ2V0QXV0aERh dGFIb29rICAgICAgICAgMjA3CiAgICAgIFBRZGVmYXVsdEF1dGhEYXRhSG9vayAgICAgMjA4CjM6 ICAxMmQ0MjI0YmY2MSAhIDM6ICA3NTFkZjIyZjk5ZCBsaWJwcTogSW50cm9kdWNlIFBRQVVUSERB VEFfT0FVVEhfQkVBUkVSX1RPS0VOX1YyCiAgICBAQCBzcmMvdGVzdC9tb2R1bGVzL29hdXRoX3Zh bGlkYXRvci90LzAwMl9jbGllbnQucGw6IGlmICgkRU5We3dpdGhfbGliY3VybH0gbmUgJ3llcwog ICAgICAkY29tbW9uX2Nvbm5zdHIgPSAiJGNvbW1vbl9jb25uc3RyIGNvbm5lY3RfdGltZW91dD0x IjsKICAgICAgdGVzdCgKICAgICBAQCBzcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci90 LzAwMl9jbGllbnQucGw6IGZvcmVhY2ggbXkgJGMgKEBjYXNlcykKICAgICsgCQkiaG9vayBtaXNi ZWhhdmlvcjogJGMtPnsnZmxhZyd9IiwKICAgICsgCQlmbGFncyA9PiBbICRjLT57J2ZsYWcnfSBd LAogICAgICAJCWV4cGVjdGVkX3N0ZGVyciA9PiAkYy0+eydleHBlY3RlZF9lcnJvcid9KTsKICAg ICsrCiAgICArKwl0ZXN0KAogICAgKysJCSJob29rIG1pc2JlaGF2aW9yOiAkYy0+eydmbGFnJ30g KHYxKSIsCiAgICArKwkJZmxhZ3MgPT4gWyAnLXYxJywgJGMtPnsnZmxhZyd9IF0sCiAgICArKwkJ ZXhwZWN0ZWRfc3RkZXJyID0+ICRjLT57J2V4cGVjdGVkX2Vycm9yJ30pOwogICAgICB9CiAgICAg IAogICAgICsjIHYyIGFzeW5jIGZsb3dzIHNob3VsZCBiZSBhYmxlIHRvIHNldCBlcnJvciBtZXNz YWdlcywgdG9vLgo0OiAgODRkOGRjZDM5MGUgPSA0OiAgZmI5OTE1NDM3ZGEgbGlicHEtb2F1dGg6 IFVzZSB0aGUgUEdvYXV0aEJlYXJlclJlcXVlc3RWMiBBUEkKNTogIGU2Yjc3MzU1NzZiID0gNTog IGVkNmU3MjY4ZWMyIGxpYnBxLW9hdXRoOiBOZXZlciBsaW5rIGFnYWluc3QgbGlicHEncyBlbmNv ZGluZyBmdW5jdGlvbnMKLTogIC0tLS0tLS0tLS0tID4gNjogIGU0YjA5ODUzZTNhIFdJUDogdGVz dCBvdXQgcG9pc29uaW5nCjY6ICBlNGU1YzUxNjRiOCAhIDc6ICAzZDZkMDkwMWY3ZSBXSVA6IElu dHJvZHVjZSB0aGlyZC1wYXJ0eSBPQXV0aCBmbG93IHBsdWdpbnM/CiAgICBAQCBzcmMvaW50ZXJm YWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmggKGRlbGV0ZWQpCiAgICAgCiAgICAgICMjIHNy Yy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguaCAjIwogICAgIEBAIHNyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguaDogdHlwZWRlZiBzdHJ1Y3QKICAgIC0gCXZvaWQJICAg KmFzeW5jX2N0eDsKICAgICAgCiAgICArIAlib29sCQl2MTsKICAgICAgCWJvb2wJCWJ1aWx0aW47 CiAgICAgLQl2b2lkCSAgICpidWlsdGluX2Zsb3c7CiAgICAgKwl2b2lkCSAgICpmbG93X21vZHVs ZTsKICAgIEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYzogZXh0ZXJuIGlu dAlwZ19zdGFydF9vYXV0aGJlYXJlcihQR2Nvbm4gKmNvCiAgICAgIH0KICAgICAgCiAgICAgQEAg c3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jOiBzZXR1cF90b2tlbl9yZXF1ZXN0 KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQogICAgLSAJaWYgKHJlcyA9PSAw KQogICAgLSAJCXJlcyA9IFBRYXV0aERhdGFIb29rKFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RP S0VOLCBjb25uLCAmcmVxdWVzdCk7CiAgICArIAkJcG9pc29uX3JlcV92MigmcmVxdWVzdCwgZmFs c2UpOwogICAgKyAJfQogICAgICAJaWYgKHJlcyA9PSAwKQogICAgIC0JewogICAgIC0JCXN0YXRl LT5idWlsdGluID0gdHJ1ZTsKICAgIEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1 dGguYzogc2V0dXBfdG9rZW5fcmVxdWVzdChQR2Nvbm4gKmNvbm4sIGZlX29hdXRoCiAgICAgLQly ZXR1cm4gdHJ1ZTsKICAgICAgCiAgICAgIGZhaWw6CiAgICAtIAlpZiAocmVxdWVzdC52MS5jbGVh bnVwKQogICAgKyAJZG9fY2xlYW51cChzdGF0ZSwgJnJlcXVlc3QpOwogICAgIAogICAgICAjIyBz cmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9tZXNvbi5idWlsZCAjIwogICAgIEBAIHNy Yy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL21lc29uLmJ1aWxkOiB0ZXN0X2luc3RhbGxf bGlicyArPSBtYWdpY192YWxpZGF0b3IKICAgIEBAIHNyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFs aWRhdG9yL3QvMDAyX2NsaWVudC5wbDogaWYgKCRFTlZ7d2l0aF9saWJjdXJsfSBuZSAneWVzCiAg ICAgIAkJZmxhZ3MgPT4gWyItLW5vLWhvb2siXSwKICAgICAgCQlleHBlY3RlZF9zdGRlcnIgPT4K ICAgICAgCQkgIHFyL25vIE9BdXRoIGZsb3dzIGFyZSBhdmFpbGFibGUgXCh0cnkgaW5zdGFsbGlu ZyB0aGUgbGlicHEtb2F1dGggcGFja2FnZVwpLwogICAgK0BAIHNyYy90ZXN0L21vZHVsZXMvb2F1 dGhfdmFsaWRhdG9yL3QvMDAyX2NsaWVudC5wbDogZm9yZWFjaCBteSAkYyAoQGNhc2VzKQogICAg KyAJdGVzdCgKICAgICsgCQkiaG9vayBtaXNiZWhhdmlvcjogJGMtPnsnZmxhZyd9ICh2MSkiLAog ICAgKyAJCWZsYWdzID0+IFsgJy12MScsICRjLT57J2ZsYWcnfSBdLAogICAgKysJCWhvb2tfb25s eSA9PiAxLCAgICAjIHBsdWdpbnMgY2FuJ3QgdXNlIC12MQogICAgKyAJCWV4cGVjdGVkX3N0ZGVy ciA9PiAkYy0+eydleHBlY3RlZF9lcnJvcid9KTsKICAgICsgfQogICAgKyAKICAgICBAQCBzcmMv dGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci90LzAwMl9jbGllbnQucGw6IHRlc3QoCiAgICAg IAlleHBlY3RlZF9zdGRlcnIgPT4KICAgICAgCSAgcXIvdXNlci1kZWZpbmVkIE9BdXRoIGZsb3cg ZmFpbGVkOiBhc3luYyBlcnJvciBtZXNzYWdlLyk7Cg== --000000000000bab6b3064c25f1fe Content-Type: application/octet-stream; name="v5-0001-oauth-Report-cleanup-errors-as-warnings-on-stderr.patch" Content-Disposition: attachment; filename="v5-0001-oauth-Report-cleanup-errors-as-warnings-on-stderr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmb5r5g31 RnJvbSBjYWVjOTM3OTA1NWYzNGM1MjVmMDUzN2U3ODI5MjJlMjgxMTI1N2VmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogRnJpLCAzMCBKYW4gMjAyNiAxNjo0MToyNiAtMDgwMApTdWJqZWN0 OiBbUEFUQ0ggdjUgMS83XSBvYXV0aDogUmVwb3J0IGNsZWFudXAgZXJyb3JzIGFzIHdhcm5pbmdz IG9uIHN0ZGVycgoKVXNpbmcgY29ubi0+ZXJyb3JNZXNzYWdlIGZvciB0aGVzZSAic2hvdWxkbid0 LWhhcHBlbiIgY2FzZXMgd2lsbCBvbmx5CndvcmsgaWYgdGhlIGNvbm5lY3Rpb24gaXRzZWxmIGZh aWxzLiBPdXIgU1NMIGFuZCBwYXNzd29yZCBjYWxsYmFja3MKcHJpbnQgV0FSTklOR3Mgd2hlbiB0 aGV5IGZpbmQgdGhlbXNlbHZlcyBpbiBzaW1pbGFyIHNpdHVhdGlvbnMsIHNvCmZvbGxvdyB0aGVp ciBsZWFkLgoKUmV2aWV3ZWQtYnk6IFpzb2x0IFBhcnJhZ2kgPHpzb2x0LnBhcnJhZ2lAcGVyY29u YS5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FPWW1pJTJCbUVVX3E5c3Ix UE1tRS00ckx3Rk4lM0RPanluZER3Rlp2cHNNVTNSTkpMck05ZyU0MG1haWwuZ21haWwuY29tCi0t LQogc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5jIHwgMjIgKysrKysrKysr Ky0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1 cmwuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYwppbmRleCA2OTFl N2VjMWQ5Zi4uMmMxNDdmOThkMGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9h dXRoL29hdXRoLWN1cmwuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1j dXJsLmMKQEAgLTI4NiwxNyArMjg2LDE1IEBAIHN0cnVjdCBhc3luY19jdHgKICAqIFRlYXJzIGRv d24gdGhlIEN1cmwgaGFuZGxlcyBhbmQgZnJlZXMgdGhlIGFzeW5jX2N0eC4KICAqLwogc3RhdGlj IHZvaWQKLWZyZWVfYXN5bmNfY3R4KFBHY29ubiAqY29ubiwgc3RydWN0IGFzeW5jX2N0eCAqYWN0 eCkKK2ZyZWVfYXN5bmNfY3R4KHN0cnVjdCBhc3luY19jdHggKmFjdHgpCiB7CiAJLyoKIAkgKiBJ biBnZW5lcmFsLCBub25lIG9mIHRoZSBlcnJvciBjYXNlcyBiZWxvdyBzaG91bGQgZXZlciBoYXBw ZW4gaWYgd2UgaGF2ZQogCSAqIG5vIGJ1Z3MgYWJvdmUuIEJ1dCBpZiB3ZSBkbyBoaXQgdGhlbSwg c3VyZmFjaW5nIHRob3NlIGVycm9ycyBzb21laG93CiAJICogbWlnaHQgYmUgdGhlIG9ubHkgd2F5 IHRvIGhhdmUgYSBjaGFuY2UgdG8gZGVidWcgdGhlbS4KIAkgKgotCSAqIFRPRE86IEF0IHNvbWUg cG9pbnQgaXQnZCBiZSBuaWNlIHRvIGhhdmUgYSBzdGFuZGFyZCB3YXkgdG8gd2FybiBhYm91dAot CSAqIHRlYXJkb3duIGZhaWx1cmVzLiBBcHBlbmRpbmcgdG8gdGhlIGNvbm5lY3Rpb24ncyBlcnJv ciBtZXNzYWdlIG9ubHkKLQkgKiBoZWxwcyBpZiB0aGUgYnVnIGNhdXNlZCBhIGNvbm5lY3Rpb24g ZmFpbHVyZTsgb3RoZXJ3aXNlIGl0J2xsIGJlCi0JICogYnVyaWVkLi4uCisJICogUHJpbnQgdGhl bSBhcyB3YXJuaW5ncyB0byBzdGRlcnIsIGZvbGxvd2luZyB0aGUgZXhhbXBsZSBvZiBzaW1pbGFy CisJICogc2l0dWF0aW9ucyBpbiBmZS1zZWN1cmUtb3BlbnNzbC5jIGFuZCBmZS1jb25uZWN0LmMu CiAJICovCiAKIAlpZiAoYWN0eC0+Y3VybG0gJiYgYWN0eC0+Y3VybCkKQEAgLTMwNCw5ICszMDIs OSBAQCBmcmVlX2FzeW5jX2N0eChQR2Nvbm4gKmNvbm4sIHN0cnVjdCBhc3luY19jdHggKmFjdHgp CiAJCUNVUkxNY29kZQllcnIgPSBjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUoYWN0eC0+Y3VybG0s IGFjdHgtPmN1cmwpOwogCiAJCWlmIChlcnIpCi0JCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihj b25uLAotCQkJCQkJCQkJImxpYmN1cmwgZWFzeSBoYW5kbGUgcmVtb3ZhbCBmYWlsZWQ6ICVzIiwK LQkJCQkJCQkJCWN1cmxfbXVsdGlfc3RyZXJyb3IoZXJyKSk7CisJCQlmcHJpbnRmKHN0ZGVyciwK KwkJCQkJbGlicHFfZ2V0dGV4dCgiV0FSTklORzogbGliY3VybCBlYXN5IGhhbmRsZSByZW1vdmFs IGZhaWxlZDogJXNcbiIpLAorCQkJCQljdXJsX211bHRpX3N0cmVycm9yKGVycikpOwogCX0KIAog CWlmIChhY3R4LT5jdXJsKQpAQCAtMzI0LDkgKzMyMiw5IEBAIGZyZWVfYXN5bmNfY3R4KFBHY29u biAqY29ubiwgc3RydWN0IGFzeW5jX2N0eCAqYWN0eCkKIAkJQ1VSTE1jb2RlCWVyciA9IGN1cmxf bXVsdGlfY2xlYW51cChhY3R4LT5jdXJsbSk7CiAKIAkJaWYgKGVycikKLQkJCWxpYnBxX2FwcGVu ZF9jb25uX2Vycm9yKGNvbm4sCi0JCQkJCQkJCQkibGliY3VybCBtdWx0aSBoYW5kbGUgY2xlYW51 cCBmYWlsZWQ6ICVzIiwKLQkJCQkJCQkJCWN1cmxfbXVsdGlfc3RyZXJyb3IoZXJyKSk7CisJCQlm cHJpbnRmKHN0ZGVyciwKKwkJCQkJbGlicHFfZ2V0dGV4dCgiV0FSTklORzogbGliY3VybCBtdWx0 aSBoYW5kbGUgY2xlYW51cCBmYWlsZWQ6ICVzXG4iKSwKKwkJCQkJY3VybF9tdWx0aV9zdHJlcnJv cihlcnIpKTsKIAl9CiAKIAlmcmVlX3Byb3ZpZGVyKCZhY3R4LT5wcm92aWRlcik7CkBAIC0zNTks NyArMzU3LDcgQEAgcGdfZmVfY2xlYW51cF9vYXV0aF9mbG93KFBHY29ubiAqY29ubikKIAogCWlm IChzdGF0ZS0+YXN5bmNfY3R4KQogCXsKLQkJZnJlZV9hc3luY19jdHgoY29ubiwgc3RhdGUtPmFz eW5jX2N0eCk7CisJCWZyZWVfYXN5bmNfY3R4KHN0YXRlLT5hc3luY19jdHgpOwogCQlzdGF0ZS0+ YXN5bmNfY3R4ID0gTlVMTDsKIAl9CiAKLS0gCjIuMzQuMQoK --000000000000bab6b3064c25f1fe Content-Type: application/octet-stream; name="v5-0002-libpq-Add-PQgetThreadLock-to-mirror-PQregisterThr.patch" Content-Disposition: attachment; filename="v5-0002-libpq-Add-PQgetThreadLock-to-mirror-PQregisterThr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmb5r7z02 RnJvbSA3MjI4YWYxMTRjYWY0YThmZWU0NzRhMjc1NzdjNGQ4YTJlNGY5ZjM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVGh1LCAxOSBGZWIgMjAyNiAxMjozOToxNiAtMDgwMApTdWJqZWN0 OiBbUEFUQ0ggdjUgMi83XSBsaWJwcTogQWRkIFBRZ2V0VGhyZWFkTG9jaygpIHRvIG1pcnJvcgog UFFyZWdpc3RlclRocmVhZExvY2soKQoKQWxsb3cgbGlicHEgY2xpZW50cyB0byByZXRyaWV2ZSB0 aGUgY3VycmVudCBwZ19nX3RocmVhZGxvY2sgcG9pbnRlciB3aXRoClBRZ2V0VGhyZWFkTG9jaygp LiBTaW5nbGUtdGhyZWFkZWQgYXBwbGljYXRpb25zIGNvdWxkIGFscmVhZHkgZG8gdGhpcyBpbgph IGNvbnZvbHV0ZWQgd2F5OgoKICAgIHBndGhyZWFkbG9ja190IHRsb2NrOwoKICAgIHRsb2NrID0g UFFyZWdpc3RlclRocmVhZExvY2soTlVMTCk7CiAgICBQUXJlZ2lzdGVyVGhyZWFkTG9jayh0bG9j ayk7ICAgIC8qIHJlLXJlZ2lzdGVyIHRoZSBjYWxsYmFjayAqLwoKICAgIC8qIHVzZSB0bG9jayAq LwoKQnV0IGEgZ2VuZXJpYyBsaWJyYXJ5IGNhbid0IGRvIHRoYXQgd2l0aG91dCBwb3RlbnRpYWxs eSBicmVha2luZwpjb25jdXJyZW50IGxpYnBxIGNvbm5lY3Rpb25zLgoKVGhlIG1vdGl2YXRpb24g Zm9yIGRvaW5nIHRoaXMgbm93IGlzIHRoZSBsaWJwcS1vYXV0aCBwbHVnaW4sIHdoaWNoCmN1cnJl bnRseSByZWxpZXMgb24gZGlyZWN0IGluamVjdGlvbiBvZiBwZ19nX3RocmVhZGxvY2ssIGFuZCBz aG91bGQKaWRlYWxseSBub3QuCgpSZXZpZXdlZC1ieTogWnNvbHQgUGFycmFnaSA8enNvbHQucGFy cmFnaUBwZXJjb25hLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQU9ZbWkl MkJtRVVfcTlzcjFQTW1FLTRyTHdGTiUzRE9qeW5kRHdGWnZwc01VM1JOSkxyTTlnJTQwbWFpbC5n bWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvbGlicHEuc2dtbCAgICAgICAgICAgfCAgNiArKysr Ky0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0ICB8ICAxICsKIHNyYy9pbnRlcmZh Y2VzL2xpYnBxL2xpYnBxLWZlLmggICB8IDEwICsrKysrKysrLS0KIHNyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLWNvbm5lY3QuYyB8ICA3ICsrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0 aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbGlicHEu c2dtbCBiL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCmluZGV4IGUwOGQ0Njc4MmNjLi41NzM0OWVm OGY4NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2xpYnBxLnNnbWwKQEAgLTEwNjM1LDcgKzEwNjM1LDExIEBAIGludCBQUWlzdGhyZWFkc2Fm ZSgpOwogICAgS2VyYmVyb3MgY2FsbHMgYmVjYXVzZSBLZXJiZXJvcyBmdW5jdGlvbnMgYXJlIG5v dCB0aHJlYWQtc2FmZS4gIFNlZQogICAgZnVuY3Rpb24gPGZ1bmN0aW9uPlBRcmVnaXN0ZXJUaHJl YWRMb2NrPC9mdW5jdGlvbj4gaW4gdGhlCiAgICA8YXBwbGljYXRpb24+bGlicHE8L2FwcGxpY2F0 aW9uPiBzb3VyY2UgY29kZSBmb3IgYSB3YXkgdG8gZG8gY29vcGVyYXRpdmUKLSAgIGxvY2tpbmcg YmV0d2VlbiA8YXBwbGljYXRpb24+bGlicHE8L2FwcGxpY2F0aW9uPiBhbmQgeW91ciBhcHBsaWNh dGlvbi4KKyAgIGxvY2tpbmcgYmV0d2VlbiA8YXBwbGljYXRpb24+bGlicHE8L2FwcGxpY2F0aW9u PiBhbmQgeW91ciBhcHBsaWNhdGlvbi4gKE5vdGUKKyAgIHRoYXQgaXQgaXMgb25seSBzYWZlIHRv IGNhbGwgPGZ1bmN0aW9uPlBRcmVnaXN0ZXJUaHJlYWRMb2NrPC9mdW5jdGlvbj4gd2hlbgorICAg dGhlcmUgYXJlIG5vIG9wZW4gY29ubmVjdGlvbnMuKSBDbGllbnRzIG1heSByZXRyaWV2ZSB0aGUg Y3VycmVudCBsb2NraW5nCisgICBjYWxsYmFjayB3aXRoIDxmdW5jdGlvbj5QUWdldFRocmVhZExv Y2s8L2Z1bmN0aW9uPjsgaWYgbm8gY3VzdG9tIGNhbGxiYWNrCisgICBoYXMgYmVlbiByZWdpc3Rl cmVkLCBhIGRlZmF1bHQgaXMgdXNlZC4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0 IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQgYi9zcmMvaW50ZXJmYWNlcy9saWJw cS9leHBvcnRzLnR4dAppbmRleCBkYmJhZTY0MmQ3Ni4uMWUzZDViZDU4NjcgMTAwNjQ0Ci0tLSBh L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0CisrKyBiL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2V4cG9ydHMudHh0CkBAIC0yMTAsMyArMjEwLDQgQEAgUFFnZXRBdXRoRGF0YUhvb2sgICAg ICAgICAyMDcKIFBRZGVmYXVsdEF1dGhEYXRhSG9vayAgICAgMjA4CiBQUWZ1bGxQcm90b2NvbFZl cnNpb24gICAgIDIwOQogYXBwZW5kUFFFeHBCdWZmZXJWQSAgICAgICAyMTAKK1BRZ2V0VGhyZWFk TG9jayAgICAgICAgICAgMjExCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJw cS1mZS5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaAppbmRleCA5MDVmMmYzM2Fi OC4uMWI0NjAzMmI2ZjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZl LmgKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaApAQCAtNjMsNiArNjMsMTAg QEAgZXh0ZXJuICJDIgogLyogSW5kaWNhdGVzIHByZXNlbmNlIG9mIHRoZSBQUUFVVEhEQVRBX1BS T01QVF9PQVVUSF9ERVZJQ0UgYXV0aGRhdGEgaG9vayAqLwogI2RlZmluZSBMSUJQUV9IQVNfUFJP TVBUX09BVVRIX0RFVklDRSAxCiAKKy8qIEZlYXR1cmVzIGFkZGVkIGluIFBvc3RncmVTUUwgdjE5 OiAqLworLyogSW5kaWNhdGVzIHByZXNlbmNlIG9mIFBRZ2V0VGhyZWFkTG9jayAqLworI2RlZmlu ZSBMSUJQUV9IQVNfR0VUX1RIUkVBRF9MT0NLIDEKKwogLyoKICAqIE9wdGlvbiBmbGFncyBmb3Ig UFFjb3B5UmVzdWx0CiAgKi8KQEAgLTQ2MiwxMiArNDY2LDE0IEBAIGV4dGVybiBQUW5vdGljZVBy b2Nlc3NvciBQUXNldE5vdGljZVByb2Nlc3NvcihQR2Nvbm4gKmNvbm4sCiAgKgkgICBVc2VkIHRv IHNldCBjYWxsYmFjayB0aGF0IHByZXZlbnRzIGNvbmN1cnJlbnQgYWNjZXNzIHRvCiAgKgkgICBu b24tdGhyZWFkIHNhZmUgZnVuY3Rpb25zIHRoYXQgbGlicHEgbmVlZHMuCiAgKgkgICBUaGUgZGVm YXVsdCBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgbGlicHEgaW50ZXJuYWwgbXV0ZXguCi0gKgkgICBP bmx5IHJlcXVpcmVkIGZvciBtdWx0aXRocmVhZGVkIGFwcHMgdGhhdCB1c2Uga2VyYmVyb3MKLSAq CSAgIGJvdGggd2l0aGluIHRoZWlyIGFwcCBhbmQgZm9yIHBvc3RncmVzcWwgY29ubmVjdGlvbnMu CisgKgkgICBPbmx5IHJlcXVpcmVkIGZvciBtdWx0aXRocmVhZGVkIGFwcHMgdGhhdCB1c2UgS2Vy YmVyb3Mgb3IKKyAqCSAgIG9sZGVyIChub24tdGhyZWFkc2FmZSkgdmVyc2lvbnMgb2YgQ3VybCBi b3RoIHdpdGhpbiB0aGVpcgorICoJICAgYXBwIGFuZCBmb3IgcG9zdGdyZXNxbCBjb25uZWN0aW9u cy4KICAqLwogdHlwZWRlZiB2b2lkICgqcGd0aHJlYWRsb2NrX3QpIChpbnQgYWNxdWlyZSk7CiAK IGV4dGVybiBwZ3RocmVhZGxvY2tfdCBQUXJlZ2lzdGVyVGhyZWFkTG9jayhwZ3RocmVhZGxvY2tf dCBuZXdoYW5kbGVyKTsKK2V4dGVybiBwZ3RocmVhZGxvY2tfdCBQUWdldFRocmVhZExvY2sodm9p ZCk7CiAKIC8qID09PSBpbiBmZS10cmFjZS5jID09PSAqLwogZXh0ZXJuIHZvaWQgUFF0cmFjZShQ R2Nvbm4gKmNvbm4sIEZJTEUgKmRlYnVnX3BvcnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFj ZXMvbGlicHEvZmUtY29ubmVjdC5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5j CmluZGV4IGI0MmEwY2I0Yzc4Li5kYjliNGM4ZWRiZiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFj ZXMvbGlicHEvZmUtY29ubmVjdC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5l Y3QuYwpAQCAtODQxNCwzICs4NDE0LDEwIEBAIFBRcmVnaXN0ZXJUaHJlYWRMb2NrKHBndGhyZWFk bG9ja190IG5ld2hhbmRsZXIpCiAKIAlyZXR1cm4gcHJldjsKIH0KKworcGd0aHJlYWRsb2NrX3QK K1BRZ2V0VGhyZWFkTG9jayh2b2lkKQoreworCUFzc2VydChwZ19nX3RocmVhZGxvY2spOworCXJl dHVybiBwZ19nX3RocmVhZGxvY2s7Cit9Ci0tIAoyLjM0LjEKCg== --000000000000bab6b3064c25f1fe Content-Type: application/octet-stream; name="v5-0003-libpq-Introduce-PQAUTHDATA_OAUTH_BEARER_TOKEN_V2.patch" Content-Disposition: attachment; filename="v5-0003-libpq-Introduce-PQAUTHDATA_OAUTH_BEARER_TOKEN_V2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmb5rabc3 RnJvbSA3NTFkZjIyZjk5ZGUyMDc1ZjI3Njc1MGYyYmNjZjY1NDhlYjYzYTc2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogTW9uLCAxIERlYyAyMDI1IDE1OjA3OjI2IC0wODAwClN1YmplY3Q6 IFtQQVRDSCB2NSAzLzddIGxpYnBxOiBJbnRyb2R1Y2UgUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJf VE9LRU5fVjIKCkZvciB0aGUgbGlicHEtb2F1dGggbW9kdWxlIHRvIGV2ZW50dWFsbHkgbWFrZSB1 c2Ugb2YgdGhlClBHb2F1dGhCZWFyZXJSZXF1ZXN0IEFQSSwgaXQgbmVlZHMgc29tZSBhZGRpdGlv bmFsIGZ1bmN0aW9uYWxpdHk6IHRoZQpkZXJpdmVkIElzc3VlciBJRCBmb3IgdGhlIGF1dGhvcml6 YXRpb24gc2VydmVyIG5lZWRzIHRvIGJlIHByb3ZpZGVkIGJ5CmxpYnBxLCBhbmQgZXJyb3IgbWVz c2FnZXMgbmVlZCB0byBiZSBidWlsdCB3aXRob3V0IHJlbHlpbmcgb24gUEdjb25uCmludGVybmFs cy4gVGhlc2UgZmVhdHVyZXMgc2VlbSB1c2VmdWwgZm9yIGFwcGxpY2F0aW9uIGhvb2tzLCB0b28s IHNvCnRoYXQgdGhleSBkb24ndCBlYWNoIGhhdmUgdG8gcmVpbnZlbnQgdGhlIHdoZWVsLgoKVGhl IG9yaWdpbmFsIHBsYW4gd2FzIGZvciBhZGRpdGlvbnMgdG8gUEdvYXV0aEJlYXJlclJlcXVlc3Qg dG8gYmUgbWFkZQp3aXRob3V0IGEgdmVyc2lvbiBidW1wIHRvIHRoZSBQR2F1dGhEYXRhIHR5cGUs IGFuZCB0aGVuIGFwcGxpY2F0aW9ucwp3b3VsZCBzaW1wbHkgY2hlY2sgYSBMSUJQUV9IQVNfKiBt YWNybyBhdCBjb21waWxlIHRpbWUgdG8gZGVjaWRlIHdoZXRoZXIKdGhleSBjb3VsZCB1c2UgdGhl IG5ldyBmZWF0dXJlcy4gVGhhdCB0aGVvcmV0aWNhbGx5IHdvcmtzIGZvcgphcHBsaWNhdGlvbnMg bGlua2VkIGFnYWluc3QgbGlicHEsIHNpbmNlIGl0J3Mgbm90IHNhZmUgdG8gZG93bmdyYWRlCmxp YnBxIGZyb20gdGhlIHZlcnNpb24geW91J3ZlIGNvbXBpbGVkIGFnYWluc3QuCgpUaGF0IHN0cmF0 ZWd5IHdvbid0IHdvcmsgZm9yIHBsdWdpbnMsIHRob3VnaCwgZHVlIHRvIGEgY29tcGxpY2F0aW9u CmZpcnN0IG5vdGljZWQgZHVyaW5nIHRoZSBsaWJwcS1vYXV0aCBtb2R1bGUgc3BsaXQ6IGl0J3Mg bm9ybWFsIGZvciBhCnBsdWdpbiBvbiBkaXNrIHRvIGJlICpuZXdlciogdGhhbiB0aGUgbGlicHEg dGhhdCdzIGxvYWRpbmcgaXQsIGJlY2F1c2UKeW91IG1pZ2h0IGhhdmUgdXBncmFkZWQgeW91ciBp bnN0YWxsYXRpb24gd2hpbGUgYW4gYXBwbGljYXRpb24gd2FzCnJ1bm5pbmcuIChJbiBvdGhlciB3 b3JkcywgYSBwbHVnaW4gYXJjaGl0ZWN0dXJlIGNhdXNlcyB0aGUgY29tcGlsZS10aW1lCmFuZCBy dW4tdGltZSBkZXBlbmRlbmN5IGFycm93cyB0byBwb2ludCBpbiBvcHBvc2l0ZSBkaXJlY3Rpb25z LCBzbwpwbHVnaW5zIHdvbid0IGJlIGFibGUgdG8gcmVseSBvbiB0aGUgTElCUFFfSEFTXyogbWFj cm9zIHRvIGRldGVybWluZQp3aGF0IEFQSXMgYXJlIGF2YWlsYWJsZSB0byB0aGVtLikKCkluc3Rl YWQsIGFkZCBhIG5ldyBzdHJ1Y3Qgd2hpY2ggZXh0ZW5kcyB0aGUgInYxIiBQR29hdXRoQmVhcmVy UmVxdWVzdC4KV2hlbiBhbiBhcHBsaWNhdGlvbiBob29rIHJlY2VpdmVzIFBRQVVUSERBVEFfT0FV VEhfQkVBUkVSX1RPS0VOX1YyLCBpdAptYXkgc2FmZWx5IGRvd25jYXN0IHRoZSByZXF1ZXN0IHBv aW50ZXIgaXQgcmVjZWl2ZXMgaW4gaXRzIGNhbGxiYWNrcyB0bwptYWtlIHVzZSBvZiB0aGUgbmV3 IGZ1bmN0aW9uYWxpdHkuIGxpYnBxIHdpbGwgZmlyc3QgdHJ5IHRoZSBuZXcgdmVyc2lvbiwKdGhl biBmYWxsIGJhY2sgdG8gdGhlIG9sZCBiZWZvcmUgZ2l2aW5nIHVwLgoKUmV2aWV3ZWQtYnk6IENo YW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBac29sdCBQYXJyYWdp IDx6c29sdC5wYXJyYWdpQHBlcmNvbmEuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5l cy9tL0NBT1ltaSUyQm1yR2clMkJuX1gyTU9MZ2VXY2ozdl9NMDBnUjh1el9EN21NOHolM0RkWDFK WVZiZyU0MG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwgICAgICAg ICAgICAgICAgICAgICAgIHwgODMgKysrKysrKysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2ludGVyZmFjZXMvbGlicHEv bGlicHEtZmUuaCAgICAgICAgICAgICAgIHwgMzEgKysrKystCiBzcmMvaW50ZXJmYWNlcy9saWJw cS9mZS1hdXRoLW9hdXRoLmMgICAgICAgICAgfCA4NyArKysrKysrKysrKy0tLS0tLQogLi4uL29h dXRoX3ZhbGlkYXRvci9vYXV0aF9ob29rX2NsaWVudC5jICAgICAgIHwgOTcgKysrKysrKysrKysr KysrKysrLQogLi4uL21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL3QvMDAyX2NsaWVudC5wbCAgIHwg NDMgKysrKysrKy0KIDYgZmlsZXMgY2hhbmdlZCwgMzA2IGluc2VydGlvbnMoKyksIDM2IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sIGIvZG9jL3NyYy9z Z21sL2xpYnBxLnNnbWwKaW5kZXggNTczNDllZjhmODQuLmQ2NGY2MzQzM2MwIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbApA QCAtMTAzNjIsNiArMTAzNjIsNyBAQCBQUWF1dGhEYXRhSG9va190eXBlIFBRZ2V0QXV0aERhdGFI b29rKHZvaWQpOwogICAgICAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5PlBRQVVUSERBVEFfUFJPTVBU X09BVVRIX0RFVklDRTwvcHJpbWFyeT48L2luZGV4dGVybT4KICAgICAgICA8L3Rlcm0+CiAgICAg ICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT48ZW1waGFzaXM+QXZhaWxhYmxlIGluIFBvc3Rn cmVTUUwgMTggYW5kIGxhdGVyLjwvZW1waGFzaXM+PC9wYXJhPgogICAgICAgICA8cGFyYT4KICAg ICAgICAgIFJlcGxhY2VzIHRoZSBkZWZhdWx0IHVzZXIgcHJvbXB0IGR1cmluZyB0aGUgYnVpbHRp biBkZXZpY2UKICAgICAgICAgIGF1dGhvcml6YXRpb24gY2xpZW50IGZsb3cuIDxyZXBsYWNlYWJs ZT5kYXRhPC9yZXBsYWNlYWJsZT4gcG9pbnRzIHRvCkBAIC0xMDQxNCw2ICsxMDQxNSw3IEBAIHR5 cGVkZWYgc3RydWN0IF9QR3Byb21wdE9BdXRoRGV2aWNlCiAgICAgICAgIDxpbmRleHRlcm0+PHBy aW1hcnk+UFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU48L3ByaW1hcnk+PC9pbmRleHRlcm0+ CiAgICAgICAgPC90ZXJtPgogICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+PGVtcGhh c2lzPkF2YWlsYWJsZSBpbiBQb3N0Z3JlU1FMIDE4IGFuZCBsYXRlci48L2VtcGhhc2lzPjwvcGFy YT4KICAgICAgICAgPHBhcmE+CiAgICAgICAgICBBZGRzIGEgY3VzdG9tIGltcGxlbWVudGF0aW9u IG9mIGEgZmxvdywgcmVwbGFjaW5nIHRoZSBidWlsdGluIGZsb3cgaWYKICAgICAgICAgIGl0IGlz IDxsaW5rIGxpbmtlbmQ9ImNvbmZpZ3VyZS1vcHRpb24td2l0aC1saWJjdXJsIj5pbnN0YWxsZWQ8 L2xpbms+LgpAQCAtMTA0MjEsNiArMTA0MjMsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgX1BHcHJvbXB0 T0F1dGhEZXZpY2UKICAgICAgICAgIHVzZXIvaXNzdWVyL3Njb3BlIGNvbWJpbmF0aW9uLCBpZiBv bmUgaXMgYXZhaWxhYmxlIHdpdGhvdXQgYmxvY2tpbmcsIG9yCiAgICAgICAgICBlbHNlIHNldCB1 cCBhbiBhc3luY2hyb25vdXMgY2FsbGJhY2sgdG8gcmV0cmlldmUgb25lLgogICAgICAgICA8L3Bh cmE+CisgICAgICAgIDxub3RlPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgRm9yIDxwcm9k dWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gcmVsZWFzZXMgMTkgYW5kIGxhdGVyLAor ICAgICAgICAgIGFwcGxpY2F0aW9ucyBzaG91bGQgcHJlZmVyCisgICAgICAgICAgPGxpbmsgbGlu a2VuZD0ibGlicHEtb2F1dGgtYXV0aGRhdGEtb2F1dGgtYmVhcmVyLXRva2VuLXYyIj48bGl0ZXJh bD5QUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTl9WMjwvbGl0ZXJhbD48L2xpbms+LgorICAg ICAgICAgPC9wYXJhPgorICAgICAgICA8L25vdGU+CiAgICAgICAgIDxwYXJhPgogICAgICAgICAg PHJlcGxhY2VhYmxlPmRhdGE8L3JlcGxhY2VhYmxlPiBwb2ludHMgdG8gYW4gaW5zdGFuY2UKICAg ICAgICAgIG9mIDxzeW1ib2w+UEdvYXV0aEJlYXJlclJlcXVlc3Q8L3N5bWJvbD4sIHdoaWNoIHNo b3VsZCBiZSBmaWxsZWQgaW4KQEAgLTEwNTE2LDYgKzEwNTI1LDgwIEBAIHR5cGVkZWYgc3RydWN0 IFBHb2F1dGhCZWFyZXJSZXF1ZXN0CiAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L2xpc3RpdGVt PgogICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBx LW9hdXRoLWF1dGhkYXRhLW9hdXRoLWJlYXJlci10b2tlbi12MiI+CisgICAgICAgPHRlcm0+Cisg ICAgICAgIDxzeW1ib2w+UFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5fVjI8L3N5bWJvbD4K KyAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgIDxwcmltYXJ5PlBRQVVUSERBVEFfT0FVVEhf QkVBUkVSX1RPS0VOX1YyPC9wcmltYXJ5PgorICAgICAgICAgPHNlY29uZGFyeT5QUUFVVEhEQVRB X09BVVRIX0JFQVJFUl9UT0tFTjwvc2Vjb25kYXJ5PgorICAgICAgICA8L2luZGV4dGVybT4KKyAg ICAgICA8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT48ZW1waGFzaXM+ QXZhaWxhYmxlIGluIFBvc3RncmVTUUwgMTkgYW5kIGxhdGVyLjwvZW1waGFzaXM+PC9wYXJhPgor ICAgICAgICA8cGFyYT4KKyAgICAgICAgIFByb3ZpZGVzIGFsbCB0aGUgZnVuY3Rpb25hbGl0eSBv ZgorICAgICAgICAgPGxpbmsgbGlua2VuZD0ibGlicHEtb2F1dGgtYXV0aGRhdGEtb2F1dGgtYmVh cmVyLXRva2VuIj48bGl0ZXJhbD5QUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTjwvbGl0ZXJh bD48L2xpbms+LAorICAgICAgICAgYW5kIGFkZHMgdGhlIGFiaWxpdHkgdG8gc2V0IGN1c3RvbSBl cnJvciBtZXNzYWdlcyBhbmQgaW5zcGVjdCB0aGUKKyAgICAgICAgIE9BdXRoIGlzc3VlciBJRCB0 aGF0IHRoZSBjbGllbnQgZXhwZWN0cyB0byB1c2UuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAg PHBhcmE+CisgICAgICAgICA8cmVwbGFjZWFibGU+ZGF0YTwvcmVwbGFjZWFibGU+IHBvaW50cyB0 byBhbiBpbnN0YW5jZQorICAgICAgICAgb2YgPHN5bWJvbD5QR29hdXRoQmVhcmVyUmVxdWVzdFYy PC9zeW1ib2w+LCB3aGljaCBzaG91bGQgYmUgZmlsbGVkIGluCisgICAgICAgICBieSB0aGUgaW1w bGVtZW50YXRpb246Cis8c3lub3BzaXM+Cit0eXBlZGVmIHN0cnVjdAoreworICAgIFBHb2F1dGhC ZWFyZXJSZXF1ZXN0IHYxOyAgICAvKiBzZWUgdGhlIFBHb2F1dGhCZWFyZXJSZXF1ZXN0IHN0cnVj dCwgYWJvdmUgKi8KKworICAgIC8qIEhvb2sgaW5wdXRzIChjb25zdGFudCBhY3Jvc3MgYWxsIGNh bGxzKSAqLworICAgIGNvbnN0IGNoYXIgKmlzc3VlcjsgICAgICAgICAgICAvKiB0aGUgaXNzdWVy IGlkZW50aWZpZXIgKFJGQyA5MjA3KSBpbiB1c2UgKi8KKworICAgIC8qIEhvb2sgb3V0cHV0cyAq LworICAgIGNvbnN0IGNoYXIgKmVycm9yOyAgICAgICAgICAgICAvKiBob29rLWRlZmluZWQgZXJy b3IgbWVzc2FnZSAqLworfSBQR29hdXRoQmVhcmVyUmVxdWVzdFYyOworPC9zeW5vcHNpcz4KKyAg ICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFdoZW4gYSA8bGl0ZXJhbD5Q UUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTl9WMjwvbGl0ZXJhbD4gaG9vayBpcyBpbgorICAg ICAgICAgdXNlLCA8YXBwbGljYXRpb24+bGlicHE8L2FwcGxpY2F0aW9uPiBhZGRpdGlvbmFsbHkg Z3VhcmFudGVlcyB0aGF0IHRoZQorICAgICAgICAgPGxpdGVyYWw+cmVxdWVzdDwvbGl0ZXJhbD4g cG9pbnRlciB0aGF0IGlzIHByb3ZpZGVkIHRvIHRoZQorICAgICAgICAgPHJlcGxhY2VhYmxlPnYx LmFzeW5jPC9yZXBsYWNlYWJsZT4gYW5kIDxyZXBsYWNlYWJsZT52MS5jbGVhbnVwPC9yZXBsYWNl YWJsZT4KKyAgICAgICAgIGNhbGxiYWNrcyBtYXkgYmUgc2FmZWx5IGNhc3QgdG8gPGxpdGVyYWw+ KFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjImbmJzcDsqKTwvbGl0ZXJhbD4uCisgICAgICAgICBJbXBs ZW1lbnRhdGlvbnMgbXVzdCBvdGhlcndpc2UgZm9sbG93IHRoZSB2MSBBUEksIGFzIGRlc2NyaWJl ZCBhYm92ZSwKKyAgICAgICAgIHVzaW5nIHRoZSA8cmVwbGFjZWFibGU+djE8L3JlcGxhY2VhYmxl PiBzdHJ1Y3QgbWVtYmVyLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDx3YXJuaW5nPgorICAg ICAgICAgPHBhcmE+CisgICAgICAgICAgQ2FzdGluZyB0byA8bGl0ZXJhbD4oUEdvYXV0aEJlYXJl clJlcXVlc3RWMiZuYnNwOyopPC9saXRlcmFsPiBpcworICAgICAgICAgIDxlbXBoYXNpcz5vbmx5 PC9lbXBoYXNpcz4gc2FmZSB3aGVuIHRoZSBob29rIHR5cGUgaXMKKyAgICAgICAgICA8bGl0ZXJh bD5QUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTl9WMjwvbGl0ZXJhbD4uIEFwcGxpY2F0aW9u cyBtYXkKKyAgICAgICAgICBjcmFzaCBvciBtaXNiZWhhdmUgaWYgYSBob29rIGF0dGVtcHRzIHRv IHVzZSB2MiBmZWF0dXJlcyB3aXRoIHRoZSB2MQorICAgICAgICAgIGhvb2sgdHlwZS4KKyAgICAg ICAgIDwvcGFyYT4KKyAgICAgICAgPC93YXJuaW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAg IEluIGFkZGl0aW9uIHRvIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB2ZXJzaW9uIDEgQVBJLCB0 aGUgdjIgc3RydWN0CisgICAgICAgICBwcm92aWRlcyBhbiBhZGRpdGlvbmFsIGlucHV0IGFuZCBv dXRwdXQgZm9yIHRoZSBob29rOgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAg ICAgICAgPHJlcGxhY2VhYmxlPmlzc3VlcjwvcmVwbGFjZWFibGU+IGNvbnRhaW5zIHRoZSBpc3N1 ZXIgaWRlbnRpZmllciwgYXMKKyAgICAgICAgIGRlZmluZWQgaW4gPHVsaW5rIHVybD0iaHR0cHM6 Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM5MjA3Ij5SRkMgOTIwNzwvdWxpbms+ LAorICAgICAgICAgdGhhdCBpcyBpbiB1c2UgZm9yIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24uIFRo aXMgaWRlbnRpZmllciBpcworICAgICAgICAgZGV0ZXJtaW5lZCBieSA8eHJlZiBsaW5rZW5kPSJs aWJwcS1jb25uZWN0LW9hdXRoLWlzc3VlciIvPi4KKyAgICAgICAgIFRvIGF2b2lkIG1peC11cCBh dHRhY2tzLCBjdXN0b20gZmxvd3Mgc2hvdWxkIGVuc3VyZSB0aGF0IGFueSBkaXNjb3ZlcnkKKyAg ICAgICAgIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IHRoZSBhdXRob3JpemF0aW9uIHNlcnZlciBtYXRj aGVzIHRoaXMgaXNzdWVyIElELgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAg ICAgICAgPHJlcGxhY2VhYmxlPmVycm9yPC9yZXBsYWNlYWJsZT4gbWF5IGJlIHNldCB0byBwb2lu dCB0byBhIGN1c3RvbQorICAgICAgICAgZXJyb3IgbWVzc2FnZSB3aGVuIGEgZmxvdyBmYWlscy4g VGhlIG1lc3NhZ2Ugd2lsbCBiZSBpbmNsdWRlZCBhcyBwYXJ0CisgICAgICAgICBvZiA8bGluayBs aW5rZW5kPSJsaWJwcS1QUWVycm9yTWVzc2FnZSI+PGxpdGVyYWw+UFFlcnJvck1lc3NhZ2UoKTwv bGl0ZXJhbD48L2xpbms+LgorICAgICAgICAgSG9va3MgbXVzdCBmcmVlIGFueSBlcnJvciBtZXNz YWdlIGFsbG9jYXRpb25zIGR1cmluZyB0aGUKKyAgICAgICAgIDxyZXBsYWNlYWJsZT52MS5jbGVh bnVwPC9yZXBsYWNlYWJsZT4gY2FsbGJhY2suCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xp c3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPC92YXJpYWJsZWxpc3Q+CiAg ICAgPC9wYXJhPgogICAgPC9zZWN0Mz4KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNzdl M2MwNDE0NGUuLjMyNTA1NjRkNGZmIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTky Niw2ICsxOTI2LDcgQEAgUEdkYXRhVmFsdWUKIFBHbG9iamZ1bmNzCiBQR25vdGlmeQogUEdvYXV0 aEJlYXJlclJlcXVlc3QKK1BHb2F1dGhCZWFyZXJSZXF1ZXN0VjIKIFBHcGlwZWxpbmVTdGF0dXMK IFBHcHJvbXB0T0F1dGhEZXZpY2UKIFBHcmVzQXR0RGVzYwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVy ZmFjZXMvbGlicHEvbGlicHEtZmUuaCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmgK aW5kZXggMWI0NjAzMmI2ZjkuLmYwNmU3YTk3MmMzIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9saWJwcS9saWJwcS1mZS5oCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmgK QEAgLTY2LDYgKzY2LDggQEAgZXh0ZXJuICJDIgogLyogRmVhdHVyZXMgYWRkZWQgaW4gUG9zdGdy ZVNRTCB2MTk6ICovCiAvKiBJbmRpY2F0ZXMgcHJlc2VuY2Ugb2YgUFFnZXRUaHJlYWRMb2NrICov CiAjZGVmaW5lIExJQlBRX0hBU19HRVRfVEhSRUFEX0xPQ0sgMQorLyogSW5kaWNhdGVzIHByZXNl bmNlIG9mIHRoZSBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTl9WMiBhdXRoZGF0YSBob29r ICovCisjZGVmaW5lIExJQlBRX0hBU19PQVVUSF9CRUFSRVJfVE9LRU5fVjIgMQogCiAvKgogICog T3B0aW9uIGZsYWdzIGZvciBQUWNvcHlSZXN1bHQKQEAgLTE5Nyw3ICsxOTksOSBAQCB0eXBlZGVm IGVudW0KIHsKIAlQUUFVVEhEQVRBX1BST01QVF9PQVVUSF9ERVZJQ0UsIC8qIHVzZXIgbXVzdCB2 aXNpdCBhIGRldmljZS1hdXRob3JpemF0aW9uCiAJCQkJCQkJCQkgKiBVUkwgKi8KLQlQUUFVVEhE QVRBX09BVVRIX0JFQVJFUl9UT0tFTiwJLyogc2VydmVyIHJlcXVlc3RzIGFuIE9BdXRoIEJlYXJl ciB0b2tlbiAqLworCVBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOLAkvKiBzZXJ2ZXIgcmVx dWVzdHMgYW4gT0F1dGggQmVhcmVyIHRva2VuCisJCQkJCQkJCQkgKiAodjIgaXMgcHJlZmVycmVk OyBzZWUgYmVsb3cpICovCisJUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5fVjIsCS8qIG5l d2VzdCBBUEkgZm9yIE9BdXRoIEJlYXJlciB0b2tlbnMgKi8KIH0gUEdhdXRoRGF0YTsKIAogLyog UEdjb25uIGVuY2Fwc3VsYXRlcyBhIGNvbm5lY3Rpb24gdG8gdGhlIGJhY2tlbmQuCkBAIC03MzUs NiArNzM5LDcgQEAgZXh0ZXJuIGludAlQUWVudjJlbmNvZGluZyh2b2lkKTsKIAogLyogPT09IGlu IGZlLWF1dGguYyA9PT0gKi8KIAorLyogQXV0aGRhdGEgZm9yIFBRQVVUSERBVEFfUFJPTVBUX09B VVRIX0RFVklDRSAqLwogdHlwZWRlZiBzdHJ1Y3QgX1BHcHJvbXB0T0F1dGhEZXZpY2UKIHsKIAlj b25zdCBjaGFyICp2ZXJpZmljYXRpb25fdXJpOwkvKiB2ZXJpZmljYXRpb24gVVJJIHRvIHZpc2l0 ICovCkBAIC03NTUsNiArNzYwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1BHcHJvbXB0T0F1dGhEZXZp Y2UKICNkZWZpbmUgUFFfU09DS1RZUEUgaW50CiAjZW5kaWYKIAorLyogQXV0aGRhdGEgZm9yIFBR QVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOICovCiB0eXBlZGVmIHN0cnVjdCBQR29hdXRoQmVh cmVyUmVxdWVzdAogewogCS8qIEhvb2sgaW5wdXRzIChjb25zdGFudCBhY3Jvc3MgYWxsIGNhbGxz KSAqLwpAQCAtNzg4LDcgKzc5NCw4IEBAIHR5cGVkZWYgc3RydWN0IFBHb2F1dGhCZWFyZXJSZXF1 ZXN0CiAKIAkvKgogCSAqIENhbGxiYWNrIHRvIGNsZWFuIHVwIGN1c3RvbSBhbGxvY2F0aW9ucy4g QSBob29rIGltcGxlbWVudGF0aW9uIG1heSB1c2UKLQkgKiB0aGlzIHRvIGZyZWUgcmVxdWVzdC0+ dG9rZW4gYW5kIGFueSByZXNvdXJjZXMgaW4gcmVxdWVzdC0+dXNlci4KKwkgKiB0aGlzIHRvIGZy ZWUgcmVxdWVzdC0+dG9rZW4gYW5kIGFueSByZXNvdXJjZXMgaW4gcmVxdWVzdC0+dXNlci4gVjIK KwkgKiBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIGFkZGl0aW9uYWxseSBmcmVlIHJlcXVlc3QtPmVy cm9yLCBpZiBzZXQuCiAJICoKIAkgKiBUaGlzIGlzIHRlY2huaWNhbGx5IG9wdGlvbmFsLCBidXQg aGlnaGx5IHJlY29tbWVuZGVkLCBiZWNhdXNlIHRoZXJlIGlzCiAJICogbm8gb3RoZXIgaW5kaWNh dGlvbiBhcyB0byB3aGVuIGl0IGlzIHNhZmUgdG8gZnJlZSB0aGUgdG9rZW4uCkBAIC04MTMsNiAr ODIwLDI2IEBAIHR5cGVkZWYgc3RydWN0IFBHb2F1dGhCZWFyZXJSZXF1ZXN0CiAKICN1bmRlZiBQ UV9TT0NLVFlQRQogCisvKiBBdXRoZGF0YSBmb3IgUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9L RU5fVjIgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisJUEdvYXV0aEJlYXJlclJlcXVlc3QgdjE7CS8q IHNlZSB0aGUgUEdvYXV0aEJlYXJlclJlcXVlc3Qgc3RydWN0LCBhYm92ZSAqLworCisJLyogSG9v ayBpbnB1dHMgKGNvbnN0YW50IGFjcm9zcyBhbGwgY2FsbHMpICovCisJY29uc3QgY2hhciAqaXNz dWVyOwkJCS8qIHRoZSBpc3N1ZXIgaWRlbnRpZmllciAoUkZDIDkyMDcpIGluIHVzZSwgYXMKKwkJ CQkJCQkJICogZGVyaXZlZCBmcm9tIHRoZSBjb25uZWN0aW9uJ3Mgb2F1dGhfaXNzdWVyICovCisK KwkvKiBIb29rIG91dHB1dHMgKi8KKworCS8qCisJICogSG9vay1kZWZpbmVkIGVycm9yIG1lc3Nh Z2Ugd2hpY2ggd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgY29ubmVjdGlvbidzCisJICogUFFlcnJv ck1lc3NhZ2UoKSBvdXRwdXQgd2hlbiB0aGUgZmxvdyBmYWlscy4gbGlicHEgZG9lcyBub3QgdGFr ZQorCSAqIG93bmVyc2hpcCBvZiB0aGlzIHBvaW50ZXI7IGFueSBhbGxvY2F0aW9ucyBzaG91bGQg YmUgZnJlZWQgZHVyaW5nIHRoZQorCSAqIGNsZWFudXAgY2FsbGJhY2suCisJICovCisJY29uc3Qg Y2hhciAqZXJyb3I7Cit9IFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjI7CisKIGV4dGVybiBjaGFyICpQ UWVuY3J5cHRQYXNzd29yZChjb25zdCBjaGFyICpwYXNzd2QsIGNvbnN0IGNoYXIgKnVzZXIpOwog ZXh0ZXJuIGNoYXIgKlBRZW5jcnlwdFBhc3N3b3JkQ29ubihQR2Nvbm4gKmNvbm4sIGNvbnN0IGNo YXIgKnBhc3N3ZCwgY29uc3QgY2hhciAqdXNlciwgY29uc3QgY2hhciAqYWxnb3JpdGhtKTsKIGV4 dGVybiBQR3Jlc3VsdCAqUFFjaGFuZ2VQYXNzd29yZChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIg KnVzZXIsIGNvbnN0IGNoYXIgKnBhc3N3ZCk7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9s aWJwcS9mZS1hdXRoLW9hdXRoLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRo LmMKaW5kZXggNjc4NzlkNjRiMzkuLmI2NGQwNWExM2UzIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt YXV0aC1vYXV0aC5jCkBAIC02NzUsNiArNjc1LDI1IEBAIGNsZWFudXA6CiAJcmV0dXJuIHN1Y2Nl c3M7CiB9CiAKKy8qCisgKiBIZWxwZXIgZm9yIGhhbmRsaW5nIGZsb3cgZmFpbHVyZXMuIElmIGFu eXRoaW5nIHdhcyBwdXQgaW50byByZXF1ZXN0LT5lcnJvciwKKyAqIGl0J3MgYWRkZWQgdG8gY29u bi0+ZXJyb3JNZXNzYWdlIGhlcmUuCisgKi8KK3N0YXRpYyB2b2lkCityZXBvcnRfdXNlcl9mbG93 X2Vycm9yKFBHY29ubiAqY29ubiwgY29uc3QgUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVz dCkKK3sKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJ IGxpYnBxX2dldHRleHQoInVzZXItZGVmaW5lZCBPQXV0aCBmbG93IGZhaWxlZCIpKTsKKworCWlm IChyZXF1ZXN0LT5lcnJvcikKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJv ck1lc3NhZ2UsICI6ICIpOworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNz YWdlLCByZXF1ZXN0LT5lcnJvcik7CisJfQorCisJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKCZjb25u LT5lcnJvck1lc3NhZ2UsICdcbicpOworfQorCiAvKgogICogQ2FsbGJhY2sgaW1wbGVtZW50YXRp b24gb2YgY29ubi0+YXN5bmNfYXV0aCgpIGZvciBhIHVzZXItZGVmaW5lZCBPQXV0aCBmbG93Lgog ICogRGVsZWdhdGVzIHRoZSByZXRyaWV2YWwgb2YgdGhlIHRva2VuIHRvIHRoZSBhcHBsaWNhdGlv bidzIGFzeW5jIGNhbGxiYWNrLgpAQCAtNjg3LDIwICs3MDYsMjMgQEAgc3RhdGljIFBvc3RncmVz UG9sbGluZ1N0YXR1c1R5cGUKIHJ1bl91c2VyX29hdXRoX2Zsb3coUEdjb25uICpjb25uKQogewog CWZlX29hdXRoX3N0YXRlICpzdGF0ZSA9IGNvbm4tPnNhc2xfc3RhdGU7Ci0JUEdvYXV0aEJlYXJl clJlcXVlc3QgKnJlcXVlc3QgPSBzdGF0ZS0+YXN5bmNfY3R4OworCVBHb2F1dGhCZWFyZXJSZXF1 ZXN0VjIgKnJlcXVlc3QgPSBzdGF0ZS0+YXN5bmNfY3R4OwogCVBvc3RncmVzUG9sbGluZ1N0YXR1 c1R5cGUgc3RhdHVzOwogCi0JaWYgKCFyZXF1ZXN0LT5hc3luYykKKwlpZiAoIXJlcXVlc3QtPnYx LmFzeW5jKQogCXsKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwKIAkJCQkJCQkJInVz ZXItZGVmaW5lZCBPQXV0aCBmbG93IHByb3ZpZGVkIG5laXRoZXIgYSB0b2tlbiBub3IgYW4gYXN5 bmMgY2FsbGJhY2siKTsKIAkJcmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOwogCX0KIAotCXN0 YXR1cyA9IHJlcXVlc3QtPmFzeW5jKGNvbm4sIHJlcXVlc3QsICZjb25uLT5hbHRzb2NrKTsKKwlz dGF0dXMgPSByZXF1ZXN0LT52MS5hc3luYyhjb25uLAorCQkJCQkJCSAgIChQR29hdXRoQmVhcmVy UmVxdWVzdCAqKSByZXF1ZXN0LAorCQkJCQkJCSAgICZjb25uLT5hbHRzb2NrKTsKKwogCWlmIChz dGF0dXMgPT0gUEdSRVNfUE9MTElOR19GQUlMRUQpCiAJewotCQlsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihjb25uLCAidXNlci1kZWZpbmVkIE9BdXRoIGZsb3cgZmFpbGVkIik7CisJCXJlcG9ydF91 c2VyX2Zsb3dfZXJyb3IoY29ubiwgcmVxdWVzdCk7CiAJCXJldHVybiBzdGF0dXM7CiAJfQogCWVs c2UgaWYgKHN0YXR1cyA9PSBQR1JFU19QT0xMSU5HX09LKQpAQCAtNzEwLDE0ICs3MzIsMTQgQEAg cnVuX3VzZXJfb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pCiAJCSAqIG9udG8gdGhlIG9yaWdpbmFs IHN0cmluZywgc2luY2UgaXQgbWF5IG5vdCBiZSBzYWZlIGZvciB1cyB0byBmcmVlKCkKIAkJICog aXQuKQogCQkgKi8KLQkJaWYgKCFyZXF1ZXN0LT50b2tlbikKKwkJaWYgKCFyZXF1ZXN0LT52MS50 b2tlbikKIAkJewogCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwKIAkJCQkJCQkJCSJ1 c2VyLWRlZmluZWQgT0F1dGggZmxvdyBkaWQgbm90IHByb3ZpZGUgYSB0b2tlbiIpOwogCQkJcmV0 dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOwogCQl9CiAKLQkJY29ubi0+b2F1dGhfdG9rZW4gPSBz dHJkdXAocmVxdWVzdC0+dG9rZW4pOworCQljb25uLT5vYXV0aF90b2tlbiA9IHN0cmR1cChyZXF1 ZXN0LT52MS50b2tlbik7CiAJCWlmICghY29ubi0+b2F1dGhfdG9rZW4pCiAJCXsKIAkJCWxpYnBx X2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJvdXQgb2YgbWVtb3J5Iik7CkBAIC03MzksMTkgKzc2 MSwyMCBAQCBydW5fdXNlcl9vYXV0aF9mbG93KFBHY29ubiAqY29ubikKIH0KIAogLyoKLSAqIENs ZWFudXAgY2FsbGJhY2sgZm9yIHRoZSBhc3luYyB1c2VyIGZsb3cuIERlbGVnYXRlcyBtb3N0IG9m IGl0cyBqb2IgdG8gdGhlCi0gKiB1c2VyLXByb3ZpZGVkIGNsZWFudXAgaW1wbGVtZW50YXRpb24s IHRoZW4gZGlzY29ubmVjdHMgdGhlIGFsdHNvY2suCisgKiBDbGVhbnVwIGNhbGxiYWNrIGZvciB0 aGUgYXN5bmMgdXNlciBmbG93LiBEZWxlZ2F0ZXMgbW9zdCBvZiBpdHMgam9iIHRvCisgKiBQR29h dXRoQmVhcmVyUmVxdWVzdFYyLmNsZWFudXAoKSwgdGhlbiBkaXNjb25uZWN0cyB0aGUgYWx0c29j ayBhbmQgZnJlZXMgdGhlCisgKiByZXF1ZXN0IGl0c2VsZi4KICAqLwogc3RhdGljIHZvaWQKIGNs ZWFudXBfdXNlcl9vYXV0aF9mbG93KFBHY29ubiAqY29ubikKIHsKIAlmZV9vYXV0aF9zdGF0ZSAq c3RhdGUgPSBjb25uLT5zYXNsX3N0YXRlOwotCVBHb2F1dGhCZWFyZXJSZXF1ZXN0ICpyZXF1ZXN0 ID0gc3RhdGUtPmFzeW5jX2N0eDsKKwlQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1ZXN0ID0g c3RhdGUtPmFzeW5jX2N0eDsKIAogCUFzc2VydChyZXF1ZXN0KTsKIAotCWlmIChyZXF1ZXN0LT5j bGVhbnVwKQotCQlyZXF1ZXN0LT5jbGVhbnVwKGNvbm4sIHJlcXVlc3QpOworCWlmIChyZXF1ZXN0 LT52MS5jbGVhbnVwKQorCQlyZXF1ZXN0LT52MS5jbGVhbnVwKGNvbm4sIChQR29hdXRoQmVhcmVy UmVxdWVzdCAqKSByZXF1ZXN0KTsKIAljb25uLT5hbHRzb2NrID0gUEdJTlZBTElEX1NPQ0tFVDsK IAogCWZyZWUocmVxdWVzdCk7CkBAIC05NzUsOCArOTk4LDggQEAgdXNlX2J1aWx0aW5fZmxvdyhQ R2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0ZSkKICAqIHRva2VuIGZvciBwcmVzZW50 YXRpb24gdG8gdGhlIHNlcnZlci4KICAqCiAgKiBJZiB0aGUgYXBwbGljYXRpb24gaGFzIHJlZ2lz dGVyZWQgYSBjdXN0b20gZmxvdyBoYW5kbGVyIHVzaW5nCi0gKiBQUUFVVEhEQVRBX09BVVRIX0JF QVJFUl9UT0tFTiwgaXQgbWF5IGVpdGhlciByZXR1cm4gYSB0b2tlbiBpbW1lZGlhdGVseSAoZS5n LgotICogaWYgaXQgaGFzIG9uZSBjYWNoZWQgZm9yIGltbWVkaWF0ZSB1c2UpLCBvciBzZXQgdXAg Zm9yIGEgc2VyaWVzIG9mCisgKiBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTltfVjJdLCBp dCBtYXkgZWl0aGVyIHJldHVybiBhIHRva2VuIGltbWVkaWF0ZWx5CisgKiAoZS5nLiBpZiBpdCBo YXMgb25lIGNhY2hlZCBmb3IgaW1tZWRpYXRlIHVzZSksIG9yIHNldCB1cCBmb3IgYSBzZXJpZXMg b2YKICAqIGFzeW5jaHJvbm91cyBjYWxsYmFja3Mgd2hpY2ggd2lsbCBiZSBtYW5hZ2VkIGJ5IHJ1 bl91c2VyX29hdXRoX2Zsb3coKS4KICAqCiAgKiBJZiB0aGUgZGVmYXVsdCBoYW5kbGVyIGlzIHVz ZWQgaW5zdGVhZCwgYSBEZXZpY2UgQXV0aG9yaXphdGlvbiBmbG93IGlzIHVzZWQKQEAgLTk5MCwy NyArMTAxMywzNyBAQCBzdGF0aWMgYm9vbAogc2V0dXBfdG9rZW5fcmVxdWVzdChQR2Nvbm4gKmNv bm4sIGZlX29hdXRoX3N0YXRlICpzdGF0ZSkKIHsKIAlpbnQJCQlyZXM7Ci0JUEdvYXV0aEJlYXJl clJlcXVlc3QgcmVxdWVzdCA9IHsKLQkJLm9wZW5pZF9jb25maWd1cmF0aW9uID0gY29ubi0+b2F1 dGhfZGlzY292ZXJ5X3VyaSwKLQkJLnNjb3BlID0gY29ubi0+b2F1dGhfc2NvcGUsCisJUEdvYXV0 aEJlYXJlclJlcXVlc3RWMiByZXF1ZXN0ID0geworCQkudjEgPSB7CisJCQkub3BlbmlkX2NvbmZp Z3VyYXRpb24gPSBjb25uLT5vYXV0aF9kaXNjb3ZlcnlfdXJpLAorCQkJLnNjb3BlID0gY29ubi0+ b2F1dGhfc2NvcGUsCisJCX0sCisJCS5pc3N1ZXIgPSBjb25uLT5vYXV0aF9pc3N1ZXJfaWQsCiAJ fTsKIAotCUFzc2VydChyZXF1ZXN0Lm9wZW5pZF9jb25maWd1cmF0aW9uKTsKKwlBc3NlcnQocmVx dWVzdC52MS5vcGVuaWRfY29uZmlndXJhdGlvbik7CisJQXNzZXJ0KHJlcXVlc3QuaXNzdWVyKTsK KworCS8qCisJICogVGhlIGNsaWVudCBtYXkgaGF2ZSBvdmVycmlkZGVuIHRoZSBPQXV0aCBmbG93 LiBUcnkgdGhlIHYyIGhvb2sgZmlyc3QsCisJICogdGhlbiBmYWxsIGJhY2sgdG8gdGhlIHYxIGlt cGxlbWVudGF0aW9uLgorCSAqLworCXJlcyA9IFBRYXV0aERhdGFIb29rKFBRQVVUSERBVEFfT0FV VEhfQkVBUkVSX1RPS0VOX1YyLCBjb25uLCAmcmVxdWVzdCk7CisJaWYgKHJlcyA9PSAwKQorCQly ZXMgPSBQUWF1dGhEYXRhSG9vayhQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTiwgY29ubiwg JnJlcXVlc3QpOwogCi0JLyogVGhlIGNsaWVudCBtYXkgaGF2ZSBvdmVycmlkZGVuIHRoZSBPQXV0 aCBmbG93LiAqLwotCXJlcyA9IFBRYXV0aERhdGFIb29rKFBRQVVUSERBVEFfT0FVVEhfQkVBUkVS X1RPS0VOLCBjb25uLCAmcmVxdWVzdCk7CiAJaWYgKHJlcyA+IDApCiAJewotCQlQR29hdXRoQmVh cmVyUmVxdWVzdCAqcmVxdWVzdF9jb3B5OworCQlQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1 ZXN0X2NvcHk7CiAKLQkJaWYgKHJlcXVlc3QudG9rZW4pCisJCWlmIChyZXF1ZXN0LnYxLnRva2Vu KQogCQl7CiAJCQkvKgogCQkJICogV2UgYWxyZWFkeSBoYXZlIGEgdG9rZW4sIHNvIGNvcHkgaXQg aW50byB0aGUgY29ubi4gKFdlIGNhbid0CiAJCQkgKiBob2xkIG9udG8gdGhlIG9yaWdpbmFsIHN0 cmluZywgc2luY2UgaXQgbWF5IG5vdCBiZSBzYWZlIGZvciB1cwogCQkJICogdG8gZnJlZSgpIGl0 LikKIAkJCSAqLwotCQkJY29ubi0+b2F1dGhfdG9rZW4gPSBzdHJkdXAocmVxdWVzdC50b2tlbik7 CisJCQljb25uLT5vYXV0aF90b2tlbiA9IHN0cmR1cChyZXF1ZXN0LnYxLnRva2VuKTsKIAkJCWlm ICghY29ubi0+b2F1dGhfdG9rZW4pCiAJCQl7CiAJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3Io Y29ubiwgIm91dCBvZiBtZW1vcnkiKTsKQEAgLTEwMTgsOCArMTA1MSw4IEBAIHNldHVwX3Rva2Vu X3JlcXVlc3QoUEdjb25uICpjb25uLCBmZV9vYXV0aF9zdGF0ZSAqc3RhdGUpCiAJCQl9CiAKIAkJ CS8qIHNob3J0LWNpcmN1aXQgKi8KLQkJCWlmIChyZXF1ZXN0LmNsZWFudXApCi0JCQkJcmVxdWVz dC5jbGVhbnVwKGNvbm4sICZyZXF1ZXN0KTsKKwkJCWlmIChyZXF1ZXN0LnYxLmNsZWFudXApCisJ CQkJcmVxdWVzdC52MS5jbGVhbnVwKGNvbm4sIChQR29hdXRoQmVhcmVyUmVxdWVzdCAqKSAmcmVx dWVzdCk7CiAJCQlyZXR1cm4gdHJ1ZTsKIAkJfQogCkBAIC0xMDM4LDcgKzEwNzEsNyBAQCBzZXR1 cF90b2tlbl9yZXF1ZXN0KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQogCX0K IAllbHNlIGlmIChyZXMgPCAwKQogCXsKLQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwg InVzZXItZGVmaW5lZCBPQXV0aCBmbG93IGZhaWxlZCIpOworCQlyZXBvcnRfdXNlcl9mbG93X2Vy cm9yKGNvbm4sICZyZXF1ZXN0KTsKIAkJZ290byBmYWlsOwogCX0KIAllbHNlIGlmICghdXNlX2J1 aWx0aW5fZmxvdyhjb25uLCBzdGF0ZSkpCkBAIC0xMDUwLDggKzEwODMsOCBAQCBzZXR1cF90b2tl bl9yZXF1ZXN0KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQogCXJldHVybiB0 cnVlOwogCiBmYWlsOgotCWlmIChyZXF1ZXN0LmNsZWFudXApCi0JCXJlcXVlc3QuY2xlYW51cChj b25uLCAmcmVxdWVzdCk7CisJaWYgKHJlcXVlc3QudjEuY2xlYW51cCkKKwkJcmVxdWVzdC52MS5j bGVhbnVwKGNvbm4sIChQR29hdXRoQmVhcmVyUmVxdWVzdCAqKSAmcmVxdWVzdCk7CiAJcmV0dXJu IGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRv ci9vYXV0aF9ob29rX2NsaWVudC5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Iv b2F1dGhfaG9va19jbGllbnQuYwppbmRleCA2MGRkMWRjZGFhMC4uNWJkZGMwZjgwN2EgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL29hdXRoX2hvb2tfY2xpZW50 LmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Ivb2F1dGhfaG9va19jbGll bnQuYwpAQCAtMjAsNiArMjAsNyBAQAogCiAjaW5jbHVkZSAiZ2V0b3B0X2xvbmcuaCIKICNpbmNs dWRlICJsaWJwcS1mZS5oIgorI2luY2x1ZGUgInBxZXhwYnVmZmVyLmgiCiAKIHN0YXRpYyBpbnQJ aGFuZGxlX2F1dGhfZGF0YShQR2F1dGhEYXRhIHR5cGUsIFBHY29ubiAqY29ubiwgdm9pZCAqZGF0 YSk7CiBzdGF0aWMgUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZSBhc3luY19jYihQR2Nvbm4gKmNv bm4sCkBAIC0zNiwxMyArMzcsMTYgQEAgdXNhZ2UoY2hhciAqYXJndltdKQogCiAJcHJpbnRmKCJy ZWNvZ25pemVkIGZsYWdzOlxuIik7CiAJcHJpbnRmKCIgIC1oLCAtLWhlbHAgICAgICAgICAgICAg IHNob3cgdGhpcyBtZXNzYWdlXG4iKTsKKwlwcmludGYoIiAgLXYgVkVSU0lPTiAgICAgICAgICAg ICAgc2VsZWN0IHRoZSBob29rIEFQSSB2ZXJzaW9uIChkZWZhdWx0IDIpXG4iKTsKIAlwcmludGYo IiAgLS1leHBlY3RlZC1zY29wZSBTQ09QRSAgZmFpbCBpZiByZWNlaXZlZCBzY29wZXMgZG8gbm90 IG1hdGNoIFNDT1BFXG4iKTsKIAlwcmludGYoIiAgLS1leHBlY3RlZC11cmkgVVJJICAgICAgZmFp bCBpZiByZWNlaXZlZCBjb25maWd1cmF0aW9uIGxpbmsgZG9lcyBub3QgbWF0Y2ggVVJJXG4iKTsK KwlwcmludGYoIiAgLS1leHBlY3RlZC1pc3N1ZXIgSVNTICAgZmFpbCBpZiByZWNlaXZlZCBpc3N1 ZXIgZG9lcyBub3QgbWF0Y2ggSVNTICh2MiBvbmx5KVxuIik7CiAJcHJpbnRmKCIgIC0tbWlzYmVo YXZlPU1PREUgICAgICAgIGhhdmUgdGhlIGhvb2sgZmFpbCByZXF1aXJlZCBwb3N0Y29uZGl0aW9u c1xuIgogCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAoTU9ERXM6IG5vLWhvb2ssIGZh aWwtYXN5bmMsIG5vLXRva2VuLCBuby1zb2NrZXQpXG4iKTsKIAlwcmludGYoIiAgLS1uby1ob29r ICAgICAgICAgICAgICAgZG9uJ3QgaW5zdGFsbCBPQXV0aCBob29rc1xuIik7CiAJcHJpbnRmKCIg IC0taGFuZy1mb3JldmVyICAgICAgICAgIGRvbid0IGV2ZXIgcmV0dXJuIGEgdG9rZW4gKGNvbWJp bmUgd2l0aCBjb25uZWN0X3RpbWVvdXQpXG4iKTsKIAlwcmludGYoIiAgLS10b2tlbiBUT0tFTiAg ICAgICAgICAgdXNlIHRoZSBwcm92aWRlZCBUT0tFTiB2YWx1ZVxuIik7CisJcHJpbnRmKCIgIC0t ZXJyb3IgRVJSTVNHICAgICAgICAgIGZhaWwgaW5zdGVhZCwgd2l0aCB0aGUgZ2l2ZW4gRVJSTVNH ICh2MiBvbmx5KVxuIik7CiAJcHJpbnRmKCIgIC0tc3RyZXNzLWFzeW5jICAgICAgICAgIGJ1c3kt bG9vcCBvbiBQUWNvbm5lY3RQb2xsIHJhdGhlciB0aGFuIHBvbGxpbmdcbiIpOwogfQogCkBAIC01 MSw5ICs1NSwxMiBAQCBzdGF0aWMgYm9vbCBub19ob29rID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBo YW5nX2ZvcmV2ZXIgPSBmYWxzZTsKIHN0YXRpYyBib29sIHN0cmVzc19hc3luYyA9IGZhbHNlOwog c3RhdGljIGNvbnN0IGNoYXIgKmV4cGVjdGVkX3VyaSA9IE5VTEw7CitzdGF0aWMgY29uc3QgY2hh ciAqZXhwZWN0ZWRfaXNzdWVyID0gTlVMTDsKIHN0YXRpYyBjb25zdCBjaGFyICpleHBlY3RlZF9z Y29wZSA9IE5VTEw7CiBzdGF0aWMgY29uc3QgY2hhciAqbWlzYmVoYXZlX21vZGUgPSBOVUxMOwog c3RhdGljIGNoYXIgKnRva2VuID0gTlVMTDsKK3N0YXRpYyBjaGFyICplcnJtc2cgPSBOVUxMOwor c3RhdGljIGludAlob29rX3ZlcnNpb24gPSBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTl9W MjsKIAogaW50CiBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCkBAIC02OCw2ICs3NSw4IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJeyJoYW5nLWZvcmV2ZXIiLCBub19hcmd1 bWVudCwgTlVMTCwgMTAwNH0sCiAJCXsibWlzYmVoYXZlIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5V TEwsIDEwMDV9LAogCQl7InN0cmVzcy1hc3luYyIsIG5vX2FyZ3VtZW50LCBOVUxMLCAxMDA2fSwK KwkJeyJleHBlY3RlZC1pc3N1ZXIiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMTAwN30sCisJ CXsiZXJyb3IiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMTAwOH0sCiAJCXswfQogCX07CiAK QEAgLTc1LDcgKzg0LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCVBHY29ubgkg ICAqY29ubjsKIAlpbnQJCQljOwogCi0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJn diwgImgiLCBsb25nX29wdGlvbnMsIE5VTEwpKSAhPSAtMSkKKwl3aGlsZSAoKGMgPSBnZXRvcHRf bG9uZyhhcmdjLCBhcmd2LCAiaHY6IiwgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEpCiAJewog CQlzd2l0Y2ggKGMpCiAJCXsKQEAgLTgzLDYgKzkyLDE4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAkJCQl1c2FnZShhcmd2KTsKIAkJCQlyZXR1cm4gMDsKIAorCQkJY2FzZSAndic6 CisJCQkJaWYgKHN0cmNtcChvcHRhcmcsICIxIikgPT0gMCkKKwkJCQkJaG9va192ZXJzaW9uID0g UFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU47CisJCQkJZWxzZSBpZiAoc3RyY21wKG9wdGFy ZywgIjIiKSA9PSAwKQorCQkJCQlob29rX3ZlcnNpb24gPSBQUUFVVEhEQVRBX09BVVRIX0JFQVJF Ul9UT0tFTl9WMjsKKwkJCQllbHNlCisJCQkJeworCQkJCQl1c2FnZShhcmd2KTsKKwkJCQkJcmV0 dXJuIDE7CisJCQkJfQorCQkJCWJyZWFrOworCiAJCQljYXNlIDEwMDA6CQkJLyogLS1leHBlY3Rl ZC1zY29wZSAqLwogCQkJCWV4cGVjdGVkX3Njb3BlID0gb3B0YXJnOwogCQkJCWJyZWFrOwpAQCAt MTExLDYgKzEzMiwxNCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJc3RyZXNz X2FzeW5jID0gdHJ1ZTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSAxMDA3OgkJCS8qIC0tZXhwZWN0 ZWQtaXNzdWVyICovCisJCQkJZXhwZWN0ZWRfaXNzdWVyID0gb3B0YXJnOworCQkJCWJyZWFrOwor CisJCQljYXNlIDEwMDg6CQkJLyogLS1lcnJvciAqLworCQkJCWVycm1zZyA9IG9wdGFyZzsKKwkJ CQlicmVhazsKKwogCQkJZGVmYXVsdDoKIAkJCQl1c2FnZShhcmd2KTsKIAkJCQlyZXR1cm4gMTsK QEAgLTE2NywxNiArMTk2LDI0IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogLyoK ICAqIFBRYXV0aERhdGFIb29rIGltcGxlbWVudGF0aW9uLiBSZXBsYWNlcyB0aGUgZGVmYXVsdCBj bGllbnQgZmxvdyBieSBoYW5kbGluZwotICogUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU4u CisgKiBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTltfVjJdLgogICovCiBzdGF0aWMgaW50 CiBoYW5kbGVfYXV0aF9kYXRhKFBHYXV0aERhdGEgdHlwZSwgUEdjb25uICpjb25uLCB2b2lkICpk YXRhKQogewotCVBHb2F1dGhCZWFyZXJSZXF1ZXN0ICpyZXEgPSBkYXRhOworCVBHb2F1dGhCZWFy ZXJSZXF1ZXN0ICpyZXE7CisJUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxMiA9IE5VTEw7CisK KwlBc3NlcnQoaG9va192ZXJzaW9uID09IFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOIHx8 CisJCSAgIGhvb2tfdmVyc2lvbiA9PSBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTl9WMik7 CiAKLQlpZiAobm9faG9vayB8fCAodHlwZSAhPSBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tF TikpCisJaWYgKG5vX2hvb2sgfHwgdHlwZSAhPSBob29rX3ZlcnNpb24pCiAJCXJldHVybiAwOwog CisJcmVxID0gZGF0YTsKKwlpZiAodHlwZSA9PSBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tF Tl9WMikKKwkJcmVxMiA9IGRhdGE7CisKIAlpZiAoaGFuZ19mb3JldmVyKQogCXsKIAkJLyogU3Rh cnQgYXN5bmNocm9ub3VzIHByb2Nlc3NpbmcuICovCkBAIC0yMjEsNiArMjU4LDQ0IEBAIGhhbmRs ZV9hdXRoX2RhdGEoUEdhdXRoRGF0YSB0eXBlLCBQR2Nvbm4gKmNvbm4sIHZvaWQgKmRhdGEpCiAJ CX0KIAl9CiAKKwlpZiAoZXhwZWN0ZWRfaXNzdWVyKQorCXsKKwkJaWYgKCFyZXEyKQorCQl7CisJ CQlmcHJpbnRmKHN0ZGVyciwgIi0tZXhwZWN0ZWQtaXNzdWVyIGNhbm5vdCBiZSBjb21iaW5lZCB3 aXRoIC12MVxuIik7CisJCQlyZXR1cm4gLTE7CisJCX0KKworCQlpZiAoIXJlcTItPmlzc3VlcikK KwkJeworCQkJZnByaW50ZihzdGRlcnIsICJleHBlY3RlZCBpc3N1ZXIgXCIlc1wiLCBnb3QgTlVM TFxuIiwgZXhwZWN0ZWRfaXNzdWVyKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCisJCWlmIChzdHJj bXAoZXhwZWN0ZWRfaXNzdWVyLCByZXEyLT5pc3N1ZXIpICE9IDApCisJCXsKKwkJCWZwcmludGYo c3RkZXJyLCAiZXhwZWN0ZWQgaXNzdWVyIFwiJXNcIiwgZ290IFwiJXNcIlxuIiwgZXhwZWN0ZWRf aXNzdWVyLCByZXEyLT5pc3N1ZXIpOworCQkJcmV0dXJuIC0xOworCQl9CisJfQorCisJaWYgKGVy cm1zZykKKwl7CisJCWlmICh0b2tlbikKKwkJeworCQkJZnByaW50ZihzdGRlcnIsICItLWVycm9y IGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIC0tdG9rZW5cbiIpOworCQkJcmV0dXJuIC0xOworCQl9 CisJCWVsc2UgaWYgKCFyZXEyKQorCQl7CisJCQlmcHJpbnRmKHN0ZGVyciwgIi0tZXJyb3IgY2Fu bm90IGJlIGNvbWJpbmVkIHdpdGggLXYxXG4iKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCisJCXJl cTItPmVycm9yID0gZXJybXNnOworCQlyZXR1cm4gLTE7CisJfQorCiAJcmVxLT50b2tlbiA9IHRv a2VuOwogCXJldHVybiAxOwogfQpAQCAtMjczLDYgKzM0OCwyMCBAQCBtaXNiZWhhdmVfY2IoUEdj b25uICpjb25uLCBQR29hdXRoQmVhcmVyUmVxdWVzdCAqcmVxLCBwZ3NvY2tldCAqYWx0c29jaykK IAlpZiAoc3RyY21wKG1pc2JlaGF2ZV9tb2RlLCAiZmFpbC1hc3luYyIpID09IDApCiAJewogCQkv KiBKdXN0IGZhaWwgIm5vcm1hbGx5Ii4gKi8KKwkJaWYgKGVycm1zZykKKwkJeworCQkJUEdvYXV0 aEJlYXJlclJlcXVlc3RWMiAqcmVxMjsKKworCQkJaWYgKGhvb2tfdmVyc2lvbiA9PSBQUUFVVEhE QVRBX09BVVRIX0JFQVJFUl9UT0tFTikKKwkJCXsKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIi0tZXJy b3IgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggLXYxXG4iKTsKKwkJCQlleGl0KDEpOworCQkJfQor CisJCQlyZXEyID0gKFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKikgcmVxOworCQkJcmVxMi0+ZXJy b3IgPSBlcnJtc2c7CisJCX0KKwogCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CiAJfQog CWVsc2UgaWYgKHN0cmNtcChtaXNiZWhhdmVfbW9kZSwgIm5vLXRva2VuIikgPT0gMCkKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL3QvMDAyX2NsaWVudC5wbCBi L3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL3QvMDAyX2NsaWVudC5wbAppbmRleCBk NjZjZDBiNGE1Zi4uMGJkNWNiYjk4NzQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvb2F1 dGhfdmFsaWRhdG9yL3QvMDAyX2NsaWVudC5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRo X3ZhbGlkYXRvci90LzAwMl9jbGllbnQucGwKQEAgLTc4LDkgKzc4LDkgQEAgc3ViIHRlc3QKIAlt eSAkbG9nX3N0YXJ0ID0gLXMgJG5vZGUtPmxvZ2ZpbGU7CiAJbXkgKCRzdGRvdXQsICRzdGRlcnIp ID0gcnVuX2NvbW1hbmQoXEBjbWQpOwogCi0JaWYgKGRlZmluZWQoJHBhcmFtc3tleHBlY3RlZF9z dGRvdXR9KSkKKwlpZiAoJHBhcmFtc3tleHBlY3Rfc3VjY2Vzc30pCiAJewotCQlsaWtlKCRzdGRv dXQsICRwYXJhbXN7ZXhwZWN0ZWRfc3Rkb3V0fSwgIiR0ZXN0X25hbWU6IHN0ZG91dCBtYXRjaGVz Iik7CisJCWxpa2UoJHN0ZG91dCwgcXIvY29ubmVjdGlvbiBzdWNjZWVkZWQvLCAiJHRlc3RfbmFt ZTogc3Rkb3V0IG1hdGNoZXMiKTsKIAl9CiAKIAlpZiAoZGVmaW5lZCgkcGFyYW1ze2V4cGVjdGVk X3N0ZGVycn0pKQpAQCAtMTEwLDExICsxMTAsMjQgQEAgdGVzdCgKIAlmbGFncyA9PiBbCiAJCSIt LXRva2VuIiwgIm15LXRva2VuIiwKIAkJIi0tZXhwZWN0ZWQtdXJpIiwgIiRpc3N1ZXIvLndlbGwt a25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb24iLAorCQkiLS1leHBlY3RlZC1pc3N1ZXIiLCAiJGlz c3VlciIsCiAJCSItLWV4cGVjdGVkLXNjb3BlIiwgJHNjb3BlLAogCV0sCi0JZXhwZWN0ZWRfc3Rk b3V0ID0+IHFyL2Nvbm5lY3Rpb24gc3VjY2VlZGVkLywKKwlleHBlY3Rfc3VjY2VzcyA9PiAxLAog CWxvZ19saWtlID0+IFtxci9vYXV0aF92YWxpZGF0b3I6IHRva2VuPSJteS10b2tlbiIsIHJvbGU9 IiR1c2VyIi9dKTsKIAorIyBNYWtlIHN1cmUgdGhlIHYxIGhvb2sgY29udGludWVzIHRvIHdvcmsu Cit0ZXN0KAorCSJ2MSBzeW5jaHJvbm91cyBob29rIGNhbiBwcm92aWRlIGEgdG9rZW4iLAorCWZs YWdzID0+IFsKKwkJIi12MSIsCisJCSItLXRva2VuIiA9PiAibXktdG9rZW4tdjEiLAorCQkiLS1l eHBlY3RlZC11cmkiID0+ICIkaXNzdWVyLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9u IiwKKwkJIi0tZXhwZWN0ZWQtc2NvcGUiID0+ICRzY29wZSwKKwldLAorCWV4cGVjdF9zdWNjZXNz ID0+IDEsCisJbG9nX2xpa2UgPT4gW3FyL29hdXRoX3ZhbGlkYXRvcjogdG9rZW49Im15LXRva2Vu LXYxIiwgcm9sZT0iJHVzZXIiL10pOworCiBpZiAoJEVOVnt3aXRoX2xpYmN1cmx9IG5lICd5ZXMn KQogewogCSMgbGlicHEgc2hvdWxkIGhlbHAgdXNlcnMgb3V0IGlmIG5vIE9BdXRoIHN1cHBvcnQg aXMgYnVpbHQgaW4uCkBAIC0xMjYsNiArMTM5LDE1IEBAIGlmICgkRU5We3dpdGhfbGliY3VybH0g bmUgJ3llcycpCiAJKTsKIH0KIAorIyB2MiBzeW5jaHJvbm91cyBmbG93cyBzaG91bGQgYmUgYWJs ZSB0byBzZXQgY3VzdG9tIGVycm9yIG1lc3NhZ2VzLgordGVzdCgKKwkiYmFzaWMgc3luY2hyb25v dXMgaG9vayBjYW4gc2V0IGVycm9yIG1lc3NhZ2VzIiwKKwlmbGFncyA9PiBbCisJCSItLWVycm9y IiA9PiAiYSBjdXN0b20gZXJyb3IgbWVzc2FnZSIsCisJXSwKKwlleHBlY3RlZF9zdGRlcnIgPT4K KwkgIHFyL3VzZXItZGVmaW5lZCBPQXV0aCBmbG93IGZhaWxlZDogYSBjdXN0b20gZXJyb3IgbWVz c2FnZS8pOworCiAjIGNvbm5lY3RfdGltZW91dCBzaG91bGQgd29yayBpZiB0aGUgZmxvdyBkb2Vz bid0IHJlc3BvbmQuCiAkY29tbW9uX2Nvbm5zdHIgPSAiJGNvbW1vbl9jb25uc3RyIGNvbm5lY3Rf dGltZW91dD0xIjsKIHRlc3QoCkBAIC0xNjMsNiArMTg1LDIxIEBAIGZvcmVhY2ggbXkgJGMgKEBj YXNlcykKIAkJImhvb2sgbWlzYmVoYXZpb3I6ICRjLT57J2ZsYWcnfSIsCiAJCWZsYWdzID0+IFsg JGMtPnsnZmxhZyd9IF0sCiAJCWV4cGVjdGVkX3N0ZGVyciA9PiAkYy0+eydleHBlY3RlZF9lcnJv cid9KTsKKworCXRlc3QoCisJCSJob29rIG1pc2JlaGF2aW9yOiAkYy0+eydmbGFnJ30gKHYxKSIs CisJCWZsYWdzID0+IFsgJy12MScsICRjLT57J2ZsYWcnfSBdLAorCQlleHBlY3RlZF9zdGRlcnIg PT4gJGMtPnsnZXhwZWN0ZWRfZXJyb3InfSk7CiB9CiAKKyMgdjIgYXN5bmMgZmxvd3Mgc2hvdWxk IGJlIGFibGUgdG8gc2V0IGVycm9yIG1lc3NhZ2VzLCB0b28uCit0ZXN0KAorCSJhc3luY2hyb25v dXMgaG9vayBjYW4gc2V0IGVycm9yIG1lc3NhZ2VzIiwKKwlmbGFncyA9PiBbCisJCSItLW1pc2Jl aGF2ZSIgPT4gImZhaWwtYXN5bmMiLAorCQkiLS1lcnJvciIgPT4gImFzeW5jIGVycm9yIG1lc3Nh Z2UiLAorCV0sCisJZXhwZWN0ZWRfc3RkZXJyID0+CisJICBxci91c2VyLWRlZmluZWQgT0F1dGgg ZmxvdyBmYWlsZWQ6IGFzeW5jIGVycm9yIG1lc3NhZ2UvKTsKKwogZG9uZV90ZXN0aW5nKCk7Ci0t IAoyLjM0LjEKCg== --000000000000bab6b3064c25f1fe Content-Type: application/octet-stream; name="v5-0004-libpq-oauth-Use-the-PGoauthBearerRequestV2-API.patch" Content-Disposition: attachment; filename="v5-0004-libpq-oauth-Use-the-PGoauthBearerRequestV2-API.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmb5rd9z4 RnJvbSBmYjk5MTU0MzdkYWI3NGE1NDQ5YzdmNzFhOGU4NmQ0MTA1MjY4NWYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVGh1LCAyMyBPY3QgMjAyNSAxMjoyNDoyMCAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjUgNC83XSBsaWJwcS1vYXV0aDogVXNlIHRoZSBQR29hdXRoQmVhcmVyUmVxdWVz dFYyIEFQSQoKU3dpdGNoIHRoZSBwcml2YXRlIGxpYnBxLW9hdXRoIEFCSSB0byB0aGUgcHVibGlj IFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIKQVBJLiBBIGh1Z2UgYW1vdW50IG9mIGdsdWUgY29kZSBj YW4gYmUgcmVtb3ZlZCBhcyBwYXJ0IG9mIHRoaXMsIGFuZCBzZXZlcmFsCmNvZGUgcGF0aHMgY2Fu IGJlIGRlZHVwbGljYXRlZC4gQWRkaXRpb25hbGx5LCB0aGUgc2hhcmVkIGxpYnJhcnkgbm8KbG9u Z2VyIG5lZWRzIHRvIGNoYW5nZSBpdHMgbmFtZSBmb3IgZXZlcnkgbWFqb3IgcmVsZWFzZTsgaXQn cyBub3cganVzdAoibGlicHEtb2F1dGguc28iLgoKUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2 YW4uY2hhb0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJy YWdpQHBlcmNvbmEuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBT1ltaSUy Qm1yR2clMkJuX1gyTU9MZ2VXY2ozdl9NMDBnUjh1el9EN21NOHolM0RkWDFKWVZiZyU0MG1haWwu Z21haWwuY29tCi0tLQogc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvUkVBRE1FICAgICAgICB8 ICA2NyArKy0tLQogc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvZXhwb3J0cy50eHQgICB8ICAg MyArLQogc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvbWVzb24uYnVpbGQgICB8ICAgNCArLQog c3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvTWFrZWZpbGUgICAgICB8ICAgOSArLQogc3JjL2lu dGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5oICB8ICAgNiArLQogc3JjL2ludGVyZmFj ZXMvbGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuaCB8ICA0MyArLS0KIHNyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLWF1dGgtb2F1dGguaCAgICAgfCAgIDcgKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9h dXRoL29hdXRoLWN1cmwuYyAgfCAzMzYgKysrKysrKysrKysrKystLS0tLS0tLS0KIHNyYy9pbnRl cmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmMgfCAgNzcgKy0tLS0tCiBzcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmMgICAgIHwgMTk4ICsrKysrKystLS0tLS0KIDEwIGZp bGVzIGNoYW5nZWQsIDMzNCBpbnNlcnRpb25zKCspLCA0MTYgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvUkVBRE1FIGIvc3JjL2ludGVyZmFjZXMv bGlicHEtb2F1dGgvUkVBRE1FCmluZGV4IDU1Mzk2MmQ2NDRlLi5hMjdhODIzOGQ0YiAxMDA2NDQK LS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvUkVBRE1FCisrKyBiL3NyYy9pbnRlcmZh Y2VzL2xpYnBxLW9hdXRoL1JFQURNRQpAQCAtMTAsNDggKzEwLDMzIEBAIHJlc3VsdHMgaW4gYSBm YWlsZWQgY29ubmVjdGlvbi4KIAogPSBMb2FkLVRpbWUgQUJJID0KIAotVGhpcyBtb2R1bGUgQUJJ IGlzIGFuIGludGVybmFsIGltcGxlbWVudGF0aW9uIGRldGFpbCwgc28gaXQncyBzdWJqZWN0IHRv IGNoYW5nZQotYWNyb3NzIG1ham9yIHJlbGVhc2VzOyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIChs aWJwcS1vYXV0aC1NQUpPUikgcmVmbGVjdHMgdGhpcy4KLVRoZSBtb2R1bGUgZXhwb3J0cyB0aGUg Zm9sbG93aW5nIHN5bWJvbHM6Ci0KLS0gUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZSBwZ19mZV9y dW5fb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pOwotLSB2b2lkIHBnX2ZlX2NsZWFudXBfb2F1dGhf ZmxvdyhQR2Nvbm4gKmNvbm4pOwotCi1wZ19mZV9ydW5fb2F1dGhfZmxvdyBhbmQgcGdfZmVfY2xl YW51cF9vYXV0aF9mbG93IGFyZSBpbXBsZW1lbnRhdGlvbnMgb2YKLWNvbm4tPmFzeW5jX2F1dGgg YW5kIGNvbm4tPmNsZWFudXBfYXN5bmNfYXV0aCwgcmVzcGVjdGl2ZWx5LgotCi1BdCB0aGUgbW9t ZW50LCBwZ19mZV9ydW5fb2F1dGhfZmxvdygpIHJlbGllcyBvbiBsaWJwcSdzIHBnX2dfdGhyZWFk bG9jayBhbmQKLWxpYnBxX2dldHRleHQoKSwgd2hpY2ggbXVzdCBiZSBpbmplY3RlZCBieSBsaWJw cSB1c2luZyB0aGlzIGluaXRpYWxpemF0aW9uCi1mdW5jdGlvbiBiZWZvcmUgdGhlIGZsb3cgaXMg cnVuOgotCi0tIHZvaWQgbGlicHFfb2F1dGhfaW5pdChwZ3RocmVhZGxvY2tfdCB0aHJlYWRsb2Nr LAotCQkJCQkJbGlicHFfZ2V0dGV4dF9mdW5jIGdldHRleHRfaW1wbCwKLQkJCQkJCWNvbm5fZXJy b3JNZXNzYWdlX2Z1bmMgZXJybXNnX2ltcGwsCi0JCQkJCQljb25uX29hdXRoX2NsaWVudF9pZF9m dW5jIGNsaWVudGlkX2ltcGwsCi0JCQkJCQljb25uX29hdXRoX2NsaWVudF9zZWNyZXRfZnVuYyBj bGllbnRzZWNyZXRfaW1wbCwKLQkJCQkJCWNvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaV9mdW5jIGRp c2NvdmVyeXVyaV9pbXBsLAotCQkJCQkJY29ubl9vYXV0aF9pc3N1ZXJfaWRfZnVuYyBpc3N1ZXJp ZF9pbXBsLAotCQkJCQkJY29ubl9vYXV0aF9zY29wZV9mdW5jIHNjb3BlX2ltcGwsCi0JCQkJCQlj b25uX3Nhc2xfc3RhdGVfZnVuYyBzYXNsc3RhdGVfaW1wbCwKLQkJCQkJCXNldF9jb25uX2FsdHNv Y2tfZnVuYyBzZXRhbHRzb2NrX2ltcGwsCi0JCQkJCQlzZXRfY29ubl9vYXV0aF90b2tlbl9mdW5j IHNldHRva2VuX2ltcGwpOwotCi1JdCBhbHNvIHJlbGllcyBvbiBhY2Nlc3MgdG8gc2V2ZXJhbCBt ZW1iZXJzIG9mIHRoZSBQR2Nvbm4gc3RydWN0LiBOb3Qgb25seSBjYW4KLXRoZXNlIGNoYW5nZSBw b3NpdGlvbnMgYWNyb3NzIG1pbm9yIHZlcnNpb25zLCBidXQgdGhlIG9mZnNldHMgYXJlbid0IG5l Y2Vzc2FyaWx5Ci1zdGFibGUgd2l0aGluIGEgc2luZ2xlIG1pbm9yIHJlbGVhc2UgKGNvbm4tPmVy cm9yTWVzc2FnZSwgZm9yIGluc3RhbmNlLCBjYW4KLWNoYW5nZSBvZmZzZXRzIGRlcGVuZGluZyBv biBjb25maWd1cmUtdGltZSBvcHRpb25zKS4gVGhlcmVmb3JlIHRoZSBuZWNlc3NhcnkKLWFjY2Vz c29ycyAobmFtZWQgY29ubl8qKSBhbmQgbXV0YXRvcnMgKHNldF9jb25uXyopIGFyZSBpbmplY3Rl ZCBoZXJlLiBXaXRoIHRoaXMKLWFwcHJvYWNoLCB3ZSBjYW4gc2FmZWx5IHNlYXJjaCB0aGUgc3Rh bmRhcmQgZGxvcGVuKCkgcGF0aHMgKGUuZy4gUlBBVEgsCi1MRF9MSUJSQVJZX1BBVEgsIHRoZSBT TyBjYWNoZSkgZm9yIGFuIGltcGxlbWVudGF0aW9uIG1vZHVsZSB0byB1c2UsIGV2ZW4gaWYgdGhh dAotbW9kdWxlIHdhc24ndCBjb21waWxlZCBhdCB0aGUgc2FtZSB0aW1lIGFzIGxpYnBxIC0tIHdo aWNoIGJlY29tZXMgZXNwZWNpYWxseQotaW1wb3J0YW50IGR1cmluZyAibGl2ZSB1cGdyYWRlIiBz aXR1YXRpb25zIHdoZXJlIGEgcnVubmluZyBsaWJwcSBhcHBsaWNhdGlvbiBoYXMKLXRoZSBsaWJw cS1vYXV0aCBtb2R1bGUgdXBkYXRlZCBvdXQgZnJvbSB1bmRlciBpdCBiZWZvcmUgaXQncyBmaXJz dCBsb2FkZWQgZnJvbQotZGlzay4KK0FzIG9mIHYxOSwgdGhpcyBtb2R1bGUgQUJJIGlzIHB1Ymxp YyBhbmQgY2Fubm90IGNoYW5nZSBpbmNvbXBhdGlibHkgd2l0aG91dCBhbHNvCitjaGFuZ2luZyB0 aGUgZW50cnkgcG9pbnRzLiBCb3RoIGxpYnBxIGFuZCBsaWJwcS1vYXV0aCBtdXN0IGdyYWNlZnVs bHkgaGFuZGxlCitzaXR1YXRpb25zIHdoZXJlIHRoZSBvdGhlciBsaWJyYXJ5IGlzIG9mIGEgZGlm ZmVyZW50IHJlbGVhc2UgdmVyc2lvbiwgcGFzdCBvcgorZnV0dXJlLCBzaW5jZSB1cGdyYWRlcyB0 byB0aGUgbGlicmFyaWVzIG1heSBoYXBwZW4gaW4gZWl0aGVyIG9yZGVyLgorCisoRG9uJ3QgYXNz dW1lIHRoYXQgcGFja2FnZSB2ZXJzaW9uIGRlcGVuZGVuY2llcyBmcm9tIGxpYnBxLW9hdXRoIHRv IGxpYnBxIHdpbGwKK3NpbXBsaWZ5IHRoZSBzaXR1YXRpb24hIFNpbmNlIGxpYnBxIGRlbGF5LWxv YWRzIGxpYnBxLW9hdXRoLCB3ZSBzdGlsbCBoYXZlIHRvCitoYW5kbGUgY2FzZXMgd2hlcmUgYSBs b25nLXJ1bm5pbmcgY2xpZW50IGFwcGxpY2F0aW9uIGhhcyBhIGxpYnBxIHRoYXQncyBvbGRlcgor dGhhbiBhIG5ld2x5IHVwZ3JhZGVkIHBsdWdpbi4pCisKK1RoZSBtb2R1bGUgZXhwb3J0cyB0aGUg Zm9sbG93aW5nIHN5bWJvbDoKKworLSBpbnQgcGdfc3RhcnRfb2F1dGhiZWFyZXIoUEdjb25uICpj b25uLCBQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1ZXN0KTsKKworVGhlIG1vZHVsZSB0aGVu IGJlaGF2ZXMgYXMgaWYgaXQgaGFkIHJlY2VpdmVkIGEgUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJf VE9LRU5fVjIKK3JlcXVlc3QgdmlhIHRoZSBQUWF1dGhEYXRhSG9vayBBUEksIGFuZCBpdCBlaXRo ZXIgZmlsbHMgaW4gYW4gZXhpc3RpbmcgdG9rZW4gb3IKK3BvcHVsYXRlcyB0aGUgbmVjZXNzYXJ5 IGNhbGxiYWNrcyBmb3IgYSB0b2tlbiB0byBiZSBvYnRhaW5lZCBhc3luY2hyb25vdXNseS4KKyhT ZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIFBHb2F1dGhCZWFyZXJSZXF1ZXN0LikgVGhlIGZ1bmN0 aW9uIHJldHVybnMgemVybyBvbgorc3VjY2VzcyBhbmQgbm9uemVybyBvbiBmYWlsdXJlLgorCitB ZGRpdGlvbmFsbHksIGxpYnBxLW9hdXRoIHJlbGllcyBvbiBsaWJwcSdzIGxpYnBxX2dldHRleHQo KSwgd2hpY2ggbXVzdCBiZQoraW5qZWN0ZWQgYnkgbGlicHEgdXNpbmcgdGhpcyBpbml0aWFsaXph dGlvbiBmdW5jdGlvbiBiZWZvcmUgdGhlIGZsb3cgaXMgcnVuOgorCistIHZvaWQgbGlicHFfb2F1 dGhfaW5pdChsaWJwcV9nZXR0ZXh0X2Z1bmMgZ2V0dGV4dF9pbXBsKTsKIAogPSBTdGF0aWMgQnVp bGQgPQogCiBUaGUgc3RhdGljIGxpYnJhcnkgbGlicHEuYSBkb2VzIG5vdCBwZXJmb3JtIGFueSBk eW5hbWljIGxvYWRpbmcuIElmIHRoZSBidWlsdGluCi1mbG93IGlzIGVuYWJsZWQsIHRoZSBhcHBs aWNhdGlvbiBpcyBleHBlY3RlZCB0byBsaW5rIGFnYWluc3QgbGlicHEtb2F1dGguYQotZGlyZWN0 bHkgdG8gcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IHN5bWJvbHMuIChsaWJwcS5hIGFuZCBsaWJwcS1v YXV0aC5hIG11c3QgYmUKLXBhcnQgb2YgdGhlIHNhbWUgYnVpbGQuIFVubGlrZSB0aGUgZHluYW1p YyBtb2R1bGUsIHRoZXJlIGFyZSBubyB0cmFuc2xhdGlvbgotc2hpbXMgcHJvdmlkZWQuKQorZmxv dyBpcyBlbmFibGVkLCB0aGUgYXBwbGljYXRpb24gaXMgZXhwZWN0ZWQgdG8gbGluayBhZ2FpbnN0 IGxpYnBxLW9hdXRoLmEgdG8KK3Byb3ZpZGUgdGhlIG5lY2Vzc2FyeSBzeW1ib2wsIG9yIGVsc2Ug aW1wbGVtZW50IHBnX3N0YXJ0X29hdXRoYmVhcmVyKCkgaXRzZWxmLgpkaWZmIC0tZ2l0IGEvc3Jj L2ludGVyZmFjZXMvbGlicHEtb2F1dGgvZXhwb3J0cy50eHQgYi9zcmMvaW50ZXJmYWNlcy9saWJw cS1vYXV0aC9leHBvcnRzLnR4dAppbmRleCA2ODkxYTgzZGJmOS4uN2JjMTJiODYwZDcgMTAwNjQ0 Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL2V4cG9ydHMudHh0CisrKyBiL3NyYy9p bnRlcmZhY2VzL2xpYnBxLW9hdXRoL2V4cG9ydHMudHh0CkBAIC0xLDQgKzEsMyBAQAogIyBzcmMv aW50ZXJmYWNlcy9saWJwcS1vYXV0aC9leHBvcnRzLnR4dAogbGlicHFfb2F1dGhfaW5pdCAgICAg ICAgICAxCi1wZ19mZV9ydW5fb2F1dGhfZmxvdyAgICAgIDIKLXBnX2ZlX2NsZWFudXBfb2F1dGhf ZmxvdyAgMworcGdfc3RhcnRfb2F1dGhiZWFyZXIgICAgICAyCmRpZmYgLS1naXQgYS9zcmMvaW50 ZXJmYWNlcy9saWJwcS1vYXV0aC9tZXNvbi5idWlsZCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9h dXRoL21lc29uLmJ1aWxkCmluZGV4IDI3YWNhMmJjMzI0Li42ODVhMDBhY2Y3YSAxMDA2NDQKLS0t IGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvbWVzb24uYnVpbGQKKysrIGIvc3JjL2ludGVy ZmFjZXMvbGlicHEtb2F1dGgvbWVzb24uYnVpbGQKQEAgLTM4LDEwICszOCw4IEBAIGVuZGlmCiAK ICMgVGhpcyBpcyBhbiBpbnRlcm5hbCBtb2R1bGU7IHdlIGRvbid0IHdhbnQgYW4gU09OQU1FIGFu ZCB0aGVyZWZvcmUgZG8gbm90IHNldAogIyBTT19NQUpPUl9WRVJTSU9OLgotbGlicHFfb2F1dGhf bmFtZSA9ICdsaWJwcS1vYXV0aC1AMEAnLmZvcm1hdChwZ192ZXJzaW9uX21ham9yKQotCiBpZiBi dWlsZF9zaGFyZWRfbGliCi1saWJwcV9vYXV0aF9zbyA9IHNoYXJlZF9tb2R1bGUobGlicHFfb2F1 dGhfbmFtZSwKK2xpYnBxX29hdXRoX3NvID0gc2hhcmVkX21vZHVsZSgnbGlicHEtb2F1dGgnLAog ICBsaWJwcV9vYXV0aF9zb3VyY2VzICsgbGlicHFfb2F1dGhfc29fc291cmNlcywKICAgaW5jbHVk ZV9kaXJlY3RvcmllczogW2xpYnBxX29hdXRoX2luYywgcG9zdGdyZXNfaW5jXSwKICAgY19hcmdz OiBsaWJwcV9vYXV0aF9zb19jX2FyZ3MsCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJw cS1vYXV0aC9NYWtlZmlsZSBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL01ha2VmaWxlCmlu ZGV4IGE1ZjJkNjVmY2FkLi5lOTA0ODI1NjZiMSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMv bGlicHEtb2F1dGgvTWFrZWZpbGUKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvTWFr ZWZpbGUKQEAgLTE2LDEzICsxNiwxMCBAQCBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFr ZWZpbGUuZ2xvYmFsCiBQR0ZJTEVERVNDID0gImxpYnBxLW9hdXRoIC0gZGV2aWNlIGF1dGhvcml6 YXRpb24gT0F1dGggc3VwcG9ydCIKIAogIyBUaGlzIGlzIGFuIGludGVybmFsIG1vZHVsZTsgd2Ug ZG9uJ3Qgd2FudCBhbiBTT05BTUUgYW5kIHRoZXJlZm9yZSBkbyBub3Qgc2V0Ci0jIFNPX01BSk9S X1ZFUlNJT04uCi1OQU1FID0gcHEtb2F1dGgtJChNQUpPUlZFUlNJT04pCi0KLSMgRm9yY2UgdGhl IG5hbWUgImxpYnBxLW9hdXRoIiBmb3IgYm90aCB0aGUgc3RhdGljIGFuZCBzaGFyZWQgbGlicmFy aWVzLiBUaGUKLSMgc3RhdGljbGliIGRvZXNuJ3QgbmVlZCB2ZXJzaW9uIGluZm9ybWF0aW9uIGlu IGl0cyBuYW1lLgorIyBTT19NQUpPUl9WRVJTSU9OLiBUaGlzIHJlcXVpcmVzIGFuIGV4cGxpY2l0 IG92ZXJyaWRlIGZvciB0aGUgc2hhcmVkIGxpYnJhcnkKKyMgbmFtZS4KK05BTUUgPSBwcS1vYXV0 aAogb3ZlcnJpZGUgc2hsaWIgOj0gbGliJChOQU1FKSQoRExTVUZGSVgpCi1vdmVycmlkZSBzdGxp YiA6PSBsaWJwcS1vYXV0aC5hCiAKIG92ZXJyaWRlIENQUEZMQUdTIDo9IC1JJChsaWJwcV9zcmNk aXIpIC1JJCh0b3BfYnVpbGRkaXIpL3NyYy9wb3J0ICQoQ1BQRkxBR1MpICQoTElCQ1VSTF9DUFBG TEFHUykKIG92ZXJyaWRlIENGTEFHUyArPSAkKFBUSFJFQURfQ0ZMQUdTKQpkaWZmIC0tZ2l0IGEv c3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5oIGIvc3JjL2ludGVyZmFjZXMv bGlicHEtb2F1dGgvb2F1dGgtY3VybC5oCmluZGV4IDY4NmU3YjRkZjNmLi4xZDRkZDc2NjIxNyAx MDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5oCisrKyBi L3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuaApAQCAtMTcsOCArMTcsOCBA QAogCiAjaW5jbHVkZSAibGlicHEtZmUuaCIKIAotLyogRXhwb3J0ZWQgYXN5bmMtYXV0aCBjYWxs YmFja3MuICovCi1leHRlcm4gUEdETExFWFBPUlQgUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZSBw Z19mZV9ydW5fb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pOwotZXh0ZXJuIFBHRExMRVhQT1JUIHZv aWQgcGdfZmVfY2xlYW51cF9vYXV0aF9mbG93KFBHY29ubiAqY29ubik7CisvKiBFeHBvcnRlZCBm bG93IGNhbGxiYWNrLiAqLworZXh0ZXJuIFBHRExMRVhQT1JUIGludCBwZ19zdGFydF9vYXV0aGJl YXJlcihQR2Nvbm4gKmNvbm4sCisJCQkJCQkJCQkJCVBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJl cXVlc3QpOwogCiAjZW5kaWYJCQkJCQkJLyogT0FVVEhfQ1VSTF9IICovCmRpZmYgLS1naXQgYS9z cmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC11dGlscy5oIGIvc3JjL2ludGVyZmFjZXMv bGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuaAppbmRleCA5ZjRkNWI2OTJkMi4uMjkzZTk5MzY5ODkg MTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmgKKysr IGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuaApAQCAtMTUsNTMgKzE1 LDEzIEBACiAjaWZuZGVmIE9BVVRIX1VUSUxTX0gKICNkZWZpbmUgT0FVVEhfVVRJTFNfSAogCi0j aW5jbHVkZSAiZmUtYXV0aC1vYXV0aC5oIgogI2luY2x1ZGUgImxpYnBxLWZlLmgiCiAjaW5jbHVk ZSAicHFleHBidWZmZXIuaCIKIAotLyoKLSAqIEEgYmFuayBvZiBjYWxsYmFja3MgdG8gc2FmZWx5 IGFjY2VzcyBtZW1iZXJzIG9mIFBHY29ubiwgd2hpY2ggYXJlIGFsbCBwYXNzZWQKLSAqIHRvIGxp YnBxX29hdXRoX2luaXQoKSBieSBsaWJwcS4KLSAqCi0gKiBLZWVwIHRoZXNlIGFsaWduZWQgd2l0 aCB0aGUgZGVmaW5pdGlvbnMgaW4gZmUtYXV0aC1vYXV0aC5jIGFzIHdlbGwgYXMgdGhlCi0gKiBz dGF0aWMgZGVjbGFyYXRpb25zIGluIG9hdXRoLWN1cmwuYy4KLSAqLwotI2RlZmluZSBERUNMQVJF X0dFVFRFUihUWVBFLCBNRU1CRVIpIFwKLQl0eXBlZGVmIFRZUEUgKCpjb25uXyAjIyBNRU1CRVIg IyMgX2Z1bmMpIChQR2Nvbm4gKmNvbm4pOyBcCi0JZXh0ZXJuIGNvbm5fICMjIE1FTUJFUiAjIyBf ZnVuYyBjb25uXyAjIyBNRU1CRVI7Ci0KLSNkZWZpbmUgREVDTEFSRV9TRVRURVIoVFlQRSwgTUVN QkVSKSBcCi0JdHlwZWRlZiB2b2lkICgqc2V0X2Nvbm5fICMjIE1FTUJFUiAjIyBfZnVuYykgKFBH Y29ubiAqY29ubiwgVFlQRSB2YWwpOyBcCi0JZXh0ZXJuIHNldF9jb25uXyAjIyBNRU1CRVIgIyMg X2Z1bmMgc2V0X2Nvbm5fICMjIE1FTUJFUjsKLQotREVDTEFSRV9HRVRURVIoUFFFeHBCdWZmZXIs IGVycm9yTWVzc2FnZSk7Ci1ERUNMQVJFX0dFVFRFUihjaGFyICosIG9hdXRoX2NsaWVudF9pZCk7 Ci1ERUNMQVJFX0dFVFRFUihjaGFyICosIG9hdXRoX2NsaWVudF9zZWNyZXQpOwotREVDTEFSRV9H RVRURVIoY2hhciAqLCBvYXV0aF9kaXNjb3ZlcnlfdXJpKTsKLURFQ0xBUkVfR0VUVEVSKGNoYXIg Kiwgb2F1dGhfaXNzdWVyX2lkKTsKLURFQ0xBUkVfR0VUVEVSKGNoYXIgKiwgb2F1dGhfc2NvcGUp OwotREVDTEFSRV9HRVRURVIoZmVfb2F1dGhfc3RhdGUgKiwgc2FzbF9zdGF0ZSk7Ci0KLURFQ0xB UkVfU0VUVEVSKHBnc29ja2V0LCBhbHRzb2NrKTsKLURFQ0xBUkVfU0VUVEVSKGNoYXIgKiwgb2F1 dGhfdG9rZW4pOwotCi0jdW5kZWYgREVDTEFSRV9HRVRURVIKLSN1bmRlZiBERUNMQVJFX1NFVFRF UgotCiB0eXBlZGVmIGNoYXIgKigqbGlicHFfZ2V0dGV4dF9mdW5jKSAoY29uc3QgY2hhciAqbXNn aWQpOwogCiAvKiBJbml0aWFsaXplcyBsaWJwcS1vYXV0aC4gKi8KLWV4dGVybiBQR0RMTEVYUE9S VCB2b2lkIGxpYnBxX29hdXRoX2luaXQocGd0aHJlYWRsb2NrX3QgdGhyZWFkbG9jaywKLQkJCQkJ CQkJCQkgbGlicHFfZ2V0dGV4dF9mdW5jIGdldHRleHRfaW1wbCwKLQkJCQkJCQkJCQkgY29ubl9l cnJvck1lc3NhZ2VfZnVuYyBlcnJtc2dfaW1wbCwKLQkJCQkJCQkJCQkgY29ubl9vYXV0aF9jbGll bnRfaWRfZnVuYyBjbGllbnRpZF9pbXBsLAotCQkJCQkJCQkJCSBjb25uX29hdXRoX2NsaWVudF9z ZWNyZXRfZnVuYyBjbGllbnRzZWNyZXRfaW1wbCwKLQkJCQkJCQkJCQkgY29ubl9vYXV0aF9kaXNj b3ZlcnlfdXJpX2Z1bmMgZGlzY292ZXJ5dXJpX2ltcGwsCi0JCQkJCQkJCQkJIGNvbm5fb2F1dGhf aXNzdWVyX2lkX2Z1bmMgaXNzdWVyaWRfaW1wbCwKLQkJCQkJCQkJCQkgY29ubl9vYXV0aF9zY29w ZV9mdW5jIHNjb3BlX2ltcGwsCi0JCQkJCQkJCQkJIGNvbm5fc2FzbF9zdGF0ZV9mdW5jIHNhc2xz dGF0ZV9pbXBsLAotCQkJCQkJCQkJCSBzZXRfY29ubl9hbHRzb2NrX2Z1bmMgc2V0YWx0c29ja19p bXBsLAotCQkJCQkJCQkJCSBzZXRfY29ubl9vYXV0aF90b2tlbl9mdW5jIHNldHRva2VuX2ltcGwp OworZXh0ZXJuIFBHRExMRVhQT1JUIHZvaWQgbGlicHFfb2F1dGhfaW5pdChsaWJwcV9nZXR0ZXh0 X2Z1bmMgZ2V0dGV4dF9pbXBsKTsKIAogLyoKICAqIER1cGxpY2F0ZWQgQVBJcywgY29waWVkIGZy b20gbGlicHEgKHByaW1hcmlseSBsaWJwcS1pbnQuaCwgd2hpY2ggd2UgY2Fubm90CkBAIC03NSw3 ICszNSw2IEBAIHR5cGVkZWYgZW51bQogCVBHX0JPT0xfTk8JCQkJCS8qIE5vIChmYWxzZSkgKi8K IH0gUEdUZXJuYXJ5Qm9vbDsKIAotZXh0ZXJuIHZvaWQgbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3Io UEdjb25uICpjb25uLCBjb25zdCBjaGFyICpmbXQsLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDIs IDMpOwogZXh0ZXJuIGJvb2wgb2F1dGhfdW5zYWZlX2RlYnVnZ2luZ19lbmFibGVkKHZvaWQpOwog ZXh0ZXJuIGludAlwcV9ibG9ja19zaWdwaXBlKHNpZ3NldF90ICpvc2lnc2V0LCBib29sICpzaWdw aXBlX3BlbmRpbmcpOwogZXh0ZXJuIHZvaWQgcHFfcmVzZXRfc2lncGlwZShzaWdzZXRfdCAqb3Np Z3NldCwgYm9vbCBzaWdwaXBlX3BlbmRpbmcsIGJvb2wgZ290X2VwaXBlKTsKZGlmZiAtLWdpdCBh L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguaCBiL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLWF1dGgtb2F1dGguaAppbmRleCA1YzhhMjRiNzZmYS4uNTExMjg0NjE0ZjcgMTAwNjQ0 Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguaAorKysgYi9zcmMvaW50 ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmgKQEAgLTI3LDExICsyNyw2IEBAIGVudW0gZmVf b2F1dGhfc3RlcAogCUZFX09BVVRIX1NFUlZFUl9FUlJPUiwKIH07CiAKLS8qCi0gKiBUaGlzIHN0 cnVjdCBpcyBleHBvcnRlZCB0byB0aGUgbGlicHEtb2F1dGggbW9kdWxlLiBJZiBjaGFuZ2VzIGFy ZSBuZWVkZWQKLSAqIGR1cmluZyBiYWNrcG9ydHMgdG8gc3RhYmxlIGJyYW5jaGVzLCBwbGVhc2Ug a2VlcCBBQkkgY29tcGF0aWJpbGl0eSAobm8KLSAqIGNoYW5nZXMgdG8gZXhpc3RpbmcgbWVtYmVy cywgYWRkIG5ldyBtZW1iZXJzIGF0IHRoZSBlbmQsIGV0Yy4pLgotICovCiB0eXBlZGVmIHN0cnVj dAogewogCWVudW0gZmVfb2F1dGhfc3RlcCBzdGVwOwpAQCAtMzksMTIgKzM0LDEyIEBAIHR5cGVk ZWYgc3RydWN0CiAJUEdjb25uCSAgICpjb25uOwogCXZvaWQJICAgKmFzeW5jX2N0eDsKIAorCWJv b2wJCWJ1aWx0aW47CiAJdm9pZAkgICAqYnVpbHRpbl9mbG93OwogfSBmZV9vYXV0aF9zdGF0ZTsK IAogZXh0ZXJuIHZvaWQgcHFDbGVhck9BdXRoVG9rZW4oUEdjb25uICpjb25uKTsKIGV4dGVybiBi b29sIG9hdXRoX3Vuc2FmZV9kZWJ1Z2dpbmdfZW5hYmxlZCh2b2lkKTsKLWV4dGVybiBib29sIHVz ZV9idWlsdGluX2Zsb3coUEdjb25uICpjb25uLCBmZV9vYXV0aF9zdGF0ZSAqc3RhdGUpOwogCiAv KiBNZWNoYW5pc21zIGluIGZlLWF1dGgtb2F1dGguYyAqLwogZXh0ZXJuIGNvbnN0IHBnX2ZlX3Nh c2xfbWVjaCBwZ19vYXV0aF9tZWNoOwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEt b2F1dGgvb2F1dGgtY3VybC5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3Vy bC5jCmluZGV4IDJjMTQ3Zjk4ZDBkLi4wNTJlY2QzMmRhMiAxMDA2NDQKLS0tIGEvc3JjL2ludGVy ZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx LW9hdXRoL29hdXRoLWN1cmwuYwpAQCAtMjksNyArMjksNiBAQAogI2VuZGlmCiAKICNpbmNsdWRl ICJjb21tb24vanNvbmFwaS5oIgotI2luY2x1ZGUgImZlLWF1dGgtb2F1dGguaCIKICNpbmNsdWRl ICJtYi9wZ193Y2hhci5oIgogI2luY2x1ZGUgIm9hdXRoLWN1cmwuaCIKIApAQCAtNDQsMjMgKzQz LDEwIEBACiAKICNlbHNlCQkJCQkJCS8qICFVU0VfRFlOQU1JQ19PQVVUSCAqLwogCi0vKgotICog U3RhdGljIGJ1aWxkcyBtYXkgcmVseSBvbiBQR2Nvbm4gb2Zmc2V0cyBkaXJlY3RseS4gS2VlcCB0 aGVzZSBhbGlnbmVkIHdpdGgKLSAqIHRoZSBiYW5rIG9mIGNhbGxiYWNrcyBpbiBvYXV0aC11dGls cy5oLgotICovCisvKiBTdGF0aWMgYnVpbGRzIG1heSBtYWtlIHVzZSBvZiBsaWJwcSBpbnRlcm5h bHMgZGlyZWN0bHkuICovCisjaW5jbHVkZSAiZmUtYXV0aC1vYXV0aC5oIgogI2luY2x1ZGUgImxp YnBxLWludC5oIgogCi0jZGVmaW5lIGNvbm5fZXJyb3JNZXNzYWdlKENPTk4pICgmQ09OTi0+ZXJy b3JNZXNzYWdlKQotI2RlZmluZSBjb25uX29hdXRoX2NsaWVudF9pZChDT05OKSAoQ09OTi0+b2F1 dGhfY2xpZW50X2lkKQotI2RlZmluZSBjb25uX29hdXRoX2NsaWVudF9zZWNyZXQoQ09OTikgKENP Tk4tPm9hdXRoX2NsaWVudF9zZWNyZXQpCi0jZGVmaW5lIGNvbm5fb2F1dGhfZGlzY292ZXJ5X3Vy aShDT05OKSAoQ09OTi0+b2F1dGhfZGlzY292ZXJ5X3VyaSkKLSNkZWZpbmUgY29ubl9vYXV0aF9p c3N1ZXJfaWQoQ09OTikgKENPTk4tPm9hdXRoX2lzc3Vlcl9pZCkKLSNkZWZpbmUgY29ubl9vYXV0 aF9zY29wZShDT05OKSAoQ09OTi0+b2F1dGhfc2NvcGUpCi0jZGVmaW5lIGNvbm5fc2FzbF9zdGF0 ZShDT05OKSAoQ09OTi0+c2FzbF9zdGF0ZSkKLQotI2RlZmluZSBzZXRfY29ubl9hbHRzb2NrKENP Tk4sIFZBTCkgZG8geyBDT05OLT5hbHRzb2NrID0gVkFMOyB9IHdoaWxlICgwKQotI2RlZmluZSBz ZXRfY29ubl9vYXV0aF90b2tlbihDT05OLCBWQUwpIGRvIHsgQ09OTi0+b2F1dGhfdG9rZW4gPSBW QUw7IH0gd2hpbGUgKDApCi0KICNlbmRpZgkJCQkJCQkvKiBVU0VfRFlOQU1JQ19PQVVUSCAqLwog CiAvKiBPbmUgZmluYWwgZ3VhcmRyYWlsIGFnYWluc3QgYWNjaWRlbnRhbCBpbmNsdXNpb24uLi4g Ki8KQEAgLTIyNyw2ICsyMTMsMTUgQEAgZW51bSBPQXV0aFN0ZXAKICAqLwogc3RydWN0IGFzeW5j X2N0eAogeworCS8qIHJlbGV2YW50IGNvbm5lY3Rpb24gb3B0aW9ucyBjYWNoZWQgZnJvbSB0aGUg UEdjb25uICovCisJY2hhcgkgICAqY2xpZW50X2lkOwkJLyogb2F1dGhfY2xpZW50X2lkICovCisJ Y2hhcgkgICAqY2xpZW50X3NlY3JldDsJLyogb2F1dGhfY2xpZW50X3NlY3JldCAobWF5IGJlIE5V TEwpICovCisKKwkvKiBvcHRpb25zIGNhY2hlZCBmcm9tIHRoZSBQR29hdXRoQmVhcmVyUmVxdWVz dCAod2UgZG9uJ3Qgb3duIHRoZXNlKSAqLworCWNvbnN0IGNoYXIgKmRpc2NvdmVyeV91cmk7CisJ Y29uc3QgY2hhciAqaXNzdWVyX2lkOworCWNvbnN0IGNoYXIgKnNjb3BlOworCiAJZW51bSBPQXV0 aFN0ZXAgc3RlcDsJCS8qIHdoZXJlIGFyZSB3ZSBpbiB0aGUgZmxvdz8gKi8KIAogCWludAkJCXRp bWVyZmQ7CQkvKiBkZXNjcmlwdG9yIGZvciBzaWduYWxpbmcgYXN5bmMgdGltZW91dHMgKi8KQEAg LTMzOSwyOSArMzM0LDcyIEBAIGZyZWVfYXN5bmNfY3R4KHN0cnVjdCBhc3luY19jdHggKmFjdHgp CiAJaWYgKGFjdHgtPnRpbWVyZmQgPj0gMCkKIAkJY2xvc2UoYWN0eC0+dGltZXJmZCk7CiAKKwlm cmVlKGFjdHgtPmNsaWVudF9pZCk7CisJZnJlZShhY3R4LT5jbGllbnRfc2VjcmV0KTsKKwogCWZy ZWUoYWN0eCk7CiB9CiAKIC8qCi0gKiBSZWxlYXNlIHJlc291cmNlcyB1c2VkIGZvciB0aGUgYXN5 bmNocm9ub3VzIGV4Y2hhbmdlIGFuZCBkaXNjb25uZWN0IHRoZQotICogYWx0c29jay4KLSAqCi0g KiBUaGlzIGlzIGNhbGxlZCBlaXRoZXIgYXQgdGhlIGVuZCBvZiBhIHN1Y2Nlc3NmdWwgYXV0aGVu dGljYXRpb24sIG9yIGR1cmluZwotICogcHFEcm9wQ29ubmVjdGlvbigpLCBzbyB3ZSB3b24ndCBs ZWFrIHJlc291cmNlcyBldmVuIGlmIFBRY29ubmVjdFBvbGwoKSBuZXZlcgotICogY2FsbHMgdXMg YmFjay4KKyAqIFJlbGVhc2UgcmVzb3VyY2VzIHVzZWQgZm9yIHRoZSBhc3luY2hyb25vdXMgZXhj aGFuZ2UuCiAgKi8KLXZvaWQKLXBnX2ZlX2NsZWFudXBfb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4p CitzdGF0aWMgdm9pZAorcGdfZmVfY2xlYW51cF9vYXV0aF9mbG93KFBHY29ubiAqY29ubiwgUEdv YXV0aEJlYXJlclJlcXVlc3QgKnJlcXVlc3QpCiB7Ci0JZmVfb2F1dGhfc3RhdGUgKnN0YXRlID0g Y29ubl9zYXNsX3N0YXRlKGNvbm4pOworCXN0cnVjdCBhc3luY19jdHggKmFjdHggPSByZXF1ZXN0 LT51c2VyOworCisJLyogcmVxdWVzdC0+Y2xlYW51cCBpcyBvbmx5IHNldCBhZnRlciBhY3R4IGhh cyBiZWVuIGFsbG9jYXRlZC4gKi8KKwlBc3NlcnQoYWN0eCk7CiAKLQlpZiAoc3RhdGUtPmFzeW5j X2N0eCkKKwlmcmVlX2FzeW5jX2N0eChhY3R4KTsKKwlyZXF1ZXN0LT51c2VyID0gTlVMTDsKKwor CS8qIGxpYnBxIGhhcyBtYWRlIGl0cyBvd24gY29weSBvZiB0aGUgdG9rZW47IGNsZWFyIG91cnMg bm93LiAqLworCWlmIChyZXF1ZXN0LT50b2tlbikKIAl7Ci0JCWZyZWVfYXN5bmNfY3R4KHN0YXRl LT5hc3luY19jdHgpOwotCQlzdGF0ZS0+YXN5bmNfY3R4ID0gTlVMTDsKKwkJZXhwbGljaXRfYnpl cm8ocmVxdWVzdC0+dG9rZW4sIHN0cmxlbihyZXF1ZXN0LT50b2tlbikpOworCQlmcmVlKHJlcXVl c3QtPnRva2VuKTsKKwkJcmVxdWVzdC0+dG9rZW4gPSBOVUxMOwogCX0KK30KIAotCXNldF9jb25u X2FsdHNvY2soY29ubiwgUEdJTlZBTElEX1NPQ0tFVCk7CisvKgorICogQnVpbGRzIGFuIGVycm9y IG1lc3NhZ2UgZnJvbSBhY3R4IGFuZCBzdG9yZXMgaXQgaW4gcmVxLT5lcnJvci4gVGhlIGFsbG9j YXRpb24KKyAqIGlzIGJhY2tlZCBieSBhY3R4LT53b3JrX2RhdGEgKHdoaWNoIHdpbGwgYmUgcmVz ZXQgZmlyc3QpLgorICovCitzdGF0aWMgdm9pZAorYXBwZW5kX2FjdHhfZXJyb3IoUEdvYXV0aEJl YXJlclJlcXVlc3RWMiAqcmVxLCBzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4KQoreworCVBRRXhwQnVm ZmVyIGVycmJ1ZiA9ICZhY3R4LT53b3JrX2RhdGE7CisKKwlyZXNldFBRRXhwQnVmZmVyKGVycmJ1 Zik7CisKKwkvKgorCSAqIEFzc2VtYmxlIHRoZSB0aHJlZSBwYXJ0cyBvZiBvdXIgZXJyb3I6IGNv bnRleHQsIGJvZHksIGFuZCBkZXRhaWwuIFNlZQorCSAqIGFsc28gdGhlIGRvY3VtZW50YXRpb24g Zm9yIHN0cnVjdCBhc3luY19jdHguCisJICovCisJaWYgKGFjdHgtPmVycmN0eCkKKwkJYXBwZW5k UFFFeHBCdWZmZXIoZXJyYnVmLCAiJXM6ICIsIGFjdHgtPmVycmN0eCk7CisKKwlpZiAoUFFFeHBC dWZmZXJEYXRhQnJva2VuKGFjdHgtPmVycmJ1ZikpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGVy cmJ1ZiwgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeSIpKTsKKwllbHNlCisJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKGVycmJ1ZiwgYWN0eC0+ZXJyYnVmLmRhdGEpOworCisJaWYgKGFjdHgtPmN1 cmxfZXJyWzBdKQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoZXJyYnVmLCAiIChsaWJjdXJsOiAl cykiLCBhY3R4LT5jdXJsX2Vycik7CisKKwkJLyogU29tZXRpbWVzIGxpYmN1cmwgYWRkcyBhIG5l d2xpbmUgdG8gdGhlIGVycm9yIGJ1ZmZlci4gOiggKi8KKwkJaWYgKGVycmJ1Zi0+bGVuID49IDIg JiYgZXJyYnVmLT5kYXRhW2VycmJ1Zi0+bGVuIC0gMl0gPT0gJ1xuJykKKwkJeworCQkJZXJyYnVm LT5kYXRhW2VycmJ1Zi0+bGVuIC0gMl0gPSAnKSc7CisJCQllcnJidWYtPmRhdGFbZXJyYnVmLT5s ZW4gLSAxXSA9ICdcMCc7CisJCQllcnJidWYtPmxlbi0tOworCQl9CisJfQorCisJcmVxLT5lcnJv ciA9IGVycmJ1Zi0+ZGF0YTsKIH0KIAogLyoKQEAgLTIxOTcsNyArMjIzNSw3IEBAIHN0YXRpYyBi b29sCiBjaGVja19pc3N1ZXIoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgUEdjb25uICpjb25uKQog ewogCWNvbnN0IHN0cnVjdCBwcm92aWRlciAqcHJvdmlkZXIgPSAmYWN0eC0+cHJvdmlkZXI7Ci0J Y29uc3QgY2hhciAqb2F1dGhfaXNzdWVyX2lkID0gY29ubl9vYXV0aF9pc3N1ZXJfaWQoY29ubik7 CisJY29uc3QgY2hhciAqb2F1dGhfaXNzdWVyX2lkID0gYWN0eC0+aXNzdWVyX2lkOwogCiAJQXNz ZXJ0KG9hdXRoX2lzc3Vlcl9pZCk7CS8qIGVuc3VyZWQgYnkgc2V0dXBfb2F1dGhfcGFyYW1ldGVy cygpICovCiAJQXNzZXJ0KHByb3ZpZGVyLT5pc3N1ZXIpOwkvKiBlbnN1cmVkIGJ5IHBhcnNlX3By b3ZpZGVyKCkgKi8KQEAgLTIzMDAsOCArMjMzOCw4IEBAIGNoZWNrX2Zvcl9kZXZpY2VfZmxvdyhz dHJ1Y3QgYXN5bmNfY3R4ICphY3R4KQogc3RhdGljIGJvb2wKIGFkZF9jbGllbnRfaWRlbnRpZmlj YXRpb24oc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgUFFFeHBCdWZmZXIgcmVxYm9keSwgUEdjb25u ICpjb25uKQogewotCWNvbnN0IGNoYXIgKm9hdXRoX2NsaWVudF9pZCA9IGNvbm5fb2F1dGhfY2xp ZW50X2lkKGNvbm4pOwotCWNvbnN0IGNoYXIgKm9hdXRoX2NsaWVudF9zZWNyZXQgPSBjb25uX29h dXRoX2NsaWVudF9zZWNyZXQoY29ubik7CisJY29uc3QgY2hhciAqb2F1dGhfY2xpZW50X2lkID0g YWN0eC0+Y2xpZW50X2lkOworCWNvbnN0IGNoYXIgKm9hdXRoX2NsaWVudF9zZWNyZXQgPSBhY3R4 LT5jbGllbnRfc2VjcmV0OwogCiAJYm9vbAkJc3VjY2VzcyA9IGZhbHNlOwogCWNoYXIJICAgKnVz ZXJuYW1lID0gTlVMTDsKQEAgLTIzODQsMTEgKzI0MjIsMTAgQEAgY2xlYW51cDoKIHN0YXRpYyBi b29sCiBzdGFydF9kZXZpY2VfYXV0aHooc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgUEdjb25uICpj b25uKQogewotCWNvbnN0IGNoYXIgKm9hdXRoX3Njb3BlID0gY29ubl9vYXV0aF9zY29wZShjb25u KTsKKwljb25zdCBjaGFyICpvYXV0aF9zY29wZSA9IGFjdHgtPnNjb3BlOwogCWNvbnN0IGNoYXIg KmRldmljZV9hdXRoel91cmkgPSBhY3R4LT5wcm92aWRlci5kZXZpY2VfYXV0aG9yaXphdGlvbl9l bmRwb2ludDsKIAlQUUV4cEJ1ZmZlciB3b3JrX2J1ZmZlciA9ICZhY3R4LT53b3JrX2RhdGE7CiAK LQlBc3NlcnQoY29ubl9vYXV0aF9jbGllbnRfaWQoY29ubikpOyAvKiBlbnN1cmVkIGJ5IHNldHVw X29hdXRoX3BhcmFtZXRlcnMoKSAqLwogCUFzc2VydChkZXZpY2VfYXV0aHpfdXJpKTsJLyogZW5z dXJlZCBieSBjaGVja19mb3JfZGV2aWNlX2Zsb3coKSAqLwogCiAJLyogQ29uc3RydWN0IG91ciBy ZXF1ZXN0IGJvZHkuICovCkBAIC0yNDc2LDcgKzI1MTMsNiBAQCBzdGFydF90b2tlbl9yZXF1ZXN0 KHN0cnVjdCBhc3luY19jdHggKmFjdHgsIFBHY29ubiAqY29ubikKIAljb25zdCBjaGFyICpkZXZp Y2VfY29kZSA9IGFjdHgtPmF1dGh6LmRldmljZV9jb2RlOwogCVBRRXhwQnVmZmVyIHdvcmtfYnVm ZmVyID0gJmFjdHgtPndvcmtfZGF0YTsKIAotCUFzc2VydChjb25uX29hdXRoX2NsaWVudF9pZChj b25uKSk7IC8qIGVuc3VyZWQgYnkgc2V0dXBfb2F1dGhfcGFyYW1ldGVycygpICovCiAJQXNzZXJ0 KHRva2VuX3VyaSk7CQkJLyogZW5zdXJlZCBieSBwYXJzZV9wcm92aWRlcigpICovCiAJQXNzZXJ0 KGRldmljZV9jb2RlKTsJCS8qIGVuc3VyZWQgYnkgcGFyc2VfZGV2aWNlX2F1dGh6KCkgKi8KIApA QCAtMjY1NSw3ICsyNjkxLDcgQEAgcHJvbXB0X3VzZXIoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwg UEdjb25uICpjb25uKQogICogZnVuY3Rpb24gd2lsbCBub3QgdHJ5IHRvIHJlaW5pdGlhbGl6ZSBD dXJsIG9uIHN1Y2Nlc3NpdmUgY2FsbHMuCiAgKi8KIHN0YXRpYyBib29sCi1pbml0aWFsaXplX2N1 cmwoUEdjb25uICpjb25uKQoraW5pdGlhbGl6ZV9jdXJsKFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIg KnJlcSkKIHsKIAkvKgogCSAqIERvbid0IGxldCB0aGUgY29tcGlsZXIgcGxheSB0cmlja3Mgd2l0 aCB0aGlzIHZhcmlhYmxlLiBJbiB0aGUKQEAgLTI2ODksOCArMjcyNSw3IEBAIGluaXRpYWxpemVf Y3VybChQR2Nvbm4gKmNvbm4pCiAJCWdvdG8gZG9uZTsKIAllbHNlIGlmIChpbml0X3N1Y2Nlc3Nm dWwgPT0gUEdfQk9PTF9OTykKIAl7Ci0JCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sCi0J CQkJCQkJCSJjdXJsX2dsb2JhbF9pbml0IHByZXZpb3VzbHkgZmFpbGVkIGR1cmluZyBPQXV0aCBz ZXR1cCIpOworCQlyZXEtPmVycm9yID0gbGlicHFfZ2V0dGV4dCgiY3VybF9nbG9iYWxfaW5pdCBw cmV2aW91c2x5IGZhaWxlZCBkdXJpbmcgT0F1dGggc2V0dXAiKTsKIAkJZ290byBkb25lOwogCX0K IApAQCAtMjcwOCw4ICsyNzQzLDcgQEAgaW5pdGlhbGl6ZV9jdXJsKFBHY29ubiAqY29ubikKIAkg Ki8KIAlpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwgJiB+Q1VSTF9HTE9CQUxf V0lOMzIpICE9IENVUkxFX09LKQogCXsKLQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwK LQkJCQkJCQkJImN1cmxfZ2xvYmFsX2luaXQgZmFpbGVkIGR1cmluZyBPQXV0aCBzZXR1cCIpOwor CQlyZXEtPmVycm9yID0gbGlicHFfZ2V0dGV4dCgiY3VybF9nbG9iYWxfaW5pdCBmYWlsZWQgZHVy aW5nIE9BdXRoIHNldHVwIik7CiAJCWluaXRfc3VjY2Vzc2Z1bCA9IFBHX0JPT0xfTk87CiAJCWdv dG8gZG9uZTsKIAl9CkBAIC0yNzMwLDExICsyNzY0LDExIEBAIGluaXRpYWxpemVfY3VybChQR2Nv bm4gKmNvbm4pCiAJCSAqIEluIGEgZG93bmdyYWRlIHNpdHVhdGlvbiwgdGhlIGRhbWFnZSBpcyBh bHJlYWR5IGRvbmUuIEN1cmwgZ2xvYmFsCiAJCSAqIHN0YXRlIG1heSBiZSBjb3JydXB0ZWQuIEJl IG5vaXN5LgogCQkgKi8KLQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImxpYmN1cmwg aXMgbm8gbG9uZ2VyIHRocmVhZC1zYWZlXG4iCi0JCQkJCQkJCSJcdEN1cmwgaW5pdGlhbGl6YXRp b24gd2FzIHJlcG9ydGVkIHRocmVhZC1zYWZlIHdoZW4gbGlicHFcbiIKLQkJCQkJCQkJIlx0d2Fz IGNvbXBpbGVkLCBidXQgdGhlIGN1cnJlbnRseSBpbnN0YWxsZWQgdmVyc2lvbiBvZlxuIgotCQkJ CQkJCQkiXHRsaWJjdXJsIHJlcG9ydHMgdGhhdCBpdCBpcyBub3QuIFJlY29tcGlsZSBsaWJwcSBh Z2FpbnN0XG4iCi0JCQkJCQkJCSJcdHRoZSBpbnN0YWxsZWQgdmVyc2lvbiBvZiBsaWJjdXJsLiIp OworCQlyZXEtPmVycm9yID0gbGlicHFfZ2V0dGV4dCgibGliY3VybCBpcyBubyBsb25nZXIgdGhy ZWFkLXNhZmVcbiIKKwkJCQkJCQkJICAgIlx0Q3VybCBpbml0aWFsaXphdGlvbiB3YXMgcmVwb3J0 ZWQgdGhyZWFkLXNhZmUgd2hlbiBsaWJwcVxuIgorCQkJCQkJCQkgICAiXHR3YXMgY29tcGlsZWQs IGJ1dCB0aGUgY3VycmVudGx5IGluc3RhbGxlZCB2ZXJzaW9uIG9mXG4iCisJCQkJCQkJCSAgICJc dGxpYmN1cmwgcmVwb3J0cyB0aGF0IGl0IGlzIG5vdC4gUmVjb21waWxlIGxpYnBxIGFnYWluc3Rc biIKKwkJCQkJCQkJICAgIlx0dGhlIGluc3RhbGxlZCB2ZXJzaW9uIG9mIGxpYmN1cmwuIik7CiAJ CWluaXRfc3VjY2Vzc2Z1bCA9IFBHX0JPT0xfTk87CiAJCWdvdG8gZG9uZTsKIAl9CkBAIC0yNzY0 LDU0ICsyNzk4LDE2IEBAIGRvbmU6CiAgKiBwcm92aWRlci4KICAqLwogc3RhdGljIFBvc3RncmVz UG9sbGluZ1N0YXR1c1R5cGUKLXBnX2ZlX3J1bl9vYXV0aF9mbG93X2ltcGwoUEdjb25uICpjb25u KQorcGdfZmVfcnVuX29hdXRoX2Zsb3dfaW1wbChQR2Nvbm4gKmNvbm4sIFBHb2F1dGhCZWFyZXJS ZXF1ZXN0VjIgKnJlcXVlc3QsCisJCQkJCQkgIGludCAqYWx0c29jaykKIHsKLQlmZV9vYXV0aF9z dGF0ZSAqc3RhdGUgPSBjb25uX3Nhc2xfc3RhdGUoY29ubik7Ci0Jc3RydWN0IGFzeW5jX2N0eCAq YWN0eDsKKwlzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4ID0gcmVxdWVzdC0+djEudXNlcjsKIAljaGFy CSAgICpvYXV0aF90b2tlbiA9IE5VTEw7Ci0JUFFFeHBCdWZmZXIgZXJyYnVmOwotCi0JaWYgKCFp bml0aWFsaXplX2N1cmwoY29ubikpCi0JCXJldHVybiBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKLQot CWlmICghc3RhdGUtPmFzeW5jX2N0eCkKLQl7Ci0JCS8qCi0JCSAqIENyZWF0ZSBvdXIgYXN5bmNo cm9ub3VzIHN0YXRlLCBhbmQgaG9vayBpdCBpbnRvIHRoZSB1cHBlci1sZXZlbAotCQkgKiBPQXV0 aCBzdGF0ZSBpbW1lZGlhdGVseSwgc28gYW55IGZhaWx1cmVzIGJlbG93IHdvbid0IGxlYWsgdGhl Ci0JCSAqIGNvbnRleHQgYWxsb2NhdGlvbi4KLQkJICovCi0JCWFjdHggPSBjYWxsb2MoMSwgc2l6 ZW9mKCphY3R4KSk7Ci0JCWlmICghYWN0eCkKLQkJewotCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJy b3IoY29ubiwgIm91dCBvZiBtZW1vcnkiKTsKLQkJCXJldHVybiBQR1JFU19QT0xMSU5HX0ZBSUxF RDsKLQkJfQotCi0JCWFjdHgtPm11eCA9IFBHSU5WQUxJRF9TT0NLRVQ7Ci0JCWFjdHgtPnRpbWVy ZmQgPSAtMTsKLQotCQkvKiBTaG91bGQgd2UgZW5hYmxlIHVuc2FmZSBmZWF0dXJlcz8gKi8KLQkJ YWN0eC0+ZGVidWdnaW5nID0gb2F1dGhfdW5zYWZlX2RlYnVnZ2luZ19lbmFibGVkKCk7Ci0KLQkJ c3RhdGUtPmFzeW5jX2N0eCA9IGFjdHg7Ci0KLQkJaW5pdFBRRXhwQnVmZmVyKCZhY3R4LT53b3Jr X2RhdGEpOwotCQlpbml0UFFFeHBCdWZmZXIoJmFjdHgtPmVycmJ1Zik7Ci0KLQkJaWYgKCFzZXR1 cF9tdWx0aXBsZXhlcihhY3R4KSkKLQkJCWdvdG8gZXJyb3JfcmV0dXJuOwotCi0JCWlmICghc2V0 dXBfY3VybF9oYW5kbGVzKGFjdHgpKQotCQkJZ290byBlcnJvcl9yZXR1cm47Ci0JfQotCi0JYWN0 eCA9IHN0YXRlLT5hc3luY19jdHg7CiAKIAlkbwogCXsKIAkJLyogQnkgZGVmYXVsdCwgdGhlIG11 bHRpcGxleGVyIGlzIHRoZSBhbHRzb2NrLiBSZWFzc2lnbiBhcyBkZXNpcmVkLiAqLwotCQlzZXRf Y29ubl9hbHRzb2NrKGNvbm4sIGFjdHgtPm11eCk7CisJCSphbHRzb2NrID0gYWN0eC0+bXV4Owog CiAJCXN3aXRjaCAoYWN0eC0+c3RlcCkKIAkJewpAQCAtMjg3Niw3ICsyODcyLDcgQEAgcGdfZmVf cnVuX29hdXRoX2Zsb3dfaW1wbChQR2Nvbm4gKmNvbm4pCiAKIAkJCQkJaWYgKCFleHBpcmVkKQog CQkJCQl7Ci0JCQkJCQlzZXRfY29ubl9hbHRzb2NrKGNvbm4sIGFjdHgtPnRpbWVyZmQpOworCQkJ CQkJKmFsdHNvY2sgPSBhY3R4LT50aW1lcmZkOwogCQkJCQkJcmV0dXJuIFBHUkVTX1BPTExJTkdf UkVBRElORzsKIAkJCQkJfQogCkBAIC0yODkzLDcgKzI4ODksNyBAQCBwZ19mZV9ydW5fb2F1dGhf Zmxvd19pbXBsKFBHY29ubiAqY29ubikKIAkJewogCQkJY2FzZSBPQVVUSF9TVEVQX0lOSVQ6CiAJ CQkJYWN0eC0+ZXJyY3R4ID0gbGlicHFfZ2V0dGV4dCgiZmFpbGVkIHRvIGZldGNoIE9wZW5JRCBk aXNjb3ZlcnkgZG9jdW1lbnQiKTsKLQkJCQlpZiAoIXN0YXJ0X2Rpc2NvdmVyeShhY3R4LCBjb25u X29hdXRoX2Rpc2NvdmVyeV91cmkoY29ubikpKQorCQkJCWlmICghc3RhcnRfZGlzY292ZXJ5KGFj dHgsIGFjdHgtPmRpc2NvdmVyeV91cmkpKQogCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAogCQkJ CWFjdHgtPnN0ZXAgPSBPQVVUSF9TVEVQX0RJU0NPVkVSWTsKQEAgLTI5MzMsMTAgKzI5MjksMTAg QEAgcGdfZmVfcnVuX29hdXRoX2Zsb3dfaW1wbChQR2Nvbm4gKmNvbm4pCiAJCQkJCWdvdG8gZXJy b3JfcmV0dXJuOwogCiAJCQkJLyoKLQkJCQkgKiBIb29rIGFueSBvYXV0aF90b2tlbiBpbnRvIHRo ZSBQR2Nvbm4gaW1tZWRpYXRlbHkgc28gdGhhdAotCQkJCSAqIHRoZSBhbGxvY2F0aW9uIGlzbid0 IGxvc3QgaW4gY2FzZSBvZiBhbiBlcnJvci4KKwkJCQkgKiBIb29rIGFueSBvYXV0aF90b2tlbiBp bnRvIHRoZSByZXF1ZXN0IHN0cnVjdCBpbW1lZGlhdGVseSBzbworCQkJCSAqIHRoYXQgdGhlIGFs bG9jYXRpb24gaXNuJ3QgbG9zdCBpbiBjYXNlIG9mIGFuIGVycm9yLgogCQkJCSAqLwotCQkJCXNl dF9jb25uX29hdXRoX3Rva2VuKGNvbm4sIG9hdXRoX3Rva2VuKTsKKwkJCQlyZXF1ZXN0LT52MS50 b2tlbiA9IG9hdXRoX3Rva2VuOwogCiAJCQkJaWYgKCFhY3R4LT51c2VyX3Byb21wdGVkKQogCQkJ CXsKQEAgLTI5NjUsNyArMjk2MSw3IEBAIHBnX2ZlX3J1bl9vYXV0aF9mbG93X2ltcGwoUEdjb25u ICpjb25uKQogCQkJCSAqIHRoZSBjbGllbnQgd2FpdCBkaXJlY3RseSBvbiB0aGUgdGltZXJmZCBy YXRoZXIgdGhhbiB0aGUKIAkJCQkgKiBtdWx0aXBsZXhlci4KIAkJCQkgKi8KLQkJCQlzZXRfY29u bl9hbHRzb2NrKGNvbm4sIGFjdHgtPnRpbWVyZmQpOworCQkJCSphbHRzb2NrID0gYWN0eC0+dGlt ZXJmZDsKIAogCQkJCWFjdHgtPnN0ZXAgPSBPQVVUSF9TVEVQX1dBSVRfSU5URVJWQUw7CiAJCQkJ YWN0eC0+cnVubmluZyA9IDE7CkBAIC0yOTkxLDQ4ICsyOTg3LDIxIEBAIHBnX2ZlX3J1bl9vYXV0 aF9mbG93X2ltcGwoUEdjb25uICpjb25uKQogCXJldHVybiBvYXV0aF90b2tlbiA/IFBHUkVTX1BP TExJTkdfT0sgOiBQR1JFU19QT0xMSU5HX1JFQURJTkc7CiAKIGVycm9yX3JldHVybjoKLQllcnJi dWYgPSBjb25uX2Vycm9yTWVzc2FnZShjb25uKTsKLQotCS8qCi0JICogQXNzZW1ibGUgdGhlIHRo cmVlIHBhcnRzIG9mIG91ciBlcnJvcjogY29udGV4dCwgYm9keSwgYW5kIGRldGFpbC4gU2VlCi0J ICogYWxzbyB0aGUgZG9jdW1lbnRhdGlvbiBmb3Igc3RydWN0IGFzeW5jX2N0eC4KLQkgKi8KLQlp ZiAoYWN0eC0+ZXJyY3R4KQotCQlhcHBlbmRQUUV4cEJ1ZmZlcihlcnJidWYsICIlczogIiwgYWN0 eC0+ZXJyY3R4KTsKLQotCWlmIChQUUV4cEJ1ZmZlckRhdGFCcm9rZW4oYWN0eC0+ZXJyYnVmKSkK LQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoZXJyYnVmLCBsaWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVt b3J5IikpOwotCWVsc2UKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoZXJyYnVmLCBhY3R4LT5lcnJi dWYuZGF0YSk7Ci0KLQlpZiAoYWN0eC0+Y3VybF9lcnJbMF0pCi0JewotCQlhcHBlbmRQUUV4cEJ1 ZmZlcihlcnJidWYsICIgKGxpYmN1cmw6ICVzKSIsIGFjdHgtPmN1cmxfZXJyKTsKLQotCQkvKiBT b21ldGltZXMgbGliY3VybCBhZGRzIGEgbmV3bGluZSB0byB0aGUgZXJyb3IgYnVmZmVyLiA6KCAq LwotCQlpZiAoZXJyYnVmLT5sZW4gPj0gMiAmJiBlcnJidWYtPmRhdGFbZXJyYnVmLT5sZW4gLSAy XSA9PSAnXG4nKQotCQl7Ci0JCQllcnJidWYtPmRhdGFbZXJyYnVmLT5sZW4gLSAyXSA9ICcpJzsK LQkJCWVycmJ1Zi0+ZGF0YVtlcnJidWYtPmxlbiAtIDFdID0gJ1wwJzsKLQkJCWVycmJ1Zi0+bGVu LS07Ci0JCX0KLQl9Ci0KLQlhcHBlbmRQUUV4cEJ1ZmZlckNoYXIoZXJyYnVmLCAnXG4nKTsKKwlh cHBlbmRfYWN0eF9lcnJvcihyZXF1ZXN0LCBhY3R4KTsKIAogCXJldHVybiBQR1JFU19QT0xMSU5H X0ZBSUxFRDsKIH0KIAogLyoKLSAqIFRoZSB0b3AtbGV2ZWwgZW50cnkgcG9pbnQuIFRoaXMgaXMg YSBjb252ZW5pZW50IHBsYWNlIHRvIHB1dCBuZWNlc3NhcnkKLSAqIHdyYXBwZXIgbG9naWMgYmVm b3JlIGhhbmRpbmcgb2ZmIHRvIHRoZSB0cnVlIGltcGxlbWVudGF0aW9uLCBhYm92ZS4KKyAqIFRo ZSB0b3AtbGV2ZWwgZW50cnkgcG9pbnQgZm9yIHRoZSBmbG93LiBUaGlzIGlzIGEgY29udmVuaWVu dCBwbGFjZSB0byBwdXQKKyAqIG5lY2Vzc2FyeSB3cmFwcGVyIGxvZ2ljIGJlZm9yZSBoYW5kaW5n IG9mZiB0byB0aGUgdHJ1ZSBpbXBsZW1lbnRhdGlvbiwgYWJvdmUuCiAgKi8KLVBvc3RncmVzUG9s bGluZ1N0YXR1c1R5cGUKLXBnX2ZlX3J1bl9vYXV0aF9mbG93KFBHY29ubiAqY29ubikKK3N0YXRp YyBQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlCitwZ19mZV9ydW5fb2F1dGhfZmxvdyhQR2Nvbm4g KmNvbm4sIHN0cnVjdCBQR29hdXRoQmVhcmVyUmVxdWVzdCAqcmVxdWVzdCwKKwkJCQkJIGludCAq YWx0c29jaykKIHsKIAlQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlIHJlc3VsdDsKLQlmZV9vYXV0 aF9zdGF0ZSAqc3RhdGUgPSBjb25uX3Nhc2xfc3RhdGUoY29ubik7Ci0Jc3RydWN0IGFzeW5jX2N0 eCAqYWN0eDsKKwlzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4ID0gcmVxdWVzdC0+dXNlcjsKICNpZm5k ZWYgV0lOMzIKIAlzaWdzZXRfdAlvc2lnc2V0OwogCWJvb2wJCXNpZ3BpcGVfcGVuZGluZzsKQEAg LTMwNTksMjAgKzMwMjgsMTYgQEAgcGdfZmVfcnVuX29hdXRoX2Zsb3coUEdjb25uICpjb25uKQog CW1hc2tlZCA9IChwcV9ibG9ja19zaWdwaXBlKCZvc2lnc2V0LCAmc2lncGlwZV9wZW5kaW5nKSA9 PSAwKTsKICNlbmRpZgogCi0JcmVzdWx0ID0gcGdfZmVfcnVuX29hdXRoX2Zsb3dfaW1wbChjb25u KTsKKwlyZXN1bHQgPSBwZ19mZV9ydW5fb2F1dGhfZmxvd19pbXBsKGNvbm4sCisJCQkJCQkJCQkg ICAoUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqKSByZXF1ZXN0LAorCQkJCQkJCQkJICAgYWx0c29j ayk7CiAKIAkvKgogCSAqIFRvIGFzc2lzdCB3aXRoIGZpbmRpbmcgYnVncyBpbiBjb21iX211bHRp cGxleGVyKCkgYW5kCiAJICogZHJhaW5fdGltZXJfZXZlbnRzKCksIHdoZW4gd2UncmUgaW4gZGVi dWcgbW9kZSwgdHJhY2sgdGhlIHRvdGFsIG51bWJlcgogCSAqIG9mIGNhbGxzIHRvIHRoaXMgZnVu Y3Rpb24gYW5kIHByaW50IHRoYXQgYXQgdGhlIGVuZCBvZiB0aGUgZmxvdy4KLQkgKgotCSAqIEJl IGNhcmVmdWwgdGhhdCBzdGF0ZS0+YXN5bmNfY3R4IGNvdWxkIGJlIE5VTEwgaWYgZWFybHkgaW5p dGlhbGl6YXRpb24KLQkgKiBmYWlscyBkdXJpbmcgdGhlIGZpcnN0IGNhbGwuCiAJICovCi0JYWN0 eCA9IHN0YXRlLT5hc3luY19jdHg7Ci0JQXNzZXJ0KGFjdHggfHwgcmVzdWx0ID09IFBHUkVTX1BP TExJTkdfRkFJTEVEKTsKLQotCWlmIChhY3R4ICYmIGFjdHgtPmRlYnVnZ2luZykKKwlpZiAoYWN0 eC0+ZGVidWdnaW5nKQogCXsKIAkJYWN0eC0+ZGJnX251bV9jYWxscysrOwogCQlpZiAocmVzdWx0 ID09IFBHUkVTX1BPTExJTkdfT0sgfHwgcmVzdWx0ID09IFBHUkVTX1BPTExJTkdfRkFJTEVEKQpA QCAtMzA5MywzICszMDU4LDEwNCBAQCBwZ19mZV9ydW5fb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4p CiAKIAlyZXR1cm4gcmVzdWx0OwogfQorCisvKgorICogQ2FsbGJhY2sgcmVnaXN0cmF0aW9uIGZv ciBPQVVUSEJFQVJFUi4gbGlicHEgY2FsbHMgdGhpcyBvbmNlIHBlciBPQXV0aAorICogY29ubmVj dGlvbi4KKyAqLworaW50CitwZ19zdGFydF9vYXV0aGJlYXJlcihQR2Nvbm4gKmNvbm4sIFBHb2F1 dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcXVlc3QpCit7CisJc3RydWN0IGFzeW5jX2N0eCAqYWN0eDsK KwlQUWNvbm5pbmZvT3B0aW9uICpjb25uaW5mbyA9IE5VTEw7CisKKwlpZiAoIWluaXRpYWxpemVf Y3VybChyZXF1ZXN0KSkKKwkJcmV0dXJuIC0xOworCisJLyoKKwkgKiBDcmVhdGUgb3VyIGFzeW5j aHJvbm91cyBzdGF0ZSwgYW5kIGhvb2sgaXQgaW50byB0aGUgdXBwZXItbGV2ZWwgT0F1dGgKKwkg KiBzdGF0ZSBpbW1lZGlhdGVseSwgc28gYW55IGZhaWx1cmVzIGJlbG93IHdvbid0IGxlYWsgdGhl IGNvbnRleHQKKwkgKiBhbGxvY2F0aW9uLgorCSAqLworCWFjdHggPSBjYWxsb2MoMSwgc2l6ZW9m KCphY3R4KSk7CisJaWYgKCFhY3R4KQorCQlnb3RvIG9vbTsKKworCWFjdHgtPm11eCA9IFBHSU5W QUxJRF9TT0NLRVQ7CisJYWN0eC0+dGltZXJmZCA9IC0xOworCisJLyoKKwkgKiBOb3cgd2UgaGF2 ZSBhIHZhbGlkIChidXQgc3RpbGwgdXNlbGVzcykgYWN0eCwgc28gd2UgY2FuIGZpbGwgaW4gdGhl CisJICogcmVxdWVzdCBvYmplY3QuIEZyb20gdGhpcyBwb2ludCBvbndhcmQsIGZhaWx1cmVzIHdp bGwgcmVzdWx0IGluIGEgY2FsbAorCSAqIHRvIHBnX2ZlX2NsZWFudXBfb2F1dGhfZmxvdygpLiBG dXJ0aGVyIGNsZWFudXAgbG9naWMgYmVsb25ncyB0aGVyZS4KKwkgKi8KKwlyZXF1ZXN0LT52MS5h c3luYyA9IHBnX2ZlX3J1bl9vYXV0aF9mbG93OworCXJlcXVlc3QtPnYxLmNsZWFudXAgPSBwZ19m ZV9jbGVhbnVwX29hdXRoX2Zsb3c7CisJcmVxdWVzdC0+djEudXNlciA9IGFjdHg7CisKKwkvKgor CSAqIE5vdyBmaW5pc2ggZmlsbGluZyBpbiB0aGUgYWN0eC4KKwkgKi8KKworCS8qIFNob3VsZCB3 ZSBlbmFibGUgdW5zYWZlIGZlYXR1cmVzPyAqLworCWFjdHgtPmRlYnVnZ2luZyA9IG9hdXRoX3Vu c2FmZV9kZWJ1Z2dpbmdfZW5hYmxlZCgpOworCisJaW5pdFBRRXhwQnVmZmVyKCZhY3R4LT53b3Jr X2RhdGEpOworCWluaXRQUUV4cEJ1ZmZlcigmYWN0eC0+ZXJyYnVmKTsKKworCS8qIFB1bGwgcmVs ZXZhbnQgY29ubmVjdGlvbiBvcHRpb25zLiAqLworCWNvbm5pbmZvID0gUFFjb25uaW5mbyhjb25u KTsKKwlpZiAoIWNvbm5pbmZvKQorCQlnb3RvIG9vbTsKKworCWZvciAoUFFjb25uaW5mb09wdGlv biAqb3B0ID0gY29ubmluZm87IG9wdC0+a2V5d29yZDsgb3B0KyspCisJeworCQlpZiAoIW9wdC0+ dmFsKQorCQkJY29udGludWU7CQkJLyogc2ltcGxpZmllcyB0aGUgc3RyZHVwIGxvZ2ljIGJlbG93 ICovCisKKwkJaWYgKHN0cmNtcChvcHQtPmtleXdvcmQsICJvYXV0aF9jbGllbnRfaWQiKSA9PSAw KQorCQl7CisJCQlhY3R4LT5jbGllbnRfaWQgPSBzdHJkdXAob3B0LT52YWwpOworCQkJaWYgKCFh Y3R4LT5jbGllbnRfaWQpCisJCQkJZ290byBvb207CisJCX0KKwkJZWxzZSBpZiAoc3RyY21wKG9w dC0+a2V5d29yZCwgIm9hdXRoX2NsaWVudF9zZWNyZXQiKSA9PSAwKQorCQl7CisJCQlhY3R4LT5j bGllbnRfc2VjcmV0ID0gc3RyZHVwKG9wdC0+dmFsKTsKKwkJCWlmICghYWN0eC0+Y2xpZW50X3Nl Y3JldCkKKwkJCQlnb3RvIG9vbTsKKwkJfQorCX0KKworCVBRY29ubmluZm9GcmVlKGNvbm5pbmZv KTsKKwljb25uaW5mbyA9IE5VTEw7CQkJLyoga2VlcHMgYGdvdG8gb29tYCBzYWZlICovCisKKwlh Y3R4LT5kaXNjb3ZlcnlfdXJpID0gcmVxdWVzdC0+djEub3BlbmlkX2NvbmZpZ3VyYXRpb247CisJ YWN0eC0+aXNzdWVyX2lkID0gcmVxdWVzdC0+aXNzdWVyOworCWFjdHgtPnNjb3BlID0gcmVxdWVz dC0+djEuc2NvcGU7CisKKwlBc3NlcnQoYWN0eC0+Y2xpZW50X2lkKTsJLyogZW5zdXJlZCBieSBz ZXR1cF9vYXV0aF9wYXJhbWV0ZXJzKCkgKi8KKwlBc3NlcnQoYWN0eC0+aXNzdWVyX2lkKTsJLyog ZW5zdXJlZCBieSBzZXR1cF9vYXV0aF9wYXJhbWV0ZXJzKCkgKi8KKwlBc3NlcnQoYWN0eC0+ZGlz Y292ZXJ5X3VyaSk7CS8qIGVuc3VyZWQgYnkgb2F1dGhfZXhjaGFuZ2UoKSAqLworCisJaWYgKCFz ZXR1cF9tdWx0aXBsZXhlcihhY3R4KSkKKwl7CisJCWFwcGVuZF9hY3R4X2Vycm9yKHJlcXVlc3Qs IGFjdHgpOworCQlyZXR1cm4gLTE7CisJfQorCisJaWYgKCFzZXR1cF9jdXJsX2hhbmRsZXMoYWN0 eCkpCisJeworCQlhcHBlbmRfYWN0eF9lcnJvcihyZXF1ZXN0LCBhY3R4KTsKKwkJcmV0dXJuIC0x OworCX0KKworCXJldHVybiAwOworCitvb206CisJaWYgKGNvbm5pbmZvKQorCQlQUWNvbm5pbmZv RnJlZShjb25uaW5mbyk7CisKKwlyZXF1ZXN0LT5lcnJvciA9IGxpYnBxX2dldHRleHQoIm91dCBv ZiBtZW1vcnkiKTsKKwlyZXR1cm4gLTE7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9s aWJwcS1vYXV0aC9vYXV0aC11dGlscy5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1 dGgtdXRpbHMuYwppbmRleCA0ZWJlN2QwOTQ4Yy4uY2NiMGQ5YmYyYzUgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmMKKysrIGIvc3JjL2ludGVyZmFj ZXMvbGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuYwpAQCAtMzUsODUgKzM1LDE4IEBACiBwZ3RocmVh ZGxvY2tfdCBwZ19nX3RocmVhZGxvY2s7CiBzdGF0aWMgbGlicHFfZ2V0dGV4dF9mdW5jIGxpYnBx X2dldHRleHRfaW1wbDsKIAotY29ubl9lcnJvck1lc3NhZ2VfZnVuYyBjb25uX2Vycm9yTWVzc2Fn ZTsKLWNvbm5fb2F1dGhfY2xpZW50X2lkX2Z1bmMgY29ubl9vYXV0aF9jbGllbnRfaWQ7Ci1jb25u X29hdXRoX2NsaWVudF9zZWNyZXRfZnVuYyBjb25uX29hdXRoX2NsaWVudF9zZWNyZXQ7Ci1jb25u X29hdXRoX2Rpc2NvdmVyeV91cmlfZnVuYyBjb25uX29hdXRoX2Rpc2NvdmVyeV91cmk7Ci1jb25u X29hdXRoX2lzc3Vlcl9pZF9mdW5jIGNvbm5fb2F1dGhfaXNzdWVyX2lkOwotY29ubl9vYXV0aF9z Y29wZV9mdW5jIGNvbm5fb2F1dGhfc2NvcGU7Ci1jb25uX3Nhc2xfc3RhdGVfZnVuYyBjb25uX3Nh c2xfc3RhdGU7Ci0KLXNldF9jb25uX2FsdHNvY2tfZnVuYyBzZXRfY29ubl9hbHRzb2NrOwotc2V0 X2Nvbm5fb2F1dGhfdG9rZW5fZnVuYyBzZXRfY29ubl9vYXV0aF90b2tlbjsKLQogLyotCiAgKiBJ bml0aWFsaXplcyBsaWJwcS1vYXV0aCBieSBzZXR0aW5nIG5lY2Vzc2FyeSBjYWxsYmFja3MuCiAg KgotICogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gcmVsaWVzIG9uIHRoZSBmb2xsb3dpbmcg cHJpdmF0ZSBpbXBsZW1lbnRhdGlvbgotICogZGV0YWlscyBvZiBsaWJwcToKLSAqCi0gKiAtIHBn X2dfdGhyZWFkbG9jazogcHJvdGVjdHMgbGliY3VybCBpbml0aWFsaXphdGlvbiBpZiB0aGUgdW5k ZXJseWluZyBDdXJsCi0gKiAgIGluc3RhbGxhdGlvbiBpcyBub3QgdGhyZWFkc2FmZQotICoKLSAq IC0gbGlicHFfZ2V0dGV4dDogdHJhbnNsYXRlcyBlcnJvciBtZXNzYWdlcyB1c2luZyBsaWJwcSdz IG1lc3NhZ2UgZG9tYWluCi0gKgotICogVGhlIGltcGxlbWVudGF0aW9uIGFsc28gbmVlZHMgYWNj ZXNzIHRvIHNldmVyYWwgbWVtYmVycyBvZiB0aGUgUEdjb25uIHN0cnVjdCwKLSAqIHdoaWNoIGFy ZSBub3QgZ3VhcmFudGVlZCB0byBzdGF5IGluIHBsYWNlIGFjcm9zcyBtaW5vciB2ZXJzaW9ucy4g QWNjZXNzb3JzCi0gKiAobmFtZWQgY29ubl8qKSBhbmQgbXV0YXRvcnMgKG5hbWVkIHNldF9jb25u XyopIGFyZSBpbmplY3RlZCBoZXJlLgorICogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gcmVs aWVzIG9uIGxpYnBxX2dldHRleHQgdG8gdHJhbnNsYXRlIGVycm9yCisgKiBtZXNzYWdlcyB1c2lu ZyBsaWJwcSdzIG1lc3NhZ2UgZG9tYWluLCBzbyBsaWJwcSBpbmplY3RzIGl0IGhlcmUuIFdlIGFs c28gdXNlCisgKiB0aGlzIGNoYW5jZSB0byBpbml0aWFsaXplIG91ciB0aHJlYWRsb2NrLgogICov CiB2b2lkCi1saWJwcV9vYXV0aF9pbml0KHBndGhyZWFkbG9ja190IHRocmVhZGxvY2tfaW1wbCwK LQkJCQkgbGlicHFfZ2V0dGV4dF9mdW5jIGdldHRleHRfaW1wbCwKLQkJCQkgY29ubl9lcnJvck1l c3NhZ2VfZnVuYyBlcnJtc2dfaW1wbCwKLQkJCQkgY29ubl9vYXV0aF9jbGllbnRfaWRfZnVuYyBj bGllbnRpZF9pbXBsLAotCQkJCSBjb25uX29hdXRoX2NsaWVudF9zZWNyZXRfZnVuYyBjbGllbnRz ZWNyZXRfaW1wbCwKLQkJCQkgY29ubl9vYXV0aF9kaXNjb3ZlcnlfdXJpX2Z1bmMgZGlzY292ZXJ5 dXJpX2ltcGwsCi0JCQkJIGNvbm5fb2F1dGhfaXNzdWVyX2lkX2Z1bmMgaXNzdWVyaWRfaW1wbCwK LQkJCQkgY29ubl9vYXV0aF9zY29wZV9mdW5jIHNjb3BlX2ltcGwsCi0JCQkJIGNvbm5fc2FzbF9z dGF0ZV9mdW5jIHNhc2xzdGF0ZV9pbXBsLAotCQkJCSBzZXRfY29ubl9hbHRzb2NrX2Z1bmMgc2V0 YWx0c29ja19pbXBsLAotCQkJCSBzZXRfY29ubl9vYXV0aF90b2tlbl9mdW5jIHNldHRva2VuX2lt cGwpCitsaWJwcV9vYXV0aF9pbml0KGxpYnBxX2dldHRleHRfZnVuYyBnZXR0ZXh0X2ltcGwpCiB7 Ci0JcGdfZ190aHJlYWRsb2NrID0gdGhyZWFkbG9ja19pbXBsOworCXBnX2dfdGhyZWFkbG9jayA9 IFBRZ2V0VGhyZWFkTG9jaygpOwogCWxpYnBxX2dldHRleHRfaW1wbCA9IGdldHRleHRfaW1wbDsK LQljb25uX2Vycm9yTWVzc2FnZSA9IGVycm1zZ19pbXBsOwotCWNvbm5fb2F1dGhfY2xpZW50X2lk ID0gY2xpZW50aWRfaW1wbDsKLQljb25uX29hdXRoX2NsaWVudF9zZWNyZXQgPSBjbGllbnRzZWNy ZXRfaW1wbDsKLQljb25uX29hdXRoX2Rpc2NvdmVyeV91cmkgPSBkaXNjb3Zlcnl1cmlfaW1wbDsK LQljb25uX29hdXRoX2lzc3Vlcl9pZCA9IGlzc3VlcmlkX2ltcGw7Ci0JY29ubl9vYXV0aF9zY29w ZSA9IHNjb3BlX2ltcGw7Ci0JY29ubl9zYXNsX3N0YXRlID0gc2FzbHN0YXRlX2ltcGw7Ci0Jc2V0 X2Nvbm5fYWx0c29jayA9IHNldGFsdHNvY2tfaW1wbDsKLQlzZXRfY29ubl9vYXV0aF90b2tlbiA9 IHNldHRva2VuX2ltcGw7Ci19Ci0KLS8qCi0gKiBBcHBlbmQgYSBmb3JtYXR0ZWQgc3RyaW5nIHRv IHRoZSBlcnJvciBtZXNzYWdlIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4KLSAqIGNvbm5lY3Rpb24sIGFm dGVyIHRyYW5zbGF0aW5nIGl0LiAgVGhpcyBpcyBhIGNvcHkgb2YgbGlicHEncyBpbnRlcm5hbCBB UEkuCi0gKi8KLXZvaWQKLWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKFBHY29ubiAqY29ubiwgY29u c3QgY2hhciAqZm10LC4uLikKLXsKLQlpbnQJCQlzYXZlX2Vycm5vID0gZXJybm87Ci0JYm9vbAkJ ZG9uZTsKLQl2YV9saXN0CQlhcmdzOwotCVBRRXhwQnVmZmVyIGVycm9yTWVzc2FnZSA9IGNvbm5f ZXJyb3JNZXNzYWdlKGNvbm4pOwotCi0JQXNzZXJ0KGZtdFtzdHJsZW4oZm10KSAtIDFdICE9ICdc bicpOwotCi0JaWYgKFBRRXhwQnVmZmVyQnJva2VuKGVycm9yTWVzc2FnZSkpCi0JCXJldHVybjsJ CQkJCS8qIGFscmVhZHkgZmFpbGVkICovCi0KLQkvKiBMb29wIGluIGNhc2Ugd2UgaGF2ZSB0byBy ZXRyeSBhZnRlciBlbmxhcmdpbmcgdGhlIGJ1ZmZlci4gKi8KLQlkbwotCXsKLQkJZXJybm8gPSBz YXZlX2Vycm5vOwotCQl2YV9zdGFydChhcmdzLCBmbXQpOwotCQlkb25lID0gYXBwZW5kUFFFeHBC dWZmZXJWQShlcnJvck1lc3NhZ2UsIGxpYnBxX2dldHRleHQoZm10KSwgYXJncyk7Ci0JCXZhX2Vu ZChhcmdzKTsKLQl9IHdoaWxlICghZG9uZSk7Ci0KLQlhcHBlbmRQUUV4cEJ1ZmZlckNoYXIoZXJy b3JNZXNzYWdlLCAnXG4nKTsKIH0KIAogI2lmZGVmIEVOQUJMRV9OTFMKZGlmZiAtLWdpdCBhL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLWF1dGgtb2F1dGguYwppbmRleCBiNjRkMDVhMTNlMy4uOTA0ZjQzZTkwZWEgMTAwNjQ0Ci0t LSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYworKysgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmMKQEAgLTc4LDcgKzc4LDcgQEAgb2F1dGhfaW5pdChQ R2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnBhc3N3b3JkLAogICogVGhpcyBoYW5kbGVzIG9ubHkg bWVjaGFuaXNtIHN0YXRlIHRpZWQgdG8gdGhlIGNvbm5lY3Rpb24gbGlmZXRpbWU7IHN0YXRlCiAg KiBzdG9yZWQgaW4gc3RhdGUtPmFzeW5jX2N0eCBpcyBmcmVlZCB1cCBlaXRoZXIgaW1tZWRpYXRl bHkgYWZ0ZXIgdGhlCiAgKiBhdXRoZW50aWNhdGlvbiBoYW5kc2hha2Ugc3VjY2VlZHMsIG9yIGJl Zm9yZSB0aGUgbWVjaGFuaXNtIGlzIGNsZWFuZWQgdXAgb24KLSAqIGZhaWx1cmUuIFNlZSBwZ19m ZV9jbGVhbnVwX29hdXRoX2Zsb3coKSBhbmQgY2xlYW51cF91c2VyX29hdXRoX2Zsb3coKS4KKyAq IGZhaWx1cmUuIFNlZSBwZ19mZV9jbGVhbnVwX29hdXRoX2Zsb3coKSBhbmQgY2xlYW51cF9vYXV0 aF9mbG93KCkuCiAgKi8KIHN0YXRpYyB2b2lkCiBvYXV0aF9mcmVlKHZvaWQgKm9wYXEpCkBAIC02 ODAsMzAgKzY4MCw1NCBAQCBjbGVhbnVwOgogICogaXQncyBhZGRlZCB0byBjb25uLT5lcnJvck1l c3NhZ2UgaGVyZS4KICAqLwogc3RhdGljIHZvaWQKLXJlcG9ydF91c2VyX2Zsb3dfZXJyb3IoUEdj b25uICpjb25uLCBjb25zdCBQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1ZXN0KQorcmVwb3J0 X2Zsb3dfZXJyb3IoUEdjb25uICpjb25uLCBjb25zdCBQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpy ZXF1ZXN0KQogewotCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0J CQkJCQkgbGlicHFfZ2V0dGV4dCgidXNlci1kZWZpbmVkIE9BdXRoIGZsb3cgZmFpbGVkIikpOwor CWZlX29hdXRoX3N0YXRlICpzdGF0ZSA9IGNvbm4tPnNhc2xfc3RhdGU7CisJY29uc3QgY2hhciAq ZXJybXNnID0gcmVxdWVzdC0+ZXJyb3I7CisKKwkvKgorCSAqIFVzZXItZGVmaW5lZCBmbG93cyBh cmUgY2FsbGVkIG91dCBleHBsaWNpdGx5IHNvIHRoYXQgdGhlIHVzZXIga25vd3Mgd2hvCisJICog dG8gYmxhbWUuIEJ1aWx0aW4gZmxvd3MgZG9uJ3QgbmVlZCB0aGF0IGV4dHJhIG1lc3NhZ2UgbGVu Z3RoOyB3ZSBleHBlY3QKKwkgKiB0aGVtIHRvIGFsd2F5cyBmaWxsIGluIHJlcXVlc3QtPmVycm9y IG9uIGZhaWx1cmUgYW55d2F5LgorCSAqLworCWlmIChzdGF0ZS0+YnVpbHRpbikKKwl7CisJCWlm ICghZXJybXNnKQorCQl7CisJCQkvKgorCQkJICogRG9uJ3QgdHVybiBhIGJ1ZyBoZXJlIGludG8g YSBjcmFzaCBpbiBwcm9kdWN0aW9uLCBidXQgZG9uJ3QKKwkJCSAqIGJvdGhlciB0cmFuc2xhdGlu ZyBlaXRoZXIuCisJCQkgKi8KKwkJCUFzc2VydChmYWxzZSk7CisJCQllcnJtc2cgPSAiYnVpbHRp biBmbG93IGZhaWxlZCBidXQgZGlkIG5vdCBwcm92aWRlIGFuIGVycm9yIG1lc3NhZ2UiOworCQl9 CiAKLQlpZiAocmVxdWVzdC0+ZXJyb3IpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5l cnJvck1lc3NhZ2UsIGVycm1zZyk7CisJfQorCWVsc2UKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsICI6ICIpOwotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigm Y29ubi0+ZXJyb3JNZXNzYWdlLCByZXF1ZXN0LT5lcnJvcik7CisJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJIGxpYnBxX2dldHRleHQoInVzZXItZGVm aW5lZCBPQXV0aCBmbG93IGZhaWxlZCIpKTsKKwkJaWYgKGVycm1zZykKKwkJeworCQkJYXBwZW5k UFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwgIjogIik7CisJCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLCBlcnJtc2cpOworCQl9CiAJfQogCiAJYXBw ZW5kUFFFeHBCdWZmZXJDaGFyKCZjb25uLT5lcnJvck1lc3NhZ2UsICdcbicpOwogfQogCiAvKgot ICogQ2FsbGJhY2sgaW1wbGVtZW50YXRpb24gb2YgY29ubi0+YXN5bmNfYXV0aCgpIGZvciBhIHVz ZXItZGVmaW5lZCBPQXV0aCBmbG93LgotICogRGVsZWdhdGVzIHRoZSByZXRyaWV2YWwgb2YgdGhl IHRva2VuIHRvIHRoZSBhcHBsaWNhdGlvbidzIGFzeW5jIGNhbGxiYWNrLgorICogQ2FsbGJhY2sg aW1wbGVtZW50YXRpb24gb2YgY29ubi0+YXN5bmNfYXV0aCgpIGZvciBPQXV0aCBmbG93cy4gRGVs ZWdhdGVzIHRoZQorICogcmV0cmlldmFsIG9mIHRoZSB0b2tlbiB0byB0aGUgUEdvYXV0aEJlYXJl clJlcXVlc3RWMi5hc3luYygpIGNhbGxiYWNrLgogICoKLSAqIFRoaXMgd2lsbCBiZSBjYWxsZWQg bXVsdGlwbGUgdGltZXMgYXMgbmVlZGVkOyB0aGUgYXBwbGljYXRpb24gaXMgcmVzcG9uc2libGUK LSAqIGZvciBzZXR0aW5nIGFuIGFsdHNvY2sgdG8gc2lnbmFsIGFuZCByZXR1cm5pbmcgdGhlIGNv cnJlY3QgUEdSRVNfUE9MTElOR18qCisgKiBUaGlzIHdpbGwgYmUgY2FsbGVkIG11bHRpcGxlIHRp bWVzIGFzIG5lZWRlZDsgdGhlIGNhbGxiYWNrIGlzIHJlc3BvbnNpYmxlIGZvcgorICogc2V0dGlu ZyBhbiBhbHRzb2NrIHRvIHNpZ25hbCBhbmQgcmV0dXJuaW5nIHRoZSBjb3JyZWN0IFBHUkVTX1BP TExJTkdfKgogICogc3RhdHVzZXMgZm9yIHVzZSBieSBQUWNvbm5lY3RQb2xsKCkuCiAgKi8KIHN0 YXRpYyBQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlCi1ydW5fdXNlcl9vYXV0aF9mbG93KFBHY29u biAqY29ubikKK3J1bl9vYXV0aF9mbG93KFBHY29ubiAqY29ubikKIHsKIAlmZV9vYXV0aF9zdGF0 ZSAqc3RhdGUgPSBjb25uLT5zYXNsX3N0YXRlOwogCVBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJl cXVlc3QgPSBzdGF0ZS0+YXN5bmNfY3R4OwpAQCAtNzExLDYgKzczNSw3IEBAIHJ1bl91c2VyX29h dXRoX2Zsb3coUEdjb25uICpjb25uKQogCiAJaWYgKCFyZXF1ZXN0LT52MS5hc3luYykKIAl7CisJ CUFzc2VydCghc3RhdGUtPmJ1aWx0aW4pOwkvKiBiZSB2ZXJ5IG5vaXN5IGlmIG91ciBjb2RlIGRv ZXMgdGhpcyAqLwogCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLAogCQkJCQkJCQkidXNl ci1kZWZpbmVkIE9BdXRoIGZsb3cgcHJvdmlkZWQgbmVpdGhlciBhIHRva2VuIG5vciBhbiBhc3lu YyBjYWxsYmFjayIpOwogCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CkBAIC03MjIsNyAr NzQ3LDcgQEAgcnVuX3VzZXJfb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pCiAKIAlpZiAoc3RhdHVz ID09IFBHUkVTX1BPTExJTkdfRkFJTEVEKQogCXsKLQkJcmVwb3J0X3VzZXJfZmxvd19lcnJvcihj b25uLCByZXF1ZXN0KTsKKwkJcmVwb3J0X2Zsb3dfZXJyb3IoY29ubiwgcmVxdWVzdCk7CiAJCXJl dHVybiBzdGF0dXM7CiAJfQogCWVsc2UgaWYgKHN0YXR1cyA9PSBQR1JFU19QT0xMSU5HX09LKQpA QCAtNzM0LDYgKzc1OSw3IEBAIHJ1bl91c2VyX29hdXRoX2Zsb3coUEdjb25uICpjb25uKQogCQkg Ki8KIAkJaWYgKCFyZXF1ZXN0LT52MS50b2tlbikKIAkJeworCQkJQXNzZXJ0KCFzdGF0ZS0+YnVp bHRpbik7CiAJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLAogCQkJCQkJCQkJInVzZXIt ZGVmaW5lZCBPQXV0aCBmbG93IGRpZCBub3QgcHJvdmlkZSBhIHRva2VuIik7CiAJCQlyZXR1cm4g UEdSRVNfUE9MTElOR19GQUlMRUQ7CkBAIC03NTIsNiArNzc4LDcgQEAgcnVuX3VzZXJfb2F1dGhf ZmxvdyhQR2Nvbm4gKmNvbm4pCiAJLyogVGhlIGhvb2sgd2FudHMgdGhlIGNsaWVudCB0byBwb2xs IHRoZSBhbHRzb2NrLiBNYWtlIHN1cmUgaXQgc2V0IG9uZS4gKi8KIAlpZiAoY29ubi0+YWx0c29j ayA9PSBQR0lOVkFMSURfU09DS0VUKQogCXsKKwkJQXNzZXJ0KCFzdGF0ZS0+YnVpbHRpbik7CiAJ CWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sCiAJCQkJCQkJCSJ1c2VyLWRlZmluZWQgT0F1 dGggZmxvdyBkaWQgbm90IHByb3ZpZGUgYSBzb2NrZXQgZm9yIHBvbGxpbmciKTsKIAkJcmV0dXJu IFBHUkVTX1BPTExJTkdfRkFJTEVEOwpAQCAtNzYxLDEyICs3ODgsMTYgQEAgcnVuX3VzZXJfb2F1 dGhfZmxvdyhQR2Nvbm4gKmNvbm4pCiB9CiAKIC8qCi0gKiBDbGVhbnVwIGNhbGxiYWNrIGZvciB0 aGUgYXN5bmMgdXNlciBmbG93LiBEZWxlZ2F0ZXMgbW9zdCBvZiBpdHMgam9iIHRvCisgKiBDbGVh bnVwIGNhbGxiYWNrIGZvciB0aGUgYXN5bmMgZmxvdy4gRGVsZWdhdGVzIG1vc3Qgb2YgaXRzIGpv YiB0bwogICogUEdvYXV0aEJlYXJlclJlcXVlc3RWMi5jbGVhbnVwKCksIHRoZW4gZGlzY29ubmVj dHMgdGhlIGFsdHNvY2sgYW5kIGZyZWVzIHRoZQogICogcmVxdWVzdCBpdHNlbGYuCisgKgorICog VGhpcyBpcyBjYWxsZWQgZWl0aGVyIGF0IHRoZSBlbmQgb2YgYSBzdWNjZXNzZnVsIGF1dGhlbnRp Y2F0aW9uLCBvciBkdXJpbmcKKyAqIHBxRHJvcENvbm5lY3Rpb24oKSwgc28gd2Ugd29uJ3QgbGVh ayByZXNvdXJjZXMgZXZlbiBpZiBQUWNvbm5lY3RQb2xsKCkgbmV2ZXIKKyAqIGNhbGxzIHVzIGJh Y2suCiAgKi8KIHN0YXRpYyB2b2lkCi1jbGVhbnVwX3VzZXJfb2F1dGhfZmxvdyhQR2Nvbm4gKmNv bm4pCitjbGVhbnVwX29hdXRoX2Zsb3coUEdjb25uICpjb25uKQogewogCWZlX29hdXRoX3N0YXRl ICpzdGF0ZSA9IGNvbm4tPnNhc2xfc3RhdGU7CiAJUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmVx dWVzdCA9IHN0YXRlLT5hc3luY19jdHg7CkBAIC03ODYsMTIgKzgxNywxNiBAQCBjbGVhbnVwX3Vz ZXJfb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pCiAgKgogICogVGhlcmUgYXJlIHRocmVlIHBvdGVu dGlhbCBpbXBsZW1lbnRhdGlvbnMgb2YgdXNlX2J1aWx0aW5fZmxvdzoKICAqCi0gKiAxKSBJZiB0 aGUgT0F1dGggY2xpZW50IGlzIGRpc2FibGVkIGF0IGNvbmZpZ3VyYXRpb24gdGltZSwgcmV0dXJu IGZhbHNlLgorICogMSkgSWYgdGhlIE9BdXRoIGNsaWVudCBpcyBkaXNhYmxlZCBhdCBjb25maWd1 cmF0aW9uIHRpbWUsIHJldHVybiB6ZXJvLgogICogICAgRGVwZW5kZW50IGNsaWVudHMgbXVzdCBw cm92aWRlIHRoZWlyIG93biBmbG93LgogICogMikgSWYgdGhlIE9BdXRoIGNsaWVudCBpcyBlbmFi bGVkIGFuZCBVU0VfRFlOQU1JQ19PQVVUSCBpcyBkZWZpbmVkLCBkbG9wZW4oKQogICogICAgdGhl IGxpYnBxLW9hdXRoIHBsdWdpbiBhbmQgdXNlIGl0cyBpbXBsZW1lbnRhdGlvbi4KICAqIDMpIE90 aGVyd2lzZSwgdXNlIGZsb3cgY2FsbGJhY2tzIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGlu dG8gdGhlCiAgKiAgICBleGVjdXRhYmxlLgorICoKKyAqIEZvciBjYWxsZXIgY29udmVuaWVuY2Us IHRoZSByZXR1cm4gdmFsdWUgZm9sbG93cyB0aGUgY29udmVudGlvbiBvZgorICogUFFhdXRoRGF0 YUhvb2s6IHplcm8gbWVhbnMgbm8gaW1wbGVtZW50YXRpb24gaXMgcHJvdmlkZWQsIG5lZ2F0aXZl IGluZGljYXRlcworICogZmFpbHVyZSwgYW5kIHBvc2l0aXZlIGluZGljYXRlcyBzdWNjZXNzLgog ICovCiAKICNpZiAhZGVmaW5lZChVU0VfTElCQ1VSTCkKQEAgLTgwMCwxMCArODM1LDEwIEBAIGNs ZWFudXBfdXNlcl9vYXV0aF9mbG93KFBHY29ubiAqY29ubikKICAqIFRoaXMgY29uZmlndXJhdGlv biBkb2Vzbid0IHN1cHBvcnQgdGhlIGJ1aWx0aW4gZmxvdy4KICAqLwogCi1ib29sCi11c2VfYnVp bHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQorc3RhdGljIGlu dAordXNlX2J1aWx0aW5fZmxvdyhQR2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0ZSwg UEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVzdCkKIHsKLQlyZXR1cm4gZmFsc2U7CisJcmV0 dXJuIDA7CiB9CiAKICNlbGlmIGRlZmluZWQoVVNFX0RZTkFNSUNfT0FVVEgpCkBAIC04MTQsMzYg Kzg0OSw2IEBAIHVzZV9idWlsdGluX2Zsb3coUEdjb25uICpjb25uLCBmZV9vYXV0aF9zdGF0ZSAq c3RhdGUpCiAKIHR5cGVkZWYgY2hhciAqKCpsaWJwcV9nZXR0ZXh0X2Z1bmMpIChjb25zdCBjaGFy ICptc2dpZCk7CiAKLS8qCi0gKiBEZWZpbmUgYWNjZXNzb3IvbXV0YXRvciBzaGltcyB0byBpbmpl Y3QgaW50byBsaWJwcS1vYXV0aCwgc28gdGhhdCBpdCBkb2Vzbid0Ci0gKiBkZXBlbmQgb24gdGhl IG9mZnNldHMgd2l0aGluIFBHY29ubi4gKFRoZXNlIGhhdmUgY2hhbmdlZCBkdXJpbmcgbWlub3Ig dmVyc2lvbgotICogdXBkYXRlcyBpbiB0aGUgcGFzdC4pCi0gKi8KLQotI2RlZmluZSBERUZJTkVf R0VUVEVSKFRZUEUsIE1FTUJFUikgXAotCXR5cGVkZWYgVFlQRSAoKmNvbm5fICMjIE1FTUJFUiAj IyBfZnVuYykgKFBHY29ubiAqY29ubik7IFwKLQlzdGF0aWMgVFlQRSBjb25uXyAjIyBNRU1CRVIo UEdjb25uICpjb25uKSB7IHJldHVybiBjb25uLT5NRU1CRVI7IH0KLQotLyogTGlrZSBERUZJTkVf R0VUVEVSLCBidXQgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG1lbWJlci4gKi8KLSNkZWZpbmUg REVGSU5FX0dFVFRFUl9QKFRZUEUsIE1FTUJFUikgXAotCXR5cGVkZWYgVFlQRSAoKmNvbm5fICMj IE1FTUJFUiAjIyBfZnVuYykgKFBHY29ubiAqY29ubik7IFwKLQlzdGF0aWMgVFlQRSBjb25uXyAj IyBNRU1CRVIoUEdjb25uICpjb25uKSB7IHJldHVybiAmY29ubi0+TUVNQkVSOyB9Ci0KLSNkZWZp bmUgREVGSU5FX1NFVFRFUihUWVBFLCBNRU1CRVIpIFwKLQl0eXBlZGVmIHZvaWQgKCpzZXRfY29u bl8gIyMgTUVNQkVSICMjIF9mdW5jKSAoUEdjb25uICpjb25uLCBUWVBFIHZhbCk7IFwKLQlzdGF0 aWMgdm9pZCBzZXRfY29ubl8gIyMgTUVNQkVSKFBHY29ubiAqY29ubiwgVFlQRSB2YWwpIHsgY29u bi0+TUVNQkVSID0gdmFsOyB9Ci0KLURFRklORV9HRVRURVJfUChQUUV4cEJ1ZmZlciwgZXJyb3JN ZXNzYWdlKTsKLURFRklORV9HRVRURVIoY2hhciAqLCBvYXV0aF9jbGllbnRfaWQpOwotREVGSU5F X0dFVFRFUihjaGFyICosIG9hdXRoX2NsaWVudF9zZWNyZXQpOwotREVGSU5FX0dFVFRFUihjaGFy ICosIG9hdXRoX2Rpc2NvdmVyeV91cmkpOwotREVGSU5FX0dFVFRFUihjaGFyICosIG9hdXRoX2lz c3Vlcl9pZCk7Ci1ERUZJTkVfR0VUVEVSKGNoYXIgKiwgb2F1dGhfc2NvcGUpOwotREVGSU5FX0dF VFRFUihmZV9vYXV0aF9zdGF0ZSAqLCBzYXNsX3N0YXRlKTsKLQotREVGSU5FX1NFVFRFUihwZ3Nv Y2tldCwgYWx0c29jayk7Ci1ERUZJTkVfU0VUVEVSKGNoYXIgKiwgb2F1dGhfdG9rZW4pOwotCiAv KgogICogTG9hZHMgdGhlIGxpYnBxLW9hdXRoIHBsdWdpbiB2aWEgZGxvcGVuKCksIGluaXRpYWxp emVzIGl0LCBhbmQgcGx1Z3MgaXRzCiAgKiBjYWxsYmFja3MgaW50byB0aGUgY29ubmVjdGlvbidz IGFzeW5jIGF1dGggaGFuZGxlcnMuCkBAIC04NTIsMjcgKzg1NywxOSBAQCBERUZJTkVfU0VUVEVS KGNoYXIgKiwgb2F1dGhfdG9rZW4pOwogICogaGFuZGxlIHRoZSB1c2UgY2FzZSB3aGVyZSB0aGUg YnVpbGQgc3VwcG9ydHMgbG9hZGluZyBhIGZsb3cgYnV0IGEgdXNlciBkb2VzCiAgKiBub3Qgd2Fu dCB0byBpbnN0YWxsIGl0LiBUcm91Ymxlc2hvb3Rpbmcgb2YgbGlua2VyL2xvYWRlciBmYWlsdXJl cyBjYW4gYmUgZG9uZQogICogdmlhIFBHT0FVVEhERUJVRy4KKyAqCisgKiBUaGUgbGlmZXRpbWUg b2YgKnJlcXVlc3QgZW5kcyBzaG9ydGx5IGFmdGVyIHRoaXMgY2FsbCwgc28gaXQgbXVzdCBiZSBj b3BpZWQKKyAqIHRvIGxvbmdlci1saXZlZCBzdG9yYWdlLgogICovCi1ib29sCi11c2VfYnVpbHRp bl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQorc3RhdGljIGludAor dXNlX2J1aWx0aW5fZmxvdyhQR2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0ZSwgUEdv YXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVzdCkKIHsKIAlzdGF0aWMgYm9vbCBpbml0aWFsaXpl ZCA9IGZhbHNlOwogCXN0YXRpYyBwdGhyZWFkX211dGV4X3QgaW5pdF9tdXRleCA9IFBUSFJFQURf TVVURVhfSU5JVElBTElaRVI7CiAJaW50CQkJbG9ja2VycjsKIAotCXZvaWQJCSgqaW5pdCkgKHBn dGhyZWFkbG9ja190IHRocmVhZGxvY2ssCi0JCQkJCQkgbGlicHFfZ2V0dGV4dF9mdW5jIGdldHRl eHRfaW1wbCwKLQkJCQkJCSBjb25uX2Vycm9yTWVzc2FnZV9mdW5jIGVycm1zZ19pbXBsLAotCQkJ CQkJIGNvbm5fb2F1dGhfY2xpZW50X2lkX2Z1bmMgY2xpZW50aWRfaW1wbCwKLQkJCQkJCSBjb25u X29hdXRoX2NsaWVudF9zZWNyZXRfZnVuYyBjbGllbnRzZWNyZXRfaW1wbCwKLQkJCQkJCSBjb25u X29hdXRoX2Rpc2NvdmVyeV91cmlfZnVuYyBkaXNjb3Zlcnl1cmlfaW1wbCwKLQkJCQkJCSBjb25u X29hdXRoX2lzc3Vlcl9pZF9mdW5jIGlzc3VlcmlkX2ltcGwsCi0JCQkJCQkgY29ubl9vYXV0aF9z Y29wZV9mdW5jIHNjb3BlX2ltcGwsCi0JCQkJCQkgY29ubl9zYXNsX3N0YXRlX2Z1bmMgc2FzbHN0 YXRlX2ltcGwsCi0JCQkJCQkgc2V0X2Nvbm5fYWx0c29ja19mdW5jIHNldGFsdHNvY2tfaW1wbCwK LQkJCQkJCSBzZXRfY29ubl9vYXV0aF90b2tlbl9mdW5jIHNldHRva2VuX2ltcGwpOwotCVBvc3Rn cmVzUG9sbGluZ1N0YXR1c1R5cGUgKCpmbG93KSAoUEdjb25uICpjb25uKTsKLQl2b2lkCQkoKmNs ZWFudXApIChQR2Nvbm4gKmNvbm4pOworCXZvaWQJCSgqaW5pdCkgKGxpYnBxX2dldHRleHRfZnVu YyBnZXR0ZXh0X2ltcGwpOworCWludAkJCSgqc3RhcnRfZmxvdykgKFBHY29ubiAqY29ubiwgUEdv YXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVzdCk7CiAKIAkvKgogCSAqIE9uIG1hY09TIG9ubHks IGxvYWQgdGhlIG1vZHVsZSB1c2luZyBpdHMgYWJzb2x1dGUgaW5zdGFsbCBwYXRoOyB0aGUKQEAg LTg4NSw5ICs4ODIsOSBAQCB1c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhf c3RhdGUgKnN0YXRlKQogCSAqLwogCWNvbnN0IGNoYXIgKmNvbnN0IG1vZHVsZV9uYW1lID0KICNp ZiBkZWZpbmVkKF9fZGFyd2luX18pCi0JCUxJQkRJUiAiL2xpYnBxLW9hdXRoLSIgUEdfTUFKT1JW RVJTSU9OIERMU1VGRklYOworCQlMSUJESVIgIi9saWJwcS1vYXV0aCIgRExTVUZGSVg7CiAjZWxz ZQotCQkibGlicHEtb2F1dGgtIiBQR19NQUpPUlZFUlNJT04gRExTVUZGSVg7CisJCSJsaWJwcS1v YXV0aCIgRExTVUZGSVg7CiAjZW5kaWYKIAogCXN0YXRlLT5idWlsdGluX2Zsb3cgPSBkbG9wZW4o bW9kdWxlX25hbWUsIFJUTERfTk9XIHwgUlRMRF9MT0NBTCk7CkBAIC05MDMsMTIgKzkwMCwxMSBA QCB1c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQog CQlpZiAob2F1dGhfdW5zYWZlX2RlYnVnZ2luZ19lbmFibGVkKCkpCiAJCQlmcHJpbnRmKHN0ZGVy ciwgImZhaWxlZCBkbG9wZW4gZm9yIGxpYnBxLW9hdXRoOiAlc1xuIiwgZGxlcnJvcigpKTsKIAot CQlyZXR1cm4gZmFsc2U7CisJCXJldHVybiAwOwogCX0KIAogCWlmICgoaW5pdCA9IGRsc3ltKHN0 YXRlLT5idWlsdGluX2Zsb3csICJsaWJwcV9vYXV0aF9pbml0IikpID09IE5VTEwKLQkJfHwgKGZs b3cgPSBkbHN5bShzdGF0ZS0+YnVpbHRpbl9mbG93LCAicGdfZmVfcnVuX29hdXRoX2Zsb3ciKSkg PT0gTlVMTAotCQl8fCAoY2xlYW51cCA9IGRsc3ltKHN0YXRlLT5idWlsdGluX2Zsb3csICJwZ19m ZV9jbGVhbnVwX29hdXRoX2Zsb3ciKSkgPT0gTlVMTCkKKwkJfHwgKHN0YXJ0X2Zsb3cgPSBkbHN5 bShzdGF0ZS0+YnVpbHRpbl9mbG93LCAicGdfc3RhcnRfb2F1dGhiZWFyZXIiKSkgPT0gTlVMTCkK IAl7CiAJCS8qCiAJCSAqIFRoaXMgaXMgbW9yZSBvZiBhbiBlcnJvciBjb25kaXRpb24gdGhhbiB0 aGUgb25lIGFib3ZlLCBidXQgZHVlIHRvCkBAIC05MTgsNyArOTE0LDcgQEAgdXNlX2J1aWx0aW5f ZmxvdyhQR2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0ZSkKIAkJCWZwcmludGYoc3Rk ZXJyLCAiZmFpbGVkIGRsc3ltIGZvciBsaWJwcS1vYXV0aDogJXNcbiIsIGRsZXJyb3IoKSk7CiAK IAkJZGxjbG9zZShzdGF0ZS0+YnVpbHRpbl9mbG93KTsKLQkJcmV0dXJuIGZhbHNlOworCQlyZXR1 cm4gMDsKIAl9CiAKIAkvKgpAQCAtOTM4LDU2ICs5MzQsNDAgQEAgdXNlX2J1aWx0aW5fZmxvdyhQ R2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0ZSkKIAkJQXNzZXJ0KGZhbHNlKTsKIAog CQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiZmFpbGVkIHRvIGxvY2sgbXV0ZXggKCVk KSIsIGxvY2tlcnIpOwotCQlyZXR1cm4gZmFsc2U7CisJCXJldHVybiAwOwogCX0KIAogCWlmICgh aW5pdGlhbGl6ZWQpCiAJewotCQlpbml0KHBnX2dfdGhyZWFkbG9jaywKKwkJaW5pdCgKICNpZmRl ZiBFTkFCTEVfTkxTCi0JCQkgbGlicHFfZ2V0dGV4dCwKKwkJCSBsaWJwcV9nZXR0ZXh0CiAjZWxz ZQotCQkJIE5VTEwsCisJCQkgTlVMTAogI2VuZGlmCi0JCQkgY29ubl9lcnJvck1lc3NhZ2UsCi0J CQkgY29ubl9vYXV0aF9jbGllbnRfaWQsCi0JCQkgY29ubl9vYXV0aF9jbGllbnRfc2VjcmV0LAot CQkJIGNvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaSwKLQkJCSBjb25uX29hdXRoX2lzc3Vlcl9pZCwK LQkJCSBjb25uX29hdXRoX3Njb3BlLAotCQkJIGNvbm5fc2FzbF9zdGF0ZSwKLQkJCSBzZXRfY29u bl9hbHRzb2NrLAotCQkJIHNldF9jb25uX29hdXRoX3Rva2VuKTsKKwkJCSk7CiAKIAkJaW5pdGlh bGl6ZWQgPSB0cnVlOwogCX0KIAogCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZpbml0X211dGV4KTsK IAotCS8qIFNldCBvdXIgYXN5bmNocm9ub3VzIGNhbGxiYWNrcy4gKi8KLQljb25uLT5hc3luY19h dXRoID0gZmxvdzsKLQljb25uLT5jbGVhbnVwX2FzeW5jX2F1dGggPSBjbGVhbnVwOwotCi0JcmV0 dXJuIHRydWU7CisJcmV0dXJuIChzdGFydF9mbG93KGNvbm4sIHJlcXVlc3QpID09IDApID8gMSA6 IC0xOwogfQogCiAjZWxzZQogCiAvKgotICogVXNlIHRoZSBidWlsdGluIGZsb3cgaW4gbGlicHEt b2F1dGguYSAoc2VlIGxpYnBxLW9hdXRoL29hdXRoLWN1cmwuaCkuCisgKiBGb3Igc3RhdGljIGJ1 aWxkcywgd2UgY2FuIGp1c3QgY2FsbCBwZ19zdGFydF9vYXV0aGJlYXJlcigpIGRpcmVjdGx5LiBJ dCdzCisgKiBwcm92aWRlZCBieSBsaWJwcS1vYXV0aC5hLgogICovCiAKLWV4dGVybiBQb3N0Z3Jl c1BvbGxpbmdTdGF0dXNUeXBlIHBnX2ZlX3J1bl9vYXV0aF9mbG93KFBHY29ubiAqY29ubik7Ci1l eHRlcm4gdm9pZCBwZ19mZV9jbGVhbnVwX29hdXRoX2Zsb3coUEdjb25uICpjb25uKTsKK2V4dGVy biBpbnQJcGdfc3RhcnRfb2F1dGhiZWFyZXIoUEdjb25uICpjb25uLCBQR29hdXRoQmVhcmVyUmVx dWVzdFYyICpyZXF1ZXN0KTsKIAotYm9vbAotdXNlX2J1aWx0aW5fZmxvdyhQR2Nvbm4gKmNvbm4s IGZlX29hdXRoX3N0YXRlICpzdGF0ZSkKK3N0YXRpYyBpbnQKK3VzZV9idWlsdGluX2Zsb3coUEdj b25uICpjb25uLCBmZV9vYXV0aF9zdGF0ZSAqc3RhdGUsIFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIg KnJlcXVlc3QpCiB7Ci0JLyogU2V0IG91ciBhc3luY2hyb25vdXMgY2FsbGJhY2tzLiAqLwotCWNv bm4tPmFzeW5jX2F1dGggPSBwZ19mZV9ydW5fb2F1dGhfZmxvdzsKLQljb25uLT5jbGVhbnVwX2Fz eW5jX2F1dGggPSBwZ19mZV9jbGVhbnVwX29hdXRoX2Zsb3c7Ci0KLQlyZXR1cm4gdHJ1ZTsKKwly ZXR1cm4gKHBnX3N0YXJ0X29hdXRoYmVhcmVyKGNvbm4sIHJlcXVlc3QpID09IDApID8gMSA6IC0x OwogfQogCiAjZW5kaWYJCQkJCQkJLyogVVNFX0xJQkNVUkwgKi8KQEAgLTEwMDAsMTEgKzk4MCwx MSBAQCB1c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRl KQogICogSWYgdGhlIGFwcGxpY2F0aW9uIGhhcyByZWdpc3RlcmVkIGEgY3VzdG9tIGZsb3cgaGFu ZGxlciB1c2luZwogICogUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5bX1YyXSwgaXQgbWF5 IGVpdGhlciByZXR1cm4gYSB0b2tlbiBpbW1lZGlhdGVseQogICogKGUuZy4gaWYgaXQgaGFzIG9u ZSBjYWNoZWQgZm9yIGltbWVkaWF0ZSB1c2UpLCBvciBzZXQgdXAgZm9yIGEgc2VyaWVzIG9mCi0g KiBhc3luY2hyb25vdXMgY2FsbGJhY2tzIHdoaWNoIHdpbGwgYmUgbWFuYWdlZCBieSBydW5fdXNl cl9vYXV0aF9mbG93KCkuCisgKiBhc3luY2hyb25vdXMgY2FsbGJhY2tzIHdoaWNoIHdpbGwgYmUg bWFuYWdlZCBieSBydW5fb2F1dGhfZmxvdygpLgogICoKICAqIElmIHRoZSBkZWZhdWx0IGhhbmRs ZXIgaXMgdXNlZCBpbnN0ZWFkLCBhIERldmljZSBBdXRob3JpemF0aW9uIGZsb3cgaXMgdXNlZAot ICogZm9yIHRoZSBjb25uZWN0aW9uIGlmIHN1cHBvcnQgaGFzIGJlZW4gY29tcGlsZWQgaW4uIChT ZWUKLSAqIGZlLWF1dGgtb2F1dGgtY3VybC5jIGZvciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLikK KyAqIGZvciB0aGUgY29ubmVjdGlvbiBpZiBzdXBwb3J0IGhhcyBiZWVuIGNvbXBpbGVkIGluLiAo U2VlIG9hdXRoLWN1cmwuYyBmb3IKKyAqIGltcGxlbWVudGF0aW9uIGRldGFpbHMuKQogICoKICAq IElmIG5laXRoZXIgYSBjdXN0b20gaGFuZGxlciBub3IgdGhlIGJ1aWx0aW4gZmxvdyBpcyBhdmFp bGFibGUsIHRoZSBjb25uZWN0aW9uCiAgKiBmYWlscyBoZXJlLgpAQCAtMTAyNiwxMSArMTAwNiwx NyBAQCBzZXR1cF90b2tlbl9yZXF1ZXN0KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0 YXRlKQogCiAJLyoKIAkgKiBUaGUgY2xpZW50IG1heSBoYXZlIG92ZXJyaWRkZW4gdGhlIE9BdXRo IGZsb3cuIFRyeSB0aGUgdjIgaG9vayBmaXJzdCwKLQkgKiB0aGVuIGZhbGwgYmFjayB0byB0aGUg djEgaW1wbGVtZW50YXRpb24uCisJICogdGhlbiBmYWxsIGJhY2sgdG8gdGhlIHYxIGltcGxlbWVu dGF0aW9uLiBJZiBuZWl0aGVyIGlzIGF2YWlsYWJsZSwgdHJ5CisJICogdGhlIGJ1aWx0aW4gZmxv dy4KIAkgKi8KIAlyZXMgPSBQUWF1dGhEYXRhSG9vayhQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9U T0tFTl9WMiwgY29ubiwgJnJlcXVlc3QpOwogCWlmIChyZXMgPT0gMCkKIAkJcmVzID0gUFFhdXRo RGF0YUhvb2soUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU4sIGNvbm4sICZyZXF1ZXN0KTsK KwlpZiAocmVzID09IDApCisJeworCQlzdGF0ZS0+YnVpbHRpbiA9IHRydWU7CisJCXJlcyA9IHVz ZV9idWlsdGluX2Zsb3coY29ubiwgc3RhdGUsICZyZXF1ZXN0KTsKKwl9CiAKIAlpZiAocmVzID4g MCkKIAl7CkBAIC0xMDY1LDE2ICsxMDUxLDE2IEBAIHNldHVwX3Rva2VuX3JlcXVlc3QoUEdjb25u ICpjb25uLCBmZV9vYXV0aF9zdGF0ZSAqc3RhdGUpCiAKIAkJKnJlcXVlc3RfY29weSA9IHJlcXVl c3Q7CiAKLQkJY29ubi0+YXN5bmNfYXV0aCA9IHJ1bl91c2VyX29hdXRoX2Zsb3c7Ci0JCWNvbm4t PmNsZWFudXBfYXN5bmNfYXV0aCA9IGNsZWFudXBfdXNlcl9vYXV0aF9mbG93OworCQljb25uLT5h c3luY19hdXRoID0gcnVuX29hdXRoX2Zsb3c7CisJCWNvbm4tPmNsZWFudXBfYXN5bmNfYXV0aCA9 IGNsZWFudXBfb2F1dGhfZmxvdzsKIAkJc3RhdGUtPmFzeW5jX2N0eCA9IHJlcXVlc3RfY29weTsK IAl9CiAJZWxzZSBpZiAocmVzIDwgMCkKIAl7Ci0JCXJlcG9ydF91c2VyX2Zsb3dfZXJyb3IoY29u biwgJnJlcXVlc3QpOworCQlyZXBvcnRfZmxvd19lcnJvcihjb25uLCAmcmVxdWVzdCk7CiAJCWdv dG8gZmFpbDsKIAl9Ci0JZWxzZSBpZiAoIXVzZV9idWlsdGluX2Zsb3coY29ubiwgc3RhdGUpKQor CWVsc2UKIAl7CiAJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJubyBPQXV0aCBmbG93 cyBhcmUgYXZhaWxhYmxlICh0cnkgaW5zdGFsbGluZyB0aGUgbGlicHEtb2F1dGggcGFja2FnZSki KTsKIAkJZ290byBmYWlsOwotLSAKMi4zNC4xCgo= --000000000000bab6b3064c25f1fe Content-Type: application/octet-stream; name="v5-0005-libpq-oauth-Never-link-against-libpq-s-encoding-f.patch" Content-Disposition: attachment; filename="v5-0005-libpq-oauth-Never-link-against-libpq-s-encoding-f.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmb5rgf95 RnJvbSBlZDZlNzI2OGVjMmI4MWJjOTM4NjRlZTIyNzk2NjA5NGMyZDVlZDc3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAzIERlYyAyMDI1IDA5OjUzOjQ0IC0wODAwClN1YmplY3Q6 IFtQQVRDSCB2NSA1LzddIGxpYnBxLW9hdXRoOiBOZXZlciBsaW5rIGFnYWluc3QgbGlicHEncyBl bmNvZGluZwogZnVuY3Rpb25zCgpOb3cgdGhhdCBsaWJwcS1vYXV0aCBkb2Vzbid0IGhhdmUgdG8g bWF0Y2ggdGhlIG1ham9yIHZlcnNpb24gb2YgbGlicHEsCnNvbWUgdGhpbmdzIGluIHBnX3djaGFy LmggYXJlIHRlY2huaWNhbGx5IHVuc2FmZSBmb3IgdXMgdG8gdXNlLiAoU2VlCmI2YzdjZmFjOCBm b3IgYSBmdWxsZXIgZGlzY3Vzc2lvbi4pIFRoaXMgaXMgdW5saWtlbHkgdG8gYmUgYSBwcm9ibGVt IC0tCndlIG9ubHkgY2FyZSBhYm91dCBVVEYtOCBpbiB0aGUgY29udGV4dCBvZiBPQXV0aCByaWdo dCBub3cgLS0gYnV0IGlmCmFueW9uZSBkaWQgaW50cm9kdWNlIGEgd2F5IHRvIGhpdCBpdCwgaXQn ZCBiZSBleHRyZW1lbHkgZGlmZmljdWx0IHRvCmRlYnVnIG9yIHJlcHJvZHVjZSwgYW5kIGl0J2Qg YmUgYSBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSB0bwpib290LgoKRGVmaW5lIFVT RV9QUklWQVRFX0VOQ09ESU5HX0ZVTkNTIHNvIHRoYXQgYW55b25lIHdobyB0cmllcyB0byBhZGQg YQpkZXBlbmRlbmN5IG9uIHRoZSBleHBvcnRlZCBBUElzIHdpbGwgc2ltcGx5IGZhaWwgdG8gbGlu ayB0aGUgc2hhcmVkCm1vZHVsZS4KClJldmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9A Z21haWwuY29tPgpSZXZpZXdlZC1ieTogWnNvbHQgUGFycmFnaSA8enNvbHQucGFycmFnaUBwZXJj b25hLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQU9ZbWklMkJtckdnJTJC bl9YMk1PTGdlV2NqM3ZfTTAwZ1I4dXpfRDdtTTh6JTNEZFgxSllWYmclNDBtYWlsLmdtYWlsLmNv bQotLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL21lc29uLmJ1aWxkIHwgMTAgKysrKysr KysrLQogc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvTWFrZWZpbGUgICAgfCAxMSArKysrKysr KystLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL21lc29uLmJ1aWxkIGIvc3Jj L2ludGVyZmFjZXMvbGlicHEtb2F1dGgvbWVzb24uYnVpbGQKaW5kZXggNjg1YTAwYWNmN2EuLmVh M2E5MDBmNGYxIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9tZXNvbi5i dWlsZAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9tZXNvbi5idWlsZApAQCAtMTIs NyArMTIsMTUgQEAgbGlicHFfb2F1dGhfc291cmNlcyA9IGZpbGVzKAogbGlicHFfb2F1dGhfc29f c291cmNlcyA9IGZpbGVzKAogICAnb2F1dGgtdXRpbHMuYycsCiApCi1saWJwcV9vYXV0aF9zb19j X2FyZ3MgPSBbJy1EVVNFX0RZTkFNSUNfT0FVVEgnXQorbGlicHFfb2F1dGhfc29fY19hcmdzID0g WworICAnLURVU0VfRFlOQU1JQ19PQVVUSCcsCisKKyAgIyBBIGJpdCBvZiBmb3J3YXJkLWxvb2tp bmcgcGFyYW5vaWE6IGRvbid0IGFsbG93IGFueW9uZSB0byBhY2NpZGVudGFsbHkgZGVwZW5kCisg ICMgb24gdGhlIGVuY29kaW5nIElEcyBjb21pbmcgZnJvbSBsaWJwcS4gVGhleSdyZSBub3QgZ3Vh cmFudGVlZCB0byBtYXRjaCB0aGUKKyAgIyBJRHMgaW4gdXNlIGJ5IG91ciB2ZXJzaW9uIG9mIHBn Y29tbW9uLCBub3cgdGhhdCB3ZSBhbGxvdyB0aGUgbWFqb3IgdmVyc2lvbgorICAjIG9mIGxpYnBx IHRvIGRpZmZlciBmcm9tIHRoZSBtYWpvciB2ZXJzaW9uIG9mIGxpYnBxLW9hdXRoLgorICAnLURV U0VfUFJJVkFURV9FTkNPRElOR19GVU5DUycsCitdCiAKIGV4cG9ydF9maWxlID0gY3VzdG9tX3Rh cmdldCgnbGlicHEtb2F1dGguZXhwb3J0cycsCiAgIGt3YXJnczogZ2VuX2V4cG9ydF9rd2FyZ3Ms CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9NYWtlZmlsZSBiL3NyYy9p bnRlcmZhY2VzL2xpYnBxLW9hdXRoL01ha2VmaWxlCmluZGV4IGU5MDQ4MjU2NmIxLi4yMzEzNDkw MzRkMSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvTWFrZWZpbGUKKysr IGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvTWFrZWZpbGUKQEAgLTI0LDYgKzI0LDE0IEBA IG92ZXJyaWRlIHNobGliIDo9IGxpYiQoTkFNRSkkKERMU1VGRklYKQogb3ZlcnJpZGUgQ1BQRkxB R1MgOj0gLUkkKGxpYnBxX3NyY2RpcikgLUkkKHRvcF9idWlsZGRpcikvc3JjL3BvcnQgJChDUFBG TEFHUykgJChMSUJDVVJMX0NQUEZMQUdTKQogb3ZlcnJpZGUgQ0ZMQUdTICs9ICQoUFRIUkVBRF9D RkxBR1MpCiAKK292ZXJyaWRlIENQUEZMQUdTX1NITElCIDo9IC1EVVNFX0RZTkFNSUNfT0FVVEgK KworIyBBIGJpdCBvZiBmb3J3YXJkLWxvb2tpbmcgcGFyYW5vaWE6IGRvbid0IGFsbG93IGxpYnBx LW9hdXRoLnNvIHRvIGFjY2lkZW50YWxseQorIyBkZXBlbmQgb24gdGhlIGVuY29kaW5nIElEcyBj b21pbmcgZnJvbSBsaWJwcS4gVGhleSdyZSBub3QgZ3VhcmFudGVlZCB0byBtYXRjaAorIyB0aGUg SURzIGluIHVzZSBieSBvdXIgdmVyc2lvbiBvZiBwZ2NvbW1vbiwgbm93IHRoYXQgd2UgYWxsb3cg dGhlIG1ham9yIHZlcnNpb24KKyMgb2YgbGlicHEgdG8gZGlmZmVyIGZyb20gdGhlIG1ham9yIHZl cnNpb24gb2YgbGlicHEtb2F1dGguCitvdmVycmlkZSBDUFBGTEFHU19TSExJQiArPSAtRFVTRV9Q UklWQVRFX0VOQ09ESU5HX0ZVTkNTCisKIE9CSlMgPSBcCiAJJChXSU4zMlJFUykKIApAQCAtMzQs OCArNDIsNyBAQCBPQkpTX1NITElCID0gXAogCW9hdXRoLWN1cmxfc2hsaWIubyBcCiAJb2F1dGgt dXRpbHMubyBcCiAKLW9hdXRoLXV0aWxzLm86IG92ZXJyaWRlIENQUEZMQUdTICs9IC1EVVNFX0RZ TkFNSUNfT0FVVEgKLW9hdXRoLWN1cmxfc2hsaWIubzogb3ZlcnJpZGUgQ1BQRkxBR1NfU0hMSUIg Kz0gLURVU0VfRFlOQU1JQ19PQVVUSAorb2F1dGgtdXRpbHMubzogb3ZlcnJpZGUgQ1BQRkxBR1Mg Kz0gJChDUFBGTEFHU19TSExJQikKIAogIyBBZGQgc2hsaWItL3N0bGliLXNwZWNpZmljIG9iamVj dHMuCiAkKHNobGliKTogb3ZlcnJpZGUgT0JKUyArPSAkKE9CSlNfU0hMSUIpCi0tIAoyLjM0LjEK Cg== --000000000000bab6b3064c25f1fe Content-Type: application/octet-stream; name="v5-0006-WIP-test-out-poisoning.patch" Content-Disposition: attachment; filename="v5-0006-WIP-test-out-poisoning.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmb5rj5m6 RnJvbSBlNGIwOTg1M2UzYTJiZmY0OWUzYzI3YmY0MmI5ZWY4NjMyMWE5NmU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAzIE1hciAyMDI2IDA5OjQ1OjM3IC0wODAwClN1YmplY3Q6 IFtQQVRDSCB2NSA2LzddIFdJUDogdGVzdCBvdXQgcG9pc29uaW5nCgotLS0KIHNyYy9pbnRlcmZh Y2VzL2xpYnBxL21lc29uLmJ1aWxkICAgICB8ICAxNCArKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBx L01ha2VmaWxlICAgICAgICB8ICAgNiArKwogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1v YXV0aC5oIHwgICAxICsKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYyB8IDE0 NSArKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTU2IGluc2Vy dGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxL21lc29uLmJ1aWxkIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbWVzb24uYnVpbGQKaW5kZXgg YjBhZTcyMTY3YTEuLmNmMzEyNTQxNGM1IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJw cS9tZXNvbi5idWlsZAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9tZXNvbi5idWlsZApAQCAt NDksNiArNDksMTUgQEAgbGlicHFfY19hcmdzID0gWyctRFNPX01BSk9SX1ZFUlNJT049NSddCiAj IFRoZSBPQXV0aCBpbXBsZW1lbnRhdGlvbiBkaWZmZXJzIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBv ZiBsaWJyYXJ5IGJlaW5nIGJ1aWx0LgogbGlicHFfc29fY19hcmdzID0gWyctRFVTRV9EWU5BTUlD X09BVVRIJ10KIAorbGlicHFfbGlua19hcmdzID0gW10KK2lmIGhvc3Rfc3lzdGVtID09ICdkYXJ3 aW4nCisgICMgVE9ETyBzdGF0aWNsaWIgdG9vLi4uCisgIGxpYnBxX2xpbmtfYXJncyArPSBbCisg ICAgJy1XbCwtVSxfX19hc2FuX3BvaXNvbl9tZW1vcnlfcmVnaW9uJywKKyAgICAnLVdsLC1VLF9f X2FzYW5fdW5wb2lzb25fbWVtb3J5X3JlZ2lvbicsCisgIF0KK2VuZGlmCisKICMgTm90IHVzaW5n IGJvdGhfbGlicmFyaWVzKCkgaGVyZSBhcwogIyAxKSByZXNvdXJjZSBmaWxlcyBzaG91bGQgb25s eSBiZSBpbiB0aGUgc2hhcmVkIGxpYnJhcnkKICMgMikgd2Ugd2FudCB0aGUgLnBjIGZpbGUgdG8g aW5jbHVkZSBhIGRlcGVuZGVuY3kgdG8ge3BncG9ydCxjb21tb259X3N0YXRpYyBmb3IKQEAgLTgx LDcgKzkwLDEwIEBAIGxpYnBxX3NvID0gc2hhcmVkX2xpYnJhcnkoJ2xpYnBxJywKICAgZGFyd2lu X3ZlcnNpb25zOiBbJzUnLCAnNS4nICsgcGdfdmVyc2lvbl9tYWpvci50b19zdHJpbmcoKV0sCiAg IGRlcGVuZGVuY2llczogW2Zyb250ZW5kX3NobGliX2NvZGUsIGxpYnBxX2RlcHNdLAogICBsaW5r X2RlcGVuZHM6IGV4cG9ydF9maWxlLAotICBsaW5rX2FyZ3M6IGV4cG9ydF9mbXQuZm9ybWF0KGV4 cG9ydF9maWxlLmZ1bGxfcGF0aCgpKSwKKyAgbGlua19hcmdzOiBbCisgICAgZXhwb3J0X2ZtdC5m b3JtYXQoZXhwb3J0X2ZpbGUuZnVsbF9wYXRoKCkpLAorICAgIGxpYnBxX2xpbmtfYXJncywKKyAg XSwKICAga3dhcmdzOiBkZWZhdWx0X2xpYl9hcmdzLAogKQogbGlicHFfdGFyZ2V0cyArPSBsaWJw cV9zbwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvTWFrZWZpbGUgYi9zcmMvaW50 ZXJmYWNlcy9saWJwcS9NYWtlZmlsZQppbmRleCAwOTYzOTk1ZWVkNC4uNDU1MDRmY2ZkNjEgMTAw NjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL01ha2VmaWxlCisrKyBiL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL01ha2VmaWxlCkBAIC0yOSw2ICsyOSwxMiBAQCBpZm5lcSAoJChQT1JUTkFNRSks IHdpbjMyKQogb3ZlcnJpZGUgQ0ZMQUdTICs9ICQoUFRIUkVBRF9DRkxBR1MpCiBlbmRpZgogCitp ZmVxICgkKFBPUlROQU1FKSxkYXJ3aW4pCisjIFRPRE8gc3RhdGljbGliIHRvby4uLgorb3ZlcnJp ZGUgTERGTEFHUyArPSAtV2wsLVUsX19fYXNhbl9wb2lzb25fbWVtb3J5X3JlZ2lvbgorb3ZlcnJp ZGUgTERGTEFHUyArPSAtV2wsLVUsX19fYXNhbl91bnBvaXNvbl9tZW1vcnlfcmVnaW9uCitlbmRp ZgorCiBPQkpTID0gXAogCSQoV0lOMzJSRVMpIFwKIAlmZS1hdXRoLXNjcmFtLm8gXApkaWZmIC0t Z2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5oIGIvc3JjL2ludGVyZmFj ZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5oCmluZGV4IDUxMTI4NDYxNGY3Li4yYjIyZDIzZmZkZSAx MDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5oCisrKyBiL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguaApAQCAtMzQsNiArMzQsNyBAQCB0eXBl ZGVmIHN0cnVjdAogCVBHY29ubgkgICAqY29ubjsKIAl2b2lkCSAgICphc3luY19jdHg7CiAKKwli b29sCQl2MTsKIAlib29sCQlidWlsdGluOwogCXZvaWQJICAgKmJ1aWx0aW5fZmxvdzsKIH0gZmVf b2F1dGhfc3RhdGU7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9h dXRoLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmMKaW5kZXggOTA0ZjQz ZTkwZWEuLjNiNWUyODk4NjQ5IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1h dXRoLW9hdXRoLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jCkBA IC0yNyw2ICsyNywxMSBAQAogI2luY2x1ZGUgImZlLWF1dGgtb2F1dGguaCIKICNpbmNsdWRlICJt Yi9wZ193Y2hhci5oIgogI2luY2x1ZGUgInBnX2NvbmZpZ19wYXRocy5oIgorI2luY2x1ZGUgInV0 aWxzL21lbWRlYnVnLmgiCisKK3N0YXRpYyBpbnQJZG9fYXN5bmMoZmVfb2F1dGhfc3RhdGUgKnN0 YXRlLCBQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1ZXN0KTsKK3N0YXRpYyB2b2lkIGRvX2Ns ZWFudXAoZmVfb2F1dGhfc3RhdGUgKnN0YXRlLCBQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1 ZXN0KTsKK3N0YXRpYyB2b2lkIHBvaXNvbl9yZXFfdjIoUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAq cmVxdWVzdCwgYm9vbCBwb2lzb24pOwogCiAvKiBUaGUgZXhwb3J0ZWQgT0F1dGggY2FsbGJhY2sg bWVjaGFuaXNtLiAqLwogc3RhdGljIHZvaWQgKm9hdXRoX2luaXQoUEdjb25uICpjb25uLCBjb25z dCBjaGFyICpwYXNzd29yZCwKQEAgLTc0MSw5ICs3NDYsNyBAQCBydW5fb2F1dGhfZmxvdyhQR2Nv bm4gKmNvbm4pCiAJCXJldHVybiBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKIAl9CiAKLQlzdGF0dXMg PSByZXF1ZXN0LT52MS5hc3luYyhjb25uLAotCQkJCQkJCSAgIChQR29hdXRoQmVhcmVyUmVxdWVz dCAqKSByZXF1ZXN0LAotCQkJCQkJCSAgICZjb25uLT5hbHRzb2NrKTsKKwlzdGF0dXMgPSBkb19h c3luYyhzdGF0ZSwgcmVxdWVzdCk7CiAKIAlpZiAoc3RhdHVzID09IFBHUkVTX1BPTExJTkdfRkFJ TEVEKQogCXsKQEAgLTgwNCw4ICs4MDcsNyBAQCBjbGVhbnVwX29hdXRoX2Zsb3coUEdjb25uICpj b25uKQogCiAJQXNzZXJ0KHJlcXVlc3QpOwogCi0JaWYgKHJlcXVlc3QtPnYxLmNsZWFudXApCi0J CXJlcXVlc3QtPnYxLmNsZWFudXAoY29ubiwgKFBHb2F1dGhCZWFyZXJSZXF1ZXN0ICopIHJlcXVl c3QpOworCWRvX2NsZWFudXAoc3RhdGUsIHJlcXVlc3QpOwogCWNvbm4tPmFsdHNvY2sgPSBQR0lO VkFMSURfU09DS0VUOwogCiAJZnJlZShyZXF1ZXN0KTsKQEAgLTEwMTEsNyArMTAxMywxNCBAQCBz ZXR1cF90b2tlbl9yZXF1ZXN0KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQog CSAqLwogCXJlcyA9IFBRYXV0aERhdGFIb29rKFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VO X1YyLCBjb25uLCAmcmVxdWVzdCk7CiAJaWYgKHJlcyA9PSAwKQorCXsKKwkJcG9pc29uX3JlcV92 MigmcmVxdWVzdCwgdHJ1ZSk7CisKIAkJcmVzID0gUFFhdXRoRGF0YUhvb2soUFFBVVRIREFUQV9P QVVUSF9CRUFSRVJfVE9LRU4sIGNvbm4sICZyZXF1ZXN0KTsKKwkJc3RhdGUtPnYxID0gKHJlcyAh PSAwKTsKKworCQlwb2lzb25fcmVxX3YyKCZyZXF1ZXN0LCBmYWxzZSk7CisJfQogCWlmIChyZXMg PT0gMCkKIAl7CiAJCXN0YXRlLT5idWlsdGluID0gdHJ1ZTsKQEAgLTEwMzcsOCArMTA0Niw3IEBA IHNldHVwX3Rva2VuX3JlcXVlc3QoUEdjb25uICpjb25uLCBmZV9vYXV0aF9zdGF0ZSAqc3RhdGUp CiAJCQl9CiAKIAkJCS8qIHNob3J0LWNpcmN1aXQgKi8KLQkJCWlmIChyZXF1ZXN0LnYxLmNsZWFu dXApCi0JCQkJcmVxdWVzdC52MS5jbGVhbnVwKGNvbm4sIChQR29hdXRoQmVhcmVyUmVxdWVzdCAq KSAmcmVxdWVzdCk7CisJCQlkb19jbGVhbnVwKHN0YXRlLCAmcmVxdWVzdCk7CiAJCQlyZXR1cm4g dHJ1ZTsKIAkJfQogCkBAIC0xMDY5LDggKzEwNzcsNyBAQCBzZXR1cF90b2tlbl9yZXF1ZXN0KFBH Y29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQogCXJldHVybiB0cnVlOwogCiBmYWls OgotCWlmIChyZXF1ZXN0LnYxLmNsZWFudXApCi0JCXJlcXVlc3QudjEuY2xlYW51cChjb25uLCAo UEdvYXV0aEJlYXJlclJlcXVlc3QgKikgJnJlcXVlc3QpOworCWRvX2NsZWFudXAoc3RhdGUsICZy ZXF1ZXN0KTsKIAlyZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE0MjEsMyArMTQyOCwxMjMgQEAgb2F1 dGhfdW5zYWZlX2RlYnVnZ2luZ19lbmFibGVkKHZvaWQpCiAKIAlyZXR1cm4gKGVudiAmJiBzdHJj bXAoZW52LCAiVU5TQUZFIikgPT0gMCk7CiB9CisKKy8qCisgKiBIb29rIHYxIFBvaXNvbmluZwor ICoKKyAqIFRyeSB0byBjYXRjaCBtaXN1c2VzIG9mIHRoZSB2MSBQUUFVVEhEQVRBX09BVVRIX0JF QVJFUl9UT0tFTiBob29rIGFuZCBpdHMKKyAqIGNhbGxiYWNrcywgd2hpY2ggYXJlIG5vdCBhbGxv d2VkIHRvIGRvd25jYXN0IHRoZWlyIHJlcXVlc3QgYXJndW1lbnQgdG8KKyAqIFBHb2F1dGhCZWFy ZXJSZXF1ZXN0VjIuIChTdWNoIGNsaWVudHMgbWF5IGNyYXNoIG9yIHdvcnNlIHdoZW4gc3BlYWtp bmcgdG8KKyAqIGxpYnBxIDE4LikKKyAqCisgKiBUaGlzIGF0dGVtcHRzIHRvIHVzZSBWYWxncmlu ZCBhbmQgQWRkcmVzc1Nhbml0aXplciBob29rcywgaWYgcHJlc2VudCwgdG8gbWFyaworICogdGhl IGV4dHJhIG1lbWJlcnMgYXMgaW5hY2Nlc3NpYmxlLiBGb3IgdW5pbnN0cnVtZW50ZWQgYnVpbGRz LCBpdCBhbHNvIG11bmdlcworICogcmVxdWVzdC0+aXNzdWVyIHRvIHRyeSB0byBjcmFzaCBjbGll bnRzIHRoYXQgcGVyZm9ybSBzdHJpbmcgb3BlcmF0aW9ucywgYW5kCisgKiBpdCBhYm9ydHMgaWYg cmVxdWVzdC0+ZXJyb3IgaXMgc2V0LgorICovCisKKyNpZiBkZWZpbmVkKF9faGFzX2F0dHJpYnV0 ZSkgJiYgX19oYXNfYXR0cmlidXRlKHdlYWspCit2b2lkCQlfX2FzYW5fcG9pc29uX21lbW9yeV9y ZWdpb24odm9pZCBjb25zdCB2b2xhdGlsZSAqYWRkciwgc2l6ZV90IHNpemUpIF9fYXR0cmlidXRl X18oKHdlYWspKTsKK3ZvaWQJCV9fYXNhbl91bnBvaXNvbl9tZW1vcnlfcmVnaW9uKHZvaWQgY29u c3Qgdm9sYXRpbGUgKmFkZHIsIHNpemVfdCBzaXplKSBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSk7Cisj ZWxzZQorc3RhdGljIHZvaWQgKCpjb25zdCBfX2FzYW5fcG9pc29uX21lbW9yeV9yZWdpb24pICh2 b2lkIGNvbnN0IHZvbGF0aWxlICphZGRyLCBzaXplX3Qgc2l6ZSkgPSBOVUxMOworc3RhdGljIHZv aWQgKCpjb25zdCBfX2FzYW5fdW5wb2lzb25fbWVtb3J5X3JlZ2lvbikgKHZvaWQgY29uc3Qgdm9s YXRpbGUgKmFkZHIsIHNpemVfdCBzaXplKSA9IE5VTEw7CisjZW5kaWYKKworI2RlZmluZSBNQVNL X0JJVFMgKCh1aW50cHRyX3QpIDB4NTVhYTU1YWE1NWFhNTVhYSkKKyNkZWZpbmUgUE9JU09OX01B U0socHRyKSAoKHZvaWQgKikgKCgodWludHB0cl90KSBwdHIpIF4gTUFTS19CSVRTKSkKKworLyoK KyAqIFdvcmtob3JzZSBmb3IgdjIgcmVxdWVzdCBwb2lzb25pbmcuIFRoaXMgbXVzdCBiZSBjYWxs ZWQgZXhhY3RseSB0d2ljZTogb25jZQorICogdG8gcG9pc29uLCBvbmNlIHRvIHVucG9pc29uLgor ICoKKyAqIE5COiBVbnBvaXNvbmluZyBtdXN0IHJlc3RvcmUgdGhlIHJlcXVlc3QgdG8gaXRzIG9y aWdpbmFsIHN0YXRlLCBiZWNhdXNlIHdlCisgKiBtaWdodCBzdGlsbCBzd2l0Y2ggYmFjayB0byBh IHYyIGltcGxlbWVudGF0aW9uIGludGVybmFsbHkuIERvbid0IGRvIGFueXRoaW5nCisgKiBkZXN0 cnVjdGl2ZSBkdXJpbmcgdGhlIHBvaXNvbiBvcGVyYXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCitw b2lzb25fcmVxX3YyKFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcXVlc3QsIGJvb2wgcG9pc29u KQoreworCXZvaWQJICAgKmNvbnN0IGJhc2UgPSAoY2hhciAqKSByZXF1ZXN0ICsgc2l6ZW9mKHJl cXVlc3QtPnYxKTsKKwljb25zdCBzaXplX3QgbGVuID0gc2l6ZW9mKCpyZXF1ZXN0KSAtIHNpemVv ZihyZXF1ZXN0LT52MSk7CisKKwlpZiAocG9pc29uKQorCXsKKwkJLyogUG9pc29uIHJlcXVlc3Qt Pmlzc3VlciB3aXRoIGEgbWFzayB0byBoZWxwIHVuaW5zdHJ1bWVudGVkIGJ1aWxkcy4gKi8KKwkJ cmVxdWVzdC0+aXNzdWVyID0gUE9JU09OX01BU0socmVxdWVzdC0+aXNzdWVyKTsKKworCQlWQUxH UklORF9NQUtFX01FTV9OT0FDQ0VTUyhiYXNlLCBsZW4pOworCQlpZiAoX19hc2FuX3BvaXNvbl9t ZW1vcnlfcmVnaW9uKQorCQkJX19hc2FuX3BvaXNvbl9tZW1vcnlfcmVnaW9uKGJhc2UsIGxlbik7 CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIFhYWCBVc2luZyBERUZJTkVEIGhlcmUgaXMgdGVj aG5pY2FsbHkgdG9vIGxheDsgd2UgbWlnaHQgY2F0Y2gKKwkJICogc3RydWN0IHBhZGRpbmcgaW4g dGhlIGJsYXN0IHJhZGl1cy4gQnV0IHNpbmNlIHRoaXMgQVBJIGhhcyB0bworCQkgKiBwb2lzb24g c3RhY2sgYWRkcmVzc2VzLCBhbmQgVmFsZ3JpbmQgY2FuJ3QgdHJhY2svbWFuYWdlIHVuZGVmaW5l ZAorCQkgKiBzdGFjayByZWdpb25zLCB3ZSBjYW4ndCBiZSBhbnkgc3RyaWN0ZXIgd2l0aG91dCB0 cmFja2luZyB0aGUKKwkJICogb3JpZ2luYWwgc3RhdGUgb2YgdGhlIG1lbW9yeS4KKwkJICovCisJ CVZBTEdSSU5EX01BS0VfTUVNX0RFRklORUQoYmFzZSwgbGVuKTsKKwkJaWYgKF9fYXNhbl91bnBv aXNvbl9tZW1vcnlfcmVnaW9uKQorCQkJX19hc2FuX3VucG9pc29uX21lbW9yeV9yZWdpb24oYmFz ZSwgbGVuKTsKKworCQkvKiBVbmRvIG91ciBtYXNrLiAqLworCQlyZXF1ZXN0LT5pc3N1ZXIgPSBQ T0lTT05fTUFTSyhyZXF1ZXN0LT5pc3N1ZXIpOworCisJCS8qCisJCSAqIEZvciB1bmluc3RydW1l bnRlZCBidWlsZHMsIG1ha2Ugc3VyZSByZXF1ZXN0LT5lcnJvciB3YXNuJ3QgdG91Y2hlZC4KKwkJ ICovCisJCWlmIChyZXF1ZXN0LT5lcnJvcikKKwkJeworCQkJZnByaW50ZihzdGRlcnIsCisJCQkJ CSJhYm9ydCEgb3V0LW9mLWJvdW5kcyB3cml0ZSB0byBQR29hdXRoQmVhcmVyUmVxdWVzdCBieSBQ UUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTiBob29rXG4iKTsKKwkJCWFib3J0KCk7CisJCX0K Kwl9Cit9CisKKy8qCisgKiBXcmFwcGVyIGFyb3VuZCBQR29hdXRoQmVhcmVyUmVxdWVzdC5hc3lu YygpIHdoaWNoIGFwcGxpZXMgcG9pc29uIGR1cmluZyB0aGUKKyAqIGNhbGxiYWNrIHdoZW4gbmVj ZXNzYXJ5LgorICovCitzdGF0aWMgaW50Citkb19hc3luYyhmZV9vYXV0aF9zdGF0ZSAqc3RhdGUs IFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcXVlc3QpCit7CisJUEdjb25uCSAgICpjb25uID0g c3RhdGUtPmNvbm47CisJaW50CQkJcmV0OworCisJQXNzZXJ0KHJlcXVlc3QtPnYxLmFzeW5jKTsK KworCWlmIChzdGF0ZS0+djEpCisJCXBvaXNvbl9yZXFfdjIocmVxdWVzdCwgdHJ1ZSk7CisKKwly ZXQgPSByZXF1ZXN0LT52MS5hc3luYyhjb25uLAorCQkJCQkJCShQR29hdXRoQmVhcmVyUmVxdWVz dCAqKSByZXF1ZXN0LAorCQkJCQkJCSZjb25uLT5hbHRzb2NrKTsKKworCWlmIChzdGF0ZS0+djEp CisJCXBvaXNvbl9yZXFfdjIocmVxdWVzdCwgZmFsc2UpOworCisJcmV0dXJuIHJldDsKK30KKwor LyoKKyAqIFNpbWlsYXIgd3JhcHBlciBmb3IgdGhlIG9wdGlvbmFsIFBHb2F1dGhCZWFyZXJSZXF1 ZXN0LmNsZWFudXAoKSBjYWxsYmFjay4KKyAqIERvZXMgbm90aGluZyBpZiBvbmUgaXMgbm90IGRl ZmluZWQuCisgKi8KK3N0YXRpYyB2b2lkCitkb19jbGVhbnVwKGZlX29hdXRoX3N0YXRlICpzdGF0 ZSwgUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVzdCkKK3sKKwlpZiAoIXJlcXVlc3QtPnYx LmNsZWFudXApCisJCXJldHVybjsKKworCWlmIChzdGF0ZS0+djEpCisJCXBvaXNvbl9yZXFfdjIo cmVxdWVzdCwgdHJ1ZSk7CisKKwlyZXF1ZXN0LT52MS5jbGVhbnVwKHN0YXRlLT5jb25uLCAoUEdv YXV0aEJlYXJlclJlcXVlc3QgKikgcmVxdWVzdCk7CisKKwlpZiAoc3RhdGUtPnYxKQorCQlwb2lz b25fcmVxX3YyKHJlcXVlc3QsIGZhbHNlKTsKK30KLS0gCjIuMzQuMQoK --000000000000bab6b3064c25f1fe Content-Type: application/octet-stream; name="v5-0007-WIP-Introduce-third-party-OAuth-flow-plugins.patch" Content-Disposition: attachment; filename="v5-0007-WIP-Introduce-third-party-OAuth-flow-plugins.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmb5rnzo7 RnJvbSAzZDZkMDkwMWY3ZTg5YjkyM2Y2ZWVkODRjNzc0MTIyMzBlYjFiMGU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAzIERlYyAyMDI1IDE1OjQ3OjIzIC0wODAwClN1YmplY3Q6 IFtQQVRDSCB2NSA3LzddIFdJUDogSW50cm9kdWNlIHRoaXJkLXBhcnR5IE9BdXRoIGZsb3cgcGx1 Z2lucz8KCltOb3QgaW50ZW5kZWQgZm9yIFBHMTkuXQoKVGhpcyBleHBlcmltZW50YWwgY29tbWl0 IHByb21vdGVzIHRoZSBwZ19zdGFydF9vYXV0aGJlYXJlciBBUEkgdG8gYQpwdWJsaWMgaGVhZGVy IChsaWJwcS1vYXV0aC5oKSBhbmQgYWRkcyBhIFBHT0FVVEhNT0RVTEUgZW52aXJvbm1lbnQKdmFy aWFibGUgdGhhdCBvdmVycmlkZXMgdGhlIGxvYWQgcGF0aCBmb3IgdGhlIHBsdWdpbiwgYWxsb3dp bmcgdXNlcnMgdG8KcHJvdmlkZSB0aGVpciBvd24uIFRoZSBsaWJwcV9vYXV0aF9pbml0IGZ1bmN0 aW9uIGlzIG5vdyBvcHRpb25hbCwgYW5kCndpbGwgcmVtYWluIHVuZG9jdW1lbnRlZC4gKE1vZHVs ZXMgdGhhdCBkb24ndCBwcm92aWRlIGl0IGFyZSBtYXJrZWQgYXMKdXNlci1kZWZpbmVkLikKClRo aXMgaXMgYSByZWxhdGl2ZWx5IHNtYWxsIGFtb3VudCBvZiBpbXBsZW1lbnRhdGlvbiBjaGFuZ2Us IGJ1dAp1bmZvcnR1bmF0ZWx5IHRoZSB0ZXN0cyBoYXZlIGEgbGFyZ2UgYW1vdW50IG9mIGNvZGUg bW90aW9uIHRvIGJlIGFibGUgdG8Kc2hhcmUgbG9naWMgYmV0d2VlbiB0aGUgdGVzdCBleGVjdXRh YmxlIGFuZCBwbHVnaW4uIEkgbWlnaHQgbmVlZCB0bwpzcGxpdCB0aGF0IGludG8gbXVsdGlwbGUg c3F1YXNoISBjb21taXRzIHRvIG1ha2UgaXQgbW9yZSBlYXNpbHkKcmV2aWV3YWJsZS4KClRPRE86 IGZpZ3VyZSBvdXQgUEdETExFWFBPUlQsIHdoaWNoIHdlIGRvIG5vdCBjdXJyZW50bHkgcHJvdmlk ZSBwdWJsaWNseQpUT0RPOiBsb2NrIGRvd24gUEdPQVVUSE1PRFVMRSBhcyBuZWNlc3NhcnkgdG8g YXZvaWQgaW50cm9kdWNpbmcgZXhjaXRpbmcKICAgICAgbmV3IHZ1bG5lcmFiaWxpdGllcwpUT0RP OiBob3cgaGFyZCB3b3VsZCBpdCBiZSB0byBzdXBwb3J0IFdpbmRvd3MgaGVyZT8KClJldmlld2Vk LWJ5OiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEuY29tPgpEaXNjdXNzaW9u OiBodHRwczovL3Bvc3Rnci5lcy9tL0NBT1ltaSUyQm1yR2clMkJuX1gyTU9MZ2VXY2ozdl9NMDBn Ujh1el9EN21NOHolM0RkWDFKWVZiZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2ludGVyZmFj ZXMvbGlicHEvbWVzb24uYnVpbGQgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbnRlcmZhY2Vz L2xpYnBxL01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW50ZXJmYWNlcy9s aWJwcS1vYXV0aC9vYXV0aC1jdXJsLmggICAgICAgfCAgMjQgLS0KIHNyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLWF1dGgtb2F1dGguaCAgICAgICAgICB8ICAgMiArLQogc3JjL2ludGVyZmFjZXMvbGli cHEvbGlicHEtb2F1dGguaCAgICAgICAgICAgIHwgIDUyICsrKwogc3JjL2ludGVyZmFjZXMvbGli cHEtb2F1dGgvb2F1dGgtY3VybC5jICAgICAgIHwgICAyICstCiBzcmMvaW50ZXJmYWNlcy9saWJw cS9mZS1hdXRoLW9hdXRoLmMgICAgICAgICAgfCAxMjYgKysrKy0tCiBzcmMvdGVzdC9tb2R1bGVz L29hdXRoX3ZhbGlkYXRvci9tZXNvbi5idWlsZCAgfCAgMTUgKwogc3JjL3Rlc3QvbW9kdWxlcy9v YXV0aF92YWxpZGF0b3IvTWFrZWZpbGUgICAgIHwgIDEwICstCiAuLi4vb2F1dGhfdmFsaWRhdG9y L29hdXRoX3Rlc3RfY29tbW9uLmggICAgICAgfCAgMjYgKysKIHNyYy90ZXN0L21vZHVsZXMvb2F1 dGhfdmFsaWRhdG9yL29hdXRoX2Zsb3cuYyB8ICA3MiArKysrCiAuLi4vb2F1dGhfdmFsaWRhdG9y L29hdXRoX2hvb2tfY2xpZW50LmMgICAgICAgfCAzMTkgKy0tLS0tLS0tLS0tLS0tCiAuLi4vb2F1 dGhfdmFsaWRhdG9yL29hdXRoX3Rlc3RfY29tbW9uLmMgICAgICAgfCAzNzQgKysrKysrKysrKysr KysrKysrCiAuLi4vbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDJfY2xpZW50LnBsICAgfCAg NTcgKystCiAxNCBmaWxlcyBjaGFuZ2VkLCA2OTYgaW5zZXJ0aW9ucygrKSwgMzg2IGRlbGV0aW9u cygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRo LWN1cmwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLW9h dXRoLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRv ci9vYXV0aF90ZXN0X2NvbW1vbi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxl cy9vYXV0aF92YWxpZGF0b3Ivb2F1dGhfZmxvdy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Ivb2F1dGhfdGVzdF9jb21tb24uYwoKZGlmZiAtLWdp dCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL21lc29uLmJ1aWxkIGIvc3JjL2ludGVyZmFjZXMvbGli cHEvbWVzb24uYnVpbGQKaW5kZXggY2YzMTI1NDE0YzUuLjgwNTBjN2ZlMDhiIDEwMDY0NAotLS0g YS9zcmMvaW50ZXJmYWNlcy9saWJwcS9tZXNvbi5idWlsZAorKysgYi9zcmMvaW50ZXJmYWNlcy9s aWJwcS9tZXNvbi5idWlsZApAQCAtMTQ3LDYgKzE0Nyw3IEBAIHBrZ2NvbmZpZy5nZW5lcmF0ZSgK IGluc3RhbGxfaGVhZGVycygKICAgJ2xpYnBxLWZlLmgnLAogICAnbGlicHEtZXZlbnRzLmgnLAor ICAnbGlicHEtb2F1dGguaCcsCiApCiAKIGluc3RhbGxfaGVhZGVycygKZGlmZiAtLWdpdCBhL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL01ha2VmaWxlIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvTWFrZWZp bGUKaW5kZXggNDU1MDRmY2ZkNjEuLjZhMTZlZTNkOTNkIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJm YWNlcy9saWJwcS9NYWtlZmlsZQorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZQpA QCAtMTYzLDYgKzE2Myw3IEBAICQodG9wX2J1aWxkZGlyKS9zcmMvcG9ydC9wZ19jb25maWdfcGF0 aHMuaDoKIGluc3RhbGw6IGFsbCBpbnN0YWxsZGlycyBpbnN0YWxsLWxpYgogCSQoSU5TVEFMTF9E QVRBKSAkKHNyY2RpcikvbGlicHEtZmUuaCAnJChERVNURElSKSQoaW5jbHVkZWRpciknCiAJJChJ TlNUQUxMX0RBVEEpICQoc3JjZGlyKS9saWJwcS1ldmVudHMuaCAnJChERVNURElSKSQoaW5jbHVk ZWRpciknCisJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9saWJwcS1vYXV0aC5oICckKERFU1RE SVIpJChpbmNsdWRlZGlyKScKIAkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL2xpYnBxLWludC5o ICckKERFU1RESVIpJChpbmNsdWRlZGlyX2ludGVybmFsKScKIAkkKElOU1RBTExfREFUQSkgJChz cmNkaXIpL2ZlLWF1dGgtc2FzbC5oICckKERFU1RESVIpJChpbmNsdWRlZGlyX2ludGVybmFsKScK IAkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL3BxZXhwYnVmZmVyLmggJyQoREVTVERJUikkKGlu Y2x1ZGVkaXJfaW50ZXJuYWwpJwpAQCAtMTg1LDYgKzE4Niw3IEBAIGluc3RhbGxkaXJzOiBpbnN0 YWxsZGlycy1saWIKIHVuaW5zdGFsbDogdW5pbnN0YWxsLWxpYgogCXJtIC1mICckKERFU1RESVIp JChpbmNsdWRlZGlyKS9saWJwcS1mZS5oJwogCXJtIC1mICckKERFU1RESVIpJChpbmNsdWRlZGly KS9saWJwcS1ldmVudHMuaCcKKwlybSAtZiAnJChERVNURElSKSQoaW5jbHVkZWRpcikvbGlicHEt b2F1dGguaCcKIAlybSAtZiAnJChERVNURElSKSQoaW5jbHVkZWRpcl9pbnRlcm5hbCkvbGlicHEt aW50LmgnCiAJcm0gLWYgJyQoREVTVERJUikkKGluY2x1ZGVkaXJfaW50ZXJuYWwpL2ZlLWF1dGgt c2FzbC5oJwogCXJtIC1mICckKERFU1RESVIpJChpbmNsdWRlZGlyX2ludGVybmFsKS9wcWV4cGJ1 ZmZlci5oJwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3Vy bC5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5oCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAxZDRkZDc2NjIxNy4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjL2lu dGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5oCisrKyAvZGV2L251bGwKQEAgLTEsMjQg KzAsMCBAQAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKgotICogb2F1dGgtY3VybC5oCi0gKgotICoJ ICBEZWZpbml0aW9ucyBmb3IgT0F1dGggRGV2aWNlIEF1dGhvcml6YXRpb24gbW9kdWxlCi0gKgot ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMg b2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQotICoKLSAqIHNyYy9pbnRlcmZhY2VzL2xp YnBxLW9hdXRoL29hdXRoLWN1cmwuaAotICoKLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICovCi0KLSNp Zm5kZWYgT0FVVEhfQ1VSTF9ICi0jZGVmaW5lIE9BVVRIX0NVUkxfSAotCi0jaW5jbHVkZSAibGli cHEtZmUuaCIKLQotLyogRXhwb3J0ZWQgZmxvdyBjYWxsYmFjay4gKi8KLWV4dGVybiBQR0RMTEVY UE9SVCBpbnQgcGdfc3RhcnRfb2F1dGhiZWFyZXIoUEdjb25uICpjb25uLAotCQkJCQkJCQkJCQlQ R29hdXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1ZXN0KTsKLQotI2VuZGlmCQkJCQkJCS8qIE9BVVRI X0NVUkxfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0 aC5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5oCmluZGV4IDJiMjJkMjNm ZmRlLi44NzJmNWRmNTUxYSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0 aC1vYXV0aC5oCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguaApAQCAt MzYsNyArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdAogCiAJYm9vbAkJdjE7CiAJYm9vbAkJYnVpbHRp bjsKLQl2b2lkCSAgICpidWlsdGluX2Zsb3c7CisJdm9pZAkgICAqZmxvd19tb2R1bGU7CiB9IGZl X29hdXRoX3N0YXRlOwogCiBleHRlcm4gdm9pZCBwcUNsZWFyT0F1dGhUb2tlbihQR2Nvbm4gKmNv bm4pOwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtb2F1dGguaCBiL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLW9hdXRoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjJhNjJiMzMwYjFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2ludGVy ZmFjZXMvbGlicHEvbGlicHEtb2F1dGguaApAQCAtMCwwICsxLDUyIEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiBsaWJwcS1vYXV0aC5oCisgKgkgIFRoaXMgZmlsZSBjb250YWlucyBzdHJ1 Y3RzIGFuZCBmdW5jdGlvbnMgdXNlZCBieSBjdXN0b20gT0F1dGggcGx1Z2lucy4KKyAqCisgKiBD b3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisg KgorICogc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtb2F1dGguaAorICoKKyAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICovCisKKyNpZm5kZWYgTElCUFFfT0FVVEhfSAorI2RlZmluZSBMSUJQUV9PQVVU SF9ICisKKyNpbmNsdWRlICJsaWJwcS1mZS5oIgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVy biAiQyIKK3sKKyNlbmRpZgorCisvKiBYWFggY2FuJ3QgcmVseSBvbiBjLmgsIGJ1dCBkdXBsaWNh dGluZyB0aGlzIGlzIGFza2luZyBmb3IgdHJvdWJsZSAqLworI2lmbmRlZiBQR0RMTEVYUE9SVAor I2lmZGVmIF9XSU4zMgorI2RlZmluZSBQR0RMTEVYUE9SVCBfX2RlY2xzcGVjIChkbGxleHBvcnQp CisjZWxpZiBkZWZpbmVkKF9faGFzX2F0dHJpYnV0ZSkKKyNpZiBfX2hhc19hdHRyaWJ1dGUodmlz aWJpbGl0eSkKKyNkZWZpbmUgUEdETExFWFBPUlQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi ZGVmYXVsdCIpKSkKKyNlbHNlCisjZGVmaW5lIFBHRExMRVhQT1JUCisjZW5kaWYKKyNlbHNlCisj ZGVmaW5lIFBHRExMRVhQT1JUCisjZW5kaWYKKyNlbmRpZgorCisvKgorICogVjEgQVBJCisgKgor ICogRmxvdyBwbHVnaW5zIG11c3QgcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGNh bGxiYWNrLgorICoKKyAqIFRPRE86IHByb3ZpZGUgYSBtYWdpYyBzdHJ1Y3QgdGhhdCBhbGxvd3Mg YmFja3dhcmRzIGJ1dCBub3QgZm9yd2FyZHMgY29tcGF0PworICovCitleHRlcm4gUEdETExFWFBP UlQgaW50IHBnX3N0YXJ0X29hdXRoYmVhcmVyKFBHY29ubiAqY29ubiwKKwkJCQkJCQkJCQkJUEdv YXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVzdCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQor I2VuZGlmCisKKyNlbmRpZgkJCQkJCQkvKiBMSUJQUV9PQVVUSF9IICovCmRpZmYgLS1naXQgYS9z cmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmMgYi9zcmMvaW50ZXJmYWNlcy9s aWJwcS1vYXV0aC9vYXV0aC1jdXJsLmMKaW5kZXggMDUyZWNkMzJkYTIuLjQwMGNhMDdjMjk3IDEw MDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmMKKysrIGIv c3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5jCkBAIC0yOSw4ICsyOSw4IEBA CiAjZW5kaWYKIAogI2luY2x1ZGUgImNvbW1vbi9qc29uYXBpLmgiCisjaW5jbHVkZSAibGlicHEt b2F1dGguaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgotI2luY2x1ZGUgIm9hdXRoLWN1cmwu aCIKIAogI2lmZGVmIFVTRV9EWU5BTUlDX09BVVRICiAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgt b2F1dGguYwppbmRleCAzYjVlMjg5ODY0OS4uMDExMDRlZWY0M2MgMTAwNjQ0Ci0tLSBhL3NyYy9p bnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJw cS9mZS1hdXRoLW9hdXRoLmMKQEAgLTE3LDYgKzE3LDggQEAKIAogI2lmZGVmIFVTRV9EWU5BTUlD X09BVVRICiAjaW5jbHVkZSA8ZGxmY24uaD4KKyNlbHNlCisjaW5jbHVkZSAibGlicHEtb2F1dGgu aCIKICNlbmRpZgogCiAjaW5jbHVkZSAiY29tbW9uL2Jhc2U2NC5oIgpAQCAtODgyLDQxICs4ODQs NjggQEAgdXNlX2J1aWx0aW5fZmxvdyhQR2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0 ZSwgUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmUKIAkgKiBPbiB0aGUgb3RoZXIgcGxhdGZvcm1z LCBsb2FkIHRoZSBtb2R1bGUgdXNpbmcgb25seSB0aGUgYmFzZW5hbWUsIHRvCiAJICogcmVseSBv biB0aGUgcnVudGltZSBsaW5rZXIncyBzdGFuZGFyZCBzZWFyY2ggYmVoYXZpb3IuCiAJICovCi0J Y29uc3QgY2hhciAqY29uc3QgbW9kdWxlX25hbWUgPQorCWNvbnN0IGNoYXIgKm1vZHVsZV9uYW1l ID0KICNpZiBkZWZpbmVkKF9fZGFyd2luX18pCiAJCUxJQkRJUiAiL2xpYnBxLW9hdXRoIiBETFNV RkZJWDsKICNlbHNlCiAJCSJsaWJwcS1vYXV0aCIgRExTVUZGSVg7CiAjZW5kaWYKIAotCXN0YXRl LT5idWlsdGluX2Zsb3cgPSBkbG9wZW4obW9kdWxlX25hbWUsIFJUTERfTk9XIHwgUlRMRF9MT0NB TCk7Ci0JaWYgKCFzdGF0ZS0+YnVpbHRpbl9mbG93KQorCS8qLQorCSAqIEFkZGl0aW9uYWxseSwg dGhlIHVzZXIgbWF5IG92ZXJyaWRlIHRoZSBtb2R1bGUgcGF0aCBleHBsaWNpdGx5IHRvIGJlCisJ ICogYWJsZSB0byBwcm92aWRlIHRoZWlyIG93biBtb2R1bGUsIHZpYSBQR09BVVRITU9EVUxFLgor CSAqCisJICogVE9ETzogaGF2ZSB0byB0aGluayBhYm91dCBfYWxsXyB0aGUgc2VjdXJpdHkgcmFt aWZpY2F0aW9ucyBvZiB0aGlzLiBXaGF0CisJICogZXhpc3RpbmcgcHJvdGVjdGlvbnMgaW4gTERf TElCUkFSWV9QQVRIIChhbmQvb3IgU0lQKSBhcmUgd2UgcG90ZW50aWFsbHkKKwkgKiBieXBhc3Np bmc/IFNob3VsZCB3ZSBjaGVjayB0aGUgcGVybWlzc2lvbnMgb2YgdGhlIGZpbGUgc29tZWhvdy4u Lj8KKwkgKiBUT0RPOiBtYXliZSBkaXNhbGxvdyBhbnl0aGluZyBub3QgdW5kZXJuZWF0aCBMSUJE SVI/IG9yIFBLR0xJQkRJUj8KKwkgKiBTaG91bGQgaXQgaGF2ZSBhIG5hbWluZyBjb252ZW50aW9u PworCSAqLworCWNvbnN0IGNoYXIgKmVudiA9IGdldGVudigiUEdPQVVUSE1PRFVMRSIpOworCisJ aWYgKGVudiAmJiBlbnZbMF0pCisJCW1vZHVsZV9uYW1lID0gZW52OworCWVsc2UKKwkJc3RhdGUt PmJ1aWx0aW4gPSB0cnVlOworCisJc3RhdGUtPmZsb3dfbW9kdWxlID0gZGxvcGVuKG1vZHVsZV9u YW1lLCBSVExEX05PVyB8IFJUTERfTE9DQUwpOworCWlmICghc3RhdGUtPmZsb3dfbW9kdWxlKQog CXsKIAkJLyoKIAkJICogRm9yIGVuZCB1c2VycywgdGhpcyBwcm9iYWJseSBpc24ndCBhbiBlcnJv ciBjb25kaXRpb24sIGl0IGp1c3QKIAkJICogbWVhbnMgdGhlIGZsb3cgaXNuJ3QgaW5zdGFsbGVk LiBEZXZlbG9wZXJzIGFuZCBwYWNrYWdlIG1haW50YWluZXJzCi0JCSAqIG1heSB3YW50IHRvIGRl YnVnIHRoaXMgdmlhIHRoZSBQR09BVVRIREVCVUcgZW52dmFyLCB0aG91Z2guCisJCSAqIG1heSB3 YW50IHRvIGRlYnVnIHRoaXMgdmlhIHRoZSBQR09BVVRIREVCVUcgZW52dmFyLCB0aG91Z2gsIGFu ZCB3ZQorCQkgKiBzaG91bGQgYmUgbW9yZSBub2lzeSBpZiB1c2VycyB0cmllZCB0byBwcm92aWRl IGEgUEdPQVVUSE1PRFVMRS4KIAkJICoKIAkJICogTm90ZSB0aGF0IFBPU0lYIGRsZXJyb3IoKSBp c24ndCBndWFyYW50ZWVkIHRvIGJlIHRocmVhZHNhZmUuCiAJCSAqLwogCQlpZiAob2F1dGhfdW5z YWZlX2RlYnVnZ2luZ19lbmFibGVkKCkpCi0JCQlmcHJpbnRmKHN0ZGVyciwgImZhaWxlZCBkbG9w ZW4gZm9yIGxpYnBxLW9hdXRoOiAlc1xuIiwgZGxlcnJvcigpKTsKKwkJCWZwcmludGYoc3RkZXJy LCAiZmFpbGVkIGRsb3BlbiBmb3IgJXM6ICVzXG4iLCBtb2R1bGVfbmFtZSwgZGxlcnJvcigpKTsK KworCQlpZiAoc3RhdGUtPmJ1aWx0aW4pCisJCQlyZXR1cm4gMDsKIAotCQlyZXR1cm4gMDsKKwkJ cmVxdWVzdC0+ZXJyb3IgPSBsaWJwcV9nZXR0ZXh0KCJwbHVnaW4gY291bGQgbm90IGJlIGxvYWRl ZCIpOworCQlyZXR1cm4gLTE7CiAJfQogCi0JaWYgKChpbml0ID0gZGxzeW0oc3RhdGUtPmJ1aWx0 aW5fZmxvdywgImxpYnBxX29hdXRoX2luaXQiKSkgPT0gTlVMTAotCQl8fCAoc3RhcnRfZmxvdyA9 IGRsc3ltKHN0YXRlLT5idWlsdGluX2Zsb3csICJwZ19zdGFydF9vYXV0aGJlYXJlciIpKSA9PSBO VUxMKQorCWlmICgoc3RhcnRfZmxvdyA9IGRsc3ltKHN0YXRlLT5mbG93X21vZHVsZSwgInBnX3N0 YXJ0X29hdXRoYmVhcmVyIikpID09IE5VTEwpCiAJewogCQkvKgogCQkgKiBUaGlzIGlzIG1vcmUg b2YgYW4gZXJyb3IgY29uZGl0aW9uIHRoYW4gdGhlIG9uZSBhYm92ZSwgYnV0IGR1ZSB0bwogCQkg KiB0aGUgZGxlcnJvcigpIHRocmVhZHNhZmV0eSBpc3N1ZSwgbG9jayBpdCBiZWhpbmQgUEdPQVVU SERFQlVHIHRvby4KIAkJICovCiAJCWlmIChvYXV0aF91bnNhZmVfZGVidWdnaW5nX2VuYWJsZWQo KSkKLQkJCWZwcmludGYoc3RkZXJyLCAiZmFpbGVkIGRsc3ltIGZvciBsaWJwcS1vYXV0aDogJXNc biIsIGRsZXJyb3IoKSk7CisJCQlmcHJpbnRmKHN0ZGVyciwgImZhaWxlZCBkbHN5bSBmb3IgJXM6 ICVzXG4iLCBtb2R1bGVfbmFtZSwgZGxlcnJvcigpKTsKKworCQlkbGNsb3NlKHN0YXRlLT5mbG93 X21vZHVsZSk7CisJCXN0YXRlLT5mbG93X21vZHVsZSA9IE5VTEw7CisKKwkJaWYgKHN0YXRlLT5i dWlsdGluKQorCQkJcmV0dXJuIDA7CiAKLQkJZGxjbG9zZShzdGF0ZS0+YnVpbHRpbl9mbG93KTsK LQkJcmV0dXJuIDA7CisJCXJlcXVlc3QtPmVycm9yID0gbGlicHFfZ2V0dGV4dCgicGx1Z2luIGVu dHJ5IHBvaW50IGNvdWxkIG5vdCBiZSBsb2NhdGVkIik7CisJCXJldHVybiAtMTsKIAl9CiAKIAkv KgpAQCAtOTI1LDM0ICs5NTQsNTAgQEAgdXNlX2J1aWx0aW5fZmxvdyhQR2Nvbm4gKmNvbm4sIGZl X29hdXRoX3N0YXRlICpzdGF0ZSwgUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmUKIAkgKi8KIAog CS8qCi0JICogV2UgbmVlZCB0byBpbmplY3QgbmVjZXNzYXJ5IGZ1bmN0aW9uIHBvaW50ZXJzIGlu dG8gdGhlIG1vZHVsZS4gVGhpcwotCSAqIG9ubHkgbmVlZHMgdG8gYmUgZG9uZSBvbmNlIC0tIGV2 ZW4gaWYgdGhlIHBvaW50ZXJzIGFyZSBjb25zdGFudCwKLQkgKiBhc3NpZ25pbmcgdGhlbSB3aGls ZSBhbm90aGVyIHRocmVhZCBpcyBleGVjdXRpbmcgdGhlIGZsb3dzIGZlZWxzIGxpa2UKLQkgKiB0 ZW1wdGluZyBmYXRlLgorCSAqIE91ciBsaWJwcS1vYXV0aC5zbyBwcm92aWRlcyBhIHNwZWNpYWwg aW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIGxpYnBxCisJICogaW50ZWdyYXRpb24uIEl0J3Mg bm90IGEgcHJvYmxlbSBpZiB3ZSBkb24ndCBmaW5kIHRoaXM7IGl0IGp1c3QgbWVhbnMKKwkgKiB0 aGF0IGEgdXNlci1kZWZpbmVkIG1vZHVsZSBpcyBiZWluZyB1c2VkLgogCSAqLwotCWlmICgobG9j a2VyciA9IHB0aHJlYWRfbXV0ZXhfbG9jaygmaW5pdF9tdXRleCkpICE9IDApCisJaW5pdCA9IGRs c3ltKHN0YXRlLT5mbG93X21vZHVsZSwgImxpYnBxX29hdXRoX2luaXQiKTsKKworCWlmICghaW5p dCkKKwkJc3RhdGUtPmJ1aWx0aW4gPSBmYWxzZTsgLyogYWRqdXN0IG91ciBlcnJvciBtZXNzYWdl cyAqLworCWVsc2UKIAl7Ci0JCS8qIFNob3VsZCBub3QgaGFwcGVuLi4uIGJ1dCBkb24ndCBjb250 aW51ZSBpZiBpdCBkb2VzLiAqLwotCQlBc3NlcnQoZmFsc2UpOworCQkvKgorCQkgKiBXZSBuZWVk IHRvIGluamVjdCBuZWNlc3NhcnkgZnVuY3Rpb24gcG9pbnRlcnMgaW50byB0aGUgbW9kdWxlLiBU aGlzCisJCSAqIG9ubHkgbmVlZHMgdG8gYmUgZG9uZSBvbmNlIC0tIGV2ZW4gaWYgdGhlIHBvaW50 ZXJzIGFyZSBjb25zdGFudCwKKwkJICogYXNzaWduaW5nIHRoZW0gd2hpbGUgYW5vdGhlciB0aHJl YWQgaXMgZXhlY3V0aW5nIHRoZSBmbG93cyBmZWVscworCQkgKiBsaWtlIHRlbXB0aW5nIGZhdGUu CisJCSAqLworCQlpZiAoKGxvY2tlcnIgPSBwdGhyZWFkX211dGV4X2xvY2soJmluaXRfbXV0ZXgp KSAhPSAwKQorCQl7CisJCQkvKiBTaG91bGQgbm90IGhhcHBlbi4uLiBidXQgZG9uJ3QgY29udGlu dWUgaWYgaXQgZG9lcy4gKi8KKwkJCUFzc2VydChmYWxzZSk7CiAKLQkJbGlicHFfYXBwZW5kX2Nv bm5fZXJyb3IoY29ubiwgImZhaWxlZCB0byBsb2NrIG11dGV4ICglZCkiLCBsb2NrZXJyKTsKLQkJ cmV0dXJuIDA7Ci0JfQorCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwK KwkJCQkJCQkgICJ1c2VfYnVpbHRpbl9mbG93OiBmYWlsZWQgdG8gbG9jayBtdXRleCAoJWQpXG4i LAorCQkJCQkJCSAgbG9ja2Vycik7CiAKLQlpZiAoIWluaXRpYWxpemVkKQotCXsKLQkJaW5pdCgK KwkJCXJlcXVlc3QtPmVycm9yID0gIiI7CS8qIHNhdGlzZnkgcmVwb3J0X2Zsb3dfZXJyb3IoKSAq LworCQkJcmV0dXJuIC0xOworCQl9CisKKwkJaWYgKCFpbml0aWFsaXplZCkKKwkJeworCQkJaW5p dCgKICNpZmRlZiBFTkFCTEVfTkxTCi0JCQkgbGlicHFfZ2V0dGV4dAorCQkJCSBsaWJwcV9nZXR0 ZXh0CiAjZWxzZQotCQkJIE5VTEwKKwkJCQkgTlVMTAogI2VuZGlmCi0JCQkpOworCQkJCSk7CiAK LQkJaW5pdGlhbGl6ZWQgPSB0cnVlOwotCX0KKwkJCWluaXRpYWxpemVkID0gdHJ1ZTsKKwkJfQog Ci0JcHRocmVhZF9tdXRleF91bmxvY2soJmluaXRfbXV0ZXgpOworCQlwdGhyZWFkX211dGV4X3Vu bG9jaygmaW5pdF9tdXRleCk7CisJfQogCiAJcmV0dXJuIChzdGFydF9mbG93KGNvbm4sIHJlcXVl c3QpID09IDApID8gMSA6IC0xOwogfQpAQCAtOTY5LDYgKzEwMTQsNyBAQCBleHRlcm4gaW50CXBn X3N0YXJ0X29hdXRoYmVhcmVyKFBHY29ubiAqY29ubiwgUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAq cmVxdWVzdCk7CiBzdGF0aWMgaW50CiB1c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVf b2F1dGhfc3RhdGUgKnN0YXRlLCBQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1ZXN0KQogewor CXN0YXRlLT5idWlsdGluID0gdHJ1ZTsKIAlyZXR1cm4gKHBnX3N0YXJ0X29hdXRoYmVhcmVyKGNv bm4sIHJlcXVlc3QpID09IDApID8gMSA6IC0xOwogfQogCkBAIC0xMDIyLDEwICsxMDY4LDcgQEAg c2V0dXBfdG9rZW5fcmVxdWVzdChQR2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0ZSkK IAkJcG9pc29uX3JlcV92MigmcmVxdWVzdCwgZmFsc2UpOwogCX0KIAlpZiAocmVzID09IDApCi0J ewotCQlzdGF0ZS0+YnVpbHRpbiA9IHRydWU7CiAJCXJlcyA9IHVzZV9idWlsdGluX2Zsb3coY29u biwgc3RhdGUsICZyZXF1ZXN0KTsKLQl9CiAKIAlpZiAocmVzID4gMCkKIAl7CkBAIC0xMDYyLDE5 ICsxMTA1LDE4IEBAIHNldHVwX3Rva2VuX3JlcXVlc3QoUEdjb25uICpjb25uLCBmZV9vYXV0aF9z dGF0ZSAqc3RhdGUpCiAJCWNvbm4tPmFzeW5jX2F1dGggPSBydW5fb2F1dGhfZmxvdzsKIAkJY29u bi0+Y2xlYW51cF9hc3luY19hdXRoID0gY2xlYW51cF9vYXV0aF9mbG93OwogCQlzdGF0ZS0+YXN5 bmNfY3R4ID0gcmVxdWVzdF9jb3B5OworCisJCXJldHVybiB0cnVlOwogCX0KLQllbHNlIGlmIChy ZXMgPCAwKQotCXsKKworCS8qCisJICogRmFpbHVyZSBjYXNlczogZWl0aGVyIHdlIHRyaWVkIHRv IHNldCB1cCBhIGZsb3cgYW5kIGZhaWxlZCwgb3IgdGhlcmUKKwkgKiB3YXMgbm8gZmxvdyB0byB0 cnkuCisJICovCisJaWYgKHJlcyA8IDApCiAJCXJlcG9ydF9mbG93X2Vycm9yKGNvbm4sICZyZXF1 ZXN0KTsKLQkJZ290byBmYWlsOwotCX0KIAllbHNlCi0JewogCQlsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihjb25uLCAibm8gT0F1dGggZmxvd3MgYXJlIGF2YWlsYWJsZSAodHJ5IGluc3RhbGxpbmcg dGhlIGxpYnBxLW9hdXRoIHBhY2thZ2UpIik7Ci0JCWdvdG8gZmFpbDsKLQl9Ci0KLQlyZXR1cm4g dHJ1ZTsKIAogZmFpbDoKIAlkb19jbGVhbnVwKHN0YXRlLCAmcmVxdWVzdCk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9tZXNvbi5idWlsZCBiL3NyYy90ZXN0 L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL21lc29uLmJ1aWxkCmluZGV4IGM0YjczZTA1Mjk3Li43 MTQxMmYwZWNhYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Iv bWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvbWVzb24u YnVpbGQKQEAgLTUwLDYgKzUwLDcgQEAgdGVzdF9pbnN0YWxsX2xpYnMgKz0gbWFnaWNfdmFsaWRh dG9yCiAKIG9hdXRoX2hvb2tfY2xpZW50X3NvdXJjZXMgPSBmaWxlcygKICAgJ29hdXRoX2hvb2tf Y2xpZW50LmMnLAorICAnb2F1dGhfdGVzdF9jb21tb24uYycsCiApCiAKIGlmIGhvc3Rfc3lzdGVt ID09ICd3aW5kb3dzJwpAQCAtNjcsNiArNjgsMTkgQEAgb2F1dGhfaG9va19jbGllbnQgPSBleGVj dXRhYmxlKCdvYXV0aF9ob29rX2NsaWVudCcsCiApCiB0ZXN0cHJlcF90YXJnZXRzICs9IG9hdXRo X2hvb2tfY2xpZW50CiAKK29hdXRoX2Zsb3cgPSBzaGFyZWRfbW9kdWxlKCdvYXV0aF9mbG93JywK KyAgZmlsZXMoCisgICAgJ29hdXRoX2Zsb3cuYycsCisgICAgJ29hdXRoX3Rlc3RfY29tbW9uLmMn LAorICApLAorICBpbmNsdWRlX2RpcmVjdG9yaWVzOiBbcG9zdGdyZXNfaW5jXSwKKyAgZGVwZW5k ZW5jaWVzOiBbZnJvbnRlbmRfc2hsaWJfY29kZSwgbGlicHFdLAorICBrd2FyZ3M6IGRlZmF1bHRf bGliX2FyZ3MgKyB7CisgICAgJ2luc3RhbGwnOiBmYWxzZSwKKyAgfSwKKykKK3Rlc3RwcmVwX3Rh cmdldHMgKz0gb2F1dGhfZmxvdworCiB0ZXN0cyArPSB7CiAgICduYW1lJzogJ29hdXRoX3ZhbGlk YXRvcicsCiAgICdzZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLApAQCAtODAsNiArOTQs NyBAQCB0ZXN0cyArPSB7CiAgICAgICAnUFlUSE9OJzogcHl0aG9uLmZ1bGxfcGF0aCgpLAogICAg ICAgJ3dpdGhfbGliY3VybCc6IG9hdXRoX2Zsb3dfc3VwcG9ydGVkID8gJ3llcycgOiAnbm8nLAog ICAgICAgJ3dpdGhfcHl0aG9uJzogJ3llcycsCisgICAgICAnZmxvd19tb2R1bGVfcGF0aCc6IG9h dXRoX2Zsb3cuZnVsbF9wYXRoKCksCiAgICAgfSwKICAgICAnZGVwcyc6IFtvYXV0aF9ob29rX2Ns aWVudF0sCiAgIH0sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRv ci9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL01ha2VmaWxlCmlu ZGV4IGNiNjRmMGYxNDM3Li5hMTdjNDI1OWFlYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy9vYXV0aF92YWxpZGF0b3IvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92 YWxpZGF0b3IvTWFrZWZpbGUKQEAgLTE0LDExICsxNCwxMyBAQCBQR0ZJTEVERVNDID0gInZhbGlk YXRvciAtIHRlc3QgT0F1dGggdmFsaWRhdG9yIG1vZHVsZSIKIAogUFJPR1JBTSA9IG9hdXRoX2hv b2tfY2xpZW50CiBQR0FQUElDT04gPSB3aW4zMgotT0JKUyA9ICQoV0lOMzJSRVMpIG9hdXRoX2hv b2tfY2xpZW50Lm8KK09CSlMgPSAkKFdJTjMyUkVTKSBvYXV0aF9ob29rX2NsaWVudC5vIG9hdXRo X3Rlc3RfY29tbW9uLm8KIAogUEdfQ1BQRkxBR1MgPSAtSSQobGlicHFfc3JjZGlyKQogUEdfTElC U19JTlRFUk5BTCArPSAkKGxpYnBxX3BncG9ydCkKIAorRVhUUkFfQ0xFQU4gPSBvYXV0aF9mbG93 JChETFNVRkZJWCkgb2F1dGhfZmxvdy5vCisKIE5PX0lOU1RBTExDSEVDSyA9IDEKIAogVEFQX1RF U1RTID0gMQpAQCAtMzMsOCArMzUsMTQgQEAgdG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KIGlu Y2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIGluY2x1ZGUgJCh0b3Bf c3JjZGlyKS9jb250cmliL2NvbnRyaWItZ2xvYmFsLm1rCiAKK2FsbDogb2F1dGhfZmxvdyQoRExT VUZGSVgpCisKK29hdXRoX2Zsb3ckKERMU1VGRklYKTogb2F1dGhfZmxvdy5vIG9hdXRoX3Rlc3Rf Y29tbW9uLm8KKwkkKENDKSAkKENGTEFHUykgJF4gJChMREZMQUdTKSAkKGxpYnBxX3BncG9ydF9z aGxpYikgJChMREZMQUdTX1NMKSAtc2hhcmVkIC1vICRACisKIGV4cG9ydCBQWVRIT04KIGV4cG9y dCB3aXRoX2xpYmN1cmwKIGV4cG9ydCB3aXRoX3B5dGhvbgorZXhwb3J0IGZsb3dfbW9kdWxlX3Bh dGggOj0gJChhYnNfdG9wX2J1aWxkZGlyKS8kKHN1YmRpcikvb2F1dGhfZmxvdyQoRExTVUZGSVgp CiAKIGVuZGlmCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9v YXV0aF90ZXN0X2NvbW1vbi5oIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Ivb2F1 dGhfdGVzdF9jb21tb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MzNlNzJlMzA0NDAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3Zh bGlkYXRvci9vYXV0aF90ZXN0X2NvbW1vbi5oCkBAIC0wLDAgKzEsMjYgQEAKKy8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoKKyAqIG9hdXRoX3Rlc3RfY29tbW9uLmgKKyAqCSAgU2hhcmVkIGZ1bmN0aW9u YWxpdHkgZm9yIG9hdXRoX2hvb2tfY2xpZW50IGFuZCBvYXV0aF9mbG93CisgKgorICogQ29weXJp Z2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpZm5kZWYgT0FVVEhfVEVTVF9DT01NT05fSAorI2Rl ZmluZSBPQVVUSF9URVNUX0NPTU1PTl9ICisKKy8qCisgKiBPbmx5IHB1YmxpYyBoZWFkZXJzIGNh biBiZSBoZXJlLCBzaW5jZSBvYXV0aF9mbG93LmMgaXMgdHJ5aW5nIHRvIHRlc3Qgb25seQorICog dGhlIHB1YmxpYyBBUEkuCisgKi8KKyNpbmNsdWRlICJsaWJwcS1mZS5oIgorCitleHRlcm4gaW50 CXN0cmVzc19hc3luYzsJCS8qIGZvciBvYXV0aF9ob29rX2NsaWVudCAqLworCitleHRlcm4gY2hh ciAqb2F1dGhfdGVzdF9wYXJzZV9hcmd2KGludCBhcmdjLCBjaGFyICphcmd2W10sIGludCBmb3Jf cGx1Z2luKTsKK2V4dGVybiBpbnQJb2F1dGhfdGVzdF9hdXRoZGF0YV9ob29rKFBHYXV0aERhdGEg dHlwZSwgUEdjb25uICpjb25uLCB2b2lkICpkYXRhKTsKK2V4dGVybiBpbnQJb2F1dGhfdGVzdF9z dGFydF9mbG93KFBHY29ubiAqY29ubiwgUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmVxdWVzdCk7 CisKKyNlbmRpZgkJCQkJCQkvKiBPQVVUSF9URVNUX0NPTU1PTl9IICovCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9vYXV0aF9mbG93LmMgYi9zcmMvdGVzdC9t b2R1bGVzL29hdXRoX3ZhbGlkYXRvci9vYXV0aF9mbG93LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjllZjY3ZjAzZWIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Ivb2F1dGhfZmxvdy5jCkBAIC0wLDAgKzEsNzIgQEAK Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIG9hdXRoX2Zsb3cuYworICoJICBUZXN0IHBsdWdp biBmb3IgY2xpZW50c2lkZSBPQXV0aCBmbG93cworICoKKyAqIENvcHlyaWdodCAoYykgMjAyNSwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLworCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKy8q IFNpbmNlIHdlIHdhbnQgdG8gdGVzdCB0aGUgcHVibGljIEFQSSwgb25seSBpbmNsdWRlIHB1Ymxp YyBoZWFkZXJzIGhlcmUuICovCisjaW5jbHVkZSAibGlicHEtZmUuaCIKKyNpbmNsdWRlICJsaWJw cS1vYXV0aC5oIgorI2luY2x1ZGUgIm9hdXRoX3Rlc3RfY29tbW9uLmgiCisKK3N0YXRpYyB2b2lk Citsb2FkX3Rlc3RfZmxhZ3Modm9pZCkKK3sKKwlpbnQJCQlhcmdjOworCWNoYXIJICAqKmFyZ3Y7 CisJY2hhcgkgICAqZW52ID0gZ2V0ZW52KCJPQVVUSF9URVNUX0ZMQUdTIik7CisJaW50CQkJZmxh Z19jb3VudDsKKwlpbnQJCQlpOworCisJaWYgKCFlbnYgfHwgIWVudlswXSkKKwl7CisJCWZwcmlu dGYoc3RkZXJyLCAiT0FVVEhfVEVTVF9GTEFHUyBtdXN0IGJlIHNldFxuIik7CisJCWV4aXQoMSk7 CisJfQorCisJZmxhZ19jb3VudCA9IDE7CisJZm9yIChjaGFyICpjID0gZW52OyAqYzsgYysrKQor CXsKKwkJaWYgKCpjID09ICdceDAxJykKKwkJCWZsYWdfY291bnQrKzsKKwl9CisKKwkvKiBTbGlj ZSBPQVVUSF9URVNUX0ZMQUdTIGludG8gYSBmYWtlIGFyZ3YgYXJyYXkuICovCisJZW52ID0gc3Ry ZHVwKGVudik7CisJYXJnYyA9IGZsYWdfY291bnQgKyAxOworCWFyZ3YgPSBtYWxsb2Moc2l6ZW9m KCphcmd2KSAqIChhcmdjICsgMSkpOworCisJaWYgKCFlbnYgfHwgIWFyZ3YpCisJeworCQlmcHJp bnRmKHN0ZGVyciwgIm91dCBvZiBtZW1vcnkiKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlhcmd2WzBd ID0gIltwbHVnaW4gdGVzdF0iOworCWZvciAoaSA9IDE7IGkgPCBmbGFnX2NvdW50OyBpKyspCisJ eworCQlhcmd2W2ldID0gZW52OworCisJCWVudiA9IHN0cmNocihlbnYsICdceDAxJyk7CisJCSpl bnYrKyA9ICdcMCc7CisJfQorCWFyZ3ZbZmxhZ19jb3VudF0gPSBlbnY7CisJYXJndlthcmdjXSA9 IE5VTEw7CisKKwlvYXV0aF90ZXN0X3BhcnNlX2FyZ3YoYXJnYywgYXJndiwgMSAvKiBwbHVnaW4g Ki8gKTsKK30KKworaW50CitwZ19zdGFydF9vYXV0aGJlYXJlcihQR2Nvbm4gKmNvbm4sIFBHb2F1 dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcXVlc3QpCit7CisJbG9hZF90ZXN0X2ZsYWdzKCk7CisKKwly ZXR1cm4gb2F1dGhfdGVzdF9zdGFydF9mbG93KGNvbm4sIHJlcXVlc3QpOworfQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Ivb2F1dGhfaG9va19jbGllbnQuYyBi L3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL29hdXRoX2hvb2tfY2xpZW50LmMKaW5k ZXggNWJkZGMwZjgwN2EuLjVmOTMyYWNjNTcxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L29hdXRoX3ZhbGlkYXRvci9vYXV0aF9ob29rX2NsaWVudC5jCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvb2F1dGhfdmFsaWRhdG9yL29hdXRoX2hvb2tfY2xpZW50LmMKQEAgLTE4LDE0NCArMTgsMTgg QEAKIAogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KIAotI2luY2x1ZGUgImdldG9wdF9sb25nLmgi CiAjaW5jbHVkZSAibGlicHEtZmUuaCIKLSNpbmNsdWRlICJwcWV4cGJ1ZmZlci5oIgogCi1zdGF0 aWMgaW50CWhhbmRsZV9hdXRoX2RhdGEoUEdhdXRoRGF0YSB0eXBlLCBQR2Nvbm4gKmNvbm4sIHZv aWQgKmRhdGEpOwotc3RhdGljIFBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUgYXN5bmNfY2IoUEdj b25uICpjb25uLAotCQkJCQkJCQkJCSAgUEdvYXV0aEJlYXJlclJlcXVlc3QgKnJlcSwKLQkJCQkJ CQkJCQkgIHBnc29ja2V0ICphbHRzb2NrKTsKLXN0YXRpYyBQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNU eXBlIG1pc2JlaGF2ZV9jYihQR2Nvbm4gKmNvbm4sCi0JCQkJCQkJCQkJCSAgUEdvYXV0aEJlYXJl clJlcXVlc3QgKnJlcSwKLQkJCQkJCQkJCQkJICBwZ3NvY2tldCAqYWx0c29jayk7Ci0KLXN0YXRp YyB2b2lkCi11c2FnZShjaGFyICphcmd2W10pCi17Ci0JcHJpbnRmKCJ1c2FnZTogJXMgW2ZsYWdz XSBDT05OSU5GT1xuXG4iLCBhcmd2WzBdKTsKLQotCXByaW50ZigicmVjb2duaXplZCBmbGFnczpc biIpOwotCXByaW50ZigiICAtaCwgLS1oZWxwICAgICAgICAgICAgICBzaG93IHRoaXMgbWVzc2Fn ZVxuIik7Ci0JcHJpbnRmKCIgIC12IFZFUlNJT04gICAgICAgICAgICAgIHNlbGVjdCB0aGUgaG9v ayBBUEkgdmVyc2lvbiAoZGVmYXVsdCAyKVxuIik7Ci0JcHJpbnRmKCIgIC0tZXhwZWN0ZWQtc2Nv cGUgU0NPUEUgIGZhaWwgaWYgcmVjZWl2ZWQgc2NvcGVzIGRvIG5vdCBtYXRjaCBTQ09QRVxuIik7 Ci0JcHJpbnRmKCIgIC0tZXhwZWN0ZWQtdXJpIFVSSSAgICAgIGZhaWwgaWYgcmVjZWl2ZWQgY29u ZmlndXJhdGlvbiBsaW5rIGRvZXMgbm90IG1hdGNoIFVSSVxuIik7Ci0JcHJpbnRmKCIgIC0tZXhw ZWN0ZWQtaXNzdWVyIElTUyAgIGZhaWwgaWYgcmVjZWl2ZWQgaXNzdWVyIGRvZXMgbm90IG1hdGNo IElTUyAodjIgb25seSlcbiIpOwotCXByaW50ZigiICAtLW1pc2JlaGF2ZT1NT0RFICAgICAgICBo YXZlIHRoZSBob29rIGZhaWwgcmVxdWlyZWQgcG9zdGNvbmRpdGlvbnNcbiIKLQkJICAgIiAgICAg ICAgICAgICAgICAgICAgICAgICAgKE1PREVzOiBuby1ob29rLCBmYWlsLWFzeW5jLCBuby10b2tl biwgbm8tc29ja2V0KVxuIik7Ci0JcHJpbnRmKCIgIC0tbm8taG9vayAgICAgICAgICAgICAgIGRv bid0IGluc3RhbGwgT0F1dGggaG9va3NcbiIpOwotCXByaW50ZigiICAtLWhhbmctZm9yZXZlciAg ICAgICAgICBkb24ndCBldmVyIHJldHVybiBhIHRva2VuIChjb21iaW5lIHdpdGggY29ubmVjdF90 aW1lb3V0KVxuIik7Ci0JcHJpbnRmKCIgIC0tdG9rZW4gVE9LRU4gICAgICAgICAgIHVzZSB0aGUg cHJvdmlkZWQgVE9LRU4gdmFsdWVcbiIpOwotCXByaW50ZigiICAtLWVycm9yIEVSUk1TRyAgICAg ICAgICBmYWlsIGluc3RlYWQsIHdpdGggdGhlIGdpdmVuIEVSUk1TRyAodjIgb25seSlcbiIpOwot CXByaW50ZigiICAtLXN0cmVzcy1hc3luYyAgICAgICAgICBidXN5LWxvb3Agb24gUFFjb25uZWN0 UG9sbCByYXRoZXIgdGhhbiBwb2xsaW5nXG4iKTsKLX0KLQotLyogLS1vcHRpb25zICovCi1zdGF0 aWMgYm9vbCBub19ob29rID0gZmFsc2U7Ci1zdGF0aWMgYm9vbCBoYW5nX2ZvcmV2ZXIgPSBmYWxz ZTsKLXN0YXRpYyBib29sIHN0cmVzc19hc3luYyA9IGZhbHNlOwotc3RhdGljIGNvbnN0IGNoYXIg KmV4cGVjdGVkX3VyaSA9IE5VTEw7Ci1zdGF0aWMgY29uc3QgY2hhciAqZXhwZWN0ZWRfaXNzdWVy ID0gTlVMTDsKLXN0YXRpYyBjb25zdCBjaGFyICpleHBlY3RlZF9zY29wZSA9IE5VTEw7Ci1zdGF0 aWMgY29uc3QgY2hhciAqbWlzYmVoYXZlX21vZGUgPSBOVUxMOwotc3RhdGljIGNoYXIgKnRva2Vu ID0gTlVMTDsKLXN0YXRpYyBjaGFyICplcnJtc2cgPSBOVUxMOwotc3RhdGljIGludAlob29rX3Zl cnNpb24gPSBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTl9WMjsKKyNpbmNsdWRlICJvYXV0 aF90ZXN0X2NvbW1vbi5oIgogCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsK LQlzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBsb25nX29wdGlvbnNbXSA9IHsKLQkJeyJoZWxw Iiwgbm9fYXJndW1lbnQsIE5VTEwsICdoJ30sCi0KLQkJeyJleHBlY3RlZC1zY29wZSIsIHJlcXVp cmVkX2FyZ3VtZW50LCBOVUxMLCAxMDAwfSwKLQkJeyJleHBlY3RlZC11cmkiLCByZXF1aXJlZF9h cmd1bWVudCwgTlVMTCwgMTAwMX0sCi0JCXsibm8taG9vayIsIG5vX2FyZ3VtZW50LCBOVUxMLCAx MDAyfSwKLQkJeyJ0b2tlbiIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAxMDAzfSwKLQkJeyJo YW5nLWZvcmV2ZXIiLCBub19hcmd1bWVudCwgTlVMTCwgMTAwNH0sCi0JCXsibWlzYmVoYXZlIiwg cmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDEwMDV9LAotCQl7InN0cmVzcy1hc3luYyIsIG5vX2Fy Z3VtZW50LCBOVUxMLCAxMDA2fSwKLQkJeyJleHBlY3RlZC1pc3N1ZXIiLCByZXF1aXJlZF9hcmd1 bWVudCwgTlVMTCwgMTAwN30sCi0JCXsiZXJyb3IiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwg MTAwOH0sCi0JCXswfQotCX07Ci0KLQljb25zdCBjaGFyICpjb25uaW5mbzsKKwljb25zdCBjaGFy ICpjb25uaW5mbyA9IG9hdXRoX3Rlc3RfcGFyc2VfYXJndihhcmdjLCBhcmd2LCAwIC8qIGhvb2sg Ki8gKTsKIAlQR2Nvbm4JICAgKmNvbm47Ci0JaW50CQkJYzsKLQotCXdoaWxlICgoYyA9IGdldG9w dF9sb25nKGFyZ2MsIGFyZ3YsICJodjoiLCBsb25nX29wdGlvbnMsIE5VTEwpKSAhPSAtMSkKLQl7 Ci0JCXN3aXRjaCAoYykKLQkJewotCQkJY2FzZSAnaCc6Ci0JCQkJdXNhZ2UoYXJndik7Ci0JCQkJ cmV0dXJuIDA7Ci0KLQkJCWNhc2UgJ3YnOgotCQkJCWlmIChzdHJjbXAob3B0YXJnLCAiMSIpID09 IDApCi0JCQkJCWhvb2tfdmVyc2lvbiA9IFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOOwot CQkJCWVsc2UgaWYgKHN0cmNtcChvcHRhcmcsICIyIikgPT0gMCkKLQkJCQkJaG9va192ZXJzaW9u ID0gUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU5fVjI7Ci0JCQkJZWxzZQotCQkJCXsKLQkJ CQkJdXNhZ2UoYXJndik7Ci0JCQkJCXJldHVybiAxOwotCQkJCX0KLQkJCQlicmVhazsKLQotCQkJ Y2FzZSAxMDAwOgkJCS8qIC0tZXhwZWN0ZWQtc2NvcGUgKi8KLQkJCQlleHBlY3RlZF9zY29wZSA9 IG9wdGFyZzsKLQkJCQlicmVhazsKLQotCQkJY2FzZSAxMDAxOgkJCS8qIC0tZXhwZWN0ZWQtdXJp ICovCi0JCQkJZXhwZWN0ZWRfdXJpID0gb3B0YXJnOwotCQkJCWJyZWFrOwotCi0JCQljYXNlIDEw MDI6CQkJLyogLS1uby1ob29rICovCi0JCQkJbm9faG9vayA9IHRydWU7Ci0JCQkJYnJlYWs7Ci0K LQkJCWNhc2UgMTAwMzoJCQkvKiAtLXRva2VuICovCi0JCQkJdG9rZW4gPSBvcHRhcmc7Ci0JCQkJ YnJlYWs7Ci0KLQkJCWNhc2UgMTAwNDoJCQkvKiAtLWhhbmctZm9yZXZlciAqLwotCQkJCWhhbmdf Zm9yZXZlciA9IHRydWU7Ci0JCQkJYnJlYWs7Ci0KLQkJCWNhc2UgMTAwNToJCQkvKiAtLW1pc2Jl aGF2ZSAqLwotCQkJCW1pc2JlaGF2ZV9tb2RlID0gb3B0YXJnOwotCQkJCWJyZWFrOwotCi0JCQlj YXNlIDEwMDY6CQkJLyogLS1zdHJlc3MtYXN5bmMgKi8KLQkJCQlzdHJlc3NfYXN5bmMgPSB0cnVl OwotCQkJCWJyZWFrOwotCi0JCQljYXNlIDEwMDc6CQkJLyogLS1leHBlY3RlZC1pc3N1ZXIgKi8K LQkJCQlleHBlY3RlZF9pc3N1ZXIgPSBvcHRhcmc7Ci0JCQkJYnJlYWs7Ci0KLQkJCWNhc2UgMTAw ODoJCQkvKiAtLWVycm9yICovCi0JCQkJZXJybXNnID0gb3B0YXJnOwotCQkJCWJyZWFrOwotCi0J CQlkZWZhdWx0OgotCQkJCXVzYWdlKGFyZ3YpOwotCQkJCXJldHVybiAxOwotCQl9Ci0JfQotCi0J aWYgKGFyZ2MgIT0gb3B0aW5kICsgMSkKLQl7Ci0JCXVzYWdlKGFyZ3YpOwotCQlyZXR1cm4gMTsK LQl9Ci0KLQljb25uaW5mbyA9IGFyZ3Zbb3B0aW5kXTsKIAogCS8qIFNldCB1cCBvdXIgT0F1dGgg aG9va3MuICovCi0JUFFzZXRBdXRoRGF0YUhvb2soaGFuZGxlX2F1dGhfZGF0YSk7CisJUFFzZXRB dXRoRGF0YUhvb2sob2F1dGhfdGVzdF9hdXRoZGF0YV9ob29rKTsKIAogCS8qIENvbm5lY3QuIChB bGwgdGhlIGFjdHVhbCB3b3JrIGlzIGluIHRoZSBob29rLikgKi8KIAlpZiAoc3RyZXNzX2FzeW5j KQpAQCAtMTkzLDE5MCArNjcsMyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJUFFm aW5pc2goY29ubik7CiAJcmV0dXJuIDA7CiB9Ci0KLS8qCi0gKiBQUWF1dGhEYXRhSG9vayBpbXBs ZW1lbnRhdGlvbi4gUmVwbGFjZXMgdGhlIGRlZmF1bHQgY2xpZW50IGZsb3cgYnkgaGFuZGxpbmcK LSAqIFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOW19WMl0uCi0gKi8KLXN0YXRpYyBpbnQK LWhhbmRsZV9hdXRoX2RhdGEoUEdhdXRoRGF0YSB0eXBlLCBQR2Nvbm4gKmNvbm4sIHZvaWQgKmRh dGEpCi17Ci0JUEdvYXV0aEJlYXJlclJlcXVlc3QgKnJlcTsKLQlQR29hdXRoQmVhcmVyUmVxdWVz dFYyICpyZXEyID0gTlVMTDsKLQotCUFzc2VydChob29rX3ZlcnNpb24gPT0gUFFBVVRIREFUQV9P QVVUSF9CRUFSRVJfVE9LRU4gfHwKLQkJICAgaG9va192ZXJzaW9uID09IFBRQVVUSERBVEFfT0FV VEhfQkVBUkVSX1RPS0VOX1YyKTsKLQotCWlmIChub19ob29rIHx8IHR5cGUgIT0gaG9va192ZXJz aW9uKQotCQlyZXR1cm4gMDsKLQotCXJlcSA9IGRhdGE7Ci0JaWYgKHR5cGUgPT0gUFFBVVRIREFU QV9PQVVUSF9CRUFSRVJfVE9LRU5fVjIpCi0JCXJlcTIgPSBkYXRhOwotCi0JaWYgKGhhbmdfZm9y ZXZlcikKLQl7Ci0JCS8qIFN0YXJ0IGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nLiAqLwotCQlyZXEt PmFzeW5jID0gYXN5bmNfY2I7Ci0JCXJldHVybiAxOwotCX0KLQotCWlmIChtaXNiZWhhdmVfbW9k ZSkKLQl7Ci0JCWlmIChzdHJjbXAobWlzYmVoYXZlX21vZGUsICJuby1ob29rIikgIT0gMCkKLQkJ CXJlcS0+YXN5bmMgPSBtaXNiZWhhdmVfY2I7Ci0JCXJldHVybiAxOwotCX0KLQotCWlmIChleHBl Y3RlZF91cmkpCi0JewotCQlpZiAoIXJlcS0+b3BlbmlkX2NvbmZpZ3VyYXRpb24pCi0JCXsKLQkJ CWZwcmludGYoc3RkZXJyLCAiZXhwZWN0ZWQgVVJJIFwiJXNcIiwgZ290IE5VTExcbiIsIGV4cGVj dGVkX3VyaSk7Ci0JCQlyZXR1cm4gLTE7Ci0JCX0KLQotCQlpZiAoc3RyY21wKGV4cGVjdGVkX3Vy aSwgcmVxLT5vcGVuaWRfY29uZmlndXJhdGlvbikgIT0gMCkKLQkJewotCQkJZnByaW50ZihzdGRl cnIsICJleHBlY3RlZCBVUkkgXCIlc1wiLCBnb3QgXCIlc1wiXG4iLCBleHBlY3RlZF91cmksIHJl cS0+b3BlbmlkX2NvbmZpZ3VyYXRpb24pOwotCQkJcmV0dXJuIC0xOwotCQl9Ci0JfQotCi0JaWYg KGV4cGVjdGVkX3Njb3BlKQotCXsKLQkJaWYgKCFyZXEtPnNjb3BlKQotCQl7Ci0JCQlmcHJpbnRm KHN0ZGVyciwgImV4cGVjdGVkIHNjb3BlIFwiJXNcIiwgZ290IE5VTExcbiIsIGV4cGVjdGVkX3Nj b3BlKTsKLQkJCXJldHVybiAtMTsKLQkJfQotCi0JCWlmIChzdHJjbXAoZXhwZWN0ZWRfc2NvcGUs IHJlcS0+c2NvcGUpICE9IDApCi0JCXsKLQkJCWZwcmludGYoc3RkZXJyLCAiZXhwZWN0ZWQgc2Nv cGUgXCIlc1wiLCBnb3QgXCIlc1wiXG4iLCBleHBlY3RlZF9zY29wZSwgcmVxLT5zY29wZSk7Ci0J CQlyZXR1cm4gLTE7Ci0JCX0KLQl9Ci0KLQlpZiAoZXhwZWN0ZWRfaXNzdWVyKQotCXsKLQkJaWYg KCFyZXEyKQotCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgIi0tZXhwZWN0ZWQtaXNzdWVyIGNhbm5v dCBiZSBjb21iaW5lZCB3aXRoIC12MVxuIik7Ci0JCQlyZXR1cm4gLTE7Ci0JCX0KLQotCQlpZiAo IXJlcTItPmlzc3VlcikKLQkJewotCQkJZnByaW50ZihzdGRlcnIsICJleHBlY3RlZCBpc3N1ZXIg XCIlc1wiLCBnb3QgTlVMTFxuIiwgZXhwZWN0ZWRfaXNzdWVyKTsKLQkJCXJldHVybiAtMTsKLQkJ fQotCi0JCWlmIChzdHJjbXAoZXhwZWN0ZWRfaXNzdWVyLCByZXEyLT5pc3N1ZXIpICE9IDApCi0J CXsKLQkJCWZwcmludGYoc3RkZXJyLCAiZXhwZWN0ZWQgaXNzdWVyIFwiJXNcIiwgZ290IFwiJXNc IlxuIiwgZXhwZWN0ZWRfaXNzdWVyLCByZXEyLT5pc3N1ZXIpOwotCQkJcmV0dXJuIC0xOwotCQl9 Ci0JfQotCi0JaWYgKGVycm1zZykKLQl7Ci0JCWlmICh0b2tlbikKLQkJewotCQkJZnByaW50Zihz dGRlcnIsICItLWVycm9yIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIC0tdG9rZW5cbiIpOwotCQkJ cmV0dXJuIC0xOwotCQl9Ci0JCWVsc2UgaWYgKCFyZXEyKQotCQl7Ci0JCQlmcHJpbnRmKHN0ZGVy ciwgIi0tZXJyb3IgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggLXYxXG4iKTsKLQkJCXJldHVybiAt MTsKLQkJfQotCi0JCXJlcTItPmVycm9yID0gZXJybXNnOwotCQlyZXR1cm4gLTE7Ci0JfQotCi0J cmVxLT50b2tlbiA9IHRva2VuOwotCXJldHVybiAxOwotfQotCi1zdGF0aWMgUG9zdGdyZXNQb2xs aW5nU3RhdHVzVHlwZQotYXN5bmNfY2IoUEdjb25uICpjb25uLCBQR29hdXRoQmVhcmVyUmVxdWVz dCAqcmVxLCBwZ3NvY2tldCAqYWx0c29jaykKLXsKLQlpZiAoaGFuZ19mb3JldmVyKQotCXsKLQkJ LyoKLQkJICogVGhpcyBjb2RlIHRlc3RzIHRoYXQgbm90aGluZyBpcyBpbnRlcmZlcmluZyB3aXRo IGxpYnBxJ3MgaGFuZGxpbmcKLQkJICogb2YgY29ubmVjdF90aW1lb3V0LgotCQkgKi8KLQkJc3Rh dGljIHBnc29ja2V0IHNvY2sgPSBQR0lOVkFMSURfU09DS0VUOwotCi0JCWlmIChzb2NrID09IFBH SU5WQUxJRF9TT0NLRVQpCi0JCXsKLQkJCS8qIEZpcnN0IGNhbGwuIENyZWF0ZSBhbiB1bmJvdW5k IHNvY2tldCB0byB3YWl0IG9uLiAqLwotI2lmZGVmIFdJTjMyCi0JCQlXU0FEQVRBCQl3c2FEYXRh OwotCQkJaW50CQkJZXJyOwotCi0JCQllcnIgPSBXU0FTdGFydHVwKE1BS0VXT1JEKDIsIDIpLCAm d3NhRGF0YSk7Ci0JCQlpZiAoZXJyKQotCQkJewotCQkJCXBlcnJvcigiV1NBU3RhcnR1cCBmYWls ZWQiKTsKLQkJCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7Ci0JCQl9Ci0jZW5kaWYKLQkJ CXNvY2sgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7Ci0JCQlpZiAoc29jayA9PSBQ R0lOVkFMSURfU09DS0VUKQotCQkJewotCQkJCXBlcnJvcigiZmFpbGVkIHRvIGNyZWF0ZSBkYXRh Z3JhbSBzb2NrZXQiKTsKLQkJCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7Ci0JCQl9Ci0J CX0KLQotCQkvKiBNYWtlIGxpYnBxIHdhaXQgb24gdGhlICh1bnJlYWRhYmxlKSBzb2NrZXQuICov Ci0JCSphbHRzb2NrID0gc29jazsKLQkJcmV0dXJuIFBHUkVTX1BPTExJTkdfUkVBRElORzsKLQl9 Ci0KLQlyZXEtPnRva2VuID0gdG9rZW47Ci0JcmV0dXJuIFBHUkVTX1BPTExJTkdfT0s7Ci19Ci0K LXN0YXRpYyBQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlCi1taXNiZWhhdmVfY2IoUEdjb25uICpj b25uLCBQR29hdXRoQmVhcmVyUmVxdWVzdCAqcmVxLCBwZ3NvY2tldCAqYWx0c29jaykKLXsKLQlp ZiAoc3RyY21wKG1pc2JlaGF2ZV9tb2RlLCAiZmFpbC1hc3luYyIpID09IDApCi0JewotCQkvKiBK dXN0IGZhaWwgIm5vcm1hbGx5Ii4gKi8KLQkJaWYgKGVycm1zZykKLQkJewotCQkJUEdvYXV0aEJl YXJlclJlcXVlc3RWMiAqcmVxMjsKLQotCQkJaWYgKGhvb2tfdmVyc2lvbiA9PSBQUUFVVEhEQVRB X09BVVRIX0JFQVJFUl9UT0tFTikKLQkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgIi0tZXJyb3Ig Y2Fubm90IGJlIGNvbWJpbmVkIHdpdGggLXYxXG4iKTsKLQkJCQlleGl0KDEpOwotCQkJfQotCi0J CQlyZXEyID0gKFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKikgcmVxOwotCQkJcmVxMi0+ZXJyb3Ig PSBlcnJtc2c7Ci0JCX0KLQotCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7Ci0JfQotCWVs c2UgaWYgKHN0cmNtcChtaXNiZWhhdmVfbW9kZSwgIm5vLXRva2VuIikgPT0gMCkKLQl7Ci0JCS8q IENhbGxiYWNrcyBtdXN0IGFzc2lnbiByZXEtPnRva2VuIGJlZm9yZSByZXR1cm5pbmcgT0suICov Ci0JCXJldHVybiBQR1JFU19QT0xMSU5HX09LOwotCX0KLQllbHNlIGlmIChzdHJjbXAobWlzYmVo YXZlX21vZGUsICJuby1zb2NrZXQiKSA9PSAwKQotCXsKLQkJLyogQ2FsbGJhY2tzIG11c3QgYXNz aWduICphbHRzb2NrIGJlZm9yZSBhc2tpbmcgZm9yIHBvbGxpbmcuICovCi0JCXJldHVybiBQR1JF U19QT0xMSU5HX1JFQURJTkc7Ci0JfQotCWVsc2UKLQl7Ci0JCWZwcmludGYoc3RkZXJyLCAidW5y ZWNvZ25pemVkIC0tbWlzYmVoYXZlIG1vZGU6ICVzXG4iLCBtaXNiZWhhdmVfbW9kZSk7Ci0JCWV4 aXQoMSk7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0 b3Ivb2F1dGhfdGVzdF9jb21tb24uYyBiL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9y L29hdXRoX3Rlc3RfY29tbW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmViYThjMzJlYWNlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0 aF92YWxpZGF0b3Ivb2F1dGhfdGVzdF9jb21tb24uYwpAQCAtMCwwICsxLDM3NCBAQAorLyotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKgorICogb2F1dGhfdGVzdF9jb21tb24uYworICoJICBTaGFyZWQgZnVu Y3Rpb25hbGl0eSBmb3Igb2F1dGhfaG9va19jbGllbnQgYW5kIG9hdXRoX2Zsb3cKKyAqCisgKiBD b3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisg KgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCisK KyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisKKyNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgorI2lu Y2x1ZGUgImxpYnBxLWZlLmgiCisjaW5jbHVkZSAicHFleHBidWZmZXIuaCIKKworI2luY2x1ZGUg Im9hdXRoX3Rlc3RfY29tbW9uLmgiCisKK3N0YXRpYyBQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBl IGFzeW5jX2NiKFBHY29ubiAqY29ubiwKKwkJCQkJCQkJCQkgIFBHb2F1dGhCZWFyZXJSZXF1ZXN0 ICpyZXEsCisJCQkJCQkJCQkJICBwZ3NvY2tldCAqYWx0c29jayk7CitzdGF0aWMgUG9zdGdyZXNQ b2xsaW5nU3RhdHVzVHlwZSBtaXNiZWhhdmVfY2IoUEdjb25uICpjb25uLAorCQkJCQkJCQkJCQkg IFBHb2F1dGhCZWFyZXJSZXF1ZXN0ICpyZXEsCisJCQkJCQkJCQkJCSAgcGdzb2NrZXQgKmFsdHNv Y2spOworCisvKiAtLW9wdGlvbnMgKi8KK3N0YXRpYyBib29sIG5vX2hvb2sgPSBmYWxzZTsKK3N0 YXRpYyBib29sIGhhbmdfZm9yZXZlciA9IGZhbHNlOworc3RhdGljIGNvbnN0IGNoYXIgKmV4cGVj dGVkX3VyaSA9IE5VTEw7CitzdGF0aWMgY29uc3QgY2hhciAqZXhwZWN0ZWRfaXNzdWVyID0gTlVM TDsKK3N0YXRpYyBjb25zdCBjaGFyICpleHBlY3RlZF9zY29wZSA9IE5VTEw7CitzdGF0aWMgY29u c3QgY2hhciAqbWlzYmVoYXZlX21vZGUgPSBOVUxMOworc3RhdGljIGNoYXIgKnRva2VuID0gTlVM TDsKK3N0YXRpYyBjaGFyICplcnJtc2cgPSBOVUxMOworc3RhdGljIGludAlob29rX3ZlcnNpb24g PSBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTl9WMjsKKworLyoKKyAqIFhYWDogc3RyZXNz X2FzeW5jIGlzIGV4cG9ydGVkIGZvciB0aGUgYmVuZWZpdCBvZiBvYXV0aF9ob29rX2NsaWVudC4g U2luY2UKKyAqIHdlIG9ubHkgdXNlIHB1YmxpYyBoZWFkZXJzIChsaWJwcS1mZS5oKSBmb3Igb2F1 dGhfZmxvdywgaXQgbmVlZHMgdG8gYmUgYW4gaW50CisgKiByYXRoZXIgdGhhbiBhIGJvb2wuCisg Ki8KK2ludAkJCXN0cmVzc19hc3luYyA9IGZhbHNlOworCitzdGF0aWMgdm9pZAordXNhZ2UoY2hh ciAqYXJndltdKQoreworCXByaW50ZigidXNhZ2U6ICVzIFtmbGFnc10gQ09OTklORk9cblxuIiwg YXJndlswXSk7CisKKwlwcmludGYoInJlY29nbml6ZWQgZmxhZ3M6XG4iKTsKKwlwcmludGYoIiAg LWgsIC0taGVscCAgICAgICAgICAgICAgc2hvdyB0aGlzIG1lc3NhZ2VcbiIpOworCXByaW50Zigi ICAtdiBWRVJTSU9OICAgICAgICAgICAgICBzZWxlY3QgdGhlIGhvb2sgQVBJIHZlcnNpb24gKGRl ZmF1bHQgMilcbiIpOworCXByaW50ZigiICAtLWV4cGVjdGVkLXNjb3BlIFNDT1BFICBmYWlsIGlm IHJlY2VpdmVkIHNjb3BlcyBkbyBub3QgbWF0Y2ggU0NPUEVcbiIpOworCXByaW50ZigiICAtLWV4 cGVjdGVkLXVyaSBVUkkgICAgICBmYWlsIGlmIHJlY2VpdmVkIGNvbmZpZ3VyYXRpb24gbGluayBk b2VzIG5vdCBtYXRjaCBVUklcbiIpOworCXByaW50ZigiICAtLWV4cGVjdGVkLWlzc3VlciBJU1Mg ICBmYWlsIGlmIHJlY2VpdmVkIGlzc3VlciBkb2VzIG5vdCBtYXRjaCBJU1MgKHYyIG9ubHkpXG4i KTsKKwlwcmludGYoIiAgLS1taXNiZWhhdmU9TU9ERSAgICAgICAgaGF2ZSB0aGUgaG9vayBmYWls IHJlcXVpcmVkIHBvc3Rjb25kaXRpb25zXG4iCisJCSAgICIgICAgICAgICAgICAgICAgICAgICAg ICAgIChNT0RFczogbm8taG9vaywgZmFpbC1hc3luYywgbm8tdG9rZW4sIG5vLXNvY2tldClcbiIp OworCXByaW50ZigiICAtLW5vLWhvb2sgICAgICAgICAgICAgICBkb24ndCBpbnN0YWxsIE9BdXRo IGhvb2tzXG4iKTsKKwlwcmludGYoIiAgLS1oYW5nLWZvcmV2ZXIgICAgICAgICAgZG9uJ3QgZXZl ciByZXR1cm4gYSB0b2tlbiAoY29tYmluZSB3aXRoIGNvbm5lY3RfdGltZW91dClcbiIpOworCXBy aW50ZigiICAtLXRva2VuIFRPS0VOICAgICAgICAgICB1c2UgdGhlIHByb3ZpZGVkIFRPS0VOIHZh bHVlXG4iKTsKKwlwcmludGYoIiAgLS1lcnJvciBFUlJNU0cgICAgICAgICAgZmFpbCBpbnN0ZWFk LCB3aXRoIHRoZSBnaXZlbiBFUlJNU0cgKHYyIG9ubHkpXG4iKTsKKwlwcmludGYoIiAgLS1zdHJl c3MtYXN5bmMgICAgICAgICAgYnVzeS1sb29wIG9uIFBRY29ubmVjdFBvbGwgcmF0aGVyIHRoYW4g cG9sbGluZ1xuIik7Cit9CisKK2NoYXIgKgorb2F1dGhfdGVzdF9wYXJzZV9hcmd2KGludCBhcmdj LCBjaGFyICphcmd2W10sIGludCBmb3JfcGx1Z2luKQoreworCXN0YXRpYyBjb25zdCBzdHJ1Y3Qg b3B0aW9uIGxvbmdfb3B0aW9uc1tdID0geworCQl7ImhlbHAiLCBub19hcmd1bWVudCwgTlVMTCwg J2gnfSwKKworCQl7ImV4cGVjdGVkLXNjb3BlIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDEw MDB9LAorCQl7ImV4cGVjdGVkLXVyaSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAxMDAxfSwK KwkJeyJuby1ob29rIiwgbm9fYXJndW1lbnQsIE5VTEwsIDEwMDJ9LAorCQl7InRva2VuIiwgcmVx dWlyZWRfYXJndW1lbnQsIE5VTEwsIDEwMDN9LAorCQl7ImhhbmctZm9yZXZlciIsIG5vX2FyZ3Vt ZW50LCBOVUxMLCAxMDA0fSwKKwkJeyJtaXNiZWhhdmUiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVM TCwgMTAwNX0sCisJCXsic3RyZXNzLWFzeW5jIiwgbm9fYXJndW1lbnQsIE5VTEwsIDEwMDZ9LAor CQl7ImV4cGVjdGVkLWlzc3VlciIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAxMDA3fSwKKwkJ eyJlcnJvciIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAxMDA4fSwKKwkJezB9CisJfTsKKwor CWludAkJCWM7CisKKwlpZiAoZm9yX3BsdWdpbikKKwl7CisJCS8qIFRoZSAicmVhbCIgYXJndiBo YXMgYWxyZWFkeSBiZWVuIHBhcnNlZC4gUmVzZXQgb3B0aW5kLiAqLworCQlvcHRpbmQgPSAxOwor CX0KKworCXdoaWxlICgoYyA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJodjoiLCBsb25nX29w dGlvbnMsIE5VTEwpKSAhPSAtMSkKKwl7CisJCXN3aXRjaCAoYykKKwkJeworCQkJY2FzZSAnaCc6 CisJCQkJdXNhZ2UoYXJndik7CisJCQkJZXhpdCgwKTsKKworCQkJY2FzZSAndic6CisJCQkJaWYg KHN0cmNtcChvcHRhcmcsICIxIikgPT0gMCkKKwkJCQkJaG9va192ZXJzaW9uID0gUFFBVVRIREFU QV9PQVVUSF9CRUFSRVJfVE9LRU47CisJCQkJZWxzZSBpZiAoc3RyY21wKG9wdGFyZywgIjIiKSA9 PSAwKQorCQkJCQlob29rX3ZlcnNpb24gPSBQUUFVVEhEQVRBX09BVVRIX0JFQVJFUl9UT0tFTl9W MjsKKwkJCQllbHNlCisJCQkJeworCQkJCQl1c2FnZShhcmd2KTsKKwkJCQkJZXhpdCgxKTsKKwkJ CQl9CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgMTAwMDoJCQkvKiAtLWV4cGVjdGVkLXNjb3BlICov CisJCQkJZXhwZWN0ZWRfc2NvcGUgPSBvcHRhcmc7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgMTAw MToJCQkvKiAtLWV4cGVjdGVkLXVyaSAqLworCQkJCWV4cGVjdGVkX3VyaSA9IG9wdGFyZzsKKwkJ CQlicmVhazsKKworCQkJY2FzZSAxMDAyOgkJCS8qIC0tbm8taG9vayAqLworCQkJCW5vX2hvb2sg PSB0cnVlOworCQkJCWJyZWFrOworCisJCQljYXNlIDEwMDM6CQkJLyogLS10b2tlbiAqLworCQkJ CXRva2VuID0gb3B0YXJnOworCQkJCWJyZWFrOworCisJCQljYXNlIDEwMDQ6CQkJLyogLS1oYW5n LWZvcmV2ZXIgKi8KKwkJCQloYW5nX2ZvcmV2ZXIgPSB0cnVlOworCQkJCWJyZWFrOworCisJCQlj YXNlIDEwMDU6CQkJLyogLS1taXNiZWhhdmUgKi8KKwkJCQltaXNiZWhhdmVfbW9kZSA9IG9wdGFy ZzsKKwkJCQlicmVhazsKKworCQkJY2FzZSAxMDA2OgkJCS8qIC0tc3RyZXNzLWFzeW5jICovCisJ CQkJc3RyZXNzX2FzeW5jID0gdHJ1ZTsKKwkJCQlicmVhazsKKworCQkJY2FzZSAxMDA3OgkJCS8q IC0tZXhwZWN0ZWQtaXNzdWVyICovCisJCQkJZXhwZWN0ZWRfaXNzdWVyID0gb3B0YXJnOworCQkJ CWJyZWFrOworCisJCQljYXNlIDEwMDg6CQkJLyogLS1lcnJvciAqLworCQkJCWVycm1zZyA9IG9w dGFyZzsKKwkJCQlicmVhazsKKworCQkJZGVmYXVsdDoKKwkJCQl1c2FnZShhcmd2KTsKKwkJCQll eGl0KDEpOworCQl9CisJfQorCisJaWYgKGFyZ2MgIT0gKGZvcl9wbHVnaW4gPyBvcHRpbmQgOiBv cHRpbmQgKyAxKSkKKwl7CisJCXVzYWdlKGFyZ3YpOworCQlleGl0KDEpOworCX0KKworCXJldHVy biBhcmd2W29wdGluZF07Cit9CisKKy8qCisgKiBQUWF1dGhEYXRhSG9vayBpbXBsZW1lbnRhdGlv bi4gUmVwbGFjZXMgdGhlIGRlZmF1bHQgY2xpZW50IGZsb3cgYnkgaGFuZGxpbmcKKyAqIFBRQVVU SERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOW19WMl0uCisgKi8KK2ludAorb2F1dGhfdGVzdF9hdXRo ZGF0YV9ob29rKFBHYXV0aERhdGEgdHlwZSwgUEdjb25uICpjb25uLCB2b2lkICpkYXRhKQorewor CVBHb2F1dGhCZWFyZXJSZXF1ZXN0ICpyZXE7CisJUEdvYXV0aEJlYXJlclJlcXVlc3RWMiAqcmVx MiA9IE5VTEw7CisKKwlBc3NlcnQoaG9va192ZXJzaW9uID09IFBRQVVUSERBVEFfT0FVVEhfQkVB UkVSX1RPS0VOIHx8CisJCSAgIGhvb2tfdmVyc2lvbiA9PSBQUUFVVEhEQVRBX09BVVRIX0JFQVJF Ul9UT0tFTl9WMik7CisKKwlpZiAobm9faG9vayB8fCB0eXBlICE9IGhvb2tfdmVyc2lvbikKKwkJ cmV0dXJuIDA7CisKKwlyZXEgPSBkYXRhOworCWlmICh0eXBlID09IFBRQVVUSERBVEFfT0FVVEhf QkVBUkVSX1RPS0VOX1YyKQorCQlyZXEyID0gZGF0YTsKKworCWlmIChoYW5nX2ZvcmV2ZXIpCisJ eworCQkvKiBTdGFydCBhc3luY2hyb25vdXMgcHJvY2Vzc2luZy4gKi8KKwkJcmVxLT5hc3luYyA9 IGFzeW5jX2NiOworCQlyZXR1cm4gMTsKKwl9CisKKwlpZiAobWlzYmVoYXZlX21vZGUpCisJewor CQlpZiAoc3RyY21wKG1pc2JlaGF2ZV9tb2RlLCAibm8taG9vayIpICE9IDApCisJCQlyZXEtPmFz eW5jID0gbWlzYmVoYXZlX2NiOworCQlyZXR1cm4gMTsKKwl9CisKKwlpZiAoZXhwZWN0ZWRfdXJp KQorCXsKKwkJaWYgKCFyZXEtPm9wZW5pZF9jb25maWd1cmF0aW9uKQorCQl7CisJCQlmcHJpbnRm KHN0ZGVyciwgImV4cGVjdGVkIFVSSSBcIiVzXCIsIGdvdCBOVUxMXG4iLCBleHBlY3RlZF91cmkp OworCQkJcmV0dXJuIC0xOworCQl9CisKKwkJaWYgKHN0cmNtcChleHBlY3RlZF91cmksIHJlcS0+ b3BlbmlkX2NvbmZpZ3VyYXRpb24pICE9IDApCisJCXsKKwkJCWZwcmludGYoc3RkZXJyLCAiZXhw ZWN0ZWQgVVJJIFwiJXNcIiwgZ290IFwiJXNcIlxuIiwgZXhwZWN0ZWRfdXJpLCByZXEtPm9wZW5p ZF9jb25maWd1cmF0aW9uKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCX0KKworCWlmIChleHBlY3Rl ZF9zY29wZSkKKwl7CisJCWlmICghcmVxLT5zY29wZSkKKwkJeworCQkJZnByaW50ZihzdGRlcnIs ICJleHBlY3RlZCBzY29wZSBcIiVzXCIsIGdvdCBOVUxMXG4iLCBleHBlY3RlZF9zY29wZSk7CisJ CQlyZXR1cm4gLTE7CisJCX0KKworCQlpZiAoc3RyY21wKGV4cGVjdGVkX3Njb3BlLCByZXEtPnNj b3BlKSAhPSAwKQorCQl7CisJCQlmcHJpbnRmKHN0ZGVyciwgImV4cGVjdGVkIHNjb3BlIFwiJXNc IiwgZ290IFwiJXNcIlxuIiwgZXhwZWN0ZWRfc2NvcGUsIHJlcS0+c2NvcGUpOworCQkJcmV0dXJu IC0xOworCQl9CisJfQorCisJaWYgKGV4cGVjdGVkX2lzc3VlcikKKwl7CisJCWlmICghcmVxMikK KwkJeworCQkJZnByaW50ZihzdGRlcnIsICItLWV4cGVjdGVkLWlzc3VlciBjYW5ub3QgYmUgY29t YmluZWQgd2l0aCAtdjFcbiIpOworCQkJcmV0dXJuIC0xOworCQl9CisKKwkJaWYgKCFyZXEyLT5p c3N1ZXIpCisJCXsKKwkJCWZwcmludGYoc3RkZXJyLCAiZXhwZWN0ZWQgaXNzdWVyIFwiJXNcIiwg Z290IE5VTExcbiIsIGV4cGVjdGVkX2lzc3Vlcik7CisJCQlyZXR1cm4gLTE7CisJCX0KKworCQlp ZiAoc3RyY21wKGV4cGVjdGVkX2lzc3VlciwgcmVxMi0+aXNzdWVyKSAhPSAwKQorCQl7CisJCQlm cHJpbnRmKHN0ZGVyciwgImV4cGVjdGVkIGlzc3VlciBcIiVzXCIsIGdvdCBcIiVzXCJcbiIsIGV4 cGVjdGVkX2lzc3VlciwgcmVxMi0+aXNzdWVyKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCX0KKwor CWlmIChlcnJtc2cpCisJeworCQlpZiAodG9rZW4pCisJCXsKKwkJCWZwcmludGYoc3RkZXJyLCAi LS1lcnJvciBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCAtLXRva2VuXG4iKTsKKwkJCXJldHVybiAt MTsKKwkJfQorCQllbHNlIGlmICghcmVxMikKKwkJeworCQkJZnByaW50ZihzdGRlcnIsICItLWVy cm9yIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIC12MVxuIik7CisJCQlyZXR1cm4gLTE7CisJCX0K KworCQlyZXEyLT5lcnJvciA9IGVycm1zZzsKKwkJcmV0dXJuIC0xOworCX0KKworCXJlcS0+dG9r ZW4gPSB0b2tlbjsKKwlyZXR1cm4gMTsKK30KKworLyoKKyAqIFNldHMgdXAgYSByZXF1ZXN0IGZv ciBhIHBsdWdpbiBtb2R1bGUgKHBnX3N0YXJ0X29hdXRoYmVhcmVyKCkpIHJhdGhlciB0aGFuCisg KiB1c2luZyB0aGUgaG9vay4KKyAqLworaW50CitvYXV0aF90ZXN0X3N0YXJ0X2Zsb3coUEdjb25u ICpjb25uLCBQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1ZXN0KQoreworCWludAkJCXJldDsK KworCS8qCisJICogV2UgY2FuIHN0aWxsIGRlZmVyIHRvIHRoZSBob29rIGFib3ZlIHRvIGF2b2lk IGNvcHlpbmcgY29kZTsgd2UganVzdAorCSAqIGhhdmUgdG8gdHJhbnNsYXRlIHRoZSByZXR1cm4g dmFsdWUuCisJICovCisJcmV0ID0gb2F1dGhfdGVzdF9hdXRoZGF0YV9ob29rKFBRQVVUSERBVEFf T0FVVEhfQkVBUkVSX1RPS0VOX1YyLCBjb25uLAorCQkJCQkJCQkgICByZXF1ZXN0KTsKKworCWlm IChyZXQgPT0gMCkKKwl7CisJCS8qIFRoaXMgaXMgYSBidWcgaW4gdGhlIHRlc3QuICovCisJCWZw cmludGYoc3RkZXJyLCAicGx1Z2luIHRlc3RzIGNhbm5vdCBtYWtlIHVzZSBvZiAtdjEgb3IgLS1u by1ob29rXG4iKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlyZXR1cm4gKHJldCA9PSAxKSA/IDAgOiAt MTsKK30KKworc3RhdGljIFBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUKK2FzeW5jX2NiKFBHY29u biAqY29ubiwgUEdvYXV0aEJlYXJlclJlcXVlc3QgKnJlcSwgcGdzb2NrZXQgKmFsdHNvY2spCit7 CisJaWYgKGhhbmdfZm9yZXZlcikKKwl7CisJCS8qCisJCSAqIFRoaXMgY29kZSB0ZXN0cyB0aGF0 IG5vdGhpbmcgaXMgaW50ZXJmZXJpbmcgd2l0aCBsaWJwcSdzIGhhbmRsaW5nCisJCSAqIG9mIGNv bm5lY3RfdGltZW91dC4KKwkJICovCisJCXN0YXRpYyBwZ3NvY2tldCBzb2NrID0gUEdJTlZBTElE X1NPQ0tFVDsKKworCQlpZiAoc29jayA9PSBQR0lOVkFMSURfU09DS0VUKQorCQl7CisJCQkvKiBG aXJzdCBjYWxsLiBDcmVhdGUgYW4gdW5ib3VuZCBzb2NrZXQgdG8gd2FpdCBvbi4gKi8KKyNpZmRl ZiBXSU4zMgorCQkJV1NBREFUQQkJd3NhRGF0YTsKKwkJCWludAkJCWVycjsKKworCQkJZXJyID0g V1NBU3RhcnR1cChNQUtFV09SRCgyLCAyKSwgJndzYURhdGEpOworCQkJaWYgKGVycikKKwkJCXsK KwkJCQlwZXJyb3IoIldTQVN0YXJ0dXAgZmFpbGVkIik7CisJCQkJcmV0dXJuIFBHUkVTX1BPTExJ TkdfRkFJTEVEOworCQkJfQorI2VuZGlmCisJCQlzb2NrID0gc29ja2V0KEFGX0lORVQsIFNPQ0tf REdSQU0sIDApOworCQkJaWYgKHNvY2sgPT0gUEdJTlZBTElEX1NPQ0tFVCkKKwkJCXsKKwkJCQlw ZXJyb3IoImZhaWxlZCB0byBjcmVhdGUgZGF0YWdyYW0gc29ja2V0Iik7CisJCQkJcmV0dXJuIFBH UkVTX1BPTExJTkdfRkFJTEVEOworCQkJfQorCQl9CisKKwkJLyogTWFrZSBsaWJwcSB3YWl0IG9u IHRoZSAodW5yZWFkYWJsZSkgc29ja2V0LiAqLworCQkqYWx0c29jayA9IHNvY2s7CisJCXJldHVy biBQR1JFU19QT0xMSU5HX1JFQURJTkc7CisJfQorCisJcmVxLT50b2tlbiA9IHRva2VuOworCXJl dHVybiBQR1JFU19QT0xMSU5HX09LOworfQorCitzdGF0aWMgUG9zdGdyZXNQb2xsaW5nU3RhdHVz VHlwZQorbWlzYmVoYXZlX2NiKFBHY29ubiAqY29ubiwgUEdvYXV0aEJlYXJlclJlcXVlc3QgKnJl cSwgcGdzb2NrZXQgKmFsdHNvY2spCit7CisJaWYgKHN0cmNtcChtaXNiZWhhdmVfbW9kZSwgImZh aWwtYXN5bmMiKSA9PSAwKQorCXsKKwkJLyogSnVzdCBmYWlsICJub3JtYWxseSIuICovCisJCWlm IChlcnJtc2cpCisJCXsKKwkJCVBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlcTI7CisKKwkJCWlm IChob29rX3ZlcnNpb24gPT0gUFFBVVRIREFUQV9PQVVUSF9CRUFSRVJfVE9LRU4pCisJCQl7CisJ CQkJZnByaW50ZihzdGRlcnIsICItLWVycm9yIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIC12MVxu Iik7CisJCQkJZXhpdCgxKTsKKwkJCX0KKworCQkJcmVxMiA9IChQR29hdXRoQmVhcmVyUmVxdWVz dFYyICopIHJlcTsKKwkJCXJlcTItPmVycm9yID0gZXJybXNnOworCQl9CisKKwkJcmV0dXJuIFBH UkVTX1BPTExJTkdfRkFJTEVEOworCX0KKwllbHNlIGlmIChzdHJjbXAobWlzYmVoYXZlX21vZGUs ICJuby10b2tlbiIpID09IDApCisJeworCQkvKiBDYWxsYmFja3MgbXVzdCBhc3NpZ24gcmVxLT50 b2tlbiBiZWZvcmUgcmV0dXJuaW5nIE9LLiAqLworCQlyZXR1cm4gUEdSRVNfUE9MTElOR19PSzsK Kwl9CisJZWxzZSBpZiAoc3RyY21wKG1pc2JlaGF2ZV9tb2RlLCAibm8tc29ja2V0IikgPT0gMCkK Kwl7CisJCS8qIENhbGxiYWNrcyBtdXN0IGFzc2lnbiAqYWx0c29jayBiZWZvcmUgYXNraW5nIGZv ciBwb2xsaW5nLiAqLworCQlyZXR1cm4gUEdSRVNfUE9MTElOR19SRUFESU5HOworCX0KKwllbHNl CisJeworCQlmcHJpbnRmKHN0ZGVyciwgInVucmVjb2duaXplZCAtLW1pc2JlaGF2ZSBtb2RlOiAl c1xuIiwgbWlzYmVoYXZlX21vZGUpOworCQlleGl0KDEpOworCX0KK30KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL3QvMDAyX2NsaWVudC5wbCBiL3NyYy90ZXN0 L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL3QvMDAyX2NsaWVudC5wbAppbmRleCAwYmQ1Y2JiOTg3 NC4uMDMwZmIyZmZhZTEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRh dG9yL3QvMDAyX2NsaWVudC5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRv ci90LzAwMl9jbGllbnQucGwKQEAgLTEsNiArMSw2IEBACiAjCiAjIEV4ZXJjaXNlcyB0aGUgQVBJ IGZvciBjdXN0b20gT0F1dGggY2xpZW50IGZsb3dzLCB1c2luZyB0aGUgb2F1dGhfaG9va19jbGll bnQKLSMgdGVzdCBkcml2ZXIuCisjIHRlc3QgZHJpdmVyIGFuZCB0aGUgb2F1dGhfZmxvdyBjdXN0 b20gcGx1Z2luLgogIwogIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyNiwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKICMKQEAgLTIwLDYgKzIwLDEwIEBAIGlmICghJEVOVntQR19U RVNUX0VYVFJBfSB8fCAkRU5We1BHX1RFU1RfRVhUUkF9ICF+IC9cYm9hdXRoXGIvKQogCSAgJ1Bv dGVudGlhbGx5IHVuc2FmZSB0ZXN0IG9hdXRoIG5vdCBlbmFibGVkIGluIFBHX1RFU1RfRVhUUkEn OwogfQogCitteSAkcGx1Z2luX3N1cHBvcnRlZCA9ICgKKwkJIGNoZWNrX3BnX2NvbmZpZygiI2Rl ZmluZSBIQVZFX1NZU19FVkVOVF9IIDEiKQorCSAgb3IgY2hlY2tfcGdfY29uZmlnKCIjZGVmaW5l IEhBVkVfU1lTX0VQT0xMX0ggMSIpKTsKKwogIwogIyBDbHVzdGVyIFNldHVwCiAjCkBAIC03Miw2 ICs3Niw4IEBAIHN1YiB0ZXN0CiAJCSRmbGFncyA9ICRwYXJhbXN7ZmxhZ3N9OwogCX0KIAorCSMg Rmlyc3QgcnVuIHRoZSBvYXV0aF9ob29rX2NsaWVudCwgd2hpY2ggdXNlcyBQUWF1dGhEYXRhSG9v ayB0byBpbnNlcnQgYSBuZXcKKwkjIE9BdXRoIGZsb3cuCiAJbXkgQGNtZCA9ICgib2F1dGhfaG9v a19jbGllbnQiLCBAeyRmbGFnc30sICRjb21tb25fY29ubnN0cik7CiAJbm90ZSAicnVubmluZyAn IiAuIGpvaW4oIicgJyIsIEBjbWQpIC4gIiciOwogCkBAIC0xMDMsNiArMTA5LDM3IEBAIHN1YiB0 ZXN0CiAJCSRub2RlLT5sb2dfY2hlY2soIiR0ZXN0X25hbWU6IGxvZyBtYXRjaGVzIiwKIAkJCSRs b2dfc3RhcnQsIGxvZ19saWtlID0+ICRwYXJhbXN7bG9nX2xpa2V9KTsKIAl9CisKKyAgU0tJUDoK Kwl7CisJCWxhc3QgU0tJUCBpZiAkcGFyYW1ze2hvb2tfb25seX07CisJCXNraXAgIk9BdXRoIG1v ZHVsZXMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIKKwkJICB1bmxlc3MgJHBs dWdpbl9zdXBwb3J0ZWQ7CisKKwkJIyBSdW4gdGhlIHNhbWUgdGVzdCB3aXRoIHBzcWwgaXRzZWxm LCBsb2FkaW5nIHRoZSBvYXV0aF9mbG93LnNvIG1vZHVsZS4KKwkJbG9jYWwgJEVOVntQR09BVVRI TU9EVUxFfSA9ICRFTlZ7Zmxvd19tb2R1bGVfcGF0aH07CisKKwkJIyBGbGFncyBhcmUgcGFzc2Vk IHRvIHRoZSBtb2R1bGUgdmlhIE9BVVRIX1RFU1RfRkxBR1MsIHdpdGggMHgwMSBhcyBhCisJCSMg c2VwYXJhdG9yLgorCQlsb2NhbCAkRU5We09BVVRIX1RFU1RfRkxBR1N9ID0gam9pbigiXHgwMSIs IEB7JGZsYWdzfSk7CisKKwkJaWYgKCRwYXJhbXN7ZXhwZWN0X3N1Y2Nlc3N9KQorCQl7CisJCQkk bm9kZS0+Y29ubmVjdF9vaygKKwkJCQkkY29tbW9uX2Nvbm5zdHIsCisJCQkJIltwbHVnaW4gZmxv d10gJHRlc3RfbmFtZSIsCisJCQkJZXhwZWN0ZWRfc3RkZXJyID0+ICRwYXJhbXN7ZXhwZWN0ZWRf c3RkZXJyfSwKKwkJCQlsb2dfbGlrZSA9PiAkcGFyYW1ze2xvZ19saWtlfSk7CisJCX0KKwkJZWxz ZQorCQl7CisJCQkkbm9kZS0+Y29ubmVjdF9mYWlscygKKwkJCQkkY29tbW9uX2Nvbm5zdHIsCisJ CQkJIltwbHVnaW4gZmxvd10gJHRlc3RfbmFtZSIsCisJCQkJZXhwZWN0ZWRfc3RkZXJyID0+ICRw YXJhbXN7ZXhwZWN0ZWRfc3RkZXJyfSwKKwkJCQlsb2dfbGlrZSA9PiAkcGFyYW1ze2xvZ19saWtl fSk7CisJCX0KKwl9CiB9CiAKIHRlc3QoCkBAIC0xMTksNiArMTU2LDcgQEAgdGVzdCgKICMgTWFr ZSBzdXJlIHRoZSB2MSBob29rIGNvbnRpbnVlcyB0byB3b3JrLgogdGVzdCgKIAkidjEgc3luY2hy b25vdXMgaG9vayBjYW4gcHJvdmlkZSBhIHRva2VuIiwKKwlob29rX29ubHkgPT4gMSwgICAgIyBw bHVnaW5zIGRvbid0IHN1cHBvcnQgQVBJIHYxCiAJZmxhZ3MgPT4gWwogCQkiLXYxIiwKIAkJIi0t dG9rZW4iID0+ICJteS10b2tlbi12MSIsCkBAIC0xMzMsNiArMTcxLDcgQEAgaWYgKCRFTlZ7d2l0 aF9saWJjdXJsfSBuZSAneWVzJykKIAkjIGxpYnBxIHNob3VsZCBoZWxwIHVzZXJzIG91dCBpZiBu byBPQXV0aCBzdXBwb3J0IGlzIGJ1aWx0IGluLgogCXRlc3QoCiAJCSJmYWlscyB3aXRob3V0IGN1 c3RvbSBob29rIGluc3RhbGxlZCIsCisJCWhvb2tfb25seSA9PiAxLCAgICAjIHBsdWdpbnMgY2Fu J3QgdXNlIC0tbm8taG9vawogCQlmbGFncyA9PiBbIi0tbm8taG9vayJdLAogCQlleHBlY3RlZF9z dGRlcnIgPT4KIAkJICBxci9ubyBPQXV0aCBmbG93cyBhcmUgYXZhaWxhYmxlIFwodHJ5IGluc3Rh bGxpbmcgdGhlIGxpYnBxLW9hdXRoIHBhY2thZ2VcKS8KQEAgLTE4OSw2ICsyMjgsNyBAQCBmb3Jl YWNoIG15ICRjIChAY2FzZXMpCiAJdGVzdCgKIAkJImhvb2sgbWlzYmVoYXZpb3I6ICRjLT57J2Zs YWcnfSAodjEpIiwKIAkJZmxhZ3MgPT4gWyAnLXYxJywgJGMtPnsnZmxhZyd9IF0sCisJCWhvb2tf b25seSA9PiAxLCAgICAjIHBsdWdpbnMgY2FuJ3QgdXNlIC12MQogCQlleHBlY3RlZF9zdGRlcnIg PT4gJGMtPnsnZXhwZWN0ZWRfZXJyb3InfSk7CiB9CiAKQEAgLTIwMiw0ICsyNDIsMTkgQEAgdGVz dCgKIAlleHBlY3RlZF9zdGRlcnIgPT4KIAkgIHFyL3VzZXItZGVmaW5lZCBPQXV0aCBmbG93IGZh aWxlZDogYXN5bmMgZXJyb3IgbWVzc2FnZS8pOwogCitTS0lQOgoreworCXNraXAgIk9BdXRoIG1v ZHVsZXMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIKKwkgIHVubGVzcyAkcGx1 Z2luX3N1cHBvcnRlZDsKKworCSMgTWFrZSBzdXJlIGEgbWlzYWltZWQgUEdPQVVUSE1PRFVMRSBn aXZlcyB0aGUgY29ycmVjdCBlcnJvciBtZXNzYWdlLgorCWxvY2FsICRFTlZ7UEdPQVVUSE1PRFVM RX0gPSAkbm9kZS0+YmFzZWRpciAuICcvbm9uZXhpc3RlbnQuc28nOworCisJJG5vZGUtPmNvbm5l Y3RfZmFpbHMoCisJCSRjb21tb25fY29ubnN0ciwKKwkJIlBHT0FVVEhNT0RVTEUgZXJyb3IgbWVz c2FnZXMiLAorCQlleHBlY3RlZF9zdGRlcnIgPT4KKwkJICBxci91c2VyLWRlZmluZWQgT0F1dGgg ZmxvdyBmYWlsZWQ6IHBsdWdpbiBjb3VsZCBub3QgYmUgbG9hZGVkLyk7Cit9CisKIGRvbmVfdGVz dGluZygpOwotLSAKMi4zNC4xCgo= --000000000000bab6b3064c25f1fe--