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 1wAVqT-0002pc-2g for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Apr 2026 16:33:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wAVpS-000cie-2n for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Apr 2026 16:32:35 +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 1wAVpS-000ciV-1Q for pgsql-hackers@lists.postgresql.org; Wed, 08 Apr 2026 16:32:35 +0000 Received: from mail-oo1-xc34.google.com ([2607:f8b0:4864:20::c34]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wAVpQ-0000000026L-41IC for pgsql-hackers@postgresql.org; Wed, 08 Apr 2026 16:32:35 +0000 Received: by mail-oo1-xc34.google.com with SMTP id 006d021491bc7-68481c9e067so8396eaf.0 for ; Wed, 08 Apr 2026 09:32:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775665951; cv=none; d=google.com; s=arc-20240605; b=GH6G/NZqKpBs0OnCoeETouvTcBFa2BHJmw0/ob88BzfQn0cKfYhU7seVzuWEcJJ85S QFvG6Dtovh5td6qHPjzcrb41VxpCo7gvClEtNqey6A8oo0HIri50Ec9cpDXocpHt+pGM qDLrWUBbZQQWy1Sza9RA34XWuiVzG+97XtFKijoTJVC1f2cx6Sk5CzS//AnHZvxpiISJ F28TXnnx/lwju/GfmGSeb35jEol8vkySnUC0JpFuuk5N/1ylfQ4/7DHBC/7PEHVMOIOc HbzSG5cQZeSZrEXDQkMqLQnkYqbT/c5H4rIUcEfOdZUSf6ml+K9WX94moVgn6SBdr0/h 1UNA== 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=L4She9e8NPMTaI0ug7Iv4ALZSUrLt1fb9UU7vch8lbg=; fh=JK5wJYF8fbqezIPKhLw0zPloaSDihhH2ajNi/rqZY6A=; b=Hr5EphsqFSgzws+BJepYF7s+cHur/PlbUhfyQqqBQe95RpD6RiL0Lh131HWW27in/P TMk2KxzYP/6ihJVr2x8zlyEcdp2cG8oJPTinE0knkiGxto9kBiBANfwh4ejwNU1scJ8R Xt0tX2kpdl63XeCsssne8yq+K/OzwbdAsjkDlgcAjbP98ET7Xv1LDk6znk+N1CuGNdaH HrPMzNnojgEf2I/vsIMXdWQkUA89PIwqk3m2BxiKIHfAy05D86dbLG9XYzlzYQdJUpt4 /yVCAorK2QDoiPyAz6KUNbS+qlSh39AMP+3c/FgBiFkHk53iW3i8rGxhCpBX3HfdKSIR 54ng==; 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=1775665951; x=1776270751; 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=L4She9e8NPMTaI0ug7Iv4ALZSUrLt1fb9UU7vch8lbg=; b=OYtEvjXGAuyJJ5IDS4tozYwbYAeb6VCvCbR8AmzRgyF7deFVURWyhC1VbRwloRbNW4 feKSkUl1GWAIyex6IMU26jdLF7zUmljeHnn1FMCwUoOCUYPEE9PWQAl7ZDB8lvEDnRFJ qLX2chArm6JOejkoePo3NEqD8fwsIf/hAH+edmWBZLAZOLpDtt7rP/sJl3OxsH+KXCzo kuptI5NSCONl8V8H6RtY4BIY5VJj9VnqBdHyceJQLwqPtc3GFUgWav/rJIpTeX9i4Edo MntbcQbJFw/W3y7BijIjAfOJcPY/hz1d/X1uw+zykWjKfdFJam+o5zXM8bwf6tRw7q9/ hmpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775665951; x=1776270751; 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=L4She9e8NPMTaI0ug7Iv4ALZSUrLt1fb9UU7vch8lbg=; b=UTd4p68318VkY051zCniWSL5UATvDwDBMTRsKzY79jihNuQ0+Z+N07cYHY3XB7xron ibcJGEwAk03dyGHQBdBRWLAzxALzC0b3MPQJYsmqfaRATBcX0SJbLZd9wDGI2vACllz6 rnin66pVX9wi++QVMSmliyhJqLhjb7nlMtezrylzRahJElbZG2KvSW8/307ni3ooqXTy EodDOz/3GJCMxgxTnVUX3Fo7/jSTx8ip4bQDr7ZMPmnBS5dykVF+hppgy9YaE2C+JjJ8 g81kSyFZBRfcUYg+VEdilEarNWMYZh1IpyIkfiUdiOlsj46aEmLLvuaQJEFocsueB3KH ssCA== X-Forwarded-Encrypted: i=1; AJvYcCVmdljWCm58IsK/YLD5ElH3e4udXsIHV3DNYWxCme4bg2gAKHJ+qlYR9kmDtjLMTINmD/EDx43am88iYCGq@postgresql.org X-Gm-Message-State: AOJu0YxjUATbacnyRNEPvT9NytwnhFneBA8fV5LqAQ2/6RLTsP/yxXen DXcke5xOAQyhOqD3xBc2brEO7dZfMYiGzpCc3zbtSR+1D2imL2chMujPUxY3M1swvebT8WG/2M4 uufzq01xDt8OTEpstMkYfFQTDnfUGXXY= X-Gm-Gg: AeBDieunpZRuPxjBBbcRuqzv/tFUKN2NtoCVgC0NQFsUNbLMW8o92vcrTemkzNKSOoN K54JRAt68HBKsmK4Ea0msL+5t5hE4e5kvUsECAAH9bcybXc7bBt2Pm2Uup45FuDpk/XyPFrYzkZ eQGVSyjgoppGmBwfq575yK2V9aO1pQtS4mom6AEXl783d/cw3h/8EeVs3Ey9xxbD81Z/9UzLTIt vqA+57nJdKcJNRPx31qkQqNPQzjji9hGwK2T7fCYF07UGUE17+0Pp/GZekruFG49vBB+8558W7I u5dkHqCdcW6Egi+vTiZa6jCUs4N/BwGdYCVJtiuNn84Rm1G+lSKQTp7MbqkeDQwdHhDq X-Received: by 2002:a05:6820:1904:b0:67e:33a0:3dd0 with SMTP id 006d021491bc7-68a62903434mr140495eaf.32.1775665950770; Wed, 08 Apr 2026 09:32:30 -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: From: Andrew Jackson Date: Wed, 8 Apr 2026 11:31:54 -0500 X-Gm-Features: AQROBzBS00XPXzaaVS3OvULTZyZg2pxcSzhzUcASSScyyzohqxGS5C561sBRZI4 Message-ID: Subject: Re: Add ldapservice connection parameter To: Zsolt Parragi Cc: Laurenz Albe , pgsql-hackers , Roman Khapov , niushiji@gmail.com, Andrey Borodin Content-Type: multipart/mixed; boundary="0000000000003c649f064ef57248" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003c649f064ef57248 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thank you for catching that. Attached patch adds your comment verbatim and fixes the docs that previously contained incorrect info about the envvar override. I also added 2 new tests: one that validates that LDAP lookups override envvars and another that tests the stderr when parsing an LDAP entry with an unterminated quote in the option value. Additionally I made some minor changes in other comments and in tests. Thanks, Andrew Jackson On Wed, Apr 8, 2026 at 2:59=E2=80=AFAM Zsolt Parragi wrote: > > Hello > > + /* > + * ldapServiceLookup has 4 potential return values. We only care here > + * if it succeeded, if it failed we dont care why, return failure. > + */ > + if ((rc =3D ldapServiceLookup(ldapserviceurl, options, errorMessage)) != =3D 0){ > + > + /* > + * ldapServiceLookup =3D=3D 2 is the only return code for libpq_append_e= rror > + * that does not append error because when used in pg_service.conf it is > + * allowed to fallback to additional URLs without failing. > + */ > + if (rc =3D=3D 2) > + libpq_append_error(errorMessage, > + "connection could not be established to ldapserviceurl: \"%s= \"", > + ldapserviceurl); > + > + return false; > > This comment seems to be confusing to me, at first I thought that it > is the opposite of what the code below does, and then I realized that > no, it's just difficult to understand. > > Maybe something like: > > /* > * ldapServiceLookup() return code 2 means the LDAP server could > * not be contacted. Unlike other non-zero returns, it does not > * append an error message, because in pg_service.conf parsing > * the caller silently falls back to the next URL. Here there is > * no fallback, so we must provide an error message ourselves. > */ > > + This option specifies an LDAP query that can be used to > reference connection parameters > + stored on an LDAP server. Any connection parameter that is > looked up in this way is > + overridden by explicitly named connection parameters or > environment variables. This > > Is the environment variable part true? ldapServiceLookup is now at > line 6765, environment variables are handled later at 6794 in > conninfo_add_defaults, so it is later, but it also has a NULL check in > it. If a value is already set in ldapServiceLookup, the environment > variable loop later won't override it. --0000000000003c649f064ef57248 Content-Type: text/x-patch; charset="US-ASCII"; name="v8-0001-Add-ldapservice-connection-parameter.patch" Content-Disposition: attachment; filename="v8-0001-Add-ldapservice-connection-parameter.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnq9gizb0 RnJvbSA5ODYyNWIzMzNhMWFlMjFhMjhjNWFkM2ZlYzFjM2I0NmNkMTVkY2Y0IE1vbiBTZXAgMTcg 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 bHkgc2hvd2luZyBtb3JlIHF1b3RhdGlvbnMsIGFuZCBhZGRpbmcKInBzcWw6IGVycm9yIgoKdjgK Ci0gQ29ycmVjdGVkIGRvY3VtZW50YXRpb24gdG8gc3BlY2lmeSB0aGF0IGVudnZhcnMgZG8gbm90 IGluIGZhY3QKICBvdmVycmlkZSBwYXJhbWV0ZXJzIGxvb2tlZCB1cCBmcm9tIGxkYXAKLSBGaXhl ZCBjb25mdXNpbmcgY29tbWVudCBhYm92ZSBsaWJwcV9hcHBlbmRfZXJyb3IgYWZ0ZXIgbGRhcFNl cnZpY2VMb29rdXAKLSBBZGRlZCB1bml0IHRlc3QgdG8gdmFsaWRhdGUgbG9naWMgb2YgbGRhcCBs b29rdXAgb3ZlcnJpZGluZyBFTlZWQVIKLSBBZGRlZCB1bml0IHRlc3QgcmVwbGljYXRpbmcgdW50 ZXJtaW5hdGVkIHF1b3RlIHBhcnNpbmcgb2YgdmFsdWUgaW4gTERBUAogIHBhcmFtZXRlciBsb29r dXAKLSBSZW1vdmVkIHVudXNlZCBsZGFwIGVudHJ5IGluIHRlc3RpbmcKLSBjaGFuZ2VkIGFwcGxp Y2F0aW9uX25hbWUgdmFsdWVzIGZvciBjb25zaXN0ZW5jeS9jbGFyaXR5IGluIHRlc3RpbmcKLS0t CiBkb2Mvc3JjL3NnbWwvbGlicHEuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgfCAgNDQgKysr LQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jICAgICAgICAgICAgIHwgIDU2ICsr Ky0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oICAgICAgICAgICAgICB8ICAgMSAr CiAuLi4vdC8wMDNfbGRhcF9jb25uZWN0aW9uX3BhcmFtX2xvb2t1cC5wbCAgICAgfCAyNDYgKysr KysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDM0MCBpbnNlcnRpb25zKCspLCA3IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2xpYnBxLnNnbWwKaW5kZXggNmRiODIzODA4ZmMuLjFhZjA2ZTAwYmJlIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbGlicHEuc2dt bApAQCAtMjM1MCw2ICsyMzUwLDIwIEBAIHBvc3RncmVzcWw6Ly8lMkZ2YXIlMkZsaWIlMkZwb3N0 Z3Jlc3FsL2RibmFtZQogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAK KyAgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtY29ubmVjdC1sZGFwc2VydmljZXVybCIgeHJl ZmxhYmVsPSJsZGFwc2VydmljZXVybCI+CisgICAgICA8dGVybT48bGl0ZXJhbD5sZGFwc2Vydmlj ZXVybDwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+Cisg ICAgICAgIFRoaXMgb3B0aW9uIHNwZWNpZmllcyBhbiBMREFQIHF1ZXJ5IHRoYXQgY2FuIGJlIHVz ZWQgdG8gcmVmZXJlbmNlIGNvbm5lY3Rpb24gcGFyYW1ldGVycworICAgICAgICBzdG9yZWQgb24g YW4gTERBUCBzZXJ2ZXIuIEFueSBjb25uZWN0aW9uIHBhcmFtZXRlciB0aGF0IGlzIGxvb2tlZCB1 cCBpbiB0aGlzIHdheSBpcworICAgICAgICBvdmVycmlkZGVuIGJ5IGV4cGxpY2l0bHkgbmFtZWQg Y29ubmVjdGlvbiBwYXJhbWV0ZXJzLiBQbGVhc2Ugbm90ZSB0aGF0IGVudmlyb25tZW50CisgICAg ICAgIHZhcmlhYmxlcyBwYXNzZWQgdG8gbGlicHEgd2lsbCBiZSBvdmVycmlkZGVuIGJ5IHZhbHVl cyBmb3VuZCBkdXJpbmcgdGhlIGxkYXAgbG9va3VwLiBUaGlzCisgICAgICAgIG9wdGlvbiBjYW5u b3QgYmUgc3BlY2lmaWVkIGluIGEgPGZpbGVuYW1lPnBnX3NlcnZpY2UuY29uZjwvZmlsZW5hbWU+ IGZpbGUuIFRoaXMKKyAgICAgICAgZnVuY3Rpb25hbGl0eSBpcyBkZXNjcmliZWQgaW4gbW9yZSBk ZXRhaWwgaW4gPHhyZWYgbGlua2VuZD0ibGlicHEtbGRhcCIvPi4KKyAgICAgICAgPC9wYXJhPgor ICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3Rl bnRyeSBpZD0ibGlicHEtY29ubmVjdC10YXJnZXQtc2Vzc2lvbi1hdHRycyIgeHJlZmxhYmVsPSJ0 YXJnZXRfc2Vzc2lvbl9hdHRycyI+CiAgICAgICA8dGVybT48bGl0ZXJhbD50YXJnZXRfc2Vzc2lv bl9hdHRyczwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CkBAIC05MTcwLDYgKzkx ODQsMTYgQEAgbXlFdmVudFByb2MoUEdFdmVudElkIGV2dElkLCB2b2lkICpldnRJbmZvLCB2b2lk ICpwYXNzVGhyb3VnaCkKICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAKKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48 ZW52YXI+UEdMREFQU0VSVklDRVVSTDwvZW52YXI+PC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRl cm0+CisgICAgICA8ZW52YXI+UEdMREFQU0VSVklDRVVSTDwvZW52YXI+IGJlaGF2ZXMgdGhlIHNh bWUgYXMgdGhlCisgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1jb25uZWN0LWxkYXBzZXJ2aWNl dXJsIi8+IGNvbm5lY3Rpb24gcGFyYW1ldGVyLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRl bT4KKwogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CiAgICAgICA8aW5kZXh0ZXJtPgpAQCAt OTY1OSwxMiArOTY4MywyMCBAQCB1c2VyPWFkbWluCiAgIDxwYXJhPgogICAgTERBUCBjb25uZWN0 aW9uIHBhcmFtZXRlciBsb29rdXAgdXNlcyB0aGUgY29ubmVjdGlvbiBzZXJ2aWNlIGZpbGUKICAg IDxmaWxlbmFtZT5wZ19zZXJ2aWNlLmNvbmY8L2ZpbGVuYW1lPiAoc2VlIDx4cmVmCi0gICBsaW5r ZW5kPSJsaWJwcS1wZ3NlcnZpY2UiLz4pLiAgQSBsaW5lIGluIGEKLSAgIDxmaWxlbmFtZT5wZ19z ZXJ2aWNlLmNvbmY8L2ZpbGVuYW1lPiBzdGFuemEgdGhhdCBzdGFydHMgd2l0aAotICAgPGxpdGVy YWw+bGRhcDovLzwvbGl0ZXJhbD4gd2lsbCBiZSByZWNvZ25pemVkIGFzIGFuIExEQVAgVVJMIGFu ZCBhbgotICAgTERBUCBxdWVyeSB3aWxsIGJlIHBlcmZvcm1lZC4gVGhlIHJlc3VsdCBtdXN0IGJl IGEgbGlzdCBvZgotICAgPGxpdGVyYWw+a2V5d29yZCA9IHZhbHVlPC9saXRlcmFsPiBwYWlycyB3 aGljaCB3aWxsIGJlIHVzZWQgdG8gc2V0Ci0gICBjb25uZWN0aW9uIG9wdGlvbnMuICBUaGUgVVJM IG11c3QgY29uZm9ybSB0bworICAgbGlua2VuZD0ibGlicHEtcGdzZXJ2aWNlIi8+KSBvciB0aGUK KyAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLWNvbm5lY3QtbGRhcHNlcnZpY2V1cmwiLz4gY29ubmVj dGlvbiBwYXJhbWV0ZXIuCisgICBBIGxpbmUgaW4gYSA8ZmlsZW5hbWU+cGdfc2VydmljZS5jb25m PC9maWxlbmFtZT4gc3RhbnphIHRoYXQgc3RhcnRzIHdpdGgKKyAgIDxsaXRlcmFsPmxkYXA6Ly88 L2xpdGVyYWw+IG9yIGFuIGV4cGxpY2l0bHkgcHJvdmlkZWQKKyAgIDx4cmVmIGxpbmtlbmQ9Imxp YnBxLWNvbm5lY3QtbGRhcHNlcnZpY2V1cmwiLz4gY29ubmVjdGlvbiBwYXJhbWV0ZXIKKyAgIHdp bGwgYmUgcmVjb2duaXplZCBhcyBhbiBMREFQIFVSTCBhbmQgYW4gTERBUCBxdWVyeSB3aWxsIGJl IHBlcmZvcm1lZC4KKyAgIFBsZWFzZSBub3RlIHRoYXQgaWYgYm90aCBtZXRob2RzIGFyZSB1c2Vk IHRoZSBpbiBjb25qdW5jdGlvbiBhbnkgcGFyYW1ldGVyCisgICBmb3VuZCB2aWEgPHhyZWYgbGlu a2VuZD0ibGlicHEtY29ubmVjdC1sZGFwc2VydmljZXVybCIvPiB3aWxsIHRha2UgcHJlY2VkZW5j ZQorICAgb3ZlciByZXN1bHRzIGZvdW5kIGluIHRoZSBsb29rdXAgZnJvbSB0aGUgTERBUCBVUkwg c3BlY2lmaWVkIGluCisgICA8ZmlsZW5hbWU+cGdfc2VydmljZS5jb25mPC9maWxlbmFtZT4uIEFs c28gcGxlYXNlIG5vdGUgdGhhdCBhbnkKKyAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLWNvbm5lY3Qt bGRhcHNlcnZpY2V1cmwiLz4gdmFsdWUKKyAgIHRoYXQgaXMgZm91bmQgZHVyaW5nIGFuIExEQVAg bG9va3VwIHdpbGwgYmUgaWdub3JlZC4gVGhlIHJlc3VsdCBvZiBhbiBMREFQIGxvb2t1cAorICAg bXVzdCBiZSBhIGxpc3Qgb2YgPGxpdGVyYWw+a2V5d29yZCA9IHZhbHVlPC9saXRlcmFsPiBwYWly cyB3aGljaCB3aWxsIGJlIHVzZWQgdG8KKyAgIHNldCBjb25uZWN0aW9uIG9wdGlvbnMuIFRoZSBV UkwgbXVzdCBjb25mb3JtIHRvCiAgICA8dWxpbmsgdXJsPSJodHRwczovL2RhdGF0cmFja2VyLmll dGYub3JnL2RvYy9odG1sL3JmYzE5NTkiPlJGQyAxOTU5PC91bGluaz4KICAgIGFuZCBiZSBvZiB0 aGUgZm9ybQogPHN5bm9wc2lzPgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt Y29ubmVjdC5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCmluZGV4IGRiOWI0 YzhlZGJmLi5jMzI5ZGE3MGMyYSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt Y29ubmVjdC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYwpAQCAtMzc2 LDYgKzM3NiwxNSBAQCBzdGF0aWMgY29uc3QgaW50ZXJuYWxQUWNvbm5pbmZvT3B0aW9uIFBRY29u bmluZm9PcHRpb25zW10gPSB7CiAJCSJHU1MtZGVsZWdhdGlvbiIsICIiLCAxLAogCW9mZnNldG9m KHN0cnVjdCBwZ19jb25uLCBnc3NkZWxlZ2F0aW9uKX0sCiAKKwkvKgorCSAqIEFzIHdpdGggU1NM IGFuZCBHU1Mgb3B0aW9ucywgbGRhcHNlcnZpY2V1cmwgaXMgZXhwb3NlZCBldmVuIGluIGJ1aWxk cworCSAqIHRoYXQgZG8gbm90IGhhdmUgc3VwcG9ydAorCSAqLworCXsibGRhcHNlcnZpY2V1cmwi LCAiUEdMREFQU0VSVklDRVVSTCIsIE5VTEwsIE5VTEwsCisJCSJEYXRhYmFzZS1MREFQLVNlcnZp Y2UiLCAiIiwgNjQsCisJb2Zmc2V0b2Yoc3RydWN0IHBnX2Nvbm4sIHBnbGRhcHNlcnZpY2V1cmwp fSwKKworCiAJeyJyZXBsaWNhdGlvbiIsIE5VTEwsIE5VTEwsIE5VTEwsCiAJCSJSZXBsaWNhdGlv biIsICJEIiwgNSwKIAlvZmZzZXRvZihzdHJ1Y3QgcGdfY29ubiwgcmVwbGljYXRpb24pfSwKQEAg LTYxMzQsNyArNjE0MywxMCBAQCBwYXJzZVNlcnZpY2VGaWxlKGNvbnN0IGNoYXIgKnNlcnZpY2VG aWxlLAogCQkJCWJvb2wJCWZvdW5kX2tleXdvcmQ7CiAKICNpZmRlZiBVU0VfTERBUAotCQkJCWlm IChzdHJuY21wKGxpbmUsICJsZGFwIiwgNCkgPT0gMCkKKwkJCQkvKgorCQkJCSAqIElzIHRoaXMg YSBwb3RlbnRpYWwgTERBUCBVUkwgb3IgYW4gbGRhcHNlcnZpY2V1cmwgcGFyYW1ldGVyPworCQkJ CSAqLworCQkJCWlmIChzdHJuY21wKGxpbmUsICJsZGFwOiIsIDUpID09IDApCiAJCQkJewogCQkJ CQlpbnQJCQlyYyA9IGxkYXBTZXJ2aWNlTG9va3VwKGxpbmUsIG9wdGlvbnMsIGVycm9yTWVzc2Fn ZSk7CiAKQEAgLTYxNzYsNiArNjE4OCwxNiBAQCBwYXJzZVNlcnZpY2VGaWxlKGNvbnN0IGNoYXIg KnNlcnZpY2VGaWxlLAogCQkJCQlnb3RvIGV4aXQ7CiAJCQkJfQogCisJCQkJaWYgKHN0cmNtcChr ZXksICJsZGFwc2VydmljZXVybCIpID09IDApCisJCQkJeworCQkJCQlsaWJwcV9hcHBlbmRfZXJy b3IoZXJyb3JNZXNzYWdlLAorCQkJCQkJCQkJICAgImxkYXBzZXJ2aWNldXJsIHBhcmFtZXRlcnMg YXJlIG5vdCBzdXBwb3J0ZWQgaW4gc2VydmljZSBmaWxlIFwiJXNcIiwgbGluZSAlZCIsCisJCQkJ CQkJCQkgICBzZXJ2aWNlRmlsZSwKKwkJCQkJCQkJCSAgIGxpbmVucik7CisJCQkJCXJlc3VsdCA9 IDM7CisJCQkJCWdvdG8gZXhpdDsKKwkJCQl9CisKIAkJCQlpZiAoc3RyY21wKGtleSwgInNlcnZp Y2VmaWxlIikgPT0gMCkKIAkJCQl7CiAJCQkJCWxpYnBxX2FwcGVuZF9lcnJvcihlcnJvck1lc3Nh Z2UsCkBAIC02NzI2LDYgKzY3NDgsMzggQEAgY29ubmluZm9fYWRkX2RlZmF1bHRzKFBRY29ubmlu Zm9PcHRpb24gKm9wdGlvbnMsIFBRRXhwQnVmZmVyIGVycm9yTWVzc2FnZSkKIAlQUWNvbm5pbmZv T3B0aW9uICpzc2xtb2RlX2RlZmF1bHQgPSBOVUxMLAogCQkJICAgKnNzbHJvb3RjZXJ0ID0gTlVM TDsKIAljaGFyCSAgICp0bXA7CisjaWZkZWYgVVNFX0xEQVAKKwlpbnQgcmM7CisJY29uc3QgY2hh ciAqbGRhcHNlcnZpY2V1cmwgPSBjb25uaW5mb19nZXR2YWwob3B0aW9ucywgImxkYXBzZXJ2aWNl dXJsIik7CisKKwlpZiAobGRhcHNlcnZpY2V1cmwgPT0gTlVMTCkKKwkJbGRhcHNlcnZpY2V1cmwg PSBnZXRlbnYoIlBHTERBUFNFUlZJQ0VVUkwiKTsKKworCWlmIChsZGFwc2VydmljZXVybCAhPSBO VUxMKQorCXsKKworCQkvKgorCQkgKiBsZGFwU2VydmljZUxvb2t1cCBoYXMgNCBwb3RlbnRpYWwg cmV0dXJuIHZhbHVlcy4gV2Ugb25seSBjYXJlIGhlcmUKKwkJICogaWYgaXQgc3VjY2VlZGVkLCBp ZiBpdCBmYWlsZWQgd2UgZG9udCBjYXJlIHdoeSwgcmV0dXJuIGZhaWx1cmUuCisJCSAqLworCQlp ZiAoKHJjID0gbGRhcFNlcnZpY2VMb29rdXAobGRhcHNlcnZpY2V1cmwsIG9wdGlvbnMsIGVycm9y TWVzc2FnZSkpICE9IDApeworCisJCQkvKgorCQkJKiBsZGFwU2VydmljZUxvb2t1cCgpIHJldHVy biBjb2RlIDIgbWVhbnMgdGhlIExEQVAgc2VydmVyIGNvdWxkCisJCQkqIG5vdCBiZSBjb250YWN0 ZWQuIFVubGlrZSBvdGhlciBub24temVybyByZXR1cm5zLCBpdCBkb2VzIG5vdAorCQkJKiBhcHBl bmQgYW4gZXJyb3IgbWVzc2FnZSwgYmVjYXVzZSBpbiBwZ19zZXJ2aWNlLmNvbmYgcGFyc2luZwor CQkJKiB0aGUgY2FsbGVyIHNpbGVudGx5IGZhbGxzIGJhY2sgdG8gdGhlIG5leHQgVVJMLiBIZXJl IHRoZXJlIGlzCisJCQkqIG5vIGZhbGxiYWNrLCBzbyB3ZSBtdXN0IHByb3ZpZGUgYW4gZXJyb3Ig bWVzc2FnZSBvdXJzZWx2ZXMuCisJCQkqLworCQkJaWYgKHJjID09IDIpCisJCQkJbGlicHFfYXBw ZW5kX2Vycm9yKGVycm9yTWVzc2FnZSwKKwkJCQkJCSAgICAgICAgICAgImNvbm5lY3Rpb24gY291 bGQgbm90IGJlIGVzdGFibGlzaGVkIHRvIGxkYXBzZXJ2aWNldXJsOiBcIiVzXCIiLAorCQkJCQkJ CQkgICBsZGFwc2VydmljZXVybCk7CisKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KKyNlbmRp ZgogCiAJLyoKIAkgKiBJZiB0aGVyZSdzIGEgc2VydmljZSBzcGVjLCB1c2UgaXQgdG8gb2J0YWlu IGFueSBub3QtZXhwbGljaXRseS1naXZlbgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGli cHEvbGlicHEtaW50LmggYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaAppbmRleCBi ZDdlYjU5ZjVmOC4uZjhiMTA2MzVkNDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2xpYnBxLWludC5oCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oCkBAIC0z OTIsNiArMzkyLDcgQEAgc3RydWN0IHBnX2Nvbm4KIAljaGFyCSAgICpwZ3NlcnZpY2U7CQkvKiBQ b3N0Z3JlcyBzZXJ2aWNlLCBpZiBhbnkgKi8KIAljaGFyCSAgICpwZ3NlcnZpY2VmaWxlOwkvKiBw YXRoIHRvIGEgc2VydmljZSBmaWxlIGNvbnRhaW5pbmcKIAkJCQkJCQkJICogc2VydmljZShzKSAq LworCWNoYXIJICAgKnBnbGRhcHNlcnZpY2V1cmw7CS8qIFBvc3RncmVzIExEQVAgc2VydmljZSBV UkwsIGlmIGFueSAqLwogCWNoYXIJICAgKnBndXNlcjsJCQkvKiBQb3N0Z3JlcyB1c2VybmFtZSBh bmQgcGFzc3dvcmQsIGlmIGFueSAqLwogCWNoYXIJICAgKnBncGFzczsKIAljaGFyCSAgICpwZ3Bh c3NmaWxlOwkJLyogcGF0aCB0byBhIGZpbGUgY29udGFpbmluZyBwYXNzd29yZChzKSAqLwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbGRhcC90LzAwM19sZGFwX2Nvbm5lY3Rpb25fcGFyYW1fbG9va3Vw LnBsIGIvc3JjL3Rlc3QvbGRhcC90LzAwM19sZGFwX2Nvbm5lY3Rpb25fcGFyYW1fbG9va3VwLnBs CmluZGV4IDM1OWZjN2E5OThhLi44ZjMzYTQxZmJlMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbGRh cC90LzAwM19sZGFwX2Nvbm5lY3Rpb25fcGFyYW1fbG9va3VwLnBsCisrKyBiL3NyYy90ZXN0L2xk YXAvdC8wMDNfbGRhcF9jb25uZWN0aW9uX3BhcmFtX2xvb2t1cC5wbApAQCAtNTYsMTAgKzU2LDg3 IEBAIGNoYW5nZXR5cGU6YWRkCiBvYmplY3RjbGFzczp0b3AKIG9iamVjdGNsYXNzOmRldmljZQog Y246bXlkYXRhYmFzZQorZGVzY3JpcHRpb246YXBwbGljYXRpb25fbmFtZT1hcHBuYW1lX2Zyb21f bGRhcF9teWRhdGFiYXNlCiBkZXNjcmlwdGlvbjpob3N0PX0gLiAkbm9kZS0+aG9zdCAuIHFxewog ZGVzY3JpcHRpb246cG9ydD19IC4gJG5vZGUtPnBvcnQgLiBxcXsKIH0pOwogCisjIFZhbGlkIGxk YXAgcmVjb3JkIHdpdGggZ2VxbyBhbmQgYXBwbGljYXRpb25fbmFtZSBzZXQKKyMgdG8gdGVzdCBo b3cgcGFyYW1ldGVycyBhcmUgc2V0L292ZXJyaWRkZW4KK2FwcGVuZF90b19maWxlKAorCSRsZGlm X3ZhbGlkLCBxcXsKK3ZlcnNpb246MQorZG46Y249bXlkYXRhYmFzZWdlcW9vZmYsZGM9ZXhhbXBs ZSxkYz1uZXQKK2NoYW5nZXR5cGU6YWRkCitvYmplY3RjbGFzczp0b3AKK29iamVjdGNsYXNzOmRl dmljZQorY246bXlkYXRhYmFzZWdlcW9vZmYKK2Rlc2NyaXB0aW9uOmFwcGxpY2F0aW9uX25hbWU9 YXBwbmFtZV9mcm9tX2xkYXBfbG9va3VwX2dlcW9fb2ZmCitkZXNjcmlwdGlvbjpvcHRpb25zPS0t Z2Vxbz1vZmYKK30pOworCisjIEludmFsaWQgTERBUCByZWNvcmQgd2l0aCBubyBlbnRyaWVzCith cHBlbmRfdG9fZmlsZSgKKwkkbGRpZl92YWxpZCwgcXF7Cit2ZXJzaW9uOjEKK2RuOmNuPW5vZW50 cmllcyxkYz1leGFtcGxlLGRjPW5ldAorY2hhbmdldHlwZTphZGQKK29iamVjdGNsYXNzOnRvcAor b2JqZWN0Y2xhc3M6ZGV2aWNlCitjbjpub2VudHJpZXMKK30pOworCisjIEludmFsaWQgTERBUCBy ZWNvcmQgd2l0aCBtaXNzaW5nID0gYWZ0ZXIgYXBwbGljYXRpb25fbmFtZQorYXBwZW5kX3RvX2Zp bGUoCisJJGxkaWZfdmFsaWQsIHFxewordmVyc2lvbjoxCitkbjpjbj1taXNzaW5nZXF1YWwsZGM9 ZXhhbXBsZSxkYz1uZXQKK2NoYW5nZXR5cGU6YWRkCitvYmplY3RjbGFzczp0b3AKK29iamVjdGNs YXNzOmRldmljZQorY246bWlzc2luZ2VxdWFsCitkZXNjcmlwdGlvbjphcHBsaWNhdGlvbl9uYW1l Cit9KTsKKworIyBJbnZhbGlkIExEQVAgcmVjb3JkIHdpdGggbm9uIGV4aXN0ZW50IHBhcmFtZXRl cgorYXBwZW5kX3RvX2ZpbGUoCisJJGxkaWZfdmFsaWQsIHFxewordmVyc2lvbjoxCitkbjpjbj1p bnZhbGlkY29ubm9wdGlvbnNlcnZpY2UsZGM9ZXhhbXBsZSxkYz1uZXQKK2NoYW5nZXR5cGU6YWRk CitvYmplY3RjbGFzczp0b3AKK29iamVjdGNsYXNzOmRldmljZQorY246aW52YWxpZGNvbm5vcHRp b25zZXJ2aWNlCitkZXNjcmlwdGlvbjppbnZhbGlkY29ubm9wdGlvbj0xCit9KTsKKworIyBWYWxp ZCBMREFQIHJlY29yZCB3aGljaCBoYXMgbGRhcHNlcnZpY2V1cmwgcGFyYW1ldGVyCithcHBlbmRf dG9fZmlsZSgKKwkkbGRpZl92YWxpZCwgcXF7Cit2ZXJzaW9uOjEKK2RuOmNuPWxkYXB1cmxpbmxk YXB1cmwsZGM9ZXhhbXBsZSxkYz1uZXQKK2NoYW5nZXR5cGU6YWRkCitvYmplY3RjbGFzczp0b3AK K29iamVjdGNsYXNzOmRldmljZQorY246bGRhcHVybGlubGRhcHVybAorZGVzY3JpcHRpb246bGRh cHNlcnZpY2V1cmw9bGRhcDovL2xvY2FsaG9zdDoxMjM0L2RjPWV4YW1wbGUsZGM9bmV0P2Rlc2Ny aXB0aW9uP29uZT8oY249bXlkYXRhYmFzZWdlcW9vZmYpCitkZXNjcmlwdGlvbjphcHBsaWNhdGlv bl9uYW1lPWFwcG5hbWVfZnJvbV9sZGFwX2xkYXB1cmxpbmxkYXB1cmwKK2Rlc2NyaXB0aW9uOmhv c3Q9fSAuICRub2RlLT5ob3N0IC4gcXF7CitkZXNjcmlwdGlvbjpwb3J0PX0gLiAkbm9kZS0+cG9y dCAuIHFxeworfSk7CisKKyMgSW52YWxpZCBMREFQIHJlY29yZCB3aGljaCBoYXMgbGRhcHNlcnZp Y2V1cmwgcGFyYW1ldGVyCithcHBlbmRfdG9fZmlsZSgKKwkkbGRpZl92YWxpZCwgcXF7Cit2ZXJz aW9uOjEKK2RuOmNuPXVudGVybWluYXRlZG9wdGlvbnF1b3RlLGRjPWV4YW1wbGUsZGM9bmV0Citj aGFuZ2V0eXBlOmFkZAorb2JqZWN0Y2xhc3M6dG9wCitvYmplY3RjbGFzczpkZXZpY2UKK2NuOnVu dGVybWluYXRlZG9wdGlvbnF1b3RlCitkZXNjcmlwdGlvbjphcHBsaWNhdGlvbl9uYW1lPVwnYXBw bmFtZV9mcm9tX2xkYXBfdW50ZXJtaW5hdGVkb3B0aW9ucXVvdGUKK30pOworCiAkbGRhcC0+bGRh cGFkZF9maWxlKCRsZGlmX3ZhbGlkKTsKIAogbXkgKCRsZGFwX3NlcnZlciwgJGxkYXBfcG9ydCwg JGxkYXBzX3BvcnQsICRsZGFwX3VybCwKQEAgLTgwLDYgKzE1NywxNiBAQCBhcHBlbmRfdG9fZmls ZSgKIAkkc3J2ZmlsZV92YWxpZCwgcXF7CiBbbXlfc3J2XQogbGRhcDovL2xvY2FsaG9zdDokbGRh cF9wb3J0L2RjPWV4YW1wbGUsZGM9bmV0P2Rlc2NyaXB0aW9uP29uZT8oY249bXlkYXRhYmFzZSkK KworW2dlcW9fb2ZmXQorbGRhcDovL2xvY2FsaG9zdDokbGRhcF9wb3J0L2RjPWV4YW1wbGUsZGM9 bmV0P2Rlc2NyaXB0aW9uP29uZT8oY249bXlkYXRhYmFzZWdlcW9vZmYpCisKK1tsZGFwc2Vydmlj ZXVybF9pbl9wZ19zZXJ2aWNlX3Rlc3RdCitsZGFwc2VydmljZXVybD1sZGFwOi8vbG9jYWxob3N0 OiRsZGFwX3BvcnQvZGM9ZXhhbXBsZSxkYz1uZXQ/ZGVzY3JpcHRpb24/b25lPyhjbj1teWRhdGFi YXNlKQorCitbcGdfc2VydmljZV9hcHBsaWNhdGlvbl9uYW1lXQorYXBwbGljYXRpb25fbmFtZT1w Z19zZXJ2aWNlCitvcHRpb25zPS0tZ2Vxbz1vZmYKIH0pOwogCiAjIEZpbGUgZGVmaW5lZCB3aXRo IG5vIGNvbnRlbnRzLCB1c2VkIGFzIGRlZmF1bHQgdmFsdWUgZm9yCkBAIC0xOTYsMTAgKzI4Mywx NjkgQEAgbG9jYWwgJEVOVntQR1NFUlZJQ0VGSUxFfSA9ICIkc3J2ZmlsZV9lbXB0eSI7CiAJCWV4 cGVjdGVkX3N0ZG91dCA9PgogCQkgIHFyL2RlZmluaXRpb24gb2Ygc2VydmljZSAidW5kZWZpbmVk LXNlcnZpY2UiIG5vdCBmb3VuZC8pOwogCisJZGVsZXRlICRFTlZ7UEdTRVJWSUNFfTsKKworCXVu bGluaygkc3J2ZmlsZV9kZWZhdWx0KTsKK30KKworIyBUZXN0IGxkYXBzZXJ2aWNldXJsIGNvbm5l Y3Rpb24gcGFyYW1ldGVyCit7CisJIyBDcmVhdGUgY29weSBvZiB2YWxpZCBmaWxlCisJbXkgJHNy dmZpbGVfZGVmYXVsdCA9ICIkdGQvcGdfc2VydmljZS5jb25mIjsKKwljb3B5KCRzcnZmaWxlX3Zh bGlkLCAkc3J2ZmlsZV9kZWZhdWx0KTsKKworCSRkdW1teV9ub2RlLT5jb25uZWN0X29rKAorCQki bGRhcHNlcnZpY2V1cmw9bGRhcDovL2xvY2FsaG9zdDokbGRhcF9wb3J0L2RjPWV4YW1wbGUsZGM9 bmV0P2Rlc2NyaXB0aW9uP29uZT8oY249bXlkYXRhYmFzZSkiLAorCQknY29ubmVjdGlvbiB3aXRo IGNvcnJlY3QgImxkYXBzZXJ2aWNldXJsIicsCisJCXNxbCA9PiAiU0VMRUNUICdjb25uZWN0Ml80 JywgY3VycmVudF9zZXR0aW5nKCdhcHBsaWNhdGlvbl9uYW1lJykiLAorCQlleHBlY3RlZF9zdGRv dXQgPT4gcXIvXmNvbm5lY3QyXzRcfGFwcG5hbWVfZnJvbV9sZGFwX215ZGF0YWJhc2UkLyk7CisK KwkkZHVtbXlfbm9kZS0+Y29ubmVjdF9mYWlscygKKwkJImxkYXBzZXJ2aWNldXJsPWxkYXA6Ly9s b2NhbGhvc3Q6MTIzNC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlvbj9vbmU/KGNuPW15ZGF0 YWJhc2UpIiwKKwkJJ2Nvbm5lY3Rpb24gd2l0aCBjb3JyZWN0ICJsZGFwc2VydmljZXVybCInLAor CQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvXnBzcWw6IGVycm9yOiBjb25uZWN0aW9uIGNvdWxkIG5v dCBiZSBlc3RhYmxpc2hlZCB0byBsZGFwc2VydmljZXVybDogXCIuKlwiJC8pOworCisJJGR1bW15 X25vZGUtPmNvbm5lY3Rfb2soCisJCSJwb3N0Z3JlczovLz9sZGFwc2VydmljZXVybD1sZGFwJTNB JTJGJTJGbG9jYWxob3N0JTNBJGxkYXBfcG9ydCUyRmRjJTNEZXhhbXBsZSUyQ2RjJTNEbmV0JTNG ZGVzY3JpcHRpb24lM0ZvbmUlM0YlMjhjbiUzRG15ZGF0YWJhc2UlMjkiLAorCQknY29ubmVjdGlv biB3aXRoIGNvcnJlY3QgImxkYXBzZXJ2aWNldXJsIiBpbiB1cmkgZm9ybWF0JywKKwkJc3FsID0+ ICJTRUxFQ1QgJ2Nvbm5lY3QyXzUnLCBjdXJyZW50X3NldHRpbmcoJ2FwcGxpY2F0aW9uX25hbWUn KSIsCisJCWV4cGVjdGVkX3N0ZG91dCA9PiBxci9eY29ubmVjdDJfNVx8YXBwbmFtZV9mcm9tX2xk YXBfbXlkYXRhYmFzZSQvKTsKKworCWxvY2FsICRFTlZ7UEdMREFQU0VSVklDRVVSTH0gPSAibGRh cDovL2xvY2FsaG9zdDokbGRhcF9wb3J0L2RjPWV4YW1wbGUsZGM9bmV0P2Rlc2NyaXB0aW9uP29u ZT8oY249bXlkYXRhYmFzZSkiOworCisJJGR1bW15X25vZGUtPmNvbm5lY3Rfb2soCisJCSIiLAor CQknY29ubmVjdGlvbiB3aXRoIGNvcnJlY3QgImxkYXBzZXJ2aWNldXJsIiBwcm92aWRlZCBieSBl bnYgdmFyJywKKwkJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3QyXzYnLCBjdXJyZW50X3NldHRpbmco J2FwcGxpY2F0aW9uX25hbWUnKSIsCisJCWV4cGVjdGVkX3N0ZG91dCA9PiBxci9eY29ubmVjdDJf Nlx8YXBwbmFtZV9mcm9tX2xkYXBfbXlkYXRhYmFzZSQvKTsKKworCSRkdW1teV9ub2RlLT5jb25u ZWN0X2ZhaWxzKAorCQknbGRhcHNlcnZpY2V1cmw9bGRhcDovL2xvY2FsaG9zdDppbnZhbGlkcG9y dC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlvbj9vbmU/KGNuPW15ZGF0YWJhc2UpJywKKwkJ J2Nvbm5lY3Rpb24gZmFpbHMgd2l0aCBiZWNhdXNlIHZhbGlkIFBHTERBUFNFUlZJQ0VVUkwgZW52 IHZhciBvdmVycmlkZGVuIGJ5IGV4cGxpY2l0IHBhcmFtZXRlciB3aXRoIGJhZCBwb3J0JywKKwkJ ZXhwZWN0ZWRfc3RkZXJyID0+IHFyL15wc3FsOiBlcnJvcjogaW52YWxpZCBMREFQIFVSTCBcIi4q XCI6IGludmFsaWQgcG9ydCBudW1iZXIkLyk7CisKKwlkZWxldGUgJEVOVntQR0xEQVBTRVJWSUNF VVJMfTsKKworCSRkdW1teV9ub2RlLT5jb25uZWN0X29rKAorCQkibGRhcHNlcnZpY2V1cmw9bGRh cDovL2xvY2FsaG9zdDokbGRhcF9wb3J0L2RjPWV4YW1wbGUsZGM9bmV0P2Rlc2NyaXB0aW9uP29u ZT8oY249bXlkYXRhYmFzZSkgYXBwbGljYXRpb25fbmFtZT1hcHBuYW1lX2Zyb21fZXhwbGljaXRf cGFyYW1ldGVyIiwKKwkJJ2Nvbm5lY3Rpb24gd2l0aCBjb3JyZWN0ICJsZGFwc2VydmljZXVybCIg YnV0IHdpdGggYXBwbGljYXRpb25fbmFtZSBvdmVycmlkZGVuIGJ5IGV4cGxpY2l0IGNvbm5lY3Rp b24gcGFyYW1ldGVyJywKKwkJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3QyXzcnLCBjdXJyZW50X3Nl dHRpbmcoJ2FwcGxpY2F0aW9uX25hbWUnKSIsCisJCWV4cGVjdGVkX3N0ZG91dCA9PiBxci9eY29u bmVjdDJfN1x8YXBwbmFtZV9mcm9tX2V4cGxpY2l0X3BhcmFtZXRlciQvKTsKKworCWxvY2FsICRF TlZ7UEdBUFBOQU1FfSA9ICJlbnZ2YXJfcGFyYW1ldGVyIjsKKworCSRkdW1teV9ub2RlLT5jb25u ZWN0X29rKAorCQkibGRhcHNlcnZpY2V1cmw9bGRhcDovL2xvY2FsaG9zdDokbGRhcF9wb3J0L2Rj PWV4YW1wbGUsZGM9bmV0P2Rlc2NyaXB0aW9uP29uZT8oY249bXlkYXRhYmFzZSkiLAorCQknY29u bmVjdGlvbiB3aXRoIGNvcnJlY3QgImxkYXBzZXJ2aWNldXJsIiBidXQgd2l0aCBhcHBsaWNhdGlv bl9uYW1lIG92ZXJyaWRpbmcgZW52dmFyJywKKwkJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3QyXzgn LCBjdXJyZW50X3NldHRpbmcoJ2FwcGxpY2F0aW9uX25hbWUnKSIsCisJCWV4cGVjdGVkX3N0ZG91 dCA9PiBxci9eY29ubmVjdDJfOFx8YXBwbmFtZV9mcm9tX2xkYXBfbXlkYXRhYmFzZSQvKTsKKwor CWRlbGV0ZSAkRU5We1BHQVBQTkFNRX07CisKKwkkZHVtbXlfbm9kZS0+Y29ubmVjdF9vaygKKwkJ ImxkYXBzZXJ2aWNldXJsPWxkYXA6Ly9sb2NhbGhvc3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRj PW5ldD9kZXNjcmlwdGlvbj9vbmU/KGNuPW15ZGF0YWJhc2UpIHNlcnZpY2U9cGdfc2VydmljZV9h cHBsaWNhdGlvbl9uYW1lIiwKKwkJJ2Nvbm5lY3Rpb24gd2l0aCBjb3JyZWN0ICJsZGFwc2Vydmlj ZXVybCIgc3RyaW5nLCBzZXJ2aWNlIGZpbGUgYXBwbGljYXRpb25fbmFtZSBvdmVycmlkZGVuIGJ5 IGxkYXAsIGdlcW8gb2ZmIHNldCBieSBzZXJ2aWNlIGZpbGUnLAorCQlzcWwgPT4gIlNFTEVDVCAn Y29ubmVjdDJfOScsIGN1cnJlbnRfc2V0dGluZygnYXBwbGljYXRpb25fbmFtZScpLCBjdXJyZW50 X3NldHRpbmcoJ2dlcW8nKTsiLAorCQlleHBlY3RlZF9zdGRvdXQgPT4gcXIvXmNvbm5lY3QyXzlc fGFwcG5hbWVfZnJvbV9sZGFwX215ZGF0YWJhc2VcfG9mZiQvKTsKKworCSMgdGVzdCB0aGF0IGdl cW8gZ3JhYmJlZCBmcm9tIHNlcnZpY2UgZmlsZSBzZXJ2aWNlIGdlcW9fb2ZmIHZpYSBMREFQIGxv b2t1cAorCSMgY29uZmxpY3RpbmcgYXBwbGljYXRpb24gbmFtZXMgcHJlc2VudCBpbiBib3RoIExE QVAgc2VydmljZXMgcXVlcmllZCAobGRhcHNlcnZpY2V1cmwgYW5kIHNlcnZpY2UgZmlsZSkKKwkj IGFwcGxpY2F0aW9uIG5hbWUgZnJvbSBzZXJ2aWNlIGZpbGUgbG9va3VwIGlzIGlnbm9yZWQgYmVj YXVzZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHNldCBieSBsZGFwc2VydmljZXVybCBsb29rdXAKKwkk ZHVtbXlfbm9kZS0+Y29ubmVjdF9vaygKKwkJImxkYXBzZXJ2aWNldXJsPWxkYXA6Ly9sb2NhbGhv c3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlvbj9vbmU/KGNuPW15ZGF0 YWJhc2UpIHNlcnZpY2U9Z2Vxb19vZmYiLAorCQknY29ubmVjdGlvbiB3aXRoIDIgTERBUCBsb29r dXBzIChwZ19zZXJ2aWNlLmNvbmYgYW5kIGxkYXBzZXJ2aWNldXJsKScsCisJCXNxbCA9PiAiU0VM RUNUICdjb25uZWN0Ml8xMCcsIGN1cnJlbnRfc2V0dGluZygnYXBwbGljYXRpb25fbmFtZScpLCBj dXJyZW50X3NldHRpbmcoJ2dlcW8nKTsiLAorCQlleHBlY3RlZF9zdGRvdXQgPT4gcXIvXmNvbm5l Y3QyXzEwXHxhcHBuYW1lX2Zyb21fbGRhcF9teWRhdGFiYXNlXHxvZmYkLyk7CisKKwkkZHVtbXlf bm9kZS0+Y29ubmVjdF9mYWlscygKKwkJJ3NlcnZpY2U9bGRhcHNlcnZpY2V1cmxfaW5fcGdfc2Vy dmljZV90ZXN0JywKKwkJJ2Nvbm5lY3Rpb24gZmFpbHMgd2l0aCBsZGFwc2VydmljZXVybCBzcGVj aWZpZWQgaW4gcGdfc2VydmljZS5jb25mIGZpbGUnLAorCQlleHBlY3RlZF9zdGRlcnIgPT4gcXIv XnBzcWw6IGVycm9yOiBsZGFwc2VydmljZXVybCBwYXJhbWV0ZXJzIGFyZSBub3Qgc3VwcG9ydGVk IGluIHNlcnZpY2UgZmlsZSAuKiwgbGluZSAuKiQvICk7CisKKwkkZHVtbXlfbm9kZS0+Y29ubmVj dF9vaygKKwkJImxkYXBzZXJ2aWNldXJsPWxkYXA6Ly9sb2NhbGhvc3Q6JGxkYXBfcG9ydC9kYz1l eGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlvbj9vbmU/KGNuPWxkYXB1cmxpbmxkYXB1cmwpIiwKKwkJ J2xkYXBzZXJ2aWNldXJsIHRoYXQgcG9pbnRzIHRvIGFub3RoZXIgbGRhcHNlcnZpY2V1cmwgd2ls bCBiZSBpZ25vcmVkJywKKwkJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3QyXzExJywgY3VycmVudF9z ZXR0aW5nKCdhcHBsaWNhdGlvbl9uYW1lJyksIGN1cnJlbnRfc2V0dGluZygnZ2VxbycpOyIsCisJ CWV4cGVjdGVkX3N0ZG91dD0+IHFyL15jb25uZWN0Ml8xMVx8YXBwbmFtZV9mcm9tX2xkYXBfbGRh cHVybGlubGRhcHVybFx8b24kLyk7CisKIAkjIFJlbW92ZSBkZWZhdWx0IHBnX3NlcnZpY2UuY29u Zi4KIAl1bmxpbmsoJHNydmZpbGVfZGVmYXVsdCk7CiB9CiAKKyMgbmVnYXRpdmUgdGVzdHMgZm9y IGxvZ2ljIGluc2lkZSBsZGFwU2VydmljZUxvb2t1cAoreworCisJJGR1bW15X25vZGUtPmNvbm5l Y3RfZmFpbHMoCisJCSJsZGFwc2VydmljZXVybD1odHRwOi8vbG9jYWxob3N0OiRsZGFwX3BvcnQv ZGM9ZXhhbXBsZSxkYz1uZXQ/ZGVzY3JpcHRpb24/b25lPyhjbj1teWRhdGFiYXNlKSIsCisJCSds ZGFwc2VydmljZXVybCB0aGF0IGRvZXNudCBiZWdpbiB3aXRoIGxkYXA6Ly8gZmFpbHMnLAorCQll eHBlY3RlZF9zdGRlcnIgPT4gcXIvXnBzcWw6IGVycm9yOiBpbnZhbGlkIExEQVAgVVJMIFwiLipc Ijogc2NoZW1lIG11c3QgYmUgbGRhcDpcL1wvJC8pOworCisJJGR1bW15X25vZGUtPmNvbm5lY3Rf ZmFpbHMoCisJCSJsZGFwc2VydmljZXVybD1sZGFwOi8vbG9jYWxob3N0OiRsZGFwX3BvcnQvIiwK KwkJJ2xkYXBzZXJ2aWNldXJsIHRoYXQgZG9lcyBub3Qgc3BlY2lmeSBkaXN0aW5ndWlzaGVkIG5h bWUnLAorCQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvXnBzcWw6IGVycm9yOiBpbnZhbGlkIExEQVAg VVJMIFwiLipcIjogbWlzc2luZyBkaXN0aW5ndWlzaGVkIG5hbWUkLyk7CisKKwkkZHVtbXlfbm9k ZS0+Y29ubmVjdF9mYWlscygKKwkJImxkYXBzZXJ2aWNldXJsPWxkYXA6Ly9sb2NhbGhvc3Q6JGxk YXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD8iLAorCQknbGRhcHNlcnZpY2V1cmwgdGhhdCBkb2Vz IG5vdCBzcGVjaWZ5IGF0dHJpYnV0ZScsCisJCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9ecHNxbDog ZXJyb3I6IGludmFsaWQgTERBUCBVUkwgXCIuKlwiOiBtdXN0IGhhdmUgZXhhY3RseSBvbmUgYXR0 cmlidXRlJC8pOworCisJJGR1bW15X25vZGUtPmNvbm5lY3RfZmFpbHMoCisJCSJsZGFwc2Vydmlj ZXVybD1sZGFwOi8vbG9jYWxob3N0OiRsZGFwX3BvcnQvZGM9ZXhhbXBsZSxkYz1uZXQ/ZGVzY3Jp cHRpb24iLAorCQknbGRhcHNlcnZpY2V1cmwgdGhhdCBkb2VzIG5vdCBwcm92aWRlIHNjb3BlJywK KwkJZXhwZWN0ZWRfc3RkZXJyID0+IHFyL15wc3FsOiBlcnJvcjogaW52YWxpZCBMREFQIFVSTCBc Ii4qXCI6IG11c3QgaGF2ZSBzZWFyY2ggc2NvcGUgXChiYXNlXC9vbmVcL3N1YlwpJC8pOworCisJ JGR1bW15X25vZGUtPmNvbm5lY3RfZmFpbHMoCisJCSJsZGFwc2VydmljZXVybD1sZGFwOi8vbG9j YWxob3N0OiRsZGFwX3BvcnQvZGM9ZXhhbXBsZSxkYz1uZXQ/ZGVzY3JpcHRpb24/b25lIiwKKwkJ J2xkYXBzZXJ2aWNldXJsIHRoYXQgZG9lcyBub3Qgc3BlY2lmeSBmaWx0ZXInLAorCQlleHBlY3Rl ZF9zdGRlcnIgPT4gcXIvXnBzcWw6IGVycm9yOiBpbnZhbGlkIExEQVAgVVJMIFwiLipcIjogbm8g ZmlsdGVyJC8pOworCisJJGR1bW15X25vZGUtPmNvbm5lY3RfZmFpbHMoCisJCSJsZGFwc2Vydmlj ZXVybD1sZGFwOi8vbG9jYWxob3N0OmludmFsaWRwb3J0bnVtYmVyL2RjPWV4YW1wbGUsZGM9bmV0 P2Rlc2NyaXB0aW9uP29uZT8oY249bXlkYXRhYmFzZSkiLCAnbGRhcHNlcnZpY2V1cmwgY29udGFp bnMgaW52YWxpZCBwb3J0IG51bWJlcicsCisJCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9ecHNxbDog ZXJyb3I6IGludmFsaWQgTERBUCBVUkwgXCIuKlwiOiBpbnZhbGlkIHBvcnQgbnVtYmVyJC8pOwor CisJJGR1bW15X25vZGUtPmNvbm5lY3RfZmFpbHMoCisJCSJsZGFwc2VydmljZXVybD1sZGFwOi8v bG9jYWxob3N0OiRsZGFwX3BvcnQvZGM9ZXhhbXBsZSxkYz1uZXQ/ZGVzY3JpcHRpb24sZG4/b25l Pyhjbj1teWRhdGFiYXNlKSIsCisJCSdsZGFwc2VydmljZXVybCB0aGF0IGNvbnRhaW5zIDIgYXR0 cmlidXRlcycsCisJCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9ecHNxbDogZXJyb3I6IGludmFsaWQg TERBUCBVUkwgXCIuKlwiOiBtdXN0IGhhdmUgZXhhY3RseSBvbmUgYXR0cmlidXRlJC8pOworCisJ JGR1bW15X25vZGUtPmNvbm5lY3RfZmFpbHMoCisJCSJsZGFwc2VydmljZXVybD1sZGFwOi8vbG9j YWxob3N0OiRsZGFwX3BvcnQvZGM9ZXhhbXBsZSxkYz1uZXQ/ZGVzY3JpcHRpb24/aW52YWxpZHNj b3BlPyhjbj1teWRhdGFiYXNlKSIsCisJCSdsZGFwc2VydmljZXVybCB0aGF0IGRvZXMgbm90IHBy b3ZpZGUgdmFsaWQgc2NvcGUnLAorCQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvXnBzcWw6IGVycm9y OiBpbnZhbGlkIExEQVAgVVJMIFwiLipcIjogbXVzdCBoYXZlIHNlYXJjaCBzY29wZSBcKGJhc2Vc L29uZVwvc3ViXCkkLyk7CisKKwkkZHVtbXlfbm9kZS0+Y29ubmVjdF9mYWlscygKKwkJImxkYXBz ZXJ2aWNldXJsPWxkYXA6Ly9sb2NhbGhvc3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD9k ZXNjcmlwdGlvbj9zdWI/KGNuPSopIiwKKwkJJ2xkYXBzZXJ2aWNldXJsIHRoYXQgY29udGFpbnMg bW9yZSB0aGFuIG9uZSBlbnRyeScsCisJCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9ecHNxbDogZXJy b3I6IG1vcmUgdGhhbiBvbmUgZW50cnkgZm91bmQgb24gTERBUCBsb29rdXAkLyk7CisKKwkkZHVt bXlfbm9kZS0+Y29ubmVjdF9mYWlscygKKwkJImxkYXBzZXJ2aWNldXJsPWxkYXA6Ly9sb2NhbGhv c3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlvbj9vbmU/KGNuPWRvZXNu b3RleGlzdCkiLAorCQknbGRhcHNlcnZpY2V1cmwgd2l0aCBubyBsZGFwIGVudHJ5JywKKwkJZXhw ZWN0ZWRfc3RkZXJyID0+IHFyL15wc3FsOiBlcnJvcjogbm8gZW50cnkgZm91bmQgb24gTERBUCBs b29rdXAkLyk7CisKKwkkZHVtbXlfbm9kZS0+Y29ubmVjdF9mYWlscygKKwkJImxkYXBzZXJ2aWNl dXJsPWxkYXA6Ly9sb2NhbGhvc3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlw dGlvbj9vbmU/KGNuPW5vZW50cmllcykiLAorCQknbGRhcHNlcnZpY2V1cmwgdGhhdCBoYXMgbm8g Y29ubmVjdGlvbiBhdHRyaWJ1dGVzJywKKwkJZXhwZWN0ZWRfc3RkZXJyID0+IHFyL15wc3FsOiBl cnJvcjogYXR0cmlidXRlIGhhcyBubyB2YWx1ZXMgb24gTERBUCBsb29rdXAkLyk7CisKKwkkZHVt bXlfbm9kZS0+Y29ubmVjdF9mYWlscygKKwkJImxkYXBzZXJ2aWNldXJsPWxkYXA6Ly9sb2NhbGhv c3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlvbj9vbmU/KGNuPW1pc3Np bmdlcXVhbCkiLAorCQknbGRhcHNlcnZpY2VzdXJsIHRoYXQgaGFzIG1pc3NpbmcgZXF1YWwgc2ln bicsCisJCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9ecHNxbDogZXJyb3I6IG1pc3NpbmcgXCJcPVwi IGFmdGVyIFwiYXBwbGljYXRpb25fbmFtZVxuXCIgaW4gY29ubmVjdGlvbiBpbmZvIHN0cmluZyQv KTsKKworCSRkdW1teV9ub2RlLT5jb25uZWN0X2ZhaWxzKAorCQkibGRhcHNlcnZpY2V1cmw9bGRh cDovL2xvY2FsaG9zdDokbGRhcF9wb3J0L2RjPWV4YW1wbGUsZGM9bmV0P2Rlc2NyaXB0aW9uP29u ZT8oY249aW52YWxpZGNvbm5vcHRpb25zZXJ2aWNlKSIsCisJCSdsZGFwc2VydmljZXVybCB0aGF0 IGNvbnRhaW5zIG5vbmV4aXN0ZW50IGNvbm5lY3Rpb24gb3B0aW9uJywKKwkJZXhwZWN0ZWRfc3Rk ZXJyID0+IHFyL15wc3FsOiBlcnJvcjogaW52YWxpZCBjb25uZWN0aW9uIG9wdGlvbiBcImludmFs aWRjb25ub3B0aW9uXCIkLyk7CisKKwkkZHVtbXlfbm9kZS0+Y29ubmVjdF9mYWlscygKKwkJImxk YXBzZXJ2aWNldXJsPWxkYXA6Ly9sb2NhbGhvc3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRjPW5l dD9kZXNjcmlwdGlvbj9vbmU/KGNuPXVudGVybWluYXRlZG9wdGlvbnF1b3RlKSIsCisJCSdsZGFw c2VydmljZXVybCB0aGF0IGNvbnRhaW5zIHVudGVybWluYXRlZCBxdW90ZSAnLAorCQlleHBlY3Rl ZF9zdGRlcnIgPT4gcXIvXnBzcWw6IGVycm9yOiB1bnRlcm1pbmF0ZWQgcXVvdGVkIHN0cmluZyBp biBjb25uZWN0aW9uIGluZm8gc3RyaW5nJC8pOworCit9CisKICRub2RlLT50ZWFyZG93bl9ub2Rl OwogCiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNTEuMgoK --0000000000003c649f064ef57248--