From dev-return-38761-archive-asf-public=cust-asf.ponee.io@subversion.apache.org Sun Dec 16 16:00:01 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id AE1D8180625 for ; Sun, 16 Dec 2018 15:59:59 +0100 (CET) Received: (qmail 51541 invoked by uid 500); 16 Dec 2018 14:59:58 -0000 Mailing-List: contact dev-help@subversion.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@subversion.apache.org Received: (qmail 51531 invoked by uid 99); 16 Dec 2018 14:59:57 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 16 Dec 2018 14:59:57 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 8E775C94E6 for ; Sun, 16 Dec 2018 14:59:57 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.999 X-Spam-Level: ** X-Spam-Status: No, score=2.999 tagged_above=-999 required=6.31 tests=[HEADER_FROM_DIFFERENT_DOMAINS=0.001, HTML_MESSAGE=2, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SCC_5_SHORT_WORD_LINES=1, SPF_PASS=-0.001] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id jKchSKT8Tp17 for ; Sun, 16 Dec 2018 14:59:55 +0000 (UTC) Received: from mail-yb1-f193.google.com (mail-yb1-f193.google.com [209.85.219.193]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id 5BC615F402 for ; Sun, 16 Dec 2018 14:59:55 +0000 (UTC) Received: by mail-yb1-f193.google.com with SMTP id r11so4147554ybp.12 for ; Sun, 16 Dec 2018 06:59:55 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=0qUAA59A+sZq6tepbh/OmGdt8T+h59rSIbxnOq09yUw=; b=tOYL0mFwHCp7AwErbl90D5b2NFEoy2swh/KDMxRJFHsXwjFNt+WUidEKW2Zr2P4/TD PHtsYMmXnDJMijT94n3dHqahtd+lCtmmIbMSEr/k+g8MaeyVoC5AH1x7d4lph4waK/7C IsIAIlL4iMe+ISmXSjoblzj6p0i7owd4+Z+W6cEVLxjnrUIyXj2okvJS4IjOp4JA5Qb1 rdupu5/mNHgTQ7+lFCUl/CcPjhc1En1dHbM7zEr7xoywF58X73YUN2brgvlBn6pvC7WO 0IjJGjTfPhzSWAJ/CvzFrc4Qq44PqB1LDzhTs9G12wwkyM3DQhLMf129M/eSLyPO8SPh R0zQ== X-Gm-Message-State: AA+aEWYUPhAyMBWn9qxOzhcxNFO5Qp7HI/0sGyGRGOxJc7cBZHB1zfay iYnuAQ1YW3qf+/hdUhApDbsuOzgu31w= X-Google-Smtp-Source: AFSGD/VmLlsGioPR+CzTL43n2DyL0XP2AV4SAmsXrCgEcLddjnPPTaxGiPZZBlT2QcR+YpICpml1XA== X-Received: by 2002:a25:8b88:: with SMTP id j8-v6mr9769061ybl.308.1544972389317; Sun, 16 Dec 2018 06:59:49 -0800 (PST) Received: from mail-yw1-f44.google.com (mail-yw1-f44.google.com. [209.85.161.44]) by smtp.gmail.com with ESMTPSA id f203sm2024298ywf.105.2018.12.16.06.59.48 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 16 Dec 2018 06:59:48 -0800 (PST) Received: by mail-yw1-f44.google.com with SMTP id h193so4221288ywc.4 for ; Sun, 16 Dec 2018 06:59:48 -0800 (PST) X-Received: by 2002:a81:1a52:: with SMTP id a79mr10680074ywa.467.1544972388284; Sun, 16 Dec 2018 06:59:48 -0800 (PST) MIME-Version: 1.0 References: <032a4916-fb6d-1338-5919-27af0bb7ebea@poem.co.jp> <1542848250.1963069.1585127856.0D550264@webmail.messagingengine.com> <1542939701.3975740.1586165808.71DB1FCF@webmail.messagingengine.com> <20181123085747.hxlyh2dyc5i6sbwr@tarpaulin.shahaf.local2> <5eb61bdf-be4b-a854-37a3-ab802b0cc0f1@poem.co.jp> <20181128154039.76ksvew7iybufobo@tarpaulin.shahaf.local2> In-Reply-To: <20181128154039.76ksvew7iybufobo@tarpaulin.shahaf.local2> From: Troy Curtis Jr Date: Sun, 16 Dec 2018 09:59:36 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [swig-py3][patch] interfacing bytes object instead of str To: Daniel Shahaf Cc: Yasuhito FUTATSUKI , Subversion Development , futatuki@yf.bsdclub.org Content-Type: multipart/mixed; boundary="000000000000647d32057d24ea17" --000000000000647d32057d24ea17 Content-Type: multipart/alternative; boundary="000000000000647d30057d24ea15" --000000000000647d30057d24ea15 Content-Type: text/plain; charset="UTF-8" On Wed, Nov 28, 2018 at 10:40 AM Daniel Shahaf wrote: > Yasuhito FUTATSUKI wrote on Tue, Nov 27, 2018 at 06:50:46 +0900: > > I've revised typemaps and APIs using svn_stringbuf_t *, then I found > > almost all those APIs include svn_stream_readline() use svn_stringbuf_t > > for file contents. So I've modified typemaps again so that those APIs > > use bytes for svn_stringbuf_t interface. > > > > The patch below destined for branches/swig-py affects those API wrappers. > > Thanks for the patch, Yasuhito. It looks good on a quick skim. Troy, > you've > worked on this branch before; would you perchance be able to review this? > (If you can, great; but no worries if you can't) > Yes the patch is looking good, especially having the svn_stream Python APIs actually tested! I updated the patch so that it works with the latest swig-py3 (@r1849027) and attached it. But there was one item I wanted to talk about related to the patch. I agree that "svn_stringbuf_t" => "bytes" and "svn_string_t" => "str" is the right general path, but after the patch there is now a "svn_stringbuf_t *output" typemap that is still using "PyStr" instead of "PyBytes". Further, the only usage of "svn_stringbuf_t *output" is in "svn_fs_print_modules" and "svn_ra_print_modules", where the function parameter is actually an output parameter, so the appropriate typemap is probably "argout" instead of "in". Otherwise, the patch LGTM. Yasuhito, if you want to review my changes to your patch and perhaps address the issue in the last paragraph then I can commit your patch to swig-py3. I'll also start working more on the swig-py3 branch to get it to the point that we can actually get this branch merged into trunk finally. Troy --000000000000647d30057d24ea15 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Wed,= Nov 28, 2018 at 10:40 AM Daniel Shahaf <d.s@daniel.shahaf.name> wrote:
Yasuhito FUTATSUKI wr= ote on Tue, Nov 27, 2018 at 06:50:46 +0900:
> I've revised typemaps and APIs using svn_stringbuf_t *, then I fou= nd
> almost all those APIs include svn_stream_readline() use svn_stringbuf_= t
> for file contents.=C2=A0 So I've modified typemaps again so that t= hose APIs
> use bytes for svn_stringbuf_t interface.
>
> The patch below destined for branches/swig-py affects those API wrappe= rs.

