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 1wA9An-0026dS-1j for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 16:21:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wA9Al-001QhV-37 for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 16:21:04 +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 1wA9Al-001QhN-1t for pgsql-hackers@lists.postgresql.org; Tue, 07 Apr 2026 16:21:04 +0000 Received: from mail-oo1-xc2f.google.com ([2607:f8b0:4864:20::c2f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wA9Aj-000000018gy-0qc6 for pgsql-hackers@postgresql.org; Tue, 07 Apr 2026 16:21:03 +0000 Received: by mail-oo1-xc2f.google.com with SMTP id 006d021491bc7-685013eb58fso1294853eaf.3 for ; Tue, 07 Apr 2026 09:21:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775578860; cv=none; d=google.com; s=arc-20240605; b=hQH2l3xVSxKeJ4oZx1bYe5hZNbOAfabk8H7+6c7b3Y6VdyZ/5tkq0G4LnXYo1LjbzR DzehEbnxIlHVJaS+p+lrtQYLZALA7ZyQhFVBDWuhPLqdKbsS1XRSD1pyHOaicXbj+iRu Tcw9/VScM1UvFGPGVUJdsE3OQFVJ9bxclMxVoWynL+O+GWwYabFjZkQV1nHkdIO1St0M NMQHc1DjBpocPKk5s71of79jl50nsfeb9ptm7dY+bibBsLSy7EkvE+8w9XXWxb8w8bKj snXmCJcvvd37h/nQ9ddVNXJ54ShKWh0bQNe5peCLpSd4xA0tajp/oMUrFnBfEoG7g2BX pZZQ== 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=kiz55vj+8awSP0y4ws77MbN+nyFUARWGYjENcXenMtE=; fh=lcQLl68jqRogN+FO6/NvSowMy+Qn5nbDBQd+JUz/FS8=; b=AyC/5w96WviqpziwK0DT6ECfqHKSOcmk1lPj1zKvvRsAakWNkvwooWtn8Y9680arzS zTVkEnB19DBPQj8Q/ON96ua07gOjUf3zTf50AWzbN8Ng1kN2M3jzemUZiGR55gfRfZBP QVkR+a530cc64Fw2mUZ973l6GtwT3Ee0tS9J2lAizo6wJARZda93tweGCzayXwftILJx M6y/MBgfHIpra4JgZ/wOG9DztgofcbzzlvV1O90/UILhTKVgZdpxIXTN9RQ1ORRqzYzZ WRqOmKJr/keqsV5Zyu8zTXu4xI51eGNQVTiNS+3BMB8su5vy3IxPQ9/dg5xaks/6gC0l Fn2Q==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775578860; x=1776183660; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=kiz55vj+8awSP0y4ws77MbN+nyFUARWGYjENcXenMtE=; b=WuQXUQ0eH7F3U6vmjAVSWG51W6g6NXM4Wa54s3G7KC1WIOAFW0j3CuWUj5U0xu43VL gATBCD9kaeSiskpmnXACdxAX7spxfOjdPely2EpeSZMr4HQI4YrcIU+rnUqSwfSMHT4H cWfmdxHO5kplcBgMslVUL0JWg68Nnj0eX0Nps92bPCglzMO/fOVzOoxFAEBj+ZAwq9ns a7y79E8BMqzbvRp/JscU0TJeNMR02LNHxMeCyuAA3afLKVPkDGSm4vLpPIB61MxESS7y pc8gLhunYhLe4c0V3hOPEl16mnkJAmVjwQCTnPglDr5b59460eKBLjixv1TFwhxELHBe vK1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775578860; x=1776183660; 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=kiz55vj+8awSP0y4ws77MbN+nyFUARWGYjENcXenMtE=; b=FkFoKhjHdphPzPC86AKZZCxL2bMR7uARIl6k3yOuLwVFeUWyFzhiYosFZuf7jlzstM 4ex9TN9QaoNf839uov4it0iZXBUfX+aMQ8Y29+HUKSIgADd0QUFPJeBZdgVQifZYdM0N j33V4abPWPOF6ZTXe+6jt7bFU0ib9cmmQX4lB2uRNtHaZAMTMJzkF0gZSzdwtFtVlP4a AANNiuPSUXHoU7WonfhiqdGXVDQ7q7LN5fGo3p4B/9edhvBX04mmEtJ96sxlMvLoH6o0 HJTgNEOCQ/PwdAyaW+xeuiKc4mSVMd9P6fT/8B01SOGTuevkMZE2Twv86wgLwUDE733j 2BYw== X-Gm-Message-State: AOJu0Yz3Z9pRxxoeZZEFBhI9C/uFjht4YyedMqpLOAR/zRHRJzDPk1EL lE2tZPV7w6e3kw0gXqpIDA6rYhgHaQKIq6VS7JnUJuzSIiUojf7+Qy1YVmfV3ClYlxALqWwSeQb nmMRNu6hIwFOqfx8mYQBV159lR9yPtx4= X-Gm-Gg: AeBDietCurfdVs82pK1SsnA454b8PncENRaJlwbYoV56hrlM6eWEl1zZpzRrsv051Rt kZLqCo8L0SDZWBm3HkxpsZAg7KtOkyZggpJW/TjwsMMFxyvfHLxfLVBPJwd6lT9hBvXFdN7UHj3 VuRbELdyodwT+eu6v6qggAQvvXQ/1mwDNI8UoGVUOaSYz5V/Kn6mq+hZuxJG8odgL0kbxvxRFmy Hc8oHFFjbwbxsTrGhBar8ELvbBAfu+JH62YEVKWJvgcOaQ/aJel9iGuegz65RytVmgDj12IBKGd mGtQ/lYha/1N8vOVUN6Vbq7Ckv8vOjt0mvBovo4XvDn49blgsp7hPIGY2cnCeoSG3v/H X-Received: by 2002:a05:6820:1390:b0:67e:dab:7cf5 with SMTP id 006d021491bc7-6821dd6f147mr9976445eaf.17.1775578859683; Tue, 07 Apr 2026 09:20:59 -0700 (PDT) MIME-Version: 1.0 References: <9FF1E1E8-D9EE-43C5-ADFA-7AE94BA57159@yandex-team.ru> <3e670a40754bb687d163f21d82af96f059f3d472.camel@cybertec.at> <61724fbede15fd95ae29764037fbe71629a8f6d7.camel@cybertec.at> In-Reply-To: <61724fbede15fd95ae29764037fbe71629a8f6d7.camel@cybertec.at> From: Andrew Jackson Date: Tue, 7 Apr 2026 11:20:20 -0500 X-Gm-Features: AQROBzBX7Hg8tJOELKjJKZ1kkJv1F-D8KjjYHLivfTR41qAbhDQ9HrVZypXwBKI Message-ID: Subject: Re: Add ldapservice connection parameter To: Laurenz Albe Cc: pgsql-hackers , Roman Khapov , niushiji@gmail.com, Andrey Borodin Content-Type: multipart/mixed; boundary="00000000000034224e064ee12b8c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000034224e064ee12b8c Content-Type: text/plain; charset="UTF-8" Hi, > Oh, I didn't look at that. If ldapServiceLookup() already appends a > meaningful error message, there is no need to add another one. Updated patch to only append an error message when rc from ldapServiceLookup is 2. This is the only non zero return of ldapServiceLookup that does not append an error message because it is meant to signal that the lookup was not successful but we can continue parsing the service file. In this case I think it makes sense to raise an error and append an error message. Also increased the specificity of the test assertions. > That change does not really belong to the patch, but is alright by me. I added this because now that there is a connection parameter that begins with ldap it could cause a confusing error message if the user tries to use ldapserviceurl in a service file and are then given an error message that roughly says 'invalid LDAP URL ".*" scheme must be ldap://'. Thanks, Andrew Jackson --00000000000034224e064ee12b8c Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0001-Add-ldapservice-connection-parameter.patch" Content-Disposition: attachment; filename="v7-0001-Add-ldapservice-connection-parameter.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnoth6n30 RnJvbSAwNTRmNzU4NjBjMGQ2Y2U2NDkzZDY2OWE1YTQ2NmQzZDExMzRkMzMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgSmFja3NvbiA8YWphY2tzb25AZHJ3aG9sZGluZ3Mu Y29tPgpEYXRlOiBTYXQsIDI4IE1hciAyMDI2IDIzOjI5OjQ4IC0wNTAwClN1YmplY3Q6IFtQQVRD SF0gQWRkIGxkYXBzZXJ2aWNlIGNvbm5lY3Rpb24gcGFyYW1ldGVyCgpDdXJyZW50bHkgdGhlcmUg ZXhpc3RzLCBvbmx5IGluIHBnX3NlcnZpY2UuY29uZiwgdGhlIGFiaWxpdHkgdG8gbG9vawp1cCBj b25uZWN0aW9uIHBhcmFtZXRlcnMgZnJvbSBhIGNlbnRyYWxpemVkIExEQVAgc2VydmVyLiBUaGlz IHBhdGNoCmV4cGFuZHMgdGhlIHVzYWJpbGl0eSBvZiB0aGlzIGJlIGFsbG93aW5nIGl0IHRvIGJl IHNwZWNpZmllZCBkaXJlY3RseSBpbgphIGNvbm5lY3Rpb24gc3RyaW5nIGluc3RlYWQgb2Ygb25s eSBpbiBhIHBnX3NlcnZpY2UuY29uZiBmaWxlLgoKVGhpcyBhZGRzIHRoZSBQR0xEQVBTRVJWSUNF IGVudiB2YXIgdGhhdCBwcm92aWRlcyBhbiBlbnZ2YXIgaW50ZXJmYWNlCnRvIHRoaXMgZnVuY3Rp b25hbGl0eS4gQWxzbyB0aGUgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBtb3ZlZCB0bwpjb25uaW5m b19hZGRfZGVmYXVsdHMgYWZ0ZXIgcmV2aWV3LiBBbHNvIDIgdGVzdHMgaGF2ZSBiZWVuIGFkZGVk LiBPbmUgdG8KdmFsaWRhdGUgdGhlIGVudiB2YXIgZnVuY3Rpb25hbGl0eSBhbmQgb25lIHRvIHZh bGlkYXRlIHRoYXQgdGhpcwpwYXJhbWV0ZXIgaXMgaWdub3JlZCB3aGVuIHVzZWQgaW4gcGdfc2Vy dmljZS5jb25mIGZpbGVzLgoKLS0gdjUgcGF0Y2ggY2hhbmdlcwpUaGlzIHBhdGNoIGNoYW5nZXMg dGhlIHJlbGV2YW50IG5hbWluZyBmcm9tIGxkYXBzZXJ2aWNlIHRvCmxkYXBzZXJ2aWNldXJsLiBJ IGFsc28gYWRkIGEgY29tbWVudCBhYm92ZSB0aGUgbmV3IGxkYXBzZXJ2aWNlbG9va3VwCmNhbGwg dGhhdCBleHBsYWlucyB0aGUgcmVhc29uaW5nIGZvciBpZ25vcmluZyBhbGwgbm9uIHplcm8gcmV0 dXJuIGNvZGVzLgpBbHNvIEkgaW5jcmVhc2UgdGhlIHZhbHVlIG9mIGRpc3BzaXplIGZvciBsZGFw c2VydmljZXVybCBmcm9tIDIwIHRvIDY0LgpJdCBjb3VsZCBiZSByZWFzb25hYmxlIHRvIGluY3Jl YXNlIGl0IHBhc3QgNjQsIHdhcyBvcmlnaW5hbGx5IHRoaW5raW5nCmFib3V0IGJ1bXBpbmcgaXQg dG8gMTAyNCBidXQgSSBhbSBub3Qgc3VyZSB3aGF0IHRoZXNlIHZhbHVlcyBhcmUgdXNlZApmb3Ig aW4gdGhlIGNvZGViYXNlIGFuZCB0aG91Z2h0IGl0IHdhcyBzYWZlciB0byBqdXN0IGJ1bXAgaXQg dG8gdGhlCmN1cnJlbnRseSBleGlzdGluZyBtYXggZm9yIGFueSBwYXJhbWV0ZXIuIE1vdmVzIHRo ZSBwbGFjZW1lbnQgb2YKbGRhcHNlcnZpY2V1cmwgdG8gYmVsb3cgdGhlIEdTUyBvcHRpb25zIGFu ZCBhZGRzIGEgY29tbWVudCBleHBsYWluaW5nCnRoYXQgdGhlIHBhcmFtZXRlciBpcyBleHBvc2Vk IGV2ZW4gaW4gbm9uIExEQVAgYnVpbGRzLiBUaGlzIHdhcyBkb25lIHRvCnJlZmxlY3Qgc2ltaWxh ciBjb21tZW50cyBpbiBHU1MvU1NMLCB0aG91Z2ggdGhpcyBjb21tZW50IGRvZXMgbm90IGV4aXN0 CmZvciB0aGUgbmV3IE9BVVRIIHBhcmFtZXRlcnMgc28gdGhpcyBtYXkgbm90IGhhdmUgYmVlbiBh IGdvb2QgY2hvaWNlLgpBbHNvIEFkZCBmaWxlbmFtZSB0YWdzIHRvIGZpbGVuYW1lIHJlZmVyZW5j ZSBpbiBkb2NzCgotLSB2NiBwYXRjaCBjaGFuZ2VzCgotIFVwZGF0ZWQgbGlicHEuc2dtbCB3aXRo IGFkZGl0aW9uYWwgdmVyYmlhZ2UgYXJvdW5kIGNvcm5lciBjYXNlcwogIGludGVyYWN0aW9ucyBi ZXR3ZWVuIGRpZmZlcmVudCBwYXJhbWV0ZXIgc2V0dGluZ3MsIGV0YwotIENoYW5nZWQgZXhpc3Rp bmcgZ3VhcmQgaW4gc2VydmljZSBmaWxlIHBhcnNlIGZyb20gImxkYXAiIHRvICJsZGFwOiIKICB0 byBhY2NvbW9kYXRlIG5ldyBjb25uZWN0aW9uIHBhcmFtZXRlciB0aGF0IGJlZ2luIHdpdGggImxk YXAiCi0gQWRkIGVycm9yIHJhaXNpbmcgZm9yIGxkYXBzZXJ2aWNldXJsIGZvdW5kIGR1cmluZyBw Z19zZXJ2aWNlLmNvbmYKICBwYXJzZQotIGFkZCBsaWJwcSBhcHBlbmQgZXJyb3IgbWVzc2FnZQot IEV4cGFuZGVkIHVuaXQgdGVzdHMKICAgIC0gQWRkZWQgNiBuZXcgTERBUCBlbnRyaWVzIGZvciBk aWZmZXJlbnQgdGVzdCBzY2VuYXJpb3MKICAgIC0gRW5zdXJlZCB0aGF0IHdlIGFyZSBhc3NlcnRp bmcgZXhwZWN0ZWRfc3Rkb3V0IGZvciBldmVyeSB0ZXN0CiAgICAtIEFkZGVkIHNldCBvZiB1bml0 IHRlc3RzIHRoYXQgY292ZXIgZXJyb3IgY29uZGl0aW9ucyBpbgogICAgICBsZGFwU2VydmljZUxv b2t1cCB0aGF0IGFyZSBjdXJyZW50bHkgbm90IHRlc3RlZCBpbiBwb3N0Z3JlcwogICAgICBjb2Rl YmFzZQogICAgLSBBZGRlZCA1IG5ldyB0ZXN0cyB0aGF0IGNvdmVyIGNvcm5lciBjYXNlcyBvZiBu ZXcgbGRhcHNlcnZpY2V1cmwKICAgICAgZnVuY3Rpb25hbGl0eQoKLS0gdjcgcGF0Y2ggY2hhbmdl cwoKQXBwZW5kZWQgZXJyb3IgbWVzc2FnZSB3aGVuIGxkYXBTZXJ2aWNlTG9va3VwIHJldHVybnMg MiBkdXJpbmcKbGRhcHNlcnZpY2V1cmwgbG9va3VwLiBJbiB0aGUgY29udGV4dCBvZiBwZ19zZXJ2 aWNlLmNvbmYgcGFyc2luZyByZXR1cm4KY29kZSAyIGlzIG9rYXkgYW5kIHNlcnZpY2UgZmlsZSBw YXJzaW5nIGNvbnRpbnVlcyBiZWNhdXNlIHRoZXJlIG1heSBiZSBhCmZhbGxiYWNrIExEQVAgVVJM LiBIZXJlIHRoZXJlIGlzIG5vIGZhbGxiYWNrIFVSTCBzbyByZXR1cm5pbmcgYW4gZXJyb3IKd2l0 aCBhbiBhcHByb3ByaWF0ZSBtZXNzYWdlIG1ha2VzIHNlbnNlLiBBZGRlZCBhZGRpdGlvbmFsIHRl c3QgY2FzZSBmb3IKdGhpcyBjb25kaXRpb24uIEFsc28gaW5jcmVhc2VkIHNwZWNpZmljaXR5IG9m IHRlc3RzIGJ5IHdyYXBwaW5nIGV4cGVjdGVkCnN0ZGVyci9zdGRvdXQgaW4gXiQsIGV4cGxpY2l0 bHkgc2hvd2luZyBtb3JlIHF1b3RhdGlvbnMsIGFuZCBhZGRpbmcKInBzcWw6IGVycm9yIgotLS0K IGRvYy9zcmMvc2dtbC9saWJwcS5zZ21sICAgICAgICAgICAgICAgICAgICAgICB8ICA0MyArKyst CiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMgICAgICAgICAgICAgfCAgNTQgKysr LQogc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggICAgICAgICAgICAgIHwgICAxICsK IC4uLi90LzAwM19sZGFwX2Nvbm5lY3Rpb25fcGFyYW1fbG9va3VwLnBsICAgICB8IDIzNCArKysr KysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMzI1IGluc2VydGlvbnMoKyksIDcgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvbGlicHEuc2dtbAppbmRleCA2ZGI4MjM4MDhmYy4uMDEzMDgzMjEwMjAgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21s CkBAIC0yMzUwLDYgKzIzNTAsMTkgQEAgcG9zdGdyZXNxbDovLyUyRnZhciUyRmxpYiUyRnBvc3Rn cmVzcWwvZGJuYW1lCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAor ICAgICA8dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1jb25uZWN0LWxkYXBzZXJ2aWNldXJsIiB4cmVm bGFiZWw9ImxkYXBzZXJ2aWNldXJsIj4KKyAgICAgIDx0ZXJtPjxsaXRlcmFsPmxkYXBzZXJ2aWNl dXJsPC9saXRlcmFsPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgVGhpcyBvcHRpb24gc3BlY2lmaWVzIGFuIExEQVAgcXVlcnkgdGhhdCBjYW4gYmUgdXNl ZCB0byByZWZlcmVuY2UgY29ubmVjdGlvbiBwYXJhbWV0ZXJzCisgICAgICAgIHN0b3JlZCBvbiBh biBMREFQIHNlcnZlci4gQW55IGNvbm5lY3Rpb24gcGFyYW1ldGVyIHRoYXQgaXMgbG9va2VkIHVw IGluIHRoaXMgd2F5IGlzCisgICAgICAgIG92ZXJyaWRkZW4gYnkgZXhwbGljaXRseSBuYW1lZCBj b25uZWN0aW9uIHBhcmFtZXRlcnMgb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBUaGlzCisgICAg ICAgIG9wdGlvbiBjYW5ub3QgYmUgc3BlY2lmaWVkIGluIGEgPGZpbGVuYW1lPnBnX3NlcnZpY2Uu Y29uZjwvZmlsZW5hbWU+IGZpbGUuIFRoaXMKKyAgICAgICAgZnVuY3Rpb25hbGl0eSBpcyBkZXNj cmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gPHhyZWYgbGlua2VuZD0ibGlicHEtbGRhcCIvPi4KKyAg ICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisK ICAgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtY29ubmVjdC10YXJnZXQtc2Vzc2lvbi1hdHRy cyIgeHJlZmxhYmVsPSJ0YXJnZXRfc2Vzc2lvbl9hdHRycyI+CiAgICAgICA8dGVybT48bGl0ZXJh bD50YXJnZXRfc2Vzc2lvbl9hdHRyczwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+ CkBAIC05MTcwLDYgKzkxODMsMTYgQEAgbXlFdmVudFByb2MoUEdFdmVudElkIGV2dElkLCB2b2lk ICpldnRJbmZvLCB2b2lkICpwYXNzVGhyb3VnaCkKICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0 ZW0+CiAKKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgPGluZGV4dGVybT4KKyAg ICAgICA8cHJpbWFyeT48ZW52YXI+UEdMREFQU0VSVklDRVVSTDwvZW52YXI+PC9wcmltYXJ5Pgor ICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8ZW52YXI+UEdMREFQU0VSVklDRVVSTDwvZW52YXI+ IGJlaGF2ZXMgdGhlIHNhbWUgYXMgdGhlCisgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1jb25u ZWN0LWxkYXBzZXJ2aWNldXJsIi8+IGNvbm5lY3Rpb24gcGFyYW1ldGVyLgorICAgICA8L3BhcmE+ CisgICAgPC9saXN0aXRlbT4KKwogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CiAgICAgICA8 aW5kZXh0ZXJtPgpAQCAtOTY1OSwxMiArOTY4MiwyMCBAQCB1c2VyPWFkbWluCiAgIDxwYXJhPgog ICAgTERBUCBjb25uZWN0aW9uIHBhcmFtZXRlciBsb29rdXAgdXNlcyB0aGUgY29ubmVjdGlvbiBz ZXJ2aWNlIGZpbGUKICAgIDxmaWxlbmFtZT5wZ19zZXJ2aWNlLmNvbmY8L2ZpbGVuYW1lPiAoc2Vl IDx4cmVmCi0gICBsaW5rZW5kPSJsaWJwcS1wZ3NlcnZpY2UiLz4pLiAgQSBsaW5lIGluIGEKLSAg IDxmaWxlbmFtZT5wZ19zZXJ2aWNlLmNvbmY8L2ZpbGVuYW1lPiBzdGFuemEgdGhhdCBzdGFydHMg d2l0aAotICAgPGxpdGVyYWw+bGRhcDovLzwvbGl0ZXJhbD4gd2lsbCBiZSByZWNvZ25pemVkIGFz IGFuIExEQVAgVVJMIGFuZCBhbgotICAgTERBUCBxdWVyeSB3aWxsIGJlIHBlcmZvcm1lZC4gVGhl IHJlc3VsdCBtdXN0IGJlIGEgbGlzdCBvZgotICAgPGxpdGVyYWw+a2V5d29yZCA9IHZhbHVlPC9s aXRlcmFsPiBwYWlycyB3aGljaCB3aWxsIGJlIHVzZWQgdG8gc2V0Ci0gICBjb25uZWN0aW9uIG9w dGlvbnMuICBUaGUgVVJMIG11c3QgY29uZm9ybSB0bworICAgbGlua2VuZD0ibGlicHEtcGdzZXJ2 aWNlIi8+KSBvciB0aGUKKyAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLWNvbm5lY3QtbGRhcHNlcnZp Y2V1cmwiLz4gY29ubmVjdGlvbiBwYXJhbWV0ZXIuCisgICBBIGxpbmUgaW4gYSA8ZmlsZW5hbWU+ cGdfc2VydmljZS5jb25mPC9maWxlbmFtZT4gc3RhbnphIHRoYXQgc3RhcnRzIHdpdGgKKyAgIDxs aXRlcmFsPmxkYXA6Ly88L2xpdGVyYWw+IG9yIGFuIGV4cGxpY2l0bHkgcHJvdmlkZWQKKyAgIDx4 cmVmIGxpbmtlbmQ9ImxpYnBxLWNvbm5lY3QtbGRhcHNlcnZpY2V1cmwiLz4gY29ubmVjdGlvbiBw YXJhbWV0ZXIKKyAgIHdpbGwgYmUgcmVjb2duaXplZCBhcyBhbiBMREFQIFVSTCBhbmQgYW4gTERB UCBxdWVyeSB3aWxsIGJlIHBlcmZvcm1lZC4KKyAgIFBsZWFzZSBub3RlIHRoYXQgaWYgYm90aCBt ZXRob2RzIGFyZSB1c2VkIHRoZSBpbiBjb25qdW5jdGlvbiBhbnkgcGFyYW1ldGVyCisgICBmb3Vu ZCB2aWEgPHhyZWYgbGlua2VuZD0ibGlicHEtY29ubmVjdC1sZGFwc2VydmljZXVybCIvPiB3aWxs IHRha2UgcHJlY2VkZW5jZQorICAgb3ZlciByZXN1bHRzIGZvdW5kIGluIHRoZSBsb29rdXAgZnJv bSB0aGUgTERBUCBVUkwgc3BlY2lmaWVkIGluCisgICA8ZmlsZW5hbWU+cGdfc2VydmljZS5jb25m PC9maWxlbmFtZT4uIEFsc28gcGxlYXNlIG5vdGUgdGhhdCBhbnkKKyAgIDx4cmVmIGxpbmtlbmQ9 ImxpYnBxLWNvbm5lY3QtbGRhcHNlcnZpY2V1cmwiLz4gdmFsdWUKKyAgIHRoYXQgaXMgZm91bmQg ZHVyaW5nIGFuIExEQVAgbG9va3VwIHdpbGwgYmUgaWdub3JlZC4gVGhlIHJlc3VsdCBvZiBhbiBM REFQIGxvb2t1cAorICAgbXVzdCBiZSBhIGxpc3Qgb2YgPGxpdGVyYWw+a2V5d29yZCA9IHZhbHVl PC9saXRlcmFsPiBwYWlycyB3aGljaCB3aWxsIGJlIHVzZWQgdG8KKyAgIHNldCBjb25uZWN0aW9u IG9wdGlvbnMuIFRoZSBVUkwgbXVzdCBjb25mb3JtIHRvCiAgICA8dWxpbmsgdXJsPSJodHRwczov L2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzE5NTkiPlJGQyAxOTU5PC91bGluaz4K ICAgIGFuZCBiZSBvZiB0aGUgZm9ybQogPHN5bm9wc2lzPgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVj dC5jCmluZGV4IGRiOWI0YzhlZGJmLi4wMWEwMTY1NTQ5MCAxMDA2NDQKLS0tIGEvc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNv bm5lY3QuYwpAQCAtMzc2LDYgKzM3NiwxNSBAQCBzdGF0aWMgY29uc3QgaW50ZXJuYWxQUWNvbm5p bmZvT3B0aW9uIFBRY29ubmluZm9PcHRpb25zW10gPSB7CiAJCSJHU1MtZGVsZWdhdGlvbiIsICIi LCAxLAogCW9mZnNldG9mKHN0cnVjdCBwZ19jb25uLCBnc3NkZWxlZ2F0aW9uKX0sCiAKKwkvKgor CSAqIEFzIHdpdGggU1NMIGFuZCBHU1Mgb3B0aW9ucywgbGRhcHNlcnZpY2V1cmwgaXMgZXhwb3Nl ZCBldmVuIGluIGJ1aWxkcworCSAqIHRoYXQgZG8gbm90IGhhdmUgc3VwcG9ydAorCSAqLworCXsi bGRhcHNlcnZpY2V1cmwiLCAiUEdMREFQU0VSVklDRVVSTCIsIE5VTEwsIE5VTEwsCisJCSJEYXRh YmFzZS1MREFQLVNlcnZpY2UiLCAiIiwgNjQsCisJb2Zmc2V0b2Yoc3RydWN0IHBnX2Nvbm4sIHBn bGRhcHNlcnZpY2V1cmwpfSwKKworCiAJeyJyZXBsaWNhdGlvbiIsIE5VTEwsIE5VTEwsIE5VTEws CiAJCSJSZXBsaWNhdGlvbiIsICJEIiwgNSwKIAlvZmZzZXRvZihzdHJ1Y3QgcGdfY29ubiwgcmVw bGljYXRpb24pfSwKQEAgLTYxMzQsNyArNjE0MywxMCBAQCBwYXJzZVNlcnZpY2VGaWxlKGNvbnN0 IGNoYXIgKnNlcnZpY2VGaWxlLAogCQkJCWJvb2wJCWZvdW5kX2tleXdvcmQ7CiAKICNpZmRlZiBV U0VfTERBUAotCQkJCWlmIChzdHJuY21wKGxpbmUsICJsZGFwIiwgNCkgPT0gMCkKKwkJCQkvKgor CQkJCSAqIElzIHRoaXMgYSBwb3RlbnRpYWwgbGRhcHVybCBvciBhIGxkYXBzZXJ2aWNldXJsIHBh cmFtZXRlcj8KKwkJCQkgKi8KKwkJCQlpZiAoc3RybmNtcChsaW5lLCAibGRhcDoiLCA1KSA9PSAw KQogCQkJCXsKIAkJCQkJaW50CQkJcmMgPSBsZGFwU2VydmljZUxvb2t1cChsaW5lLCBvcHRpb25z LCBlcnJvck1lc3NhZ2UpOwogCkBAIC02MTc2LDYgKzYxODgsMTYgQEAgcGFyc2VTZXJ2aWNlRmls ZShjb25zdCBjaGFyICpzZXJ2aWNlRmlsZSwKIAkJCQkJZ290byBleGl0OwogCQkJCX0KIAorCQkJ CWlmIChzdHJjbXAoa2V5LCAibGRhcHNlcnZpY2V1cmwiKSA9PSAwKQorCQkJCXsKKwkJCQkJbGli cHFfYXBwZW5kX2Vycm9yKGVycm9yTWVzc2FnZSwKKwkJCQkJCQkJCSAgICJsZGFwc2VydmljZXVy bCBwYXJhbWV0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHNlcnZpY2UgZmlsZSBcIiVzXCIsIGxp bmUgJWQiLAorCQkJCQkJCQkJICAgc2VydmljZUZpbGUsCisJCQkJCQkJCQkgICBsaW5lbnIpOwor CQkJCQlyZXN1bHQgPSAzOworCQkJCQlnb3RvIGV4aXQ7CisJCQkJfQorCiAJCQkJaWYgKHN0cmNt cChrZXksICJzZXJ2aWNlZmlsZSIpID09IDApCiAJCQkJewogCQkJCQlsaWJwcV9hcHBlbmRfZXJy b3IoZXJyb3JNZXNzYWdlLApAQCAtNjcyNiw2ICs2NzQ4LDM2IEBAIGNvbm5pbmZvX2FkZF9kZWZh dWx0cyhQUWNvbm5pbmZvT3B0aW9uICpvcHRpb25zLCBQUUV4cEJ1ZmZlciBlcnJvck1lc3NhZ2Up CiAJUFFjb25uaW5mb09wdGlvbiAqc3NsbW9kZV9kZWZhdWx0ID0gTlVMTCwKIAkJCSAgICpzc2xy b290Y2VydCA9IE5VTEw7CiAJY2hhcgkgICAqdG1wOworI2lmZGVmIFVTRV9MREFQCisJaW50IHJj OworCWNvbnN0IGNoYXIgKmxkYXBzZXJ2aWNldXJsID0gY29ubmluZm9fZ2V0dmFsKG9wdGlvbnMs ICJsZGFwc2VydmljZXVybCIpOworCisJaWYgKGxkYXBzZXJ2aWNldXJsID09IE5VTEwpCisJCWxk YXBzZXJ2aWNldXJsID0gZ2V0ZW52KCJQR0xEQVBTRVJWSUNFVVJMIik7CisKKwlpZiAobGRhcHNl cnZpY2V1cmwgIT0gTlVMTCkKKwl7CisKKwkJLyoKKwkJICogbGRhcFNlcnZpY2VMb29rdXAgaGFz IDQgcG90ZW50aWFsIHJldHVybiB2YWx1ZXMuIFdlIG9ubHkgY2FyZSBoZXJlCisJCSAqIGlmIGl0 IHN1Y2NlZWRlZCwgaWYgaXQgZmFpbGVkIHdlIGRvbnQgY2FyZSB3aHksIHJldHVybiBmYWlsdXJl LgorCQkgKi8KKwkJaWYgKChyYyA9IGxkYXBTZXJ2aWNlTG9va3VwKGxkYXBzZXJ2aWNldXJsLCBv cHRpb25zLCBlcnJvck1lc3NhZ2UpKSAhPSAwKXsKKworCQkJLyoKKwkJCSAqIGxkYXBTZXJ2aWNl TG9va3VwID09IDIgaXMgdGhlIG9ubHkgcmV0dXJuIGNvZGUgZm9yIGxpYnBxX2FwcGVuZF9lcnJv cgorCQkJICogdGhhdCBkb2VzIG5vdCBhcHBlbmQgZXJyb3IgYmVjYXVzZSB3aGVuIHVzZWQgaW4g cGdfc2VydmljZS5jb25mIGl0IGlzCisJCQkgKiBhbGxvd2VkIHRvIGZhbGxiYWNrIHRvIGFkZGl0 aW9uYWwgVVJMcyB3aXRob3V0IGZhaWxpbmcuCisJCQkgKi8KKwkJCWlmIChyYyA9PSAyKQorCQkJ CWxpYnBxX2FwcGVuZF9lcnJvcihlcnJvck1lc3NhZ2UsCisJCQkJCQkgICAgICAgICAgICJjb25u ZWN0aW9uIGNvdWxkIG5vdCBiZSBlc3RhYmxpc2hlZCB0byBsZGFwc2VydmljZXVybDogXCIlc1wi IiwKKwkJCQkJCQkJICAgbGRhcHNlcnZpY2V1cmwpOworCisJCQlyZXR1cm4gZmFsc2U7CisJCX0K Kwl9CisjZW5kaWYKIAogCS8qCiAJICogSWYgdGhlcmUncyBhIHNlcnZpY2Ugc3BlYywgdXNlIGl0 IHRvIG9idGFpbiBhbnkgbm90LWV4cGxpY2l0bHktZ2l2ZW4KZGlmZiAtLWdpdCBhL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2xpYnBxLWludC5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50 LmgKaW5kZXggYmQ3ZWI1OWY1ZjguLmY4YjEwNjM1ZDQxIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJm YWNlcy9saWJwcS9saWJwcS1pbnQuaAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1p bnQuaApAQCAtMzkyLDYgKzM5Miw3IEBAIHN0cnVjdCBwZ19jb25uCiAJY2hhcgkgICAqcGdzZXJ2 aWNlOwkJLyogUG9zdGdyZXMgc2VydmljZSwgaWYgYW55ICovCiAJY2hhcgkgICAqcGdzZXJ2aWNl ZmlsZTsJLyogcGF0aCB0byBhIHNlcnZpY2UgZmlsZSBjb250YWluaW5nCiAJCQkJCQkJCSAqIHNl cnZpY2UocykgKi8KKwljaGFyCSAgICpwZ2xkYXBzZXJ2aWNldXJsOwkvKiBQb3N0Z3JlcyBMREFQ IHNlcnZpY2UgVVJMLCBpZiBhbnkgKi8KIAljaGFyCSAgICpwZ3VzZXI7CQkJLyogUG9zdGdyZXMg dXNlcm5hbWUgYW5kIHBhc3N3b3JkLCBpZiBhbnkgKi8KIAljaGFyCSAgICpwZ3Bhc3M7CiAJY2hh cgkgICAqcGdwYXNzZmlsZTsJCS8qIHBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgcGFzc3dvcmQo cykgKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xkYXAvdC8wMDNfbGRhcF9jb25uZWN0aW9uX3Bh cmFtX2xvb2t1cC5wbCBiL3NyYy90ZXN0L2xkYXAvdC8wMDNfbGRhcF9jb25uZWN0aW9uX3BhcmFt X2xvb2t1cC5wbAppbmRleCAzNTlmYzdhOTk4YS4uY2U2YWEzMzk5MmUgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L2xkYXAvdC8wMDNfbGRhcF9jb25uZWN0aW9uX3BhcmFtX2xvb2t1cC5wbAorKysgYi9z cmMvdGVzdC9sZGFwL3QvMDAzX2xkYXBfY29ubmVjdGlvbl9wYXJhbV9sb29rdXAucGwKQEAgLTU2 LDYgKzU2LDg1IEBAIGNoYW5nZXR5cGU6YWRkCiBvYmplY3RjbGFzczp0b3AKIG9iamVjdGNsYXNz OmRldmljZQogY246bXlkYXRhYmFzZQorZGVzY3JpcHRpb246YXBwbGljYXRpb25fbmFtZT1hcHBs aWNhdGlvbl9uYW1lX2Zyb21fbGRhcAorZGVzY3JpcHRpb246aG9zdD19IC4gJG5vZGUtPmhvc3Qg LiBxcXsKK2Rlc2NyaXB0aW9uOnBvcnQ9fSAuICRub2RlLT5wb3J0IC4gcXF7Cit9KTsKKworIyBW YWxpZCBsZGFwIHJlY29yZCB3aXRoIGdlcW8gYW5kIGFwcGxpY2F0aW9uX25hbWUgc2V0CisjIHRv IHRlc3QgaG93IHBhcmFtZXRlcnMgYXJlIHNldC9vdmVycmlkZGVuCithcHBlbmRfdG9fZmlsZSgK KwkkbGRpZl92YWxpZCwgcXF7Cit2ZXJzaW9uOjEKK2RuOmNuPW15ZGF0YWJhc2VnZXFvb2ZmLGRj PWV4YW1wbGUsZGM9bmV0CitjaGFuZ2V0eXBlOmFkZAorb2JqZWN0Y2xhc3M6dG9wCitvYmplY3Rj bGFzczpkZXZpY2UKK2NuOm15ZGF0YWJhc2VnZXFvb2ZmCitkZXNjcmlwdGlvbjphcHBsaWNhdGlv bl9uYW1lPWFwcGxpY2F0aW9uX25hbWVfZnJvbV9kYXRhYmFzZTIKK2Rlc2NyaXB0aW9uOm9wdGlv bnM9LS1nZXFvPW9mZgorfSk7CisKKyMgSW52YWxpZCBMREFQIHJlY29yZCB3aXRoIG5vIGVudHJp ZXMKK2FwcGVuZF90b19maWxlKAorCSRsZGlmX3ZhbGlkLCBxcXsKK3ZlcnNpb246MQorZG46Y249 bm9lbnRyaWVzLGRjPWV4YW1wbGUsZGM9bmV0CitjaGFuZ2V0eXBlOmFkZAorb2JqZWN0Y2xhc3M6 dG9wCitvYmplY3RjbGFzczpkZXZpY2UKK2NuOm5vZW50cmllcworfSk7CisKKyMgSW52YWxpZCBM REFQIHJlY29yZCB3aXRoIG1pc3NpbmcgPSBhZnRlciBhcHBsaWNhdGlvbl9uYW1lCithcHBlbmRf dG9fZmlsZSgKKwkkbGRpZl92YWxpZCwgcXF7Cit2ZXJzaW9uOjEKK2RuOmNuPW1pc3NpbmdlcXVh bCxkYz1leGFtcGxlLGRjPW5ldAorY2hhbmdldHlwZTphZGQKK29iamVjdGNsYXNzOnRvcAorb2Jq ZWN0Y2xhc3M6ZGV2aWNlCitjbjptaXNzaW5nZXF1YWwKK2Rlc2NyaXB0aW9uOmFwcGxpY2F0aW9u X25hbWUKK30pOworCisjIEludmFsaWQgTERBUCByZWNvcmQgd2l0aCBub24gZXhpc3RlbnQgcGFy YW1ldGVyCithcHBlbmRfdG9fZmlsZSgKKwkkbGRpZl92YWxpZCwgcXF7Cit2ZXJzaW9uOjEKK2Ru OmNuPWludmFsaWRjb25ub3B0aW9uc2VydmljZSxkYz1leGFtcGxlLGRjPW5ldAorY2hhbmdldHlw ZTphZGQKK29iamVjdGNsYXNzOnRvcAorb2JqZWN0Y2xhc3M6ZGV2aWNlCitjbjppbnZhbGlkY29u bm9wdGlvbnNlcnZpY2UKK2Rlc2NyaXB0aW9uOmludmFsaWRjb25ub3B0aW9uPTEKK30pOworCisj IEludmFsaWQgTERBUCByZWNvcmQgd2l0aCBtaXNzaW5nID0gaW4gb3B0aW9ucyBwYXJhbWV0ZXIK K2FwcGVuZF90b19maWxlKAorCSRsZGlmX3ZhbGlkLCBxcXsKK3ZlcnNpb246MQorZG46Y249cGdv cHRpb25taXNzaW5nZXF1YWxzLGRjPWV4YW1wbGUsZGM9bmV0CitjaGFuZ2V0eXBlOmFkZAorb2Jq ZWN0Y2xhc3M6dG9wCitvYmplY3RjbGFzczpkZXZpY2UKK2NuOnBnb3B0aW9ubWlzc2luZ2VxdWFs cworZGVzY3JpcHRpb246b3B0aW9ucz0tLWdlcW8gb2ZmCitkZXNjcmlwdGlvbjpob3N0PX0gLiAk bm9kZS0+aG9zdCAuIHFxeworZGVzY3JpcHRpb246cG9ydD19IC4gJG5vZGUtPnBvcnQgLiBxcXsK K30pOworCisjIFZhbGlkIExEQVAgcmVjb3JkIHdoaWNoIGhhcyBsZGFwc2VydmljZXVybCBwYXJh bWV0ZXIKK2FwcGVuZF90b19maWxlKAorCSRsZGlmX3ZhbGlkLCBxcXsKK3ZlcnNpb246MQorZG46 Y249bGRhcHVybGlubGRhcHVybCxkYz1leGFtcGxlLGRjPW5ldAorY2hhbmdldHlwZTphZGQKK29i amVjdGNsYXNzOnRvcAorb2JqZWN0Y2xhc3M6ZGV2aWNlCitjbjpsZGFwdXJsaW5sZGFwdXJsCitk ZXNjcmlwdGlvbjpsZGFwc2VydmljZXVybD1sZGFwOi8vbG9jYWxob3N0OjEyMzQvZGM9ZXhhbXBs ZSxkYz1uZXQ/ZGVzY3JpcHRpb24/b25lPyhjbj1teWRhdGFiYXNlZ2Vxb29mZikKK2Rlc2NyaXB0 aW9uOmFwcGxpY2F0aW9uX25hbWU9YXBwbGljYXRpb25fbmFtZV9mcm9tX2xkYXB1cmxpbmxkYXB1 cmwKIGRlc2NyaXB0aW9uOmhvc3Q9fSAuICRub2RlLT5ob3N0IC4gcXF7CiBkZXNjcmlwdGlvbjpw b3J0PX0gLiAkbm9kZS0+cG9ydCAuIHFxewogfSk7CkBAIC04MCw2ICsxNTksMTYgQEAgYXBwZW5k X3RvX2ZpbGUoCiAJJHNydmZpbGVfdmFsaWQsIHFxewogW215X3Nydl0KIGxkYXA6Ly9sb2NhbGhv c3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlvbj9vbmU/KGNuPW15ZGF0 YWJhc2UpCisKK1tteV9zcnZfZ2Vxb19vZmZdCitsZGFwOi8vbG9jYWxob3N0OiRsZGFwX3BvcnQv ZGM9ZXhhbXBsZSxkYz1uZXQ/ZGVzY3JpcHRpb24/b25lPyhjbj1teWRhdGFiYXNlZ2Vxb29mZikK KworW2xkYXBzZXJ2aWNldXJsX2luX3BnX3NlcnZpY2VfdGVzdF0KK2xkYXBzZXJ2aWNldXJsPWxk YXA6Ly9sb2NhbGhvc3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlvbj9v bmU/KGNuPW15ZGF0YWJhc2UpCisKK1twZ19zZXJ2aWNlX2FwcGxpY2F0aW9uX25hbWVdCithcHBs aWNhdGlvbl9uYW1lPXBnX3NlcnZpY2UKK29wdGlvbnM9LS1nZXFvPW9mZgogfSk7CiAKICMgRmls ZSBkZWZpbmVkIHdpdGggbm8gY29udGVudHMsIHVzZWQgYXMgZGVmYXVsdCB2YWx1ZSBmb3IKQEAg LTE5NiwxMCArMjg1LDE1NSBAQCBsb2NhbCAkRU5We1BHU0VSVklDRUZJTEV9ID0gIiRzcnZmaWxl X2VtcHR5IjsKIAkJZXhwZWN0ZWRfc3Rkb3V0ID0+CiAJCSAgcXIvZGVmaW5pdGlvbiBvZiBzZXJ2 aWNlICJ1bmRlZmluZWQtc2VydmljZSIgbm90IGZvdW5kLyk7CiAKKwlkZWxldGUgJEVOVntQR1NF UlZJQ0V9OworCisJdW5saW5rKCRzcnZmaWxlX2RlZmF1bHQpOworfQorCisjIFRlc3QgbGRhcHNl cnZpY2V1cmwgY29ubmVjdGlvbiBwYXJhbWV0ZXIKK3sKKwkjIENyZWF0ZSBjb3B5IG9mIHZhbGlk IGZpbGUKKwlteSAkc3J2ZmlsZV9kZWZhdWx0ID0gIiR0ZC9wZ19zZXJ2aWNlLmNvbmYiOworCWNv cHkoJHNydmZpbGVfdmFsaWQsICRzcnZmaWxlX2RlZmF1bHQpOworCisJJGR1bW15X25vZGUtPmNv bm5lY3Rfb2soCisJCSJsZGFwc2VydmljZXVybD1sZGFwOi8vbG9jYWxob3N0OiRsZGFwX3BvcnQv ZGM9ZXhhbXBsZSxkYz1uZXQ/ZGVzY3JpcHRpb24/b25lPyhjbj1teWRhdGFiYXNlKSIsCisJCSdj b25uZWN0aW9uIHdpdGggY29ycmVjdCAibGRhcHNlcnZpY2V1cmwiJywKKwkJc3FsID0+ICJTRUxF Q1QgJ2Nvbm5lY3QyXzQnLCBjdXJyZW50X3NldHRpbmcoJ2FwcGxpY2F0aW9uX25hbWUnKSIsCisJ CWV4cGVjdGVkX3N0ZG91dCA9PiBxci9eY29ubmVjdDJfNFx8YXBwbGljYXRpb25fbmFtZV9mcm9t X2xkYXAkLyk7CisKKwkkZHVtbXlfbm9kZS0+Y29ubmVjdF9mYWlscygKKwkJImxkYXBzZXJ2aWNl dXJsPWxkYXA6Ly9sb2NhbGhvc3Q6MTIzNC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlvbj9v bmU/KGNuPW15ZGF0YWJhc2UpIiwKKwkJJ2Nvbm5lY3Rpb24gd2l0aCBjb3JyZWN0ICJsZGFwc2Vy dmljZXVybCInLAorCQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvXnBzcWw6IGVycm9yOiBjb25uZWN0 aW9uIGNvdWxkIG5vdCBiZSBlc3RhYmxpc2hlZCB0byBsZGFwc2VydmljZXVybDogXCIuKlwiJC8p OworCisJJGR1bW15X25vZGUtPmNvbm5lY3Rfb2soCisJCSJwb3N0Z3JlczovLz9sZGFwc2Vydmlj ZXVybD1sZGFwJTNBJTJGJTJGbG9jYWxob3N0JTNBJGxkYXBfcG9ydCUyRmRjJTNEZXhhbXBsZSUy Q2RjJTNEbmV0JTNGZGVzY3JpcHRpb24lM0ZvbmUlM0YlMjhjbiUzRG15ZGF0YWJhc2UlMjkiLAor CQknY29ubmVjdGlvbiB3aXRoIGNvcnJlY3QgImxkYXBzZXJ2aWNldXJsIiBpbiB1cmkgZm9ybWF0 JywKKwkJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3QyXzUnLCBjdXJyZW50X3NldHRpbmcoJ2FwcGxp Y2F0aW9uX25hbWUnKSIsCisJCWV4cGVjdGVkX3N0ZG91dCA9PiBxci9eY29ubmVjdDJfNVx8YXBw bGljYXRpb25fbmFtZV9mcm9tX2xkYXAkLyk7CisKKwlsb2NhbCAkRU5We1BHTERBUFNFUlZJQ0VV Ukx9ID0gImxkYXA6Ly9sb2NhbGhvc3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD9kZXNj cmlwdGlvbj9vbmU/KGNuPW15ZGF0YWJhc2UpIjsKKworCSRkdW1teV9ub2RlLT5jb25uZWN0X29r KAorCQkiIiwKKwkJJ2Nvbm5lY3Rpb24gd2l0aCBjb3JyZWN0ICJsZGFwc2VydmljZXVybCIgcHJv dmlkZWQgYnkgZW52IHZhcicsCisJCXNxbCA9PiAiU0VMRUNUICdjb25uZWN0Ml82JywgY3VycmVu dF9zZXR0aW5nKCdhcHBsaWNhdGlvbl9uYW1lJykiLAorCQlleHBlY3RlZF9zdGRvdXQgPT4gcXIv XmNvbm5lY3QyXzZcfGFwcGxpY2F0aW9uX25hbWVfZnJvbV9sZGFwJC8pOworCisJJGR1bW15X25v ZGUtPmNvbm5lY3RfZmFpbHMoCisJCSdsZGFwc2VydmljZXVybD1sZGFwOi8vbG9jYWxob3N0Omlu dmFsaWRwb3J0L2RjPWV4YW1wbGUsZGM9bmV0P2Rlc2NyaXB0aW9uP29uZT8oY249bXlkYXRhYmFz ZSknLAorCQknY29ubmVjdGlvbiBmYWlscyB3aXRoIGJlY2F1c2UgdmFsaWQgUEdMREFQU0VSVklD RVVSTCBlbnYgdmFyIG92ZXJyaWRkZW4gYnkgZXhwbGljaXQgcGFyYW1ldGVyIHdpdGggYmFkIHBv cnQnLAorCQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvXnBzcWw6IGVycm9yOiBpbnZhbGlkIExEQVAg VVJMIFwiLipcIjogaW52YWxpZCBwb3J0IG51bWJlciQvKTsKKworCWRlbGV0ZSAkRU5We1BHTERB UFNFUlZJQ0VVUkx9OworCisJJGR1bW15X25vZGUtPmNvbm5lY3Rfb2soCisJCSJsZGFwc2Vydmlj ZXVybD1sZGFwOi8vbG9jYWxob3N0OiRsZGFwX3BvcnQvZGM9ZXhhbXBsZSxkYz1uZXQ/ZGVzY3Jp cHRpb24/b25lPyhjbj1teWRhdGFiYXNlKSBhcHBsaWNhdGlvbl9uYW1lPWV4cGxpY2l0X3BhcmFt ZXRlciIsCisJCSdjb25uZWN0aW9uIHdpdGggY29ycmVjdCAibGRhcHNlcnZpY2UiIGJ1dCB3aXRo IGFwcGxpY2F0aW9uX25hbWUgb3ZlcnJpZGRlbiBieSBleHBsaWNpdCBjb25uZWN0aW9uIHBhcmFt ZXRlcicsCisJCXNxbCA9PiAiU0VMRUNUICdjb25uZWN0Ml83JywgY3VycmVudF9zZXR0aW5nKCdh cHBsaWNhdGlvbl9uYW1lJykiLAorCQlleHBlY3RlZF9zdGRvdXQgPT4gcXIvXmNvbm5lY3QyXzdc fGV4cGxpY2l0X3BhcmFtZXRlciQvKTsKKworCSRkdW1teV9ub2RlLT5jb25uZWN0X29rKAorCQki bGRhcHNlcnZpY2V1cmw9bGRhcDovL2xvY2FsaG9zdDokbGRhcF9wb3J0L2RjPWV4YW1wbGUsZGM9 bmV0P2Rlc2NyaXB0aW9uP29uZT8oY249bXlkYXRhYmFzZSkgc2VydmljZT1wZ19zZXJ2aWNlX2Fw cGxpY2F0aW9uX25hbWUiLAorCQknY29ubmVjdGlvbiB3aXRoIGNvcnJlY3QgImxkYXBzZXJ2aWNl IiBzdHJpbmcsIHNlcnZpY2UgZmlsZSBhcHBsaWNhdGlvbl9uYW1lIG92ZXJyaWRkZW4gYnkgbGRh cCwgZ2VxbyBvZmYgc2V0IGJ5IHNlcnZpY2UgZmlsZScsCisJCXNxbCA9PiAiU0VMRUNUICdjb25u ZWN0Ml84JywgY3VycmVudF9zZXR0aW5nKCdhcHBsaWNhdGlvbl9uYW1lJyksIGN1cnJlbnRfc2V0 dGluZygnZ2VxbycpOyIsCisJCWV4cGVjdGVkX3N0ZG91dCA9PiBxci9eY29ubmVjdDJfOFx8YXBw bGljYXRpb25fbmFtZV9mcm9tX2xkYXBcfG9mZiQvKTsKKworCSMgdGVzdCB0aGF0IGdlcW8gZ3Jh YmJlZCBmcm9tIHNlcnZpY2UgZmlsZSBzZXJ2aWNlIG15X3Nydl9nZXFvX29mZiB2aWEgTERBUCBs b29rdXAKKwkjIGNvbmZsaWN0aW5nIGFwcGxpY2F0aW9uIG5hbWVzIHByZXNlbnQgaW4gYm90aCBM REFQIHNlcnZpY2VzIHF1ZXJpZWQgKGxkYXBzZXJ2aWNldXJsIGFuZCBzZXJ2aWNlIGZpbGUpCisJ IyBhcHBsaWNhdGlvbiBuYW1lIGZyb20gc2VydmljZSBmaWxlIGlzIGlnbm9yZWQgYmVjYXVzZSBp dCBoYXMgYWxyZWFkeSBiZWVuIHNldCBieSBsZGFwc2VydmljZXVybCBsb29rdXAKKwkkZHVtbXlf bm9kZS0+Y29ubmVjdF9vaygKKwkJImxkYXBzZXJ2aWNldXJsPWxkYXA6Ly9sb2NhbGhvc3Q6JGxk YXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlvbj9vbmU/KGNuPW15ZGF0YWJhc2Up IHNlcnZpY2U9bXlfc3J2X2dlcW9fb2ZmIiwKKwkJJ2Nvbm5lY3Rpb24gd2l0aCAyIExEQVAgbG9v a3VwcyAocGdfc2VydmljZS5jb25mIGFuZCBsZGFwc2VydmljZXVybCknLAorCQlzcWwgPT4gIlNF TEVDVCAnY29ubmVjdDJfOScsIGN1cnJlbnRfc2V0dGluZygnYXBwbGljYXRpb25fbmFtZScpLCBj dXJyZW50X3NldHRpbmcoJ2dlcW8nKTsiLAorCQlleHBlY3RlZF9zdGRvdXQgPT4gcXIvXmNvbm5l Y3QyXzlcfGFwcGxpY2F0aW9uX25hbWVfZnJvbV9sZGFwXHxvZmYkLyk7CisKKwkkZHVtbXlfbm9k ZS0+Y29ubmVjdF9mYWlscygKKwkJJ3NlcnZpY2U9bGRhcHNlcnZpY2V1cmxfaW5fcGdfc2Vydmlj ZV90ZXN0JywKKwkJJ2Nvbm5lY3Rpb24gZmFpbHMgd2l0aCBsZGFwc2VydmljZXVybCBzcGVjaWZp ZWQgaW4gcGdfc2VydmljZS5jb25mIGZpbGUnLAorCQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvXnBz cWw6IGVycm9yOiBsZGFwc2VydmljZXVybCBwYXJhbWV0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkIGlu IHNlcnZpY2UgZmlsZSAuKiwgbGluZSAuKiQvICk7CisKKwkkZHVtbXlfbm9kZS0+Y29ubmVjdF9v aygKKwkJImxkYXBzZXJ2aWNldXJsPWxkYXA6Ly9sb2NhbGhvc3Q6JGxkYXBfcG9ydC9kYz1leGFt cGxlLGRjPW5ldD9kZXNjcmlwdGlvbj9vbmU/KGNuPWxkYXB1cmxpbmxkYXB1cmwpIiwKKwkJJ2xk YXBzZXJ2aWNldXJsIHRoYXQgcG9pbnRzIHRvIGFub3RoZXIgbGRhcHNlcnZpY2V1cmwgd2lsbCBi ZSBpZ25vcmVkJywKKwkJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3QyXzEwJywgY3VycmVudF9zZXR0 aW5nKCdhcHBsaWNhdGlvbl9uYW1lJyksIGN1cnJlbnRfc2V0dGluZygnZ2VxbycpOyIsCisJCWV4 cGVjdGVkX3N0ZG91dD0+IHFyL15jb25uZWN0Ml8xMFx8YXBwbGljYXRpb25fbmFtZV9mcm9tX2xk YXB1cmxpbmxkYXB1cmxcfG9uJC8pOworCiAJIyBSZW1vdmUgZGVmYXVsdCBwZ19zZXJ2aWNlLmNv bmYuCiAJdW5saW5rKCRzcnZmaWxlX2RlZmF1bHQpOwogfQogCisjIG5lZ2F0aXZlIHRlc3RzIGZv ciBsb2dpYyBpbnNpZGUgbGRhcFNlcnZpY2VMb29rdXAKK3sKKworCSRkdW1teV9ub2RlLT5jb25u ZWN0X2ZhaWxzKAorCQkibGRhcHNlcnZpY2V1cmw9aHR0cDovL2xvY2FsaG9zdDokbGRhcF9wb3J0 L2RjPWV4YW1wbGUsZGM9bmV0P2Rlc2NyaXB0aW9uP29uZT8oY249bXlkYXRhYmFzZSkiLAorCQkn bGRhcHNlcnZpY2V1cmwgdGhhdCBkb2VzbnQgYmVnaW4gd2l0aCBsZGFwOi8vIGZhaWxzJywKKwkJ ZXhwZWN0ZWRfc3RkZXJyID0+IHFyL15wc3FsOiBlcnJvcjogaW52YWxpZCBMREFQIFVSTCBcIi4q XCI6IHNjaGVtZSBtdXN0IGJlIGxkYXA6XC9cLyQvKTsKKworCSRkdW1teV9ub2RlLT5jb25uZWN0 X2ZhaWxzKAorCQkibGRhcHNlcnZpY2V1cmw9bGRhcDovL2xvY2FsaG9zdDokbGRhcF9wb3J0LyIs CisJCSdsZGFwc2VydmljZXVybCB0aGF0IGRvZXMgbm90IHNwZWNpZnkgZGlzdGluZ3Vpc2hlZCBu YW1lJywKKwkJZXhwZWN0ZWRfc3RkZXJyID0+IHFyL15wc3FsOiBlcnJvcjogaW52YWxpZCBMREFQ IFVSTCBcIi4qXCI6IG1pc3NpbmcgZGlzdGluZ3Vpc2hlZCBuYW1lJC8pOworCisJJGR1bW15X25v ZGUtPmNvbm5lY3RfZmFpbHMoCisJCSJsZGFwc2VydmljZXVybD1sZGFwOi8vbG9jYWxob3N0OiRs ZGFwX3BvcnQvZGM9ZXhhbXBsZSxkYz1uZXQ/IiwKKwkJJ2xkYXBzZXJ2aWNldXJsIHRoYXQgZG9l cyBub3Qgc3BlY2lmeSBhdHRyaWJ1dGUnLAorCQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvXnBzcWw6 IGVycm9yOiBpbnZhbGlkIExEQVAgVVJMIFwiLipcIjogbXVzdCBoYXZlIGV4YWN0bHkgb25lIGF0 dHJpYnV0ZSQvKTsKKworCSRkdW1teV9ub2RlLT5jb25uZWN0X2ZhaWxzKAorCQkibGRhcHNlcnZp Y2V1cmw9bGRhcDovL2xvY2FsaG9zdDokbGRhcF9wb3J0L2RjPWV4YW1wbGUsZGM9bmV0P2Rlc2Ny aXB0aW9uIiwKKwkJJ2xkYXBzZXJ2aWNldXJsIHRoYXQgZG9lcyBub3QgcHJvdmlkZSBzY29wZScs CisJCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9ecHNxbDogZXJyb3I6IGludmFsaWQgTERBUCBVUkwg XCIuKlwiOiBtdXN0IGhhdmUgc2VhcmNoIHNjb3BlIFwoYmFzZVwvb25lXC9zdWJcKSQvKTsKKwor CSRkdW1teV9ub2RlLT5jb25uZWN0X2ZhaWxzKAorCQkibGRhcHNlcnZpY2V1cmw9bGRhcDovL2xv Y2FsaG9zdDokbGRhcF9wb3J0L2RjPWV4YW1wbGUsZGM9bmV0P2Rlc2NyaXB0aW9uP29uZSIsCisJ CSdsZGFwc2VydmljZXVybCB0aGF0IGRvZXMgbm90IHNwZWNpZnkgZmlsdGVyJywKKwkJZXhwZWN0 ZWRfc3RkZXJyID0+IHFyL15wc3FsOiBlcnJvcjogaW52YWxpZCBMREFQIFVSTCBcIi4qXCI6IG5v IGZpbHRlciQvKTsKKworCSRkdW1teV9ub2RlLT5jb25uZWN0X2ZhaWxzKAorCQkibGRhcHNlcnZp Y2V1cmw9bGRhcDovL2xvY2FsaG9zdDppbnZhbGlkcG9ydG51bWJlci9kYz1leGFtcGxlLGRjPW5l dD9kZXNjcmlwdGlvbj9vbmU/KGNuPW15ZGF0YWJhc2UpIiwKKwkJJ2xkYXBzZXJ2aWNldXJsIGNv bnRhaW5zIGludmFsaWQgcG9ydCBudW1iZXInLAorCQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvXnBz cWw6IGVycm9yOiBpbnZhbGlkIExEQVAgVVJMIFwiLipcIjogaW52YWxpZCBwb3J0IG51bWJlciQv KTsKKworCSRkdW1teV9ub2RlLT5jb25uZWN0X2ZhaWxzKAorCQkibGRhcHNlcnZpY2V1cmw9bGRh cDovL2xvY2FsaG9zdDokbGRhcF9wb3J0L2RjPWV4YW1wbGUsZGM9bmV0P2Rlc2NyaXB0aW9uLGRu P29uZT8oY249bXlkYXRhYmFzZSkiLAorCQknbGRhcHNlcnZpY2V1cmwgdGhhdCBjb250YWlucyAy IGF0dHJpYnV0ZXMnLAorCQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvXnBzcWw6IGVycm9yOiBpbnZh bGlkIExEQVAgVVJMIFwiLipcIjogbXVzdCBoYXZlIGV4YWN0bHkgb25lIGF0dHJpYnV0ZSQvKTsK KworCSRkdW1teV9ub2RlLT5jb25uZWN0X2ZhaWxzKAorCQkibGRhcHNlcnZpY2V1cmw9bGRhcDov L2xvY2FsaG9zdDokbGRhcF9wb3J0L2RjPWV4YW1wbGUsZGM9bmV0P2Rlc2NyaXB0aW9uP2ludmFs aWRzY29wZT8oY249bXlkYXRhYmFzZSkiLAorCQknbGRhcHNlcnZpY2V1cmwgdGhhdCBkb2VzIG5v dCBwcm92aWRlIHZhbGlkIHNjb3BlJywKKwkJZXhwZWN0ZWRfc3RkZXJyID0+IHFyL15wc3FsOiBl cnJvcjogaW52YWxpZCBMREFQIFVSTCBcIi4qXCI6IG11c3QgaGF2ZSBzZWFyY2ggc2NvcGUgXChi YXNlXC9vbmVcL3N1YlwpJC8pOworCisJJGR1bW15X25vZGUtPmNvbm5lY3RfZmFpbHMoCisJCSJs ZGFwc2VydmljZXVybD1sZGFwOi8vbG9jYWxob3N0OiRsZGFwX3BvcnQvZGM9ZXhhbXBsZSxkYz1u ZXQ/ZGVzY3JpcHRpb24/c3ViPyhjbj0qKSIsCisJCSdsZGFwc2VydmljZXVybCB0aGF0IGNvbnRh aW5zIG1vcmUgdGhhbiBvbmUgZW50cnknLAorCQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvXnBzcWw6 IGVycm9yOiBtb3JlIHRoYW4gb25lIGVudHJ5IGZvdW5kIG9uIExEQVAgbG9va3VwJC8pOworCisJ JGR1bW15X25vZGUtPmNvbm5lY3RfZmFpbHMoCisJCSJsZGFwc2VydmljZXVybD1sZGFwOi8vbG9j YWxob3N0OiRsZGFwX3BvcnQvZGM9ZXhhbXBsZSxkYz1uZXQ/ZGVzY3JpcHRpb24/b25lPyhjbj1k b2Vzbm90ZXhpc3QpIiwKKwkJJ2xkYXBzZXJ2aWNldXJsIHdpdGggbm8gbGRhcCBlbnRyeScsCisJ CWV4cGVjdGVkX3N0ZGVyciA9PiBxci9ecHNxbDogZXJyb3I6IG5vIGVudHJ5IGZvdW5kIG9uIExE QVAgbG9va3VwJC8pOworCisJJGR1bW15X25vZGUtPmNvbm5lY3RfZmFpbHMoCisJCSJsZGFwc2Vy dmljZXVybD1sZGFwOi8vbG9jYWxob3N0OiRsZGFwX3BvcnQvZGM9ZXhhbXBsZSxkYz1uZXQ/ZGVz Y3JpcHRpb24/b25lPyhjbj1ub2VudHJpZXMpIiwKKwkJJ2xkYXBzZXJ2aWNldXJsIHRoYXQgaGFz IG5vIGNvbm5lY3Rpb24gYXR0cmlidXRlcycsCisJCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9ecHNx bDogZXJyb3I6IGF0dHJpYnV0ZSBoYXMgbm8gdmFsdWVzIG9uIExEQVAgbG9va3VwJC8pOworCisJ JGR1bW15X25vZGUtPmNvbm5lY3RfZmFpbHMoCisJCSJsZGFwc2VydmljZXVybD1sZGFwOi8vbG9j YWxob3N0OiRsZGFwX3BvcnQvZGM9ZXhhbXBsZSxkYz1uZXQ/ZGVzY3JpcHRpb24/b25lPyhjbj1t aXNzaW5nZXF1YWwpIiwKKwkJJ2xkYXBzZXJ2aWNlc3VybCB0aGF0IGhhcyBtaXNzaW5nIGVxdWFs IHNpZ24nLAorCQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvXnBzcWw6IGVycm9yOiBtaXNzaW5nIFwi XD1cIiBhZnRlciBcImFwcGxpY2F0aW9uX25hbWVcblwiIGluIGNvbm5lY3Rpb24gaW5mbyBzdHJp bmckLyk7CisKKwkkZHVtbXlfbm9kZS0+Y29ubmVjdF9mYWlscygKKwkJImxkYXBzZXJ2aWNldXJs PWxkYXA6Ly9sb2NhbGhvc3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlv bj9vbmU/KGNuPWludmFsaWRjb25ub3B0aW9uc2VydmljZSkiLAorCQknbGRhcHNlcnZpY2V1cmwg dGhhdCBjb250YWlucyBub25leGlzdGVudCBjb25uZWN0aW9uIG9wdGlvbicsCisJCWV4cGVjdGVk X3N0ZGVyciA9PiBxci9ecHNxbDogZXJyb3I6IGludmFsaWQgY29ubmVjdGlvbiBvcHRpb24gXCJp bnZhbGlkY29ubm9wdGlvblwiJC8pOworCit9CisKICRub2RlLT50ZWFyZG93bl9ub2RlOwogCiBk b25lX3Rlc3RpbmcoKTsKLS0gCjIuNTEuMgoK --00000000000034224e064ee12b8c--