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 1w8o17-000tff-1F for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Apr 2026 23:33:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w8o15-00EW2Q-07 for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Apr 2026 23:33:31 +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 1w8o14-00EW2I-18 for pgsql-hackers@lists.postgresql.org; Fri, 03 Apr 2026 23:33:31 +0000 Received: from mail-qv1-xf2a.google.com ([2607:f8b0:4864:20::f2a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w8o11-00000000R5E-2zuK for pgsql-hackers@lists.postgresql.org; Fri, 03 Apr 2026 23:33:29 +0000 Received: by mail-qv1-xf2a.google.com with SMTP id 6a1803df08f44-8a093c784b0so33032586d6.3 for ; Fri, 03 Apr 2026 16:33:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775259206; cv=none; d=google.com; s=arc-20240605; b=eK28iC1GbddOdOIbmEHvJEO46QGCEeqbhrBmVsHAtADYBSvhvvwJ1Y0EDflr04av7w 6Gq0Xbzk8gNTgrs+a1H9oTiFhPCnTeIgjo/nDibOyqzNm+ihqs/pONQv/94HRsNjMnTg uXFLgl7ibdGSi/eYu9vKB2auj3hcV29eGa48ybopBJotgEZeDYuC19qt3N25V1IH9R5M 27lnt2D6p8mo8hn4J1Vw6g5H33syv612m5wMEZQ/i8lVnoQCCVrgYkD66/38u9PYUebi wxx18gziA0VPQy7XpyIvrvb3/eFJ3SaSB37NsKlb4zSYJFINxeeNV7zqM4B1sHYP3ggU RmLg== 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=SDU1YeskrQIIakcPCt1GHQid9cYS9Cx6BRZQX2wYMrQ=; fh=3yz/rns3jDelhncQfLN/reRqWIIzoqKlUOOdabhOaIE=; b=bIegkcE0OpaWcMymq0qRkqySbAVWyVCHEKvSHrKgiRsUGwRCMyj2ly+m932FXUK3NZ gwX/fAVrVGStLNdqjpjIwyS1uOTHOTlHYuAz451AZprBon/A7c749cc24jktxugoSqb2 jmZb5P8l5+4Spawmo1dfVRyXFj6zxIijDBj57h0SJS2Nr6x+DcPqXYsfaDePxEa8yFJI Or8gR44ueKIbSw1SkSb2EoMEZQXTRsTQ5URIGBubE8G6mKE2K1fEKwAIjup4MhcQScAP V/J4dzf6fbrZ4R3I4GdBq9e8JQA4YVqbvdWdoBGFRxq9JeRhkjps285sQHY76deEu74W 2e3w==; 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=1775259206; x=1775864006; 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=SDU1YeskrQIIakcPCt1GHQid9cYS9Cx6BRZQX2wYMrQ=; b=GFqXJ/IZz9SwTrAxQSPGH2jsYPqyoO+/qY7mbmjqJZcXoBiz4pit/NQCXb8mE7lWOM VLz05sk5iW/Md9guADLpOZJht24MPoL1c1VDwUjKLIf+fGLA441/1nc8cnjD/+vB5E4D x/hIRchv4n7cfgjJUKlXm/vrwitlqYgO6sjTM9hrURlkiyqpZPHfgq4libW9kO9z6N2k 1PlK2AK+Yo6fMvYfNy/PBkzEQ8kicWkh9bEDurTiIXgGW1zDo0Dvh1a1qEvzof4ZIVaL o9Mz5MPGTo7xwJU9HdkjX8cycveHAbiFijN+HDKGGd4JmEAozCBWCCurSOWKjet4vsCJ ViiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775259206; x=1775864006; 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=SDU1YeskrQIIakcPCt1GHQid9cYS9Cx6BRZQX2wYMrQ=; b=BOGbMGMVTn8aEBiLBmqClkHqn9/xdKjO/FpnZ7ik1n50wq/lw9tarDVUdW6QWwWna9 V0vsgekdZZhGH3G7Nre5WF8Q3uX/5cGLAejWbr3m8UrlfFO35mYnCNgz6Uch3WLwe4FG 1E4K8ze/qqf8+o04gBm/4G+cOrf5G8P4G9PXIHqBw2Fbech82YC/uLzF/GAq41upQa0u e3aszK/byrQy2p/qZkct9bVJp3YcqM0LD21rc6ZgBcC8UhZ1V61TXhlw+593RuZR11A/ KFF1LDJc/nGY6R9pR0WbNxNVhlEWb0nCMJ67cJi1yPJX7/D7IyuJZ2gJczor3PhGPb8/ FzRw== X-Forwarded-Encrypted: i=1; AJvYcCWz/bBEI9zkvFVDxRPyUmzi+poqh4WYg5Td33CiIk7+nfudKZwz4JqksHy+7HIojzjBVgm7dQT+O5TdlQPZ@lists.postgresql.org X-Gm-Message-State: AOJu0Yyxb3OCgWfwHpyvYBPddX3tNdPj4Nyb3cxiwNd3PSb/HfltEUMp Qg85/5Xu+TXQIPRnrViHtikUaZjC2SZWc/5bbNSyFLer6WU5uF67lmoptZetyPH/xEmiUmOrSUF R4IXwZxn5WHEgtZAhqdsRtOnjyZZUEBj8AV1EQZsV X-Gm-Gg: AeBDievV2NMOOoB7Lk3+g7xGcxc4PorhHEAmGRzB5fjgjrICaawwNigHiBUBXHaxNGR MKO4C14nEFz5L+PUEV5477wmk7RmR9zRIBzLrguRBrYXhSOSLr+EGAH0MNG21xN4KuiBN1sDa5y obJ0Sn09efpFJy+PG0QRXQPH83XB5iMyxA7EKij+Pc/62HviFFff2N/tljaUC3F2AYVR2w0MLEO GhuCLLgGXvtCMg0/5WDOEgivP2pRgNj7ED7Pb6gOSGi0KOsoEPZPV4RetYTBCOJEG0awTx46yyy Ub9sZIYLJQ== X-Received: by 2002:a05:6214:508c:b0:899:ed40:464d with SMTP id 6a1803df08f44-8a7043eddc3mr77399746d6.29.1775259206424; Fri, 03 Apr 2026 16:33:26 -0700 (PDT) MIME-Version: 1.0 References: <202601281620.m3hrqtih5b2w@alvherre.pgsql> In-Reply-To: From: Jacob Champion Date: Fri, 3 Apr 2026 16:33:15 -0700 X-Gm-Features: AQROBzAAbcEnGCM2T1s-UlDfRRq08SrDy2OxAhUUPgvfziP6HovuwaY7adBcsPc Message-ID: Subject: Re: Custom oauth validator options To: Zsolt Parragi Cc: Nikolay Shaplov , =?UTF-8?Q?=C3=81lvaro_Herrera?= , VASUKI M , PostgreSQL Hackers , david.g.johnston@gmail.com, Robert Haas , myon@debian.org Content-Type: multipart/mixed; boundary="00000000000062442e064e96be9b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000062442e064e96be9b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Apr 2, 2026 at 2:26=E2=80=AFPM Jacob Champion wrote: > v4-0002 (based on top of [1]) addresses Zsolt's feedback and adds the > missing user documentation. I believe this is now a complete patch > proposal; tear it apart. :D v5 is a quick rebase to get rid of v4-0001; no other changes. --Jacob --00000000000062442e064e96be9b Content-Type: application/octet-stream; name="v5-0001-oauth-Allow-validators-to-register-custom-HBA-opt.patch" Content-Disposition: attachment; filename="v5-0001-oauth-Allow-validators-to-register-custom-HBA-opt.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnjjhdj90 RnJvbSAwM2FjNjA2MjllMTM0NjE5NTAxOGRjMjExMmI3NzhiODA1OTMxMDEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAxNyBNYXIgMjAyNiAxMjowMToyOCAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjVdIG9hdXRoOiBBbGxvdyB2YWxpZGF0b3JzIHRvIHJlZ2lzdGVyIGN1c3RvbSBI QkEgb3B0aW9ucwoKT0F1dGggdmFsaWRhdG9ycyBjYW4gYWxyZWFkeSB1c2UgY3VzdG9tIEdVQ3Mg dG8gY29uZmlndXJlIGJlaGF2aW9yCmdsb2JhbGx5LCBidXQgd2UgY3VycmVudGx5IHByb3ZpZGUg bm8gYWJpbGl0eSB0byBhZGp1c3Qgc2V0dGluZ3MgZm9yCmluZGl2aWR1YWwgSEJBIGVudHJpZXMs IGJlY2F1c2UgdGhlIG9yaWdpbmFsIGRlc2lnbiBmb2N1c2VkIG9uIGEgd29ybGQKd2hlcmUgYSBw cm92aWRlciBjb3ZlcmVkIGEgInNpbmdsZSBhdWRpZW5jZSIgb2YgdXNlcnMgZm9yIG9uZSBkYXRh YmFzZQpjbHVzdGVyLiBUaGlzIGFzc3VtcHRpb24gZG9lcyBub3QgYXBwbHkgdG8gbXVsdGl0ZW5h bnQgdXNlIGNhc2VzLCB3aGVyZQphIHNpbmdsZSB2YWxpZGF0b3IgbWF5IGJlIGNvbnRyb2xsaW5n IGFjY2VzcyBmb3Igd2lsZGx5IGRpZmZlcmVudCB1c2VyCmdyb3Vwcy4KClRvIGltcHJvdmUgdGhp cyB1c2UgY2FzZSwgYWRkIHR3byBuZXcgQVBJIGNhbGxzIGZvciB1c2UgYnkgdmFsaWRhdG9yCmNh bGxiYWNrczogUmVnaXN0ZXJPQXV0aEhCQU9wdGlvbnMoKSBhbmQgR2V0T0F1dGhIQkFPcHRpb24o KS4KUmVnaXN0ZXJpbmcgb3B0aW9ucyAiZm9vIiBhbmQgImJhciIgYWxsb3dzIGEgdXNlciB0byBz ZXQgInZhbGlkYXRvci5mb28iCmFuZCAidmFsaWRhdG9yLmJhciIgaW4gYW4gb2F1dGggSEJBIGVu dHJ5LiBUaGVzZSBvcHRpb25zIGFyZSBzdHJpbmdseQp0eXBlZCAoc3ludGF4IHZhbGlkYXRpb24g aXMgc29sZWx5IHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgZGVmaW5pbmcKbW9kdWxlKSwgYW5k IG5hbWVzIGFyZSByZXN0cmljdGVkIHRvIGEgc3Vic2V0IG9mIEFTQ0lJIHRvIGF2b2lkIHR5aW5n Cm91ciBoYW5kcyB3aXRoIGZ1dHVyZSBIQkEgc3ludGF4IGltcHJvdmVtZW50cy4KClVuZm9ydHVu YXRlbHksIHdlIGNhbid0IGNoZWNrIHRoZSBjdXN0b20gb3B0aW9uIG5hbWVzIGR1cmluZyBhIHJl bG9hZCBvZgp0aGUgY29uZmlndXJhdGlvbiwgbGlrZSB3ZSBkbyB3aXRoIHN0YW5kYXJkIEhCQSBv cHRpb25zLCB1bmxlc3Mgd2Ugd2VyZQp0byByZXF1aXJlIGFsbCB2YWxpZGF0b3JzIHRvIGJlIGxv YWRlZCB2aWEgc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzLgooSSBjb25zaWRlciB0aGlzIHRvIGJl IGEgbm9uc3RhcnRlcjogbW9zdCB2YWxpZGF0b3JzIHNob3VsZCBwcm9iYWJseSB1c2UKc2Vzc2lv bl9wcmVsb2FkX2xpYnJhcmllcyBhdCBtb3N0LCBzaW5jZSByZXF1aXJpbmcgYSBmdWxsIHJlc3Rh cnQgb2YgYQpwcm9kdWN0aW9uIHNlcnZlciBqdXN0IHRvIHVwZGF0ZSBhdXRoZW50aWNhdGlvbiBi ZWhhdmlvciB3aWxsIGJlCnVuYWNjZXB0YWJsZSB0byBtYW55IHVzZXJzLikgSW5zdGVhZCwgdGhl IG5ldyB2YWxpZGF0b3IuKiBvcHRpb25zIGFyZQpjaGVja2VkIGFnYWluc3QgdGhlIHJlZ2lzdGVy ZWQgbGlzdCBhdCBjb25uZWN0aW9uIHRpbWUuCgpNdWx0aXBsZSBhbHRlcm5hdGl2ZXMgd2VyZSBw cm9wb3NlZCBhbmQvb3IgcHJvdG90eXBlZCwgaW5jbHVkaW5nCmV4dGVuZGluZyB0aGUgR1VDIHN5 c3RlbSB0byBhbGxvdyBwZXItSEJBIG92ZXJyaWRlcywgam9pbmluZyBmb3JjZXMgd2l0aApyZWNl bnQgcmVmYWN0b3Jpbmcgd29yayBvbiB0aGUgcmVsb3B0aW9ucyBzdWJzeXN0ZW0sIGFuZCBnaXZp bmcgdGhlCmFiaWxpdHkgdG8gY3VzdG9taXplIEhCQSBvcHRpb25zIHRvIGFsbCBQb3N0Z3JlU1FM IGV4dGVuc2lvbnMuIEkKcGVyc29uYWxseSBiZWxpZXZlIHBlci1IQkEgR1VDIG92ZXJyaWRlcyBh cmUgdGhlIGJlc3Qgb3B0aW9uLCBiZWNhdXNlCnNldmVyYWwgZXhpc3RpbmcgR1VDcyBsaWtlIGF1 dGhlbnRpY2F0aW9uX3RpbWVvdXQgYW5kIHByZV9hdXRoX2RlbGF5CndvdWxkIGZpdCB0aGVyZSB1 c2VmdWxseS4gQnV0IHRoZSByZWNlbnQgYWRkaXRpb24gb2YgU05JIHBlci1ob3N0CnNldHRpbmdz IGluIDRmNDMzMDI1ZiBpbmRpY2F0ZXMgdGhhdCBhIG1vcmUgZ2VuZXJhbCBzb2x1dGlvbiBpcyBu ZWVkZWQsCmFuZCBJIGV4cGVjdCB0aGF0IHRvIHRha2UgbXVsdGlwbGUgcmVsZWFzZXMnIHdvcnRo IG9mIGRpc2N1c3Npb24uCgpUaGlzIGNvbXByb21pc2UgcGF0Y2gsIHRoZW4sIGlzIGludGVudGlv bmFsbHkgZGVzaWduZWQgdG8gYmUgYW4KYXJjaGl0ZWN0dXJhbCBkZWFkIGVuZDogc2ltcGxlIHRv IGRlc2NyaWJlLCBjaGVhcCB0byBtYWludGFpbiwgYW5kCnByb3ZpZGluZyBqdXN0IGVub3VnaCBm dW5jdGlvbmFsaXR5IHRvIGxldCB2YWxpZGF0b3JzIG1vdmUgZm9yd2FyZCBmb3IKUEcxOS4gVGhl IGhvcGUgaXMgdGhhdCBpdCB3aWxsIGJlIHJlcGxhY2VkIGluIHRoZSBmdXR1cmUgYnkgYSBzb2x1 dGlvbgp0aGF0IGNhbiBoYW5kbGUgcGVyLWhvc3QsIHBlci1IQkEsIGFuZCBvdGhlciBwZXItY29u dGV4dCBjb25maWd1cmF0aW9uCndpdGggdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSB0aGF0IEdVQ3Mg cHJvdmlkZSB0b2RheS4gSW4gdGhlIG1lYW50aW1lLAp0aGUgYnVsayBvZiB0aGUgY29kZSBpbiB0 aGlzIHBhdGNoIGNvbnNpc3RzIG9mIHN0cmljdCBndWFyZHJhaWxzIG9uIHRoZQpzaW1wbGUgQVBJ LCB0byB0cnkgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbnkgcmVhc29uIHRvIHJlZ3Jl dCBpdHMKZXhpc3RlbmNlIGR1cmluZyBpdHMgdW5rbm93biBsaWZlc3Bhbi4KClN1Z2dlc3RlZC1i eTogWnNvbHQgUGFycmFnaSA8enNvbHQucGFycmFnaUBwZXJjb25hLmNvbT4KU3VnZ2VzdGVkLWJ5 OiBWQVNVS0kgTSA8dmFzdWtpYW5hbmQwMTE5QGdtYWlsLmNvbT4KSW52ZXN0aWdhdGVkLWJ5OiBa c29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEuY29tPgpSZXZpZXdlZC1ieTogWnNv bHQgUGFycmFnaSA8enNvbHQucGFycmFnaUBwZXJjb25hLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6 Ly9wb3N0Z3IuZXMvbS9DQU40Q1pGTTNiOHU1dU5OTnNZNlhDeWEyNTd1JTJCRG9mbXMzc3U5ZjEx aU1DeHZDYWNhZyU0MG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2NsaWVudC1hdXRo LnNnbWwgICAgICAgICAgICAgICAgIHwgIDM5ICsrKwogZG9jL3NyYy9zZ21sL29hdXRoLXZhbGlk YXRvcnMuc2dtbCAgICAgICAgICAgIHwgMjIxICsrKysrKysrKysrKysrKystCiBzcmMvaW5jbHVk ZS9saWJwcS9oYmEuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUv bGlicHEvb2F1dGguaCAgICAgICAgICAgICAgICAgICAgIHwgIDE1ICstCiBzcmMvYmFja2VuZC9s aWJwcS9hdXRoLW9hdXRoLmMgICAgICAgICAgICAgICAgfCAyMjUgKysrKysrKysrKysrKysrKysr CiBzcmMvYmFja2VuZC9saWJwcS9oYmEuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMjYgKysK IC4uLi9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci90LzAwMV9zZXJ2ZXIucGwgICB8ICA5NyArKysr KysrKwogc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdmFsaWRhdG9yLmMgIHwgIDQ4 ICsrKy0KIDggZmlsZXMgY2hhbmdlZCwgNjY3IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NsaWVudC1hdXRoLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvY2xpZW50LWF1dGguc2dtbAppbmRleCBhMzQ3ZWUxODk4MC4uYmNhMDlhODA0MTYgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9jbGllbnQtYXV0aC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9j bGllbnQtYXV0aC5zZ21sCkBAIC0yNTMyLDYgKzI1MzIsNDUgQEAgaG9zdCAuLi4gcmFkaXVzIHJh ZGl1c3NlcnZlcnM9InNlcnZlcjEsc2VydmVyMiIgcmFkaXVzc2VjcmV0cz0iIiJzZWNyZXQgb25l IiIsIiIKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2 YXJsaXN0ZW50cnk+CisgICAgICA8dGVybSBpZD0iYXV0aC1vYXV0aC12YWxpZGF0b3Itb3B0aW9u Ij4KKyAgICAgICA8bGl0ZXJhbD52YWxpZGF0b3IuPHJlcGxhY2VhYmxlPm9wdGlvbjwvcmVwbGFj ZWFibGU+PC9saXRlcmFsPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAg IDxwYXJhPgorICAgICAgICBWYWxpZGF0b3IgbW9kdWxlcyBtYXkgPGxpbmsgbGlua2VuZD0ib2F1 dGgtdmFsaWRhdG9yLWhiYSI+ZGVmaW5lPC9saW5rPgorICAgICAgICBhZGRpdGlvbmFsIGNvbmZp Z3VyYXRpb24gb3B0aW9ucyBmb3IgPGxpdGVyYWw+b2F1dGg8L2xpdGVyYWw+CisgICAgICAgIEhC QSBlbnRyaWVzLiBUaGVzZSB2YWxpZGF0b3Itc3BlY2lmaWMgb3B0aW9ucyBhcmUgYWNjZXNzaWJs ZSB2aWEgdGhlCisgICAgICAgIDxsaXRlcmFsPnZhbGlkYXRvci4qPC9saXRlcmFsPiAibmFtZXNw YWNlIi4gRm9yIGV4YW1wbGUsIGEgbW9kdWxlIG1heQorICAgICAgICByZWdpc3RlciB0aGUgPGxp dGVyYWw+dmFsaWRhdG9yLmZvbzwvbGl0ZXJhbD4gYW5kCisgICAgICAgIDxsaXRlcmFsPnZhbGlk YXRvci5iYXI8L2xpdGVyYWw+IG9wdGlvbnMgYW5kIGRlZmluZSB0aGVpciBlZmZlY3RzIG9uCisg ICAgICAgIGF1dGhlbnRpY2F0aW9uLgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgVGhlIG5hbWUsIHN5bnRheCwgYW5kIGJlaGF2aW9yIG9mIGVhY2ggPHJlcGxhY2VhYmxl Pm9wdGlvbjwvcmVwbGFjZWFibGU+CisgICAgICAgIGFyZSBub3QgZGV0ZXJtaW5lZCBieSA8cHJv ZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+OyBjb25zdWx0IHRoZQorICAgICAgICBk b2N1bWVudGF0aW9uIGZvciB0aGUgdmFsaWRhdG9yIG1vZHVsZSBpbiB1c2UuCisgICAgICAgPC9w YXJhPgorICAgICAgIDx3YXJuaW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIEEgbGltaXRh dGlvbiBvZiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB0aGF0IHVucmVjb2duaXplZAor ICAgICAgICAgPHJlcGxhY2VhYmxlPm9wdGlvbjwvcmVwbGFjZWFibGU+IG5hbWVzIHdpbGwgbm90 IGJlIGNhdWdodCB1bnRpbAorICAgICAgICAgY29ubmVjdGlvbiB0aW1lLiBBIDxsaXRlcmFsPnBn X2N0bCByZWxvYWQ8L2xpdGVyYWw+IHdpbGwgc3VjY2VlZCwgYnV0CisgICAgICAgICBtYXRjaGlu ZyBjb25uZWN0aW9ucyB3aWxsIGZhaWw6Cis8cHJvZ3JhbWxpc3Rpbmc+CitMT0c6ICBjb25uZWN0 aW9uIHJlY2VpdmVkOiBob3N0PVtsb2NhbF0KK1dBUk5JTkc6ICB1bnJlY29nbml6ZWQgYXV0aGVu dGljYXRpb24gb3B0aW9uIG5hbWU6ICJ2YWxpZGF0b3IuYmFkIgorREVUQUlMOiAgVGhlIGluc3Rh bGxlZCB2YWxpZGF0b3IgbW9kdWxlICgibXlfdmFsaWRhdG9yIikgZGlkIG5vdCBkZWZpbmUgYW4g b3B0aW9uIG5hbWVkICJiYWQiLgorSElOVDogIEFsbCBPQXV0aCBjb25uZWN0aW9ucyBtYXRjaGlu ZyB0aGlzIGxpbmUgd2lsbCBmYWlsLiBDb3JyZWN0IHRoZSBvcHRpb24gYW5kIHJlbG9hZCB0aGUg c2VydmVyIGNvbmZpZ3VyYXRpb24uCitDT05URVhUOiAgbGluZSAyIG9mIGNvbmZpZ3VyYXRpb24g ZmlsZSAiZGF0YS9wZ19oYmEuY29uZiIKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgICBVc2Ug Y2F1dGlvbiB3aGVuIG1ha2luZyBjaGFuZ2VzIHRvIHZhbGlkYXRvci1zcGVjaWZpYyBIQkEgb3B0 aW9ucyBpbgorICAgICAgICAgcHJvZHVjdGlvbiBzeXN0ZW1zLgorICAgICAgICA8L3BhcmE+Cisg ICAgICAgPC93YXJuaW5nPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+ CisKICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgIDx0ZXJtPjxsaXRlcmFsPm1hcDwvbGl0ZXJh bD48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvb2F1 dGgtdmFsaWRhdG9ycy5zZ21sIGIvZG9jL3NyYy9zZ21sL29hdXRoLXZhbGlkYXRvcnMuc2dtbApp bmRleCA1ZjI5ZjJiZTE4Ni4uN2M5ZTNkZDkzMWEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9v YXV0aC12YWxpZGF0b3JzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL29hdXRoLXZhbGlkYXRvcnMu c2dtbApAQCAtMjUxLDYgKzI1MSwxMSBAQAogICAgICAgIDxzeW1ib2w+ZGVsZWdhdGVfaWRlbnRf bWFwcGluZz0xPC9zeW1ib2w+IG1vZGUsIGFuZCB3aGF0IGFkZGl0aW9uYWwKICAgICAgICBjb25m aWd1cmF0aW9uIGlzIHJlcXVpcmVkIGluIG9yZGVyIHRvIGRvIHNvLgogICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgSWYgYW4gaW1wbGVtZW50YXRpb24gcHJvdmlkZXMgPGxpbmsg bGlua2VuZD0ib2F1dGgtdmFsaWRhdG9yLWhiYSI+Y3VzdG9tCisgICAgICAgSEJBIG9wdGlvbnM8 L2xpbms+LCB0aGUgbmFtZXMgYW5kIHN5bnRheCBvZiB0aG9zZSBvcHRpb25zIHNob3VsZCBiZQor ICAgICAgIGRvY3VtZW50ZWQgYXMgd2VsbC4KKyAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRl bT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgIDwvdmFyaWFibGVsaXN0PgpAQCAtMzQzLDcgKzM0 OCw4IEBAIHR5cGVkZWYgY29uc3QgT0F1dGhWYWxpZGF0b3JDYWxsYmFja3MgKigqT0F1dGhWYWxp ZGF0b3JNb2R1bGVJbml0KSAodm9pZCk7CiAgICA8dGl0bGU+U3RhcnR1cCBDYWxsYmFjazwvdGl0 bGU+CiAgICA8cGFyYT4KICAgICBUaGUgPGZ1bmN0aW9uPnN0YXJ0dXBfY2I8L2Z1bmN0aW9uPiBj YWxsYmFjayBpcyBleGVjdXRlZCBkaXJlY3RseSBhZnRlcgotICAgIGxvYWRpbmcgdGhlIG1vZHVs ZS4gVGhpcyBjYWxsYmFjayBjYW4gYmUgdXNlZCB0byBzZXQgdXAgbG9jYWwgc3RhdGUgYW5kCisg ICAgbG9hZGluZyB0aGUgbW9kdWxlLiBUaGlzIGNhbGxiYWNrIGNhbiBiZSB1c2VkIHRvIHNldCB1 cCBsb2NhbCBzdGF0ZSwKKyAgICBkZWZpbmUgPGxpbmsgbGlua2VuZD0ib2F1dGgtdmFsaWRhdG9y LWhiYSI+Y3VzdG9tIEhCQSBvcHRpb25zPC9saW5rPiwgYW5kCiAgICAgcGVyZm9ybSBhZGRpdGlv bmFsIGluaXRpYWxpemF0aW9uIGlmIHJlcXVpcmVkLiBJZiB0aGUgdmFsaWRhdG9yIG1vZHVsZQog ICAgIGhhcyBzdGF0ZSBpdCBjYW4gdXNlIDxzdHJ1Y3RmaWVsZD5zdGF0ZS0+cHJpdmF0ZV9kYXRh PC9zdHJ1Y3RmaWVsZD4gdG8KICAgICBzdG9yZSBpdC4KQEAgLTQzMiw0ICs0MzgsMjE3IEBAIHR5 cGVkZWYgdm9pZCAoKlZhbGlkYXRvclNodXRkb3duQ0IpIChWYWxpZGF0b3JNb2R1bGVTdGF0ZSAq c3RhdGUpOwogICA8L3NlY3QyPgogCiAgPC9zZWN0MT4KKworIDxzZWN0MSBpZD0ib2F1dGgtdmFs aWRhdG9yLWhiYSI+CisgIDx0aXRsZT5DdXN0b20gSEJBIE9wdGlvbnM8L3RpdGxlPgorCisgIDxw YXJhPgorICAgTGlrZSBvdGhlciBwcmVsb2FkZWQgbGlicmFyaWVzLCB2YWxpZGF0b3IgbW9kdWxl cyBtYXkgZGVmaW5lCisgICA8bGluayBsaW5rZW5kPSJydW50aW1lLWNvbmZpZy1jdXN0b20iPmN1 c3RvbSBHVUMgcGFyYW1ldGVyczwvbGluaz4gZm9yIHVzZXIKKyAgIGNvbmZpZ3VyYXRpb24gaW4g PGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+LiBIb3dldmVyLCBpdCBtYXkgYmUK KyAgIGRlc2lyYWJsZSB0byBjb25maWd1cmUgYmVoYXZpb3IgYXQgYSBtb3JlIGdyYW51bGFyIGxl dmVsIChzYXksIGZvciBhCisgICBwYXJ0aWN1bGFyIGlzc3VlciBvciBhIGdyb3VwIG9mIHVzZXJz KSBpbnN0ZWFkIG9mIGdsb2JhbGx5LgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBCZWdpbm5p bmcgaW4gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiAxOSwgdmFsaWRhdG9y CisgICBpbXBsZW1lbnRhdGlvbnMgbWF5IGRlZmluZSBjdXN0b20gb3B0aW9ucyBmb3IgdXNlIGlu c2lkZQorICAgPGZpbGVuYW1lPnBnX2hiYS5jb25mPC9maWxlbmFtZT4uIFRoZXNlIG9wdGlvbnMg YXJlIHRoZW4KKyAgIDxsaW5rIGxpbmtlbmQ9ImF1dGgtb2F1dGgtdmFsaWRhdG9yLW9wdGlvbiI+ bWFkZSBhdmFpbGFibGU8L2xpbms+IHRvIHRoZSB1c2VyCisgICBhcyA8bGl0ZXJhbD52YWxpZGF0 b3IuPHJlcGxhY2VhYmxlPm9wdGlvbjwvcmVwbGFjZWFibGU+PC9saXRlcmFsPi4gVGhlIEFQSQor ICAgZm9yIHJlZ2lzdGVyaW5nIGFuZCByZXRyaWV2aW5nIGN1c3RvbSBvcHRpb25zIGlzIGRlc2Ny aWJlZCBiZWxvdy4KKyAgPC9wYXJhPgorCisgIDxzZWN0MiBpZD0ib2F1dGgtdmFsaWRhdG9yLWhi YS1hcGkiPgorICAgPHRpdGxlPk9wdGlvbnMgQVBJPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAg TW9kdWxlcyByZWdpc3RlciBjdXN0b20gSEJBIG9wdGlvbiBuYW1lcyBkdXJpbmcgdGhlIDxmdW5j dGlvbj5zdGFydHVwX2NiPC9mdW5jdGlvbj4KKyAgICAgY2FsbGJhY2ssIHVzaW5nIDxmdW5jdGlv bj5SZWdpc3Rlck9BdXRoSEJBT3B0aW9ucygpPC9mdW5jdGlvbj46CisKKzxwcm9ncmFtbGlzdGlu Zz4KKy8qCisgKiBSZWdpc3RlciBhIGxpc3Qgb2YgY3VzdG9tIG9wdGlvbiBuYW1lcyBmb3IgdXNl IGluIHBnX2hiYS5jb25mLiBGb3IgZWFjaCBuYW1lCisgKiAiZm9vIiByZWdpc3RlcmVkIGhlcmUs IHRoYXQgb3B0aW9uIHdpbGwgYmUgcHJvdmlkZWQgYXMgInZhbGlkYXRvci5mb28iIGluCisgKiB0 aGUgSEJBLgorICoKKyAqIFZhbGlkIG9wdGlvbiBuYW1lcyBjb25zaXN0IG9mIGFscGhhbnVtZXJp YyBBU0NJSSwgdW5kZXJzY29yZSAoXyksIGFuZCBoeXBoZW4KKyAqICgtKS4gSW52YWxpZCBvcHRp b24gbmFtZXMgd2lsbCBiZSBpZ25vcmVkIHdpdGggYSBXQVJOSU5HIGxvZ2dlZCBhdAorICogY29u bmVjdGlvbiB0aW1lLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gbWF5IG9ubHkgYmUgY2FsbGVkIGR1 cmluZyB0aGUgc3RhcnR1cF9jYiBjYWxsYmFjay4gTXVsdGlwbGUKKyAqIGNhbGxzIGFyZSBwZXJt aXR0ZWQsIHdoaWNoIHdpbGwgYXBwZW5kIHRvIHRoZSBleGlzdGluZyBsaXN0IG9mIHJlZ2lzdGVy ZWQKKyAqIG9wdGlvbnM7IG9wdGlvbnMgY2Fubm90IGJlIHVucmVnaXN0ZXJlZC4KKyAqCisgKiBQ YXJhbWV0ZXJzOgorICoKKyAqIC0gc3RhdGU6IHRoZSBzdGF0ZSBwb2ludGVyIHBhc3NlZCB0byB0 aGUgc3RhcnR1cF9jYiBjYWxsYmFjaworICogLSBudW06ICAgdGhlIG51bWJlciBvZiBvcHRpb25z IGluIHRoZSBvcHRzIGFycmF5CisgKiAtIG9wdHM6ICBhbiBhcnJheSBvZiBudWxsLXRlcm1pbmF0 ZWQgb3B0aW9uIG5hbWVzIHRvIHJlZ2lzdGVyCisgKgorICogVGhlIGxpc3Qgb2Ygb3B0aW9uIG5h bWVzIGlzIGNvcGllZCBpbnRlcm5hbGx5LCBhbmQgdGhlIG9wdHMgYXJyYXkgaXMgbm90CisgKiBy ZXF1aXJlZCB0byByZW1haW4gdmFsaWQgYWZ0ZXIgdGhlIGNhbGwuCisgKi8KK3ZvaWQgUmVnaXN0 ZXJPQXV0aEhCQU9wdGlvbnMoVmFsaWRhdG9yTW9kdWxlU3RhdGUgKnN0YXRlLCBpbnQgbnVtLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpvcHRzW10pOworPC9wcm9n cmFtbGlzdGluZz4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgRWFjaCBvcHRpb24n cyB2YWx1ZSwgaWYgc2V0LCBtYXkgYmUgbGF0ZXIgcmV0cmlldmVkIHVzaW5nCisgICAgIDxmdW5j dGlvbj5HZXRPQXV0aEhCQU9wdGlvbigpPC9mdW5jdGlvbj46CisKKzxwcm9ncmFtbGlzdGluZz4K Ky8qCisgKiBSZXRyaWV2ZSB0aGUgc3RyaW5nIHZhbHVlIG9mIGFuIEhCQSBvcHRpb24gd2hpY2gg d2FzIHJlZ2lzdGVyZWQgdmlhCisgKiBSZWdpc3Rlck9BdXRoSEJBT3B0aW9ucygpLiBVc2FibGUg b25seSBkdXJpbmcgdmFsaWRhdGVfY2Igb3Igc2h1dGRvd25fY2IuCisgKgorICogSWYgdGhlIHVz ZXIgaGFzIHNldCB0aGUgY29ycmVzcG9uZGluZyBvcHRpb24gaW4gcGdfaGJhLmNvbmYsIHRoaXMg ZnVuY3Rpb24KKyAqIHJldHVybnMgdGhhdCB2YWx1ZSBhcyBhIG51bGwtdGVybWluYXRlZCBzdHJp bmcsIHdoaWNoIG11c3Qgbm90IGJlIG1vZGlmaWVkCisgKiBvciBmcmVlZC4gTlVMTCBpcyByZXR1 cm5lZCBpbnN0ZWFkIGlmIHRoZSB1c2VyIGhhcyBub3Qgc2V0IHRoaXMgb3B0aW9uLCBpZgorICog dGhlIG9wdGlvbiBuYW1lIHdhcyBub3QgcmVnaXN0ZXJlZCwgb3IgaWYgdGhpcyBmdW5jdGlvbiBp cyBpbmNvcnJlY3RseSBjYWxsZWQKKyAqIGR1cmluZyB0aGUgc3RhcnR1cF9jYi4KKyAqCisgKiBQ YXJhbWV0ZXJzOgorICoKKyAqIC0gc3RhdGU6ICAgdGhlIHN0YXRlIHBvaW50ZXIgcGFzc2VkIHRv IHRoZSB2YWxpZGF0ZV9jYi9zaHV0ZG93bl9jYiBjYWxsYmFjaworICogLSBvcHRuYW1lOiB0aGUg bmFtZSBvZiB0aGUgb3B0aW9uIHRvIHJldHJpZXZlCisgKi8KK2NvbnN0IGNoYXIgKkdldE9BdXRo SEJBT3B0aW9uKGNvbnN0IFZhbGlkYXRvck1vZHVsZVN0YXRlICpzdGF0ZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm9wdG5hbWUpOworPC9wcm9ncmFtbGlzdGlu Zz4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgU2VlIDx4cmVmIGxpbmtlbmQ9Im9h dXRoLXZhbGlkYXRvci1oYmEtZXhhbXBsZS11c2FnZSIvPiBmb3Igc2FtcGxlIHVzYWdlLgorICAg IDwvcGFyYT4KKyAgPC9zZWN0Mj4KKworICA8c2VjdDIgaWQ9Im9hdXRoLXZhbGlkYXRvci1oYmEt bGltaXRhdGlvbnMiPgorICAgPHRpdGxlPkxpbWl0YXRpb25zPC90aXRsZT4KKyAgIDxwYXJhPgor ICAgIDxpdGVtaXplZGxpc3Q+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAg IE9wdGlvbiBuYW1lcyBhcmUgbGltaXRlZCB0byBBU0NJSSBhbHBoYW51bWVyaWMgY2hhcmFjdGVy cywKKyAgICAgICB1bmRlcnNjb3JlcyAoPGxpdGVyYWw+XzwvbGl0ZXJhbD4pLCBhbmQgaHlwaGVu cyAoPGxpdGVyYWw+LTwvbGl0ZXJhbD4pLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVt PgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBPcHRpb24gdmFsdWVzIGFy ZSBhbHdheXMgZnJlZWZvcm0gc3RyaW5ncyAoaW4gY29udHJhc3QgdG8gY3VzdG9tIEdVQ3MsCisg ICAgICAgd2hpY2ggc3VwcG9ydCBudW1lcmljcywgYm9vbGVhbnMsIGFuZCBlbnVtcykuCisgICAg ICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJh PgorICAgICAgIE9wdGlvbiBuYW1lcyBhbmQgdmFsdWVzIGNhbm5vdCBiZSBjaGVja2VkIGJ5IHRo ZSBzZXJ2ZXIgZHVyaW5nIGEgcmVsb2FkIG9mCisgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24uIEFu eSB1bnJlZ2lzdGVyZWQgb3B0aW9ucyBpbiA8ZmlsZW5hbWU+cGdfaGJhLmNvbmY8L2ZpbGVuYW1l PgorICAgICAgIHdpbGwgaW5zdGVhZCByZXN1bHQgaW4gY29ubmVjdGlvbiBmYWlsdXJlcy4gSXQg aXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mCisgICAgICAgZWFjaCBtb2R1bGUgdG8gZG9jdW1lbnQg YW5kIHZlcmlmeSB0aGUgc3ludGF4IG9mIG9wdGlvbiB2YWx1ZXMgYXMgbmVlZGVkLgorICAgICAg IDxmb290bm90ZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBJZiBhIG1vZHVsZSBmaW5kcyBh biBpbnZhbGlkIG9wdGlvbiB2YWx1ZSBkdXJpbmcgPGZ1bmN0aW9uPnZhbGlkYXRlX2NiPC9mdW5j dGlvbj4sCisgICAgICAgICBpdCdzIHJlY29tbWVuZGVkIHRvIDxsaW5rIGxpbmtlbmQ9Im9hdXRo LXZhbGlkYXRvci1jYWxsYmFjay12YWxpZGF0ZSI+c2lnbmFsCisgICAgICAgICBhbiBpbnRlcm5h bCBlcnJvcjwvbGluaz4gYnkgc2V0dGluZyA8c3RydWN0ZmllbGQ+cmVzdWx0LT5lcnJvcl9kZXRh aWw8L3N0cnVjdGZpZWxkPgorICAgICAgICAgdG8gYSBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvYmxl bSBhbmQgcmV0dXJuaW5nIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPi4KKyAgICAgICAgPC9wYXJh PgorICAgICAgIDwvZm9vdG5vdGU+CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+Cisg ICAgPC9pdGVtaXplZGxpc3Q+CisgICA8L3BhcmE+CisgIDwvc2VjdDI+CisKKyAgPHNlY3QyIGlk PSJvYXV0aC12YWxpZGF0b3ItaGJhLWV4YW1wbGUtdXNhZ2UiPgorICAgPHRpdGxlPkV4YW1wbGUg VXNhZ2U8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBGb3IgYSBoeXBvdGhldGljYWwgbW9kdWxl LCB0aGUgb3B0aW9ucyA8bGl0ZXJhbD5mb288L2xpdGVyYWw+IGFuZAorICAgIDxsaXRlcmFsPmJh cjwvbGl0ZXJhbD4gY291bGQgYmUgcmVnaXN0ZXJlZCBhcyBmb2xsb3dzOgorCis8cHJvZ3JhbWxp c3Rpbmc+CitzdGF0aWMgdm9pZAordmFsaWRhdG9yX3N0YXJ0dXAoVmFsaWRhdG9yTW9kdWxlU3Rh dGUgKnN0YXRlKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyICpvcHRzW10gPSB7CisgICAgICAg ICJmb28iLCAgICAgIC8qIGRlc2NyaXB0aW9uIG9mIGFjY2VzcyBwcml2aWxlZ2VzICovCisgICAg ICAgICJiYXIiLCAgICAgIC8qIG1hZ2ljIFVSTCBmb3IgYWRkaXRpb25hbCBhZG1pbmlzdHJhdG9y IHBvd2VycyAqLworICAgIH07CisKKyAgICBSZWdpc3Rlck9BdXRoSEJBT3B0aW9ucyhzdGF0ZSwg bGVuZ3Rob2Yob3B0cyksIG9wdHMpOworCisgICAgLyogLi4ub3RoZXIgc2V0dXAuLi4gKi8KK30K KzwvcHJvZ3JhbWxpc3Rpbmc+CisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIFRoZSBmb2xs b3dpbmcgc2FtcGxlIGVudHJpZXMgaW4gPGZpbGVuYW1lPnBnX2hiYS5jb25mPC9maWxlbmFtZT4g Y2FuIHRoZW4KKyAgICBtYWtlIHVzZSBvZiB0aGVzZSBvcHRpb25zOgorCis8cHJvZ3JhbWxpc3Rp bmc+CisjIFRZUEUgICBEQVRBQkFTRSAgIFVTRVIgICBBRERSRVNTICAgIE1FVEhPRAoraG9zdHNz bCAgcG9zdGdyZXMgICBhZG1pbiAgMC4wLjAuMC8wICBvYXV0aCBpc3N1ZXI9aHR0cHM6Ly9hZG1p bi5leGFtcGxlLmNvbSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNjb3BlPSJwZy1hZG1pbiBvcGVuaWQgZW1haWwiIFwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWFwPW9hdXRoLWVtYWlsIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yLmZvbz0iYWRtaW4gYWNjZXNz IiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRv ci5iYXI9aHR0cHM6Ly9tYWdpYy5leGFtcGxlLmNvbQorCitob3N0c3NsICBwb3N0Z3JlcyAgIGFs bCAgICAwLjAuMC4wLzAgIG9hdXRoIGlzc3Vlcj1odHRwczovL3d3dy5leGFtcGxlLmNvbSBcCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlPSJwZy11c2Vy IG9wZW5pZCBlbWFpbCIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtYXA9b2F1dGgtZW1haWwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZGF0b3IuZm9vPSJ1c2VyIGFjY2VzcyIKKzwvcHJvZ3JhbWxpc3Rpbmc+ CisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIFRoZSBtb2R1bGUgY2FuIHJldHJpZXZlIHRo ZSBvcHRpb24gc2V0dGluZ3MgZnJvbSB0aGUgSEJBIGR1cmluZyB2YWxpZGF0aW9uOgorCis8cHJv Z3JhbWxpc3Rpbmc+CitzdGF0aWMgYm9vbAordmFsaWRhdGVfdG9rZW4oY29uc3QgVmFsaWRhdG9y TW9kdWxlU3RhdGUgKnN0YXRlLAorICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9rZW4sIGNv bnN0IGNoYXIgKnJvbGUsCisgICAgICAgICAgICAgICBWYWxpZGF0b3JNb2R1bGVSZXN1bHQgKnJl cykKK3sKKyAgICBjb25zdCBjaGFyICpmb28gPSBHZXRPQXV0aEhCQU9wdGlvbihzdGF0ZSwgImZv byIpOyAvKiAiYWRtaW4gYWNjZXNzIiBvciAidXNlciBhY2Nlc3MiICovCisgICAgY29uc3QgY2hh ciAqYmFyID0gR2V0T0F1dGhIQkFPcHRpb24oc3RhdGUsICJiYXIiKTsgLyogImh0dHBzOi8vbWFn aWMuZXhhbXBsZS5jb20iIG9yIE5VTEwgKi8KKworICAgIGlmIChiYXIgJmFtcDsmYW1wOyAhaXNf dmFsaWRfdXJsKGJhcikpCisgICAgeworICAgICAgICByZXMtPmVycm9yX2RldGFpbCA9IHBzcHJp bnRmKCJ2YWxpZGF0b3IuYmFyIChcIiVzXCIpIGlzIG5vdCBhIHZhbGlkIFVSTC4iLCBiYXIpOwor ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyogcHJvY2VlZCB0byB2YWxpZGF0 ZSB0b2tlbiAqLworfQorPC9wcm9ncmFtbGlzdGluZz4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+ CisgICAgV2hlbiBtdWx0aXBsZSB2YWxpZGF0b3JzIGFyZSBpbiB1c2UsIHRoZWlyIHJlZ2lzdGVy ZWQgb3B0aW9uIGxpc3RzIHJlbWFpbgorICAgIGluZGVwZW5kZW50OgorCis8cHJvZ3JhbWxpc3Rp bmc+Cis8bGluZWFubm90YXRpb24+aW4gcG9zdGdyZXNxbC5jb25mOjwvbGluZWFubm90YXRpb24+ CitvYXV0aF92YWxpZGF0b3JfbGlicmFyaWVzID0gJ2V4YW1wbGVfb3JnLCBteV92YWxpZGF0b3In CisKKzxsaW5lYW5ub3RhdGlvbj5pbiBwZ19oYmEuY29uZjo8L2xpbmVhbm5vdGF0aW9uPgorIyBU WVBFICAgREFUQUJBU0UgICBVU0VSICAgQUREUkVTUyAgICBNRVRIT0QKK2hvc3Rzc2wgIHBvc3Rn cmVzICAgYWRtaW4gIDAuMC4wLjAvMCAgb2F1dGggaXNzdWVyPWh0dHBzOi8vYWRtaW4uZXhhbXBs ZS5jb20gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29w ZT0icGctYWRtaW4gb3BlbmlkIGVtYWlsIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1hcD1vYXV0aC1lbWFpbCBcCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcj1teV92YWxpZGF0b3IgXAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3IuZm9vPSJhZG1pbiBh Y2Nlc3MiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFs aWRhdG9yLmJhcj1odHRwczovL21hZ2ljLmV4YW1wbGUuY29tCisKK2hvc3Rzc2wgIHBvc3RncmVz ICAgYWxsICAgIDAuMC4wLjAvMCAgb2F1dGggaXNzdWVyPWh0dHBzOi8vd3d3LmV4YW1wbGUub3Jn IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU9InBn LXVzZXIgb3BlbmlkIHByb2ZpbGUiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdmFsaWRhdG9yPWV4YW1wbGVfb3JnIFwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGVfaWRlbnRfbWFwcGluZz0xIFwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yLm1hZ2ljPW9u IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9y Lm1vcmVfbWFnaWM9b2ZmCis8L3Byb2dyYW1saXN0aW5nPgorICAgPC9wYXJhPgorICA8L3NlY3Qy PgorIDwvc2VjdDE+CiA8L2NoYXB0ZXI+CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWJwcS9o YmEuaCBiL3NyYy9pbmNsdWRlL2xpYnBxL2hiYS5oCmluZGV4IGM0NTcwY2U5YjNmLi5lODg5ODU2 MWM4YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbGlicHEvaGJhLmgKKysrIGIvc3JjL2luY2x1 ZGUvbGlicHEvaGJhLmgKQEAgLTE0MCw2ICsxNDAsOCBAQCB0eXBlZGVmIHN0cnVjdCBIYmFMaW5l CiAJY2hhcgkgICAqb2F1dGhfc2NvcGU7CiAJY2hhcgkgICAqb2F1dGhfdmFsaWRhdG9yOwogCWJv b2wJCW9hdXRoX3NraXBfdXNlcm1hcDsKKwlMaXN0CSAgICpvYXV0aF9vcHRfa2V5czsKKwlMaXN0 CSAgICpvYXV0aF9vcHRfdmFsczsKIH0gSGJhTGluZTsKIAogdHlwZWRlZiBzdHJ1Y3QgSWRlbnRM aW5lCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWJwcS9vYXV0aC5oIGIvc3JjL2luY2x1ZGUv bGlicHEvb2F1dGguaAppbmRleCA2MGY0OTNhY2RkZC4uODZmNDYzYTI4NGUgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2xpYnBxL29hdXRoLmgKKysrIGIvc3JjL2luY2x1ZGUvbGlicHEvb2F1dGgu aApAQCAtOTYsNiArOTYsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgT0F1dGhWYWxpZGF0b3JDYWxsYmFj a3MKIAlWYWxpZGF0b3JWYWxpZGF0ZUNCIHZhbGlkYXRlX2NiOwogfSBPQXV0aFZhbGlkYXRvckNh bGxiYWNrczsKIAorLyoKKyAqIEEgdmFsaWRhdG9yIGNhbiByZWdpc3RlciBhIGxpc3Qgb2YgY3Vz dG9tIG9wdGlvbiBuYW1lcyBkdXJpbmcgaXRzIHN0YXJ0dXBfY2IsCisgKiB0aGVuIGxhdGVyIHJl dHJpZXZlIHRoZSB1c2VyIHNldHRpbmdzIGZvciBlYWNoIGR1cmluZyB2YWxpZGF0aW9uLiBUaGlz CisgKiBlbmFibGVzIHBlci1IQkEtbGluZSBjb25maWd1cmF0aW9uLiBGb3IgbW9yZSBpbmZvcm1h dGlvbiwgcmVmZXIgdG8gdGhlIE9BdXRoCisgKiB2YWxpZGF0b3IgbW9kdWxlcyBkb2N1bWVudGF0 aW9uLgorICovCitleHRlcm4gdm9pZCBSZWdpc3Rlck9BdXRoSEJBT3B0aW9ucyhWYWxpZGF0b3JN b2R1bGVTdGF0ZSAqc3RhdGUsIGludCBudW0sCisJCQkJCQkJCQljb25zdCBjaGFyICpvcHRzW10p OworZXh0ZXJuIGNvbnN0IGNoYXIgKkdldE9BdXRoSEJBT3B0aW9uKGNvbnN0IFZhbGlkYXRvck1v ZHVsZVN0YXRlICpzdGF0ZSwKKwkJCQkJCQkJCSBjb25zdCBjaGFyICpvcHRuYW1lKTsKKwogLyoK ICAqIFR5cGUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IHN5bWJvbCBfUEdfb2F1dGhfdmFsaWRhdG9y X21vZHVsZV9pbml0IHdoaWNoIGlzCiAgKiByZXF1aXJlZCBmb3IgYWxsIHZhbGlkYXRvciBtb2R1 bGVzLiAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQgZHVyaW5nCkBAIC0xMDcsOSArMTE4 LDcgQEAgZXh0ZXJuIFBHRExMRVhQT1JUIGNvbnN0IE9BdXRoVmFsaWRhdG9yQ2FsbGJhY2tzICpf UEdfb2F1dGhfdmFsaWRhdG9yX21vZHVsZV9pbmkKIC8qIEltcGxlbWVudGF0aW9uICovCiBleHRl cm4gUEdETExJTVBPUlQgY29uc3QgcGdfYmVfc2FzbF9tZWNoIHBnX2JlX29hdXRoX21lY2g7CiAK LS8qCi0gKiBFbnN1cmUgYSB2YWxpZGF0b3IgbmFtZWQgaW4gdGhlIEhCQSBpcyBwZXJtaXR0ZWQg YnkgdGhlIGNvbmZpZ3VyYXRpb24uCi0gKi8KIGV4dGVybiBib29sIGNoZWNrX29hdXRoX3ZhbGlk YXRvcihIYmFMaW5lICpoYmFsaW5lLCBpbnQgZWxldmVsLCBjaGFyICoqZXJyX21zZyk7CitleHRl cm4gYm9vbCB2YWxpZF9vYXV0aF9oYmFfb3B0aW9uX25hbWUoY29uc3QgY2hhciAqbmFtZSk7CiAK ICNlbmRpZgkJCQkJCQkvKiBQR19PQVVUSF9IICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9s aWJwcS9hdXRoLW9hdXRoLmMgYi9zcmMvYmFja2VuZC9saWJwcS9hdXRoLW9hdXRoLmMKaW5kZXgg NmE3NWI3OWVmYmYuLmVhMzRlYmRiNzMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9h dXRoLW9hdXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC1vYXV0aC5jCkBAIC0yNSw2 ICsyNSw3IEBACiAjaW5jbHVkZSAibGlicHEvaGJhLmgiCiAjaW5jbHVkZSAibGlicHEvb2F1dGgu aCIKICNpbmNsdWRlICJsaWJwcS9zYXNsLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAi dXRpbHMvanNvbi5oIgpAQCAtNDAsMTAgKzQxLDE1IEBAIHN0YXRpYyBpbnQJb2F1dGhfZXhjaGFu Z2Uodm9pZCAqb3BhcSwgY29uc3QgY2hhciAqaW5wdXQsIGludCBpbnB1dGxlbiwKIAogc3RhdGlj IHZvaWQgbG9hZF92YWxpZGF0b3JfbGlicmFyeShjb25zdCBjaGFyICpsaWJuYW1lKTsKIHN0YXRp YyB2b2lkIHNodXRkb3duX3ZhbGlkYXRvcl9saWJyYXJ5KHZvaWQgKmFyZyk7CitzdGF0aWMgYm9v bCBjaGVja192YWxpZGF0b3JfaGJhX29wdGlvbnMoUG9ydCAqcG9ydCwgY29uc3QgY2hhciAqKmxv Z2RldGFpbCk7CiAKIHN0YXRpYyBWYWxpZGF0b3JNb2R1bGVTdGF0ZSAqdmFsaWRhdG9yX21vZHVs ZV9zdGF0ZTsKIHN0YXRpYyBjb25zdCBPQXV0aFZhbGlkYXRvckNhbGxiYWNrcyAqVmFsaWRhdG9y Q2FsbGJhY2tzOwogCitzdGF0aWMgTWVtb3J5Q29udGV4dCBWYWxpZGF0b3JNZW1vcnlDb250ZXh0 Oworc3RhdGljIExpc3QgKlZhbGlkYXRvck9wdGlvbnM7CitzdGF0aWMgYm9vbCBWYWxpZGF0b3JP cHRpb25zQ2hlY2tlZDsKKwogLyogTWVjaGFuaXNtIGRlY2xhcmF0aW9uICovCiBjb25zdCBwZ19i ZV9zYXNsX21lY2ggcGdfYmVfb2F1dGhfbWVjaCA9IHsKIAkuZ2V0X21lY2hhbmlzbXMgPSBvYXV0 aF9nZXRfbWVjaGFuaXNtcywKQEAgLTEwOSw2ICsxMTUsOSBAQCBvYXV0aF9pbml0KFBvcnQgKnBv cnQsIGNvbnN0IGNoYXIgKnNlbGVjdGVkX21lY2gsIGNvbnN0IGNoYXIgKnNoYWRvd19wYXNzKQog CQkJCWVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCWVycm1zZygiY2xp ZW50IHNlbGVjdGVkIGFuIGludmFsaWQgU0FTTCBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20iKSk7 CiAKKwkvKiBTYXZlIG91ciBtZW1vcnkgY29udGV4dCBmb3IgbGF0ZXIgdXNlIGJ5IGNsaWVudCBB UEkgY2FsbHMuICovCisJVmFsaWRhdG9yTWVtb3J5Q29udGV4dCA9IEN1cnJlbnRNZW1vcnlDb250 ZXh0OworCiAJY3R4ID0gcGFsbG9jMF9vYmplY3Qoc3RydWN0IG9hdXRoX2N0eCk7CiAKIAljdHgt PnN0YXRlID0gT0FVVEhfU1RBVEVfSU5JVDsKQEAgLTI5Myw2ICszMDIsMTYgQEAgb2F1dGhfZXhj aGFuZ2Uodm9pZCAqb3BhcSwgY29uc3QgY2hhciAqaW5wdXQsIGludCBpbnB1dGxlbiwKIAkJCQll cnJtc2coIm1hbGZvcm1lZCBPQVVUSEJFQVJFUiBtZXNzYWdlIiksCiAJCQkJZXJyZGV0YWlsKCJN ZXNzYWdlIGNvbnRhaW5zIGFkZGl0aW9uYWwgZGF0YSBhZnRlciB0aGUgZmluYWwgdGVybWluYXRv ci4iKSk7CiAKKwkvKgorCSAqIE1ha2Ugc3VyZSBhbGwgY3VzdG9tIEhCQSBvcHRpb25zIGFyZSB1 bmRlcnN0b29kIGJ5IHRoZSB2YWxpZGF0b3IgYmVmb3JlCisJICogY29udGludWluZywgc2luY2Ug d2UgY291bGRuJ3QgY2hlY2sgdGhlbSBkdXJpbmcgc2VydmVyIHN0YXJ0L3JlbG9hZC4KKwkgKi8K KwlpZiAoIWNoZWNrX3ZhbGlkYXRvcl9oYmFfb3B0aW9ucyhjdHgtPnBvcnQsIGxvZ2RldGFpbCkp CisJeworCQljdHgtPnN0YXRlID0gT0FVVEhfU1RBVEVfRklOSVNIRUQ7CisJCXJldHVybiBQR19T QVNMX0VYQ0hBTkdFX0ZBSUxVUkU7CisJfQorCiAJaWYgKGF1dGhbMF0gPT0gJ1wwJykKIAl7CiAJ CS8qCkBAIC04MjIsNiArODQxLDkgQEAgc2h1dGRvd25fdmFsaWRhdG9yX2xpYnJhcnkodm9pZCAq YXJnKQogewogCWlmIChWYWxpZGF0b3JDYWxsYmFja3MtPnNodXRkb3duX2NiICE9IE5VTEwpCiAJ CVZhbGlkYXRvckNhbGxiYWNrcy0+c2h1dGRvd25fY2IodmFsaWRhdG9yX21vZHVsZV9zdGF0ZSk7 CisKKwkvKiBUaGUgYmFja2luZyBtZW1vcnkgZm9yIHRoaXMgaXMgYWJvdXQgdG8gZGlzYXBwZWFy LiAqLworCVZhbGlkYXRvck9wdGlvbnMgPSBOSUw7CiB9CiAKIC8qCkBAIC05MDcsMyArOTI5LDIw NiBAQCBkb25lOgogCiAJcmV0dXJuICgqZXJyX21zZyA9PSBOVUxMKTsKIH0KKworLyoKKyAqIENs aWVudCBBUElzIGZvciB2YWxpZGF0b3IgaW1wbGVtZW50YXRpb25zCisgKgorICogU2luY2Ugd2Un cmUgY3VycmVudGx5IG5vdCB0aHJlYWRlZCwgd2Ugb25seSBhbGxvdyBvbmUgdmFsaWRhdG9yIGlu IHRoZQorICogcHJvY2VzcyBhdCBhIHRpbWUuIFNvIHdlIGNhbiBtYWtlIHVzZSBvZiBnbG9iYWxz IGZvciBub3cgaW5zdGVhZCBvZiBsb29raW5nCisgKiB1cCBpbmZvcm1hdGlvbiB1c2luZyB0aGUg c3RhdGUgcG9pbnRlci4gV2UgcHJvYmFibHkgc2hvdWxkbid0IGFzc3VtZSB0aGF0IHRoZQorICog bW9kdWxlIGhhc24ndCB0ZW1wb3JhcmlseSBjaGFuZ2VkIG1lbW9yeSBjb250ZXh0cyBvbiB1cywg dGhvdWdoOyBmdW5jdGlvbnMKKyAqIGhlcmUgc2hvdWxkIGRlZmVuc2l2ZWx5IHVzZSBhbiBhcHBy b3ByaWF0ZSBjb250ZXh0IHdoZW4gbWFraW5nIGdsb2JhbAorICogYWxsb2NhdGlvbnMuCisgKi8K KworLyoKKyAqIEFkZHMgdG8gdGhlIGxpc3Qgb2YgYWxsb3dlZCB2YWxpZGF0b3IuKiBIQkEgb3B0 aW9ucy4gVXNlZCBkdXJpbmcgdGhlCisgKiBzdGFydHVwX2NiLgorICovCit2b2lkCitSZWdpc3Rl ck9BdXRoSEJBT3B0aW9ucyhWYWxpZGF0b3JNb2R1bGVTdGF0ZSAqc3RhdGUsIGludCBudW0sCisJ CQkJCQljb25zdCBjaGFyICpvcHRzW10pCit7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0Owor CisJaWYgKCFzdGF0ZSkKKwl7CisJCUFzc2VydChmYWxzZSk7CisJCXJldHVybjsKKwl9CisKKwlv bGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFZhbGlkYXRvck1lbW9yeUNvbnRleHQp OworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW07IGkrKykKKwl7CisJCWlmICghdmFsaWRfb2F1 dGhfaGJhX29wdGlvbl9uYW1lKG9wdHNbaV0pKQorCQl7CisJCQkvKgorCQkJICogVGhlIHVzZXIg Y2FuJ3Qgc2V0IHRoaXMgb3B0aW9uIGluIHRoZSBIQkEsIHNvIEdldE9BdXRoSEJBT3B0aW9uCisJ CQkgKiB3b3VsZCBhbHdheXMgcmV0dXJuIE5VTEwuCisJCQkgKi8KKwkJCWVyZXBvcnQoV0FSTklO RywKKwkJCQkJZXJybXNnKCJIQkEgb3B0aW9uIG5hbWUgXCIlc1wiIGlzIGludmFsaWQgYW5kIHdp bGwgYmUgaWdub3JlZCIsCisJCQkJCQkgICBvcHRzW2ldKSwKKwkJCS8qIHRyYW5zbGF0b3I6IHRo ZSBzZWNvbmQgJXMgaXMgYSBmdW5jdGlvbiBuYW1lICovCisJCQkJCWVycmNvbnRleHQoInZhbGlk YXRvciBtb2R1bGUgXCIlc1wiLCBpbiBjYWxsIHRvICVzIiwKKwkJCQkJCQkgICBNeVByb2NQb3J0 LT5oYmEtPm9hdXRoX3ZhbGlkYXRvciwKKwkJCQkJCQkgICAiUmVnaXN0ZXJPQXV0aEhCQU9wdGlv bnMiKSk7CisJCQljb250aW51ZTsKKwkJfQorCisJCVZhbGlkYXRvck9wdGlvbnMgPSBsYXBwZW5k KFZhbGlkYXRvck9wdGlvbnMsIHBzdHJkdXAob3B0c1tpXSkpOworCX0KKworCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCS8qCisJICogV2FpdCB0byB2YWxpZGF0ZSB0aGUg SEJBIGFnYWluc3QgdGhlIHJlZ2lzdGVyZWQgb3B0aW9ucyB1bnRpbCBsYXRlcgorCSAqIChzZWUg Y2hlY2tfdmFsaWRhdG9yX2hiYV9vcHRpb25zKCkpLgorCSAqCisJICogRGVsYXlpbmcgYWxsb3dz IHRoZSB2YWxpZGF0b3IgdG8gbWFrZSBtdWx0aXBsZSByZWdpc3RyYXRpb24gY2FsbHMsIHRvCisJ ICogYXBwZW5kIHRvIHRoZSBsaXN0OyBpdCBsZXRzIHVzIG1ha2UgdGhlIGNoZWNrIGluIGEgcGxh Y2Ugd2hlcmUgd2UgY2FuCisJICogcmVwb3J0IHRoZSBlcnJvciB3aXRob3V0IGxlYWtpbmcgZGV0 YWlscyB0byB0aGUgY2xpZW50OyBhbmQgaXQgYXZvaWRzCisJICogZXhwb3J0aW5nIHRoZSBvcmRl ciBvZiBvcGVyYXRpb25zIGJldHdlZW4gSEJBIG1hdGNoaW5nIGFuZCB0aGUKKwkgKiBzdGFydHVw X2NiIGNhbGwgYXMgYW4gQVBJIGd1YXJhbnRlZS4gKFRoZSBsYXN0IGlzc3VlIG1heSBiZWNvbWUK KwkgKiByZWxldmFudCB3aXRoIGEgdGhyZWFkZWQgbW9kZWwuKQorCSAqLworfQorCisvKgorICog UmVzdHJpY3QgdGhlIG5hbWVzIGF2YWlsYWJsZSB0byBjdXN0b20gSEJBIG9wdGlvbnMsIHNvIHRo YXQgd2UgZG9uJ3QKKyAqIGFjY2lkZW50YWxseSBwcmV2ZW50IGZ1dHVyZSBzeW50YXggZXh0ZW5z aW9ucyB0byBIQkEgZmlsZXMuCisgKi8KK2Jvb2wKK3ZhbGlkX29hdXRoX2hiYV9vcHRpb25fbmFt ZShjb25zdCBjaGFyICpuYW1lKQoreworCS8qCisJICogVGhpcyBsaXN0IGlzIG5vdCBpbmNyZWRp Ymx5IHByaW5jaXBsZWQsIHNpbmNlIHRoZSBnb2FsIGlzIGp1c3QgdG8gYm91bmQKKwkgKiBjb21w YXRpYmlsaXR5IGd1YXJhbnRlZXMgZm9yIG91ciBIQkEgcGFyc2VyLiBBbHBoYW51bWVyaWNzIHNl ZW0KKwkgKiBvYnZpb3VzbHkgZmluZSwgYW5kIGl0J3MgZGlmZmljdWx0IHRvIGFyZ3VlIGFnYWlu c3QgdGhlIHB1bmN0dWF0aW9uCisJICogdGhhdCdzIGFscmVhZHkgaW5jbHVkZWQgaW4gc29tZSBI QkEgb3B0aW9uIG5hbWVzIGFuZCBpZGVudGlmaWVycy4KKwkgKi8KKwlzdGF0aWMgY29uc3QgY2hh ciAqbmFtZV9hbGxvd2VkX3NldCA9CisJCSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIKKwkJ IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIgorCQkiMDEyMzQ1Njc4OV8tIjsKKworCXNpemVf dAkJc3BhbjsKKworCWlmICghbmFtZVswXSkKKwkJcmV0dXJuIGZhbHNlOworCisJc3BhbiA9IHN0 cnNwbihuYW1lLCBuYW1lX2FsbG93ZWRfc2V0KTsKKwlyZXR1cm4gbmFtZVtzcGFuXSA9PSAnXDAn OworfQorCisvKgorICogVmVyaWZpZXMgdGhhdCBhbGwgdmFsaWRhdG9yLiogSEJBIG9wdGlvbnMg c3BlY2lmaWVkIGJ5IHRoZSB1c2VyIHdlcmUgYWN0dWFsbHkKKyAqIHJlZ2lzdGVyZWQgYnkgdGhl IHZhbGlkYXRvciBsaWJyYXJ5IGluIHVzZS4KKyAqLworc3RhdGljIGJvb2wKK2NoZWNrX3ZhbGlk YXRvcl9oYmFfb3B0aW9ucyhQb3J0ICpwb3J0LCBjb25zdCBjaGFyICoqbG9nZGV0YWlsKQorewor CUhiYUxpbmUgICAgKmhiYSA9IHBvcnQtPmhiYTsKKworCWZvcmVhY2hfcHRyKGNoYXIsIGtleSwg aGJhLT5vYXV0aF9vcHRfa2V5cykKKwl7CisJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisKKwkJLyog TyhuXjIpIHNob3VsZG4ndCBiZSBhIHByb2JsZW0gaGVyZSBpbiBwcmFjdGljZS4gKi8KKwkJZm9y ZWFjaF9wdHIoY2hhciwgb3B0bmFtZSwgVmFsaWRhdG9yT3B0aW9ucykKKwkJeworCQkJaWYgKHN0 cmNtcChrZXksIG9wdG5hbWUpID09IDApCisJCQl7CisJCQkJZm91bmQgPSB0cnVlOworCQkJCWJy ZWFrOworCQkJfQorCQl9CisKKwkJaWYgKCFmb3VuZCkKKwkJeworCQkJLyoKKwkJCSAqIFVua25v d24gb3B0aW9uIG5hbWUuIE1pcnJvciB0aGUgZXJyb3IgbWVzc2FnZXMgaW4gaGJhLmMgaGVyZSwK KwkJCSAqIGtlZXBpbmcgaW4gbWluZCB0aGF0IHRoZSBvcmlnaW5hbCAidmFsaWRhdG9yLiIgcHJl Zml4IHdhcworCQkJICogc3RyaXBwZWQgZnJvbSB0aGUga2V5IGR1cmluZyBwYXJzaW5nLgorCQkJ ICoKKwkJCSAqIFNpbmNlIHRoaXMgaXMgYWZmZWN0aW5nIGxpdmUgY29ubmVjdGlvbnMsIHdoaWNo IGlzIHVudXN1YWwgZm9yCisJCQkgKiBIQkEsIGJlIG5vaXN5IHdpdGggYSBXQVJOSU5HLiAoV2Fy bmluZ3MgYXJlbid0IHNlbnQgdG8gY2xpZW50cworCQkJICogcHJpb3IgdG8gc3VjY2Vzc2Z1bCBh dXRoZW50aWNhdGlvbiwgc28gdGhpcyB3b24ndCBkaXNjbG9zZSB0aGUKKwkJCSAqIHNlcnZlciBj b25maWcuKSBJdCdsbCBkdXBsaWNhdGUgc29tZSBvZiB0aGUgaW5mb3JtYXRpb24gaW4gdGhlCisJ CQkgKiBsb2dkZXRhaWwsIGJ1dCB0aGF0IHNob3VsZCBtYWtlIGl0IGhhcmQgdG8gbWlzcyB0aGUg Y29ubmVjdGlvbgorCQkJICogYmV0d2VlbiB0aGUgdHdvLgorCQkJICovCisJCQljaGFyCSAgICpu YW1lID0gcHNwcmludGYoInZhbGlkYXRvci4lcyIsIGtleSk7CisKKwkJCSpsb2dkZXRhaWwgPSBw c3ByaW50ZihfKCJ1bnJlY29nbml6ZWQgYXV0aGVudGljYXRpb24gb3B0aW9uIG5hbWU6IFwiJXNc IiIpLAorCQkJCQkJCQkgIG5hbWUpOworCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQllcnJjb2Rl KEVSUkNPREVfQ09ORklHX0ZJTEVfRVJST1IpLAorCQkJCQllcnJtc2coInVucmVjb2duaXplZCBh dXRoZW50aWNhdGlvbiBvcHRpb24gbmFtZTogXCIlc1wiIiwKKwkJCQkJCSAgIG5hbWUpLAorCQkJ LyogdHJhbnNsYXRvcjogdGhlIGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgKi8K KwkJCQkJZXJyZGV0YWlsKCJUaGUgaW5zdGFsbGVkIHZhbGlkYXRvciBtb2R1bGUgKFwiJXNcIikg ZGlkIG5vdCBkZWZpbmUgYW4gb3B0aW9uIG5hbWVkIFwiJXNcIi4iLAorCQkJCQkJCSAgaGJhLT5v YXV0aF92YWxpZGF0b3IsIGtleSksCisJCQkJCWVycmhpbnQoIkFsbCBPQXV0aCBjb25uZWN0aW9u cyBtYXRjaGluZyB0aGlzIGxpbmUgd2lsbCBmYWlsLiBDb3JyZWN0IHRoZSBvcHRpb24gYW5kIHJl bG9hZCB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24uIiksCisJCQkJCWVycmNvbnRleHQoImxpbmUg JWQgb2YgY29uZmlndXJhdGlvbiBmaWxlIFwiJXNcIiIsCisJCQkJCQkJICAgaGJhLT5saW5lbnVt YmVyLCBoYmEtPnNvdXJjZWZpbGUpKTsKKworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJfQorCisJ VmFsaWRhdG9yT3B0aW9uc0NoZWNrZWQgPSB0cnVlOyAvKiB1bmZldHRlciBHZXRPQXV0aEhCQU9w dGlvbigpICovCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBSZXRyaWV2ZXMgdGhlIHNldHRp bmcgZm9yIGEgdmFsaWRhdG9yLiogSEJBIG9wdGlvbiwgb3IgTlVMTCBpZiBub3QgZm91bmQuCisg KiBUaGlzIG1heSBvbmx5IGJlIHVzZWQgZHVyaW5nIHRoZSB2YWxpZGF0ZV9jYiBhbmQgc2h1dGRv d25fY2IuCisgKi8KK2NvbnN0IGNoYXIgKgorR2V0T0F1dGhIQkFPcHRpb24oY29uc3QgVmFsaWRh dG9yTW9kdWxlU3RhdGUgKnN0YXRlLCBjb25zdCBjaGFyICpvcHRuYW1lKQoreworCUhiYUxpbmUg ICAgKmhiYSA9IE15UHJvY1BvcnQtPmhiYTsKKwlMaXN0Q2VsbCAgICpsY19rOworCUxpc3RDZWxs ICAgKmxjX3Y7CisJY29uc3QgY2hhciAqcmV0ID0gTlVMTDsKKworCWlmICghVmFsaWRhdG9yT3B0 aW9uc0NoZWNrZWQpCisJeworCQkvKgorCQkgKiBQcmV2ZW50IHRoZSBzdGFydHVwX2NiIGZyb20g cmV0cmlldmluZyBIQkEgb3B0aW9ucyB0aGF0IGl0IGhhcyBqdXN0CisJCSAqIHJlZ2lzdGVyZWQu IFRoaXMgcHJvYmFibHkgc2VlbXMgc3RyYW5nZSAtLSB3aHkgcmVmdXNlIHRvIGhhbmQgb3V0CisJ CSAqIGluZm9ybWF0aW9uIHdlIGFscmVhZHkga25vdz8gLS0gYnV0IHRoaXMgbGV0cyB1cyByZXNl cnZlIHRoZQorCQkgKiBhYmlsaXR5IHRvIHBlcmZvcm0gdGhlIHN0YXJ0dXBfY2IgY2FsbCBlYXJs aWVyLCBiZWZvcmUgd2Uga25vdworCQkgKiB3aGljaCBIQkEgbGluZSBpcyBtYXRjaGVkIGJ5IGEg Y29ubmVjdGlvbiwgd2l0aG91dCBicmVha2luZyB0aGlzCisJCSAqIEFQSS4KKwkJICovCisJCXJl dHVybiBOVUxMOworCX0KKworCWlmICghc3RhdGUgfHwgIWhiYSkKKwl7CisJCUFzc2VydChmYWxz ZSk7CisJCXJldHVybiBOVUxMOworCX0KKworCUFzc2VydChsaXN0X2xlbmd0aChoYmEtPm9hdXRo X29wdF9rZXlzKSA9PSBsaXN0X2xlbmd0aChoYmEtPm9hdXRoX29wdF92YWxzKSk7CisKKwlmb3Ji b3RoKGxjX2ssIGhiYS0+b2F1dGhfb3B0X2tleXMsIGxjX3YsIGhiYS0+b2F1dGhfb3B0X3ZhbHMp CisJeworCQljb25zdCBjaGFyICprZXkgPSBsZmlyc3QobGNfayk7CisJCWNvbnN0IGNoYXIgKnZh bCA9IGxmaXJzdChsY192KTsKKworCQlpZiAoc3RyY21wKGtleSwgb3B0bmFtZSkgPT0gMCkKKwkJ eworCQkJLyoKKwkJCSAqIERvbid0IHJldHVybiB5ZXQgLS0gd2hlbiByZWd1bGFyIEhCQSBvcHRp b25zIGFyZSBzcGVjaWZpZWQgbW9yZQorCQkJICogdGhhbiBvbmNlLCB0aGUgbGFzdCBvbmUgd2lu cy4gRG8gdGhlIHNhbWUgZm9yIHRoZXNlIG9wdGlvbnMuCisJCQkgKi8KKwkJCXJldCA9IHZhbDsK KwkJfQorCX0KKworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJw cS9oYmEuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL2hiYS5jCmluZGV4IDg3ZWU1NDFlODgwLi43Njk0 NTA2YWFmNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvaGJhLmMKKysrIGIvc3JjL2Jh Y2tlbmQvbGlicHEvaGJhLmMKQEAgLTI0OTcsNiArMjQ5NywzMiBAQCBwYXJzZV9oYmFfYXV0aF9v cHQoY2hhciAqbmFtZSwgY2hhciAqdmFsLCBIYmFMaW5lICpoYmFsaW5lLAogCQlSRVFVSVJFX0FV VEhfT1BUSU9OKHVhT0F1dGgsICJ2YWxpZGF0b3IiLCAib2F1dGgiKTsKIAkJaGJhbGluZS0+b2F1 dGhfdmFsaWRhdG9yID0gcHN0cmR1cCh2YWwpOwogCX0KKwllbHNlIGlmIChzdHJuY21wKG5hbWUs ICJ2YWxpZGF0b3IuIiwgc3RybGVuKCJ2YWxpZGF0b3IuIikpID09IDApCisJeworCQljb25zdCBj aGFyICprZXkgPSBuYW1lICsgc3RybGVuKCJ2YWxpZGF0b3IuIik7CisKKwkJUkVRVUlSRV9BVVRI X09QVElPTih1YU9BdXRoLCBuYW1lLCAib2F1dGgiKTsKKworCQkvKgorCQkgKiBWYWxpZGF0b3Ig bW9kdWxlcyBtYXkgcmVnaXN0ZXIgdGhlaXIgb3duIHBlci1IQkEtbGluZSBvcHRpb25zLgorCQkg KiBVbmZvcnR1bmF0ZWx5LCBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIHJlcXVpcmUgdGhlc2UgbW9k dWxlcyB0byBiZQorCQkgKiBsb2FkZWQgaW50byB0aGUgcG9zdG1hc3Rlciwgd2UgZG9uJ3Qga25v dyBpZiB0aGUgb3B0aW9ucyBhcmUgdmFsaWQKKwkJICogeWV0IGFuZCBtdXN0IHN0b3JlIHRoZW0g Zm9yIGxhdGVyLiBQZXJmb3JtIG9ubHkgYSBiYXNpYyBzeW50YXgKKwkJICogY2hlY2sgaGVyZS4K KwkJICovCisJCWlmICghdmFsaWRfb2F1dGhfaGJhX29wdGlvbl9uYW1lKGtleSkpCisJCXsKKwkJ CWVyZXBvcnQoZWxldmVsLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0NPTkZJR19GSUxFX0VSUk9S KSwKKwkJCQkJIGVycm1zZygiaW52YWxpZCBPQXV0aCB2YWxpZGF0b3Igb3B0aW9uIG5hbWU6IFwi JXNcIiIsIG5hbWUpLAorCQkJCQkgZXJyY29udGV4dCgibGluZSAlZCBvZiBjb25maWd1cmF0aW9u IGZpbGUgXCIlc1wiIiwKKwkJCQkJCQkJbGluZV9udW0sIGZpbGVfbmFtZSkpKTsKKwkJCXJldHVy biBmYWxzZTsKKwkJfQorCisJCWhiYWxpbmUtPm9hdXRoX29wdF9rZXlzID0gbGFwcGVuZChoYmFs aW5lLT5vYXV0aF9vcHRfa2V5cywgcHN0cmR1cChrZXkpKTsKKwkJaGJhbGluZS0+b2F1dGhfb3B0 X3ZhbHMgPSBsYXBwZW5kKGhiYWxpbmUtPm9hdXRoX29wdF92YWxzLCBwc3RyZHVwKHZhbCkpOwor CX0KIAllbHNlIGlmIChzdHJjbXAobmFtZSwgImRlbGVnYXRlX2lkZW50X21hcHBpbmciKSA9PSAw KQogCXsKIAkJUkVRVUlSRV9BVVRIX09QVElPTih1YU9BdXRoLCAiZGVsZWdhdGVfaWRlbnRfbWFw cGluZyIsICJvYXV0aCIpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxp ZGF0b3IvdC8wMDFfc2VydmVyLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Iv dC8wMDFfc2VydmVyLnBsCmluZGV4IGFjNjI1NTU2NzVhLi5jYjMyNmI1MTU5NyAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDFfc2VydmVyLnBsCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL3QvMDAxX3NlcnZlci5wbApAQCAtNjAy LDEwICs2MDIsMjkgQEAgJG5vZGUtPmNvbm5lY3RfZmFpbHMoCiAKICRiZ2Nvbm4tPnF1ZXJ5X3Nh ZmUoIkFMVEVSIFNZU1RFTSBSRVNFVCBvYXV0aF92YWxpZGF0b3IuZXJyb3JfZGV0YWlsIik7CiAk Ymdjb25uLT5xdWVyeV9zYWZlKCJBTFRFUiBTWVNURU0gUkVTRVQgb2F1dGhfdmFsaWRhdG9yLmlu dGVybmFsX2Vycm9yIik7CisKKyMgV2UgY29tcGxhaW4gd2hlbiBiYWQgb3B0aW9uIG5hbWVzIGFy ZSByZWdpc3RlcmVkLCBidXQgY29ubmVjdGlvbnMgbWF5IHByb2NlZWQKKyMgKHNpbmNlIHVzZXJz IGNhbid0IHNldCB0aG9zZSBvcHRpb25zIGluIHRoZSBIQkEgYW55d2F5KS4KKyRiZ2Nvbm4tPnF1 ZXJ5X3NhZmUoIkFMVEVSIFNZU1RFTSBSRVNFVCBvYXV0aF92YWxpZGF0b3IuYXV0aG5faWQiKTsK KyRiZ2Nvbm4tPnF1ZXJ5X3NhZmUoIkFMVEVSIFNZU1RFTSBSRVNFVCBvYXV0aF92YWxpZGF0b3Iu YXV0aG9yaXplX3Rva2VucyIpOworJGJnY29ubi0+cXVlcnlfc2FmZSgiQUxURVIgU1lTVEVNIFNF VCBvYXV0aF92YWxpZGF0b3IuaW52YWxpZF9oYmEgVE8gdHJ1ZSIpOworCiAkbm9kZS0+cmVsb2Fk OwogJGxvZ19zdGFydCA9CiAgICRub2RlLT53YWl0X2Zvcl9sb2cocXIvcmVsb2FkaW5nIGNvbmZp Z3VyYXRpb24gZmlsZXMvLCAkbG9nX3N0YXJ0KTsKIAorJG5vZGUtPmNvbm5lY3Rfb2soCisJIiRj b21tb25fY29ubnN0ciB1c2VyPXRlc3QiLAorCSJiYWQgcmVnaXN0ZXJlZCBIQkEgb3B0aW9uIiwK KwlleHBlY3RlZF9zdGRlcnIgPT4KKwkgIHFyQFZpc2l0IGh0dHBzOi8vZXhhbXBsZVwuY29tLyBh bmQgZW50ZXIgdGhlIGNvZGU6IHBvc3RncmVzdXNlckAsCisJbG9nX2xpa2UgPT4gWworCQlxci9X QVJOSU5HOlxzK0hCQSBvcHRpb24gbmFtZSAiYmFkIG9wdGlvbiBuYW1lIiBpcyBpbnZhbGlkIGFu ZCB3aWxsIGJlIGlnbm9yZWQvLAorCQlxci9DT05URVhUOlxzK3ZhbGlkYXRvciBtb2R1bGUgInZh bGlkYXRvciIsIGluIGNhbGwgdG8gUmVnaXN0ZXJPQXV0aEhCQU9wdGlvbnMvLAorCV0pOworCisk Ymdjb25uLT5xdWVyeV9zYWZlKCJBTFRFUiBTWVNURU0gUkVTRVQgb2F1dGhfdmFsaWRhdG9yLmlu dmFsaWRfaGJhIik7CisKICMKICMgVGVzdCB1c2VyIG1hcHBpbmcuCiAjCkBAIC02NzQsNiArNjkz LDg0IEBAICRub2RlLT5yZWxvYWQ7CiAkbG9nX3N0YXJ0ID0KICAgJG5vZGUtPndhaXRfZm9yX2xv Zyhxci9yZWxvYWRpbmcgY29uZmlndXJhdGlvbiBmaWxlcy8sICRsb2dfc3RhcnQpOwogCiskYmdj b25uLT5xdWl0OyAgICAjIHRoZSB0ZXN0cyBiZWxvdyByZXN0YXJ0IHRoZSBzZXJ2ZXIKKworIwor IyBUZXN0IHZhbGlkYXRvci1zcGVjaWZpYyBIQkEgb3B0aW9ucy4KKyMKKwordW5saW5rKCRub2Rl LT5kYXRhX2RpciAuICcvcGdfaGJhLmNvbmYnKTsKKyRub2RlLT5hcHBlbmRfY29uZigKKwkncGdf aGJhLmNvbmYnLCBxcXsKK2xvY2FsIGFsbCB0ZXN0ICAgIG9hdXRoIGlzc3Vlcj0iJGlzc3VlciIg c2NvcGU9Im9wZW5pZCBwb3N0Z3JlcyIgZGVsZWdhdGVfaWRlbnRfbWFwcGluZz0xIFxcCisgICAg ICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3IuYXV0aG5faWQ9Imlnbm9yZWQiIHZhbGlkYXRv ci5hdXRobl9pZD0ib3RoZXItaWRlbnRpdHkiCitsb2NhbCBhbGwgdGVzdGFsdCBvYXV0aCBpc3N1 ZXI9IiRpc3N1ZXIiIHNjb3BlPSJvcGVuaWQgcG9zdGdyZXMiIHZhbGlkYXRvci5sb2c9InRlc3Rh bHQgbWVzc2FnZSIKK30pOworCiskbm9kZS0+cmVsb2FkOworJGxvZ19zdGFydCA9CisgICRub2Rl LT53YWl0X2Zvcl9sb2cocXIvcmVsb2FkaW5nIGNvbmZpZ3VyYXRpb24gZmlsZXMvLCAkbG9nX3N0 YXJ0KTsKKworJG5vZGUtPmNvbm5lY3Rfb2soCisJIiRjb21tb25fY29ubnN0ciB1c2VyPXRlc3Qi LAorCSJjdXN0b20gSEJBIHNldHRpbmcgKHRlc3QpIiwKKwlleHBlY3RlZF9zdGRlcnIgPT4KKwkg IHFyQFZpc2l0IGh0dHBzOi8vZXhhbXBsZVwuY29tLyBhbmQgZW50ZXIgdGhlIGNvZGU6IHBvc3Rn cmVzdXNlckAsCisJbG9nX2xpa2UgPT4gW3FyL2Nvbm5lY3Rpb24gYXV0aGVudGljYXRlZDogaWRl bnRpdHk9Im90aGVyLWlkZW50aXR5Ii9dKTsKKyRub2RlLT5jb25uZWN0X29rKAorCSIkY29tbW9u X2Nvbm5zdHIgdXNlcj10ZXN0YWx0IiwKKwkiY3VzdG9tIEhCQSBzZXR0aW5nICh0ZXN0YWx0KSIs CisJZXhwZWN0ZWRfc3RkZXJyID0+CisJICBxckBWaXNpdCBodHRwczovL2V4YW1wbGVcLmNvbS8g YW5kIGVudGVyIHRoZSBjb2RlOiBwb3N0Z3Jlc3VzZXJALAorCWxvZ19saWtlID0+IFsKKwkJcXIv TE9HOlxzK3Rlc3RhbHQgbWVzc2FnZS8sCisJCXFyL2Nvbm5lY3Rpb24gYXV0aGVudGljYXRlZDog aWRlbnRpdHk9InRlc3RhbHQiLywKKwldKTsKKworIyBiYWQgc3ludGF4Cit1bmxpbmsoJG5vZGUt PmRhdGFfZGlyIC4gJy9wZ19oYmEuY29uZicpOworJG5vZGUtPmFwcGVuZF9jb25mKAorCSdwZ19o YmEuY29uZicsIHFxeworbG9jYWwgYWxsIHRlc3RhbHQgb2F1dGggaXNzdWVyPSIkaXNzdWVyIiBz Y29wZT0ib3BlbmlkIHBvc3RncmVzIiB2YWxpZGF0b3IuPTEKK30pOworCiskbG9nX3N0YXJ0ID0g LXMgJG5vZGUtPmxvZ2ZpbGU7Ciskbm9kZS0+cmVzdGFydChmYWlsX29rID0+IDEpOworJG5vZGUt PmxvZ19jaGVjaygiZW1wdHkgSEJBIG9wdGlvbiBuYW1lIiwKKwkkbG9nX3N0YXJ0LAorCWxvZ19s aWtlID0+IFtxci9pbnZhbGlkIE9BdXRoIHZhbGlkYXRvciBvcHRpb24gbmFtZTogInZhbGlkYXRv clwuIi9dKTsKKwordW5saW5rKCRub2RlLT5kYXRhX2RpciAuICcvcGdfaGJhLmNvbmYnKTsKKyRu b2RlLT5hcHBlbmRfY29uZigKKwkncGdfaGJhLmNvbmYnLCBxcXsKK2xvY2FsIGFsbCB0ZXN0YWx0 IG9hdXRoIGlzc3Vlcj0iJGlzc3VlciIgc2NvcGU9Im9wZW5pZCBwb3N0Z3JlcyIgdmFsaWRhdG9y LkBAPTEKK30pOworCiskbG9nX3N0YXJ0ID0gLXMgJG5vZGUtPmxvZ2ZpbGU7Ciskbm9kZS0+cmVz dGFydChmYWlsX29rID0+IDEpOworJG5vZGUtPmxvZ19jaGVjaygiaW52YWxpZCBIQkEgb3B0aW9u IG5hbWUiLAorCSRsb2dfc3RhcnQsCisJbG9nX2xpa2UgPT4gW3FyL2ludmFsaWQgT0F1dGggdmFs aWRhdG9yIG9wdGlvbiBuYW1lOiAidmFsaWRhdG9yXC5AQCIvXSk7CisKKyMgdW5rbm93biBzZXR0 aW5ncyAodmFsaWRhdGlvbiBpcyBkZWZlcnJlZCB0byBjb25uZWN0IHRpbWUpCit1bmxpbmsoJG5v ZGUtPmRhdGFfZGlyIC4gJy9wZ19oYmEuY29uZicpOworJG5vZGUtPmFwcGVuZF9jb25mKAorCSdw Z19oYmEuY29uZicsIHFxeworbG9jYWwgYWxsIHRlc3RhbHQgb2F1dGggaXNzdWVyPSIkaXNzdWVy IiBzY29wZT0ib3BlbmlkIHBvc3RncmVzIiBcXAorICAgICAgICAgICAgICAgICAgICAgICAgdmFs aWRhdG9yLmxvZz1pZ25vcmVkIHZhbGlkYXRvci5iYWQ9MQorfSk7Ciskbm9kZS0+cmVzdGFydDsK KworJG5vZGUtPmNvbm5lY3RfZmFpbHMoCisJIiRjb21tb25fY29ubnN0ciB1c2VyPXRlc3RhbHQi LAorCSJiYWQgSEJBIHNldHRpbmciLAorCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9PQXV0aCBiZWFy ZXIgYXV0aGVudGljYXRpb24gZmFpbGVkLywKKwlsb2dfbGlrZSA9PiBbCisJCXFyL1dBUk5JTkc6 XHMrdW5yZWNvZ25pemVkIGF1dGhlbnRpY2F0aW9uIG9wdGlvbiBuYW1lOiAidmFsaWRhdG9yXC5i YWQiLywKKwkJcXIvRkFUQUw6XHMrT0F1dGggYmVhcmVyIGF1dGhlbnRpY2F0aW9uIGZhaWxlZC8s CisJCXFyL0RFVEFJTDpccyt1bnJlY29nbml6ZWQgYXV0aGVudGljYXRpb24gb3B0aW9uIG5hbWU6 ICJ2YWxpZGF0b3JcLmJhZCIvLAorCV0pOworCiAjCiAjIFRlc3QgbXVsdGlwbGUgdmFsaWRhdG9y cy4KICMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL3ZhbGlk YXRvci5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdmFsaWRhdG9yLmMKaW5k ZXggMzUzZTBlMGQzMmEuLjg1ZmI0YzA4YmYyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L29hdXRoX3ZhbGlkYXRvci92YWxpZGF0b3IuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRo X3ZhbGlkYXRvci92YWxpZGF0b3IuYwpAQCAtNDIsMTMgKzQyLDIxIEBAIHN0YXRpYyBjaGFyICph dXRobl9pZCA9IE5VTEw7CiBzdGF0aWMgYm9vbCBhdXRob3JpemVfdG9rZW5zID0gdHJ1ZTsKIHN0 YXRpYyBjaGFyICplcnJvcl9kZXRhaWwgPSBOVUxMOwogc3RhdGljIGJvb2wgaW50ZXJuYWxfZXJy b3IgPSBmYWxzZTsKK3N0YXRpYyBib29sIGludmFsaWRfaGJhID0gZmFsc2U7CisKKy8qIEhCQSBv cHRpb25zICovCitzdGF0aWMgY29uc3QgY2hhciAqaGJhX29wdHNbXSA9IHsKKwkiYXV0aG5faWQi LAkJCQkJLyogb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGF1dGhuX2lkICovCisJImxvZyIsCQkJCQkJ LyogbG9ncyBhbiBhcmJpdHJhcnkgc3RyaW5nICovCit9OwogCiAvKi0tLQogICogRXh0ZW5zaW9u IGVudHJ5IHBvaW50LiBTZXRzIHVwIEdVQ3MgZm9yIHVzZSBieSB0ZXN0czoKICAqCiAgKiAtIG9h dXRoX3ZhbGlkYXRvci5hdXRobl9pZAlTZXRzIHRoZSB1c2VyIGlkZW50aWZpZXIgdG8gcmV0dXJu IGR1cmluZyB0b2tlbgogICoJCQkJCQkJCXZhbGlkYXRpb24uIERlZmF1bHRzIHRvIHRoZSB1c2Vy bmFtZSBpbiB0aGUKLSAqCQkJCQkJCQlzdGFydHVwIHBhY2tldC4KKyAqCQkJCQkJCQlzdGFydHVw IHBhY2tldCwgb3IgdGhlIHZhbGlkYXRvci5hdXRobl9pZCBIQkEKKyAqCQkJCQkJCQlvcHRpb24g aWYgaXQgaXMgc2V0LgogICoKICAqIC0gb2F1dGhfdmFsaWRhdG9yLmF1dGhvcml6ZV90b2tlbnMK ICAqCQkJCQkJCQlTZXRzIHdoZXRoZXIgdG8gc3VjY2Vzc2Z1bGx5IHZhbGlkYXRlIGluY29taW5n CkBAIC05Niw2ICsxMDQsMTQgQEAgX1BHX2luaXQodm9pZCkKIAkJCQkJCQkgUEdDX1NJR0hVUCwK IAkJCQkJCQkgMCwKIAkJCQkJCQkgTlVMTCwgTlVMTCwgTlVMTCk7CisJRGVmaW5lQ3VzdG9tQm9v bFZhcmlhYmxlKCJvYXV0aF92YWxpZGF0b3IuaW52YWxpZF9oYmEiLAorCQkJCQkJCSAiU2hvdWxk IHRoZSB2YWxpZGF0b3IgcmVnaXN0ZXIgYW4gaW52YWxpZCBvcHRpb24/IiwKKwkJCQkJCQkgTlVM TCwKKwkJCQkJCQkgJmludmFsaWRfaGJhLAorCQkJCQkJCSBmYWxzZSwKKwkJCQkJCQkgUEdDX1NJ R0hVUCwKKwkJCQkJCQkgMCwKKwkJCQkJCQkgTlVMTCwgTlVMTCwgTlVMTCk7CiAKIAlNYXJrR1VD UHJlZml4UmVzZXJ2ZWQoIm9hdXRoX3ZhbGlkYXRvciIpOwogfQpAQCAtMTI0LDYgKzE0MCwyOSBA QCB2YWxpZGF0b3Jfc3RhcnR1cChWYWxpZGF0b3JNb2R1bGVTdGF0ZSAqc3RhdGUpCiAJaWYgKHN0 YXRlLT5zdmVyc2lvbiAhPSBQR19WRVJTSU9OX05VTSkKIAkJZWxvZyhFUlJPUiwgIm9hdXRoX3Zh bGlkYXRvcjogc3ZlcnNpb24gc2V0IHRvICVkIiwgc3RhdGUtPnN2ZXJzaW9uKTsKIAorCS8qCisJ ICogVGVzdCB0aGUgYmVoYXZpb3Igb2YgY3VzdG9tIEhCQSBvcHRpb25zLiBSZWdpc3RlcmVkIG9w dGlvbnMgc2hvdWxkIG5vdAorCSAqIGJlIHJldHJpZXZhYmxlIGR1cmluZyBzdGFydHVwICh3ZSB3 YW50IHRvIGRpc2NvdXJhZ2UgbW9kdWxlcyBmcm9tCisJICogcmVseWluZyBvbiB0aGUgcmVsYXRp dmUgb3JkZXIgb2YgY2xpZW50IGNvbm5lY3Rpb25zIGFuZCB0aGUKKwkgKiBzdGFydHVwX2NiKS4K KwkgKi8KKwlSZWdpc3Rlck9BdXRoSEJBT3B0aW9ucyhzdGF0ZSwgbGVuZ3Rob2YoaGJhX29wdHMp LCBoYmFfb3B0cyk7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGhvZihoYmFfb3B0cyk7IGkr KykKKwl7CisJCWlmIChHZXRPQXV0aEhCQU9wdGlvbihzdGF0ZSwgaGJhX29wdHNbaV0pKQorCQkJ ZWxvZyhFUlJPUiwKKwkJCQkgIm9hdXRoX3ZhbGlkYXRvcjogR2V0T0F1dGhWYWxpZGF0b3JPcHRp b24oXCIlc1wiKSB3YXMgbm9uLU5VTEwgZHVyaW5nIHN0YXJ0dXBfY2IiLAorCQkJCSBoYmFfb3B0 c1tpXSk7CisJfQorCisJaWYgKGludmFsaWRfaGJhKQorCXsKKwkJLyogUmVnaXN0ZXIgYSBiYWQg b3B0aW9uLCB3aGljaCBzaG91bGQgcHJpbnQgYSBXQVJOSU5HIHRvIHRoZSBsb2dzLiAqLworCQlj b25zdCBjaGFyICppbnZhbGlkID0gImJhZCBvcHRpb24gbmFtZSI7CisKKwkJUmVnaXN0ZXJPQXV0 aEhCQU9wdGlvbnMoc3RhdGUsIDEsICZpbnZhbGlkKTsKKwl9CisKIAlzdGF0ZS0+cHJpdmF0ZV9k YXRhID0gUFJJVkFURV9DT09LSUU7CiB9CiAKQEAgLTE0MSw3ICsxODAsNyBAQCB2YWxpZGF0b3Jf c2h1dGRvd24oVmFsaWRhdG9yTW9kdWxlU3RhdGUgKnN0YXRlKQogCiAvKgogICogVmFsaWRhdG9y IGltcGxlbWVudGF0aW9uLiBMb2dzIHRoZSBpbmNvbWluZyBkYXRhIGFuZCBhdXRob3JpemVzIHRo ZSB0b2tlbiBieQotICogZGVmYXVsdDsgdGhlIGJlaGF2aW9yIGNhbiBiZSBtb2RpZmllZCB2aWEg dGhlIG1vZHVsZSdzIEdVQyBzZXR0aW5ncy4KKyAqIGRlZmF1bHQ7IHRoZSBiZWhhdmlvciBjYW4g YmUgbW9kaWZpZWQgdmlhIHRoZSBtb2R1bGUncyBHVUMgYW5kIEhCQSBzZXR0aW5ncy4KICAqLwog c3RhdGljIGJvb2wKIHZhbGlkYXRlX3Rva2VuKGNvbnN0IFZhbGlkYXRvck1vZHVsZVN0YXRlICpz dGF0ZSwKQEAgLTE1Myw2ICsxOTIsOSBAQCB2YWxpZGF0ZV90b2tlbihjb25zdCBWYWxpZGF0b3JN b2R1bGVTdGF0ZSAqc3RhdGUsCiAJCWVsb2coRVJST1IsICJvYXV0aF92YWxpZGF0b3I6IHByaXZh dGUgc3RhdGUgY29va2llIGNoYW5nZWQgdG8gJXAgaW4gdmFsaWRhdGUiLAogCQkJIHN0YXRlLT5w cml2YXRlX2RhdGEpOwogCisJaWYgKEdldE9BdXRoSEJBT3B0aW9uKHN0YXRlLCAibG9nIikpCisJ CWVsb2coTE9HLCAiJXMiLCBHZXRPQXV0aEhCQU9wdGlvbihzdGF0ZSwgImxvZyIpKTsKKwogCWVs b2coTE9HLCAib2F1dGhfdmFsaWRhdG9yOiB0b2tlbj1cIiVzXCIsIHJvbGU9XCIlc1wiIiwgdG9r ZW4sIHJvbGUpOwogCWVsb2coTE9HLCAib2F1dGhfdmFsaWRhdG9yOiBpc3N1ZXI9XCIlc1wiLCBz Y29wZT1cIiVzXCIiLAogCQkgTXlQcm9jUG9ydC0+aGJhLT5vYXV0aF9pc3N1ZXIsCkBAIC0xNjUs NiArMjA3LDggQEAgdmFsaWRhdGVfdG9rZW4oY29uc3QgVmFsaWRhdG9yTW9kdWxlU3RhdGUgKnN0 YXRlLAogCXJlcy0+YXV0aG9yaXplZCA9IGF1dGhvcml6ZV90b2tlbnM7CiAJaWYgKGF1dGhuX2lk KQogCQlyZXMtPmF1dGhuX2lkID0gcHN0cmR1cChhdXRobl9pZCk7CisJZWxzZSBpZiAoR2V0T0F1 dGhIQkFPcHRpb24oc3RhdGUsICJhdXRobl9pZCIpKQorCQlyZXMtPmF1dGhuX2lkID0gcHN0cmR1 cChHZXRPQXV0aEhCQU9wdGlvbihzdGF0ZSwgImF1dGhuX2lkIikpOwogCWVsc2UKIAkJcmVzLT5h dXRobl9pZCA9IHBzdHJkdXAocm9sZSk7CiAKLS0gCjIuMzQuMQoK --00000000000062442e064e96be9b--