From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from forward500b.mail.yandex.net (forward500b.mail.yandex.net [178.154.239.144]) by sourceware.org (Postfix) with ESMTPS id 5BE783858D28 for ; Fri, 31 Mar 2023 14:56:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5BE783858D28 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=yandex.ru Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=yandex.ru Received: from mail-nwsmtp-smtp-production-main-46.sas.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-46.sas.yp-c.yandex.net [IPv6:2a02:6b8:c08:4212:0:640:eaad:0]) by forward500b.mail.yandex.net (Yandex) with ESMTP id 022565F477; Fri, 31 Mar 2023 17:56:46 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-46.sas.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id guLISiEDdCg0-gGrDvzvg; Fri, 31 Mar 2023 17:56:45 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1680274605; bh=cjOAyDWkKrkCFxXzthcZJqk9KkF47XOD0b3535G7b4I=; h=In-Reply-To:Cc:Date:References:To:Subject:Message-ID:From; b=OkKwzNceIixiUSA005L+LptTU+F58dOmfoHNmFCHgRzlxvM7OgNX++N/SxFiObW5f scl9aRBahSyNM7GOeS0AFXn4DpTYn139eId0LldiRQ8Gh9Oyu+hRUtcjH+LzWVRehw susYfJ9Vh3OMCfvd3dnHXLn1grGMsML9OhS/oCrs= Authentication-Results: mail-nwsmtp-smtp-production-main-46.sas.yp-c.yandex.net; dkim=pass header.i=@yandex.ru Content-Type: multipart/mixed; boundary="------------zdEuqelD0FuHKNyXaubcpjj2" Message-ID: <8d59dcc6-ef25-38e3-ab26-a5a5ee76714c@yandex.ru> Date: Fri, 31 Mar 2023 19:56:41 +0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [PATCH v9 0/13] implement dlmem() function Content-Language: en-US To: Rich Felker Cc: Szabolcs Nagy , Adhemerval Zanella Netto , libc-alpha@sourceware.org, janderson@rice.edu, Carlos O'Donell References: <20230318165110.3672749-1-stsp2@yandex.ru> <20230331144906.GA3298@brightrain.aerifal.cx> From: stsp In-Reply-To: <20230331144906.GA3298@brightrain.aerifal.cx> X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------zdEuqelD0FuHKNyXaubcpjj2 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit 31.03.2023 19:49, Rich Felker пишет: > The "walking in circles forever scenario" can be avoided by dropping > this waste of everybody's time. You don't get to shoehorn pet > functionality into libc. Thanks. I attached the detailed description of the API. Maybe if you read that, your statements would be more concrete. And no, this API doesn't require elf header parsing by user, or anything else alike. It always lays out an elf image per vaddr's. I demonstrated that to Carlos, so if he permits this false claim about my patch to go away, then the argument would disappear. And no, it can't be replaced by memfd and alike techniques - I proved that many times, and at least Jonathon accepted that fact after a month of discussions. Now if I can convince some individuals in some parts of the mosaic, I have no idea how to convince everyone at once... --------------zdEuqelD0FuHKNyXaubcpjj2 Content-Type: text/x-patch; charset=UTF-8; name="0000-cover-letter.patch" Content-Disposition: attachment; filename="0000-cover-letter.patch" Content-Transfer-Encoding: base64 RnJvbSA0NmU1MDk1ZWJmZTYzYmU0ZGNkODEzYzQyMzdkNmE0OTFhM2Y5NzY4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTdGFzIFNlcmdlZXYgPHN0c3AyQHlhbmRleC5ydT4K RGF0ZTogTW9uLCAxMyBGZWIgMjAyMyAxODoxNTozNCArMDUwMApTdWJqZWN0OiBbUEFUQ0gg djEwIDAvMTJdIGltcGxlbWVudCBkbG1lbSgpIGZ1bmN0aW9uCgpUaGlzIHBhdGNoLXNldCBp bXBsZW1lbnRzIHRoZSBkbG1lbSgpIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIHRvIGxvYWQKdGhl IHNvbGliIGZyb20gcGFnZS1hbGlnbmVkIG1lbW9yeSBidWZmZXIuIEl0IHN1aXRzIGFzIGEg YnVpbGRpbmcKYmxvY2sgZm9yIGltcGxlbWVudGluZyB0aGUgZnVuY3Rpb25zIGxpa2UgZmRs b3BlbigpIGFuZCBkbG9wZW5fd2l0aF9vZmZzZXQoKSwKd2hpY2ggYXJlIGRlbW8taW1wbGVt ZW50ZWQgaW4gYSB0ZXN0LWNhc2UgY2FsbGVkIHRzdC1kbG1lbS1leHRmbnMuClRoZSByZWFz b25zIHdoeSBpdCBzdWl0cyB3ZWxsIGZvciBzdWNoIGZpbGUtYmFzZWQgbG9hZGVycywgYXJl IGJlbG93OgoxLiBJdCBjb3JyZWN0bHkgaGFuZGxlcyB0aGUgZmlsZSBhc3NvY2lhdGlvbiBv ZiB0aGUgb3JpZ2luYWwgc29saWIKICAgYnVmZmVyIGlmIGl0IHdhcyBtbWFwJ2VkIGZyb20g YSBmaWxlLgoyLiBJdCBhbGxvd3MgdG8gcHJvdmlkZSBhIHNvbGliIG5hbWUsIHdoaWNoIGNh biBiZSB0aGUgZmlsZSBuYW1lLgoKV2l0aCB0aGUgYWJvdmUgcHJvcGVydGllcywgdGhlICJk aXJlY3QiIGltcGxlbWVudGF0aW9uIG9mIHRoZXNlIGZ1bmN0aW9ucwpnaXZlcyBubyBhZHZh bnRhZ2VzIG92ZXIgaW1wbGVtZW50aW5nIHRoZW0gd2l0aCBkbG1lbSgpLgoKSW4gYWRkaXRp b24sIGRsbWVtKCkgaGFzIGxvdHMgb2Ygb3B0aW9uYWwgZnVuY3Rpb25hbGl0eSBmb3IgdGhl IGZpbmUtZ3JhaW5lZApjb250cm9sIG92ZXIgdGhlIGxvYWRpbmcgcHJvY2Vzcy4gSXQgYWxs b3dzIHlvdSB0byBzZXQgbnNpZCAobGlrZSBkbG1vcGVuKCkpLApzcGVjaWZ5IHRoZSBzb2xp YiByZWxvY2F0aW9uIGFkZHJlc3MgYW5kIGV2ZW4gcmVsb2NhdGUgdGhlIHNvbGliIGludG8K dGhlIHVzZXIncyBidWZmZXIuIFRoYXQgImFkdmFuY2VkIiBmdW5jdGlvbmFsaXR5IGlzIG9u bHkgbmVlZGVkIGZvciB0aGUKdmVyeSBzcGVjaWZpYyB1c2UtY2FzZXMsIGxpa2UgdmlydHVh bGl6ZWQgZW52aXJvbm1lbnRzIHdoZXJlIHRoZSByZWxvY2F0aW9uCmFkZHJlc3MgbWF5IGhh dmUgYSBzcGVjaWFsIGNvbnN0cmFpbnRzLCBlZyBNQVBfMzJCSVQuIEluIGFsbCBvdGhlciBj YXNlcwppdCBpcyBhZHZpc2VkIHRvIHNldCB0aGUgImRsbV9hcmdzIiBwb2ludGVyIG9mIGRs bWVtKCkgY2FsbCB0byBOVUxMLCBidXQKc2VlICJMaW1pdGF0aW9ucyIgYmVsb3cgdG8gZmlu ZCBvdXQgd2hlbiBpdHMgbm90IHRoZSBjYXNlLgoKVGhlIEFQSSBsb29rcyBhcyBiZWxvdzoK Ci8qIENhbGxiYWNrIGZvciBkbG1lbS4gKi8KdHlwZWRlZiB2b2lkICoKKGRsbWVtX3ByZW1h cF90KSAodm9pZCAqbWFwcHJlZiwgc2l6ZV90IG1hcGxlbmd0aCwgc2l6ZV90IG1hcGFsaWdu LAoJICAgICAgICAgIHZvaWQgKmNvb2tpZSk7CgovKiBEbyBub3QgcmVwbGFjZSBtYXBwaW5n IGNyZWF0ZWQgYnkgcHJlbWFwIGNhbGxiYWNrLgogICBkbG1lbSgpIHdpbGwgdGhlbiB1c2Ug bWVtY3B5KCkuICovCiNkZWZpbmUgRExNRU1fRE9OVFJFUExBQ0UgMQoKc3RydWN0IGRsbWVt X2FyZ3MgewogIC8qIE9wdGlvbmFsIG5hbWUgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGxvYWRl ZCBvYmplY3QuICovCiAgY29uc3QgY2hhciAqc29uYW1lOwogIC8qIE5hbWVzcGFjZSB3aGVy ZSB0byBsb2FkIHRoZSBvYmplY3QuICovCiAgTG1pZF90IG5zaWQ7CiAgLyogZGxtZW0tc3Bl Y2lmaWMgZmxhZ3MuICovCiAgdW5zaWduZWQgaW50IGZsYWdzOwogIC8qIE9wdGlvbmFsIHBy ZW1hcCBjYWxsYmFjay4gKi8KICBkbG1lbV9wcmVtYXBfdCAqcHJlbWFwOwogIC8qIE9wdGlv bmFsIGFyZ3VtZW50IGZvciBwcmVtYXAgY2FsbGJhY2suICovCiAgdm9pZCAqY29va2llOwp9 OwoKLyogTGlrZSBgZGxtb3BlbicsIGJ1dCBsb2FkcyBzaGFyZWQgb2JqZWN0IGZyb20gbWVt b3J5IGJ1ZmZlci4gICovCmV4dGVybiB2b2lkICpkbG1lbSAoY29uc3QgdW5zaWduZWQgY2hh ciAqYnVmZmVyLCBzaXplX3Qgc2l6ZSwgaW50IG1vZGUsCgkJICAgIHN0cnVjdCBkbG1lbV9h cmdzICpkbG1fYXJncyk7CgoKSW4gbW9zdCBjYXNlcyBkbG1fYXJncyBzaG91bGQganVzdCBi ZSBzZXQgdG8gTlVMTC4gSXQgcHJvdmlkZXMgdGhlCmFkdmFuY2VkIGZ1bmN0aW9uYWxpdHks IG1vc3Qgb2Ygd2hpY2ggaXMgb2J2aW91cyAoc29uYW1lLCBuc2lkKS4KVGhlIHByZW1hcCBj YWxsYmFjayBhbGxvd3MgdG8gc2V0IHRoZSByZWxvY2F0aW9uIGFkZHJlc3MgZm9yIHRoZSBz b2xpYi4KTW9yZSBzbywgaWYgRExNRU1fRE9OVFJFUExBQ0UgZmxhZyBpcyB1c2VkLCB0aGVu IHRoZSBtYXBwaW5nIGVzdGFibGlzaGVkCmJ5IHRoZSBwcmVtYXAgY2FsbGJhY2ssIHdpbGwg bm90IGJlIHJlcGxhY2VkIHdpdGggdGhlIGZpbGUtYmFja2VkIG1hcHBpbmcuCkluIHRoYXQg Y2FzZSBkbG1lbSgpIGhhdmUgdG8gdXNlIG1lbWNweSgpLCB3aGljaCBpcyBsaWtlbHkgZXZl biBmYXN0ZXIKdGhhbiBtbWFwcygpIGJ1dCBkb2Vzbid0IGVuZCB1cCB3aXRoIHRoZSBwcm9w ZXIgL3Byb2Mvc2VsZi9tYXBfZmlsZXMKb3IgL3Byb2Mvc2VsZi9tYXBzIGVudHJpZXMuIFNv IGZvciBleGFtcGxlIGlmIHRoZSBwcmVtYXAgY2FsbGJhY2sgdXNlcwpNQVBfU0hBUkVELCB0 aGVuIHdpdGggdGhlIHVzZSBvZiB0aGUgRExNRU1fRE9OVFJFUExBQ0UgZmxhZyB5b3UgY2Fu IGdldAp5b3VyIHNvbGliIHJlbG9jYXRlZCBpbnRvIGEgc2hhcmVkIG1lbW9yeSBidWZmZXIu CgpMaW1pdGF0aW9uczoKCi0gSWYgeW91IG5lZWQgdG8gbG9hZCB0aGUgc29saWIgZnJvbSBh bm9ueW1vdXNseS1tYXBwZWQgYnVmZmVyLCB5b3UgbmVlZAogIHRvIHVzZSBNQVBfU0hBUkVE fE1BUF9BTk9OWU1PVVMgbW1hcCBmbGFncyB3aGVuIGNyZWF0aW5nIHRoYXQgYnVmZmVyLgog IElmIGl0IGlzIG5vdCBwb3NzaWJsZSBpbiB5b3VyIHVzZS1jYXNlIGFuZCB0aGUgYnVmZmVy IHdhcyBjcmVhdGVkCiAgd2l0aCBNQVBfUFJJVkFURXxNQVBfQU5PTllNT1VTIGZsYWdzLCB0 aGVuIERMTUVNX0RPTlRSRVBMQUNFIGZsYWcKICBuZWVkcyB0byBiZSBzZXQgd2hlbiBjYWxs aW5nIGRsbWVtKCkuCiAgRmFpbHVyZSB0byBmb2xsb3cgdGhhdCBndWlkZS1saW5lIHJlc3Vs dHMgaW4gYW4gVUIgKGxvYWRlciB3aWxsIG5vdAogIGJlIGFibGUgdG8gcHJvcGVybHkgbGF5 IG91dCBhbiBlbGYgc2VnbWVudHMpLgoKLSBJZiB5b3UgdXNlIGEgcHJpdmF0ZSBmaWxlLWJh Y2tlZCBtYXBwaW5nLCB0aGVuIGl0IHNob3VsZG4ndCBiZQogIG1vZGlmaWVkIGJ5IGhhbmRz IGJlZm9yZSBwYXNzaW5nIHRvIGRsbWVtKCkuIEkuZS4geW91IGNhbid0IGFwcGx5CiAgbXBy b3RlY3QoKSB0byBpdCB0byBjaGFuZ2UgcHJvdGVjdGlvbiBiaXRzLCBhbmQgeW91IGNhbid0 IGFwcGx5CiAgbWVtbW92ZSgpIHRvIGl0IHRvIG1vdmUgdGhlIHNvbGliIHRvIHRoZSBiZWdp bm5pbmcgb2YgdGhlIGJ1ZmZlciwKICBhbmQgc28gb24uIGRsbWVtKCkgY2FuIG9ubHkgd29y ayB3aXRoICJ2aXJnaW4iIHByaXZhdGUgZmlsZS1iYWNrZWQKICBtYXBwaW5ncy4gWW91IGNh biBzZXQgRExNRU1fRE9OVFJFUExBQ0UgZmxhZyBhcyBhIHdvcmstYXJvdW5kIGlmCiAgdGhl IG1hcHBpbmcgaXMgYWxyZWFkeSBjb3JydXB0ZWQuCiAgRmFpbHVyZSB0byBmb2xsb3cgdGhh dCBndWlkZS1saW5lIHJlc3VsdHMgaW4gYW4gVUIgKGxvYWRlciB3aWxsIG5vdAogIGJlIGFi bGUgdG8gcHJvcGVybHkgbGF5IG91dCBhbiBlbGYgc2VnbWVudHMpLgoKLSBUaGUgbmVlZCBv ZiBtYXBwaW5nIHRoZSBlbnRpcmUgc29saWIgKHdpdGggZGVidWcgaW5mbyBldGMpIG1heQog IHJlcHJlc2VudCBhIHByb2JsZW0gb24gYSAzMmJpdCBhcmNoaXRlY3R1cmVzIGlmIHRoZSBz b2xpYiBoYXMgYW4KICBhYnN1cmRseSBsYXJnZSBzaXplLCBsaWtlIDNHYiBvciBtb3JlLgoK LSBGb3IgdGhlIHZlcnkgc2FtZSByZWFzb24gdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlv biBvZiBBbmRyb2lkJ3MKICBkbG9wZW5fd2l0aF9vZmZzZXQoKSBpcyBkaWZmaWN1bHQsIGFz IGluIHRoYXQgY2FzZSB5b3UnZCBuZWVkIHRvCiAgbWFwIHRoZSBlbnRpcmUgZmlsZSBjb250 YWluZXIsIHN0YXJ0aW5nIGZyb20gdGhlIG5lZWRlZCBvZmZzZXQuCiAgVGhlIGRlbW8gaW1w bGVtZW50YXRpb24gaW4gdGhpcyBwYXRjaCBpbXBsZW1lbnRzIGRsb3Blbl93aXRoX29mZnNl dDQoKQogIHRoYXQgaGFzIGFuIGFkZGl0aW9uYWwgImxlbmd0aCIgYXJndW1lbnQgd2hlcmUg dGhlIHNvbGliIGxlbmd0aAogIHNob3VsZCBiZSBwYXNzZWQuCgotIEFzIGxpbnV4IGRvZXNu J3QgaW1wbGVtZW50IE1BUF9VTkFMSUdORUQgYXMgc29tZSB1bml4ZXMgZGlkLCB0aGUKICBl ZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgZGxvcGVuX3dpdGhfb2Zmc2V0NCgpIGlzIGRp ZmZpY3VsdAogIGlmIHRoZSBvZmZzZXQgaXMgbm90IHBhZ2UtYWxpZ25lZC4gRGVtbyBpbiB0 aGlzIGV4YW1wbGUgZml4ZXMgdGhlCiAgYWxpZ25tZW50IGJ5IGhhbmRzLCB1c2luZyB0aGUg TUFQX1NIQVJFRHxNQVBfQU5PTllNT1VTIGludGVybWVkaWF0ZQogIGJ1ZmZlci4gVGhlIGFs aWdubWVudCBjYW5ub3QgYmUgZml4ZWQgaW4gYW4gZXhpc3RpbmcgYnVmZmVyIHdpdGgKICBt ZW1tb3ZlKCksIGFzIHRoYXQgd2lsbCBtYWtlIHRoZSBmaWxlLWJhY2tlZCBtYXBwaW5nIHVu YWNjZXB0YWJsZQogIGZvciB0aGUgdXNlIHdpdGggZGxtZW0oKS4gSSBzdXNwZWN0IHRoYXQg Z29vZ2xlJ3MgZGxvcGVuX3dpdGhfb2Zmc2V0KCkKICBoYXMgc2ltaWxhciBsaW1pdGF0aW9u IGJlY2F1c2UgbW1hcCgpIHdpdGggdW5hbGlnbmVkIG9mZnNldCBpcwogIG5vdCBwb3NzaWJs ZSBpbiBhbnkgaW1wbGVtZW50YXRpb24sIGJlIGl0IGEgImRpcmVjdCIgaW1wbGVtZW50YXRp b24KICBvciAib3Zlci1kbG1lbSIgaW1wbGVtZW50YXRpb24uCgpDaGFuZ2VzIGluIHYxMDoK LSBhZGRyZXNzZWQgcmV2aWV3IGNvbW1lbnRzIG9mIEFkaGVtZXJ2YWwgWmFuZWxsYQotIGZp eGVkIGEgZmV3IGJ1Z3MgaW4gYW4gZWxmIHJlbG9jYXRpb24gbWFjaGluZXJ5IGFmdGVyIHZh cmlvdXMgaG90IGRpc2N1c3Npb25zCi0gYWRkZWQgYSBuZXcgdGVzdCB0c3QtZGxtZW0tZXh0 Zm5zIHRoYXQgZGVtby1pbXBsZW1lbnRzIGRsb3Blbl93aXRoX29mZnNldDQoKQogIGFuZCBm ZGxvcGVuKCkKLSBzdHVkaWVkIGFuZCBkb2N1bWVudGVkIGFsbCBsaW1pdGF0aW9ucywgbW9z dCBpbXBvcnRhbnRseSB0aG9zZSBsZWFkaW5nIHRvIFVCCgpDaGFuZ2VzIGluIHY5OgotIHVz ZSAiemVyby1jb3B5IiBtYWNoaW5lcnkgaW5zdGVhZCBvZiBtZW1jcHkoKS4gSXQgd29ya3Mg b24gbGludXggNS4xMwogIGFuZCBuZXdlciwgZmFsbGluZyBiYWNrIHRvIG1lbWNweSgpIG90 aGVyd2lzZS4gU3VnZ2VzdGVkIGJ5IEZsb3JpYW4gV2VpbWVyLgotIGltcGxlbWVudCBmZGxv cGVuKCkgdXNpbmcgdGhlIGFib3ZlIGZ1bmN0aW9uYWxpdHkuIEl0IGlzIGluIGEgbmV3IHRl c3QKICB0c3QtZGxtZW0tZmRsb3Blbi4gU3VnZ2VzdGVkIGJ5IENhcmxvcyBPJ0RvbmVsbC4K LSBhZGQgRExNRU1fRE9OVFJFUExBQ0UgZmxhZyB0aGF0IGRvZXNuJ3QgcmVwbGFjZSB0aGUg YmFja2luZy1zdG9yZSBtYXBwaW5nLgogIEl0IHN3aXRjaGVzIGJhY2sgdG8gbWVtY3B5KCku IFRlc3QtY2FzZSBpcyBjYWxsZWQgdHN0LWRsbWVtLXNobS4KCkNoYW5nZXMgaW4gdjg6Ci0g ZHJvcCBhdWRpdCBtYWNoaW5lcnkgYW5kIGluc3RlYWQgYWRkIGFuIGV4dHJhIGFyZyAob3B0 aW9uYWwgcG9pbnRlcgogIHRvIGEgc3RydWN0KSB0byBkbG1lbSgpIGl0c2VsZiB0aGF0IGFs bG93cyB0byBpbnN0YWxsIGEgY3VzdG9tIHByZW1hcAogIGNhbGxiYWNrIG9yIHRvIHNwZWNp ZnkgbnNpZC4gQXVkaXQgbWFjaGluZXJ5IHdhcyBtZWFudCB0byBhbGxvdwogIGNvbnRyb2xp bmcgb3ZlciB0aGUgcHJlLWV4aXN0aW5nIEFQSXMgbGlrZSBkbG9wZW4oKSwgYnV0IGlmIHNv bWVvbmUKICBldmVyIG5lZWRzIHN1Y2ggZXh0ZW5zaW9ucyB0byBkbG9wZW4oKSwgaGUgY2Fu IHRyaXZpYWxseSBpbXBsZW1lbnQKICBkbG9wZW4oKSBvbiB0b3Agb2YgZGxtZW0oKS4KCkNo YW5nZXMgaW4gdjc6Ci0gYWRkIF9kbF9hdWRpdF9wcmVtYXAgYXVkaXQgZXh0ZW5zaW9uIGFu ZCBpdHMgdXNhZ2UgZXhhbXBsZQoKQ2hhbmdlcyBpbiB2NjoKLSB1c2UgX19zdHJkdXAoIiIp IGZvciBsX25hbWUgYXMgc3VnZ2VzdGVkIGJ5IEFuZHJlYXMgU2Nod2FiCgpDaGFuZ2VzIGlu IHY1OgotIGFkZGVkIF9kbF9hdWRpdF9wcmVtYXBfZGxtZW0gYXVkaXQgZXh0ZW5zaW9uIGZv ciBkbG1lbQotIGFkZGVkIHRzdC1hdWRpdG1vZC1kbG1lbS5jIHRlc3QtY2FzZSB0aGF0IGZl ZWRzIHNobSBmZCB0byBkbG1lbSgpCgpDaGFuZ2VzIGluIHY0OgotIHJlLXRhcmdldCB0byBH TElCQ18yLjM4Ci0gYWRkIHRzdC1hdWRpdGRsbWVtLmMgdGVzdC1jYXNlIHRvIHRlc3QgYXVk aXRpbmcKLSBkcm9wIGxlbmd0aCBwYWdlLWFsaWduaW5nIGluIHRzdC1kbG1lbTogbW1hcCgp IGFsaWducyBsZW5ndGggb24gaXRzIG93bgotIGJ1Z2ZpeDogaW4gZG9fbW1hcGNweSgpIGFs bG93IG1tYXBzIHBhc3QgZW5kIG9mIGJ1ZmZlcgoKQ2hhbmdlcyBpbiB2MzoKLSBDaGFuZ2Vk IHByb3RvdHlwZSBvZiBkbG1lbSgpIChhbmQgYWxsIHRoZSBpbnRlcm5hbCBtYWNoaW5lcnkp IHRvCiAgdXNlICJjb25zdCB1bnNpZ25lZCBjaGFyICpidWZmZXIiIGluc3RlYWQgb2YgImNv bnN0IGNoYXIgKmJ1ZmZlciIuCgpDaGFuZ2VzIGluIHYyOgotIHVzZSA8c3VwcG9ydC90ZXN0 LWRyaXZlci5jPiBpbnN0ZWFkIG9mICIuLi90ZXN0LXNrZWxldG9uLmMiCi0gcmUtdGFyZ2V0 IHRvIEdMSUJDXzIuMzcKLSB1cGRhdGUgYWxsIGxpYmMuYWJpbGlzdCBmaWxlcwoKLS0gCjIu MzcuMgoK --------------zdEuqelD0FuHKNyXaubcpjj2--