From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by sourceware.org (Postfix) with ESMTP id E6B1B3835413 for ; Wed, 21 Jul 2021 18:18:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E6B1B3835413 Received: from mail-io1-f72.google.com (mail-io1-f72.google.com [209.85.166.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-71-vMj91v8EOneQeW9KOWd-1A-1; Wed, 21 Jul 2021 14:18:27 -0400 X-MC-Unique: vMj91v8EOneQeW9KOWd-1A-1 Received: by mail-io1-f72.google.com with SMTP id p7-20020a6b63070000b029050017e563a6so2180862iog.4 for ; Wed, 21 Jul 2021 11:18:26 -0700 (PDT) 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=+CzXZpjnc/zAIEz2Vtgtz0sLLOAXRdppAZPosBerZsU=; b=Rv7rz4NmbxrZX6PZM3oyy0NmnGjuSRghdu+dlblEQD48j4MzX9tFHzUnwYvGYMnUfy 4KL9e3tVk1JvWKIyq8nvRovf+N9pPhC8IG7pfpSF79hkD0GMuiJ/yqaCY0e6N21KgvPh p4FYD5UXo6rExYHI91MREN71+Cd/4BEe96n53rrjJC0MYZlcqmhN3vp4PJ5U034iVbMs AdvZ6w1jCufuHoZbE964JSfqN7uykgDtT2U85mRI1/ft7frOEJ1t4zaOW6I5+KByDxaC sF7MLlf7apcPyWFAZWXla+lJaZ/1rfd4SVf6LR6ngYEBJ6Sshv2D4/Xd3pxyqxqI4lGk lZww== X-Gm-Message-State: AOAM5311x0yjZoiQwksxjgEkvRpoNPtuMaMSDvbSgQKJiQfQ4tU8e1RO LOSDP2laxPfICOGrbIZmagC/tf8WJhwPDR/qPZPdDhPA7Cjzu9nhs/NVQq4CszLq/jfJkbh8rfn p8DKZh5DkVlG9lwpTMLqC5agnBMrCiJiDqtyOZtg5Zw== X-Received: by 2002:a5e:db02:: with SMTP id q2mr22715401iop.172.1626891506384; Wed, 21 Jul 2021 11:18:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwameiaY/xLFRvkmcHl8XD3tf0gCcc6e5aBu/sX3OTIP+W8QxxTgoZP4HRrPfvJvC1+bRsc8km98iNNiwj4FCU= X-Received: by 2002:a5e:db02:: with SMTP id q2mr22715385iop.172.1626891506094; Wed, 21 Jul 2021 11:18:26 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Noah Sanci Date: Wed, 21 Jul 2021 14:18:15 -0400 Message-ID: Subject: Re: [Bug debuginfod/28034] %-escape url characters To: Mark Wielaard Cc: elfutils-devel@sourceware.org, Frank Eigler X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="0000000000004f85ae05c7a632e8" X-Spam-Status: No, score=-14.9 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: elfutils-devel@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Elfutils-devel mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jul 2021 18:18:31 -0000 --0000000000004f85ae05c7a632e8 Content-Type: text/plain; charset="UTF-8" Hello, > On Mon, Jul 19, 2021 at 10:53:17AM -0400, Noah Sanci via Elfutils-devel wrote: > > When requesting some source files, some URL-inconvenient chars > > sometimes pop up. Example from f33 libstdc++: > > /buildid/44d8485cb75512c2ca5c8f70afbd475cae30af4f/source/usr/src/debug/ > > gcc-10.3.1-1.fc33.x86_64/obj-x86_64-redhat-linux/x86_64-redhat-linux/ > > libstdc++-v3/src/c++11/../../../../../libstdc++-v3/src/c++11/ > > condition_variable.cc > > As this URL is passed into debuginfod's handler_cb, it appears that the > > + signs are helpfully unescaped to spaces by libmicrohttpd, which > > 'course breaks everything. We need to suppress this HTTP URL > > processing step. Also worth checking that %HEX decoding is also > > suppressed. > > I find this description slightly confusing. It ends with "Also worth > checking..." but that is actually what is done in this patch. The part > before that about what debuginfod/microhttpd does on the server side > is interesting, but not really what this patch is about (just why this > patch is necessary, but it seems necessary on the client side always > whatever server is used). Thank you for bringing this to my attention. Fixed > curl_easy_escape () can return NULL on failure. > Fixed. > > +Note: the client should %-escape characters in /SOURCE/FILE that are not shown as "unreserved" in section 2.3 of RFC3986. Please read the new note just to ensure that it's reasonable, as my updated note specifies some characters that will be percent escaped. Otherwise fixed. > > @@ -149,18 +150,18 @@ ps -q $PID1 -e -L -o '%p %c %a' | grep traverse > > # Compile a simple program, strip its debuginfo and save the build-id. > > # Also move the debuginfo into another directory so that elfutils > > # cannot find it without debuginfod. > > -echo "int main() { return 0; }" > ${PWD}/prog.c > > -tempfiles prog.c > > +echo "int main() { return 0; }" > ${PWD}/p+r%o\$g.c > > +tempfiles p+r%o\$g.c > > # Create a subdirectory to confound source path names > > mkdir foobar > > -gcc -Wl,--build-id -g -o prog ${PWD}/foobar///./../prog.c > > -testrun ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog > > +gcc -Wl,--build-id -g -o p+r%o\$g ${PWD}/foobar///./../p+r%o\$g.c > > +testrun ${abs_top_builddir}/src/strip -g -f p+r%o\$g.debug ${PWD}/p+r%o\$g > > BUILDID=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \ > > - -a prog | grep 'Build ID' | cut -d ' ' -f 7` > > + -a p+r%o\\$g | grep 'Build ID' | cut -d ' ' -f 7` > > > > wait_ready $PORT1 'thread_work_total{role="traverse"}' 1 > > -mv prog F > > -mv prog.debug F > > +mv p+r%o\$g F > > +mv p+r%o\$g.debug F > > kill -USR1 $PID1 > > # Wait till both files are in the index. > > wait_ready $PORT1 'thread_work_total{role="traverse"}' 2 > > @@ -171,7 +172,7 @@ wait_ready $PORT1 'thread_busy{role="scan"}' 0 > > > > # Test whether elfutils, via the debuginfod client library dlopen hooks, > > # is able to fetch debuginfo from the local debuginfod. > > -testrun ${abs_builddir}/debuginfod_build_id_find -e F/prog 1 > > +testrun ${abs_builddir}/debuginfod_build_id_find -e F/p+r%o\$g 1 > > > > ######################################################################## > > > > @@ -213,22 +214,22 @@ fi > > # Test whether debuginfod-find is able to fetch those files. > > rm -rf $DEBUGINFOD_CACHE_PATH # clean it from previous tests > > filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID` > > -cmp $filename F/prog.debug > > +cmp $filename F/p+r%o\$g.debug > > if [ -w $filename ]; then > > echo "cache file writable, boo" > > err > > fi > > > > -filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find executable F/prog` > > -cmp $filename F/prog > > +filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find executable F/p+r%o\\$g` > > +cmp $filename F/p+r%o\$g > > > > # raw source filename > > -filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find source $BUILDID ${PWD}/foobar///./../prog.c` > > -cmp $filename ${PWD}/prog.c > > +filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find source $BUILDID ${PWD}/foobar///./../p+r%o\\$g.c` > > +cmp $filename ${PWD}/p+r%o\$g.c > > > > # and also the canonicalized one > > -filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find source $BUILDID ${PWD}/prog.c` > > -cmp $filename ${PWD}/prog.c > > +filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find source $BUILDID ${PWD}/p+r%o\\$g.c` > > +cmp $filename ${PWD}/p+r%o\$g.c > > > > > > ######################################################################## > > @@ -672,7 +673,7 @@ touch -d '1970-01-01' $DEBUGINFOD_CACHE_PATH/00000000 # old enough to guarantee > > echo 0 > $DEBUGINFOD_CACHE_PATH/cache_clean_interval_s > > echo 0 > $DEBUGINFOD_CACHE_PATH/max_unused_age_s > > > > -testrun ${abs_builddir}/debuginfod_build_id_find -e F/prog 1 > > +testrun ${abs_builddir}/debuginfod_build_id_find -e F/p+r%o\$g 1 > > > > testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID2 && false || true > > > > @@ -725,6 +726,7 @@ PID4=$! > > wait_ready $PORT3 'ready' 1 > > tempfiles vlog$PORT3 > > errfiles vlog$PORT3 > > +tempfiles $DB.backup* > > ??? > Hopefully the updated changelog message clarifies these changes. > > kill -USR2 $PID4 > > wait_ready $PORT3 'thread_work_total{role="groom"}' 1 > > @@ -738,6 +740,7 @@ wait_ready $PORT3 'groom{statistic="files scanned (#)"}' 0 > > wait_ready $PORT3 'groom{statistic="files scanned (mb)"}' 0 > > > > kill $PID4 > > +PID4=0 > > And this? > Might need to be > > wait $PID > PID4=0 The small test suite fixes have been removed from the script, however I would like to update the test suite ASAP. Can I just commit a new branch titled something like 'elfutils-test-fixes' without a specific pr? Noah --0000000000004f85ae05c7a632e8 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-debuginfod-PR28034-client-side-escape-url-characters.patch" Content-Disposition: attachment; filename="0001-debuginfod-PR28034-client-side-escape-url-characters.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_krdt3k0m0 RnJvbSAyNmQzOWVlZTJlY2MwMzBhYzdlNDg4OTc3MDkyZjYyYWZkNzJlOTAzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FoIFNhbmNpIDxuc2FuY2lAcmVkaGF0LmNvbT4KRGF0ZTog RnJpLCAxNiBKdWwgMjAyMSAxNToxNjoyMCAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIGRlYnVnaW5m b2Q6IFBSMjgwMzQgLSBjbGllbnQtc2lkZSAlLWVzY2FwZSB1cmwgY2hhcmFjdGVycwoKV2hlbiBy ZXF1ZXN0aW5nIHNvbWUgc291cmNlIGZpbGVzLCBzb21lIFVSTC1pbmNvbnZlbmllbnQgY2hhcnMK c29tZXRpbWVzIHBvcCB1cC4gIEV4YW1wbGUgZnJvbSBmMzMgbGlic3RkYysrOgovYnVpbGRpZC80 NGQ4NDg1Y2I3NTUxMmMyY2E1YzhmNzBhZmJkNDc1Y2FlMzBhZjRmL3NvdXJjZS91c3Ivc3JjL2Rl YnVnLwpnY2MtMTAuMy4xLTEuZmMzMy54ODZfNjQvb2JqLXg4Nl82NC1yZWRoYXQtbGludXgveDg2 XzY0LXJlZGhhdC1saW51eC8KbGlic3RkYysrLXYzL3NyYy9jKysxMS8uLi8uLi8uLi8uLi8uLi9s aWJzdGRjKystdjMvc3JjL2MrKzExLwpjb25kaXRpb25fdmFyaWFibGUuY2MKQXMgdGhpcyBVUkwg aXMgcGFzc2VkIGludG8gZGVidWdpbmZvZCdzIGhhbmRsZXJfY2IsIGl0IGFwcGVhcnMgdGhhdCB0 aGUKKyBzaWducyBhcmUgaGVscGZ1bGx5IHVuZXNjYXBlZCB0byBzcGFjZXMgYnkgbGlibWljcm9o dHRwZCwgd2hpY2gKJ2NvdXJzZSBicmVha3MgZXZlcnl0aGluZy4KSW4gb3JkZXIgdG8gZW5zdXJl IHRoZSBzZXJ2ZXIgcHJvcGVybHkgcGFyc2VzIHVybHMgc3VjaCBhcyB0aGlzIG9uZSwKJS1lc2Nh cGUgY2hhcmFjdGVycyBvbiB0aGUgY2xpZW50IHNpZGUgc28gdGhhdCB0aGUgY29ycmVjdCB1cmwK aXMgcHJlc2VydmVkIGFuZCBwcm9wZXJseSBwcm9jZXNzZWQgb24gdGhlIHNlcnZlciBzaWRlLgoK aHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjgwMzQKClNp Z25lZC1vZmYtYnk6IE5vYWggU2FuY2kgPG5zYW5jaUByZWRoYXQuY29tPgoKYQotLS0KIGRlYnVn aW5mb2QvQ2hhbmdlTG9nICAgICAgICAgICB8ICA2ICsrKysrKwogZGVidWdpbmZvZC9kZWJ1Z2lu Zm9kLWNsaWVudC5jIHwgMTcgKysrKysrKysrKysrKystLS0KIGRvYy9kZWJ1Z2luZm9kLjggICAg ICAgICAgICAgICB8ICA0ICsrKysKIHRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICB8ICA5 ICsrKysrKysrKwogdGVzdHMvcnVuLWRlYnVnaW5mb2QtZmluZC5zaCAgIHwgMzIgKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygr KSwgMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZGVidWdpbmZvZC9DaGFuZ2VMb2cgYi9k ZWJ1Z2luZm9kL0NoYW5nZUxvZwppbmRleCBlNzE0MzZjYS4uYWFkMzVhNGUgMTAwNjQ0Ci0tLSBh L2RlYnVnaW5mb2QvQ2hhbmdlTG9nCisrKyBiL2RlYnVnaW5mb2QvQ2hhbmdlTG9nCkBAIC0xLDMg KzEsOSBAQAorMjAyMS0wNy0xNiAgTm9haCBTYW5jaSAgPG5zYW5jaUByZWRoYXQuY29tPgorCisJ UFIyODAzNAorCSogZGVidWdpbmZvZC1jbGllbnQuYyAoZGVidWdpbmZvZF9xdWVyeV9zZXJ2ZXIp OiAlIGVzY2FwZSBmaWxlbmFtZQorCXNvIHRoZSBjb21wbGV0ZWQgdXJsIGlzIHByb2Nlc3NlZCBw cm9wZXJseS4KKwogMjAyMS0wNy0wNiAgQWxpY2UgWmhhbmcgIDxhbGl6aGFuZ0ByZWRoYXQuY29t PgogCiAgICAgICAgIFBSMjc1MzEKZGlmZiAtLWdpdCBhL2RlYnVnaW5mb2QvZGVidWdpbmZvZC1j bGllbnQuYyBiL2RlYnVnaW5mb2QvZGVidWdpbmZvZC1jbGllbnQuYwppbmRleCBmMTJmNjA5Yy4u NjQ5MzZhY2QgMTAwNjQ0Ci0tLSBhL2RlYnVnaW5mb2QvZGVidWdpbmZvZC1jbGllbnQuYworKysg Yi9kZWJ1Z2luZm9kL2RlYnVnaW5mb2QtY2xpZW50LmMKQEAgLTgzMSw5ICs4MzEsMjAgQEAgZGVi dWdpbmZvZF9xdWVyeV9zZXJ2ZXIgKGRlYnVnaW5mb2RfY2xpZW50ICpjLAogICAgICAgZWxzZQog ICAgICAgICBzbGFzaGJ1aWxkaWQgPSAiL2J1aWxkaWQiOwogCi0gICAgICBpZiAoZmlsZW5hbWUp IC8qIG11c3Qgc3RhcnQgd2l0aCAvICovCi0gICAgICAgIHNucHJpbnRmKGRhdGFbaV0udXJsLCBQ QVRIX01BWCwgIiVzJXMvJXMvJXMlcyIsIHNlcnZlcl91cmwsCi0gICAgICAgICAgICAgICAgIHNs YXNoYnVpbGRpZCwgYnVpbGRfaWRfYnl0ZXMsIHR5cGUsIGZpbGVuYW1lKTsKKyAgICAgIGlmIChm aWxlbmFtZSkvKiBtdXN0IHN0YXJ0IHdpdGggLyAqLworICAgICAgICB7CisgICAgICAgICAgLyog UFIyODAzNCBlc2NhcGUgY2hhcmFjdGVycyBpbiBjb21wbGV0ZWQgdXJsIHRvICVoaCBmb3JtYXQu ICovCisgICAgICAgICAgY2hhciAqZXNjYXBlZF9zdHJpbmc7CisgICAgICAgICAgZXNjYXBlZF9z dHJpbmcgPSBjdXJsX2Vhc3lfZXNjYXBlKGRhdGFbaV0uaGFuZGxlLCBmaWxlbmFtZSwgMCk7Cisg ICAgICAgICAgaWYgKCFlc2NhcGVkX3N0cmluZykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgcmMgPSBFTk9NRU07CisgICAgICAgICAgICAgIGdvdG8gb3V0MTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICBzbnByaW50ZihkYXRhW2ldLnVybCwgUEFUSF9NQVgsICIlcyVzLyVzLyVzJXMi LCBzZXJ2ZXJfdXJsLAorICAgICAgICAgICAgICAgICAgIHNsYXNoYnVpbGRpZCwgYnVpbGRfaWRf Ynl0ZXMsIHR5cGUsIGVzY2FwZWRfc3RyaW5nKTsKKyAgICAgICAgICBjdXJsX2ZyZWUoZXNjYXBl ZF9zdHJpbmcpOworICAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICAgIHNucHJpbnRmKGRhdGFb aV0udXJsLCBQQVRIX01BWCwgIiVzJXMvJXMvJXMiLCBzZXJ2ZXJfdXJsLAogICAgICAgICAgICAg ICAgICBzbGFzaGJ1aWxkaWQsIGJ1aWxkX2lkX2J5dGVzLCB0eXBlKTsKZGlmZiAtLWdpdCBhL2Rv Yy9kZWJ1Z2luZm9kLjggYi9kb2MvZGVidWdpbmZvZC44CmluZGV4IDFhZGY3MDNhLi5lZThmNzZh ZSAxMDA2NDQKLS0tIGEvZG9jL2RlYnVnaW5mb2QuOAorKysgYi9kb2MvZGVidWdpbmZvZC44CkBA IC0yOTksNiArMjk5LDEwIEBAIGwgbC4KIFwuLi9iYXIvZm9vLmMgQVRfY29tcF9kaXI9L3pvby8J L2J1aWxkaWQvQlVJTERJRC9zb3VyY2Uvem9vLy8uLi9iYXIvZm9vLmMKIC5URQogCitOb3RlOiB0 aGUgY2xpZW50IHNob3VsZCAlLWVzY2FwZSBjaGFyYWN0ZXJzIGluIC9TT1VSQ0UvRklMRSB0aGF0 IGFyZQorbm90IHNob3duIGFzICJ1bnJlc2VydmVkIiBpbiBzZWN0aW9uIDIuMyBvZiBSRkMzOTg2 LiBTb21lIGNoYXJhY3RlcnMKK3RoYXQgd2lsbCBiZSBlc2NhcGVkIGluY2x1ZGUgIisiLCAiXFwi LCAiJCIsICIhIiwgdGhlICdzcGFjZScgY2hhcmFjdGVyLAorYW5kICI7Ii4gUkZDMzk4NiBpbmNs dWRlcyBhIG1vcmUgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIHRoZXNlIGNoYXJhY3RlcnMuCiAuU1Mg L21ldHJpY3MKIAogVGhpcyBlbmRwb2ludCByZXR1cm5zIGEgUHJvbWV0aGV1cyBmb3JtYXR0ZWQg dGV4dC9wbGFpbiBkdW1wIG9mIGEKZGlmZiAtLWdpdCBhL3Rlc3RzL0NoYW5nZUxvZyBiL3Rlc3Rz L0NoYW5nZUxvZwppbmRleCAxNDYwYjQyMi4uMDg0MGU3YWYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL0No YW5nZUxvZworKysgYi90ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wNy0x NiAgTm9haCBTYW5jaSAgPG5zYW5jaUByZWRoYXQuY29tPgorCisJUFIyODAzNAorCSogcnVuLWRl YnVnaW5mb2QtZmluZC5zaDogQWRkZWQgYSB0ZXN0IGVuc3VyaW5nIGZpbGVzIHdpdGggJQorCWVz Y2FwYWJsZSBjaGFyYWN0ZXJzIGluIHRoZWlyIHBhdGhzIGFyZSBhY2Nlc3NpYmxlLiBUaGUgdGVz dAorCWl0c2VsZiBpcyBjaGFuZ2luZyB0aGUgbmFtZSBvZiBhIGJpbmFyeSBrbm93biBwcmV2aW91 c2x5IGFzIHByb2cgdG8KKwlwK3IlbyRnLiBHZW5lcmFsIG9wZXJhdGlvbnMgc3VjaCBhcyBhY2Nl c3NpbmcgcCtyJW8kZyBhY3RzIGFzIHRoZQorCXRlc3QgZm9yICUtZXNjYXBlIGNoZWNraW5nLgor CiAyMDIxLTA3LTA2ICBBbGljZSBaaGFuZyAgPGFsaXpoYW5nQHJlZGhhdC5jb20+CiAKICAgICAg ICAgUFIyNzUzMQpkaWZmIC0tZ2l0IGEvdGVzdHMvcnVuLWRlYnVnaW5mb2QtZmluZC5zaCBiL3Rl c3RzL3J1bi1kZWJ1Z2luZm9kLWZpbmQuc2gKaW5kZXggNzNiYmU2NWIuLmVjZjMxOTVlIDEwMDc1 NQotLS0gYS90ZXN0cy9ydW4tZGVidWdpbmZvZC1maW5kLnNoCisrKyBiL3Rlc3RzL3J1bi1kZWJ1 Z2luZm9kLWZpbmQuc2gKQEAgLTE0OSwxOCArMTQ5LDE4IEBAIHBzIC1xICRQSUQxIC1lIC1MIC1v ICclcCAlYyAlYScgfCBncmVwIHRyYXZlcnNlCiAjIENvbXBpbGUgYSBzaW1wbGUgcHJvZ3JhbSwg c3RyaXAgaXRzIGRlYnVnaW5mbyBhbmQgc2F2ZSB0aGUgYnVpbGQtaWQuCiAjIEFsc28gbW92ZSB0 aGUgZGVidWdpbmZvIGludG8gYW5vdGhlciBkaXJlY3Rvcnkgc28gdGhhdCBlbGZ1dGlscwogIyBj YW5ub3QgZmluZCBpdCB3aXRob3V0IGRlYnVnaW5mb2QuCi1lY2hvICJpbnQgbWFpbigpIHsgcmV0 dXJuIDA7IH0iID4gJHtQV0R9L3Byb2cuYwotdGVtcGZpbGVzIHByb2cuYworZWNobyAiaW50IG1h aW4oKSB7IHJldHVybiAwOyB9IiA+ICR7UFdEfS9wK3Ilb1wkZy5jCit0ZW1wZmlsZXMgcCtyJW9c JGcuYwogIyBDcmVhdGUgYSBzdWJkaXJlY3RvcnkgdG8gY29uZm91bmQgc291cmNlIHBhdGggbmFt ZXMKIG1rZGlyIGZvb2JhcgotZ2NjIC1XbCwtLWJ1aWxkLWlkIC1nIC1vIHByb2cgJHtQV0R9L2Zv b2Jhci8vLy4vLi4vcHJvZy5jCi10ZXN0cnVuICR7YWJzX3RvcF9idWlsZGRpcn0vc3JjL3N0cmlw IC1nIC1mIHByb2cuZGVidWcgJHtQV0R9L3Byb2cKK2djYyAtV2wsLS1idWlsZC1pZCAtZyAtbyBw K3Ilb1wkZyAke1BXRH0vZm9vYmFyLy8vLi8uLi9wK3Ilb1wkZy5jCit0ZXN0cnVuICR7YWJzX3Rv cF9idWlsZGRpcn0vc3JjL3N0cmlwIC1nIC1mIHArciVvXCRnLmRlYnVnICR7UFdEfS9wK3Ilb1wk ZwogQlVJTERJRD1gZW52IExEX0xJQlJBUllfUEFUSD0kbGRwYXRoICR7YWJzX2J1aWxkZGlyfS8u Li9zcmMvcmVhZGVsZiBcCi0gICAgICAgICAgLWEgcHJvZyB8IGdyZXAgJ0J1aWxkIElEJyB8IGN1 dCAtZCAnICcgLWYgN2AKKyAgICAgICAgICAtYSBwK3Ilb1xcJGcgfCBncmVwICdCdWlsZCBJRCcg fCBjdXQgLWQgJyAnIC1mIDdgCiAKIHdhaXRfcmVhZHkgJFBPUlQxICd0aHJlYWRfd29ya190b3Rh bHtyb2xlPSJ0cmF2ZXJzZSJ9JyAxCi1tdiBwcm9nIEYKLW12IHByb2cuZGVidWcgRgorbXYgcCty JW9cJGcgRgorbXYgcCtyJW9cJGcuZGVidWcgRgoga2lsbCAtVVNSMSAkUElEMQogIyBXYWl0IHRp bGwgYm90aCBmaWxlcyBhcmUgaW4gdGhlIGluZGV4Lgogd2FpdF9yZWFkeSAkUE9SVDEgJ3RocmVh ZF93b3JrX3RvdGFse3JvbGU9InRyYXZlcnNlIn0nIDIKQEAgLTE3MSw3ICsxNzEsNyBAQCB3YWl0 X3JlYWR5ICRQT1JUMSAndGhyZWFkX2J1c3l7cm9sZT0ic2NhbiJ9JyAwCiAKICMgVGVzdCB3aGV0 aGVyIGVsZnV0aWxzLCB2aWEgdGhlIGRlYnVnaW5mb2QgY2xpZW50IGxpYnJhcnkgZGxvcGVuIGhv b2tzLAogIyBpcyBhYmxlIHRvIGZldGNoIGRlYnVnaW5mbyBmcm9tIHRoZSBsb2NhbCBkZWJ1Z2lu Zm9kLgotdGVzdHJ1biAke2Fic19idWlsZGRpcn0vZGVidWdpbmZvZF9idWlsZF9pZF9maW5kIC1l IEYvcHJvZyAxCit0ZXN0cnVuICR7YWJzX2J1aWxkZGlyfS9kZWJ1Z2luZm9kX2J1aWxkX2lkX2Zp bmQgLWUgRi9wK3Ilb1wkZyAxCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCkBAIC0yMTMsMjIgKzIxMywy MiBAQCBmaQogIyBUZXN0IHdoZXRoZXIgZGVidWdpbmZvZC1maW5kIGlzIGFibGUgdG8gZmV0Y2gg dGhvc2UgZmlsZXMuCiBybSAtcmYgJERFQlVHSU5GT0RfQ0FDSEVfUEFUSCAjIGNsZWFuIGl0IGZy b20gcHJldmlvdXMgdGVzdHMKIGZpbGVuYW1lPWB0ZXN0cnVuICR7YWJzX3RvcF9idWlsZGRpcn0v ZGVidWdpbmZvZC9kZWJ1Z2luZm9kLWZpbmQgZGVidWdpbmZvICRCVUlMRElEYAotY21wICRmaWxl bmFtZSBGL3Byb2cuZGVidWcKK2NtcCAkZmlsZW5hbWUgRi9wK3Ilb1wkZy5kZWJ1ZwogaWYgWyAt dyAkZmlsZW5hbWUgXTsgdGhlbgogICAgIGVjaG8gImNhY2hlIGZpbGUgd3JpdGFibGUsIGJvbyIK ICAgICBlcnIKIGZpCiAKLWZpbGVuYW1lPWB0ZXN0cnVuICR7YWJzX3RvcF9idWlsZGRpcn0vZGVi dWdpbmZvZC9kZWJ1Z2luZm9kLWZpbmQgZXhlY3V0YWJsZSBGL3Byb2dgCi1jbXAgJGZpbGVuYW1l IEYvcHJvZworZmlsZW5hbWU9YHRlc3RydW4gJHthYnNfdG9wX2J1aWxkZGlyfS9kZWJ1Z2luZm9k L2RlYnVnaW5mb2QtZmluZCBleGVjdXRhYmxlIEYvcCtyJW9cXCRnYAorY21wICRmaWxlbmFtZSBG L3ArciVvXCRnCiAKICMgcmF3IHNvdXJjZSBmaWxlbmFtZQotZmlsZW5hbWU9YHRlc3RydW4gJHth YnNfdG9wX2J1aWxkZGlyfS9kZWJ1Z2luZm9kL2RlYnVnaW5mb2QtZmluZCBzb3VyY2UgJEJVSUxE SUQgJHtQV0R9L2Zvb2Jhci8vLy4vLi4vcHJvZy5jYAotY21wICRmaWxlbmFtZSAgJHtQV0R9L3By b2cuYworZmlsZW5hbWU9YHRlc3RydW4gJHthYnNfdG9wX2J1aWxkZGlyfS9kZWJ1Z2luZm9kL2Rl YnVnaW5mb2QtZmluZCBzb3VyY2UgJEJVSUxESUQgJHtQV0R9L2Zvb2Jhci8vLy4vLi4vcCtyJW9c XCRnLmNgCitjbXAgJGZpbGVuYW1lICAke1BXRH0vcCtyJW9cJGcuYwogCiAjIGFuZCBhbHNvIHRo ZSBjYW5vbmljYWxpemVkIG9uZQotZmlsZW5hbWU9YHRlc3RydW4gJHthYnNfdG9wX2J1aWxkZGly fS9kZWJ1Z2luZm9kL2RlYnVnaW5mb2QtZmluZCBzb3VyY2UgJEJVSUxESUQgJHtQV0R9L3Byb2cu Y2AKLWNtcCAkZmlsZW5hbWUgICR7UFdEfS9wcm9nLmMKK2ZpbGVuYW1lPWB0ZXN0cnVuICR7YWJz X3RvcF9idWlsZGRpcn0vZGVidWdpbmZvZC9kZWJ1Z2luZm9kLWZpbmQgc291cmNlICRCVUlMRElE ICR7UFdEfS9wK3Ilb1xcJGcuY2AKK2NtcCAkZmlsZW5hbWUgICR7UFdEfS9wK3Ilb1wkZy5jCiAK IAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCkBAIC02NzIsNyArNjcyLDcgQEAgdG91Y2ggLWQgJzE5NzAtMDEt MDEnICRERUJVR0lORk9EX0NBQ0hFX1BBVEgvMDAwMDAwMDAgIyBvbGQgZW5vdWdoIHRvIGd1YXJh bnRlZQogZWNobyAwID4gJERFQlVHSU5GT0RfQ0FDSEVfUEFUSC9jYWNoZV9jbGVhbl9pbnRlcnZh bF9zCiBlY2hvIDAgPiAkREVCVUdJTkZPRF9DQUNIRV9QQVRIL21heF91bnVzZWRfYWdlX3MKIAot dGVzdHJ1biAke2Fic19idWlsZGRpcn0vZGVidWdpbmZvZF9idWlsZF9pZF9maW5kIC1lIEYvcHJv ZyAxCit0ZXN0cnVuICR7YWJzX2J1aWxkZGlyfS9kZWJ1Z2luZm9kX2J1aWxkX2lkX2ZpbmQgLWUg Ri9wK3Ilb1wkZyAxCiAKIHRlc3RydW4gJHthYnNfdG9wX2J1aWxkZGlyfS9kZWJ1Z2luZm9kL2Rl YnVnaW5mb2QtZmluZCBkZWJ1Z2luZm8gJEJVSUxESUQyICYmIGZhbHNlIHx8IHRydWUKIAotLSAK Mi4zMS4xCgo= --0000000000004f85ae05c7a632e8--