From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 111833 invoked by alias); 10 Feb 2020 23:51:53 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 111825 invoked by uid 89); 10 Feb 2020 23:51:52 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-18.4 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_BADIPHTTP,KAM_SHORT,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 spammy=sim, fullname, 8000 X-HELO: us-smtp-delivery-1.mimecast.com Received: from us-smtp-1.mimecast.com (HELO us-smtp-delivery-1.mimecast.com) (207.211.31.81) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 10 Feb 2020 23:51:47 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1581378705; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=zwonFVKaU+m8EUmX87PMz34BJ2vLa1m3GLA5Zg1sJfs=; b=S3a5iN5lFOQ+1TGIrPj+W9GAJSdxnCBCZQhmwZeHhxEpDDNzVo0rs9nUpvqZ7y7IHs5fK6 89b5isId/1rsztdZgLj4FZbHiKLAHO+CSPXCX5efrlVuewLIF8pv0+CguHHgCq1pe9pESz DQ2vVMS/RxWY0aLSaSWf95cmogW8s18= Received: from mail-vk1-f198.google.com (mail-vk1-f198.google.com [209.85.221.198]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-283-MdXWUq6XORyfc-w-_OV4dg-1; Mon, 10 Feb 2020 18:51:42 -0500 Received: by mail-vk1-f198.google.com with SMTP id k16so2855797vko.11 for ; Mon, 10 Feb 2020 15:51:42 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Aaron Merey Date: Mon, 10 Feb 2020 23:51:00 -0000 Message-ID: Subject: Re: [PATCH v3] Add debuginfod support to GDB To: Simon Marchi , gdb-patches@sourceware.org Cc: Tom Tromey , Christian Biesinger X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="000000000000c07496059e416bfd" X-SW-Source: 2020-02/txt/msg00303.txt.bz2 --000000000000c07496059e416bfd Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Content-length: 3753 Hi Simon, Thanks for the feedback, I've updated the patch with your suggestions (attached) and I've included some additional comments below. On Fri, Feb 7, 2020 at 3:39 PM Simon Marchi wrote: > I think the cancellation is not quite right, although I have not > tried it yet. The problem is that we don't seem to differentiate > user cancellation from other errors. > > When long running operations are cancelled in GDB, that is done by > throwing an exception. For example, if you process a lot of data, > you can call the QUIT macro in your loop such that an exception will > be thrown if the quit flag (set by the SIGINT handler) is set. > > Here, if the user does ctrl-c during a download, the download will > be interrupted and debuginfod_find_debuginfo will return some error > code. We will then simply return an error to the caller. It will > look as if the query failed, which is different from user interruption. > > If we return a non-zero value in the progress function, we should note > it somewhere, such that when debuginfod_find_debuginfo returns, we can > throw a "quit" exception. The usual place to save that would be in some > void* user data passed to debuginfod_find_debuginfo which would also be > passed to the progress function, but unfortunately the library does not > provide that. I agree that there's an ambiguity here. To fix this I changed the progress function so that it now preserves quit_flag's value after calling check_quit_flag and detecting that the user interrupted a download. The GDB interpreter will now see that SIGINT was raised, process it like usual and print "Quit" by the prompt. Hopefully this sufficiently distinguishes a user interrupt from other errors. I do see the point you make about how the debuginfod library might handle these things internally. Another possibility would be for debuginfod_find_* to return something like -EINTR when the progressfn triggers a download cancelation. > > +set port [exec sh -c "while true; do PORT=3D`expr '(' \$RANDOM % 1000 = ')' + 9000`; ss -atn | fgrep \":\$PORT\" || break; done; echo \$PORT"] > > Hmmm, this opens the door to flakiness due to TOCTOU. > > Would it be feasible instead to ask debuginfod to bind to port 0 (which w= ould make the kernel > choose any free port) and then read the port number from debuginfod's std= out? It seems like > it already partly works, when I start debuginfod with `-p 0`, it binds to= random ipv4 and ipv6 > ports. However it prints: > > started http server on IPv4 IPv6 port=3D0 > > But I guess it would not be too difficult in that case to fetch the effec= tive port and print that. > Also, the ipv4 and ipv6 port numbers are different, so you would need to = print both. To fix this TOCTOU concern I changed the test driver to iterate through ports starting at 8000 and attempt to start up a debuginfod instance until a successful start up is detected from the server's output via Expect. > Just wondering, does the server output something when it's done initializ= ing? would it be > possible and simpler to read its stdout and wait for that message? That'= s the kind of thing > that should be relatively easy with Expect. You would have to start the = process with Expect's > `spawn` procedure and await its output using the `expect` procedure. Before running the tests we want to make sure the server has found the necessary debug and source files. Asynchronous threads scan for these files and they do not necessarily find them before debuginfod initializes and begins accepting requests. Therefore we have to query the server for its metrics (part of the debuginfod web API) which eventually indicate that the correct amount of files were found during scanning. Aaron --000000000000c07496059e416bfd Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-debuginfod-support-to-GDB.patch" Content-Disposition: attachment; filename="0001-Add-debuginfod-support-to-GDB.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k6h3v4vp0 Content-length: 44132 RnJvbSA4OGM0OTFhNjhmOGZjZjYyNTg4MTU3ODdhM2YyYzBiMDllMzViOTBh IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBYXJvbiBNZXJleSA8 YW1lcmV5QHJlZGhhdC5jb20+CkRhdGU6IFRodSwgNiBGZWIgMjAyMCAxNDow NTowNSAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBkZWJ1Z2luZm9kIHN1 cHBvcnQgdG8gR0RCCgpkZWJ1Z2luZm9kIGlzIGEgbGlnaHR3ZWlnaHQgd2Vi IHNlcnZpY2UgdGhhdCBpbmRleGVzIEVMRi9EV0FSRiBkZWJ1Z2dpbmcKcmVz b3VyY2VzIGJ5IGJ1aWxkLWlkIGFuZCBzZXJ2ZXMgdGhlbSBvdmVyIEhUVFAu CgpUaGlzIHBhdGNoIGVuYWJsZXMgR0RCIHRvIHF1ZXJ5IGRlYnVnaW5mb2Qg c2VydmVycyBmb3Igc2VwYXJhdGUgZGVidWcKZmlsZXMgYW5kIHNvdXJjZSBj b2RlIHdoZW4gaXQgaXMgb3RoZXJ3aXNlIG5vdCBhYmxlIHRvIGZpbmQgdGhl bS4KCkdEQiBjYW4gYmUgYnVpbHQgd2l0aCBkZWJ1Z2luZm9kIHVzaW5nIHRo ZSAtLXdpdGgtZGVidWdpbmZvZCBjb25maWd1cmUKb3B0aW9uLgoKVGhpcyBy ZXF1aXJlcyB0aGF0IGxpYmRlYnVnaW5mb2QgYmUgaW5zdGFsbGVkIGFuZCBm b3VuZCBhdCBjb25maWd1cmUgdGltZS4KCmRlYnVnaW5mb2QgaXMgcGFja2Fn ZWQgd2l0aCBlbGZ1dGlscywgc3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDAuMTc4 LgoKRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIGh0dHBzOi8vc291cmNld2Fy ZS5vcmcvZWxmdXRpbHMvLgoKVGVzdGVkIG9uIHg4Nl82NCBGZWRvcmEgMzEu CgpnZGIvQ2hhbmdlTG9nOgoyMDIwLTAyLTEwICBBYXJvbiBNZXJleSAgPGFt ZXJleUByZWRoYXQuY29tPgoKICAgICAgICAqIE1ha2VmaWxlLmluOiBIYW5k bGUgb3B0aW9uYWwgZGVidWdpbmZvZCBzdXBwb3J0LgogICAgICAgICogTkVX UzogVXBkYXRlLgogICAgICAgICogUkVBRE1FOiBBZGQgLS13aXRoLWRlYnVn aW5mb2Qgc3VtbWFyeS4KICAgICAgICAqIGNvbmZpZy5pbjogUmVnZW5lcmF0 ZS4KICAgICAgICAqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KICAgICAgICAq IGNvbmZpZ3VyZS5hYzogSGFuZGxlIG9wdGlvbmFsIGRlYnVnaW5mb2Qgc3Vw cG9ydC4KICAgICAgICAqIGRlYnVnaW5mb2Qtc3VwcG9ydC5jOiBkZWJ1Z2lu Zm9kIGhlbHBlciBmdW5jdGlvbnMuCiAgICAgICAgKiBkZWJ1Z2luZm9kLXN1 cHBvcnQuaDogRGl0dG8uCiAgICAgICAgKiBkb2MvZ2RiLnRleGluZm86IEFk ZCAtLXdpdGgtZGVidWdpbmZvZCB0byBjb25maWd1cmUgb3B0aW9ucwogICAg ICAgIHN1bW1hcnkuCiAgICAgICAgKiBkd2FyZjJyZWFkLmMgKGR3YXJmMl9n ZXRfZHd6X2ZpbGUpOiBRdWVyeSBkZWJ1Z2luZm9kIHNlcnZlcnMKICAgICAg ICB3aGVuIGEgZHd6IGZpbGUgY2Fubm90IGJlIGZvdW5kLgogICAgICAgICog ZWxmcmVhZC5jIChlbGZfc3ltZmlsZV9yZWFkKTogUXVlcnkgZGVidWdpbmZv ZCBzZXJ2ZXJzIHdoZW4gYQogICAgICAgIGRlYnVnaW5mbyBmaWxlIGNhbm5v dCBiZSBmb3VuZC4KICAgICAgICAqIHNvdXJjZS5jIChvcGVuX3NvdXJjZV9m aWxlKTogUXVlcnkgZGVidWdpbmZvZCBzZXJ2ZXJzIHdoZW4gYQogICAgICAg IHNvdXJjZSBmaWxlIGNhbm5vdCBiZSBmb3VuZC4KICAgICAgICAqIHRvcC5j IChwcmludF9nZGJfY29uZmlndXJhdGlvbik6IEluY2x1ZGUKICAgICAgICAt LXt3aXRoLHdpdGhvdXR9LWRlYnVnaW5mb2QgaW4gdGhlIG91dHB1dC4KCmdk Yi90ZXN0c3VpdGUvQ2hhbmdlTG9nOgoyMDIwLTAyLTEwICBBYXJvbiBNZXJl eSAgPGFtZXJleUByZWRoYXQuY29tPgoKICAgICAgICAqIGdkYi5kZWJ1Z2lu Zm9kOiBOZXcgZGlyZWN0b3J5IGZvciBkZWJ1Z2luZm9kIHRlc3RzLgogICAg ICAgICogZ2RiLmRlYnVnaW5mb2QvbWFpbi5jOiBOZXcgdGVzdCBmaWxlLgog ICAgICAgICogZ2RiLmRlYnVnaW5mb2QvZmV0Y2hfc3JjX2FuZF9zeW1ib2xz LmV4cDogTmV3IHRlc3RzLgotLS0KIGdkYi9NYWtlZmlsZS5pbiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArLQogZ2RiL05FV1MgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsrCiBn ZGIvUkVBRE1FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDkgKwogZ2RiL2NvbmZpZy5pbiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAzICsKIGdkYi9jb25maWd1cmUgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICA5NSArKysrKysrLQogZ2RiL2NvbmZp Z3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDM0ICsr LQogZ2RiL2RlYnVnaW5mb2Qtc3VwcG9ydC5jICAgICAgICAgICAgICAgICAg ICAgIHwgMTEyICsrKysrKysrKwogZ2RiL2RlYnVnaW5mb2Qtc3VwcG9ydC5o ICAgICAgICAgICAgICAgICAgICAgIHwgIDU1ICsrKysrCiBnZGIvZG9jL2dk Yi50ZXhpbmZvICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKwog Z2RiL2R3YXJmMnJlYWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDE5ICsrCiBnZGIvZWxmcmVhZC5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMjcgKystCiBnZGIvc291cmNlLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzUgKysrCiAuLi4vZ2RiLmRl YnVnaW5mb2QvZmV0Y2hfc3JjX2FuZF9zeW1ib2xzLmV4cCAgfCAyMTQgKysr KysrKysrKysrKysrKysrCiBnZGIvdGVzdHN1aXRlL2dkYi5kZWJ1Z2luZm9k L21haW4uYyAgICAgICAgICAgfCAgMjUgKysKIGdkYi90b3AuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArCiAxNSBmaWxl cyBjaGFuZ2VkLCA2NjAgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvZGVidWdpbmZvZC1zdXBwb3J0LmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvZGVidWdpbmZvZC1zdXBwb3J0LmgK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5kZWJ1Z2lu Zm9kL2ZldGNoX3NyY19hbmRfc3ltYm9scy5leHAKIGNyZWF0ZSBtb2RlIDEw MDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5kZWJ1Z2luZm9kL21haW4uYwoKZGlm ZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgpp bmRleCA0NWQxNTg2ZTg1Li5lMzE0OTNkZjllIDEwMDY0NAotLS0gYS9nZGIv TWFrZWZpbGUuaW4KKysrIGIvZ2RiL01ha2VmaWxlLmluCkBAIC01OTEsNyAr NTkxLDggQEAgSU5URVJOQUxfQ0ZMQUdTX0JBU0UgPSBcCiAJJChHREJfQ0ZM QUdTKSAkKE9QQ09ERVNfQ0ZMQUdTKSAkKFJFQURMSU5FX0NGTEFHUykgJCha TElCSU5DKSBcCiAJJChCRkRfQ0ZMQUdTKSAkKElOQ0xVREVfQ0ZMQUdTKSAk KExJQkRFQ05VTUJFUl9DRkxBR1MpIFwKIAkkKElOVExfQ0ZMQUdTKSAkKElO Q0dOVSkgJChJTkNTVVBQT1JUKSAkKEVOQUJMRV9DRkxBR1MpIFwKLQkkKElO VEVSTkFMX0NQUEZMQUdTKSAkKFNSQ0hJR0hfQ0ZMQUdTKSAkKFRPUF9DRkxB R1MpICQoUFRIUkVBRF9DRkxBR1MpCisJJChJTlRFUk5BTF9DUFBGTEFHUykg JChTUkNISUdIX0NGTEFHUykgJChUT1BfQ0ZMQUdTKSAkKFBUSFJFQURfQ0ZM QUdTKSBcCisJQERFQlVHSU5GT0RfQ0ZMQUdTQAogSU5URVJOQUxfV0FSTl9D RkxBR1MgPSAkKElOVEVSTkFMX0NGTEFHU19CQVNFKSAkKEdEQl9XQVJOX0NG TEFHUykKIElOVEVSTkFMX0NGTEFHUyA9ICQoSU5URVJOQUxfV0FSTl9DRkxB R1MpICQoR0RCX1dFUlJPUl9DRkxBR1MpCiAKQEAgLTYxNiw3ICs2MTcsOCBA QCBDTElCUyA9ICQoU0lNKSAkKFJFQURMSU5FKSAkKE9QQ09ERVMpICQoQkZE KSAkKExJQkNURikgJChaTElCKSBcCiAJQExJQlNAIEBHVUlMRV9MSUJTQCBA UFlUSE9OX0xJQlNAIFwKIAkkKExJQkVYUEFUKSAkKExJQkxaTUEpICQoTElC QkFCRUxUUkFDRSkgJChMSUJJUFQpIFwKIAkkKFdJTjMyTElCUykgJChMSUJH TlUpICQoTElCSUNPTlYpIFwKLQkkKExJQk1QRlIpICQoU1JDSElHSF9MSUJT KSAkKExJQlhYSEFTSCkgJChQVEhSRUFEX0xJQlMpCisJJChMSUJNUEZSKSAk KFNSQ0hJR0hfTElCUykgJChMSUJYWEhBU0gpICQoUFRIUkVBRF9MSUJTKSBc CisJQERFQlVHSU5GT0RfTElCU0AKIENERVBTID0gJChOQVRfQ0RFUFMpICQo U0lNKSAkKEJGRCkgJChSRUFETElORV9ERVBTKSAkKExJQkNURikgXAogCSQo T1BDT0RFUykgJChJTlRMX0RFUFMpICQoTElCSUJFUlRZKSAkKENPTkZJR19E RVBTKSAkKExJQkdOVSkgXAogCSQoTElCU1VQUE9SVCkKQEAgLTk5MCw2ICs5 OTIsNyBAQCBDT01NT05fU0ZJTEVTID0gXAogCWRieHJlYWQuYyBcCiAJZGNh Y2hlLmMgXAogCWRlYnVnLmMgXAorCWRlYnVnaW5mb2Qtc3VwcG9ydC5jIFwK IAlkaWN0aW9uYXJ5LmMgXAogCWRpc2FzbS5jIFwKIAlkaXNhc20tc2VsZnRl c3RzLmMgXApkaWZmIC0tZ2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVXUwppbmRl eCBkNGUyZTcwZjM4Li4yZjllNzc1NmIwIDEwMDY0NAotLS0gYS9nZGIvTkVX UworKysgYi9nZGIvTkVXUwpAQCAtMyw2ICszLDIwIEBACiAKICoqKiBDaGFu Z2VzIHNpbmNlIEdEQiA5CiAKKyogR0RCIG5vdyBzdXBwb3J0cyBkZWJ1Z2lu Zm9kLCBhbiBIVFRQIHNlcnZlciBmb3IgZGlzdHJpYnV0aW5nIEVMRi9EV0FS RgorICBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gYXMgd2VsbCBhcyBzb3VyY2Ug Y29kZS4KKworICBXaGVuIGJ1aWx0IHdpdGggZGVidWdpbmZvZCwgR0RCIGNh biBhdXRvbWF0aWNhbGx5IHF1ZXJ5IGRlYnVnaW5mb2QKKyAgc2VydmVycyBm b3IgdGhlIHNlcGFyYXRlIGRlYnVnIGZpbGVzIGFuZCBzb3VyY2UgY29kZSBv ZiB0aGUgZXhlY3V0YWJsZQorICBiZWluZyBkZWJ1Z2dlZC4KKworICBUbyBi dWlsZCBHREIgd2l0aCBkZWJ1Z2luZm9kLCBwYXNzIC0td2l0aC1kZWJ1Z2lu Zm9kIHRvIGNvbmZpZ3VyZSAodGhpcworICByZXF1aXJlcyBsaWJkZWJ1Z2lu Zm9kLCB0aGUgZGVidWdpbmZvZCBjbGllbnQgbGlicmFyeSkuCisKKyAgZGVi dWdpbmZvZCBpcyBkaXN0cmlidXRlZCB3aXRoIGVsZnV0aWxzLCBzdGFydGlu ZyB3aXRoIHZlcnNpb24gMC4xNzguCisKKyAgWW91IGNhbiBnZXQgdGhlIGxh dGVzdCB2ZXJzaW9uIGZyb20gaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9lbGZ1 dGlscy4KKwogKiBEZWJ1Z2dpbmcgTVMtV2luZG93cyBwcm9jZXNzZXMgbm93 IHNldHMgJF9leGl0c2lnbmFsIHdoZW4gdGhlCiAgIGluZmVyaW9yIGlzIHRl cm1pbmF0ZWQgYnkgYSBzaWduYWwsIGluc3RlYWQgb2Ygc2V0dGluZyAkX2V4 aXRjb2RlLgogCmRpZmYgLS1naXQgYS9nZGIvUkVBRE1FIGIvZ2RiL1JFQURN RQppbmRleCBiZTdmZGNiNjVkLi44NDBjZjFmODVjIDEwMDY0NAotLS0gYS9n ZGIvUkVBRE1FCisrKyBiL2dkYi9SRUFETUUKQEAgLTQzMiw2ICs0MzIsMTUg QEAgbW9yZSBvYnNjdXJlIEdEQiBgY29uZmlndXJlJyBvcHRpb25zIGFyZSBu b3QgbGlzdGVkIGhlcmUuCiAgICAgIFVzZSB0aGUgY3Vyc2VzIGxpYnJhcnkg aW5zdGVhZCBvZiB0aGUgdGVybWNhcCBsaWJyYXJ5LCBmb3IKICAgICAgdGV4 dC1tb2RlIHRlcm1pbmFsIG9wZXJhdGlvbnMuCiAKK2AtLXdpdGgtZGVidWdp bmZvZCcKKyAgICAgQnVpbGQgR0RCIHdpdGggbGliZGVidWdpbmZvZCwgdGhl IGRlYnVnaW5mb2QgY2xpZW50IGxpYnJhcnkuICBVc2VkCisgICAgIHRvIGF1 dG9tYXRpY2FsbHkgZmV0Y2ggc291cmNlIGZpbGVzIGFuZCBzZXBhcmF0ZSBk ZWJ1ZyBmaWxlcyBmcm9tCisgICAgIGRlYnVnaW5mb2Qgc2VydmVycyB1c2lu ZyB0aGUgYXNzb2NpYXRlZCBleGVjdXRhYmxlJ3MgYnVpbGQgSUQuCisgICAg IEVuYWJsZWQgYnkgZGVmYXVsdCBpZiBsaWJkZWJ1Z2luZm9kIGlzIGluc3Rh bGxlZCBhbmQgZm91bmQgYXQKKyAgICAgY29uZmlndXJlIHRpbWUuICBkZWJ1 Z2luZm9kIGlzIHBhY2thZ2VkIHdpdGggZWxmdXRpbHMsIHN0YXJ0aW5nCisg ICAgIHdpdGggdmVyc2lvbiAwLjE3OC4gIFlvdSBjYW4gZ2V0IHRoZSBsYXRl c3QgdmVyc2lvbiBmcm9tCisgICAgICdodHRwczovL3NvdXJjZXdhcmUub3Jn L2VsZnV0aWxzLycuCisKIGAtLXdpdGgtbGlidW53aW5kLWlhNjQnCiAgICAg IFVzZSB0aGUgbGlidW53aW5kIGxpYnJhcnkgZm9yIHVud2luZGluZyBmdW5j dGlvbiBjYWxsIHN0YWNrIG9uIGlhNjQKICAgICAgdGFyZ2V0IHBsYXRmb3Jt cy4KZGlmZiAtLWdpdCBhL2dkYi9jb25maWcuaW4gYi9nZGIvY29uZmlnLmlu CmluZGV4IGNiODg2YmE4ZTEuLjU5MzliOGU0MzYgMTAwNjQ0Ci0tLSBhL2dk Yi9jb25maWcuaW4KKysrIGIvZ2RiL2NvbmZpZy5pbgpAQCAtMjI3LDYgKzIy Nyw5IEBACiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGJhYmVsdHJhY2Ug bGlicmFyeS4gKi8KICN1bmRlZiBIQVZFX0xJQkJBQkVMVFJBQ0UKIAorLyog RGVmaW5lIHRvIDEgaWYgZGVidWdpbmZvZCBpcyBlbmFibGVkLiAqLworI3Vu ZGVmIEhBVkVfTElCREVCVUdJTkZPRAorCiAvKiBEZWZpbmUgaWYgeW91IGhh dmUgdGhlIGV4cGF0IGxpYnJhcnkuICovCiAjdW5kZWYgSEFWRV9MSUJFWFBB VAogCmRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3Vy ZQppbmRleCA3MmZmYWQ4ZDM3Li5jZGFjYzFkZDhlIDEwMDc1NQotLS0gYS9n ZGIvY29uZmlndXJlCisrKyBiL2dkYi9jb25maWd1cmUKQEAgLTcxOSw3ICs3 MTksNiBAQCBHVUlMRV9MSUJTCiBHVUlMRV9DUFBGTEFHUwogR1VJTERfVEFS R0VUX0ZMQUcKIEdVSUxECi1wa2dfY29uZmlnX3Byb2dfcGF0aAogSEFWRV9Q WVRIT05fRkFMU0UKIEhBVkVfUFlUSE9OX1RSVUUKIFBZVEhPTl9MSUJTCkBA IC03NTgsNiArNzU3LDkgQEAgUkVQT1JUX0JVR1NfVEVYSQogUkVQT1JUX0JV R1NfVE8KIFBLR1ZFUlNJT04KIENPREVTSUdOX0NFUlQKK0RFQlVHSU5GT0Rf Q0ZMQUdTCitERUJVR0lORk9EX0xJQlMKK3BrZ19jb25maWdfcHJvZ19wYXRo CiBIQVZFX05BVElWRV9HQ09SRV9UQVJHRVQKIFRBUkdFVF9PQlMKIHN1YmRp cnMKQEAgLTg2OSw2ICs4NzEsNyBAQCBlbmFibGVfNjRfYml0X2JmZAogZW5h YmxlX2dkYm1pCiBlbmFibGVfdHVpCiBlbmFibGVfZ2RidGsKK3dpdGhfZGVi dWdpbmZvZAogd2l0aF9saWJ1bndpbmRfaWE2NAogd2l0aF9jdXJzZXMKIGVu YWJsZV9wcm9maWxpbmcKQEAgLTE1OTgsNiArMTYwMSw4IEBAIE9wdGlvbmFs IFBhY2thZ2VzOgogICAgICAgICAgICAgICAgICAgICAgICAgICBbLS13aXRo LWF1dG8tbG9hZC1kaXJdCiAgIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1w YXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIG5vdCByZXN0cmlj dCBhdXRvLWxvYWRlZCBmaWxlcyBsb2NhdGlvbnMKKyAgLS13aXRoLWRlYnVn aW5mb2QgICAgICAgRW5hYmxlIGRlYnVnaW5mbyBsb29rdXBzIHdpdGggZGVi dWdpbmZvZAorICAgICAgICAgICAgICAgICAgICAgICAgICAoYXV0by95ZXMv bm8pCiAgIC0td2l0aC1saWJ1bndpbmQtaWE2NCAgIHVzZSBsaWJ1bndpbmQg ZnJhbWUgdW53aW5kaW5nIGZvciBpYTY0IHRhcmdldHMKICAgLS13aXRoLWN1 cnNlcyAgICAgICAgICAgdXNlIHRoZSBjdXJzZXMgbGlicmFyeSBpbnN0ZWFk IG9mIHRoZSB0ZXJtY2FwCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxp YnJhcnkKQEAgLTY4MjQsOCArNjgyOSw5NCBAQCAkYXNfZWNobyAiJGFzX21l OiBXQVJOSU5HOiBnZGJ0ayBpc24ndCBzdXBwb3J0ZWQgb24gJGhvc3Q7IGRp c2FibGluZyIgPiYyO30KICAgICBlbmFibGVfZ2RidGs9bm8gOzsKIGVzYWMK IAotIyBMaWJ1bndpbmQgc3VwcG9ydCBmb3IgaWE2NC4KKyMgSGFuZGxlIG9w dGlvbmFsIGRlYnVnaW5mb2Qgc3VwcG9ydAorCisjIENoZWNrIHdoZXRoZXIg LS13aXRoLWRlYnVnaW5mb2Qgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRo X2RlYnVnaW5mb2Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3 aXRoX2RlYnVnaW5mb2Q7CitlbHNlCisgIHdpdGhfZGVidWdpbmZvZD1hdXRv CitmaQogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGNoZWNraW5nIHdoZXRoZXIgdG8gdXNlIGRlYnVnaW5mb2QiID4mNQor JGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0byB1c2UgZGVidWdpbmZv ZC4uLiAiID4mNjsgfQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2RlYnVnaW5mb2QiID4mNQorJGFz X2VjaG8gIiR3aXRoX2RlYnVnaW5mb2QiID4mNjsgfQorCitpZiB0ZXN0ICJ4 JHdpdGhfZGVidWdpbmZvZCIgIT0geG5vOyB0aGVuCisgICMgRXh0cmFjdCB0 aGUgZmlyc3Qgd29yZCBvZiAicGtnLWNvbmZpZyIsIHNvIGl0IGNhbiBiZSBh IHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgcGtnLWNvbmZp ZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2Vj aG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAk e2FjX2N2X3BhdGhfcGtnX2NvbmZpZ19wcm9nX3BhdGgrOn0gZmFsc2U7IHRo ZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBj YXNlICRwa2dfY29uZmlnX3Byb2dfcGF0aCBpbgorICBbXFwvXSogfCA/Oltc XC9dKikKKyAgYWNfY3ZfcGF0aF9wa2dfY29uZmlnX3Byb2dfcGF0aD0iJHBr Z19jb25maWdfcHJvZ19wYXRoIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0 aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9J RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAk UEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNf ZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAk YWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVj dXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVu CisgICAgYWNfY3ZfcGF0aF9wa2dfY29uZmlnX3Byb2dfcGF0aD0iJGFzX2Rp ci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisg IGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3Zf cGF0aF9wa2dfY29uZmlnX3Byb2dfcGF0aCIgJiYgYWNfY3ZfcGF0aF9wa2df Y29uZmlnX3Byb2dfcGF0aD0ibWlzc2luZyIKKyAgOzsKK2VzYWMKK2ZpCitw a2dfY29uZmlnX3Byb2dfcGF0aD0kYWNfY3ZfcGF0aF9wa2dfY29uZmlnX3By b2dfcGF0aAoraWYgdGVzdCAtbiAiJHBrZ19jb25maWdfcHJvZ19wYXRoIjsg dGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogJHBrZ19jb25maWdfcHJvZ19wYXRoIiA+JjUKKyRhc19l Y2hvICIkcGtnX2NvbmZpZ19wcm9nX3BhdGgiID4mNjsgfQorZWxzZQorICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs dDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICBp ZiB0ZXN0ICIke3BrZ19jb25maWdfcHJvZ19wYXRofSIgIT0gIm1pc3Npbmci OyB0aGVuCisgICAgJHtwa2dfY29uZmlnX3Byb2dfcGF0aH0gLS1leGlzdHMg LS1hdGxlYXN0LXZlcnNpb249MC4xNzggbGliZGVidWdpbmZvZAorICAgIGlm IHRlc3QgJD8gPSAwOyB0aGVuCisgICAgICBERUJVR0lORk9EX0xJQlM9YCR7 cGtnX2NvbmZpZ19wcm9nX3BhdGh9IC0tbGlicyBsaWJkZWJ1Z2luZm9kYAor CisgICAgICBERUJVR0lORk9EX0NGTEFHUz1gJHtwa2dfY29uZmlnX3Byb2df cGF0aH0gLS1jZmxhZ3MgbGliZGVidWdpbmZvZGAKKworCiskYXNfZWNobyAi I2RlZmluZSBIQVZFX0xJQkRFQlVHSU5GT0QgMSIgPj5jb25mZGVmcy5oCisK KyAgICBlbHNlCisgICAgICBpZiB0ZXN0ICJ4JHdpdGhfZGVidWdpbmZvZCIg PSB4eWVzOyB0aGVuCisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICJcIi0td2l0 aC1kZWJ1Z2luZm9kIHdhcyBnaXZlbiwgYnV0IGxpYmRlYnVnaW5mb2QgaXMg bWlzc2luZyBvciB1bnVzYWJsZS5cIiIgIiRMSU5FTk8iIDUKKyAgICAgIGVs c2UKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBXQVJOSU5HOiBsaWJkZWJ1Z2luZm9kIGlzIG1pc3Npbmcgb3Ig dW51c2FibGU7IHNvbWUgZmVhdHVyZXMgbWF5IGJlIHVuYXZhaWxhYmxlLiIg PiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBsaWJkZWJ1Z2luZm9k IGlzIG1pc3Npbmcgb3IgdW51c2FibGU7IHNvbWUgZmVhdHVyZXMgbWF5IGJl IHVuYXZhaWxhYmxlLiIgPiYyO30KKyAgICAgIGZpCisgICAgZmkKKyAgZWxz ZQorICAgIGlmIHRlc3QgIngkd2l0aF9kZWJ1Z2luZm9kIiA9IHh5ZXM7IHRo ZW4KKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJwa2ctY29uZmlnIG1pc3Npbmcg b3IgdW51c2FibGU7IGNhbm5vdCBmaW5kIGxpYmRlYnVnaW5mb2QiICIkTElO RU5PIiA1CisgICAgZWxzZQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBwa2ctY29uZmlnIG1pc3Np bmcgb3IgdW51c2FibGU7IGNhbm5vdCBmaW5kIGxpYmRlYnVnaW5mb2QiID4m NQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogcGtnLWNvbmZpZyBtaXNz aW5nIG9yIHVudXNhYmxlOyBjYW5ub3QgZmluZCBsaWJkZWJ1Z2luZm9kIiA+ JjI7fQorICAgIGZpCisgIGZpCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogZGVidWdpbmZvZCBz dXBwb3J0IGRpc2FibGVkOyBzb21lIGZlYXR1cmVzIG1heSBiZSB1bmF2YWls YWJsZS4iID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogZGVidWdp bmZvZCBzdXBwb3J0IGRpc2FibGVkOyBzb21lIGZlYXR1cmVzIG1heSBiZSB1 bmF2YWlsYWJsZS4iID4mMjt9CitmaQorCisjIExpYnVud2luZCBzdXBwb3J0 IGZvciBpYTY0LgogCiAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnVud2lu ZC1pYTY0IHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7d2l0aF9saWJ1bndpbmRf aWE2NCtzZXR9IiA9IHNldDsgdGhlbiA6CmRpZmYgLS1naXQgYS9nZGIvY29u ZmlndXJlLmFjIGIvZ2RiL2NvbmZpZ3VyZS5hYwppbmRleCAwY2ExNjkxMDFi Li5lOWIzMTMzOTQwIDEwMDY0NAotLS0gYS9nZGIvY29uZmlndXJlLmFjCisr KyBiL2dkYi9jb25maWd1cmUuYWMKQEAgLTMyMyw4ICszMjMsNDAgQEAgY2Fz ZSAkaG9zdF9vcyBpbgogICAgIGVuYWJsZV9nZGJ0az1ubyA7OwogZXNhYwog Ci0jIExpYnVud2luZCBzdXBwb3J0IGZvciBpYTY0LgorIyBIYW5kbGUgb3B0 aW9uYWwgZGVidWdpbmZvZCBzdXBwb3J0CitBQ19BUkdfV0lUSChbZGVidWdp bmZvZF0sCisgIEFDX0hFTFBfU1RSSU5HKFstLXdpdGgtZGVidWdpbmZvZF0s IFtFbmFibGUgZGVidWdpbmZvIGxvb2t1cHMgd2l0aCBkZWJ1Z2luZm9kIChh dXRvL3llcy9ubyldKSwKKyAgW10sIFt3aXRoX2RlYnVnaW5mb2Q9YXV0b10p CitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gdXNlIGRlYnVnaW5mb2Rd KQorQUNfTVNHX1JFU1VMVChbJHdpdGhfZGVidWdpbmZvZF0pCisKK2lmIHRl c3QgIngkd2l0aF9kZWJ1Z2luZm9kIiAhPSB4bm87IHRoZW4KKyAgQUNfUEFU SF9QUk9HKHBrZ19jb25maWdfcHJvZ19wYXRoLCBwa2ctY29uZmlnLCBtaXNz aW5nKQorICBpZiB0ZXN0ICIke3BrZ19jb25maWdfcHJvZ19wYXRofSIgIT0g Im1pc3NpbmciOyB0aGVuCisgICAgJHtwa2dfY29uZmlnX3Byb2dfcGF0aH0g LS1leGlzdHMgLS1hdGxlYXN0LXZlcnNpb249MC4xNzggbGliZGVidWdpbmZv ZAorICAgIGlmIHRlc3QgJD8gPSAwOyB0aGVuCisgICAgICBBQ19TVUJTVChb REVCVUdJTkZPRF9MSUJTXSwgW2Ake3BrZ19jb25maWdfcHJvZ19wYXRofSAt LWxpYnMgbGliZGVidWdpbmZvZGBdKQorICAgICAgQUNfU1VCU1QoW0RFQlVH SU5GT0RfQ0ZMQUdTXSwgW2Ake3BrZ19jb25maWdfcHJvZ19wYXRofSAtLWNm bGFncyBsaWJkZWJ1Z2luZm9kYF0pCisgICAgICBBQ19ERUZJTkUoW0hBVkVf TElCREVCVUdJTkZPRF0sIFsxXSwgW0RlZmluZSB0byAxIGlmIGRlYnVnaW5m b2QgaXMgZW5hYmxlZC5dKQorICAgIGVsc2UKKyAgICAgIGlmIHRlc3QgIngk d2l0aF9kZWJ1Z2luZm9kIiA9IHh5ZXM7IHRoZW4KKyAgICAgICAgQUNfTVNH X0VSUk9SKFsiLS13aXRoLWRlYnVnaW5mb2Qgd2FzIGdpdmVuLCBidXQgbGli ZGVidWdpbmZvZCBpcyBtaXNzaW5nIG9yIHVudXNhYmxlLiJdKQorICAgICAg ZWxzZQorICAgICAgICBBQ19NU0dfV0FSTihbbGliZGVidWdpbmZvZCBpcyBt aXNzaW5nIG9yIHVudXNhYmxlOyBzb21lIGZlYXR1cmVzIG1heSBiZSB1bmF2 YWlsYWJsZS5dKQorICAgICAgZmkKKyAgICBmaQorICBlbHNlCisgICAgaWYg dGVzdCAieCR3aXRoX2RlYnVnaW5mb2QiID0geHllczsgdGhlbgorICAgICAg QUNfTVNHX0VSUk9SKFstLXdpdGgtZGVidWdpbmZvZCB3YXMgZ2l2ZW4sIGJ1 dCBwa2ctY29uZmlnIG1pc3Npbmcgb3IgdW51c2FibGU7IGNhbm5vdCBmaW5k IGxpYmRlYnVnaW5mb2RdKQorICAgIGVsc2UKKyAgICAgIEFDX01TR19XQVJO KFtwa2ctY29uZmlnIG1pc3Npbmcgb3IgdW51c2FibGU7IGRlYnVnaW5mb2Qg c3VwcG9ydCBkaXNhYmxlZC5dKQorICAgIGZpCisgIGZpCitlbHNlCisgIEFD X01TR19XQVJOKFtkZWJ1Z2luZm9kIHN1cHBvcnQgZGlzYWJsZWQ7IHNvbWUg ZmVhdHVyZXMgbWF5IGJlIHVuYXZhaWxhYmxlLl0pCitmaQogCisjIExpYnVu d2luZCBzdXBwb3J0IGZvciBpYTY0LgogQUNfQVJHX1dJVEgobGlidW53aW5k LWlhNjQsCiBBU19IRUxQX1NUUklORyhbLS13aXRoLWxpYnVud2luZC1pYTY0 XSwKIAkgICAgICAgW3VzZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIGZv ciBpYTY0IHRhcmdldHNdKSwsCmRpZmYgLS1naXQgYS9nZGIvZGVidWdpbmZv ZC1zdXBwb3J0LmMgYi9nZGIvZGVidWdpbmZvZC1zdXBwb3J0LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDk3MDRjYTcxMgot LS0gL2Rldi9udWxsCisrKyBiL2dkYi9kZWJ1Z2luZm9kLXN1cHBvcnQuYwpA QCAtMCwwICsxLDExMiBAQAorLyogZGVidWdpbmZvZCB1dGlsaXRpZXMgZm9y IEdEQi4KKyAgIENvcHlyaWdodCAoQykgMjAyMCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RC LgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor ICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVkZSA8 ZXJybm8uaD4KKyNpbmNsdWRlICJkZWZzLmgiCisjaW5jbHVkZSAiZGVidWdp bmZvZC1zdXBwb3J0LmgiCisKKyNpZm5kZWYgSEFWRV9MSUJERUJVR0lORk9E CitpbnQKK2RlYnVnaW5mb2Rfc291cmNlX3F1ZXJ5IChjb25zdCB1bnNpZ25l ZCBjaGFyICpidWlsZF9pZCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVpbGRfaWRfbGVuIF9fYXR0 cmlidXRlX18oKHVudXNlZCkpLAorICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKnNyY3BhdGggX19hdHRyaWJ1dGVfXygodW51c2VkKSks CisgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiOjp1bmlxdWVfeG1hbGxv Y19wdHI8Y2hhcj4gKmZpbGVuYW1lIF9fYXR0cmlidXRlX18oKHVudXNlZCkp KQoreworICByZXR1cm4gLUVOT1NZUzsKK30KKworaW50CitkZWJ1Z2luZm9k X2RlYnVnaW5mb19xdWVyeSAoY29uc3QgdW5zaWduZWQgY2hhciAqYnVpbGRf aWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IGJ1aWxkX2lkX2xlbiBfX2F0dHJpYnV0ZV9fKCh1 bnVzZWQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGI6OnVu aXF1ZV94bWFsbG9jX3B0cjxjaGFyPiAqZmlsZW5hbWUgX19hdHRyaWJ1dGVf XygodW51c2VkKSkpCit7CisgIHJldHVybiAtRU5PU1lTOworfQorI2Vsc2UK KyNpbmNsdWRlIDxlbGZ1dGlscy9kZWJ1Z2luZm9kLmg+CisKK3N0YXRpYyBp bnQKK3Byb2dyZXNzZm4gKGRlYnVnaW5mb2RfY2xpZW50ICpjLAorICAgICAg ICAgICAgIGxvbmcgYSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKKyAgICAg ICAgICAgICBsb25nIGIgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpCit7Cisg IGludCBxdWl0X2ZsYWcgPSBjaGVja19xdWl0X2ZsYWcgKCk7CisKKyAgLyog QXZvaWQgc3dhbGxvd2luZyBxdWl0X2ZsYWcncyBjdXJyZW50IHZhbHVlLiAg Ki8KKyAgaWYgKHF1aXRfZmxhZykKKyAgICBzZXRfcXVpdF9mbGFnICgpOwor CisgIHJldHVybiBxdWl0X2ZsYWc7Cit9CisKK3N0YXRpYyBkZWJ1Z2luZm9k X2NsaWVudCAqCitkZWJ1Z2luZm9kX2luaXQgKCkKK3sKKyAgZGVidWdpbmZv ZF9jbGllbnQgKmMgPSBkZWJ1Z2luZm9kX2JlZ2luICgpOworCisgIGlmIChj ICE9IG51bGxwdHIpCisgICAgZGVidWdpbmZvZF9zZXRfcHJvZ3Jlc3NmbiAo YywgcHJvZ3Jlc3Nmbik7CisKKyAgcmV0dXJuIGM7Cit9CisKKy8qIFNlZSBk ZWJ1Z2luZm9kLXN1cHBvcnQuaCAgKi8KKworaW50CitkZWJ1Z2luZm9kX3Nv dXJjZV9xdWVyeSAoY29uc3QgdW5zaWduZWQgY2hhciAqYnVpbGRfaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1aWxkX2lkX2xlbiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcmNwYXRoLAor ICAgICAgICAgICAgICAgICAgICAgICAgIGdkYjo6dW5pcXVlX3htYWxsb2Nf cHRyPGNoYXI+ICpmaWxlbmFtZSkKK3sKKyAgZGVidWdpbmZvZF9jbGllbnQg KmMgPSBkZWJ1Z2luZm9kX2luaXQgKCk7CisKKyAgaWYgKGMgPT0gbnVsbHB0 cikKKyAgICByZXR1cm4gLUVOT01FTTsKKworICBjaGFyICpmbmFtZSA9IE5V TEw7CisgIGludCBmZCA9IGRlYnVnaW5mb2RfZmluZF9zb3VyY2UgKGMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX2lkLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9pZF9s ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY3Bh dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmbmFt ZSk7CisgIGRlYnVnaW5mb2RfZW5kIChjKTsKKyAgZmlsZW5hbWUtPnJlc2V0 IChmbmFtZSk7CisKKyAgcmV0dXJuIGZkOworfQorCisvKiBTZWUgZGVidWdp bmZvZC1zdXBwb3J0LmggICovCisKK2ludAorZGVidWdpbmZvZF9kZWJ1Z2lu Zm9fcXVlcnkgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1aWxkX2lkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBidWlsZF9pZF9sZW4sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiOjp1bmlxdWVfeG1hbGxv Y19wdHI8Y2hhcj4gKmZpbGVuYW1lKQoreworICBkZWJ1Z2luZm9kX2NsaWVu dCAqYyA9IGRlYnVnaW5mb2RfaW5pdCAoKTsKKworICBpZiAoYyA9PSBudWxs cHRyKQorICAgIHJldHVybiAtRU5PTUVNOworCisgIGNoYXIgKmZuYW1lID0g TlVMTDsKKyAgaW50IGZkID0gZGVidWdpbmZvZF9maW5kX2RlYnVnaW5mbyAo YywgYnVpbGRfaWQsIGJ1aWxkX2lkX2xlbiwgJmZuYW1lKTsKKyAgZGVidWdp bmZvZF9lbmQgKGMpOworICBmaWxlbmFtZS0+cmVzZXQgKGZuYW1lKTsKKwor ICByZXR1cm4gZmQ7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2dkYi9kZWJ1 Z2luZm9kLXN1cHBvcnQuaCBiL2dkYi9kZWJ1Z2luZm9kLXN1cHBvcnQuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jNWU3YjY1 NzIxCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL2RlYnVnaW5mb2Qtc3VwcG9y dC5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qIGRlYnVnaW5mb2QgdXRpbGl0aWVz IGZvciBHREIuCisgICBDb3B5cmlnaHQgKEMpIDIwMjAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2lmbmRl ZiBERUJVR0lORk9EX1NVUFBPUlRfSAorI2RlZmluZSBERUJVR0lORk9EX1NV UFBPUlRfSAorCisvKiBRdWVyeSBkZWJ1Z2luZm9kIHNlcnZlcnMgZm9yIGEg c291cmNlIGZpbGUgYXNzb2NpYXRlZCB3aXRoIGFuCisgICBleGVjdXRhYmxl IHdpdGggQlVJTERfSUQuIEJVSUxEX0lEIGNhbiBiZSBnaXZlbiBhcyBhIGJp bmFyeSBibG9iIG9yCisgICBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcuIElm IGdpdmVuIGFzIGEgYmluYXJ5IGJsb2IsIEJVSUxEX0lEX0xFTgorICAgc2hv dWxkIGJlIHRoZSBudW1iZXIgb2YgYnl0ZXMuIElmIGdpdmVuIGFzIGEgbnVs bC10ZXJtaW5hdGVkIHN0cmluZywKKyAgIEJVSUxEX0lEX0xFTiBzaG91bGQg YmUgMC4KKworICAgU1JDX1BBVEggc2hvdWxkIGJlIHRoZSBzb3VyY2UgZmls ZSdzIGFic29sdXRlIHBhdGggdGhhdCBpbmNsdWRlcyB0aGUKKyAgIGNvbXBp bGF0aW9uIGRpcmVjdG9yeSBvZiB0aGUgQ1UgYXNzb2NpYXRlZCB3aXRoIHRo ZSBzb3VyY2UgZmlsZS4KKyAgIEZvciBleGFtcGxlIGlmIGEgQ1UncyBjb21w aWxhdGlvbiBkaXJlY3RvcnkgaXMgYC9teS9idWlsZGAgYW5kIHRoZQorICAg c291cmNlIGZpbGUgcGF0aCBpcyBgL215L3NvdXJjZS9mb28uY2AsIHRoZW4g U1JDX1BBVEggc2hvdWxkIGJlCisgICBgL215L2J1aWxkLy4uL3NvdXJjZS9m b28uY2AuCisKKyAgIElmIHRoZSBmaWxlIGlzIHN1Y2Nlc3NmdWxseSByZXRy aWV2ZWQsIGl0cyBwYXRoIG9uIHRoZSBsb2NhbCBtYWNoaW5lCisgICBpcyBz dG9yZWQgaW4gRklMRU5BTUUuIElmIEdEQiBpcyBub3QgYnVpbHQgd2l0aCBk ZWJ1Z2luZm9kLCB0aGlzCisgICBmdW5jdGlvbiByZXR1cm5zIC1FTk9TWVMu ICAqLworCitleHRlcm4gaW50IGRlYnVnaW5mb2Rfc291cmNlX3F1ZXJ5IChj b25zdCB1bnNpZ25lZCBjaGFyICpidWlsZF9pZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBidWlsZF9pZF9sZW4sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpz cmNfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdkYjo6dW5pcXVlX3htYWxsb2NfcHRyPGNoYXI+ICpmaWxlbmFtZSk7CisK Ky8qIFF1ZXJ5IGRlYnVnaW5mb2Qgc2VydmVycyBmb3IgYSBkZWJ1Z2luZm8g ZmlsZSB3aXRoIEJVSUxEX0lELgorICAgQlVJTERfSUQgY2FuIGJlIGdpdmVu IGFzIGEgYmluYXJ5IGJsb2Igb3IgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5n LgorICAgSWYgZ2l2ZW4gYXMgYSBiaW5hcnkgYmxvYiwgQlVJTERfSURfTEVO IHNob3VsZCBiZSB0aGUgbnVtYmVyIG9mIGJ5dGVzLgorICAgSWYgZ2l2ZW4g YXMgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLCBCVUlMRF9JRF9MRU4gc2hv dWxkIGJlIDAuCisKKyAgIElmIHRoZSBmaWxlIGlzIHN1Y2Nlc3NmdWxseSBy ZXRyaWV2ZWQsIGl0cyBwYXRoIG9uIHRoZSBsb2NhbCBtYWNoaW5lCisgICBp cyBzdG9yZWQgaW4gRklMRU5BTUUuIElmIEdEQiBpcyBub3QgYnVpbHQgd2l0 aCBkZWJ1Z2luZm9kLCB0aGlzCisgICBmdW5jdGlvbiByZXR1cm5zIC1FTk9T WVMuICAqLworCitleHRlcm4gaW50IGRlYnVnaW5mb2RfZGVidWdpbmZvX3F1 ZXJ5IChjb25zdCB1bnNpZ25lZCBjaGFyICpidWlsZF9pZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBidWlsZF9pZF9s ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn ZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiAqZmlsZW5hbWUpOworI2Vu ZGlmIC8qIERFQlVHSU5GT0RfU1VQUE9SVF9IICovCmRpZmYgLS1naXQgYS9n ZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwppbmRl eCBhMjg2NmEyODMzLi45ZDI5MjJiZTM0IDEwMDY0NAotLS0gYS9nZGIvZG9j L2dkYi50ZXhpbmZvCisrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KQEAgLTM3 Nzk0LDYgKzM3Nzk0LDE0IEBAIHN1cHBvcnRlZCkuCiBVc2UgdGhlIGN1cnNl cyBsaWJyYXJ5IGluc3RlYWQgb2YgdGhlIHRlcm1jYXAgbGlicmFyeSwgZm9y IHRleHQtbW9kZQogdGVybWluYWwgb3BlcmF0aW9ucy4KIAorQGl0ZW0gLS13 aXRoLWRlYnVnaW5mb2QKK0J1aWxkIEB2YWx1ZXtHREJOfSB3aXRoIGxpYmRl YnVnaW5mb2QsIHRoZSBkZWJ1Z2luZm9kIGNsaWVudCBsaWJyYXJ5LgorVXNl ZCB0byBhdXRvbWF0aWNhbGx5IGZldGNoIHNvdXJjZSBmaWxlcyBhbmQgc2Vw YXJhdGUgZGVidWcgZmlsZXMgZnJvbQorZGVidWdpbmZvZCBzZXJ2ZXJzIHVz aW5nIHRoZSBhc3NvY2lhdGVkIGV4ZWN1dGFibGUncyBidWlsZCBJRC4gRW5h YmxlZAorYnkgZGVmYXVsdCBpZiBsaWJkZWJ1Z2luZm9kIGlzIGluc3RhbGxl ZCBhbmQgZm91bmQgYXQgY29uZmlndXJlIHRpbWUuCitkZWJ1Z2luZm9kIGlz IHBhY2thZ2VkIHdpdGggZWxmdXRpbHMsIHN0YXJ0aW5nIHdpdGggdmVyc2lv biAwLjE3OC4gWW91CitjYW4gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9t IGBodHRwczovL3NvdXJjZXdhcmUub3JnL2VsZnV0aWxzLycuCisKIEBpdGVt IC0td2l0aC1saWJ1bndpbmQtaWE2NAogVXNlIHRoZSBsaWJ1bndpbmQgbGli cmFyeSBmb3IgdW53aW5kaW5nIGZ1bmN0aW9uIGNhbGwgc3RhY2sgb24gaWE2 NAogdGFyZ2V0IHBsYXRmb3Jtcy4gIFNlZSBodHRwOi8vd3d3Lm5vbmdudS5v cmcvbGlidW53aW5kL2luZGV4Lmh0bWwgZm9yCmRpZmYgLS1naXQgYS9nZGIv ZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwppbmRleCBkYWZlMDFk OTRhLi41MDIyNGRhYmRhIDEwMDY0NAotLS0gYS9nZGIvZHdhcmYycmVhZC5j CisrKyBiL2dkYi9kd2FyZjJyZWFkLmMKQEAgLTc3LDYgKzc3LDcgQEAKICNp bmNsdWRlICJnZGJzdXBwb3J0L3NlbGZ0ZXN0LmgiCiAjaW5jbHVkZSAicnVz dC1sYW5nLmgiCiAjaW5jbHVkZSAiZ2Ric3VwcG9ydC9wYXRoc3R1ZmYuaCIK KyNpbmNsdWRlICJkZWJ1Z2luZm9kLXN1cHBvcnQuaCIKIAogLyogV2hlbiA9 PSAxLCBwcmludCBiYXNpYyBoaWdoIGxldmVsIHRyYWNpbmcgbWVzc2FnZXMu CiAgICBXaGVuID4gMSwgYmUgbW9yZSB2ZXJib3NlLgpAQCAtMjc0Niw2ICsy NzQ3LDI0IEBAIGR3YXJmMl9nZXRfZHd6X2ZpbGUgKHN0cnVjdCBkd2FyZjJf cGVyX29iamZpbGUgKmR3YXJmMl9wZXJfb2JqZmlsZSkKICAgaWYgKGR3el9i ZmQgPT0gTlVMTCkKICAgICBkd3pfYmZkID0gYnVpbGRfaWRfdG9fZGVidWdf YmZkIChidWlsZGlkX2xlbiwgYnVpbGRpZCk7CiAKKyAgaWYgKGR3el9iZmQg PT0gbnVsbHB0cikKKyAgICB7CisgICAgICBnZGI6OnVuaXF1ZV94bWFsbG9j X3B0cjxjaGFyPiBhbHRfZmlsZW5hbWU7CisgICAgICBzY29wZWRfZmQgZmQg KGRlYnVnaW5mb2RfZGVidWdpbmZvX3F1ZXJ5IChidWlsZGlkLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVp bGRpZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmYWx0X2ZpbGVuYW1lKSk7CisKKyAgICAgIGlmIChm ZC5nZXQgKCkgPj0gMCkKKyAgICAgICAgeworICAgICAgICAgIC8qIEZpbGUg c3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCBmcm9tIHNlcnZlci4gICovCisgICAg ICAgICAgZHd6X2JmZCA9IGdkYl9iZmRfb3BlbiAoYWx0X2ZpbGVuYW1lLmdl dCAoKSwgZ251dGFyZ2V0LCAtMSk7CisKKyAgICAgICAgICBpZiAoZHd6X2Jm ZCAhPSBudWxscHRyCisgICAgICAgICAgICAgICYmICFidWlsZF9pZF92ZXJp ZnkgKGR3el9iZmQuZ2V0ICgpLCBidWlsZGlkX2xlbiwgYnVpbGRpZCkpCisg ICAgICAgICAgICBkd3pfYmZkLnJlc2V0IChudWxscHRyKTsKKyAgICAgICAg fQorICAgIH0KKwogICBpZiAoZHd6X2JmZCA9PSBOVUxMKQogICAgIGVycm9y IChfKCJjb3VsZCBub3QgZmluZCAnLmdudV9kZWJ1Z2FsdGxpbmsnIGZpbGUg Zm9yICVzIiksCiAJICAgb2JqZmlsZV9uYW1lIChkd2FyZjJfcGVyX29iamZp bGUtPm9iamZpbGUpKTsKZGlmZiAtLWdpdCBhL2dkYi9lbGZyZWFkLmMgYi9n ZGIvZWxmcmVhZC5jCmluZGV4IDQ1M2JjYTUyN2UuLjkwYmU1YjEwZmIgMTAw NjQ0Ci0tLSBhL2dkYi9lbGZyZWFkLmMKKysrIGIvZ2RiL2VsZnJlYWQuYwpA QCAtNDksNiArNDksOCBAQAogI2luY2x1ZGUgIm1kZWJ1Z3JlYWQuaCIKICNp bmNsdWRlICJjdGZyZWFkLmgiCiAjaW5jbHVkZSAiZ2Ric3VwcG9ydC9nZGJf c3RyaW5nX3ZpZXcuaCIKKyNpbmNsdWRlICJnZGJzdXBwb3J0L3Njb3BlZF9m ZC5oIgorI2luY2x1ZGUgImRlYnVnaW5mb2Qtc3VwcG9ydC5oIgogCiAvKiBG b3J3YXJkIGRlY2xhcmF0aW9ucy4gICovCiBleHRlcm4gY29uc3Qgc3RydWN0 IHN5bV9mbnMgZWxmX3N5bV9mbnNfZ2RiX2luZGV4OwpAQCAtMTMxNiw4ICsx MzE4LDI5IEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLCBzeW1maWxlX2FkZF9mbGFncyBzeW1maWxlX2ZsYWdzKQogCSAg c3ltYm9sX2ZpbGVfYWRkX3NlcGFyYXRlIChkZWJ1Z19iZmQuZ2V0ICgpLCBk ZWJ1Z2ZpbGUuY19zdHIgKCksCiAJCQkJICAgIHN5bWZpbGVfZmxhZ3MsIG9i amZpbGUpOwogCX0KLQllbHNlCi0JICBoYXNfZHdhcmYyID0gZmFsc2U7Cisg ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBoYXNfZHdhcmYyID0g ZmFsc2U7CisgICAgICAgICAgY29uc3Qgc3RydWN0IGJmZF9idWlsZF9pZCAq YnVpbGRfaWQgPSBidWlsZF9pZF9iZmRfZ2V0IChvYmpmaWxlLT5vYmZkKTsK KworICAgICAgICAgIGlmIChidWlsZF9pZCAhPSBudWxscHRyKQorICAgICAg ICAgICAgeworICAgICAgICAgICAgICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0 cjxjaGFyPiBzeW1maWxlX3BhdGg7CisgICAgICAgICAgICAgIHNjb3BlZF9m ZCBmZCAoZGVidWdpbmZvZF9kZWJ1Z2luZm9fcXVlcnkgKGJ1aWxkX2lkLT5k YXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBidWlsZF9pZC0+c2l6ZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JnN5bWZpbGVfcGF0aCkpOworCisgICAgICAgICAgICAgIGlmIChmZC5nZXQg KCkgPj0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ICAvKiBGaWxlIHN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgZnJvbSBzZXJ2ZXIu ICAqLworICAgICAgICAgICAgICAgICAgZ2RiX2JmZF9yZWZfcHRyIGRlYnVn X2JmZCAoc3ltZmlsZV9iZmRfb3BlbiAoc3ltZmlsZV9wYXRoLmdldCAoKSkp OworCisgICAgICAgICAgICAgICAgICBzeW1ib2xfZmlsZV9hZGRfc2VwYXJh dGUgKGRlYnVnX2JmZC5nZXQgKCksIHN5bWZpbGVfcGF0aC5nZXQgKCksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5 bWZpbGVfZmxhZ3MsIG9iamZpbGUpOworICAgICAgICAgICAgICAgICAgaGFz X2R3YXJmMiA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgfQorICAgICAgICB9CiAgICAgfQogCiAgIC8qIFJlYWQgdGhlIENURiBz ZWN0aW9uIG9ubHkgaWYgdGhlcmUgaXMgbm8gRFdBUkYgaW5mby4gICovCmRp ZmYgLS1naXQgYS9nZGIvc291cmNlLmMgYi9nZGIvc291cmNlLmMKaW5kZXgg MzI3ZTljMTIyOS4uZjQwMzZhM2JjMSAxMDA2NDQKLS0tIGEvZ2RiL3NvdXJj ZS5jCisrKyBiL2dkYi9zb3VyY2UuYwpAQCAtNDgsNiArNDgsOCBAQAogI2lu Y2x1ZGUgInNvdXJjZS1jYWNoZS5oIgogI2luY2x1ZGUgImNsaS9jbGktc3R5 bGUuaCIKICNpbmNsdWRlICJvYnNlcnZhYmxlLmgiCisjaW5jbHVkZSAiYnVp bGQtaWQuaCIKKyNpbmNsdWRlICJkZWJ1Z2luZm9kLXN1cHBvcnQuaCIKIAog I2RlZmluZSBPUEVOX01PREUgKE9fUkRPTkxZIHwgT19CSU5BUlkpCiAjZGVm aW5lIEZET1BFTl9NT0RFIEZPUEVOX1JCCkBAIC0xMTUzLDYgKzExNTUsMzkg QEAgb3Blbl9zb3VyY2VfZmlsZSAoc3RydWN0IHN5bXRhYiAqcykKICAgcy0+ ZnVsbG5hbWUgPSBOVUxMOwogICBzY29wZWRfZmQgZmQgPSBmaW5kX2FuZF9v cGVuX3NvdXJjZSAocy0+ZmlsZW5hbWUsIFNZTVRBQl9ESVJOQU1FIChzKSwK IAkJCQkgICAgICAgJmZ1bGxuYW1lKTsKKworICBpZiAoZmQuZ2V0ICgpIDwg MCkKKyAgICB7CisgICAgICBpZiAoU1lNVEFCX0NPTVBVTklUIChzKSAhPSBu dWxscHRyKQorICAgICAgICB7CisgICAgICAgICAgY29uc3Qgb2JqZmlsZSAq b2ZwID0gQ09NUFVOSVRfT0JKRklMRSAoU1lNVEFCX0NPTVBVTklUIChzKSk7 CisKKyAgICAgICAgICBzdGQ6OnN0cmluZyBzcmNwYXRoOworICAgICAgICAg IGlmIChJU19ESVJfU0VQQVJBVE9SIChzLT5maWxlbmFtZVswXSkpCisgICAg ICAgICAgICBzcmNwYXRoID0gcy0+ZmlsZW5hbWU7CisgICAgICAgICAgZWxz ZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBzcmNwYXRoID0gU1lN VEFCX0RJUk5BTUUgKHMpOworICAgICAgICAgICAgICBzcmNwYXRoICs9IFNM QVNIX1NUUklORzsKKyAgICAgICAgICAgICAgc3JjcGF0aCArPSBzLT5maWxl bmFtZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIGNvbnN0IHN0cnVj dCBiZmRfYnVpbGRfaWQgKmJ1aWxkX2lkID0gYnVpbGRfaWRfYmZkX2dldCAo b2ZwLT5vYmZkKTsKKworICAgICAgICAgIGlmIChidWlsZF9pZCAhPSBudWxs cHRyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBRdWVyeSBk ZWJ1Z2luZm9kIGZvciB0aGUgc291cmNlIGZpbGUuICAqLworICAgICAgICAg ICAgICBzY29wZWRfZmQgc3JjX2ZkIChkZWJ1Z2luZm9kX3NvdXJjZV9xdWVy eSAoYnVpbGRfaWQtPmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9pZC0+c2l6 ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNyY3BhdGguY19zdHIgKCksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmZnVsbG5hbWUpKTsKKworICAgICAgICAgICAgICBzLT5mdWxsbmFtZSA9 IGZ1bGxuYW1lLnJlbGVhc2UgKCk7CisgICAgICAgICAgICAgIHJldHVybiBz cmNfZmQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAg cy0+ZnVsbG5hbWUgPSBmdWxsbmFtZS5yZWxlYXNlICgpOwogICByZXR1cm4g ZmQ7CiB9CmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kZWJ1Z2lu Zm9kL2ZldGNoX3NyY19hbmRfc3ltYm9scy5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5kZWJ1Z2luZm9kL2ZldGNoX3NyY19hbmRfc3ltYm9scy5leHAKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDgyNDQ3YjVl YQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmRlYnVn aW5mb2QvZmV0Y2hfc3JjX2FuZF9zeW1ib2xzLmV4cApAQCAtMCwwICsxLDIx NCBAQAorIyBDb3B5cmlnaHQgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworIyBUZXN0IGRlYnVnaW5m b2QgZnVuY3Rpb25hbGl0eQorCitzdGFuZGFyZF90ZXN0ZmlsZSBtYWluLmMK KworbG9hZF9saWIgZHdhcmYuZXhwCisKK2lmIHsgW3doaWNoIGRlYnVnaW5m b2RdID09IDAgfSB7CisgICAgdW50ZXN0ZWQgImNhbm5vdCBmaW5kIGRlYnVn aW5mb2QiCisgICAgcmV0dXJuIC0xCit9CisKK2lmIHsgW3doaWNoIGN1cmxd ID09IDAgfSB7CisgICAgdW50ZXN0ZWQgImNhbm5vdCBmaW5kIGN1cmwiCisg ICAgcmV0dXJuIC0xCit9CisKKyMgU2tpcCB0ZXN0aW5nIGlmIGdkYiB3YXMg bm90IGNvbmZpZ3VyZWQgd2l0aCBkZWJ1Z2luZm9kCitpZiB7IFtzdHJpbmcg Zmlyc3QgIndpdGgtZGVidWdpbmZvZCIgW2V4ZWMgJEdEQiAtLWNvbmZpZ3Vy YXRpb25dXSA9PSAtMSB9IHsKKyAgICB1bnRlc3RlZCAiZ2RiIG5vdCBjb25m aWd1cmVkIHdpdGggZGVidWdpbmZvZCIKKyAgICByZXR1cm4gLTEKK30KKwor c2V0IGNhY2hlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAiLmNsaWVudF9jYWNo ZSJdCitzZXQgZGIgW3N0YW5kYXJkX291dHB1dF9maWxlICIuZGVidWdpbmZv ZC5kYiJdCisKKyMgRGVsZXRlIGFueSBwcmVleGlzdGluZyB0ZXN0IGZpbGVz CitmaWxlIGRlbGV0ZSAtZm9yY2UgJGNhY2hlCitmaWxlIGRlbGV0ZSAtZm9y Y2UgJGRiCisKK3NldCBzb3VyY2V0bXAgW3N0YW5kYXJkX291dHB1dF9maWxl IHRtcC0ke3NyY2ZpbGV9XQorc2V0IG91dHB1dGRpciBbc3RhbmRhcmRfb3V0 cHV0X2ZpbGUge31dCisKKyMgTWFrZSBhIGNvcHkgc291cmNlIGZpbGUgdGhh dCB3ZSBjYW4gbW92ZSBhcm91bmQKK2lmIHsgW2NhdGNoIHtmaWxlIGNvcHkg LWZvcmNlICR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSBcCisgICAg ICAgICAgICAgIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke3NvdXJjZXRtcH1d fV0gIT0gMCB9IHsKKyAgICBlcnJvciAiY3JlYXRlIHRlbXBvcmFyeSBmaWxl IgorICAgIHJldHVybiAtMQorfQorCitpZiB7IFtnZGJfY29tcGlsZSAiJHNv dXJjZXRtcCIgIiRiaW5maWxlIiBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIi IH0geworICAgIGZhaWwgImNvbXBpbGUiCisgICAgcmV0dXJuIC0xCit9CisK K3NldGVudiBERUJVR0lORk9EX1VSTFMgIiIKK3NldGVudiBERUJVR0lORk9E X1RJTUVPVVQgMzAKK3NldGVudiBERUJVR0lORk9EX0NBQ0hFX1BBVEggJGNh Y2hlCisKKyMgVGVzdCB0aGF0IGdkYiBjYW5ub3QgZmluZCBzb3VyY2Ugd2l0 aG91dCBkZWJ1Z2luZm9kCitjbGVhbl9yZXN0YXJ0ICRiaW5maWxlCitnZGJf dGVzdF9ub19vdXRwdXQgInNldCBzdWJzdGl0dXRlLXBhdGggJG91dHB1dGRp ciAvZGV2L251bGwiCitnZGJfdGVzdCAibGlzdCIgIi4qTm8gc3VjaCBmaWxl IG9yIGRpcmVjdG9yeS4qIgorCisjIFN0cmlwIHN5bWJvbHMgaW50byBzZXBh cmF0ZSBmaWxlIGFuZCBtb3ZlIGl0IHNvIGdkYiBjYW5ub3QgZmluZCBpdCB3 aXRob3V0IGRlYnVnaW5mb2QKK2lmIHsgW2dkYl9nbnVfc3RyaXBfZGVidWcg JGJpbmZpbGUgIiJdICE9IDAgfSB7CisgICAgZmFpbCAic3RyaXAgZGVidWdp bmZvIgorICAgIHJldHVybiAtMQorfQorCitzZXQgZGVidWdkaXIgW3N0YW5k YXJkX291dHB1dF9maWxlICJkZWJ1ZyJdCitzZXQgZGVidWdpbmZvIFtzdGFu ZGFyZF9vdXRwdXRfZmlsZSAiZmV0Y2hfc3JjX2FuZF9zeW1ib2xzLmRlYnVn Il0KKworZmlsZSBta2RpciAkZGVidWdkaXIKK2ZpbGUgcmVuYW1lIC1mb3Jj ZSAkZGVidWdpbmZvICRkZWJ1Z2RpcgorCisjIFRlc3QgdGhhdCBnZGIgY2Fu bm90IGZpbmQgc3ltYm9scyB3aXRob3V0IGRlYnVnaW5mb2QKK2NsZWFuX3Jl c3RhcnQgJGJpbmZpbGUKK2dkYl90ZXN0ICJmaWxlIiAiLipObyBzeW1ib2wg ZmlsZS4qIgorCisjIFdyaXRlIHNvbWUgYXNzZW1ibHkgdGhhdCBqdXN0IGhh cyBhIC5nbnVfZGVidWdhbHRsaW5rIHNlY3Rpb24uCisjIENvcGllZCBmcm9t IHRlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3emJ1aWxkaWQuZXhwLgorcHJvYyB3 cml0ZV9qdXN0X2RlYnVnYWx0bGluayB7ZmlsZW5hbWUgZHd6bmFtZSBidWls ZGlkfSB7CisgICAgc2V0IGFzbV9maWxlIFtzdGFuZGFyZF9vdXRwdXRfZmls ZSAkZmlsZW5hbWVdCisKKyAgICBEd2FyZjo6YXNzZW1ibGUgJGFzbV9maWxl IHsKKyAgICAgICAgdXB2YXIgZHd6bmFtZSBkd3puYW1lCisgICAgICAgIHVw dmFyIGJ1aWxkaWQgYnVpbGRpZAorCisgICAgICAgIGdudV9kZWJ1Z2FsdGxp bmsgJGR3em5hbWUgJGJ1aWxkaWQKKworICAgICAgICAjIE9ubHkgdGhlIERX QVJGIHJlYWRlciBjaGVja3MgLmdudV9kZWJ1Z2FsdGxpbmssIHNvIG1ha2Ug c3VyZQorICAgICAgICAjIHRoZXJlIGlzIGEgYml0IG9mIERXQVJGIGluIGhl cmUuCisgICAgICAgIGN1IHt9IHsKKyAgICAgICAgICAgIGNvbXBpbGVfdW5p dCB7e2xhbmd1YWdlIEBEV19MQU5HX0N9fSB7CisgICAgICAgICAgICB9Cisg ICAgICAgIH0KKyAgICB9Cit9CisKKyMgV3JpdGUgc29tZSBEV0FSRiB0aGF0 IGFsc28gc2V0cyB0aGUgYnVpbGRpZC4KKyMgQ29waWVkIGZyb20gdGVzdHN1 aXRlL2dkYi5kd2FyZjIvZHd6YnVpbGRpZC5leHAuCitwcm9jIHdyaXRlX2R3 YXJmX2ZpbGUge2ZpbGVuYW1lIGJ1aWxkaWQge3ZhbHVlIDk5fX0geworICAg IHNldCBhc21fZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJGZpbGVuYW1l XQorCisgICAgRHdhcmY6OmFzc2VtYmxlICRhc21fZmlsZSB7CisgICAgICAg IGRlY2xhcmVfbGFiZWxzIGludF9sYWJlbCBpbnRfbGFiZWwyCisKKyAgICAg ICAgdXB2YXIgYnVpbGRpZCBidWlsZGlkCisgICAgICAgIHVwdmFyIHZhbHVl IHZhbHVlCisKKyAgICAgICAgYnVpbGRfaWQgJGJ1aWxkaWQKKworICAgICAg ICBjdSB7fSB7CisgICAgICAgICAgICBjb21waWxlX3VuaXQge3tsYW5ndWFn ZSBARFdfTEFOR19DfX0geworICAgICAgICAgICAgICAgIGludF9sYWJlbDI6 IGJhc2VfdHlwZSB7CisgICAgICAgICAgICAgICAgICAgIHtuYW1lIGludH0K KyAgICAgICAgICAgICAgICAgICAge2J5dGVfc2l6ZSA0IHNkYXRhfQorICAg ICAgICAgICAgICAgICAgICB7ZW5jb2RpbmcgQERXX0FURV9zaWduZWR9Cisg ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY29uc3RhbnQg eworICAgICAgICAgICAgICAgICAgICB7bmFtZSB0aGVfaW50fQorICAgICAg ICAgICAgICAgICAgICB7dHlwZSA6JGludF9sYWJlbDJ9CisgICAgICAgICAg ICAgICAgICAgIHtjb25zdF92YWx1ZSAkdmFsdWUgZGF0YTF9CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor fQorCitzZXQgYnVpbGRpZCAiMDEyMzQ1Njc4OTBhYmNkZWYwMTIzNDU2Igor Cit3cml0ZV9qdXN0X2RlYnVnYWx0bGluayAke2JpbmZpbGV9X2hhc19hbHRs aW5rLlMgJHtiaW5maWxlfV9kd3oubyAkYnVpbGRpZAord3JpdGVfZHdhcmZf ZmlsZSAke2JpbmZpbGV9X2R3ei5TICRidWlsZGlkCisKK2lmIHtbZ2RiX2Nv bXBpbGUgJHtiaW5maWxlfV9oYXNfYWx0bGluay5TICR7YmluZmlsZX1fYWx0 Lm8gb2JqZWN0IG5vZGVidWddICE9ICIifSB7CisgICAgZmFpbCAiY29tcGls ZSBtYWluIHdpdGggYWx0bGluayIKKyAgICByZXR1cm4gLTEKK30KKworaWYg e1tnZGJfY29tcGlsZSAke2JpbmZpbGV9X2R3ei5TICR7YmluZmlsZX1fZHd6 Lm8gb2JqZWN0IG5vZGVidWddICE9ICIifSB7CisgICAgZmFpbCAiY29tcGls ZSBhbHRsaW5rIgorICAgIHJldHVybiAtMQorfQorCitmaWxlIHJlbmFtZSAt Zm9yY2UgJHtiaW5maWxlfV9kd3oubyAkZGVidWdkaXIKKworIyBUZXN0IHRo YXQgZ2RiIGNhbm5vdCBmaW5kIGR3eiB3aXRob3V0IGRlYnVnaW5mb2QuCitj bGVhbl9yZXN0YXJ0CitnZGJfdGVzdCAiZmlsZSAke2JpbmZpbGV9X2FsdC5v IiAiLipjb3VsZCBub3QgZmluZCAnLmdudV9kZWJ1Z2FsdGxpbmsnLioiCisK KyMgRmluZCBhbiB1bnVzZWQgcG9ydAorc2V0IHBvcnQgNzk5OQorc2V0IGZv dW5kIDAKK3doaWxlIHsgISAkZm91bmQgfSB7CisgIGluY3IgcG9ydAorICBp ZiB7ICRwb3J0ID09IDY1NTM2IH0geworICAgIGZhaWwgIm5vIGF2YWlsYWJs ZSBwb3J0cyIKKyAgICByZXR1cm4gLTEKKyAgfQorCisgIHNwYXduIGRlYnVn aW5mb2QgLXZ2dnYgLWQgJGRiIC1wICRwb3J0IC1GICRkZWJ1Z2RpcgorICBl eHBlY3QgeworICAgICJzdGFydGVkIGh0dHAgc2VydmVyIG9uIElQdjQgSVB2 NiBwb3J0PSRwb3J0IiB7IHNldCBmb3VuZCAxIH0KKyAgICAiZmFpbGVkIHRv IGJpbmQgdG8gcG9ydCIgeyBraWxsX3dhaXRfc3Bhd25lZF9wcm9jZXNzICRz cGF3bl9pZCB9CisgICAgdGltZW91dCB7CisgICAgICBmYWlsICJmaW5kIHBv cnQgdGltZW91dCIKKyAgICAgIHJldHVybiAtMQorICAgIH0KKyAgfQorfQor CitzZXQgbWV0cmljcyBbbGlzdCAicmVhZHkgMSIgXAorICAgICAgICAgICAg ICJ0aHJlYWRfd29ya190b3RhbHtyb2xlPVwidHJhdmVyc2VcIn0gMSIgXAor ICAgICAgICAgICAgICJ0aHJlYWRfd29ya19wZW5kaW5ne3JvbGU9XCJzY2Fu XCJ9IDAiIFwKKyAgICAgICAgICAgICAidGhyZWFkX2J1c3l7cm9sZT1cInNj YW5cIn0gMCJdCisKKyMgQ2hlY2sgc2VydmVyIG1ldHJpY3MgdG8gY29uZmly bSBpbml0IGhhcyBjb21wbGV0ZWQuCitmb3JlYWNoIG0gJG1ldHJpY3Mgewor ICBzZXQgdGltZWxpbSAyMAorICB3aGlsZSB7ICR0aW1lbGltICE9IDAgfSB7 CisgICAgc2xlZXAgMC41CisgICAgY2F0Y2gge2V4ZWMgY3VybCAtcyBodHRw Oi8vMTI3LjAuMC4xOiRwb3J0L21ldHJpY3N9IGdvdAorCisgICAgaWYgeyBb cmVnZXhwICRtICRnb3RdIH0geworICAgICAgYnJlYWsKKyAgICB9CisKKyAg ICBpbmNyIHRpbWVsaW0gLTEKKyAgfQorCisgIGlmIHsgJHRpbWVsaW0gPT0g MCB9IHsKKyAgICBmYWlsICJzZXJ2ZXIgaW5pdCB0aW1lb3V0IgorICAgIHJl dHVybiAtMQorICB9Cit9CisKKyMgUG9pbnQgdGhlIGNsaWVudCB0byB0aGUg c2VydmVyCitzZXRlbnYgREVCVUdJTkZPRF9VUkxTIGh0dHA6Ly8xMjcuMC4w LjE6JHBvcnQKKworIyBnZGIgc2hvdWxkIG5vdyBmaW5kIHRoZSBzeW1ib2wg YW5kIHNvdXJjZSBmaWxlcworY2xlYW5fcmVzdGFydCAkYmluZmlsZQorZ2Ri X3Rlc3Rfbm9fb3V0cHV0ICJzZXQgc3Vic3RpdHV0ZS1wYXRoICRvdXRwdXRk aXIgL2Rldi9udWxsIgorZ2RiX3Rlc3QgImJyIG1haW4iICJCcmVha3BvaW50 IDEgYXQuKmZpbGUuKiIKK2dkYl90ZXN0ICJsIiAiLipUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUuKiIKKworIyBnZGIgc2hvdWxk IG5vdyBmaW5kIHRoZSBkZWJ1Z2FsdGxpbmsgZmlsZQorY2xlYW5fcmVzdGFy dAorZ2RiX3Rlc3QgImZpbGUgJHtiaW5maWxlfV9hbHQubyIgIi4qUmVhZGlu ZyBzeW1ib2xzIGZyb20gJHtiaW5maWxlfV9hbHQub1wuXC5cLlxbXHJcblxd IgpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGVidWdpbmZvZC9t YWluLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kZWJ1Z2luZm9kL21haW4uYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43M2FiYWY1 OGIxCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGVi dWdpbmZvZC9tYWluLmMKQEAgLTAsMCArMSwyNSBAQAorLyogVGhpcyB0ZXN0 Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKworICAg Q29weXJpZ2h0IDIwMjAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKy8qIER1bW15IG1h aW4gZnVuY3Rpb24uICAqLworCitpbnQKK21haW4oKQoreworICBhc20gKCJt YWluX2xhYmVsOiAuZ2xvYmwgbWFpbl9sYWJlbCIpOworICByZXR1cm4gMDsK K30KZGlmZiAtLWdpdCBhL2dkYi90b3AuYyBiL2dkYi90b3AuYwppbmRleCBm NzAyYWY5YWNkLi4xYTk4YWUxOThjIDEwMDY0NAotLS0gYS9nZGIvdG9wLmMK KysrIGIvZ2RiL3RvcC5jCkBAIC0xNTI4LDYgKzE1MjgsMTYgQEAgVGhpcyBH REIgd2FzIGNvbmZpZ3VyZWQgYXMgZm9sbG93czpcblwKICIpKTsKICNlbmRp ZgogCisjaWYgSEFWRV9MSUJERUJVR0lORk9ECisgIGZwcmludGZfZmlsdGVy ZWQgKHN0cmVhbSwgXygiXAorICAgICAgICAgICAgIC0td2l0aC1kZWJ1Z2lu Zm9kXG5cCisiKSk7CisjZWxzZQorICAgZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCBfKCJcCisgICAgICAgICAgICAgLS13aXRob3V0LWRlYnVnaW5mb2Rc blwKKyIpKTsKKyNlbmRpZgorCiAjaWYgSEFWRV9HVUlMRQogICBmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sIF8oIlwKICAgICAgICAgICAgICAtLXdpdGgt Z3VpbGVcblwKLS0gCjIuMjQuMQoK --000000000000c07496059e416bfd--