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 [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id 6F60B3858402 for ; Mon, 13 Sep 2021 20:07:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6F60B3858402 Received: from mail-il1-f198.google.com (mail-il1-f198.google.com [209.85.166.198]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-552-PvvHFZMOPo6SVEXkTG0H9A-1; Mon, 13 Sep 2021 16:07:18 -0400 X-MC-Unique: PvvHFZMOPo6SVEXkTG0H9A-1 Received: by mail-il1-f198.google.com with SMTP id w10-20020a056e021c8a00b0023180044c90so5944304ill.5 for ; Mon, 13 Sep 2021 13:07:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=PqGjZ8DBhIaX3XFfi88ZM05tWKimZ01obvFDvd3DUW8=; b=fYD+BS2Ds+FU02tNqvnwfG68lgGsbuv5NlNwe4OE3jjAQlxKyy1Qo0ym6DUn5mURti RGc0oSq9smsHAyfcIAZ69m59qV3f6zuqHVFAKGXgbCe9oVdtp1I2LVlIqo8J/Syg3fc/ AbVGHpfhXZ4V5Wdxl56f7HZ1yJ0eDRKDKC6jX6FQ8nrupDZ0evIPeAmSCOFg6qT6MoHc Z2YheLM/lloIEviThFILg8P5AoyW6QPdbAB8zf/7SrTLF+or3qGb2qi8QEZfFDMtgt33 dUq09OzAPDXuJl4VyYeSfUo7pKlTNuHReLfTHvtT1jbv6L8O4aWNv92fCUXMqVOkzZTy trJA== X-Gm-Message-State: AOAM533+4QDGslJp+dqpotqoF2qWJtO4j0c4lUYTkBGSSDcMITk+aFTN /UeeNAnNCISGknZUN9sA5mNvWhW0V92PLRajlyweKatwo60rvA4jcJ8gVzBKX1xh9cE7I0KbQdL k6oVEY51pBcoHOtCEbDOrk7ko/Qy1y7vpZgc9ujkvBA== X-Received: by 2002:a92:1306:: with SMTP id 6mr9009034ilt.183.1631563637028; Mon, 13 Sep 2021 13:07:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJylsk7gvxWidY37QuEYMks76IBxRDSOZCT6KPZ89X2Pkema4+Vs6B2YkEFL5zyk8Ftb+9x8ScsMtczJQbJTK1Q= X-Received: by 2002:a92:1306:: with SMTP id 6mr9009015ilt.183.1631563636674; Mon, 13 Sep 2021 13:07:16 -0700 (PDT) MIME-Version: 1.0 References: <20210805165402.GD4195@redhat.com> <35f2073dfeed8f008d42a78bf60b7efcf13164eb.camel@klomp.org> <20210806185459.GE4195@redhat.com> <9ac621fee207ef233873c40843b3d34ced9019cc.camel@klomp.org> In-Reply-To: From: Noah Sanci Date: Mon, 13 Sep 2021 16:07:05 -0400 Message-ID: Subject: Re: [Bug debuginfod/27277] Describe retrieved files when verbose To: Mark Wielaard Cc: elfutils-devel@sourceware.org X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="000000000000fe3b4205cbe602b3" X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_BADIPHTTP, KAM_SHORT, NUMERIC_HTTP_ADDR, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, 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: Mon, 13 Sep 2021 20:07:24 -0000 --000000000000fe3b4205cbe602b3 Content-Type: text/plain; charset="UTF-8" Hello, On Sun, Sep 12, 2021 at 3:08 PM Mark Wielaard wrote: > > run-debuginfod-fd-prefetch-caches.sh was updated so that it doesn't > > trip and fail as previously greping for a value that should yield zero > > caused an error. > > I think this part should be in this patch. Do you mean should or shouldn't? Removed for now. > > Previously, target_handle was used to gather CURLE_OK reponses. Under > > some conditions, target_handle was NULL when we wanted it to point to > > the handle. This could cause some failuers. instead msg->easy_handle > > is used, which ensures the correct handle is used. > > Thanks for including this explanation. What were the "some conditions"? I removed this. For some time there was a some failures related to target_handle being null, but msg->easy_handle being assigned. My tests are passing like this, however > I found https://curl.se/libcurl/c/CURLOPT_HEADERFUNCTION.html > Maybe you could add that as comment for future readers. Good idea, added. > If the stuct handle_data had also a size field then most of the above > recalculations of the size are unnecessary and since we then know the > (old) end of response_data we can simply memcpy the new data to the > end (of course we need to make sure to add a zero terminator, but that > can be done with one byte wrote instead of doing a memset of the whole > buffer). Changed. > > #if LIBCURL_VERSION_NUM >= 0x072a00 /* 7.42.0 */ > > curl_easy_setopt(data[i].handle, CURLOPT_PATH_AS_IS, (long) 1); > > #else > > @@ -961,6 +994,7 @@ debuginfod_query_server (debuginfod_client *c, > > int committed_to = -1; > > bool verbose_reported = false; > > struct timespec start_time, cur_time; > > + c->winning_headers = NULL; > > if ( maxtime > 0 && clock_gettime(CLOCK_MONOTONIC_RAW, &start_time) == -1) > > { > > rc = errno; > > @@ -995,8 +1029,18 @@ debuginfod_query_server (debuginfod_client *c, > > if (data[i].handle != target_handle) > > curl_multi_remove_handle(curlm, data[i].handle); > > else > > - committed_to = i; > > - } > > + { > > + committed_to = i; > > + if (c->winning_headers == NULL) > > The indenting here is off because of the mixing of spaces and tabs. Fixed. > > diff --git a/tests/ChangeLog b/tests/ChangeLog > > index 1abe5456..23aeec4a 100644 > > --- a/tests/ChangeLog > > +++ b/tests/ChangeLog > > @@ -106,11 +106,12 @@ > > run-debuginfod-query-retry.sh, > > run-debuginfod-regex.sh, > > run-debuginfod-sizetime.sh, > > - run-debuginfod-tmp-home.sh, and > > - run-debuginfod-writable.sh > > - run-debuginfod-x-forwarded-for.sh > > - * tests/Makefile.am: Added the above new files to the test suite > > - * tests/test-subr.sh: Added some general functions for above tests > > + run-debuginfod-tmp-home.sh, > > + run-debuginfod-writable.sh, and > > + run-debuginfod-x-forwarded-for.sh. > > + All of the above functions now use a 'base' variable to avoid races > > + * Makefile.am: Added the above new files to the test suite > > + * test-subr.sh: Added some general functions for above tests > > These changes seem unrelated to this patch. Restored their states. > > +2021-08-02 Noah Sanci > > + > > + PR27277 > > + * run-debuginfod-response-headers.sh: Add a test to ensure that file descriptions > > + are accurate for files outside or within archives. > > + * Makefile.am: Add run-debuginfod-response-headers.sh to TESTS. > > It also needs to be added to EXTRA_DIST. Added. > > diff --git a/tests/run-debuginfod-fd-prefetch-caches.sh b/tests/run-debuginfod-fd-prefetch-caches.sh > > index 61fee9e9..bee88c1e 100755 > > --- a/tests/run-debuginfod-fd-prefetch-caches.sh > > +++ b/tests/run-debuginfod-fd-prefetch-caches.sh > > @@ -51,9 +51,9 @@ grep 'prefetch fds ' vlog$PORT1 #$PREFETCH_FDS > > grep 'prefetch mbs ' vlog$PORT1 #$PREFETCH_MBS > > # search the vlog to find what metric counts should be and check the correct metrics > > # were incrimented > > -wait_ready $PORT1 'fdcache_op_count{op="enqueue"}' $( grep -c 'interned.*front=1' vlog$PORT1 ) > > -wait_ready $PORT1 'fdcache_op_count{op="evict"}' $( grep -c 'evicted a=.*' vlog$PORT1 ) > > -wait_ready $PORT1 'fdcache_op_count{op="prefetch_enqueue"}' $( grep -c 'interned.*front=0' vlog$PORT1 ) > > +wait_ready $PORT1 'fdcache_op_count{op="enqueue"}' $( grep -c 'interned.*front=1' vlog$PORT1 || true) > > +wait_ready $PORT1 'fdcache_op_count{op="evict"}' $( grep -c 'evicted a=.*' vlog$PORT1 || true ) > > +wait_ready $PORT1 'fdcache_op_count{op="prefetch_enqueue"}' $( grep -c 'interned.*front=0' vlog$PORT1 || true ) > > wait_ready $PORT1 'fdcache_op_count{op="prefetch_evict"}' $( grep -c 'evicted from prefetch a=.*front=0' vlog$PORT1 || true ) > > > > kill $PID1 > > This is an unrelated change. Restored. > > diff --git a/tests/run-debuginfod-response-headers.sh b/tests/run-debuginfod-response-headers.sh > > new file mode 100755 > > index 00000000..a458ca1b > > --- /dev/null > > +++ b/tests/run-debuginfod-response-headers.sh > > @@ -0,0 +1,118 @@ > > +#!/usr/bin/env bash > > +# > > +# Copyright (C) 2019-2021 Red Hat, Inc. > > +# This file is part of elfutils. > > +# > > +# This file is free software; you can redistribute it and/or modify > > +# it under the terms of the GNU General Public License as published by > > +# the Free Software Foundation; either version 3 of the License, or > > +# (at your option) any later version. > > +# > > +# elfutils is distributed in the hope that it will be useful, but > > +# WITHOUT ANY WARRANTY; without even the implied warranty of > > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > > +# GNU General Public License for more details. > > +# > > +# You should have received a copy of the GNU General Public License > > +# along with this program. If not, see . [...] > > +# Wait till both files are in the index and scan/index fully finished > > +wait_ready $PORT1 'thread_work_total{role="traverse"}' 2 > > +wait_ready $PORT1 'thread_work_pending{role="scan"}' 0 > > +wait_ready $PORT1 'thread_busy{role="scan"}' 0 > > +# All rpms need to be in the index, except the dummy permission-000 one > > +rpms=$(find R -name \*rpm | grep -v nothing | wc -l) > > +wait_ready $PORT1 'scanned_files_total{source=".rpm archive"}' $rpms > > +kill -USR1 $PID1 # two hits of SIGUSR1 may be needed to resolve .debug->dwz->srefs > > +# Wait till both files are in the index and scan/index fully finished > > +wait_ready $PORT1 'thread_work_total{role="traverse"}' 3 > > +wait_ready $PORT1 'thread_work_pending{role="scan"}' 0 > > +wait_ready $PORT1 'thread_busy{role="scan"}' 0 > > Is it really necessary to add all this if this is just a test to check > the new headers are sent? A lot of the setup is to check that both the archive and regular file headers are added. In the attached path I removed as much as I felt reasonable. Please get back to me on if it is enough. > > diff --git a/tests/test-subr.sh b/tests/test-subr.sh > > index 41e95e31..95dcbb26 100644 > > --- a/tests/test-subr.sh > > +++ b/tests/test-subr.sh > > @@ -43,9 +43,9 @@ remove_files= > > exit_cleanup() > > { > > rm -rf ${PWD}/.client_cache* > > - rm -f $remove_files; > > + rm -f $remove_files; > > ls -a ${PWD} > > - cd ..; > > + cd ..; > > rmdir $test_dir > > } [...] > > while true; do > > - PORT2=`expr '(' $RANDOM % 1000 ')' + 9000` > > + PORT2=`expr '(' $RANDOM % 100 ')' + $base` > > ss -atn | fgrep ":$PORT2" && $PORT1 -ne $PORT2 || break > > done > > These changes also seem unrelated. Fixed. Thanks, Noah Sanci --000000000000fe3b4205cbe602b3 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-debuginfod-PR27277-Describe-retrieved-files-when-ver.patch" Content-Disposition: attachment; filename="0001-debuginfod-PR27277-Describe-retrieved-files-when-ver.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ktj2ukqe0 RnJvbSBlNjU3MzUzZTU5ZGQ1ZGYzZTllNzYzNjI1YmE1M2ZkYTk2ZjlkMzU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FoIFNhbmNpIDxuc2FuY2lAcmVkaGF0LmNvbT4KRGF0ZTog VHVlLCAxMCBBdWcgMjAyMSAxMToyMTozNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIGRlYnVnaW5m b2Q6IFBSMjcyNzcgLSBEZXNjcmliZSByZXRyaWV2ZWQgZmlsZXMgd2hlbiB2ZXJib3NlCgpBbGxv dyB1c2Vycywgd2l0aCBlbm91Z2ggdmVyYm9zaXR5LCB0byBwcmludCB0aGUgSFRUUCByZXNwb25z ZSBoZWFkZXJzCnVwb24gcmV0cmlldmluZyBhIGZpbGUuIFRoZXNlIGZpbGVzIG1heSBpbmNsdWRl IHNldmVyYWwgY3VzdG9tZSBodHRwCnJlc3BvbnNlIGhlYWRlcnMgc3VjaCBhcyBYLURFQlVHSU5G T0QtRklMRSwgWC1ERUJVR0lORk9ELVNJWkUsIGFuZApYLURFQlVHSU5GT0QtQVJDSElWRS4gVGhl c2UgaGVhZGVycyBhcmUgYWRkZWQgZnJvbSB0aGUgZGFlbW9uLCBpbgpkZWJ1Z2luZm9kLmN4eC4K cnVuLWRlYnVnaW5mb2QtZmQtcHJlZmV0Y2gtY2FjaGVzLnNoIHdhcyB1cGRhdGVkIHNvIHRoYXQg aXQgZG9lc24ndAp0cmlwIGFuZCBmYWlsIGFzIHByZXZpb3VzbHkgZ3JlcGluZyBmb3IgYSB2YWx1 ZSB0aGF0IHNob3VsZCB5aWVsZCB6ZXJvCmNhdXNlZCBhbiBlcnJvci4KCkUuZyBvdXRwdXQ6CgpI VFRQLzEuMSAyMDAgT0sKQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQpDb250ZW50LUxlbmd0aDogNDA5 NTA3MgpDYWNoZS1Db250cm9sOiBwdWJsaWMKTGFzdC1Nb2RpZmllZDogVGh1LCAwOSBTZXAgMjAy MSAxOTowNjo0MCBHTVQKWC1GSUxFOiBkZWJ1Z2luZm9kClgtRklMRS1TSVpFOiA0MDk1MDcyCkNv bnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCkRhdGU6IEZyaSwgMTAgU2VwIDIw MjEgMTY6Mzg6MDYgR01UCgpodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVn LmNnaT9pZD0yNzI3NwoKU2lnbmVkLW9mZi1ieTogTm9haCBTYW5jaSA8bnNhbmNpQHJlZGhhdC5j b20+Ci0tLQogZGVidWdpbmZvZC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICB8IDE2ICsr KysKIGRlYnVnaW5mb2QvZGVidWdpbmZvZC1jbGllbnQuYyAgICAgICAgICAgfCA2MiArKysrKysr KysrKysrKy0KIGRlYnVnaW5mb2QvZGVidWdpbmZvZC5jeHggICAgICAgICAgICAgICAgfCAxMSAr KysKIGRvYy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKwogZG9j L2RlYnVnaW5mb2QtZmluZC4xICAgICAgICAgICAgICAgICAgICB8ICAzICstCiBkb2MvZGVidWdp bmZvZC44ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKysrCiB0ZXN0cy9DaGFuZ2VMb2cg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysKIHRlc3RzL01ha2VmaWxlLmFtICAgICAg ICAgICAgICAgICAgICAgICAgfCAgNCArLQogdGVzdHMvcnVuLWRlYnVnaW5mb2QtcmVzcG9uc2Ut aGVhZGVycy5zaCB8IDk2ICsrKysrKysrKysrKysrKysrKysrKysrKwogOSBmaWxlcyBjaGFuZ2Vk LCAyMTAgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDc1NSB0 ZXN0cy9ydW4tZGVidWdpbmZvZC1yZXNwb25zZS1oZWFkZXJzLnNoCgpkaWZmIC0tZ2l0IGEvZGVi dWdpbmZvZC9DaGFuZ2VMb2cgYi9kZWJ1Z2luZm9kL0NoYW5nZUxvZwppbmRleCAxMTczZjljZC4u ZjE2NjhlMjkgMTAwNjQ0Ci0tLSBhL2RlYnVnaW5mb2QvQ2hhbmdlTG9nCisrKyBiL2RlYnVnaW5m b2QvQ2hhbmdlTG9nCkBAIC0zMSw2ICszMSwyMiBAQAogCSogZGVidWdpbmZvZC5jeHggKGhhbmRs ZXJfY2IpOiBGaXggYWZ0ZXJfeW91IHVuaXF1ZV9zZXQga2V5CiAJdG8gdGhlIGVudGlyZSBpbmNv bWluZyBVUkwuCiAKKzIwMjEtMDgtMDIgIE5vYWggU2FuY2kgIDxuc2FuY2lAcmVkaGF0LmNvbT4K KworCVBSMjcyNzcKKwkqIGRlYnVnaW5mb2QtY2xpZW50LmMgKHN0cnVjdCBkZWJ1Z2luZm9kX2Ns aWVudCk6IE5ldyBmaWVsZAorCXdpbm5pbmdfaGVhZGVycy4KKwkoc3RydWN0IGhhbmRsZV9kYXRh KTogTmV3IGZpZWxkIHJlc3BvbnNlX2RhdGEsIHJlc3BvbnNlX2RhdGFfc2l6ZS4KKwkoaGVhZGVy X2NhbGxiYWNrKTogU3RvcmUgcmVjZWl2ZWQgaGVhZGVycyBpbiByZXNwb25zZV9kYXRhLgorCShk ZWJ1Z2luZm9kX3F1ZXJ5X3NlcnZlcik6IEFjdGl2YXRlIENVUkxPUFRfSEVBREVSRlVOQ1RJT04u CisJU2F2ZSB3aW5uaW5nIHJlc3BvbnNlX2RhdGEuCisJKGRlYnVnaW5mb2RfZW5kKTogZnJlZSBj bGllbnQgd2lubmluZyBoZWFkZXJzLgorCSogZGVidWdpbmZvZC5jeHggKGhhbmRsZV9idWlsZGlk X2ZfbWF0Y2gpOiByZW1vdmUgWC1ERUJVR0lORk9ELUZJTEUKKwlwYXRoLiBBZGQgWC1ERUJVR0lO Rk9ELUZJTEUgYW5kIFgtREVCVUdJTkZPRC1TSVpFIGhlYWRlcnMuCisJKGhhbmRsZV9idWlsZGlk X3JfbWF0Y2gpOiByZW1vdmUgWC1ERUJVR0lORk9ELUZJTEUgcGF0aC4gQWRkCisJWC1ERUJVR0lO Rk9ELUZJTEUsIFgtREVCVUdJTkZPRC1TSVpFCisJaGVhZGVycywgYW5kIFgtQVJDSElWRSBoZWFk ZXJzLgorCiAyMDIxLTA3LTI2ICBOb2FoIFNhbmNpICA8bnNhbmNpQHJlZGhhdC5jb20+CiAKIAlQ UjI3OTgyCmRpZmYgLS1naXQgYS9kZWJ1Z2luZm9kL2RlYnVnaW5mb2QtY2xpZW50LmMgYi9kZWJ1 Z2luZm9kL2RlYnVnaW5mb2QtY2xpZW50LmMKaW5kZXggZDQxNzIzY2UuLjA4NDQ0YzBjIDEwMDY0 NAotLS0gYS9kZWJ1Z2luZm9kL2RlYnVnaW5mb2QtY2xpZW50LmMKKysrIGIvZGVidWdpbmZvZC9k ZWJ1Z2luZm9kLWNsaWVudC5jCkBAIC0xMjcsNiArMTI3LDcgQEAgc3RydWN0IGRlYnVnaW5mb2Rf Y2xpZW50CiAgICAgIHRpbWVvdXQgb3Igb3RoZXIgaW5mbyBnb3R0ZW4gZnJvbSBlbnZpcm9ubWVu dCB2YXJpYWJsZXMsIHRoZQogICAgICBoYW5kbGUgZGF0YSwgZXRjLiBTbyB0aG9zZSBkb24ndCBo YXZlIHRvIGJlIHJlcGFyc2VkIGFuZAogICAgICByZWNyZWF0ZWQgb24gZWFjaCByZXF1ZXN0LiAg Ki8KKyAgY2hhciAqIHdpbm5pbmdfaGVhZGVyczsKIH07CiAKIC8qIFRoZSBjYWNoZV9jbGVhbl9p bnRlcnZhbF9zIGZpbGUgd2l0aGluIHRoZSBkZWJ1Z2luZm9kIGNhY2hlIHNwZWNpZmllcwpAQCAt MTgzLDYgKzE4NCw5IEBAIHN0cnVjdCBoYW5kbGVfZGF0YQogICAgICB0byB0aGUgY2FjaGUuIFVz ZWQgdG8gZW5zdXJlIHRoYXQgYSBmaWxlIGlzIG5vdCBkb3dubG9hZGVkIGZyb20KICAgICAgbXVs dGlwbGUgc2VydmVycyB1bm5lY2Vzc2FyaWx5LiAgKi8KICAgQ1VSTCAqKnRhcmdldF9oYW5kbGU7 CisgIC8qIFJlc3BvbnNlIGh0dHAgaGVhZGVycyBmb3IgdGhpcyBjbGllbnQgaGFuZGxlLCBzZW50 IGZyb20gdGhlIHNlcnZlciAqLworICBjaGFyICpyZXNwb25zZV9kYXRhOworICBzaXplX3QgcmVz cG9uc2VfZGF0YV9zaXplOwogfTsKIAogc3RhdGljIHNpemVfdApAQCAtNDk4LDYgKzUwMiwzNyBA QCBkZWZhdWx0X3Byb2dyZXNzZm4gKGRlYnVnaW5mb2RfY2xpZW50ICpjLCBsb25nIGEsIGxvbmcg YikKICAgcmV0dXJuIDA7CiB9CiAKKy8qIFRoaXMgaXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0 IHJlY2VpdmVzIGh0dHAgcmVzcG9uc2UgaGVhZGVycyBpbiBidWZmZXIgZm9yIHVzZQorICogaW4g dGhpcyBwcm9ncmFtLiBodHRwczovL2N1cmwuc2UvbGliY3VybC9jL0NVUkxPUFRfSEVBREVSRlVO Q1RJT04uaHRtbCBpcyB0aGUKKyAqIG9ubGluZSBkb2N1bWVudGF0aW9uLgorICovCitzdGF0aWMg c2l6ZV90CitoZWFkZXJfY2FsbGJhY2sgKGNoYXIgKiBidWZmZXIsIHNpemVfdCBzaXplLCBzaXpl X3QgbnVtaXRlbXMsIHZvaWQgKiB1c2VyZGF0YSkKK3sKKyAgaWYgKHNpemUgIT0gMSkKKyAgICBy ZXR1cm4gMDsKKyAgLyogVGVtcG9yYXJ5IGJ1ZmZlciBmb3IgcmVhbGxvYyAqLworICBjaGFyICp0 ZW1wID0gTlVMTDsKKyAgc3RydWN0IGhhbmRsZV9kYXRhICpkYXRhID0gKHN0cnVjdCBoYW5kbGVf ZGF0YSAqKSB1c2VyZGF0YTsKKyAgaWYgKGRhdGEtPnJlc3BvbnNlX2RhdGEgPT0gTlVMTCkKKyAg ICB7CisgICAgICB0ZW1wID0gbWFsbG9jKG51bWl0ZW1zKzEpOworICAgICAgaWYgKHRlbXAgPT0g TlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgdGVt cCA9IHJlYWxsb2MoZGF0YS0+cmVzcG9uc2VfZGF0YSwgZGF0YS0+cmVzcG9uc2VfZGF0YV9zaXpl ICsgbnVtaXRlbXMgKyAxKTsKKyAgICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgICAgIHJldHVy biAwOworICAgIH0KKworICBtZW1jcHkodGVtcCArIGRhdGEtPnJlc3BvbnNlX2RhdGFfc2l6ZSwg YnVmZmVyLCBudW1pdGVtcyk7CisgIGRhdGEtPnJlc3BvbnNlX2RhdGEgPSB0ZW1wOworICBkYXRh LT5yZXNwb25zZV9kYXRhX3NpemUgKz0gbnVtaXRlbXM7CisgIGRhdGEtPnJlc3BvbnNlX2RhdGFb ZGF0YS0+cmVzcG9uc2VfZGF0YV9zaXplXSA9ICdcMCc7CisgIHJldHVybiBudW1pdGVtczsKK30K IAogLyogUXVlcnkgZWFjaCBvZiB0aGUgc2VydmVyIFVSTHMgZm91bmQgaW4gJERFQlVHSU5GT0Rf VVJMUyBmb3IgdGhlIGZpbGUKICAgIHdpdGggdGhlIHNwZWNpZmllZCBidWlsZC1pZCwgdHlwZSAo ZGVidWdpbmZvLCBleGVjdXRhYmxlIG9yIHNvdXJjZSkKQEAgLTkzNiwxMCArOTcxLDE0IEBAIGRl YnVnaW5mb2RfcXVlcnlfc2VydmVyIChkZWJ1Z2luZm9kX2NsaWVudCAqYywKIAkgIGN1cmxfZWFz eV9zZXRvcHQgKGRhdGFbaV0uaGFuZGxlLCBDVVJMT1BUX0xPV19TUEVFRF9MSU1JVCwKIAkJCSAg ICAxMDAgKiAxMDI0TCk7CiAJfQorICAgICAgZGF0YVtpXS5yZXNwb25zZV9kYXRhID0gTlVMTDsK KyAgICAgIGRhdGFbaV0ucmVzcG9uc2VfZGF0YV9zaXplID0gMDsKICAgICAgIGN1cmxfZWFzeV9z ZXRvcHQoZGF0YVtpXS5oYW5kbGUsIENVUkxPUFRfRklMRVRJTUUsIChsb25nKSAxKTsKICAgICAg IGN1cmxfZWFzeV9zZXRvcHQoZGF0YVtpXS5oYW5kbGUsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04s IChsb25nKSAxKTsKICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZGF0YVtpXS5oYW5kbGUsIENVUkxP UFRfRkFJTE9ORVJST1IsIChsb25nKSAxKTsKICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZGF0YVtp XS5oYW5kbGUsIENVUkxPUFRfTk9TSUdOQUwsIChsb25nKSAxKTsKKyAgICAgIGN1cmxfZWFzeV9z ZXRvcHQoZGF0YVtpXS5oYW5kbGUsIENVUkxPUFRfSEVBREVSRlVOQ1RJT04sIGhlYWRlcl9jYWxs YmFjayk7CisgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGRhdGFbaV0uaGFuZGxlLCBDVVJMT1BUX0hF QURFUkRBVEEsICh2b2lkICopICYoZGF0YVtpXSkpOwogI2lmIExJQkNVUkxfVkVSU0lPTl9OVU0g Pj0gMHgwNzJhMDAgLyogNy40Mi4wICovCiAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGRhdGFbaV0u aGFuZGxlLCBDVVJMT1BUX1BBVEhfQVNfSVMsIChsb25nKSAxKTsKICNlbHNlCkBAIC05NjEsNiAr MTAwMCw3IEBAIGRlYnVnaW5mb2RfcXVlcnlfc2VydmVyIChkZWJ1Z2luZm9kX2NsaWVudCAqYywK ICAgaW50IGNvbW1pdHRlZF90byA9IC0xOwogICBib29sIHZlcmJvc2VfcmVwb3J0ZWQgPSBmYWxz ZTsKICAgc3RydWN0IHRpbWVzcGVjIHN0YXJ0X3RpbWUsIGN1cl90aW1lOworICBjLT53aW5uaW5n X2hlYWRlcnMgPSBOVUxMOwogICBpZiAoIG1heHRpbWUgPiAwICYmIGNsb2NrX2dldHRpbWUoQ0xP Q0tfTU9OT1RPTklDX1JBVywgJnN0YXJ0X3RpbWUpID09IC0xKQogICAgIHsKICAgICAgIHJjID0g ZXJybm87CkBAIC05OTUsNyArMTAzNSwxNyBAQCBkZWJ1Z2luZm9kX3F1ZXJ5X3NlcnZlciAoZGVi dWdpbmZvZF9jbGllbnQgKmMsCiAJICAgIGlmIChkYXRhW2ldLmhhbmRsZSAhPSB0YXJnZXRfaGFu ZGxlKQogCSAgICAgIGN1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZShjdXJsbSwgZGF0YVtpXS5oYW5k bGUpOwogCSAgICBlbHNlCi0JICAgICAgY29tbWl0dGVkX3RvID0gaTsKKyAgICAgICAgICAgICAg eworCSAgICAgICAgY29tbWl0dGVkX3RvID0gaTsKKyAgICAgICAgICAgICAgICBpZiAoYy0+d2lu bmluZ19oZWFkZXJzID09IE5VTEwpCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICAgIGMtPndpbm5pbmdfaGVhZGVycyA9IGRhdGFbY29tbWl0dGVkX3RvXS5yZXNwb25zZV9k YXRhOworICAgICAgICAgICAgICAgICAgICBpZiAodmZkID49IDAgJiYgYy0+d2lubmluZ19oZWFk ZXJzICE9IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgZHByaW50Zih2ZmQsICJcbiVzIiwg Yy0+d2lubmluZ19oZWFkZXJzKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YVtjb21taXR0ZWRf dG9dLnJlc3BvbnNlX2RhdGEgPSBOVUxMOworICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg ICAgICAgIH0KIAl9CiAKICAgICAgIGlmICh2ZmQgPj0gMCAmJiAhdmVyYm9zZV9yZXBvcnRlZCAm JiBjb21taXR0ZWRfdG8gPj0gMCkKQEAgLTExNjEsMTAgKzEyMTEsMTAgQEAgZGVidWdpbmZvZF9x dWVyeV9zZXJ2ZXIgKGRlYnVnaW5mb2RfY2xpZW50ICpjLAogICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgIGNoYXIgKmVmZmVjdGl2ZV91cmwgPSBOVUxMOwogICAgICAgICAgICAg ICAgICAgbG9uZyByZXNwX2NvZGUgPSA1MDA7Ci0gICAgICAgICAgICAgICAgICBDVVJMY29kZSBv azEgPSBjdXJsX2Vhc3lfZ2V0aW5mbyAodGFyZ2V0X2hhbmRsZSwKKyAgICAgICAgICAgICAgICAg IENVUkxjb2RlIG9rMSA9IGN1cmxfZWFzeV9nZXRpbmZvIChtc2ctPmVhc3lfaGFuZGxlLAogCQkJ CQkJICAgIENVUkxJTkZPX0VGRkVDVElWRV9VUkwsCiAJCQkJCQkgICAgJmVmZmVjdGl2ZV91cmwp OwotICAgICAgICAgICAgICAgICAgQ1VSTGNvZGUgb2syID0gY3VybF9lYXN5X2dldGluZm8gKHRh cmdldF9oYW5kbGUsCisgICAgICAgICAgICAgICAgICBDVVJMY29kZSBvazIgPSBjdXJsX2Vhc3lf Z2V0aW5mbyAobXNnLT5lYXN5X2hhbmRsZSwKIAkJCQkJCSAgICBDVVJMSU5GT19SRVNQT05TRV9D T0RFLAogCQkJCQkJICAgICZyZXNwX2NvZGUpOwogICAgICAgICAgICAgICAgICAgaWYob2sxID09 IENVUkxFX09LICYmIG9rMiA9PSBDVVJMRV9PSyAmJiBlZmZlY3RpdmVfdXJsKQpAQCAtMTIzOCw3 ICsxMjg4LDEwIEBAIGRlYnVnaW5mb2RfcXVlcnlfc2VydmVyIChkZWJ1Z2luZm9kX2NsaWVudCAq YywKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxl KGN1cmxtLCBkYXRhW2ldLmhhbmRsZSk7IC8qIG9rIHRvIHJlcGVhdCAqLwogICAgICAgICAgICAg ICBjdXJsX2Vhc3lfY2xlYW51cCAoZGF0YVtpXS5oYW5kbGUpOworICAgICAgICAgICAgICBmcmVl KGRhdGFbaV0ucmVzcG9uc2VfZGF0YSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBmcmVl KGMtPndpbm5pbmdfaGVhZGVycyk7CisgICAgICAgICAgICBjLT53aW5uaW5nX2hlYWRlcnMgPSBO VUxMOwogCSAgICBnb3RvIHF1ZXJ5X2luX3BhcmFsbGVsOwogCX0KICAgICAgIGVsc2UKQEAgLTEy ODEsNiArMTMzNCw3IEBAIGRlYnVnaW5mb2RfcXVlcnlfc2VydmVyIChkZWJ1Z2luZm9kX2NsaWVu dCAqYywKICAgICB7CiAgICAgICBjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUoY3VybG0sIGRhdGFb aV0uaGFuZGxlKTsgLyogb2sgdG8gcmVwZWF0ICovCiAgICAgICBjdXJsX2Vhc3lfY2xlYW51cCAo ZGF0YVtpXS5oYW5kbGUpOworICAgICAgZnJlZSAoZGF0YVtpXS5yZXNwb25zZV9kYXRhKTsKICAg ICB9CiAKICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fdXJsczsgKytpKQpAQCAtMTMwNCw2ICsx MzU4LDcgQEAgZGVidWdpbmZvZF9xdWVyeV9zZXJ2ZXIgKGRlYnVnaW5mb2RfY2xpZW50ICpjLAog ICAgIHsKICAgICAgIGN1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZShjdXJsbSwgZGF0YVtpXS5oYW5k bGUpOyAvKiBvayB0byByZXBlYXQgKi8KICAgICAgIGN1cmxfZWFzeV9jbGVhbnVwIChkYXRhW2ld LmhhbmRsZSk7CisgICAgICBmcmVlIChkYXRhW2ldLnJlc3BvbnNlX2RhdGEpOwogICAgIH0KIAog ICB1bmxpbmsgKHRhcmdldF9jYWNoZV90bXBwYXRoKTsKQEAgLTE0MTUsNiArMTQ3MCw3IEBAIGRl YnVnaW5mb2RfZW5kIChkZWJ1Z2luZm9kX2NsaWVudCAqY2xpZW50KQogCiAgIGN1cmxfbXVsdGlf Y2xlYW51cCAoY2xpZW50LT5zZXJ2ZXJfbWhhbmRsZSk7CiAgIGN1cmxfc2xpc3RfZnJlZV9hbGwg KGNsaWVudC0+aGVhZGVycyk7CisgIGZyZWUgKGNsaWVudC0+d2lubmluZ19oZWFkZXJzKTsKICAg ZnJlZSAoY2xpZW50LT51cmwpOwogICBmcmVlIChjbGllbnQpOwogfQpkaWZmIC0tZ2l0IGEvZGVi dWdpbmZvZC9kZWJ1Z2luZm9kLmN4eCBiL2RlYnVnaW5mb2QvZGVidWdpbmZvZC5jeHgKaW5kZXgg NmNjOWY3NzcuLjI4MGM4YjZhIDEwMDY0NAotLS0gYS9kZWJ1Z2luZm9kL2RlYnVnaW5mb2QuY3h4 CisrKyBiL2RlYnVnaW5mb2QvZGVidWdpbmZvZC5jeHgKQEAgLTEwNzUsNiArMTA3NSw5IEBAIGhh bmRsZV9idWlsZGlkX2ZfbWF0Y2ggKGJvb2wgaW50ZXJuYWxfcmVxX3QsCiAgIGVsc2UKICAgICB7 CiAgICAgICBNSERfYWRkX3Jlc3BvbnNlX2hlYWRlciAociwgIkNvbnRlbnQtVHlwZSIsICJhcHBs aWNhdGlvbi9vY3RldC1zdHJlYW0iKTsKKyAgICAgIHN0ZDo6c3RyaW5nIGZpbGUgPSBiX3NvdXJj ZTAuc3Vic3RyKGJfc291cmNlMC5maW5kX2xhc3Rfb2YoIi8iKSsxLCBiX3NvdXJjZTAubGVuZ3Ro KCkpOworICAgICAgTUhEX2FkZF9yZXNwb25zZV9oZWFkZXIgKHIsICJYLURFQlVHSU5GT0QtU0la RSIsIHRvX3N0cmluZyhzLnN0X3NpemUpLmNfc3RyKCkgKTsKKyAgICAgIE1IRF9hZGRfcmVzcG9u c2VfaGVhZGVyIChyLCAiWC1ERUJVR0lORk9ELUZJTEUiLCBmaWxlLmNfc3RyKCkgKTsKICAgICAg IGFkZF9taGRfbGFzdF9tb2RpZmllZCAociwgcy5zdF9tdGltZSk7CiAgICAgICBpZiAodmVyYm9z ZSA+IDEpCiAgICAgICAgIG9iYXRjaGVkKGNsb2cpIDw8ICJzZXJ2aW5nIGZpbGUgIiA8PCBiX3Nv dXJjZTAgPDwgZW5kbDsKQEAgLTE1NDQsNiArMTU0Nyw5IEBAIGhhbmRsZV9idWlsZGlkX3JfbWF0 Y2ggKGJvb2wgaW50ZXJuYWxfcmVxX3AsCiAgICAgICBpbmNfbWV0cmljICgiaHR0cF9yZXNwb25z ZXNfdG90YWwiLCJyZXN1bHQiLCJhcmNoaXZlIGZkY2FjaGUiKTsKIAogICAgICAgTUhEX2FkZF9y ZXNwb25zZV9oZWFkZXIgKHIsICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vb2N0ZXQtc3Ry ZWFtIik7CisgICAgICBNSERfYWRkX3Jlc3BvbnNlX2hlYWRlciAociwgIlgtREVCVUdJTkZPRC1T SVpFIiwgdG9fc3RyaW5nKGZzLnN0X3NpemUpLmNfc3RyKCkpOworICAgICAgTUhEX2FkZF9yZXNw b25zZV9oZWFkZXIgKHIsICJYLURFQlVHSU5GT0QtQVJDSElWRSIsIGJfc291cmNlMC5jX3N0cigp KTsKKyAgICAgIE1IRF9hZGRfcmVzcG9uc2VfaGVhZGVyIChyLCAiWC1ERUJVR0lORk9ELUZJTEUi LCBiX3NvdXJjZTEuY19zdHIoKSk7CiAgICAgICBhZGRfbWhkX2xhc3RfbW9kaWZpZWQgKHIsIGZz LnN0X210aW1lKTsKICAgICAgIGlmICh2ZXJib3NlID4gMSkKICAgICAgICAgb2JhdGNoZWQoY2xv ZykgPDwgInNlcnZpbmcgZmRjYWNoZSBhcmNoaXZlICIgPDwgYl9zb3VyY2UwIDw8ICIgZmlsZSAi IDw8IGJfc291cmNlMSA8PCBlbmRsOwpAQCAtMTY4NSw2ICsxNjkxLDExIEBAIGhhbmRsZV9idWls ZGlkX3JfbWF0Y2ggKGJvb2wgaW50ZXJuYWxfcmVxX3AsCiAgICAgICBlbHNlCiAgICAgICAgIHsK ICAgICAgICAgICBNSERfYWRkX3Jlc3BvbnNlX2hlYWRlciAociwgIkNvbnRlbnQtVHlwZSIsICJh cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsKKyAgICAgICAgICBzdGQ6OnN0cmluZyBmaWxlID0g Yl9zb3VyY2UxLnN1YnN0cihiX3NvdXJjZTEuZmluZF9sYXN0X29mKCIvIikrMSwgYl9zb3VyY2Ux Lmxlbmd0aCgpKTsKKyAgICAgICAgICBNSERfYWRkX3Jlc3BvbnNlX2hlYWRlciAociwgIlgtREVC VUdJTkZPRC1TSVpFIiwgdG9fc3RyaW5nKGZzLnN0X3NpemUpLmNfc3RyKCkpOworICAgICAgICAg IE1IRF9hZGRfcmVzcG9uc2VfaGVhZGVyIChyLCAiWC1ERUJVR0lORk9ELUFSQ0hJVkUiLCBiX3Nv dXJjZTAuY19zdHIoKSk7CisgICAgICAgICAgTUhEX2FkZF9yZXNwb25zZV9oZWFkZXIgKHIsICJY LURFQlVHSU5GT0QtRklMRSIsIGZpbGUuY19zdHIoKSk7CisKICAgICAgICAgICBhZGRfbWhkX2xh c3RfbW9kaWZpZWQgKHIsIGFyY2hpdmVfZW50cnlfbXRpbWUoZSkpOwogICAgICAgICAgIGlmICh2 ZXJib3NlID4gMSkKICAgICAgICAgICAgIG9iYXRjaGVkKGNsb2cpIDw8ICJzZXJ2aW5nIGFyY2hp dmUgIiA8PCBiX3NvdXJjZTAgPDwgIiBmaWxlICIgPDwgYl9zb3VyY2UxIDw8IGVuZGw7CmRpZmYg LS1naXQgYS9kb2MvQ2hhbmdlTG9nIGIvZG9jL0NoYW5nZUxvZwppbmRleCBhZGE0ODM4My4uZGIz YTM1ODQgMTAwNjQ0Ci0tLSBhL2RvYy9DaGFuZ2VMb2cKKysrIGIvZG9jL0NoYW5nZUxvZwpAQCAt MTgsNiArMTgsMTQgQEAKIAkqIE1ha2VmaWxlLmFtOiBVcGRhdGVkIHRvIGluY2x1ZGUgZGVidWdp bmZvZC1jbGllbnQtY29uZmlnLjcKIAkqIG1hbjMsIG1hbjc6IFN5bWxpbmtzIGZvciBzb3VyY2Ug dHJlZSBtYW4gcGFnZSB0ZXN0aW5nLgogCisyMDIxLTA4LTA0ICBOb2FoIFNhbmNpICA8bnNhbmNp QHJlZGhhdC5jb20+CisKKwlQUjI3Mjc3CisJKiBkZWJ1Z2luZm9kLWZpbmQuMTogSW5jcmVhc2lu ZyB2ZXJib3NpdHkgZGVzY3JpYmVzIHRoZSBkb3dubG9hZGVkCisJZmlsZS4KKwkqIGRlYnVnaW5m b2QuODogRGVzY3JpYmUgWC1ERUJVR0lORk9ELUZJTEUsIFgtREVCVUdJTkZPRC1TSVpFLCBhbmQK KwlYLURFQlVHSU5GT0QtQVJDSElWRS4KKwogMjAyMS0wNy0yNiAgTm9haCBTYW5jaSA8bnNhbmNp QHJlZGhhdC5jb20+CiAKIAlQUjI3OTgyCmRpZmYgLS1naXQgYS9kb2MvZGVidWdpbmZvZC1maW5k LjEgYi9kb2MvZGVidWdpbmZvZC1maW5kLjEKaW5kZXggYTYxNjczZjUuLjk1N2VjN2U3IDEwMDY0 NAotLS0gYS9kb2MvZGVidWdpbmZvZC1maW5kLjEKKysrIGIvZG9jL2RlYnVnaW5mb2QtZmluZC4x CkBAIC0xMTAsNyArMTEwLDggQEAgbCBsLgogCiAuVFAKIC5CICJcLXYiCi1JbmNyZWFzZSB2ZXJi b3NpdHksIGluY2x1ZGluZyBwcmludGluZyBmcmVxdWVudCBkb3dubG9hZC1wcm9ncmVzcyBtZXNz YWdlcy4KK0luY3JlYXNlIHZlcmJvc2l0eSwgaW5jbHVkaW5nIHByaW50aW5nIGZyZXF1ZW50IGRv d25sb2FkLXByb2dyZXNzIG1lc3NhZ2VzCithbmQgcHJpbnRpbmcgdGhlIGh0dHAgcmVzcG9uc2Ug aGVhZGVycyBmcm9tIHRoZSBzZXJ2ZXIuCiAKIAogLlNIICJTRUNVUklUWSIKZGlmZiAtLWdpdCBh L2RvYy9kZWJ1Z2luZm9kLjggYi9kb2MvZGVidWdpbmZvZC44CmluZGV4IGY5YTQxOGQxLi5mZGUw NmJiOCAxMDA2NDQKLS0tIGEvZG9jL2RlYnVnaW5mb2QuOAorKysgYi9kb2MvZGVidWdpbmZvZC44 CkBAIC0yNTgsNiArMjU4LDE1IEBAIFVua25vd24gYnVpbGRpZCAvIHJlcXVlc3QgY29tYmluYXRp b25zIHJlc3VsdCBpbiBIVFRQIGVycm9yIGNvZGVzLgogVGhpcyBmaWxlIHNlcnZpY2UgcmVzZW1i bGFuY2UgaXMgaW50ZW50aW9uYWwsIHNvIHRoYXQgYW4gaW5zdGFsbGF0aW9uCiBjYW4gdGFrZSBh ZHZhbnRhZ2Ugb2Ygc3RhbmRhcmQgSFRUUCBtYW5hZ2VtZW50IGluZnJhc3RydWN0dXJlLgogCitV cG9uIGZpbmRpbmcgYSBmaWxlIGluIGFuIGFyY2hpdmUgb3Igc2ltcGx5IGluIHRoZSBkYXRhYmFz ZSwgc29tZQorY3VzdG9tIGh0dHAgaGVhZGVycyBhcmUgYWRkZWQgdG8gdGhlIHJlc3BvbnNlLiBG b3IgZmlsZXMgaW4gdGhlCitkYXRhYmFzZSBYLURFQlVHSU5GT0QtRklMRSBhbmQgWC1ERUJVR0lO Rk9ELVNJWkUgYXJlIGFkZGVkLgorWC1ERUJVR0lORk9ELUZJTEUgaXMgc2ltcGx5IHRoZSB1bmVz Y2FwZWQgZmlsZW5hbWUgYW5kCitYLURFQlVHSU5GT0QtU0laRSBpcyB0aGUgc2l6ZSBvZiB0aGUg ZmlsZS4gRm9yIGZpbGVzIGZvdW5kIGluIGFyY2hpdmVzLAoraW4gYWRkaXRpb24gdG8gWC1ERUJV R0lORk9ELUZJTEUgYW5kIFgtREVCVUdJTkZPRC1TSVpFLAorWC1ERUJVR0lORk9ELUFSQ0hJVkUg aXMgYWRkZWQuICBYLURFQlVHSU5GT0QtQVJDSElWRSBpcyB0aGUgbmFtZSBvZiB0aGUKK2FyY2hp dmUgdGhlIGZpbGUgd2FzIGZvdW5kIGluLgorCiBUaGVyZSBhcmUgdGhyZWUgcmVxdWVzdHMuICBJ biBlYWNoIGNhc2UsIHRoZSBidWlsZGlkIGlzIGVuY29kZWQgYXMgYQogbG93ZXJjYXNlIGhleGFk ZWNpbWFsIHN0cmluZy4gIEZvciBleGFtcGxlLCBmb3IgYSBwcm9ncmFtIFxmSS9iaW4vbHNcZlAs CiBsb29rIGF0IHRoZSBFTEYgbm90ZSBHTlVfQlVJTERfSUQ6CmRpZmYgLS1naXQgYS90ZXN0cy9D aGFuZ2VMb2cgYi90ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTE1NDY4NmEuLjI4YzA4MzQ2IDEwMDY0 NAotLS0gYS90ZXN0cy9DaGFuZ2VMb2cKKysrIGIvdGVzdHMvQ2hhbmdlTG9nCkBAIC0xMDYsNiAr MTA2LDEyIEBACiAKIAkqIGRlYnVnaW5mb2Qtc3Vici5zaCAoRVhUUkFfRElTVCk6IEFkZCBkZWJ1 Z2luZm9kLXN1YnIuc2guCiAKKzIwMjEtMDgtMjAgIE5vYWggU2FuY2kgIDxuc2FuY2lAcmVkaGF0 LmNvbT4KKworCSogcnVuLWRlYnVnaW5mb2QtcmVzcG9uc2UtaGVhZGVycy5zaDogRW5zdXJlcyBj dXN0b20gaHR0cCByZXNwb25zZQorCWhlYWRlcnMgYXJlIHVzZWQgYW5kIGZ1bmN0aW9uYWwKKwkq IE1ha2VmaWxlLmFtOiBBZGRlZCB0aGUgYWJvdmUgbmV3IGZpbGUgdG8gVEVTVFMgYW5kIEVYVFJB X0RJU1QKKwogMjAyMS0wOC0yOCAgTWFyayBXaWVsYWFyZCAgPG1hcmtAa2xvbXAub3JnPgogCiAJ KiBydW4tZGVidWdpbmZvZC1maW5kLnNoOiBVc2UgIjptZW1vcnk6IiBmb3IgdGhlCmRpZmYgLS1n aXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCmluZGV4IDIyOTQyNzMz Li5jOThhNTgzNyAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrIGIvdGVzdHMvTWFr ZWZpbGUuYW0KQEAgLTIzMSw3ICsyMzEsOCBAQCBURVNUUyArPSBydW4tZGVidWdpbmZvZC1kbG9w ZW4uc2ggXAogCSBydW4tZGVidWdpbmZvZC1mZWRlcmF0aW9uLXNxbGl0ZS5zaCBcCiAJIHJ1bi1k ZWJ1Z2luZm9kLWZlZGVyYXRpb24tbGluay5zaCBcCiAJIHJ1bi1kZWJ1Z2luZm9kLWZlZGVyYXRp b24tbWV0cmljcy5zaCBcCi0JIHJ1bi1kZWJ1Z2luZm9kLXgtZm9yd2FyZGVkLWZvci5zaAorCSBy dW4tZGVidWdpbmZvZC14LWZvcndhcmRlZC1mb3Iuc2ggXAorICAgICAgICAgcnVuLWRlYnVnaW5m b2QtcmVzcG9uc2UtaGVhZGVycy5zaAogZW5kaWYKIGVuZGlmCiAKQEAgLTUyNCw2ICs1MjUsNyBA QCBFWFRSQV9ESVNUID0gcnVuLWFyZXh0cmFjdC5zaCBydW4tYXJzeW10ZXN0LnNoIHJ1bi1hci5z aCBcCiAJICAgICBydW4tZGVidWdpbmZvZC1hcmNoaXZlLWdyb29tLnNoIFwKIAkgICAgIHJ1bi1k ZWJ1Z2luZm9kLWFyY2hpdmUtcmVuYW1lLnNoIFwKICAgICAgICAgICAgICBydW4tZGVidWdpbmZv ZC1hcmNoaXZlLXRlc3Quc2ggXAorCSAgICAgcnVuLWRlYnVnaW5mb2QtcmVzcG9uc2UtaGVhZGVy cy5zaCBcCiAJICAgICBkZWJ1Z2luZm9kLXJwbXMvZmVkb3JhMzAvaGVsbG8yLTEuMC0yLnNyYy5y cG0gXAogCSAgICAgZGVidWdpbmZvZC1ycG1zL2ZlZG9yYTMwL2hlbGxvMi0xLjAtMi54ODZfNjQu cnBtIFwKIAkgICAgIGRlYnVnaW5mb2QtcnBtcy9mZWRvcmEzMC9oZWxsbzItZGVidWdpbmZvLTEu MC0yLng4Nl82NC5ycG0gXApkaWZmIC0tZ2l0IGEvdGVzdHMvcnVuLWRlYnVnaW5mb2QtcmVzcG9u c2UtaGVhZGVycy5zaCBiL3Rlc3RzL3J1bi1kZWJ1Z2luZm9kLXJlc3BvbnNlLWhlYWRlcnMuc2gK bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAuLmJkYjM5YjRkCi0tLSAvZGV2L251 bGwKKysrIGIvdGVzdHMvcnVuLWRlYnVnaW5mb2QtcmVzcG9uc2UtaGVhZGVycy5zaApAQCAtMCww ICsxLDk2IEBACisjIS91c3IvYmluL2VudiBiYXNoCisjCisjIENvcHlyaWdodCAoQykgMjAxOS0y MDIxIFJlZCBIYXQsIEluYy4KKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgZWxmdXRpbHMuCisjCisj IFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisjCisjIGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCisKKy4gJHNyY2Rpci9kZWJ1Z2luZm9kLXN1YnIuc2ggICMgaW5jbHVkZXMgc2V0 IC1lCisKKyMgZm9yIHRlc3QgY2FzZSBkZWJ1Z2dpbmcsIHVuY29tbWVudDoKK3NldCAteAorCitE Qj0ke1BXRH0vLmRlYnVnaW5mb2RfdG1wLnNxbGl0ZQordGVtcGZpbGVzICREQgorZXhwb3J0IERF QlVHSU5GT0RfQ0FDSEVfUEFUSD0ke1BXRH0vLmNsaWVudF9jYWNoZQorCisjIFRoaXMgdmFyaWFi bGUgaXMgZXNzZW50aWFsIGFuZCBlbnN1cmVzIG5vIHRpbWUtcmFjZSBmb3IgY2xhaW1pbmcgcG9y dHMgb2NjdXJzCisjIHNldCBiYXNlIHRvIGEgdW5pcXVlIG11bHRpcGxlIG9mIDEwMCBub3QgdXNl ZCBpbiBhbnkgb3RoZXIgJ3J1bi1kZWJ1Z2luZm9kLSonIHRlc3QKK2Jhc2U9OTUwMAorZ2V0X3Bv cnRzCitta2RpciBGIFIKK2VudiBMRF9MSUJSQVJZX1BBVEg9JGxkcGF0aCBERUJVR0lORk9EX1VS TFM9ICR7YWJzX2J1aWxkZGlyfS8uLi9kZWJ1Z2luZm9kL2RlYnVnaW5mb2QgJFZFUkJPU0UgLUYg LVIgLWQgJERCIC1wICRQT1JUMSAtdDAgLWcwIC12IFIgRiA+IHZsb2ckUE9SVDEgMj4mMSAmCitQ SUQxPSQhCit0ZW1wZmlsZXMgdmxvZyRQT1JUMQorZXJyZmlsZXMgdmxvZyRQT1JUMQorIyBTZXJ2 ZXIgbXVzdCBiZWNvbWUgcmVhZHkKK3dhaXRfcmVhZHkgJFBPUlQxICdyZWFkeScgMQorZXhwb3J0 IERFQlVHSU5GT0RfVVJMUz1odHRwOi8vMTI3LjAuMC4xOiRQT1JUMS8gICAjIG9yIHdpdGhvdXQg dHJhaWxpbmcgLworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgQ29tcGlsZSBhIHNpbXBsZSBwcm9ncmFt LCBzdHJpcCBpdHMgZGVidWdpbmZvIGFuZCBzYXZlIHRoZSBidWlsZC1pZC4KKyMgQWxzbyBtb3Zl IHRoZSBkZWJ1Z2luZm8gaW50byBhbm90aGVyIGRpcmVjdG9yeSBzbyB0aGF0IGVsZnV0aWxzCisj IGNhbm5vdCBmaW5kIGl0IHdpdGhvdXQgZGVidWdpbmZvZC4KK2VjaG8gImludCBtYWluKCkgeyBy ZXR1cm4gMDsgfSIgPiAke1BXRH0vcHJvZy5jCit0ZW1wZmlsZXMgcHJvZy5jCisjIENyZWF0ZSBh IHN1YmRpcmVjdG9yeSB0byBjb25mb3VuZCBzb3VyY2UgcGF0aCBuYW1lcworbWtkaXIgZm9vYmFy CitnY2MgLVdsLC0tYnVpbGQtaWQgLWcgLW8gcHJvZyAke1BXRH0vZm9vYmFyLy8vLi8uLi9wcm9n LmMKKworbXYgcHJvZyBGCisKK2NwIC1ydnAgJHthYnNfc3JjZGlyfS9kZWJ1Z2luZm9kLXJwbXMg UgoraWYgWyAiJHpzdGQiID0gImZhbHNlIiBdOyB0aGVuICAjIG51a2UgdGhlIHpzdGQgZmVkb3Jh IDMxIG9uZXMKKyAgICBybSAtdnJmIFIvZGVidWdpbmZvZC1ycG1zL2ZlZG9yYTMxCitmaQorCitr aWxsIC1VU1IxICRQSUQxCisjIFdhaXQgdGlsbCBib3RoIGZpbGVzIGFyZSBpbiB0aGUgaW5kZXgg YW5kIHNjYW4vaW5kZXggZnVsbHkgZmluaXNoZWQKK3dhaXRfcmVhZHkgJFBPUlQxICd0aHJlYWRf d29ya190b3RhbHtyb2xlPSJ0cmF2ZXJzZSJ9JyAxCisjIEFsbCBycG1zIG5lZWQgdG8gYmUgaW4g dGhlIGluZGV4LCBleGNlcHQgdGhlIGR1bW15IHBlcm1pc3Npb24tMDAwIG9uZQorcnBtcz0kKGZp bmQgUiAtbmFtZSBcKnJwbSB8IGdyZXAgLXYgbm90aGluZyB8IHdjIC1sKQord2FpdF9yZWFkeSAk UE9SVDEgJ3NjYW5uZWRfZmlsZXNfdG90YWx7c291cmNlPSIucnBtIGFyY2hpdmUifScgJHJwbXMK K2tpbGwgLVVTUjEgJFBJRDEgICMgdHdvIGhpdHMgb2YgU0lHVVNSMSBtYXkgYmUgbmVlZGVkIHRv IHJlc29sdmUgLmRlYnVnLT5kd3otPnNyZWZzCisjIFdhaXQgdGlsbCBib3RoIGZpbGVzIGFyZSBp biB0aGUgaW5kZXggYW5kIHNjYW4vaW5kZXggZnVsbHkgZmluaXNoZWQKK3dhaXRfcmVhZHkgJFBP UlQxICd0aHJlYWRfd29ya190b3RhbHtyb2xlPSJ0cmF2ZXJzZSJ9JyAyCisKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIyMgUFIyNzI3NworIyBNYWtlIGEgc2ltcGxlIHJlcXVlc3QgdG8gdGhlIGRlYnVnaW5m b2Qgc2VydmVyIGFuZCBjaGVjayBkZWJ1Z2luZm9kLWZpbmQncyB2bG9nIHRvIHNlZSBpZgorIyB0 aGUgY3VzdG9tIEhUVFAgaGVhZGVycyBhcmUgcmVjZWl2ZWQuCitybSAtcmYgJERFQlVHSU5GT0Rf Q0FDSEVfUEFUSAorZW52IERFQlVHSU5GT0RfVVJMUz0iaHR0cDovLzEyNy4wLjAuMToiJFBPUlQx IExEX0xJQlJBUllfUEFUSD0kbGRwYXRoICR7YWJzX3RvcF9idWlsZGRpcn0vZGVidWdpbmZvZC9k ZWJ1Z2luZm9kLWZpbmRcCisgICAgLXZ2diBleGVjdXRhYmxlIEYvcHJvZyA+IHZsb2ctZmluZCRQ T1JUMS4xIDI+JjEKK3RlbXBmaWxlcyB2bG9nLWZpbmQkUE9SVDEuMQorZ3JlcCAnQ29udGVudC1M ZW5ndGg6ICcgdmxvZy1maW5kJFBPUlQxLjEKK2dyZXAgJ0Nvbm5lY3Rpb246ICcgdmxvZy1maW5k JFBPUlQxLjEKK2dyZXAgJ0NhY2hlLUNvbnRyb2w6ICcgdmxvZy1maW5kJFBPUlQxLjEKK2dyZXAg J1gtREVCVUdJTkZPRC1GSUxFOiAnIHZsb2ctZmluZCRQT1JUMS4xCitncmVwICdYLURFQlVHSU5G T0QtU0laRTogJyB2bG9nLWZpbmQkUE9SVDEuMQorCisjIENoZWNrIHRvIHNlZSBpZiBhbiBleGVj dXRhYmxlIGZpbGUgbG9jYXRlZCBpbiBhbiBhcmNoaXZlIHByaW50cyB0aGUgZmlsZSdzIGRlc2Ny aXB0aW9uIGFuZCBhcmNoaXZlCitlbnYgREVCVUdJTkZPRF9VUkxTPSJodHRwOi8vMTI3LjAuMC4x OiIkUE9SVDEgTERfTElCUkFSWV9QQVRIPSRsZHBhdGggJHthYnNfdG9wX2J1aWxkZGlyfS9kZWJ1 Z2luZm9kL2RlYnVnaW5mb2QtZmluZFwKKyAgICAtdnZ2IGV4ZWN1dGFibGUgYzM2NzA4YTc4NjE4 ZDU5N2RlZTE1ZDBkYzk4OWYwOTNjYTVmOTEyMCA+IHZsb2ctZmluZCRQT1JUMS4yIDI+JjEKK3Rl bXBmaWxlcyB2bG9nLWZpbmQkUE9SVDEuMgorZ3JlcCAnQ29udGVudC1MZW5ndGg6ICcgdmxvZy1m aW5kJFBPUlQxLjIKK2dyZXAgJ0Nvbm5lY3Rpb246ICcgdmxvZy1maW5kJFBPUlQxLjIKK2dyZXAg J0NhY2hlLUNvbnRyb2w6ICcgdmxvZy1maW5kJFBPUlQxLjIKK2dyZXAgJ1gtREVCVUdJTkZPRC1G SUxFOiAnIHZsb2ctZmluZCRQT1JUMS4yCitncmVwICdYLURFQlVHSU5GT0QtU0laRTogJyB2bG9n LWZpbmQkUE9SVDEuMgorZ3JlcCAnWC1ERUJVR0lORk9ELUFSQ0hJVkU6ICcgdmxvZy1maW5kJFBP UlQxLjIKKwora2lsbCAkUElEMQord2FpdCAkUElEMQorUElEMT0wCitleGl0IDAKLS0gCjIuMzEu MQoK --000000000000fe3b4205cbe602b3--