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 1w7ir0-005d9J-2X for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 23:50:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7iqy-00DpDi-2h for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 23:50:37 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w7iqy-00DpDY-1J for pgsql-hackers@lists.postgresql.org; Tue, 31 Mar 2026 23:50:36 +0000 Received: from mail-qv1-xf2f.google.com ([2607:f8b0:4864:20::f2f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w7iqv-00000002GEm-0s9f for pgsql-hackers@lists.postgresql.org; Tue, 31 Mar 2026 23:50:35 +0000 Received: by mail-qv1-xf2f.google.com with SMTP id 6a1803df08f44-89f1e767f92so30866986d6.2 for ; Tue, 31 Mar 2026 16:50:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775001031; cv=none; d=google.com; s=arc-20240605; b=FLJbQCZilokwxjYL220GfY6GsMsfnIhIWU8Ego+O5QWULwhXPewfv7LQnIR5OOPYIr J5L8ZCG5LKkitDOyWlXwPXTHwEqmrj7MZTfITI6JV3AKTGAHMCfAThcpEHIbpScygyR1 WM1+YfKNfnWt3Up4DD+VRL5xNR6Jn4jUn0nxK/U8+av4lbRhPEJruWgbY7IXPK/2qzEA ZnhTy0yTVEvGV14i/3DasBsKfdYuJ645tAmdY1HBYmvMDbxfb8iu2LIY/Sx2AXtAkEzo c9VlNL2npvOWB7rOAQlduy9B9k/6wcCH216uKrIE9Y//V/9zF08fY1FFEzVLQv2FdPaO GD7A== 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=Cja4SRhflyEoqyX9TB+SKATfDr7JB3PIp5JvbgwAq94=; fh=Uhl2MTexsexFzR1+X600UgWow4h7Z8f6vT6XJ84cwSU=; b=CmP1w1C3/FIIWuf9DC3Zn3EuaZ4hNvitRMaErOsmFj5KbDEwlMe6d34aI9ZY3chxQJ vaimeZ2Ak/uXTfggQvxg/gczsaL4839zsR5yCj6ECNKiGWKnB4QIC2hbq4LOhOjR6ye4 8PGuhuyhxfwhnUcDQfRYaY8w2xilXR1FAU7WaqoZCBomhpZWSzKZoBEMDkTbH1GEl1oE XiJmsZtHZ1GG5p2sHYIEQiQM45ZqDw+F8KdLbsJ1nB16dYLt0J7pxodTh9JwJOiUTU0H cQP9ppnFzahXuipakw+ITn+h+iov4OlMAW7krUbTQCZi2SkWqlx99Q59H6tsj688zS2s YJfA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1775001031; x=1775605831; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Cja4SRhflyEoqyX9TB+SKATfDr7JB3PIp5JvbgwAq94=; b=MrWdOob+PameVEYvFAbSp3Rkr3EqE78dVN9tPJW7WHmclzCfXiK6HxTSoYASKR0udI vOqkkwfopNGj0EOIK4Z900Shu15O/zhQeiLIuiFf13Saa79BRZz5DqdV2dm252cgm3dO tzbyPjG8quDnQ3ccaN/HCP1Yx5rtNY0P645HIHvnykITvQsauiO7gXaZRzyPGC7uouEj C1UVO0Gg4fDAVAkK6nHFoYM2MWglsbIkzLjfOUNlSPBGVT7VxRObSxqV211vScdZ54+Z N1Fj4XaD2+aR846t+bYn9Geab+iUxr+xsYPSBrztH4eK5Ffqn+ZwxXwPEsFR1y5EHvKw pzNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775001031; x=1775605831; 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=Cja4SRhflyEoqyX9TB+SKATfDr7JB3PIp5JvbgwAq94=; b=jK08srPBE4L6JcPXHDHoJxETGQNxxxCEwSvBysSeChfBx61zGeWCHv8mw/QUKSlp2d tS75nz8VHq0PJ1tYq6KmjmQ25j8tUzEL3Y2XU+YIq710Y7aB1tboTuvmW3hoTQUKXmIW ELmz04a8OSi3roPTsDBAQ8H2l1aqz/Ovpc33Gjk+r0f9Iju2KL01dgQgCTsUNcXwvuBF yNnDZ9N9LhzAs+EQudw29iczsTzODk38L4IlPdGLC5T7L6Qg4AHUBIAIwxUMAF2x7ycS /TTUG0oo53f5/VgxGINShQDbiJVbbY0xbd9TIlLmBcU2K0QI+6K9TxG4WxPjvDbqX3Qn 1giw== X-Gm-Message-State: AOJu0YwRz9ZbkTU8bDO/JV0BqtO2/SxdHN0nNb9YGr/cAyYf2DdqX+jN FABu33Cy69Qqb7VAZRMnOKbk2v0GjmaAJ5n1+9iCflQfYe0TCOXeQYFGSHHWFuqR2xdKidr+61S HSFsRLXHymlnQvwL5m2KH+icCNYr1KyM7ceEDh7wV X-Gm-Gg: ATEYQzx8XRpGa9em/gTsF1sD0PLkN3PO+zJLZyFjMmhemZ3Rq7XeeNFsmSdPY1uB2Ja TfI6wuOMv5onC7TH7qUhwPTUE9UCdNIzeNOBCgD5jKdLRBt6RW0xI7b+pwA8DQAJ35mnRLfSFlm 2gQ+jIqLwjQNELK1fhIgkumypB0Vw32/MtUanUZujRQ3JGZ5YV/yboSsoG8IG7cpG39nkbgSd8G xYFECGdAB2fO/ewBPxyUlKhgdcGdnw6aZVkdhKo+w+rJ9ZsnsIUrJ77w9dav0JlIiX6w3raSUya LgXszsIERg== X-Received: by 2002:ad4:5c62:0:b0:89c:d7e3:7f01 with SMTP id 6a1803df08f44-8a439d90905mr23481166d6.48.1775001030657; Tue, 31 Mar 2026 16:50:30 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Jacob Champion Date: Tue, 31 Mar 2026 16:50:19 -0700 X-Gm-Features: AQROBzCbxhFruQ4WCKwj8cFjqs-o39OYeOprri2kxQ_36ZjA_30PYJWAd17Y9zI Message-ID: Subject: Re: [oauth] Split and extend PGOAUTHDEBUG To: Zsolt Parragi Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000e92bf5064e5aa135" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e92bf5064e5aa135 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Mar 31, 2026 at 10:45=E2=80=AFAM Zsolt Parragi wrote: > I didn't want to write "print-poll-counts" and "print-trace" as those > are just longer, while simply writing "plugin-errors" without print > also seemed wrong. Maybe it could be "plugin-debug" instead, that > sounds good even withour print? I like `plugin-errors`, actually -- "I want to debug these plugin errors." Adding -debug to the name doesn't seem great to me, since it's clear from the context that we're debugging. `dos-retry` still doesn't quite convey what we're doing... `dos-endpoint` maybe? `busy-loop`? The unsafe aspect is the resource consumption... To keep the brainstorming going, I chose the following for v3, but they're by no means settled: - http - trace - dos-endpoint - call-count - plugin-errors > > I have a sample patch locally for these suggestions, if you'd like. > > I can create a patch with these updates tomorrow, but if you already > have it, that might be easier/quicker. In the interest of time I've attached it as a single patch, but the range-diff is rough to read. If you'd like, I can split the code motion apart from the logical changes tomorrow, to see if it helps with review. --Jacob --000000000000e92bf5064e5aa135 Content-Type: application/octet-stream; name="since-v2.nocfbot.diff" Content-Disposition: attachment; filename="since-v2.nocfbot.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnf9m47b0 MTogIGU1MWY3MTdlMDdjICEgMTogIDc0M2I0YTVjM2E1IFNwbGl0IFBHT0FVVEhERUJVRz1VTlNB RkUgaW50byBtdWx0aXBsZSBvcHRpb25zCiAgICBAQAogICAgICAjIyBNZXRhZGF0YSAjIwogICAg LUF1dGhvcjogWnNvbHQgUGFycmFnaSA8enNvbHQucGFycmFnaUBwZXJjb25hLmNvbT4KICAgICtB dXRob3I6IEphY29iIENoYW1waW9uIDxqYWNvYi5jaGFtcGlvbkBlbnRlcnByaXNlZGIuY29tPgog ICAgIAogICAgICAjIyBDb21taXQgbWVzc2FnZSAjIwogICAgICAgICBTcGxpdCBQR09BVVRIREVC VUc9VU5TQUZFIGludG8gbXVsdGlwbGUgb3B0aW9ucwogICAgIAogICAgKyAgICBXSVAKICAgICsK ICAgICsgICAgQXV0aG9yOiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEuY29t PgogICAgKyAgICBDby1hdXRob3JlZC1ieTogSmFjb2IgQ2hhbXBpb24gPGphY29iLmNoYW1waW9u QGVudGVycHJpc2VkYi5jb20+CiAgICArCiAgICAgICMjIGRvYy9zcmMvc2dtbC9saWJwcS5zZ21s ICMjCiAgICAgQEAgZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWw6IHR5cGVkZWYgc3RydWN0CiAgICAg ICAgIDwvcGFyYT4KICAgIEBAIGRvYy9zcmMvc2dtbC9saWJwcS5zZ21sOiB0eXBlZGVmIHN0cnVj dAogICAgICsgICAgZGVidWcgb3B0aW9uczoKICAgICArCiAgICAgKyAgICA8cHJvZ3JhbWxpc3Rp bmc+CiAgICAtK1BHT0FVVEhERUJVRz1vcHRpb24xLG9wdGlvbjIsLi4uICAgIDxsaW5lYW5ub3Rh dGlvbj5mb3Igc2FmZSBvcHRpb25zIG9ubHk8L2xpbmVhbm5vdGF0aW9uPgogICAgLStQR09BVVRI REVCVUc9VU5TQUZFOm9wdGlvbjEsb3B0aW9uMiwuLi4gICAgPGxpbmVhbm5vdGF0aW9uPndoZW4g dXNpbmcgdW5zYWZlIG9wdGlvbnM8L2xpbmVhbm5vdGF0aW9uPgogICAgLStQR09BVVRIREVCVUc9 VU5TQUZFICAgIDxsaW5lYW5ub3RhdGlvbj5sZWdhY3kgZm9ybWF0OyBlbmFibGVzIGFsbCBvcHRp b25zPC9saW5lYW5ub3RhdGlvbj4KICAgICsrUEdPQVVUSERFQlVHPW9wdGlvbjEsb3B0aW9uMiwu Li4gICAgICAgICA8bGluZWFubm90YXRpb24+Zm9yIHNhZmUgb3B0aW9ucyBvbmx5PC9saW5lYW5u b3RhdGlvbj4KICAgICsrUEdPQVVUSERFQlVHPVVOU0FGRTpvcHRpb24xLG9wdGlvbjIsLi4uICA8 bGluZWFubm90YXRpb24+d2hlbiB1c2luZyB1bnNhZmUgb3B0aW9uczwvbGluZWFubm90YXRpb24+ CiAgICArK1BHT0FVVEhERUJVRz1VTlNBRkUgICAgICAgICAgICAgICAgICAgICAgPGxpbmVhbm5v dGF0aW9uPmxlZ2FjeSBmb3JtYXQ7IGVuYWJsZXMgYWxsIG9wdGlvbnM8L2xpbmVhbm5vdGF0aW9u PgogICAgICsgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICArICAgPC9wYXJhPgogICAgICAKICAg IEBAIGRvYy9zcmMvc2dtbC9saWJwcS5zZ21sOiB0eXBlZGVmIHN0cnVjdAogICAgICsgICAgIDwv dmFybGlzdGVudHJ5PgogICAgICsKICAgICArICAgICA8dmFybGlzdGVudHJ5PgogICAgLSsgICAg ICA8dGVybT48bGl0ZXJhbD5mYXN0LXJldHJ5PC9saXRlcmFsPiAoc2FmZSk8L3Rlcm0+CiAgICAr KyAgICAgIDx0ZXJtPjxsaXRlcmFsPmRvcy1lbmRwb2ludDwvbGl0ZXJhbD4gKHVuc2FmZSk8L3Rl cm0+CiAgICAgKyAgICAgIDxsaXN0aXRlbT4KICAgICArICAgICAgIDxwYXJhPgogICAgICsgICAg ICAgIFBlcm1pdHMgdGhlIHVzZSBvZiB6ZXJvLXNlY29uZCByZXRyeSBpbnRlcnZhbHMgaW5zdGVh ZCBvZiB0aGUgbm9ybWFsCiAgICAtKyAgICAgICAgbWluaW11bSBvZiBvbmUgc2Vjb25kLiBUaGlz IGNhbiBzcGVlZCB1cCB0ZXN0cyBidXQgbWF5IGNhdXNlIHRoZSBjbGllbnQKICAgIC0rICAgICAg ICB0byBidXN5LWxvb3AgYW5kIGNvbnN1bWUgQ1BVIHVubmVjZXNzYXJpbHkuCiAgICArKyAgICAg ICAgbWluaW11bSBvZiBvbmUgc2Vjb25kLiBUaGlzIHNwZWVkcyB1cCB0ZXN0cywgYnV0IGluIG5v cm1hbCBvcGVyYXRpb24gaXQKICAgICsrICAgICAgICB3aWxsIGNhdXNlIHRoZSBjbGllbnQgdG8g YnVzeS1sb29wLCBjb25zdW1pbmcgQ1BVIGFuZCBuZXR3b3JrIHJlc291cmNlcy4KICAgICArICAg ICAgIDwvcGFyYT4KICAgICArICAgICAgPC9saXN0aXRlbT4KICAgICArICAgICA8L3Zhcmxpc3Rl bnRyeT4KICAgICArCiAgICAgKyAgICAgPHZhcmxpc3RlbnRyeT4KICAgIC0rICAgICAgPHRlcm0+ PGxpdGVyYWw+cG9sbC1jb3VudHM8L2xpdGVyYWw+IChzYWZlKTwvdGVybT4KICAgICsrICAgICAg PHRlcm0+PGxpdGVyYWw+Y2FsbC1jb3VudDwvbGl0ZXJhbD4gKHNhZmUpPC90ZXJtPgogICAgICsg ICAgICA8bGlzdGl0ZW0+CiAgICAgKyAgICAgICA8cGFyYT4KICAgIC0rICAgICAgICBQcmludHMg dGhlIHRvdGFsIG51bWJlciBvZiBwb2xsKCkgY2FsbHMgdG8gc3RhbmRhcmQgZXJyb3Igd2hlbiB0 aGUKICAgIC0rICAgICAgICBPQXV0aCBmbG93IGNvbXBsZXRlcy4gVGhpcyBoZWxwcyBkZXZlbG9w ZXJzIGRlYnVnIHRoZSBhc3luYyBtdWx0aXBsZXhlcgogICAgLSsgICAgICAgIGJlaGF2aW9yLgog ICAgKysgICAgICAgIFByaW50cyB0aGUgdG90YWwgbnVtYmVyIG9mIGNhbGxzIHRvIHRoZSBmbG93 IHBsdWdpbiB0byBzdGFuZGFyZCBlcnJvcgogICAgKysgICAgICAgIHdoZW4gdGhlIE9BdXRoIGZs b3cgY29tcGxldGVzLiBUaGlzIGhlbHBzIGRldmVsb3BlcnMgZGVidWcgdGhlIGFzeW5jCiAgICAr KyAgICAgICAgY2FsbGJhY2sgYmVoYXZpb3IuCiAgICAgKyAgICAgICA8L3BhcmE+CiAgICAgKyAg ICAgIDwvbGlzdGl0ZW0+CiAgICAgKyAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgKwogICAgICsg ICAgIDx2YXJsaXN0ZW50cnk+CiAgICAtKyAgICAgIDx0ZXJtPjxsaXRlcmFsPnByaW50LXBsdWdp bi1lcnJvcnM8L2xpdGVyYWw+IChzYWZlKTwvdGVybT4KICAgICsrICAgICAgPHRlcm0+PGxpdGVy YWw+cGx1Z2luLWVycm9yczwvbGl0ZXJhbD4gKHNhZmUpPC90ZXJtPgogICAgICsgICAgICA8bGlz dGl0ZW0+CiAgICAgKyAgICAgICA8cGFyYT4KICAgICArICAgICAgICBQcmludHMgcGx1Z2luIGxv YWRpbmcgZXJyb3JzIHRvIHN0YW5kYXJkIGVycm9yLiBUaGlzIGhlbHBzIGRldmVsb3BlcnMKICAg IEBAIGRvYy9zcmMvc2dtbC9saWJwcS5zZ21sOiB0eXBlZGVmIHN0cnVjdAogICAgICsgICA8L3Bh cmE+CiAgICAgKwogICAgICsgICA8cGFyYT4KICAgIC0rICAgIFVuc2FmZSBvcHRpb25zICg8bGl0 ZXJhbD5odHRwPC9saXRlcmFsPiwgPGxpdGVyYWw+dHJhY2U8L2xpdGVyYWw+KQogICAgLSsgICAg cmVxdWlyZSB0aGUgPGxpdGVyYWw+VU5TQUZFOjwvbGl0ZXJhbD4gcHJlZml4LgogICAgKysgICAg VW5zYWZlIG9wdGlvbnMgKDxsaXRlcmFsPmh0dHA8L2xpdGVyYWw+LCA8bGl0ZXJhbD50cmFjZTwv bGl0ZXJhbD4sCiAgICArKyAgICA8bGl0ZXJhbD5kb3MtZW5kcG9pbnQ8L2xpdGVyYWw+KSByZXF1 aXJlIHRoZSA8bGl0ZXJhbD5VTlNBRkU6PC9saXRlcmFsPiBwcmVmaXguCiAgICAgKyAgICBJZiB1 bnNhZmUgb3B0aW9ucyBhcmUgc3BlY2lmaWVkIHdpdGhvdXQgdGhpcyBwcmVmaXgsIGEgd2Fybmlu ZyBpcyBwcmludGVkCiAgICAgKyAgICB0byBzdGFuZGFyZCBlcnJvciBhbmQgdGhhdCBvcHRpb24g aXMgaWdub3JlZC4gT3RoZXIgdmFsaWQgb3B0aW9ucyBpbiB0aGUKICAgIC0rICAgIGxpc3QgY29u dGludWUgdG8gd29yay4gU2FmZSBvcHRpb25zICg8bGl0ZXJhbD5mYXN0LXJldHJ5PC9saXRlcmFs PiwKICAgIC0rICAgIDxsaXRlcmFsPnBvbGwtY291bnRzPC9saXRlcmFsPiwgPGxpdGVyYWw+cHJp bnQtcGx1Z2luLWVycm9yczwvbGl0ZXJhbD4pIGNhbgogICAgLSsgICAgYmUgdXNlZCB3aXRob3V0 IHRoZSBwcmVmaXguCiAgICArKyAgICBsaXN0IGNvbnRpbnVlIHRvIHdvcmsuIFNhZmUgb3B0aW9u cyAoPGxpdGVyYWw+Y2FsbC1jb3VudDwvbGl0ZXJhbD4sCiAgICArKyAgICA8bGl0ZXJhbD5wbHVn aW4tZXJyb3JzPC9saXRlcmFsPikgY2FuIGJlIHVzZWQgd2l0aG91dCB0aGUgcHJlZml4LgogICAg ICAgICA8L3BhcmE+CiAgICAgKwogICAgICsgICA8cGFyYT4KICAgIEBAIGRvYy9zcmMvc2dtbC9s aWJwcS5zZ21sOiB0eXBlZGVmIHN0cnVjdAogICAgICsgICA8cGFyYT4KICAgICArICAgIEV4YW1w bGVzOgogICAgICsgICAgPHByb2dyYW1saXN0aW5nPgogICAgLStQR09BVVRIREVCVUc9ZmFzdC1y ZXRyeSxwb2xsLWNvdW50cyAgICA8bGluZWFubm90YXRpb24+c2FmZSBvcHRpb25zIG9ubHk8L2xp bmVhbm5vdGF0aW9uPgogICAgLStQR09BVVRIREVCVUc9VU5TQUZFOmh0dHAsdHJhY2UgICAgPGxp bmVhbm5vdGF0aW9uPmVuYWJsZSBIVFRQIGFuZCB0cmFmZmljIGxvZ2dpbmc8L2xpbmVhbm5vdGF0 aW9uPgogICAgLStQR09BVVRIREVCVUc9VU5TQUZFOmh0dHAscG9sbC1jb3VudHMgICAgPGxpbmVh bm5vdGF0aW9uPm1peCBvZiB1bnNhZmUgYW5kIHNhZmU8L2xpbmVhbm5vdGF0aW9uPgogICAgLStQ R09BVVRIREVCVUc9VU5TQUZFICAgIDxsaW5lYW5ub3RhdGlvbj5sZWdhY3k7IGVuYWJsZXMgYWxs IG9wdGlvbnM8L2xpbmVhbm5vdGF0aW9uPgogICAgKytQR09BVVRIREVCVUc9Y2FsbC1jb3VudCAg ICAgICAgICAgICAgPGxpbmVhbm5vdGF0aW9uPnNhZmUgb3B0aW9ucyBvbmx5PC9saW5lYW5ub3Rh dGlvbj4KICAgICsrUEdPQVVUSERFQlVHPVVOU0FGRTpodHRwLHRyYWNlICAgICAgIDxsaW5lYW5u b3RhdGlvbj5lbmFibGUgSFRUUCBhbmQgdHJhZmZpYyBsb2dnaW5nPC9saW5lYW5ub3RhdGlvbj4K ICAgICsrUEdPQVVUSERFQlVHPVVOU0FGRTpodHRwLGNhbGwtY291bnQgIDxsaW5lYW5ub3RhdGlv bj5taXggb2YgdW5zYWZlIGFuZCBzYWZlPC9saW5lYW5ub3RhdGlvbj4KICAgICArICAgIDwvcHJv Z3JhbWxpc3Rpbmc+CiAgICAgKyAgIDwvcGFyYT4KICAgICArCiAgICBAQCBkb2Mvc3JjL3NnbWwv bGlicHEuc2dtbDogdHlwZWRlZiBzdHJ1Y3QKICAgICAgICAgIDxwYXJhPgogICAgIC0gICAgIERv IG5vdCBzaGFyZSB0aGUgb3V0cHV0IG9mIHRoZSBPQXV0aCBmbG93IHRyYWZmaWMgd2l0aCB0aGly ZCBwYXJ0aWVzLiBJdAogICAgIC0gICAgIGNvbnRhaW5zIHNlY3JldHMgdGhhdCBjYW4gYmUgdXNl ZCB0byBhdHRhY2sgeW91ciBjbGllbnRzIGFuZCBzZXJ2ZXJzLgogICAgLSsgICAgIE5ldmVyIHVz ZSB1bnNhZmUgZGVidWcgb3B0aW9ucyBpbiBwcm9kdWN0aW9uIGVudmlyb25tZW50cy4gVGhlCiAg ICAtKyAgICAgPGxpdGVyYWw+dHJhY2U8L2xpdGVyYWw+IG9wdGlvbiBpbiBwYXJ0aWN1bGFyIGV4 cG9zZXMgc2VjcmV0cyB0aGF0IGNhbiBiZQogICAgLSsgICAgIHVzZWQgdG8gYXR0YWNrIHlvdXIg Y2xpZW50cyBhbmQgc2VydmVycy4gRG8gbm90IHNoYXJlIHRoZSBvdXRwdXQgd2l0aCB0aGlyZAog ICAgLSsgICAgIHBhcnRpZXMuCiAgICArKyAgICAgTmV2ZXIgdXNlIHVuc2FmZSBkZWJ1ZyBvcHRp b25zIGluIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzLiBUaGV5IGV4cG9zZQogICAgKysgICAgIHNl Y3JldHMgYW5kIGJlaGF2aW9ycyB0aGF0IGNhbiBiZSB1c2VkIHRvIGF0dGFjayB5b3VyIGNsaWVu dHMgYW5kIHNlcnZlcnMuCiAgICArKyAgICAgRG8gbm90IHNoYXJlIDxsaXRlcmFsPnRyYWNlPC9s aXRlcmFsPiBvdXRwdXQgd2l0aCB0aGlyZCBwYXJ0aWVzLgogICAgICAgICAgPC9wYXJhPgogICAg ICAgICA8L3dhcm5pbmc+CiAgICAgICAgPC9zZWN0Mj4KICAgICAKICAgIC0gIyMgc3JjL2ludGVy ZmFjZXMvbGlicHEtb2F1dGgvbWVzb24uYnVpbGQgIyMKICAgIC1AQCBzcmMvaW50ZXJmYWNlcy9s aWJwcS1vYXV0aC9tZXNvbi5idWlsZDogZW5kaWYKICAgIC0gCiAgICAtIGxpYnBxX29hdXRoX3Nv dXJjZXMgPSBmaWxlcygKICAgIC0gICAnb2F1dGgtY3VybC5jJywKICAgIC0rICAnLi4vbGlicHEv ZmUtYXV0aC1vYXV0aC1kZWJ1Zy5jJywKICAgIC0gKQogICAgLSAKICAgIC0gIyBUaGUgc2hhcmVk IGxpYnJhcnkgbmVlZHMgYWRkaXRpb25hbCBnbHVlIHN5bWJvbHMuCiAgICAtQEAgc3JjL2ludGVy ZmFjZXMvbGlicHEtb2F1dGgvbWVzb24uYnVpbGQ6IGVuZGlmCiAgICAtIAogICAgLSBsaWJwcV9v YXV0aF90ZXN0X2RlcHMgPSBbXQogICAgLSAKICAgIC0tb2F1dGhfdGVzdF9zb3VyY2VzID0gZmls ZXMoJ3Rlc3Qtb2F1dGgtY3VybC5jJykgKyBsaWJwcV9vYXV0aF9zb19zb3VyY2VzCiAgICAtK29h dXRoX3Rlc3Rfc291cmNlcyA9IGZpbGVzKAogICAgLSsgICd0ZXN0LW9hdXRoLWN1cmwuYycsCiAg ICAtKyAgJy4uL2xpYnBxL2ZlLWF1dGgtb2F1dGgtZGVidWcuYycsCiAgICAtKykgKyBsaWJwcV9v YXV0aF9zb19zb3VyY2VzCiAgICAtIAogICAgLSBpZiBob3N0X3N5c3RlbSA9PSAnd2luZG93cycK ICAgIC0gICBvYXV0aF90ZXN0X3NvdXJjZXMgKz0gcmNfYmluX2dlbi5wcm9jZXNzKHdpbjMydmVy X3JjLCBleHRyYV9hcmdzOiBbCiAgICAtCiAgICAtICMjIHNyYy9pbnRlcmZhY2VzL2xpYnBxL21l c29uLmJ1aWxkICMjCiAgICAtQEAKICAgIC0gCiAgICAtIGxpYnBxX3NvdXJjZXMgPSBmaWxlcygK ICAgIC0gICAnZmUtYXV0aC1vYXV0aC5jJywKICAgIC0rICAnZmUtYXV0aC1vYXV0aC1kZWJ1Zy5j JywKICAgIC0gICAnZmUtYXV0aC1zY3JhbS5jJywKICAgIC0gICAnZmUtYXV0aC5jJywKICAgIC0g ICAnZmUtY2FuY2VsLmMnLAogICAgLQogICAgLSAjIyBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0 aC9NYWtlZmlsZSAjIwogICAgLUBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL01ha2VmaWxl OiBvdmVycmlkZSBDUFBGTEFHU19TSExJQiArPSAtRFVTRV9QUklWQVRFX0VOQ09ESU5HX0ZVTkNT CiAgICAtIE9CSlMgPSBcCiAgICAtIAkkKFdJTjMyUkVTKQogICAgLSAKICAgIC0tT0JKU19TVEFU SUMgPSBvYXV0aC1jdXJsLm8KICAgIC0rT0JKU19TVEFUSUMgPSBcCiAgICAtKwlvYXV0aC1jdXJs Lm8gXAogICAgLSsJZmUtYXV0aC1vYXV0aC1kZWJ1Zy5vCiAgICAtIAogICAgLSAjIFRoZSBzaGFy ZWQgbGlicmFyeSBuZWVkcyBhZGRpdGlvbmFsIGdsdWUgc3ltYm9scy4KICAgIC0gT0JKU19TSExJ QiA9IFwKICAgIC0gCW9hdXRoLWN1cmxfc2hsaWIubyBcCiAgICAtIAlvYXV0aC11dGlscy5vIFwK ICAgIC0rCWZlLWF1dGgtb2F1dGgtZGVidWdfc2hsaWIubwogICAgLSAKICAgIC0gb2F1dGgtdXRp bHMubzogb3ZlcnJpZGUgQ1BQRkxBR1MgKz0gJChDUFBGTEFHU19TSExJQikKICAgIC0gCiAgICAt K2ZlLWF1dGgtb2F1dGgtZGVidWcubzogJChsaWJwcV9zcmNkaXIpL2ZlLWF1dGgtb2F1dGgtZGVi dWcuYwogICAgLSsJJChDQykgJChDRkxBR1MpICQoQ1BQRkxBR1MpIC1jICQ8IC1vICRACiAgICAt KwogICAgLStmZS1hdXRoLW9hdXRoLWRlYnVnX3NobGliLm86ICQobGlicHFfc3JjZGlyKS9mZS1h dXRoLW9hdXRoLWRlYnVnLmMgZmUtYXV0aC1vYXV0aC1kZWJ1Zy5vCiAgICAtKwkkKENDKSAkKENG TEFHUykgJChDRkxBR1NfU0wpICQoQ1BQRkxBR1MpICQoQ1BQRkxBR1NfU0hMSUIpIC1jICQ8IC1v ICRACiAgICAtKwogICAgLSAjIEFkZCBzaGxpYi0vc3RsaWItc3BlY2lmaWMgb2JqZWN0cy4KICAg IC0gJChzaGxpYik6IG92ZXJyaWRlIE9CSlMgKz0gJChPQkpTX1NITElCKQogICAgLSAkKHNobGli KTogJChPQkpTX1NITElCKQogICAgLQogICAgLSAjIyBzcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtl ZmlsZSAjIwogICAgLUBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxL01ha2VmaWxlOiBPQkpTID0gXAog ICAgLSAJbGVnYWN5LXBxc2lnbmFsLm8gXAogICAgLSAJbGlicHEtZXZlbnRzLm8gXAogICAgLSAJ cHFleHBidWZmZXIubyBcCiAgICAtLQlmZS1hdXRoLm8KICAgIC0rCWZlLWF1dGgubyBcCiAgICAt KwlmZS1hdXRoLW9hdXRoLWRlYnVnLm8KICAgIC0gCiAgICAtICMgRmlsZSBzaGFyZWQgYWNyb3Nz IGFsbCBTU0wgaW1wbGVtZW50YXRpb25zIHN1cHBvcnRlZC4KICAgIC0gaWZuZXEgKCQod2l0aF9z c2wpLG5vKQogICAgLQogICAgICAjIyBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC11 dGlscy5oICMjCiAgICAtQEAKICAgIC0gI2lmbmRlZiBPQVVUSF9VVElMU19ICiAgICAtICNkZWZp bmUgT0FVVEhfVVRJTFNfSAogICAgLSAKICAgIC0rI2luY2x1ZGUgImZlLWF1dGgtb2F1dGguaCIK ICAgIC0gI2luY2x1ZGUgImxpYnBxLWZlLmgiCiAgICAtICNpbmNsdWRlICJwcWV4cGJ1ZmZlci5o IgogICAgLSAKICAgICBAQCBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC11dGlscy5o OiB0eXBlZGVmIGVudW0KICAgICAgCVBHX0JPT0xfTk8JCQkJCS8qIE5vIChmYWxzZSkgKi8KICAg ICAgfSBQR1Rlcm5hcnlCb29sOwogICAgICAKICAgICAtZXh0ZXJuIGJvb2wgb2F1dGhfdW5zYWZl X2RlYnVnZ2luZ19lbmFibGVkKHZvaWQpOwogICAgLStleHRlcm4gb2F1dGhfZGVidWdfZmxhZ3Mg b2F1dGhfZ2V0X2RlYnVnX2ZsYWdzKHZvaWQpOwogICAgICBleHRlcm4gaW50CXBxX2Jsb2NrX3Np Z3BpcGUoc2lnc2V0X3QgKm9zaWdzZXQsIGJvb2wgKnNpZ3BpcGVfcGVuZGluZyk7CiAgICAgIGV4 dGVybiB2b2lkIHBxX3Jlc2V0X3NpZ3BpcGUoc2lnc2V0X3QgKm9zaWdzZXQsIGJvb2wgc2lncGlw ZV9wZW5kaW5nLCBib29sIGdvdF9lcGlwZSk7CiAgICAgIAogICAgIAogICAgICAjIyBzcmMvaW50 ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmggIyMKICAgICBAQCBzcmMvaW50ZXJmYWNlcy9s aWJwcS9mZS1hdXRoLW9hdXRoLmg6IHR5cGVkZWYgc3RydWN0CiAgICAtIAl2b2lkCSAgICpidWls dGluX2Zsb3c7CiAgICAgIH0gZmVfb2F1dGhfc3RhdGU7CiAgICAgIAogICAgLSsvKgogICAgLSsg KiBEZWJ1ZyBmbGFncyBmb3IgUEdPQVVUSERFQlVHIGVudmlyb25tZW50IHZhcmlhYmxlLgogICAg LSsgKiBFYWNoIGZsYWcgY29udHJvbHMgYSBzcGVjaWZpYyBkZWJ1ZyBmZWF0dXJlLgogICAgLSsg Ki8KICAgIC0rdHlwZWRlZiBzdHJ1Y3Qgb2F1dGhfZGVidWdfZmxhZ3MKICAgIC0rewogICAgLSsJ LyogVU5TQUZFIGZlYXR1cmVzIC0gcmVxdWlyZSBVTlNBRkU6IHByZWZpeCAqLwogICAgLSsJYm9v bAkJaHR0cDsJCQkvKiBhbGxvdyBIVFRQICh1bmVuY3J5cHRlZCkgY29ubmVjdGlvbnMgKi8KICAg IC0rCWJvb2wJCXRyYWNlOwkJCS8qIGxvZyBIVFRQIHRyYWZmaWMgKGV4cG9zZXMgc2VjcmV0cykg Ki8KICAgIC0rCiAgICAtKwkvKiBTQUZFIGZlYXR1cmVzIC0gYWxsb3dlZCB3aXRob3V0IFVOU0FG RTogcHJlZml4ICovCiAgICAtKwlib29sCQlmYXN0X3JldHJ5OwkJLyogYWxsb3cgemVyby1zZWNv bmQgcmV0cnkgaW50ZXJ2YWxzICovCiAgICAtKwlib29sCQlwb2xsX2NvdW50czsJLyogcHJpbnQg cG9sbCgpIHN0YXRpc3RpY3MgKi8KICAgIC0rCWJvb2wJCXByaW50X3BsdWdpbl9lcnJvcnM7CS8q IHByaW50IHBsdWdpbiBsb2FkaW5nIGVycm9ycyAqLwogICAgLSt9IG9hdXRoX2RlYnVnX2ZsYWdz OwogICAgLSsKICAgICAgZXh0ZXJuIHZvaWQgcHFDbGVhck9BdXRoVG9rZW4oUEdjb25uICpjb25u KTsKICAgICAtZXh0ZXJuIGJvb2wgb2F1dGhfdW5zYWZlX2RlYnVnZ2luZ19lbmFibGVkKHZvaWQp OwogICAgLStleHRlcm4gb2F1dGhfZGVidWdfZmxhZ3Mgb2F1dGhfZ2V0X2RlYnVnX2ZsYWdzKHZv aWQpOwogICAgICAKICAgICAgLyogTWVjaGFuaXNtcyBpbiBmZS1hdXRoLW9hdXRoLmMgKi8KICAg ICAgZXh0ZXJuIGNvbnN0IHBnX2ZlX3Nhc2xfbWVjaCBwZ19vYXV0aF9tZWNoOwogICAgIAogICAg KyAjIyBzcmMvaW50ZXJmYWNlcy9saWJwcS9vYXV0aC1kZWJ1Zy5oIChuZXcpICMjCiAgICArQEAK ICAgICsrLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICArKyAqCiAgICArKyAqIG9hdXRoLWRlYnVnLmgK ICAgICsrICoJICBQYXJzaW5nIGxvZ2ljIGZvciBQR09BVVRIREVCVUcgZW52aXJvbm1lbnQgdmFy aWFibGUKICAgICsrICoKICAgICsrICogQm90aCBsaWJwcSBhbmQgbGlicHEtb2F1dGggbmVlZCB0 aGlzIGxvZ2ljLCBzbyBpdCdzIHBhY2thZ2VkIGluIGEgc21hbGwKICAgICsrICogaGVhZGVyIGZv ciBjb252ZW5pZW5jZS4gVGhpcyBpcyBub3QgcXVpdGUgYSBzdGFuZGFsb25lIGhlYWRlciwgZHVl IHRvIHRoZQogICAgKysgKiBjb21wbGljYXRpb24gaW50cm9kdWNlZCBieSBsaWJwcV9nZXR0ZXh0 KCk7IHNlZSBub3RlIGJlbG93LgogICAgKysgKgogICAgKysgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAgICsr ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5 IG9mIENhbGlmb3JuaWEKICAgICsrICoKICAgICsrICogSURFTlRJRklDQVRJT04KICAgICsrICog CXNyYy9pbnRlcmZhY2VzL2xpYnBxL29hdXRoLWRlYnVnLmgKICAgICsrICoKICAgICsrICotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgICArKyAqLwogICAgKysKICAgICsrI2lmbmRlZiBPQVVUSF9ERUJVR19I CiAgICArKyNkZWZpbmUgT0FVVEhfREVCVUdfSAogICAgKysKICAgICsrI2luY2x1ZGUgInBvc3Rn cmVzX2ZlLmgiCiAgICArKwogICAgKysvKgogICAgKysgKiBYWFggbGlicHEtb2F1dGggY2FuJ3Qg Y29tcGlsZSBhZ2FpbnN0IGxpYnBxLWludC5oLCBzbyBjbGllbnRzIG9mIHRoaXMgaGVhZGVyCiAg ICArKyAqIG5lZWQgdG8gcHJvdmlkZSB0aGUgZGVjbGFyYXRpb24gb2YgbGlicHFfZ2V0dGV4dCgp IGJlZm9yZSAjaW5jbHVkaW5nIGl0LgogICAgKysgKiBGb3J0dW5hdGVseSwgdGhlcmUgYXJlIG9u bHkgdHdvIHN1Y2ggY2xpZW50cy4KICAgICsrICovCiAgICArKy8qICNpbmNsdWRlICJsaWJwcS1p bnQuaCIgKi8KICAgICsrCiAgICArKy8qCiAgICArKyAqIERlYnVnIGZsYWdzIGZvciB0aGUgUEdP QVVUSERFQlVHIGVudmlyb25tZW50IHZhcmlhYmxlLiBFYWNoIGZsYWcgY29udHJvbHMgYQogICAg KysgKiBzcGVjaWZpYyBkZWJ1ZyBmZWF0dXJlLiBPQVVUSERFQlVHX1VOU0FGRV8qIGZsYWdzIHJl cXVpcmUgdGhlIGVudnZhciB0byBoYXZlCiAgICArKyAqIGEgbGl0ZXJhbCAiVU5TQUZFOiIgcHJl Zml4LgogICAgKysgKi8KICAgICsrCiAgICArKy8qIGFsbG93IEhUVFAgKHVuZW5jcnlwdGVkKSBj b25uZWN0aW9ucyAqLwogICAgKysjZGVmaW5lIE9BVVRIREVCVUdfVU5TQUZFX0hUVFAJCQkoMTw8 MCkKICAgICsrLyogbG9nIEhUVFAgdHJhZmZpYyAoZXhwb3NlcyBzZWNyZXRzKSAqLwogICAgKysj ZGVmaW5lIE9BVVRIREVCVUdfVU5TQUZFX1RSQUNFCQkJKDE8PDEpCiAgICArKy8qIGFsbG93IHpl cm8tc2Vjb25kIHJldHJ5IGludGVydmFscyAqLwogICAgKysjZGVmaW5lIE9BVVRIREVCVUdfVU5T QUZFX0RPU19FTkRQT0lOVAkoMTw8MikKICAgICsrCiAgICArKy8qIG1pbmQgdGhlIGdhcCBpbiB2 YWx1ZXM7IHNlZSBPQVVUSERFQlVHX1VOU0FGRV9NQVNLIGJlbG93ICovCiAgICArKwogICAgKysv KiBwcmludCBQUWNvbm5lY3RQb2xsIHN0YXRpc3RpY3MgKi8KICAgICsrI2RlZmluZSBPQVVUSERF QlVHX0NBTExfQ09VTlQJCQkoMTw8MTYpCiAgICArKy8qIHByaW50IHBsdWdpbiBsb2FkaW5nIGVy cm9ycyAqLwogICAgKysjZGVmaW5lIE9BVVRIREVCVUdfUExVR0lOX0VSUk9SUwkJKDE8PDE3KQog ICAgKysKICAgICsrLyogYWxsIHNhZmUgYW5kIHVuc2FmZSBmbGFncywgZm9yIHRoZSBsZWdhY3kg VU5TQUZFIGJlaGF2aW9yICovCiAgICArKyNkZWZpbmUgT0FVVEhERUJVR19VTlNBRkVfQUxMCQkJ KCh1aW50MzIpIH4wKQogICAgKysKICAgICsrLyogRmxhZ3MgYXJlIGRpdmlkZWQgaW50byAic2Fm ZSIgYW5kICJ1bnNhZmUiIGJhc2VkIG9uIGJpdCBwb3NpdGlvbi4gKi8KICAgICsrI2RlZmluZSBP QVVUSERFQlVHX1VOU0FGRV9NQVNLCQkJKCh1aW50MzIpIDB4MDAwMEZGRkYpCiAgICArKwogICAg KytzdGF0aWNfYXNzZXJ0KE9BVVRIREVCVUdfQ0FMTF9DT1VOVCA9PSBPQVVUSERFQlVHX1VOU0FG RV9NQVNLICsgMSwKICAgICsrCQkJICAidGhlIGZpcnN0IHNhZmUgT0FVVEhERUJVRyBmbGFnIHNo b3VsZCBiZSBhYm92ZSBPQVVUSERFQlVHX1VOU0FGRV9NQVNLIik7CiAgICArKwogICAgKysvKgog ICAgKysgKiBQYXJzZXMgdGhlIFBHT0FVVEhERUJVRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQg cmV0dXJucyBkZWJ1ZyBmbGFncy4KICAgICsrICoKICAgICsrICogU3VwcG9ydGVkIGZvcm1hdHM6 CiAgICArKyAqICAgUEdPQVVUSERFQlVHPVVOU0FGRSAgICAgICAgICAgICAgLSBsZWdhY3kgZm9y bWF0LCBlbmFibGVzIGFsbCBmZWF0dXJlcwogICAgKysgKiAgIFBHT0FVVEhERUJVRz1vcHRpb24x LG9wdGlvbjIgICAgIC0gZW5hYmxlIHNhZmUgZmVhdHVyZXMgb25seQogICAgKysgKiAgIFBHT0FV VEhERUJVRz1VTlNBRkU6b3B0MSxvcHQyICAgIC0gZW5hYmxlIHVuc2FmZSBhbmQvb3Igc2FmZSBm ZWF0dXJlcwogICAgKysgKgogICAgKysgKiBQcmludHMgYSB3YXJuaW5nIGFuZCBza2lwcyB0aGUg aW52YWxpZCBvcHRpb24gaWY6CiAgICArKyAqIC0gQW4gdW5yZWNvZ25pemVkIG9wdGlvbiBpcyBz cGVjaWZpZWQKICAgICsrICogLSBBbiB1bnNhZmUgb3B0aW9uIGlzIHNwZWNpZmllZCB3aXRob3V0 IHRoZSBVTlNBRkU6IHByZWZpeAogICAgKysgKi8KICAgICsrc3RhdGljIHVpbnQzMgogICAgKytv YXV0aF9nZXRfZGVidWdfZmxhZ3Modm9pZCkKICAgICsrewogICAgKysJdWludDMyCQlmbGFncyA9 IDA7CiAgICArKwljb25zdCBjaGFyICplbnYgPSBnZXRlbnYoIlBHT0FVVEhERUJVRyIpOwogICAg KysJY2hhcgkgICAqb3B0aW9uc19zdHI7CiAgICArKwljaGFyCSAgICpvcHRpb247CiAgICArKwlj aGFyCSAgICpzYXZlcHRyID0gTlVMTDsKICAgICsrCWJvb2wJCXVuc2FmZV9hbGxvd2VkID0gZmFs c2U7CiAgICArKwogICAgKysJaWYgKCFlbnYgfHwgZW52WzBdID09ICdcMCcpCiAgICArKwkJcmV0 dXJuIGZsYWdzOwogICAgKysKICAgICsrCWlmIChzdHJjbXAoZW52LCAiVU5TQUZFIikgPT0gMCkK ICAgICsrCQlyZXR1cm4gT0FVVEhERUJVR19VTlNBRkVfQUxMOwogICAgKysKICAgICsrCWlmIChz dHJuY21wKGVudiwgIlVOU0FGRToiLCA3KSA9PSAwKQogICAgKysJewogICAgKysJCXVuc2FmZV9h bGxvd2VkID0gdHJ1ZTsKICAgICsrCQllbnYgKz0gNzsKICAgICsrCX0KICAgICsrCiAgICArKwlv cHRpb25zX3N0ciA9IHN0cmR1cChlbnYpOwogICAgKysJaWYgKCFvcHRpb25zX3N0cikKICAgICsr CQlyZXR1cm4gZmxhZ3M7CiAgICArKwogICAgKysJb3B0aW9uID0gc3RydG9rX3Iob3B0aW9uc19z dHIsICIsIiwgJnNhdmVwdHIpOwogICAgKysJd2hpbGUgKG9wdGlvbiAhPSBOVUxMKQogICAgKysJ ewogICAgKysJCXVpbnQzMgkJZmxhZyA9IDA7CiAgICArKwogICAgKysJCWlmIChzdHJjbXAob3B0 aW9uLCAiaHR0cCIpID09IDApCiAgICArKwkJCWZsYWcgPSBPQVVUSERFQlVHX1VOU0FGRV9IVFRQ OwogICAgKysJCWVsc2UgaWYgKHN0cmNtcChvcHRpb24sICJ0cmFjZSIpID09IDApCiAgICArKwkJ CWZsYWcgPSBPQVVUSERFQlVHX1VOU0FGRV9UUkFDRTsKICAgICsrCQllbHNlIGlmIChzdHJjbXAo b3B0aW9uLCAiZG9zLWVuZHBvaW50IikgPT0gMCkKICAgICsrCQkJZmxhZyA9IE9BVVRIREVCVUdf VU5TQUZFX0RPU19FTkRQT0lOVDsKICAgICsrCQllbHNlIGlmIChzdHJjbXAob3B0aW9uLCAiY2Fs bC1jb3VudCIpID09IDApCiAgICArKwkJCWZsYWcgPSBPQVVUSERFQlVHX0NBTExfQ09VTlQ7CiAg ICArKwkJZWxzZSBpZiAoc3RyY21wKG9wdGlvbiwgInBsdWdpbi1lcnJvcnMiKSA9PSAwKQogICAg KysJCQlmbGFnID0gT0FVVEhERUJVR19QTFVHSU5fRVJST1JTOwogICAgKysJCWVsc2UKICAgICsr CQkJZnByaW50ZihzdGRlcnIsCiAgICArKwkJCQkJbGlicHFfZ2V0dGV4dCgiV0FSTklORzogdW5y ZWNvZ25pemVkIFBHT0FVVEhERUJVRyBvcHRpb24gXCIlc1wiIChpZ25vcmVkKVxuIiksCiAgICAr KwkJCQkJb3B0aW9uKTsKICAgICsrCiAgICArKwkJaWYgKCF1bnNhZmVfYWxsb3dlZCAmJiAoKGZs YWcgJiBPQVVUSERFQlVHX1VOU0FGRV9NQVNLKSAhPSAwKSkKICAgICsrCQl7CiAgICArKwkJCWZs YWcgPSAwOwogICAgKysKICAgICsrCQkJZnByaW50ZihzdGRlcnIsCiAgICArKwkJCQkJbGlicHFf Z2V0dGV4dCgiV0FSTklORzogUEdPQVVUSERFQlVHIG9wdGlvbiBcIiVzXCIgaXMgdW5zYWZlIChp Z25vcmVkKVxuIiksCiAgICArKwkJCQkJb3B0aW9uKTsKICAgICsrCQl9CiAgICArKwogICAgKysJ CWZsYWdzIHw9IGZsYWc7CiAgICArKwkJb3B0aW9uID0gc3RydG9rX3IoTlVMTCwgIiwiLCAmc2F2 ZXB0cik7CiAgICArKwl9CiAgICArKwogICAgKysJZnJlZShvcHRpb25zX3N0cik7CiAgICArKwog ICAgKysJcmV0dXJuIGZsYWdzOwogICAgKyt9CiAgICArKwogICAgKysjZW5kaWYJCQkJCQkJLyog T0FVVEhfREVCVUdfSCAqLwogICAgKwogICAgICAjIyBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0 aC9vYXV0aC1jdXJsLmMgIyMKICAgICtAQAogICAgKyAKICAgICsgI2VuZGlmCQkJCQkJCS8qIFVT RV9EWU5BTUlDX09BVVRIICovCiAgICArIAogICAgKysvKgogICAgKysgKiBvYXV0aC1kZWJ1Zy5o IG5lZWRzIHRoZSBkZWNsYXJhdGlvbiBvZiBsaWJwcV9nZXR0ZXh0KCksIGZyb20gb25lIG9mIHRo ZSBhYm92ZQogICAgKysgKiBzb3VyY2VzLgogICAgKysgKi8KICAgICsrI2luY2x1ZGUgIm9hdXRo LWRlYnVnLmgiCiAgICArKwogICAgKyAvKiBPbmUgZmluYWwgZ3VhcmRyYWlsIGFnYWluc3QgYWNj aWRlbnRhbCBpbmNsdXNpb24uLi4gKi8KICAgICsgI2lmIGRlZmluZWQoVVNFX0RZTkFNSUNfT0FV VEgpICYmIGRlZmluZWQoTElCUFFfSU5UX0gpCiAgICArICNlcnJvciBkbyBub3QgcmVseSBvbiBs aWJwcS1pbnQuaCBpbiBkeW5hbWljIGJ1aWxkcyBvZiBsaWJwcS1vYXV0aAogICAgIEBAIHNyYy9p bnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYzogc3RydWN0IGFzeW5jX2N0eAogICAg ICAJaW50CQkJcnVubmluZzsJCS8qIGlzIGFzeW5jaHJvbm91cyB3b3JrIGluIHByb2dyZXNzPyAq LwogICAgICAJYm9vbAkJdXNlcl9wcm9tcHRlZDsJLyogaGF2ZSB3ZSBhbHJlYWR5IHNlbnQgdGhl IGF1dGh6IHByb21wdD8gKi8KICAgICAgCWJvb2wJCXVzZWRfYmFzaWNfYXV0aDsJLyogZGlkIHdl IHNlbmQgYSBjbGllbnQgc2VjcmV0PyAqLwogICAgIC0JYm9vbAkJZGVidWdnaW5nOwkJLyogY2Fu IHdlIGdpdmUgdW5zYWZlIGRldmVsb3BlciBhc3Npc3RhbmNlPyAqLwogICAgLSsJb2F1dGhfZGVi dWdfZmxhZ3MgZGVidWdfZmxhZ3M7CS8qIGNhbiB3ZSBnaXZlIGRldmVsb3BlciBhc3Npc3RhbmNl ICovCiAgICArKwl1aW50MzIJCWRlYnVnX2ZsYWdzOwkvKiBjYW4gd2UgZ2l2ZSBkZXZlbG9wZXIg YXNzaXN0YW5jZT8gKi8KICAgICAgCWludAkJCWRiZ19udW1fY2FsbHM7CS8qIChkZWJ1ZyBtb2Rl KSBob3cgbWFueSB0aW1lcyB3ZXJlIHdlIGNhbGxlZD8gKi8KICAgICAgfTsKICAgICAgCiAgICBA QCBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmM6IHBhcnNlX2ludGVydmFs KHN0cnVjdCBhc3luY19jdHggKmFjdHgsCiAgICAgIAogICAgICAJaWYgKHBhcnNlZCA8IDEpCiAg ICAgLQkJcmV0dXJuIGFjdHgtPmRlYnVnZ2luZyA/IDAgOiAxOwogICAgLSsJCXJldHVybiBhY3R4 LT5kZWJ1Z19mbGFncy5mYXN0X3JldHJ5ID8gMCA6IDE7CiAgICArKwkJcmV0dXJuIChhY3R4LT5k ZWJ1Z19mbGFncyAmIE9BVVRIREVCVUdfVU5TQUZFX0RPU19FTkRQT0lOVCkgPyAwIDogMTsKICAg ICAgCiAgICAgIAllbHNlIGlmIChwYXJzZWQgPj0gSU5UX01BWCkKICAgICAgCQlyZXR1cm4gSU5U X01BWDsKICAgIEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYzogc2V0 dXBfY3VybF9oYW5kbGVzKHN0cnVjdCBhc3luY19jdHggKmFjCiAgICAgIAlDSEVDS19TRVRPUFQo YWN0eCwgQ1VSTE9QVF9OT1NJR05BTCwgMUwsIHJldHVybiBmYWxzZSk7CiAgICAgIAogICAgIC0J aWYgKGFjdHgtPmRlYnVnZ2luZykKICAgIC0rCWlmIChhY3R4LT5kZWJ1Z19mbGFncy50cmFjZSkK ICAgICsrCWlmIChhY3R4LT5kZWJ1Z19mbGFncyAmIE9BVVRIREVCVUdfVU5TQUZFX1RSQUNFKQog ICAgICAJewogICAgICAJCS8qCiAgICAgIAkJICogU2V0IGEgY2FsbGJhY2sgZm9yIHJldHJpZXZp bmcgZXJyb3IgaW5mb3JtYXRpb24gZnJvbSBsaWJjdXJsLCB0aGUKICAgIEBAIHNyYy9pbnRlcmZh Y2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYzogc2V0dXBfY3VybF9oYW5kbGVzKHN0cnVjdCBh c3luY19jdHggKmFjCiAgICAgICNlbmRpZgogICAgICAKICAgICAtCQlpZiAoYWN0eC0+ZGVidWdn aW5nKQogICAgLSsJCWlmIChhY3R4LT5kZWJ1Z19mbGFncy5odHRwKQogICAgKysJCWlmIChhY3R4 LT5kZWJ1Z19mbGFncyAmIE9BVVRIREVCVUdfVU5TQUZFX0hUVFApCiAgICAgIAkJCXByb3RvcyA9 IHVuc2FmZTsKICAgICAgCiAgICAgIAkJQ0hFQ0tfU0VUT1BUKGFjdHgsIHBvcHQsIHByb3Rvcywg cmV0dXJuIGZhbHNlKTsKICAgIEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1 cmwuYzogY2hlY2tfZm9yX2RldmljZV9mbG93KHN0cnVjdCBhc3luY19jdHgKICAgICAgCSAqIHdl J2xsIHVzZSBmb3IgdGhlIGZsb3cuCiAgICAgIAkgKi8KICAgICAtCWlmICghYWN0eC0+ZGVidWdn aW5nKQogICAgLSsJaWYgKCFhY3R4LT5kZWJ1Z19mbGFncy5odHRwKQogICAgKysJaWYgKChhY3R4 LT5kZWJ1Z19mbGFncyAmIE9BVVRIREVCVUdfVU5TQUZFX0hUVFApID09IDApCiAgICAgIAl7CiAg ICAgIAkJaWYgKHBnX3N0cm5jYXNlY21wKHByb3ZpZGVyLT5kZXZpY2VfYXV0aG9yaXphdGlvbl9l bmRwb2ludCwKICAgICAgCQkJCQkJICAgSFRUUFNfU0NIRU1FLCBzdHJsZW4oSFRUUFNfU0NIRU1F KSkgIT0gMCkKICAgIEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYzog cGdfZmVfcnVuX29hdXRoX2Zsb3coUEdjb25uICpjb25uLCBzdHJ1CiAgICAgIAkgKiBvZiBjYWxs cyB0byB0aGlzIGZ1bmN0aW9uIGFuZCBwcmludCB0aGF0IGF0IHRoZSBlbmQgb2YgdGhlIGZsb3cu CiAgICAgIAkgKi8KICAgICAtCWlmIChhY3R4LT5kZWJ1Z2dpbmcpCiAgICAtKwlpZiAoYWN0eCAm JiBhY3R4LT5kZWJ1Z19mbGFncy5wb2xsX2NvdW50cykKICAgICsrCWlmIChhY3R4LT5kZWJ1Z19m bGFncyAmIE9BVVRIREVCVUdfQ0FMTF9DT1VOVCkKICAgICAgCXsKICAgICAgCQlhY3R4LT5kYmdf bnVtX2NhbGxzKys7CiAgICAgIAkJaWYgKHJlc3VsdCA9PSBQR1JFU19QT0xMSU5HX09LIHx8IHJl c3VsdCA9PSBQR1JFU19QT0xMSU5HX0ZBSUxFRCkKICAgIEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBx LW9hdXRoL3Rlc3Qtb2F1dGgtY3VybC5jOiBpbml0X3Rlc3RfYWN0eCh2b2lkKQogICAgICAJYWN0 eC0+bXV4ID0gUEdJTlZBTElEX1NPQ0tFVDsKICAgICAgCWFjdHgtPnRpbWVyZmQgPSAtMTsKICAg ICAtCWFjdHgtPmRlYnVnZ2luZyA9IHRydWU7CiAgICAtKwlhY3R4LT5kZWJ1Z19mbGFncy5odHRw ID0gdHJ1ZTsKICAgIC0rCWFjdHgtPmRlYnVnX2ZsYWdzLnRyYWNlID0gdHJ1ZTsKICAgIC0rCWFj dHgtPmRlYnVnX2ZsYWdzLmZhc3RfcmV0cnkgPSB0cnVlOwogICAgLSsJYWN0eC0+ZGVidWdfZmxh Z3MucG9sbF9jb3VudHMgPSB0cnVlOwogICAgLSsJYWN0eC0+ZGVidWdfZmxhZ3MucHJpbnRfcGx1 Z2luX2Vycm9ycyA9IHRydWU7CiAgICArKwlhY3R4LT5kZWJ1Z19mbGFncyA9IE9BVVRIREVCVUdf VU5TQUZFX0FMTDsKICAgICAgCiAgICAgIAlpbml0UFFFeHBCdWZmZXIoJmFjdHgtPmVycmJ1Zik7 CiAgICAgIAogICAgIAogICAgLSAjIyBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRo LWRlYnVnLmMgKG5ldykgIyMKICAgIC1AQAogICAgLSsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC0r ICoKICAgIC0rICogZmUtYXV0aC1vYXV0aC1kZWJ1Zy5jCiAgICAtKyAqCSAgUGFyc2luZyBsb2dp YyBmb3IgUEdPQVVUSERFQlVHIGVudmlyb25tZW50IHZhcmlhYmxlCiAgICAtKyAqCiAgICAtKyAq IFRoaXMgZmlsZSBjb250YWlucyBwdXJlIHN0cmluZyBwYXJzaW5nIGxvZ2ljIHdpdGggbm8gZGVw ZW5kZW5jaWVzIG9uCiAgICAtKyAqIGxpYnBxIG9yIGxpYnBxLW9hdXRoIGltcGxlbWVudGF0aW9u IGRldGFpbHMuIEl0J3MgY29tcGlsZWQgaW50byBib3RoCiAgICAtKyAqIGxpYnJhcmllcyB0byBh dm9pZCBjb2RlIGR1cGxpY2F0aW9uLgogICAgLSsgKgogICAgLSsgKiBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDE5OTYtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAg IC0rICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJz aXR5IG9mIENhbGlmb3JuaWEKICAgIC0rICoKICAgIC0rICogSURFTlRJRklDQVRJT04KICAgIC0r ICogCXNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGgtZGVidWcuYwogICAgLSsgKgog ICAgLSsgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC0rICovCiAgICAtKwogICAgLSsjaW5jbHVkZSAi cG9zdGdyZXNfZmUuaCIKICAgIC0rCiAgICAtKyNpbmNsdWRlIDxzdGRpby5oPgogICAgLSsjaW5j bHVkZSA8c3RkbGliLmg+CiAgICAtKyNpbmNsdWRlIDxzdHJpbmcuaD4KICAgIC0rCiAgICAtKyNp bmNsdWRlICJmZS1hdXRoLW9hdXRoLmgiCiAgICAtKwogICAgLSsvKgogICAgLSsgKiBQYXJzZSBh IHNpbmdsZSBkZWJ1ZyBvcHRpb24gZnJvbSBQR09BVVRIREVCVUcuCiAgICAtKyAqIFJldHVybnMg dHJ1ZSBpZiB0aGUgb3B0aW9uIGlzIHJlY29nbml6ZWQsIGZhbHNlIG90aGVyd2lzZS4KICAgIC0r ICogU2V0cyAqaXNfdW5zYWZlIHRvIGluZGljYXRlIGlmIHRoaXMgb3B0aW9uIHJlcXVpcmVzIHRo ZSBVTlNBRkU6IHByZWZpeC4KICAgIC0rICovCiAgICAtK3N0YXRpYyBib29sCiAgICAtK3BhcnNl X2RlYnVnX29wdGlvbihjb25zdCBjaGFyICpvcHRpb24sIG9hdXRoX2RlYnVnX2ZsYWdzICpmbGFn cywgYm9vbCAqaXNfdW5zYWZlKQogICAgLSt7CiAgICAtKwkqaXNfdW5zYWZlID0gZmFsc2U7CiAg ICAtKwogICAgLSsJLyogVW5zYWZlIG9wdGlvbnMgKi8KICAgIC0rCWlmIChzdHJjbXAob3B0aW9u LCAiaHR0cCIpID09IDApCiAgICAtKwl7CiAgICAtKwkJZmxhZ3MtPmh0dHAgPSB0cnVlOwogICAg LSsJCSppc191bnNhZmUgPSB0cnVlOwogICAgLSsJCXJldHVybiB0cnVlOwogICAgLSsJfQogICAg LSsJZWxzZSBpZiAoc3RyY21wKG9wdGlvbiwgInRyYWNlIikgPT0gMCkKICAgIC0rCXsKICAgIC0r CQlmbGFncy0+dHJhY2UgPSB0cnVlOwogICAgLSsJCSppc191bnNhZmUgPSB0cnVlOwogICAgLSsJ CXJldHVybiB0cnVlOwogICAgLSsJfQogICAgLSsJLyogU2FmZSBvcHRpb25zICovCiAgICAtKwll bHNlIGlmIChzdHJjbXAob3B0aW9uLCAiZmFzdC1yZXRyeSIpID09IDApCiAgICAtKwl7CiAgICAt KwkJZmxhZ3MtPmZhc3RfcmV0cnkgPSB0cnVlOwogICAgLSsJCXJldHVybiB0cnVlOwogICAgLSsJ fQogICAgLSsJZWxzZSBpZiAoc3RyY21wKG9wdGlvbiwgInBvbGwtY291bnRzIikgPT0gMCkKICAg IC0rCXsKICAgIC0rCQlmbGFncy0+cG9sbF9jb3VudHMgPSB0cnVlOwogICAgLSsJCXJldHVybiB0 cnVlOwogICAgLSsJfQogICAgLSsJZWxzZSBpZiAoc3RyY21wKG9wdGlvbiwgInByaW50LXBsdWdp bi1lcnJvcnMiKSA9PSAwKQogICAgLSsJewogICAgLSsJCWZsYWdzLT5wcmludF9wbHVnaW5fZXJy b3JzID0gdHJ1ZTsKICAgIC0rCQlyZXR1cm4gdHJ1ZTsKICAgIC0rCX0KICAgIC0rCiAgICAtKwly ZXR1cm4gZmFsc2U7CiAgICAtK30KICAgIC0rCiAgICAtKy8qCiAgICAtKyAqIFBhcnNlcyB0aGUg UEdPQVVUSERFQlVHIGVudmlyb25tZW50IHZhcmlhYmxlIGFuZCByZXR1cm5zIGRlYnVnIGZsYWdz LgogICAgLSsgKgogICAgLSsgKiBTdXBwb3J0ZWQgZm9ybWF0czoKICAgIC0rICogICBQR09BVVRI REVCVUc9VU5TQUZFICAgICAgICAgICAgICAtIGxlZ2FjeSBmb3JtYXQsIGVuYWJsZXMgYWxsIGZl YXR1cmVzCiAgICAtKyAqICAgUEdPQVVUSERFQlVHPW9wdGlvbjEsb3B0aW9uMiAgICAgLSBlbmFi bGUgc2FmZSBmZWF0dXJlcyBvbmx5CiAgICAtKyAqICAgUEdPQVVUSERFQlVHPVVOU0FGRTpvcHQx LG9wdDIgICAgLSBlbmFibGUgdW5zYWZlIGFuZC9vciBzYWZlIGZlYXR1cmVzCiAgICAtKyAqCiAg ICAtKyAqIFByaW50cyBhIHdhcm5pbmcgYW5kIHNraXBzIHRoZSBpbnZhbGlkIG9wdGlvbiBpZjoK ICAgIC0rICogLSBBbiB1bnJlY29nbml6ZWQgb3B0aW9uIGlzIHNwZWNpZmllZAogICAgLSsgKiAt IEFuIHVuc2FmZSBvcHRpb24gaXMgc3BlY2lmaWVkIHdpdGhvdXQgdGhlIFVOU0FGRTogcHJlZml4 CiAgICAtKyAqLwogICAgLStvYXV0aF9kZWJ1Z19mbGFncwogICAgLStvYXV0aF9nZXRfZGVidWdf ZmxhZ3Modm9pZCkKICAgIC0rewogICAgLSsJb2F1dGhfZGVidWdfZmxhZ3MgZmxhZ3MgPSB7MH07 CiAgICAtKwljb25zdCBjaGFyICplbnYgPSBnZXRlbnYoIlBHT0FVVEhERUJVRyIpOwogICAgLSsJ Y2hhcgkgICAqb3B0aW9uc19zdHI7CiAgICAtKwljaGFyCSAgICpvcHRpb247CiAgICAtKwljaGFy CSAgICpzYXZlcHRyID0gTlVMTDsKICAgIC0rCWJvb2wJCXVuc2FmZV9wcmVmaXggPSBmYWxzZTsK ICAgIC0rCiAgICAtKwlpZiAoIWVudiB8fCBlbnZbMF0gPT0gJ1wwJykKICAgIC0rCQlyZXR1cm4g ZmxhZ3M7CiAgICAtKwogICAgLSsJaWYgKHN0cmNtcChlbnYsICJVTlNBRkUiKSA9PSAwKQogICAg LSsJewogICAgLSsJCWZsYWdzLmh0dHAgPSB0cnVlOwogICAgLSsJCWZsYWdzLnRyYWNlID0gdHJ1 ZTsKICAgIC0rCQlmbGFncy5mYXN0X3JldHJ5ID0gdHJ1ZTsKICAgIC0rCQlmbGFncy5wb2xsX2Nv dW50cyA9IHRydWU7CiAgICAtKwkJZmxhZ3MucHJpbnRfcGx1Z2luX2Vycm9ycyA9IHRydWU7CiAg ICAtKwkJcmV0dXJuIGZsYWdzOwogICAgLSsJfQogICAgLSsKICAgIC0rCWlmIChzdHJuY21wKGVu diwgIlVOU0FGRToiLCA3KSA9PSAwKQogICAgLSsJewogICAgLSsJCXVuc2FmZV9wcmVmaXggPSB0 cnVlOwogICAgLSsJCWVudiArPSA3OwogICAgLSsJfQogICAgLSsKICAgIC0rCW9wdGlvbnNfc3Ry ID0gc3RyZHVwKGVudik7CiAgICAtKwlpZiAoIW9wdGlvbnNfc3RyKQogICAgLSsJCXJldHVybiBm bGFnczsKICAgIC0rCiAgICAtKwlvcHRpb24gPSBzdHJ0b2tfcihvcHRpb25zX3N0ciwgIiwiLCAm c2F2ZXB0cik7CiAgICAtKwl3aGlsZSAob3B0aW9uICE9IE5VTEwpCiAgICAtKwl7CiAgICAtKwkJ Ym9vbAkJaXNfdW5zYWZlOwogICAgLSsKICAgIC0rCQlpZiAoIXBhcnNlX2RlYnVnX29wdGlvbihv cHRpb24sICZmbGFncywgJmlzX3Vuc2FmZSkpCiAgICAtKwkJewogICAgLSsJCQlmcHJpbnRmKHN0 ZGVyciwKICAgIC0rCQkJCQkiV0FSTklORzogUEdPQVVUSERFQlVHOiB1bnJlY29nbml6ZWQgZGVi dWcgb3B0aW9uIFwiJXNcIiAoaWdub3JlZClcbiIsCiAgICAtKwkJCQkJb3B0aW9uKTsKICAgIC0r CQl9CiAgICAtKwkJZWxzZSBpZiAoaXNfdW5zYWZlICYmICF1bnNhZmVfcHJlZml4KQogICAgLSsJ CXsKICAgIC0rCQkJZnByaW50ZihzdGRlcnIsCiAgICAtKwkJCQkJIldBUk5JTkc6IFBHT0FVVEhE RUJVRzogdW5zYWZlIG9wdGlvbiBcIiVzXCIgcmVxdWlyZXMgVU5TQUZFOiBwcmVmaXggKGlnbm9y ZWQpXG4iCiAgICAtKwkJCQkJIlVzZTogUEdPQVVUSERFQlVHPVVOU0FGRTolc1xuIiwKICAgIC0r CQkJCQlvcHRpb24sIG9wdGlvbik7CiAgICAtKwkJfQogICAgLSsKICAgIC0rCQlvcHRpb24gPSBz dHJ0b2tfcihOVUxMLCAiLCIsICZzYXZlcHRyKTsKICAgIC0rCX0KICAgIC0rCiAgICAtKwlmcmVl KG9wdGlvbnNfc3RyKTsKICAgIC0rCiAgICAtKwlyZXR1cm4gZmxhZ3M7CiAgICAtK30KICAgIC0K ICAgICAgIyMgc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jICMjCiAgICArQEAK ICAgICsgI2luY2x1ZGUgImZlLWF1dGguaCIKICAgICsgI2luY2x1ZGUgImZlLWF1dGgtb2F1dGgu aCIKICAgICsgI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAgICArKyNpbmNsdWRlICJvYXV0aC1k ZWJ1Zy5oIgogICAgKyAjaW5jbHVkZSAicGdfY29uZmlnX3BhdGhzLmgiCiAgICArICNpbmNsdWRl ICJ1dGlscy9tZW1kZWJ1Zy5oIgogICAgKyAKICAgICBAQCBzcmMvaW50ZXJmYWNlcy9saWJwcS9m ZS1hdXRoLW9hdXRoLmM6IGlzc3Vlcl9mcm9tX3dlbGxfa25vd25fdXJpKFBHY29ubiAqY29ubiwg Y29uc3QgY2hhciAqd2t1cmkpCiAgICAgIAkJYXV0aG9yaXR5X3N0YXJ0ID0gd2t1cmkgKyBzdHJs ZW4oSFRUUFNfU0NIRU1FKTsKICAgICAgCiAgICAgIAlpZiAoIWF1dGhvcml0eV9zdGFydAogICAg IC0JCSYmIG9hdXRoX3Vuc2FmZV9kZWJ1Z2dpbmdfZW5hYmxlZCgpCiAgICAtKwkJJiYgb2F1dGhf Z2V0X2RlYnVnX2ZsYWdzKCkuaHR0cAogICAgKysJCSYmIChvYXV0aF9nZXRfZGVidWdfZmxhZ3Mo KSAmIE9BVVRIREVCVUdfVU5TQUZFX0hUVFApCiAgICAgIAkJJiYgcGdfc3RybmNhc2VjbXAod2t1 cmksIEhUVFBfU0NIRU1FLCBzdHJsZW4oSFRUUF9TQ0hFTUUpKSA9PSAwKQogICAgICAJewogICAg ICAJCS8qIEFsbG93IGh0dHA6Ly8gZm9yIHRlc3Rpbmcgb25seS4gKi8KICAgIEBAIHNyYy9pbnRl cmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYzogdXNlX2J1aWx0aW5fZmxvdyhQR2Nvbm4gKmNv bm4sIGZlX29hdXRoX3N0CiAgICAgIAkJICogTm90ZSB0aGF0IFBPU0lYIGRsZXJyb3IoKSBpc24n dCBndWFyYW50ZWVkIHRvIGJlIHRocmVhZHNhZmUuCiAgICAgIAkJICovCiAgICAgLQkJaWYgKG9h dXRoX3Vuc2FmZV9kZWJ1Z2dpbmdfZW5hYmxlZCgpKQogICAgLSsJCWlmIChvYXV0aF9nZXRfZGVi dWdfZmxhZ3MoKS5wcmludF9wbHVnaW5fZXJyb3JzKQogICAgKysJCWlmIChvYXV0aF9nZXRfZGVi dWdfZmxhZ3MoKSAmIE9BVVRIREVCVUdfUExVR0lOX0VSUk9SUykKICAgICAgCQkJZnByaW50Zihz dGRlcnIsICJmYWlsZWQgZGxvcGVuIGZvciBsaWJwcS1vYXV0aDogJXNcbiIsIGRsZXJyb3IoKSk7 CiAgICAgIAogICAgICAJCXJldHVybiAwOwogICAgQEAgc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt YXV0aC1vYXV0aC5jOiB1c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3QK ICAgICAgCQkgKiB0aHJlYWRzYWZldHkgaXNzdWUuCiAgICAgIAkJICovCiAgICAgLQkJaWYgKG9h dXRoX3Vuc2FmZV9kZWJ1Z2dpbmdfZW5hYmxlZCgpKQogICAgLSsJCWlmIChvYXV0aF9nZXRfZGVi dWdfZmxhZ3MoKS5wcmludF9wbHVnaW5fZXJyb3JzKQogICAgKysJCWlmIChvYXV0aF9nZXRfZGVi dWdfZmxhZ3MoKSAmIE9BVVRIREVCVUdfUExVR0lOX0VSUk9SUykKICAgICAgCQkJZnByaW50Zihz dGRlcnIsICJmYWlsZWQgZGxzeW0gZm9yIGxpYnBxLW9hdXRoOiAlc1xuIiwgZGxlcnJvcigpKTsK ICAgICAgCiAgICAtIAkJZGxjbG9zZShzdGF0ZS0+YnVpbHRpbl9mbG93KTsKICAgICsgCQlkbGNs b3NlKHN0YXRlLT5mbG93X21vZHVsZSk7CiAgICAgQEAgc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt YXV0aC1vYXV0aC5jOiBwcUNsZWFyT0F1dGhUb2tlbihQR2Nvbm4gKmNvbm4pCiAgICAgIAljb25u LT5vYXV0aF90b2tlbiA9IE5VTEw7CiAgICAgIH0KICAgIEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLWF1dGgtb2F1dGguYzogcHFDbGVhck9BdXRoVG9rZW4oUEdjb25uICpjb25uKQogICAgIC0K ICAgICAtCXJldHVybiAoZW52ICYmIHN0cmNtcChlbnYsICJVTlNBRkUiKSA9PSAwKTsKICAgICAt fQogICAgKy0KICAgICsgLyoKICAgICsgICogSG9vayB2MSBQb2lzb25pbmcKICAgICsgICoKICAg ICsKICAgICsgIyMgc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDFfc2VydmVy LnBsICMjCiAgICArQEAgc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDFfc2Vy dmVyLnBsOiAkbm9kZS0+Y29ubmVjdF9mYWlscygKICAgICsgCSAgcXJAT0F1dGggZGlzY292ZXJ5 IFVSSSAiXFEkaXNzdWVyXEUvLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb24iIG11c3Qg dXNlIEhUVFBTQAogICAgKyApOwogICAgKyAKICAgICsrewogICAgKysJIyBQR09BVVRIREVCVUc9 aHR0cCBzaG91bGQgaGF2ZSBubyBlZmZlY3QgKGl0IG5lZWRzIGFuIFVOU0FGRTogbWFya2VyKS4K ICAgICsrCWxvY2FsICRFTlZ7UEdPQVVUSERFQlVHfSA9ICJodHRwIjsKICAgICsrCiAgICArKwkk bm9kZS0+Y29ubmVjdF9mYWlscygKICAgICsrCQkidXNlcj10ZXN0IGRibmFtZT1wb3N0Z3JlcyBv YXV0aF9pc3N1ZXI9JGlzc3VlciBvYXV0aF9jbGllbnRfaWQ9ZjAyYzYzNjEtMDYzNSIsCiAgICAr KwkJIkhUVFBTIGlzIHJlcXVpcmVkIHdpdGhvdXQgZGVidWcgbW9kZSAoYmFkIFBHT0FVVEhERUJV RyB2YWx1ZSkiLAogICAgKysJCWV4cGVjdGVkX3N0ZGVyciA9PiBxclsKICAgICsrCQkJXldBUk5J Tkc6IC4qIFxRb3B0aW9uICJodHRwIiBpcyB1bnNhZmVcRQogICAgKysJCQkuKgogICAgKysJCQlc UU9BdXRoIGRpc2NvdmVyeSBVUkkgIiRpc3N1ZXIvLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3Vy YXRpb24iIG11c3QgdXNlIEhUVFBTXEUKICAgICsrCQldbXN4CiAgICArKwkpOwogICAgKyt9CiAg ICArKwogICAgKyAjIFN3aXRjaCB0byBIVFRQUy4KICAgICsgJGlzc3VlciA9ICJodHRwczovLzEy Ny4wLjAuMTokcG9ydCI7CiAgICArIAogICAgK0BAIHNyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFs aWRhdG9yL3QvMDAxX3NlcnZlci5wbDogJG5vZGUtPmNvbm5lY3Rfb2soCiAgICArIAldLAogICAg KyAJbG9nX3VubGlrZSA9PiBbcXIvRkFUQUwuKk9BdXRoIGJlYXJlciBhdXRoZW50aWNhdGlvbiBm YWlsZWQvXSk7CiAgICArIAogICAgKy0jIEVuYWJsZSBQR09BVVRIREVCVUcgZm9yIGFsbCByZW1h aW5pbmcgdGVzdHMuCiAgICArLSRFTlZ7UEdPQVVUSERFQlVHfSA9ICJVTlNBRkUiOwogICAgKysj IEVuYWJsZSBzb21lIGRlYnVnZ2luZyBmZWF0dXJlcyBmb3IgYWxsIHJlbWFpbmluZyB0ZXN0czoK ICAgICsrIyAtIHRyYWNlLCBmb3IgZGV0YWlsZWQgQ3VybCBsb2dzIG9uIGZhaWx1cmUKICAgICsr IyAtIGRvcy1lbmRwb2ludCwgdG8gc3BlZWQgdXAgdGhlIHRocmVlLXdheSBoYW5kc2hha2UKICAg ICsrIyAtIGNhbGwtY291bnQsIGZvciBvdXIgbGF0ZXIgc2FuaXR5IGNoZWNrCiAgICArKyRFTlZ7 UEdPQVVUSERFQlVHfSA9ICJVTlNBRkU6dHJhY2UsZG9zLWVuZHBvaW50LGNhbGwtY291bnQiOwog ICAgKyAKICAgICsgIyBUaGUgL2FsdGVybmF0ZSBpc3N1ZXIgdXNlcyBzbGlnaHRseSBkaWZmZXJl bnQgcGFyYW1ldGVycywgYWxvbmcgd2l0aCBhbgogICAgKyAjIE9BdXRoLXN0eWxlIGRpc2NvdmVy eSBkb2N1bWVudC4KICAgICsKICAgICsgIyMgc3JjL3Rvb2xzL3BnaW5jbHVkZS9oZWFkZXJzY2hl Y2sgIyMKICAgICtAQCBzcmMvdG9vbHMvcGdpbmNsdWRlL2hlYWRlcnNjaGVjazogZG8KICAgICsg CXRlc3QgIiRmIiA9IHNyYy9pbmNsdWRlL2NhdGFsb2cvc3lzY2FjaGVfaWRzLmggJiYgY29udGlu dWUKICAgICsgCXRlc3QgIiRmIiA9IHNyYy9pbmNsdWRlL2NhdGFsb2cvc3lzY2FjaGVfaW5mby5o ICYmIGNvbnRpbnVlCiAgICArIAogICAgKysJdGVzdCAiJGYiID0gc3JjL2ludGVyZmFjZXMvbGli cHEvb2F1dGgtZGVidWcuaCAmJiBjb250aW51ZQogICAgKysKICAgICsgCSMgV2UgY2FuJ3QgbWFr ZSB0aGVzZSBCaXNvbiBvdXRwdXQgZmlsZXMgY29tcGlsYWJsZSBzdGFuZGFsb25lCiAgICArIAkj IHdpdGhvdXQgdXNpbmcgIiVjb2RlIHJlcXVpcmUiLCB3aGljaCBvbGQgQmlzb24gdmVyc2lvbnMg bGFjay4KICAgICsgCSMgcGFyc2VyL2dyYW0uaCB3aWxsIGJlIGluY2x1ZGVkIGJ5IHBhcnNlci9n cmFtcGFyc2UuaCBhbnl3YXkuCjI6ICA5MzNmNjQzMmY4NyA8IC06ICAtLS0tLS0tLS0tLSBBZGQg bmV3IFBHT0FVVEhERUJVRyBvcHRpb246IGlzc3Vlci1taXNtYXRjaAo= --000000000000e92bf5064e5aa135 Content-Type: application/octet-stream; name="v3-0001-Split-PGOAUTHDEBUG-UNSAFE-into-multiple-options.patch" Content-Disposition: attachment; filename="v3-0001-Split-PGOAUTHDEBUG-UNSAFE-into-multiple-options.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnf9m6us1 RnJvbSA3NDNiNGE1YzNhNTc4MWU5YzdkZDUzNDUxMTBmZjdiMTljMWQ2NzA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAzMSBNYXIgMjAyNiAxNDowODo1OSAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjNdIFNwbGl0IFBHT0FVVEhERUJVRz1VTlNBRkUgaW50byBtdWx0aXBsZSBvcHRp b25zCgpXSVAKCkF1dGhvcjogWnNvbHQgUGFycmFnaSA8enNvbHQucGFycmFnaUBwZXJjb25hLmNv bT4KQ28tYXV0aG9yZWQtYnk6IEphY29iIENoYW1waW9uIDxqYWNvYi5jaGFtcGlvbkBlbnRlcnBy aXNlZGIuY29tPgotLS0KIGRvYy9zcmMvc2dtbC9saWJwcS5zZ21sICAgICAgICAgICAgICAgICAg ICAgICB8IDEyNCArKysrKysrKysrKystLS0tCiBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9v YXV0aC11dGlscy5oICAgICAgfCAgIDEgLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1v YXV0aC5oICAgICAgICAgIHwgICAxIC0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL29hdXRoLWRlYnVn LmggICAgICAgICAgICB8IDEzNiArKysrKysrKysrKysrKysrKysKIHNyYy9pbnRlcmZhY2VzL2xp YnBxLW9hdXRoL29hdXRoLWN1cmwuYyAgICAgICB8ICAyMiArLS0KIHNyYy9pbnRlcmZhY2VzL2xp YnBxLW9hdXRoL29hdXRoLXV0aWxzLmMgICAgICB8ICAxMSAtLQogc3JjL2ludGVyZmFjZXMvbGli cHEtb2F1dGgvdGVzdC1vYXV0aC1jdXJsLmMgIHwgICAyICstCiBzcmMvaW50ZXJmYWNlcy9saWJw cS9mZS1hdXRoLW9hdXRoLmMgICAgICAgICAgfCAgMTggKy0tCiAuLi4vbW9kdWxlcy9vYXV0aF92 YWxpZGF0b3IvdC8wMDFfc2VydmVyLnBsICAgfCAgMjIgKystCiBzcmMvdG9vbHMvcGdpbmNsdWRl L2hlYWRlcnNjaGVjayAgICAgICAgICAgICAgfCAgIDIgKwogMTAgZmlsZXMgY2hhbmdlZCwgMjc2 IGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9p bnRlcmZhY2VzL2xpYnBxL29hdXRoLWRlYnVnLmgKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv bGlicHEuc2dtbCBiL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCmluZGV4IGE0OGQzMTYxNDk1Li4w MWE2NTQxOWY5OSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2xpYnBxLnNnbWwKQEAgLTEwNjQzLDM1ICsxMDY0MywxMDkgQEAgdHlwZWRlZiBz dHJ1Y3QKICAgIDwvcGFyYT4KIAogICAgPHBhcmE+Ci0gICAgQSAiZGFuZ2Vyb3VzIGRlYnVnZ2lu ZyBtb2RlIiBtYXkgYmUgZW5hYmxlZCBieSBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudAotICAgIHZh cmlhYmxlIDxlbnZhcj5QR09BVVRIREVCVUc9VU5TQUZFPC9lbnZhcj4uIFRoaXMgZnVuY3Rpb25h bGl0eSBpcyBwcm92aWRlZAotICAgIGZvciBlYXNlIG9mIGxvY2FsIGRldmVsb3BtZW50IGFuZCB0 ZXN0aW5nIG9ubHkuIEl0IGRvZXMgc2V2ZXJhbCB0aGluZ3MgdGhhdAotICAgIHlvdSB3aWxsIG5v dCB3YW50IGEgcHJvZHVjdGlvbiBzeXN0ZW0gdG8gZG86CisgICAgRGVidWcgZmVhdHVyZXMgbWF5 IGJlIGVuYWJsZWQgYnkgc2V0dGluZyB0aGUgPGVudmFyPlBHT0FVVEhERUJVRzwvZW52YXI+Cisg ICAgZW52aXJvbm1lbnQgdmFyaWFibGUuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBwcm92aWRlZCBm b3IgZWFzZSBvZiBsb2NhbAorICAgIGRldmVsb3BtZW50IGFuZCB0ZXN0aW5nLiBUaGUgdmFyaWFi bGUgYWNjZXB0cyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mCisgICAgZGVidWcgb3B0aW9uczoK KworICAgIDxwcm9ncmFtbGlzdGluZz4KK1BHT0FVVEhERUJVRz1vcHRpb24xLG9wdGlvbjIsLi4u ICAgICAgICAgPGxpbmVhbm5vdGF0aW9uPmZvciBzYWZlIG9wdGlvbnMgb25seTwvbGluZWFubm90 YXRpb24+CitQR09BVVRIREVCVUc9VU5TQUZFOm9wdGlvbjEsb3B0aW9uMiwuLi4gIDxsaW5lYW5u b3RhdGlvbj53aGVuIHVzaW5nIHVuc2FmZSBvcHRpb25zPC9saW5lYW5ub3RhdGlvbj4KK1BHT0FV VEhERUJVRz1VTlNBRkUgICAgICAgICAgICAgICAgICAgICAgPGxpbmVhbm5vdGF0aW9uPmxlZ2Fj eSBmb3JtYXQ7IGVuYWJsZXMgYWxsIG9wdGlvbnM8L2xpbmVhbm5vdGF0aW9uPgorICAgIDwvcHJv Z3JhbWxpc3Rpbmc+CisgICA8L3BhcmE+CiAKLSAgICA8aXRlbWl6ZWRsaXN0IHNwYWNpbmc9ImNv bXBhY3QiPgotICAgICA8bGlzdGl0ZW0+Ci0gICAgICA8cGFyYT4KLSAgICAgICBwZXJtaXRzIHRo ZSB1c2Ugb2YgdW5lbmNyeXB0ZWQgSFRUUCBkdXJpbmcgdGhlIE9BdXRoIHByb3ZpZGVyIGV4Y2hh bmdlCi0gICAgICA8L3BhcmE+Ci0gICAgIDwvbGlzdGl0ZW0+Ci0gICAgIDxsaXN0aXRlbT4KLSAg ICAgIDxwYXJhPgotICAgICAgIHByaW50cyBIVFRQIHRyYWZmaWMgKGNvbnRhaW5pbmcgc2V2ZXJh bCBjcml0aWNhbCBzZWNyZXRzKSB0byBzdGFuZGFyZAotICAgICAgIGVycm9yIGR1cmluZyB0aGUg T0F1dGggZmxvdwotICAgICAgPC9wYXJhPgotICAgICA8L2xpc3RpdGVtPgotICAgICA8bGlzdGl0 ZW0+Ci0gICAgICA8cGFyYT4KLSAgICAgICBwZXJtaXRzIHRoZSB1c2Ugb2YgemVyby1zZWNvbmQg cmV0cnkgaW50ZXJ2YWxzLCB3aGljaCBjYW4gY2F1c2UgdGhlCi0gICAgICAgY2xpZW50IHRvIGJ1 c3ktbG9vcCBhbmQgcG9pbnRsZXNzbHkgY29uc3VtZSBDUFUKLSAgICAgIDwvcGFyYT4KLSAgICAg PC9saXN0aXRlbT4KLSAgICA8L2l0ZW1pemVkbGlzdD4KKyAgIDxwYXJhPgorICAgIEF2YWlsYWJs ZSBkZWJ1ZyBvcHRpb25zOgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgPHZhcmxpc3RlbnRy eT4KKyAgICAgIDx0ZXJtPjxsaXRlcmFsPmh0dHA8L2xpdGVyYWw+ICh1bnNhZmUpPC90ZXJtPgor ICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBQZXJtaXRzIHRoZSB1c2Ug b2YgdW5lbmNyeXB0ZWQgSFRUUCBkdXJpbmcgdGhlIE9BdXRoIHByb3ZpZGVyIGV4Y2hhbmdlLgor ICAgICAgICBUaGlzIGFsbG93cyBPQXV0aCBjcmVkZW50aWFscyB0byBiZSB0cmFuc21pdHRlZCBv dmVyIHVuZW5jcnlwdGVkCisgICAgICAgIGNvbm5lY3Rpb25zLCB3aGljaCBpcyBleHRyZW1lbHkg ZGFuZ2Vyb3VzIGFuZCBzaG91bGQgb25seSBiZSB1c2VkIGZvcgorICAgICAgICBsb2NhbCB0ZXN0 aW5nLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVu dHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48bGl0ZXJhbD50cmFjZTwv bGl0ZXJhbD4gKHVuc2FmZSk8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+ CisgICAgICAgIFByaW50cyBIVFRQIHRyYWZmaWMgdG8gc3RhbmRhcmQgZXJyb3IgZHVyaW5nIHRo ZSBPQXV0aCBmbG93LiBUaGlzIG91dHB1dAorICAgICAgICBjb250YWlucyBjcml0aWNhbCBzZWNy ZXRzIGluY2x1ZGluZyBiZWFyZXIgdG9rZW5zLCBjbGllbnQgc2VjcmV0cywgYWNjZXNzCisgICAg ICAgIHRva2VucywgYW5kIGF1dGhvcml6YXRpb24gY29kZXMuIE5ldmVyIHNoYXJlIHRoaXMgb3V0 cHV0IHdpdGggdGhpcmQKKyAgICAgICAgcGFydGllcy4KKyAgICAgICA8L3BhcmE+CisgICAgICA8 L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5Pgor ICAgICAgPHRlcm0+PGxpdGVyYWw+ZG9zLWVuZHBvaW50PC9saXRlcmFsPiAodW5zYWZlKTwvdGVy bT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUGVybWl0cyB0aGUg dXNlIG9mIHplcm8tc2Vjb25kIHJldHJ5IGludGVydmFscyBpbnN0ZWFkIG9mIHRoZSBub3JtYWwK KyAgICAgICAgbWluaW11bSBvZiBvbmUgc2Vjb25kLiBUaGlzIHNwZWVkcyB1cCB0ZXN0cywgYnV0 IGluIG5vcm1hbCBvcGVyYXRpb24gaXQKKyAgICAgICAgd2lsbCBjYXVzZSB0aGUgY2xpZW50IHRv IGJ1c3ktbG9vcCwgY29uc3VtaW5nIENQVSBhbmQgbmV0d29yayByZXNvdXJjZXMuCisgICAgICAg PC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAg PHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxsaXRlcmFsPmNhbGwtY291bnQ8L2xpdGVyYWw+ IChzYWZlKTwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAg UHJpbnRzIHRoZSB0b3RhbCBudW1iZXIgb2YgY2FsbHMgdG8gdGhlIGZsb3cgcGx1Z2luIHRvIHN0 YW5kYXJkIGVycm9yCisgICAgICAgIHdoZW4gdGhlIE9BdXRoIGZsb3cgY29tcGxldGVzLiBUaGlz IGhlbHBzIGRldmVsb3BlcnMgZGVidWcgdGhlIGFzeW5jCisgICAgICAgIGNhbGxiYWNrIGJlaGF2 aW9yLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVu dHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48bGl0ZXJhbD5wbHVnaW4t ZXJyb3JzPC9saXRlcmFsPiAoc2FmZSk8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAg PHBhcmE+CisgICAgICAgIFByaW50cyBwbHVnaW4gbG9hZGluZyBlcnJvcnMgdG8gc3RhbmRhcmQg ZXJyb3IuIFRoaXMgaGVscHMgZGV2ZWxvcGVycworICAgICAgICBhbmQgcGFja2FnZSBtYWludGFp bmVycyBkZWJ1ZyBpc3N1ZXMgd2hlbiB0aGUgT0F1dGggcGx1Z2luIGZhaWxzIHRvIGxvYWQuCisg ICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+Cisg ICAgPC92YXJpYWJsZWxpc3Q+CisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIFVuc2FmZSBv cHRpb25zICg8bGl0ZXJhbD5odHRwPC9saXRlcmFsPiwgPGxpdGVyYWw+dHJhY2U8L2xpdGVyYWw+ LAorICAgIDxsaXRlcmFsPmRvcy1lbmRwb2ludDwvbGl0ZXJhbD4pIHJlcXVpcmUgdGhlIDxsaXRl cmFsPlVOU0FGRTo8L2xpdGVyYWw+IHByZWZpeC4KKyAgICBJZiB1bnNhZmUgb3B0aW9ucyBhcmUg c3BlY2lmaWVkIHdpdGhvdXQgdGhpcyBwcmVmaXgsIGEgd2FybmluZyBpcyBwcmludGVkCisgICAg dG8gc3RhbmRhcmQgZXJyb3IgYW5kIHRoYXQgb3B0aW9uIGlzIGlnbm9yZWQuIE90aGVyIHZhbGlk IG9wdGlvbnMgaW4gdGhlCisgICAgbGlzdCBjb250aW51ZSB0byB3b3JrLiBTYWZlIG9wdGlvbnMg KDxsaXRlcmFsPmNhbGwtY291bnQ8L2xpdGVyYWw+LAorICAgIDxsaXRlcmFsPnBsdWdpbi1lcnJv cnM8L2xpdGVyYWw+KSBjYW4gYmUgdXNlZCB3aXRob3V0IHRoZSBwcmVmaXguCiAgICA8L3BhcmE+ CisKKyAgIDxwYXJhPgorICAgIFVucmVjb2duaXplZCBvcHRpb24gbmFtZXMgd2lsbCBhbHNvIHRy aWdnZXIgYSB3YXJuaW5nIGFuZCBiZSBpZ25vcmVkLCB3aGlsZQorICAgIHZhbGlkIG9wdGlvbnMg Y29udGludWUgdG8gd29yay4gVGhpcyBoZWxwcyBjYXRjaCB0eXBvcyBpbiB0aGUgZW52aXJvbm1l bnQKKyAgICB2YXJpYWJsZSBjb25maWd1cmF0aW9uIHdpdGhvdXQgYnJlYWtpbmcgdGhlIGRlYnVn Z2luZyBvZiB2YWxpZCBvcHRpb25zLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBFeGFt cGxlczoKKyAgICA8cHJvZ3JhbWxpc3Rpbmc+CitQR09BVVRIREVCVUc9Y2FsbC1jb3VudCAgICAg ICAgICAgICAgPGxpbmVhbm5vdGF0aW9uPnNhZmUgb3B0aW9ucyBvbmx5PC9saW5lYW5ub3RhdGlv bj4KK1BHT0FVVEhERUJVRz1VTlNBRkU6aHR0cCx0cmFjZSAgICAgICA8bGluZWFubm90YXRpb24+ ZW5hYmxlIEhUVFAgYW5kIHRyYWZmaWMgbG9nZ2luZzwvbGluZWFubm90YXRpb24+CitQR09BVVRI REVCVUc9VU5TQUZFOmh0dHAsY2FsbC1jb3VudCAgPGxpbmVhbm5vdGF0aW9uPm1peCBvZiB1bnNh ZmUgYW5kIHNhZmU8L2xpbmVhbm5vdGF0aW9uPgorICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICA8 L3BhcmE+CisKICAgIDx3YXJuaW5nPgogICAgIDxwYXJhPgotICAgICBEbyBub3Qgc2hhcmUgdGhl IG91dHB1dCBvZiB0aGUgT0F1dGggZmxvdyB0cmFmZmljIHdpdGggdGhpcmQgcGFydGllcy4gSXQK LSAgICAgY29udGFpbnMgc2VjcmV0cyB0aGF0IGNhbiBiZSB1c2VkIHRvIGF0dGFjayB5b3VyIGNs aWVudHMgYW5kIHNlcnZlcnMuCisgICAgIE5ldmVyIHVzZSB1bnNhZmUgZGVidWcgb3B0aW9ucyBp biBwcm9kdWN0aW9uIGVudmlyb25tZW50cy4gVGhleSBleHBvc2UKKyAgICAgc2VjcmV0cyBhbmQg YmVoYXZpb3JzIHRoYXQgY2FuIGJlIHVzZWQgdG8gYXR0YWNrIHlvdXIgY2xpZW50cyBhbmQgc2Vy dmVycy4KKyAgICAgRG8gbm90IHNoYXJlIDxsaXRlcmFsPnRyYWNlPC9saXRlcmFsPiBvdXRwdXQg d2l0aCB0aGlyZCBwYXJ0aWVzLgogICAgIDwvcGFyYT4KICAgIDwvd2FybmluZz4KICAgPC9zZWN0 Mj4KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmgg Yi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC11dGlscy5oCmluZGV4IDI5M2U5OTM2 OTg5Li5kYWNkMmRiYWNmZSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgv b2F1dGgtdXRpbHMuaAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC11dGls cy5oCkBAIC0zNSw3ICszNSw2IEBAIHR5cGVkZWYgZW51bQogCVBHX0JPT0xfTk8JCQkJCS8qIE5v IChmYWxzZSkgKi8KIH0gUEdUZXJuYXJ5Qm9vbDsKIAotZXh0ZXJuIGJvb2wgb2F1dGhfdW5zYWZl X2RlYnVnZ2luZ19lbmFibGVkKHZvaWQpOwogZXh0ZXJuIGludAlwcV9ibG9ja19zaWdwaXBlKHNp Z3NldF90ICpvc2lnc2V0LCBib29sICpzaWdwaXBlX3BlbmRpbmcpOwogZXh0ZXJuIHZvaWQgcHFf cmVzZXRfc2lncGlwZShzaWdzZXRfdCAqb3NpZ3NldCwgYm9vbCBzaWdwaXBlX3BlbmRpbmcsIGJv b2wgZ290X2VwaXBlKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0 aC1vYXV0aC5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5oCmluZGV4IDg3 MmY1ZGY1NTFhLi5hNTBkN2IwMzQwOCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEv ZmUtYXV0aC1vYXV0aC5oCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGgu aApAQCAtNDAsNyArNDAsNiBAQCB0eXBlZGVmIHN0cnVjdAogfSBmZV9vYXV0aF9zdGF0ZTsKIAog ZXh0ZXJuIHZvaWQgcHFDbGVhck9BdXRoVG9rZW4oUEdjb25uICpjb25uKTsKLWV4dGVybiBib29s IG9hdXRoX3Vuc2FmZV9kZWJ1Z2dpbmdfZW5hYmxlZCh2b2lkKTsKIAogLyogTWVjaGFuaXNtcyBp biBmZS1hdXRoLW9hdXRoLmMgKi8KIGV4dGVybiBjb25zdCBwZ19mZV9zYXNsX21lY2ggcGdfb2F1 dGhfbWVjaDsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL29hdXRoLWRlYnVnLmgg Yi9zcmMvaW50ZXJmYWNlcy9saWJwcS9vYXV0aC1kZWJ1Zy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi4wYmQ4NDY3YTA5YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9p bnRlcmZhY2VzL2xpYnBxL29hdXRoLWRlYnVnLmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICoKKyAqIG9hdXRoLWRlYnVnLmgKKyAqCSAgUGFyc2luZyBsb2dpYyBmb3Ig UEdPQVVUSERFQlVHIGVudmlyb25tZW50IHZhcmlhYmxlCisgKgorICogQm90aCBsaWJwcSBhbmQg bGlicHEtb2F1dGggbmVlZCB0aGlzIGxvZ2ljLCBzbyBpdCdzIHBhY2thZ2VkIGluIGEgc21hbGwK KyAqIGhlYWRlciBmb3IgY29udmVuaWVuY2UuIFRoaXMgaXMgbm90IHF1aXRlIGEgc3RhbmRhbG9u ZSBoZWFkZXIsIGR1ZSB0byB0aGUKKyAqIGNvbXBsaWNhdGlvbiBpbnRyb2R1Y2VkIGJ5IGxpYnBx X2dldHRleHQoKTsgc2VlIG5vdGUgYmVsb3cuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0 aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2Fs aWZvcm5pYQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKiAJc3JjL2ludGVyZmFjZXMvbGlicHEv b2F1dGgtZGVidWcuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpZm5kZWYgT0FV VEhfREVCVUdfSAorI2RlZmluZSBPQVVUSF9ERUJVR19ICisKKyNpbmNsdWRlICJwb3N0Z3Jlc19m ZS5oIgorCisvKgorICogWFhYIGxpYnBxLW9hdXRoIGNhbid0IGNvbXBpbGUgYWdhaW5zdCBsaWJw cS1pbnQuaCwgc28gY2xpZW50cyBvZiB0aGlzIGhlYWRlcgorICogbmVlZCB0byBwcm92aWRlIHRo ZSBkZWNsYXJhdGlvbiBvZiBsaWJwcV9nZXR0ZXh0KCkgYmVmb3JlICNpbmNsdWRpbmcgaXQuCisg KiBGb3J0dW5hdGVseSwgdGhlcmUgYXJlIG9ubHkgdHdvIHN1Y2ggY2xpZW50cy4KKyAqLworLyog I2luY2x1ZGUgImxpYnBxLWludC5oIiAqLworCisvKgorICogRGVidWcgZmxhZ3MgZm9yIHRoZSBQ R09BVVRIREVCVUcgZW52aXJvbm1lbnQgdmFyaWFibGUuIEVhY2ggZmxhZyBjb250cm9scyBhCisg KiBzcGVjaWZpYyBkZWJ1ZyBmZWF0dXJlLiBPQVVUSERFQlVHX1VOU0FGRV8qIGZsYWdzIHJlcXVp cmUgdGhlIGVudnZhciB0byBoYXZlCisgKiBhIGxpdGVyYWwgIlVOU0FGRToiIHByZWZpeC4KKyAq LworCisvKiBhbGxvdyBIVFRQICh1bmVuY3J5cHRlZCkgY29ubmVjdGlvbnMgKi8KKyNkZWZpbmUg T0FVVEhERUJVR19VTlNBRkVfSFRUUAkJCSgxPDwwKQorLyogbG9nIEhUVFAgdHJhZmZpYyAoZXhw b3NlcyBzZWNyZXRzKSAqLworI2RlZmluZSBPQVVUSERFQlVHX1VOU0FGRV9UUkFDRQkJCSgxPDwx KQorLyogYWxsb3cgemVyby1zZWNvbmQgcmV0cnkgaW50ZXJ2YWxzICovCisjZGVmaW5lIE9BVVRI REVCVUdfVU5TQUZFX0RPU19FTkRQT0lOVAkoMTw8MikKKworLyogbWluZCB0aGUgZ2FwIGluIHZh bHVlczsgc2VlIE9BVVRIREVCVUdfVU5TQUZFX01BU0sgYmVsb3cgKi8KKworLyogcHJpbnQgUFFj b25uZWN0UG9sbCBzdGF0aXN0aWNzICovCisjZGVmaW5lIE9BVVRIREVCVUdfQ0FMTF9DT1VOVAkJ CSgxPDwxNikKKy8qIHByaW50IHBsdWdpbiBsb2FkaW5nIGVycm9ycyAqLworI2RlZmluZSBPQVVU SERFQlVHX1BMVUdJTl9FUlJPUlMJCSgxPDwxNykKKworLyogYWxsIHNhZmUgYW5kIHVuc2FmZSBm bGFncywgZm9yIHRoZSBsZWdhY3kgVU5TQUZFIGJlaGF2aW9yICovCisjZGVmaW5lIE9BVVRIREVC VUdfVU5TQUZFX0FMTAkJCSgodWludDMyKSB+MCkKKworLyogRmxhZ3MgYXJlIGRpdmlkZWQgaW50 byAic2FmZSIgYW5kICJ1bnNhZmUiIGJhc2VkIG9uIGJpdCBwb3NpdGlvbi4gKi8KKyNkZWZpbmUg T0FVVEhERUJVR19VTlNBRkVfTUFTSwkJCSgodWludDMyKSAweDAwMDBGRkZGKQorCitzdGF0aWNf YXNzZXJ0KE9BVVRIREVCVUdfQ0FMTF9DT1VOVCA9PSBPQVVUSERFQlVHX1VOU0FGRV9NQVNLICsg MSwKKwkJCSAgInRoZSBmaXJzdCBzYWZlIE9BVVRIREVCVUcgZmxhZyBzaG91bGQgYmUgYWJvdmUg T0FVVEhERUJVR19VTlNBRkVfTUFTSyIpOworCisvKgorICogUGFyc2VzIHRoZSBQR09BVVRIREVC VUcgZW52aXJvbm1lbnQgdmFyaWFibGUgYW5kIHJldHVybnMgZGVidWcgZmxhZ3MuCisgKgorICog U3VwcG9ydGVkIGZvcm1hdHM6CisgKiAgIFBHT0FVVEhERUJVRz1VTlNBRkUgICAgICAgICAgICAg IC0gbGVnYWN5IGZvcm1hdCwgZW5hYmxlcyBhbGwgZmVhdHVyZXMKKyAqICAgUEdPQVVUSERFQlVH PW9wdGlvbjEsb3B0aW9uMiAgICAgLSBlbmFibGUgc2FmZSBmZWF0dXJlcyBvbmx5CisgKiAgIFBH T0FVVEhERUJVRz1VTlNBRkU6b3B0MSxvcHQyICAgIC0gZW5hYmxlIHVuc2FmZSBhbmQvb3Igc2Fm ZSBmZWF0dXJlcworICoKKyAqIFByaW50cyBhIHdhcm5pbmcgYW5kIHNraXBzIHRoZSBpbnZhbGlk IG9wdGlvbiBpZjoKKyAqIC0gQW4gdW5yZWNvZ25pemVkIG9wdGlvbiBpcyBzcGVjaWZpZWQKKyAq IC0gQW4gdW5zYWZlIG9wdGlvbiBpcyBzcGVjaWZpZWQgd2l0aG91dCB0aGUgVU5TQUZFOiBwcmVm aXgKKyAqLworc3RhdGljIHVpbnQzMgorb2F1dGhfZ2V0X2RlYnVnX2ZsYWdzKHZvaWQpCit7CisJ dWludDMyCQlmbGFncyA9IDA7CisJY29uc3QgY2hhciAqZW52ID0gZ2V0ZW52KCJQR09BVVRIREVC VUciKTsKKwljaGFyCSAgICpvcHRpb25zX3N0cjsKKwljaGFyCSAgICpvcHRpb247CisJY2hhcgkg ICAqc2F2ZXB0ciA9IE5VTEw7CisJYm9vbAkJdW5zYWZlX2FsbG93ZWQgPSBmYWxzZTsKKworCWlm ICghZW52IHx8IGVudlswXSA9PSAnXDAnKQorCQlyZXR1cm4gZmxhZ3M7CisKKwlpZiAoc3RyY21w KGVudiwgIlVOU0FGRSIpID09IDApCisJCXJldHVybiBPQVVUSERFQlVHX1VOU0FGRV9BTEw7CisK KwlpZiAoc3RybmNtcChlbnYsICJVTlNBRkU6IiwgNykgPT0gMCkKKwl7CisJCXVuc2FmZV9hbGxv d2VkID0gdHJ1ZTsKKwkJZW52ICs9IDc7CisJfQorCisJb3B0aW9uc19zdHIgPSBzdHJkdXAoZW52 KTsKKwlpZiAoIW9wdGlvbnNfc3RyKQorCQlyZXR1cm4gZmxhZ3M7CisKKwlvcHRpb24gPSBzdHJ0 b2tfcihvcHRpb25zX3N0ciwgIiwiLCAmc2F2ZXB0cik7CisJd2hpbGUgKG9wdGlvbiAhPSBOVUxM KQorCXsKKwkJdWludDMyCQlmbGFnID0gMDsKKworCQlpZiAoc3RyY21wKG9wdGlvbiwgImh0dHAi KSA9PSAwKQorCQkJZmxhZyA9IE9BVVRIREVCVUdfVU5TQUZFX0hUVFA7CisJCWVsc2UgaWYgKHN0 cmNtcChvcHRpb24sICJ0cmFjZSIpID09IDApCisJCQlmbGFnID0gT0FVVEhERUJVR19VTlNBRkVf VFJBQ0U7CisJCWVsc2UgaWYgKHN0cmNtcChvcHRpb24sICJkb3MtZW5kcG9pbnQiKSA9PSAwKQor CQkJZmxhZyA9IE9BVVRIREVCVUdfVU5TQUZFX0RPU19FTkRQT0lOVDsKKwkJZWxzZSBpZiAoc3Ry Y21wKG9wdGlvbiwgImNhbGwtY291bnQiKSA9PSAwKQorCQkJZmxhZyA9IE9BVVRIREVCVUdfQ0FM TF9DT1VOVDsKKwkJZWxzZSBpZiAoc3RyY21wKG9wdGlvbiwgInBsdWdpbi1lcnJvcnMiKSA9PSAw KQorCQkJZmxhZyA9IE9BVVRIREVCVUdfUExVR0lOX0VSUk9SUzsKKwkJZWxzZQorCQkJZnByaW50 ZihzdGRlcnIsCisJCQkJCWxpYnBxX2dldHRleHQoIldBUk5JTkc6IHVucmVjb2duaXplZCBQR09B VVRIREVCVUcgb3B0aW9uIFwiJXNcIiAoaWdub3JlZClcbiIpLAorCQkJCQlvcHRpb24pOworCisJ CWlmICghdW5zYWZlX2FsbG93ZWQgJiYgKChmbGFnICYgT0FVVEhERUJVR19VTlNBRkVfTUFTSykg IT0gMCkpCisJCXsKKwkJCWZsYWcgPSAwOworCisJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkJbGli cHFfZ2V0dGV4dCgiV0FSTklORzogUEdPQVVUSERFQlVHIG9wdGlvbiBcIiVzXCIgaXMgdW5zYWZl IChpZ25vcmVkKVxuIiksCisJCQkJCW9wdGlvbik7CisJCX0KKworCQlmbGFncyB8PSBmbGFnOwor CQlvcHRpb24gPSBzdHJ0b2tfcihOVUxMLCAiLCIsICZzYXZlcHRyKTsKKwl9CisKKwlmcmVlKG9w dGlvbnNfc3RyKTsKKworCXJldHVybiBmbGFnczsKK30KKworI2VuZGlmCQkJCQkJCS8qIE9BVVRI X0RFQlVHX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRo LWN1cmwuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYwppbmRleCAz YmFlZGUxYjJlNy4uZWIyZmUzNWQwY2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBx LW9hdXRoL29hdXRoLWN1cmwuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0 aC1jdXJsLmMKQEAgLTQ5LDYgKzQ5LDEyIEBACiAKICNlbmRpZgkJCQkJCQkvKiBVU0VfRFlOQU1J Q19PQVVUSCAqLwogCisvKgorICogb2F1dGgtZGVidWcuaCBuZWVkcyB0aGUgZGVjbGFyYXRpb24g b2YgbGlicHFfZ2V0dGV4dCgpLCBmcm9tIG9uZSBvZiB0aGUgYWJvdmUKKyAqIHNvdXJjZXMuCisg Ki8KKyNpbmNsdWRlICJvYXV0aC1kZWJ1Zy5oIgorCiAvKiBPbmUgZmluYWwgZ3VhcmRyYWlsIGFn YWluc3QgYWNjaWRlbnRhbCBpbmNsdXNpb24uLi4gKi8KICNpZiBkZWZpbmVkKFVTRV9EWU5BTUlD X09BVVRIKSAmJiBkZWZpbmVkKExJQlBRX0lOVF9IKQogI2Vycm9yIGRvIG5vdCByZWx5IG9uIGxp YnBxLWludC5oIGluIGR5bmFtaWMgYnVpbGRzIG9mIGxpYnBxLW9hdXRoCkBAIC0yNzQsNyArMjgw LDcgQEAgc3RydWN0IGFzeW5jX2N0eAogCWludAkJCXJ1bm5pbmc7CQkvKiBpcyBhc3luY2hyb25v dXMgd29yayBpbiBwcm9ncmVzcz8gKi8KIAlib29sCQl1c2VyX3Byb21wdGVkOwkvKiBoYXZlIHdl IGFscmVhZHkgc2VudCB0aGUgYXV0aHogcHJvbXB0PyAqLwogCWJvb2wJCXVzZWRfYmFzaWNfYXV0 aDsJLyogZGlkIHdlIHNlbmQgYSBjbGllbnQgc2VjcmV0PyAqLwotCWJvb2wJCWRlYnVnZ2luZzsJ CS8qIGNhbiB3ZSBnaXZlIHVuc2FmZSBkZXZlbG9wZXIgYXNzaXN0YW5jZT8gKi8KKwl1aW50MzIJ CWRlYnVnX2ZsYWdzOwkvKiBjYW4gd2UgZ2l2ZSBkZXZlbG9wZXIgYXNzaXN0YW5jZT8gKi8KIAlp bnQJCQlkYmdfbnVtX2NhbGxzOwkvKiAoZGVidWcgbW9kZSkgaG93IG1hbnkgdGltZXMgd2VyZSB3 ZSBjYWxsZWQ/ICovCiB9OwogCkBAIC0xMDIzLDcgKzEwMjksNyBAQCBwYXJzZV9pbnRlcnZhbChz dHJ1Y3QgYXN5bmNfY3R4ICphY3R4LCBjb25zdCBjaGFyICppbnRlcnZhbF9zdHIpCiAJcGFyc2Vk ID0gY2VpbChwYXJzZWQpOwogCiAJaWYgKHBhcnNlZCA8IDEpCi0JCXJldHVybiBhY3R4LT5kZWJ1 Z2dpbmcgPyAwIDogMTsKKwkJcmV0dXJuIChhY3R4LT5kZWJ1Z19mbGFncyAmIE9BVVRIREVCVUdf VU5TQUZFX0RPU19FTkRQT0lOVCkgPyAwIDogMTsKIAogCWVsc2UgaWYgKHBhcnNlZCA+PSBJTlRf TUFYKQogCQlyZXR1cm4gSU5UX01BWDsKQEAgLTE3OTcsNyArMTgwMyw3IEBAIHNldHVwX2N1cmxf aGFuZGxlcyhzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4KQogCSAqLwogCUNIRUNLX1NFVE9QVChhY3R4 LCBDVVJMT1BUX05PU0lHTkFMLCAxTCwgcmV0dXJuIGZhbHNlKTsKIAotCWlmIChhY3R4LT5kZWJ1 Z2dpbmcpCisJaWYgKGFjdHgtPmRlYnVnX2ZsYWdzICYgT0FVVEhERUJVR19VTlNBRkVfVFJBQ0Up CiAJewogCQkvKgogCQkgKiBTZXQgYSBjYWxsYmFjayBmb3IgcmV0cmlldmluZyBlcnJvciBpbmZv cm1hdGlvbiBmcm9tIGxpYmN1cmwsIHRoZQpAQCAtMTgyOSw3ICsxODM1LDcgQEAgc2V0dXBfY3Vy bF9oYW5kbGVzKHN0cnVjdCBhc3luY19jdHggKmFjdHgpCiAJCWNvbnN0IGxvbmcJdW5zYWZlID0g Q1VSTFBST1RPX0hUVFBTIHwgQ1VSTFBST1RPX0hUVFA7CiAjZW5kaWYKIAotCQlpZiAoYWN0eC0+ ZGVidWdnaW5nKQorCQlpZiAoYWN0eC0+ZGVidWdfZmxhZ3MgJiBPQVVUSERFQlVHX1VOU0FGRV9I VFRQKQogCQkJcHJvdG9zID0gdW5zYWZlOwogCiAJCUNIRUNLX1NFVE9QVChhY3R4LCBwb3B0LCBw cm90b3MsIHJldHVybiBmYWxzZSk7CkBAIC0yMjk3LDcgKzIzMDMsNyBAQCBjaGVja19mb3JfZGV2 aWNlX2Zsb3coc3RydWN0IGFzeW5jX2N0eCAqYWN0eCkKIAkgKiBkZWNlbnQgdGltZSB0byBiYWls IG91dCBpZiB3ZSdyZSBub3QgdXNpbmcgSFRUUFMgZm9yIHRoZSBlbmRwb2ludHMKIAkgKiB3ZSds bCB1c2UgZm9yIHRoZSBmbG93LgogCSAqLwotCWlmICghYWN0eC0+ZGVidWdnaW5nKQorCWlmICgo YWN0eC0+ZGVidWdfZmxhZ3MgJiBPQVVUSERFQlVHX1VOU0FGRV9IVFRQKSA9PSAwKQogCXsKIAkJ aWYgKHBnX3N0cm5jYXNlY21wKHByb3ZpZGVyLT5kZXZpY2VfYXV0aG9yaXphdGlvbl9lbmRwb2lu dCwKIAkJCQkJCSAgIEhUVFBTX1NDSEVNRSwgc3RybGVuKEhUVFBTX1NDSEVNRSkpICE9IDApCkBA IC0zMDI3LDcgKzMwMzMsNyBAQCBwZ19mZV9ydW5fb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4sIHN0 cnVjdCBQR29hdXRoQmVhcmVyUmVxdWVzdCAqcmVxdWVzdCwKIAkgKiBkcmFpbl90aW1lcl9ldmVu dHMoKSwgd2hlbiB3ZSdyZSBpbiBkZWJ1ZyBtb2RlLCB0cmFjayB0aGUgdG90YWwgbnVtYmVyCiAJ ICogb2YgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiBhbmQgcHJpbnQgdGhhdCBhdCB0aGUgZW5kIG9m IHRoZSBmbG93LgogCSAqLwotCWlmIChhY3R4LT5kZWJ1Z2dpbmcpCisJaWYgKGFjdHgtPmRlYnVn X2ZsYWdzICYgT0FVVEhERUJVR19DQUxMX0NPVU5UKQogCXsKIAkJYWN0eC0+ZGJnX251bV9jYWxs cysrOwogCQlpZiAocmVzdWx0ID09IFBHUkVTX1BPTExJTkdfT0sgfHwgcmVzdWx0ID09IFBHUkVT X1BPTExJTkdfRkFJTEVEKQpAQCAtMzA4Nyw4ICszMDkzLDggQEAgcGdfc3RhcnRfb2F1dGhiZWFy ZXIoUEdjb25uICpjb25uLCBQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpyZXF1ZXN0KQogCSAqIE5v dyBmaW5pc2ggZmlsbGluZyBpbiB0aGUgYWN0eC4KIAkgKi8KIAotCS8qIFNob3VsZCB3ZSBlbmFi bGUgdW5zYWZlIGZlYXR1cmVzPyAqLwotCWFjdHgtPmRlYnVnZ2luZyA9IG9hdXRoX3Vuc2FmZV9k ZWJ1Z2dpbmdfZW5hYmxlZCgpOworCS8qIFBhcnNlIGRlYnVnIGZsYWdzIGZyb20gdGhlIGVudmly b25tZW50LiAqLworCWFjdHgtPmRlYnVnX2ZsYWdzID0gb2F1dGhfZ2V0X2RlYnVnX2ZsYWdzKCk7 CiAKIAlpbml0UFFFeHBCdWZmZXIoJmFjdHgtPndvcmtfZGF0YSk7CiAJaW5pdFBRRXhwQnVmZmVy KCZhY3R4LT5lcnJidWYpOwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgv b2F1dGgtdXRpbHMuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmMK aW5kZXggY2NiMGQ5YmYyYzUuLjAwNGQ0MWYwMmFhIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9saWJwcS1vYXV0aC9vYXV0aC11dGlscy5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9h dXRoL29hdXRoLXV0aWxzLmMKQEAgLTc1LDE3ICs3NSw2IEBAIGxpYnBxX2dldHRleHQoY29uc3Qg Y2hhciAqbXNnaWQpCiAKICNlbmRpZgkJCQkJCQkvKiBFTkFCTEVfTkxTICovCiAKLS8qCi0gKiBS ZXR1cm5zIHRydWUgaWYgdGhlIFBHT0FVVEhERUJVRz1VTlNBRkUgZmxhZyBpcyBzZXQgaW4gdGhl IGVudmlyb25tZW50LgotICovCi1ib29sCi1vYXV0aF91bnNhZmVfZGVidWdnaW5nX2VuYWJsZWQo dm9pZCkKLXsKLQljb25zdCBjaGFyICplbnYgPSBnZXRlbnYoIlBHT0FVVEhERUJVRyIpOwotCi0J cmV0dXJuIChlbnYgJiYgc3RyY21wKGVudiwgIlVOU0FGRSIpID09IDApOwotfQotCiAvKgogICog RHVwbGljYXRlIFNPQ0tfRVJSTk8qIGRlZmluaXRpb25zIGZyb20gbGlicHEtaW50LmgsIGZvciB1 c2UgYnkKICAqIHBxX2Jsb2NrL3Jlc2V0X3NpZ3BpcGUoKS4KZGlmZiAtLWdpdCBhL3NyYy9pbnRl cmZhY2VzL2xpYnBxLW9hdXRoL3Rlc3Qtb2F1dGgtY3VybC5jIGIvc3JjL2ludGVyZmFjZXMvbGli cHEtb2F1dGgvdGVzdC1vYXV0aC1jdXJsLmMKaW5kZXggNDMyOGEzMzI3MzguLjE4NWMxN2U1ODA3 IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC90ZXN0LW9hdXRoLWN1cmwu YworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC90ZXN0LW9hdXRoLWN1cmwuYwpAQCAt ODksNyArODksNyBAQCBpbml0X3Rlc3RfYWN0eCh2b2lkKQogCiAJYWN0eC0+bXV4ID0gUEdJTlZB TElEX1NPQ0tFVDsKIAlhY3R4LT50aW1lcmZkID0gLTE7Ci0JYWN0eC0+ZGVidWdnaW5nID0gdHJ1 ZTsKKwlhY3R4LT5kZWJ1Z19mbGFncyA9IE9BVVRIREVCVUdfVU5TQUZFX0FMTDsKIAogCWluaXRQ UUV4cEJ1ZmZlcigmYWN0eC0+ZXJyYnVmKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMv bGlicHEvZmUtYXV0aC1vYXV0aC5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0 aC5jCmluZGV4IGFjMDNkMWQ0ZjlkLi5jMTUwZjI3ZGYwMCAxMDA2NDQKLS0tIGEvc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2Zl LWF1dGgtb2F1dGguYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImZlLWF1dGguaCIKICNp bmNsdWRlICJmZS1hdXRoLW9hdXRoLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKKyNpbmNs dWRlICJvYXV0aC1kZWJ1Zy5oIgogI2luY2x1ZGUgInBnX2NvbmZpZ19wYXRocy5oIgogI2luY2x1 ZGUgInV0aWxzL21lbWRlYnVnLmgiCiAKQEAgLTM4OSw3ICszOTAsNyBAQCBpc3N1ZXJfZnJvbV93 ZWxsX2tub3duX3VyaShQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKndrdXJpKQogCQlhdXRob3Jp dHlfc3RhcnQgPSB3a3VyaSArIHN0cmxlbihIVFRQU19TQ0hFTUUpOwogCiAJaWYgKCFhdXRob3Jp dHlfc3RhcnQKLQkJJiYgb2F1dGhfdW5zYWZlX2RlYnVnZ2luZ19lbmFibGVkKCkKKwkJJiYgKG9h dXRoX2dldF9kZWJ1Z19mbGFncygpICYgT0FVVEhERUJVR19VTlNBRkVfSFRUUCkKIAkJJiYgcGdf c3RybmNhc2VjbXAod2t1cmksIEhUVFBfU0NIRU1FLCBzdHJsZW4oSFRUUF9TQ0hFTUUpKSA9PSAw KQogCXsKIAkJLyogQWxsb3cgaHR0cDovLyBmb3IgdGVzdGluZyBvbmx5LiAqLwpAQCAtOTAwLDcg KzkwMSw3IEBAIHVzZV9idWlsdGluX2Zsb3coUEdjb25uICpjb25uLCBmZV9vYXV0aF9zdGF0ZSAq c3RhdGUsIFBHb2F1dGhCZWFyZXJSZXF1ZXN0VjIgKnJlCiAJCSAqCiAJCSAqIE5vdGUgdGhhdCBQ T1NJWCBkbGVycm9yKCkgaXNuJ3QgZ3VhcmFudGVlZCB0byBiZSB0aHJlYWRzYWZlLgogCQkgKi8K LQkJaWYgKG9hdXRoX3Vuc2FmZV9kZWJ1Z2dpbmdfZW5hYmxlZCgpKQorCQlpZiAob2F1dGhfZ2V0 X2RlYnVnX2ZsYWdzKCkgJiBPQVVUSERFQlVHX1BMVUdJTl9FUlJPUlMpCiAJCQlmcHJpbnRmKHN0 ZGVyciwgImZhaWxlZCBkbG9wZW4gZm9yIGxpYnBxLW9hdXRoOiAlc1xuIiwgZGxlcnJvcigpKTsK IAogCQlyZXR1cm4gMDsKQEAgLTkyMiw3ICs5MjMsNyBAQCB1c2VfYnVpbHRpbl9mbG93KFBHY29u biAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlLCBQR29hdXRoQmVhcmVyUmVxdWVzdFYyICpy ZQogCQkgKiBjYXVzZSBpcyBzdGlsbCBsb2NrZWQgYmVoaW5kIFBHT0FVVEhERUJVRyBkdWUgdG8g dGhlIGRsZXJyb3IoKQogCQkgKiB0aHJlYWRzYWZldHkgaXNzdWUuCiAJCSAqLwotCQlpZiAob2F1 dGhfdW5zYWZlX2RlYnVnZ2luZ19lbmFibGVkKCkpCisJCWlmIChvYXV0aF9nZXRfZGVidWdfZmxh Z3MoKSAmIE9BVVRIREVCVUdfUExVR0lOX0VSUk9SUykKIAkJCWZwcmludGYoc3RkZXJyLCAiZmFp bGVkIGRsc3ltIGZvciBsaWJwcS1vYXV0aDogJXNcbiIsIGRsZXJyb3IoKSk7CiAKIAkJZGxjbG9z ZShzdGF0ZS0+Zmxvd19tb2R1bGUpOwpAQCAtMTQzNywxNyArMTQzOCw2IEBAIHBxQ2xlYXJPQXV0 aFRva2VuKFBHY29ubiAqY29ubikKIAljb25uLT5vYXV0aF90b2tlbiA9IE5VTEw7CiB9CiAKLS8q Ci0gKiBSZXR1cm5zIHRydWUgaWYgdGhlIFBHT0FVVEhERUJVRz1VTlNBRkUgZmxhZyBpcyBzZXQg aW4gdGhlIGVudmlyb25tZW50LgotICovCi1ib29sCi1vYXV0aF91bnNhZmVfZGVidWdnaW5nX2Vu YWJsZWQodm9pZCkKLXsKLQljb25zdCBjaGFyICplbnYgPSBnZXRlbnYoIlBHT0FVVEhERUJVRyIp OwotCi0JcmV0dXJuIChlbnYgJiYgc3RyY21wKGVudiwgIlVOU0FGRSIpID09IDApOwotfQotCiAv KgogICogSG9vayB2MSBQb2lzb25pbmcKICAqCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L29hdXRoX3ZhbGlkYXRvci90LzAwMV9zZXJ2ZXIucGwgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRo X3ZhbGlkYXRvci90LzAwMV9zZXJ2ZXIucGwKaW5kZXggYzljNDZlNjM1MzkuLjNkMTkwYzJiYTcx IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci90LzAwMV9zZXJ2 ZXIucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDFfc2VydmVy LnBsCkBAIC05Myw2ICs5MywyMSBAQCAkbm9kZS0+Y29ubmVjdF9mYWlscygKIAkgIHFyQE9BdXRo IGRpc2NvdmVyeSBVUkkgIlxRJGlzc3VlclxFLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0 aW9uIiBtdXN0IHVzZSBIVFRQU0AKICk7CiAKK3sKKwkjIFBHT0FVVEhERUJVRz1odHRwIHNob3Vs ZCBoYXZlIG5vIGVmZmVjdCAoaXQgbmVlZHMgYW4gVU5TQUZFOiBtYXJrZXIpLgorCWxvY2FsICRF TlZ7UEdPQVVUSERFQlVHfSA9ICJodHRwIjsKKworCSRub2RlLT5jb25uZWN0X2ZhaWxzKAorCQki dXNlcj10ZXN0IGRibmFtZT1wb3N0Z3JlcyBvYXV0aF9pc3N1ZXI9JGlzc3VlciBvYXV0aF9jbGll bnRfaWQ9ZjAyYzYzNjEtMDYzNSIsCisJCSJIVFRQUyBpcyByZXF1aXJlZCB3aXRob3V0IGRlYnVn IG1vZGUgKGJhZCBQR09BVVRIREVCVUcgdmFsdWUpIiwKKwkJZXhwZWN0ZWRfc3RkZXJyID0+IHFy WworCQkJXldBUk5JTkc6IC4qIFxRb3B0aW9uICJodHRwIiBpcyB1bnNhZmVcRQorCQkJLioKKwkJ CVxRT0F1dGggZGlzY292ZXJ5IFVSSSAiJGlzc3Vlci8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmln dXJhdGlvbiIgbXVzdCB1c2UgSFRUUFNcRQorCQldbXN4CisJKTsKK30KKwogIyBTd2l0Y2ggdG8g SFRUUFMuCiAkaXNzdWVyID0gImh0dHBzOi8vMTI3LjAuMC4xOiRwb3J0IjsKIApAQCAtMTcyLDgg KzE4NywxMSBAQCAkbm9kZS0+Y29ubmVjdF9vaygKIAldLAogCWxvZ191bmxpa2UgPT4gW3FyL0ZB VEFMLipPQXV0aCBiZWFyZXIgYXV0aGVudGljYXRpb24gZmFpbGVkL10pOwogCi0jIEVuYWJsZSBQ R09BVVRIREVCVUcgZm9yIGFsbCByZW1haW5pbmcgdGVzdHMuCi0kRU5We1BHT0FVVEhERUJVR30g PSAiVU5TQUZFIjsKKyMgRW5hYmxlIHNvbWUgZGVidWdnaW5nIGZlYXR1cmVzIGZvciBhbGwgcmVt YWluaW5nIHRlc3RzOgorIyAtIHRyYWNlLCBmb3IgZGV0YWlsZWQgQ3VybCBsb2dzIG9uIGZhaWx1 cmUKKyMgLSBkb3MtZW5kcG9pbnQsIHRvIHNwZWVkIHVwIHRoZSB0aHJlZS13YXkgaGFuZHNoYWtl CisjIC0gY2FsbC1jb3VudCwgZm9yIG91ciBsYXRlciBzYW5pdHkgY2hlY2sKKyRFTlZ7UEdPQVVU SERFQlVHfSA9ICJVTlNBRkU6dHJhY2UsZG9zLWVuZHBvaW50LGNhbGwtY291bnQiOwogCiAjIFRo ZSAvYWx0ZXJuYXRlIGlzc3VlciB1c2VzIHNsaWdodGx5IGRpZmZlcmVudCBwYXJhbWV0ZXJzLCBh bG9uZyB3aXRoIGFuCiAjIE9BdXRoLXN0eWxlIGRpc2NvdmVyeSBkb2N1bWVudC4KZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luY2x1ZGUvaGVhZGVyc2NoZWNrIGIvc3JjL3Rvb2xzL3BnaW5jbHVk ZS9oZWFkZXJzY2hlY2sKaW5kZXggMTRjNDY2Y2MyMzcuLmRlNTBiNjkzN2FmIDEwMDc1NQotLS0g YS9zcmMvdG9vbHMvcGdpbmNsdWRlL2hlYWRlcnNjaGVjaworKysgYi9zcmMvdG9vbHMvcGdpbmNs dWRlL2hlYWRlcnNjaGVjawpAQCAtMTUzLDYgKzE1Myw4IEBAIGRvCiAJdGVzdCAiJGYiID0gc3Jj L2luY2x1ZGUvY2F0YWxvZy9zeXNjYWNoZV9pZHMuaCAmJiBjb250aW51ZQogCXRlc3QgIiRmIiA9 IHNyYy9pbmNsdWRlL2NhdGFsb2cvc3lzY2FjaGVfaW5mby5oICYmIGNvbnRpbnVlCiAKKwl0ZXN0 ICIkZiIgPSBzcmMvaW50ZXJmYWNlcy9saWJwcS9vYXV0aC1kZWJ1Zy5oICYmIGNvbnRpbnVlCisK IAkjIFdlIGNhbid0IG1ha2UgdGhlc2UgQmlzb24gb3V0cHV0IGZpbGVzIGNvbXBpbGFibGUgc3Rh bmRhbG9uZQogCSMgd2l0aG91dCB1c2luZyAiJWNvZGUgcmVxdWlyZSIsIHdoaWNoIG9sZCBCaXNv biB2ZXJzaW9ucyBsYWNrLgogCSMgcGFyc2VyL2dyYW0uaCB3aWxsIGJlIGluY2x1ZGVkIGJ5IHBh cnNlci9ncmFtcGFyc2UuaCBhbnl3YXkuCi0tIAoyLjM0LjEKCg== --000000000000e92bf5064e5aa135--