Thanks for the patch, Yasuhito.=C2=A0 It looks good on a quick skim.=C2=A0 = Troy, you've
worked on this branch before; would you perchance be able to review this? (If you can, great; but no worries if you can't)
<= br>
Yes the patch is looking good, especially having the svn_stre= am Python APIs actually tested!=C2=A0 I updated the patch so that it works = with the latest swig-py3 (@r1849027) and attached it.

But there was one item I wanted to talk about related to the patch= .=C2=A0 I agree that "svn_stringbuf_t" =3D> "bytes" = and "svn_string_t" =3D> "str" is the right general p= ath, but after the patch there is now a "svn_stringbuf_t *output"= typemap that is still using "PyStr" instead of "PyBytes&quo= t;.=C2=A0 Further, the only usage of "svn_stringbuf_t *output" is= in "svn_fs_print_modules" and "svn_ra_print_modules", = where the function parameter is actually an output parameter, so the approp= riate typemap is probably "argout" instead of "in".

Otherwise, the patch LGTM.=C2=A0 Yasuhito, if you wan= t to review my changes to your patch and perhaps address the issue in the l= ast paragraph then I can commit your patch to swig-py3. I'll also start= working more on the swig-py3 branch to get it to the point that we can act= ually get this branch merged into trunk finally.

Troy
--000000000000647d30057d24ea15-- --000000000000647d32057d24ea17 Content-Type: text/x-patch; charset="US-ASCII"; name="yasuhito-swig-py3-revised.patch" Content-Disposition: attachment; filename="yasuhito-swig-py3-revised.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jpqyis9u0 SW5kZXg6IHN1YnZlcnNpb24vYmluZGluZ3Mvc3dpZy9jb3JlLmkKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3Vi dmVyc2lvbi9iaW5kaW5ncy9zd2lnL2NvcmUuaQkocmV2aXNpb24gMTg0OTAyNykKKysrIHN1YnZl cnNpb24vYmluZGluZ3Mvc3dpZy9jb3JlLmkJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAs OCBAQAogLyogc3ZuX3N0cmVhbV9jaGVja3N1bW1lZCB3b3VsZCByZXF1aXJlIHNwZWNpYWwgYXR0 ZW50aW9uIHRvIHdyYXAsIGJlY2F1c2UKICAqIG9mIHRoZSByZWFkX2RpZ2VzdCBhbmQgd3JpdGVf ZGlnZXN0IHBhcmFtZXRlcnMuICovCiAlaWdub3JlIHN2bl9zdHJlYW1fY2hlY2tzdW1tZWQ7Cisv LyBzdm5fc3RyZWFtX3JlYWRfZnVsbAorLy8gc3ZuX3N0cmVhbV9yZWFkMgogLy8gc3ZuX3N0cmVh bV9yZWFkCiAvLyBzdm5fc3RyZWFtX3dyaXRlCiAvLyBzdm5fc3RyZWFtX2Nsb3NlCkBAIC00MjAs NyArNDIyLDcgQEAKIAogI2lmZGVmIFNXSUdQWVRIT04KICV0eXBlbWFwKGFyZ291dCkgKGNoYXIg KmJ1ZmZlciwgYXByX3NpemVfdCAqbGVuKSB7Ci0gICVhcHBlbmRfb3V0cHV0KFB5U3RyX0Zyb21T dHJpbmdBbmRTaXplKCQxLCAqJDIpKTsKKyAgJWFwcGVuZF9vdXRwdXQoUHlCeXRlc19Gcm9tU3Ry aW5nQW5kU2l6ZSgkMSwgKiQyKSk7CiAgIGZyZWUoJDEpOwogfQogI2VuZGlmCkBAIC00NDIsMTIg KzQ0NCwxNiBAQAogKi8KICNpZmRlZiBTV0lHUFlUSE9OCiAldHlwZW1hcChpbikgKGNvbnN0IGNo YXIgKmRhdGEsIGFwcl9zaXplX3QgKmxlbikgKCQqMl90eXBlIHRlbXApIHsKLSAgICBpZiAoIVB5 U3RyX0NoZWNrKCRpbnB1dCkpIHsKKyAgICBjaGFyICp0bXBkYXRhOworICAgIGlmICghUHlCeXRl c19DaGVjaygkaW5wdXQpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJy b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0aW5nIGEgc3RyaW5nIGZvciB0aGUg YnVmZmVyIik7CisgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0aW5nIGEgQnl0ZXMgb2Jq ZWN0IGZvciB0aGUgYnVmZmVyIik7CiAgICAgICAgIFNXSUdfZmFpbDsKICAgICB9Ci0gICAgJDEg PSBQeVN0cl9Bc1VURjhBbmRTaXplKCRpbnB1dCwgJnRlbXApOworICAgIGlmIChQeUJ5dGVzX0Fz U3RyaW5nQW5kU2l6ZSgkaW5wdXQsICZ0bXBkYXRhLCAmdGVtcCkgPT0gLTEpIHsKKyAgICAgICAg U1dJR19mYWlsOworICAgIH0KKyAgICAkMSA9IHRtcGRhdGE7CiAgICAgJDIgPSAoJDJfbHR5cGUp JnRlbXA7CiB9CiAjZW5kaWYKQEAgLTQ4NSw2ICs0OTEsMjAgQEAKICNlbmRpZgogCiAvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgZml4IHVwIHRoZSBzdm5fc3RyZWFtX3JlYWRsaW5lKCkgZW9sIGFyZ3Vt ZW50CisqLworI2lmZGVmIFNXSUdQWVRIT04KKyV0eXBlbWFwKGluKSAoY29uc3QgY2hhciAqZW9s KSB7CisgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKCRpbnB1dCkpIHsKKyAgICAgICAgUHlFcnJfU2V0 U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3Rp bmcgYSBieXRlcyBmb3IgdGhlIGVvbCIpOworICAgICAgICBTV0lHX2ZhaWw7CisgICAgfQorICAg ICQxID0gUHlCeXRlc19Bc1N0cmluZygkaW5wdXQpOworfQorI2VuZGlmCisKKy8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgICBhdXRoIHBhcmFtZXRlciBzZXQvZ2V0CiAqLwogCkBAIC01MDEsNyArNTIxLDcg QEAKICAgICB9CiAKICAgICBpZiAoUHlTdHJfQ2hlY2soJGlucHV0KSkgewotICAgICAgICBjaGFy ICp2YWx1ZSA9IFB5U3RyX0FzU3RyaW5nKCRpbnB1dCk7CisgICAgICAgIGNvbnN0IGNoYXIgKnZh bHVlID0gUHlTdHJfQXNTdHJpbmcoJGlucHV0KTsKICAgICAgICAgJDEgPSBhcHJfcHN0cmR1cChf Z2xvYmFsX3Bvb2wsIHZhbHVlKTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKCRp bnB1dCkpIHsKSW5kZXg6IHN1YnZlcnNpb24vYmluZGluZ3Mvc3dpZy9pbmNsdWRlL3N2bl9zdHJp bmcuc3dnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIHN1YnZlcnNpb24vYmluZGluZ3Mvc3dpZy9pbmNsdWRlL3N2 bl9zdHJpbmcuc3dnCShyZXZpc2lvbiAxODQ5MDI3KQorKysgc3VidmVyc2lvbi9iaW5kaW5ncy9z d2lnL2luY2x1ZGUvc3ZuX3N0cmluZy5zd2cJKHdvcmtpbmcgY29weSkKQEAgLTI4LDExICsyOCwx NCBAQAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgZ2VuZXJpYyBPVVQgcGFyYW0gdHlwZW1hcCBm b3Igc3ZuX3N0cmluZyhidWYpX3QuIHdlIGNhbiBzaGFyZSB0aGVzZQotICAgYmVjYXVzZSB3ZSBv bmx5IHJlZmVyIHRvIHRoZSAtPmRhdGEgYW5kIC0+bGVuIHZhbHVlcy4KKyAgIGV4Y2VwdCBpbiB0 aGUgY2FzZSBvZiBQeXRob24sIGJlY2F1c2Ugd2Ugb25seSByZWZlciB0byB0aGUgLT5kYXRhIGFu ZCAtPmxlbgorICAgdmFsdWVzLiBJbiBjYXNlIG9mIFB5dGhvbiwgc3ZuX3N0cmluZ2J1Zl90IHJl cHJlc2VudHMgcmF3IGJ5dGVzIGFuZAorICAgc3ZuX3N0cmluZ190IHJlcHJlc2VudHMgc3RyaW5n IGluIG1vc3QgY2FzZXMsIHNvIGl0IGlzIGNvbnZlbmllbnQgdG8KKyAgIGRpc3Rpbmd1aXNoIHRo ZW0uCiAqLwogI2lmZGVmIFNXSUdQWVRIT04KIAotJXR5cGVtYXAoYXJnb3V0KSBSRVRfU1RSSU5H IHsKKyV0eXBlbWFwKGFyZ291dCkgc3ZuX3N0cmluZ190ICoqIHsKICAgICBQeU9iamVjdCAqczsK ICAgICBpZiAoKiQxID09IE5VTEwpIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwpAQCAt NDUsNiArNDgsMTkgQEAKICAgICB9CiAgICAgJWFwcGVuZF9vdXRwdXQocyk7CiB9CisKKyV0eXBl bWFwKGFyZ291dCkgc3ZuX3N0cmluZ2J1Zl90ICoqIHsKKyAgICBQeU9iamVjdCAqczsKKyAgICBp ZiAoKiQxID09IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBz ID0gUHlfTm9uZTsKKyAgICB9IGVsc2UgeworICAgICAgICBzID0gUHlCeXRlc19Gcm9tU3RyaW5n QW5kU2l6ZSgoKiQxKS0+ZGF0YSwgKCokMSktPmxlbik7CisgICAgICAgIGlmIChzID09IE5VTEwp CisgICAgICAgICAgICBTV0lHX2ZhaWw7CisgICAgfQorICAgICVhcHBlbmRfb3V0cHV0KHMpOwor fQogI2VuZGlmCiAjaWZkZWYgU1dJR1BFUkwKICV0eXBlbWFwKGFyZ291dCkgUkVUX1NUUklORyB7 CkBAIC02NSwxMCArODEsMTIgQEAKIH0KICNlbmRpZgogCisjaWZuZGVmIFNXSUdQWVRIT04KICVh cHBseSBSRVRfU1RSSU5HIHsKICAgc3ZuX3N0cmluZ190ICoqLAogICBzdm5fc3RyaW5nYnVmX3Qg KioKIH07CisjZW5kaWYKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFRZUEU6IHN2bl9zdHJpbmdi dWZfdApAQCAtNzYsNiArOTQsMjIgQEAKIAogI2lmZGVmIFNXSUdQWVRIT04KICV0eXBlbWFwKGlu KSBzdm5fc3RyaW5nYnVmX3QgKiB7CisgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKCRpbnB1dCkpIHsK KyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm5vdCBhIGJ5dGVzIG9i amVjdCIpOworICAgICAgICBTV0lHX2ZhaWw7CisgICAgfQorICAgIHsKKyAgICAgIFB5X3NzaXpl X3Qgc3RyQnVmTGVuOworICAgICAgY2hhciAqc3RyQnVmQ2hhcjsKKyAgICAgIGlmICgtMSA9PSBQ eUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZSgkaW5wdXQsICZzdHJCdWZDaGFyLCAmc3RyQnVmTGVuKSkg eworICAgICAgICBTV0lHX2ZhaWw7CisgICAgICB9CisgICAgICAkMSA9IHN2bl9zdHJpbmdidWZf bmNyZWF0ZShzdHJCdWZDaGFyLCBzdHJCdWZMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvKiAjIyMgZ2FoLi4uIHdoYXQgcG9vbCB0byB1c2U/ICovCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBfZ2xvYmFsX3Bvb2wpOworICAgIH0KK30KKyV0eXBlbWFwKGlu KSBzdm5fc3RyaW5nYnVmX3QgKm91dHB1dCB7CiAgICAgaWYgKCFQeVN0cl9DaGVjaygkaW5wdXQp KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJub3QgYSBzdHJp bmciKTsKICAgICAgICAgU1dJR19mYWlsOwpAQCAtMjY0LDYgKzI5OCwxOCBAQAogICAgIH0KICAg ICAlYXBwZW5kX291dHB1dChzKTsKIH0KKyV0eXBlbWFwKGFyZ291dCkgY29uc3QgY2hhciAqKmVv bCB7CisgICAgUHlPYmplY3QgKnM7CisgICAgaWYgKCokMSA9PSBOVUxMKSB7CisgICAgICAgIFB5 X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgcyA9IFB5X05vbmU7CisgICAgfSBlbHNlIHsKKyAg ICAgICAgcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZygqJDEpOworICAgICAgICBpZiAocyA9PSBOVUxM KQorICAgICAgICAgICAgU1dJR19mYWlsOworICAgIH0KKyAgICAlYXBwZW5kX291dHB1dChzKTsK K30KICNlbmRpZgogCiAjaWZkZWYgU1dJR1BFUkwKSW5kZXg6IHN1YnZlcnNpb24vYmluZGluZ3Mv c3dpZy9weXRob24vbGlic3ZuX3N3aWdfcHkvc3dpZ3V0aWxfcHkuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBz dWJ2ZXJzaW9uL2JpbmRpbmdzL3N3aWcvcHl0aG9uL2xpYnN2bl9zd2lnX3B5L3N3aWd1dGlsX3B5 LmMJKHJldmlzaW9uIDE4NDkwMjcpCisrKyBzdWJ2ZXJzaW9uL2JpbmRpbmdzL3N3aWcvcHl0aG9u L2xpYnN2bl9zd2lnX3B5L3N3aWd1dGlsX3B5LmMJKHdvcmtpbmcgY29weSkKQEAgLTI1MTEsNyAr MjUxMSw3IEBACiAgIGlmIChQeVN0cl9DaGVjayhweV9maWxlKSkKICAgICB7CiAgICAgICAvKiBp bnB1dCBpcyBhIHBhdGggLS0ganVzdCBvcGVuIGFuIGFwcl9maWxlX3QgKi8KLSAgICAgIGNoYXIq IGZuYW1lID0gUHlTdHJfQXNTdHJpbmcocHlfZmlsZSk7CisgICAgICBjb25zdCBjaGFyKiBmbmFt ZSA9IFB5U3RyX0FzU3RyaW5nKHB5X2ZpbGUpOwogICAgICAgYXByX2VyciA9IGFwcl9maWxlX29w ZW4oJmFwcl9maWxlLCBmbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQUl9D UkVBVEUgfCBBUFJfUkVBRCB8IEFQUl9XUklURSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEFQUl9PU19ERUZBVUxULCBwb29sKTsKSW5kZXg6IHN1YnZlcnNpb24vYmluZGluZ3Mvc3dp Zy9weXRob24vc3ZuL2NvcmUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3VidmVyc2lvbi9iaW5kaW5ncy9z d2lnL3B5dGhvbi9zdm4vY29yZS5weQkocmV2aXNpb24gMTg0OTAyNykKKysrIHN1YnZlcnNpb24v YmluZGluZ3Mvc3dpZy9weXRob24vc3ZuL2NvcmUucHkJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw3 ICsxODUsNyBAQAogICAgICAgICBpZiBub3QgZGF0YToKICAgICAgICAgICBicmVhawogICAgICAg ICBjaHVua3MuYXBwZW5kKGRhdGEpCi0gICAgICByZXR1cm4gJycuam9pbihjaHVua3MpCisgICAg ICByZXR1cm4gYicnLmpvaW4oY2h1bmtzKQogCiAgICAgIyByZWFkIHRoZSBhbW91bnQgc3BlY2lm aWVkCiAgICAgcmV0dXJuIHN2bl9zdHJlYW1fcmVhZChzZWxmLl9zdHJlYW0sIGludChhbXQpKQpJ bmRleDogc3VidmVyc2lvbi9iaW5kaW5ncy9zd2lnL3B5dGhvbi90ZXN0cy9jb3JlLnB5Cj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHN1YnZlcnNpb24vYmluZGluZ3Mvc3dpZy9weXRob24vdGVzdHMvY29yZS5weQko cmV2aXNpb24gMTg0OTAyNykKKysrIHN1YnZlcnNpb24vYmluZGluZ3Mvc3dpZy9weXRob24vdGVz dHMvY29yZS5weQkod29ya2luZyBjb3B5KQpAQCAtMTksNiArMTksOCBAQAogIwogIwogaW1wb3J0 IHVuaXR0ZXN0CitpbXBvcnQgb3MKK2ltcG9ydCB0ZW1wZmlsZQogCiBpbXBvcnQgc3ZuLmNvcmUs IHN2bi5jbGllbnQKIGltcG9ydCB1dGlscwpAQCAtMTcxLDYgKzE3MywxMjAgQEAKICAgICBzZWxm LmFzc2VydEVxdWFsKAogICAgICAgc3ZuLmNvcmUuc3ZuX2NvbmZpZ19lbnVtZXJhdGVfc2VjdGlv bnMyKGNmZywgZW51bWVyYXRvciksIDEpCiAKKyAgZGVmIHRlc3Rfc3RyZWFtX2Zyb21fYnVmc3Ry aW5nKHNlbGYpOgorICAgIHN0cmVhbSA9IHN2bi5jb3JlLnN2bl9zdHJlYW1fZnJvbV9zdHJpbmdi dWYoYicnKQorICAgIHN2bi5jb3JlLnN2bl9zdHJlYW1fY2xvc2Uoc3RyZWFtKQorICAgIHdpdGgg c2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgc3RyZWFtID0gc3ZuLmNvcmUu c3ZuX3N0cmVhbV9mcm9tX3N0cmluZ2J1ZihiJycuZGVjb2RlKCkpCisgICAgICAgIHN2bi5jb3Jl LnN2bl9zdHJlYW1fY2xvc2Uoc3RyZWFtKQorCisgIGRlZiB0ZXN0X3N0cmVhbV9yZWFkX2Z1bGwo c2VsZik6CisgICAgaW5fc3RyID0gKGInUHl0aG9uXHgwMCcKKyAgICAgICAgICAgICAgYidceGE0 XHhkMVx4YTRceGE0XHhhNFx4YmRceGE0XHhmM1xyXG4nCisgICAgICAgICAgICAgIGInU3VidmVy c2lvblx4MDAnCisgICAgICAgICAgICAgIGInXHhhNFx4YjVceGE0XHhkNlx4YTRceGQwXHhhMVx4 YmNceGE0XHhiOFx4YTRceGU3XHhhNFx4ZjNcbicKKyAgICAgICAgICAgICAgYidzd2lnXHgwMCcK KyAgICAgICAgICAgICAgYidceGE0XHhiOVx4YTRceGE2XHhhNFx4YTNceGE0XHhiMFxyJworICAg ICAgICAgICAgICBiJ2VuZCcpCisgICAgc3RyZWFtID0gc3ZuLmNvcmUuc3ZuX3N0cmVhbV9mcm9t X3N0cmluZ2J1Zihpbl9zdHIpCisgICAgc2VsZi5hc3NlcnRFcXVhbChzdm4uY29yZS5zdm5fc3Ry ZWFtX3JlYWRfZnVsbChzdHJlYW0sIDQwOTYpLCBpbl9zdHIpCisgICAgc3ZuLmNvcmUuc3ZuX3N0 cmVhbV9zZWVrKHN0cmVhbSwgTm9uZSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKHN2bi5jb3JlLnN2 bl9zdHJlYW1fcmVhZF9mdWxsKHN0cmVhbSwgMTApLCBpbl9zdHJbMDoxMF0pCisgICAgc3ZuLmNv cmUuc3ZuX3N0cmVhbV9zZWVrKHN0cmVhbSwgTm9uZSkKKyAgICBzdm4uY29yZS5zdm5fc3RyZWFt X3NraXAoc3RyZWFtLCAyMCkKKyAgICBzZWxmLmFzc2VydEVxdWFsKHN2bi5jb3JlLnN2bl9zdHJl YW1fcmVhZF9mdWxsKHN0cmVhbSwgNDA5NiksIGluX3N0clsyMDpdKQorICAgIHNlbGYuYXNzZXJ0 RXF1YWwoc3ZuLmNvcmUuc3ZuX3N0cmVhbV9yZWFkX2Z1bGwoc3RyZWFtLCA0MDk2KSwgYicnKQor ICAgIHN2bi5jb3JlLnN2bl9zdHJlYW1fY2xvc2Uoc3RyZWFtKQorCisgIGRlZiB0ZXN0X3N0cmVh bV9yZWFkMihzZWxmKToKKyAgICAjIGFzIHdlIGNhbid0IGNyZWF0ZSBub24gYmxvY2sgc3RyZWFt IGJ5IHVzaW5nIHN3aWctcHkgQVBJIGRpcmVjdGx5LAorICAgICMgd2Ugb25seSB0ZXN0IHN2bl9z dHJlYW1fcmVhZDIoKSBiZWhhdmVzIGp1c3Qgc2FtZSBhcworICAgICMgc3ZuX3N0cmVhbV9yZWFk X2Z1bGwoKQorICAgIGluX3N0ciA9IChiJ1B5dGhvblx4MDAnCisgICAgICAgICAgICAgIGInXHhh NFx4ZDFceGE0XHhhNFx4YTRceGJkXHhhNFx4ZjNcclxuJworICAgICAgICAgICAgICBiJ1N1YnZl cnNpb25ceDAwJworICAgICAgICAgICAgICBiJ1x4YTRceGI1XHhhNFx4ZDZceGE0XHhkMFx4YTFc eGJjXHhhNFx4YjhceGE0XHhlN1x4YTRceGYzXG4nCisgICAgICAgICAgICAgIGInc3dpZ1x4MDAn CisgICAgICAgICAgICAgIGInXHhhNFx4YjlceGE0XHhhNlx4YTRceGEzXHhhNFx4YjBccicKKyAg ICAgICAgICAgICAgYidlbmQnKQorICAgIHN0cmVhbSA9IHN2bi5jb3JlLnN2bl9zdHJlYW1fZnJv bV9zdHJpbmdidWYoaW5fc3RyKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ZuLmNvcmUuc3ZuX3N0 cmVhbV9yZWFkMihzdHJlYW0sIDQwOTYpLCBpbl9zdHIpCisgICAgc3ZuLmNvcmUuc3ZuX3N0cmVh bV9zZWVrKHN0cmVhbSwgTm9uZSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKHN2bi5jb3JlLnN2bl9z dHJlYW1fcmVhZDIoc3RyZWFtLCAxMCksIGluX3N0clswOjEwXSkKKyAgICBzdm4uY29yZS5zdm5f c3RyZWFtX3NlZWsoc3RyZWFtLCBOb25lKQorICAgIHN2bi5jb3JlLnN2bl9zdHJlYW1fc2tpcChz dHJlYW0sIDIwKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ZuLmNvcmUuc3ZuX3N0cmVhbV9yZWFk MihzdHJlYW0sIDQwOTYpLCBpbl9zdHJbMjA6XSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKHN2bi5j b3JlLnN2bl9zdHJlYW1fcmVhZDIoc3RyZWFtLCA0MDk2KSwgYicnKQorICAgIHN2bi5jb3JlLnN2 bl9zdHJlYW1fY2xvc2Uoc3RyZWFtKQorCisgIGRlZiB0ZXN0X3N0cmVhbV93cml0ZV9leGNlcHRp b24oc2VsZik6CisgICAgb3N0cl91bmljb2RlID0gYidQeXRob24nLmRlY29kZSgpCisgICAgc3Ry ZWFtID0gc3ZuLmNvcmUuc3ZuX3N0cmVhbV9lbXB0eSgpCisgICAgd2l0aCBzZWxmLmFzc2VydFJh aXNlcyhUeXBlRXJyb3IpOgorICAgICAgICBzdm4uY29yZS5zdm5fc3RyZWFtX3dyaXRlKHN0cmVh bSwgb3N0cl91bmljb2RlKQorICAgIHN2bi5jb3JlLnN2bl9zdHJlYW1fY2xvc2Uoc3RyZWFtKQor CisgIGRlZiB0ZXN0X3N0cmVhbV93cml0ZShzZWxmKToKKyAgICBvMV9zdHIgPSBiJ1B5dGhvblx4 MDBceGE0XHhkMVx4YTRceGE0XHhhNFx4YmRceGE0XHhmM1xyXG4nCisgICAgbzJfc3RyID0gKGIn c3ViVmVyc2lvTlx4MDAnCisgICAgICAgICAgICAgIGInXHhhNFx4YjVceGE0XHhkNlx4YTRceGQw XHhhMVx4YmNceGE0XHhiOFx4YTRceGU3XHhhNFx4ZjNcbicpCisgICAgbzNfc3RyID0gIGInc3dp Z1x4MDBceGE0XHhiOVx4YTRceGE2XHhhNFx4YTNceGE0XHhiMFxyZW5kJworICAgIG91dF9zdHIg PSBvMV9zdHIgKyBvMl9zdHIgKyBvM19zdHIKKyAgICByZXdyaXRlX3N0ciA9IGInU3VidmVyc2lv bicKKyAgICBmZCwgZm5hbWUgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKKyAgICBvcy5jbG9zZShmZCkK KyAgICB0cnk6CisgICAgICBzdHJlYW0gPSBzdm4uY29yZS5zdm5fc3RyZWFtX2Zyb21fYXByZmls ZTIoZm5hbWUsIEZhbHNlKQorICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdm4uY29yZS5zdm5fc3Ry ZWFtX3dyaXRlKHN0cmVhbSwgb3V0X3N0ciksCisgICAgICAgICAgICAgICAgICAgICAgIGxlbihv dXRfc3RyKSkKKyAgICAgIHN2bi5jb3JlLnN2bl9zdHJlYW1fc2VlayhzdHJlYW0sIE5vbmUpCisg ICAgICBzZWxmLmFzc2VydEVxdWFsKHN2bi5jb3JlLnN2bl9zdHJlYW1fcmVhZF9mdWxsKHN0cmVh bSwgNDA5NiksIG91dF9zdHIpCisgICAgICBzdm4uY29yZS5zdm5fc3RyZWFtX3NlZWsoc3RyZWFt LCBOb25lKQorICAgICAgc3ZuLmNvcmUuc3ZuX3N0cmVhbV9za2lwKHN0cmVhbSwgbGVuKG8xX3N0 cikpCisgICAgICBzZWxmLmFzc2VydEVxdWFsKHN2bi5jb3JlLnN2bl9zdHJlYW1fd3JpdGUoc3Ry ZWFtLCByZXdyaXRlX3N0ciksCisgICAgICAgICAgICAgICAgICAgICAgIGxlbihyZXdyaXRlX3N0 cikpCisgICAgICBzdm4uY29yZS5zdm5fc3RyZWFtX3NlZWsoc3RyZWFtLCBOb25lKQorICAgICAg c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzdm4uY29yZS5zdm5fc3RyZWFtX3Jl YWRfZnVsbChzdHJlYW0sIDQwOTYpLAorICAgICAgICAgICAgICAgIG8xX3N0ciArIHJld3JpdGVf c3RyICsgbzJfc3RyW2xlbihyZXdyaXRlX3N0cik6XSArIG8zX3N0cikKKyAgICAgIHN2bi5jb3Jl LnN2bl9zdHJlYW1fY2xvc2Uoc3RyZWFtKQorICAgIGZpbmFsbHk6CisgICAgICB0cnk6CisgICAg ICAgIG9zLnJlbW92ZShmbmFtZSkKKyAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBwYXNz CisKKyAgZGVmIHRlc3Rfc3RyZWFtX3JlYWRsaW5lKHNlbGYpOgorICAgIG8xX3N0ciA9IGInUHl0 aG9uXHRceGE0XHhkMVx4YTRceGE0XHhhNFx4YmRceGE0XHhmM1xyXG4nCisgICAgbzJfc3RyID0g KGInU3VidmVyc2lvblx0JworICAgICAgICAgICAgICBiJ1x4YTRceGI1XHhhNFx4ZDZceGE0XHhk MFx4YTFceGJjXHhhNFx4YjhceGE0XHhlN1x4YTRceGYzXG4nKQorICAgIG8zX3N0ciA9ICBiJ3N3 aWdcdFx4YTRceGI5XHhhNFx4YTZceGE0XHhhM1x4YTRceGIwXHJlbmQnCisgICAgaW5fc3RyID0g bzFfc3RyICsgbzJfc3RyICsgbzNfc3RyCisgICAgc3RyZWFtID0gc3ZuLmNvcmUuc3ZuX3N0cmVh bV9mcm9tX3N0cmluZ2J1Zihpbl9zdHIpCisgICAgc2VsZi5hc3NlcnRFcXVhbChzdm4uY29yZS5z dm5fc3RyZWFtX3JlYWRsaW5lKHN0cmVhbSwgYidcbicpLAorICAgICAgICAgICAgICAgICAgICAg W28xX3N0cls6LTFdLCAwXSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKHN2bi5jb3JlLnN2bl9zdHJl YW1fcmVhZGxpbmUoc3RyZWFtLCBiJ1xuJyksCisgICAgICAgICAgICAgICAgICAgICBbbzJfc3Ry WzotMV0sIDBdKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ZuLmNvcmUuc3ZuX3N0cmVhbV9yZWFk bGluZShzdHJlYW0sIGInXG4nKSwKKyAgICAgICAgICAgICAgICAgICAgIFtvM19zdHIsIDFdKQor ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ZuLmNvcmUuc3ZuX3N0cmVhbV9yZWFkbGluZShzdHJlYW0s IGInXG4nKSwKKyAgICAgICAgICAgICAgICAgICAgIFtiJycsIDFdKQorICAgIHN2bi5jb3JlLnN2 bl9zdHJlYW1fc2VlayhzdHJlYW0sIE5vbmUpCisgICAgc2VsZi5hc3NlcnRFcXVhbChzdm4uY29y ZS5zdm5fc3RyZWFtX3JlYWRsaW5lKHN0cmVhbSwgYidcclxuJyksCisgICAgICAgICAgICAgICAg ICAgICBbbzFfc3RyWzotMl0sIDBdKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ZuLmNvcmUuc3Zu X3N0cmVhbV9yZWFkbGluZShzdHJlYW0sIGInXHJcbicpLAorICAgICAgICAgICAgICAgICAgICAg W28yX3N0ciArIG8zX3N0ciwgMV0pCisgICAgc3ZuLmNvcmUuc3ZuX3N0cmVhbV93cml0ZShzdHJl YW0sIGInXHJcbicpCisgICAgc3ZuLmNvcmUuc3ZuX3N0cmVhbV9zZWVrKHN0cmVhbSwgTm9uZSkK KyAgICBzZWxmLmFzc2VydEVxdWFsKHN2bi5jb3JlLnN2bl9zdHJlYW1fcmVhZGxpbmUoc3RyZWFt LCBiJ1xyXG4nKSwKKyAgICAgICAgICAgICAgICAgICAgIFtvMV9zdHJbOi0yXSwgMF0pCisgICAg c2VsZi5hc3NlcnRFcXVhbChzdm4uY29yZS5zdm5fc3RyZWFtX3JlYWRsaW5lKHN0cmVhbSwgYidc clxuJyksCisgICAgICAgICAgICAgICAgICAgICBbbzJfc3RyICsgbzNfc3RyLCAwXSkKKyAgICBz ZWxmLmFzc2VydEVxdWFsKHN2bi5jb3JlLnN2bl9zdHJlYW1fcmVhZGxpbmUoc3RyZWFtLCBiJ1xy XG4nKSwKKyAgICAgICAgICAgICAgICAgICAgIFtiJycsIDFdKQorICAgIHN2bi5jb3JlLnN2bl9z dHJlYW1fY2xvc2Uoc3RyZWFtKQorCisKIGRlZiBzdWl0ZSgpOgogICAgIHJldHVybiB1bml0dGVz dC5kZWZhdWx0VGVzdExvYWRlci5sb2FkVGVzdHNGcm9tVGVzdENhc2UoCiAgICAgICBTdWJ2ZXJz aW9uQ29yZVRlc3RDYXNlKQpJbmRleDogc3VidmVyc2lvbi9iaW5kaW5ncy9zd2lnL3B5dGhvbi90 ZXN0cy9kZWx0YS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzdWJ2ZXJzaW9uL2JpbmRpbmdzL3N3aWcvcHl0 aG9uL3Rlc3RzL2RlbHRhLnB5CShyZXZpc2lvbiAxODQ5MDI3KQorKysgc3VidmVyc2lvbi9iaW5k aW5ncy9zd2lnL3B5dGhvbi90ZXN0cy9kZWx0YS5weQkod29ya2luZyBjb3B5KQpAQCAtNDcsOSAr NDcsOSBAQAogICBkZWYgdGVzdFR4V2luZG93SGFuZGxlcl9zdHJlYW1fSUYoc2VsZik6CiAgICAg IiIiVGVzdCB0eF9pbnZva2Vfd2luZG93X2hhbmRsZXIsIHdpdGggc3ZuLmNvcmUuc3ZuX3N0cmVh bV90IG9iamVjdCIiIgogICAgIHBvb2wgPSBzdm4uY29yZS5Qb29sKCkKLSAgICBpbl9zdHIgPSAi aGVsbG8gd29ybGQiCisgICAgaW5fc3RyID0gYiJoZWxsbyB3b3JsZCIKICAgICBzcmNfc3RyZWFt ID0gc3ZuLmNvcmUuc3ZuX3N0cmVhbV9mcm9tX3N0cmluZ2J1Zihpbl9zdHIpCi0gICAgY29udGVu dF9zdHIgPSAiYnllIHdvcmxkIgorICAgIGNvbnRlbnRfc3RyID0gYiJieWUgd29ybGQiCiAgICAg Y29udGVudF9zdHJlYW0gPSBzdm4uY29yZS5zdm5fc3RyZWFtX2Zyb21fc3RyaW5nYnVmKGNvbnRl bnRfc3RyKQogICAgIGZkLCBmbmFtZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQogICAgIG9zLmNsb3Nl KGZkKQpAQCAtNzIsMTAgKzcyLDEwIEBACiAgIGRlZiB0ZXN0VHhXaW5kb3dIYW5kbGVyX1N0cmVh bV9JRihzZWxmKToKICAgICAiIiJUZXN0IHR4X2ludm9rZV93aW5kb3dfaGFuZGxlciwgd2l0aCBz dm4uY29yZS5TdHJlYW0gb2JqZWN0IiIiCiAgICAgcG9vbCA9IHN2bi5jb3JlLlBvb2woKQotICAg IGluX3N0ciA9ICJoZWxsbyB3b3JsZCIKKyAgICBpbl9zdHIgPSBiImhlbGxvIHdvcmxkIgogICAg IHNyY19zdHJlYW0gPSBzdm4uY29yZS5TdHJlYW0oCiAgICAgICAgICAgICAgICAgICAgIHN2bi5j b3JlLnN2bl9zdHJlYW1fZnJvbV9zdHJpbmdidWYoaW5fc3RyKSkKLSAgICBjb250ZW50X3N0ciA9 ICJieWUgd29ybGQiCisgICAgY29udGVudF9zdHIgPSBiImJ5ZSB3b3JsZCIKICAgICBjb250ZW50 X3N0cmVhbSA9IHN2bi5jb3JlLlN0cmVhbSgKICAgICAgICAgICAgICAgICAgICAgc3ZuLmNvcmUu c3ZuX3N0cmVhbV9mcm9tX3N0cmluZ2J1Zihjb250ZW50X3N0cikpCiAgICAgZmQsIGZuYW1lID0g dGVtcGZpbGUubWtzdGVtcCgpCkluZGV4OiBzdWJ2ZXJzaW9uL2JpbmRpbmdzL3N3aWcvcHl0aG9u L3Rlc3RzL3JlcG9zaXRvcnkucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3VidmVyc2lvbi9iaW5kaW5ncy9z d2lnL3B5dGhvbi90ZXN0cy9yZXBvc2l0b3J5LnB5CShyZXZpc2lvbiAxODQ5MDI3KQorKysgc3Vi dmVyc2lvbi9iaW5kaW5ncy9zd2lnL3B5dGhvbi90ZXN0cy9yZXBvc2l0b3J5LnB5CSh3b3JraW5n IGNvcHkpCkBAIC0yMzIsNyArMjMyLDcgQEAKICAgICAgICAgRHVtcFN0cmVhbVBhcnNlci5zZXRf ZnVsbHRleHQoc2VsZiwgbm9kZV9iYXRvbikKICAgICAgICAgcmV0dXJuIDQyCiAgICAgc3RyZWFt ID0gb3Blbihvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhYy92ZXJzaW9uY29udHJvbC90ZXN0cy9zdm5y ZXBvcy5kdW1wIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYWMvdmVyc2lv bmNvbnRyb2wvdGVzdHMvc3ZucmVwb3MuZHVtcCIpLCAicmIiKQogICAgIHRyeToKICAgICAgIGRz cCA9IER1bXBTdHJlYW1QYXJzZXJTdWJjbGFzcygpCiAgICAgICBwdHIsIGJhdG9uID0gcmVwb3Mu bWFrZV9wYXJzZV9mbnMzKGRzcCkKSW5kZXg6IHN1YnZlcnNpb24vYmluZGluZ3Mvc3dpZy9weXRo b24vdGVzdHMvdHJhYy92ZXJzaW9uY29udHJvbC90ZXN0cy9zdm5fZnMucHkKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gc3VidmVyc2lvbi9iaW5kaW5ncy9zd2lnL3B5dGhvbi90ZXN0cy90cmFjL3ZlcnNpb25jb250 cm9sL3Rlc3RzL3N2bl9mcy5weQkocmV2aXNpb24gMTg0OTAyNykKKysrIHN1YnZlcnNpb24vYmlu ZGluZ3Mvc3dpZy9weXRob24vdGVzdHMvdHJhYy92ZXJzaW9uY29udHJvbC90ZXN0cy9zdm5fZnMu cHkJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw3ICsxNzMsNyBAQAogICAgICAgICBub2RlID0gc2Vs Zi5yZXBvcy5nZXRfbm9kZSgnL3RydW5rL1JFQURNRS50eHQnKQogICAgICAgICBzZWxmLmFzc2Vy dEVxdWFsKDgsIG5vZGUuY29udGVudF9sZW5ndGgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo J3RleHQvcGxhaW4nLCBub2RlLmNvbnRlbnRfdHlwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh bCgnQSB0ZXN0LlxuJywgbm9kZS5nZXRfY29udGVudCgpLnJlYWQoKSkKKyAgICAgICAgc2VsZi5h c3NlcnRFcXVhbChiJ0EgdGVzdC5cbicsIG5vZGUuZ2V0X2NvbnRlbnQoKS5yZWFkKCkpCiAKICAg ICBkZWYgdGVzdF9nZXRfZGlyX3Byb3BlcnRpZXMoc2VsZik6CiAgICAgICAgIGYgPSBzZWxmLnJl cG9zLmdldF9ub2RlKCcvdHJ1bmsnKQpJbmRleDogc3VidmVyc2lvbi9iaW5kaW5ncy9zd2lnL3N2 bl9yYS5pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIHN1YnZlcnNpb24vYmluZGluZ3Mvc3dpZy9zdm5fcmEuaQko cmV2aXNpb24gMTg0OTAyNykKKysrIHN1YnZlcnNpb24vYmluZGluZ3Mvc3dpZy9zdm5fcmEuaQko d29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsMjUgQEAKICNlbmRpZgogCiAjaWZkZWYgU1dJR1BZ VEhPTgorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIGhhbmRsZSBzdm5fcmFfcHJpbnRfcmFfbGlicmFy aWVzKCkuCisqLworJXR5cGVtYXAoYXJnb3V0KSBzdm5fc3RyaW5nYnVmX3QgKipkZXNjcmlwdGlv bnMgeworICAgIFB5T2JqZWN0ICpzOworICAgIGlmICgqJDEgPT0gTlVMTCkgeworICAgICAgICBQ eV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIHMgPSBQeV9Ob25lOworICAgIH0gZWxzZSB7Cisg ICAgICAgIHMgPSBQeVN0cl9Gcm9tU3RyaW5nQW5kU2l6ZSgoKiQxKS0+ZGF0YSwgKCokMSktPmxl bik7CisgICAgICAgIGlmIChzID09IE5VTEwpCisgICAgICAgICAgICBTV0lHX2ZhaWw7CisgICAg fQorICAgICVhcHBlbmRfb3V0cHV0KHMpOworfQorI2VuZGlmCisKKworI2lmZGVmIFNXSUdQWVRI T04KICVjYWxsYmFja190eXBlbWFwKGNvbnN0IHN2bl9yYV9yZXBvcnRlcjJfdCAqcmVwb3J0ZXIs IHZvaWQgKnJlcG9ydF9iYXRvbiwKICAgICAgICAgICAgICAgICAgIHN2bl9zd2lnX3B5X2dldF9y YV9yZXBvcnRlcjIoKSwKICAgICAgICAgICAgICAgICAgICwK --000000000000647d32057d24ea17--