From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by passt.top (Postfix) with ESMTP id 971865A0275 for ; Mon, 12 Feb 2024 15:43:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1707748985; 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: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/xoIp+uytHjXlTl+Suuu7ddH/pANXfyhUQgewIkY9VQ=; b=a45NqcomtO1mGQSS6yoREtURCKVXLTDnqk5Gar8tlqcYzmU4KOQcIIbpTbgTklJqogeiQG rFW9hEDkAp3IFc4mzduxkT+NZ6vrnNTSBXUDtB9xU5oRd2w189vdx9yFqCrbIyK6XjUnYg 2G0oMuyRCBRfmprL8EUREx4zZr4WKQM= Received: from mail-lf1-f70.google.com (mail-lf1-f70.google.com [209.85.167.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-6-4S4ZUmatNpq2-0NjIHyq_g-1; Mon, 12 Feb 2024 09:43:04 -0500 X-MC-Unique: 4S4ZUmatNpq2-0NjIHyq_g-1 Received: by mail-lf1-f70.google.com with SMTP id 2adb3069b0e04-51151b8de86so2915784e87.1 for ; Mon, 12 Feb 2024 06:43:03 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707748982; x=1708353782; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=/xoIp+uytHjXlTl+Suuu7ddH/pANXfyhUQgewIkY9VQ=; b=EY/hh6gnM0J3XUpZpFaJe4iwVIleKbo3Bkug8W5bFsiuHrCZGrd5AtAGyx4czt7jgp oEAq1aYDNHfBWho8YVyMBaTYfzOjlS4XMA2OIBWl2HGg4R4jbETcL0W0NoLyad1v8LXj lfZpAHc8731Ww2GyaD6fGHezspP1rk7LhMdLwGMsmyrSj+eLEMtlUIVOowlhMWVs/Yep 5aGQoDR0YIGrpx9uBWd5VrHt+qPrQUP8t3QInutmpDsMDQ7I67Ig0mPXI0MuPh8jcm51 tgP0aFR4VrV6qty0GI3K7gE38lzEvh3As7RXyxMmNnXkl+gZHxl+yeJOGgQj6Y9ygZ25 5PYA== X-Gm-Message-State: AOJu0Yy5Oyb7r9xnz69QCKvDOM82uSAzmN1CMoHLjCn/FUJkWXsEh+6k cfzfJsltDxGfS0s3SxX6j9bE9twiaPpv9kv/kgnlqQxvbx8kZDblnXjcxXIw2qU4/IaH4cGb1gm 3HAZDigUeQWiMWDLGaR4h7DaIy4/swt5r4UaCILAA1rq069ptzg== X-Received: by 2002:a05:6512:2e9:b0:511:2e97:add2 with SMTP id m9-20020a05651202e900b005112e97add2mr4506975lfq.66.1707748982622; Mon, 12 Feb 2024 06:43:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IHkFibFnL6nCnu1H8fLl+hiQUhGXX/oj2EWOf267KBRRr7BVOkCroTGFGKrCPAG3ogJ7IaAOQ== X-Received: by 2002:a05:6512:2e9:b0:511:2e97:add2 with SMTP id m9-20020a05651202e900b005112e97add2mr4506955lfq.66.1707748982181; Mon, 12 Feb 2024 06:43:02 -0800 (PST) Received: from [192.168.188.25] ([80.243.52.134]) by smtp.gmail.com with ESMTPSA id bx5-20020a5d5b05000000b0033b50344a97sm7192698wrb.7.2024.02.12.06.43.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 12 Feb 2024 06:43:01 -0800 (PST) Message-ID: <6f64c0df-3b96-453a-a3a7-8a3fb2c1d70c@redhat.com> Date: Mon, 12 Feb 2024 15:43:00 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: pasta does not correctly handle bind errors with port ranges To: Stefano Brivio References: <20240209220939.2f477a76@elisabeth> <20240212151331.277ef9fd@elisabeth> From: Paul Holzinger In-Reply-To: <20240212151331.277ef9fd@elisabeth> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 Message-ID-Hash: XYKOJSRRUDHU7BBIOLETRJTMS55TRETB X-Message-ID-Hash: XYKOJSRRUDHU7BBIOLETRJTMS55TRETB X-MailFrom: pholzing@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: passt-dev@passt.top X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: DQpPbiAxMi8wMi8yMDI0IDE1OjEzLCBTdGVmYW5vIEJyaXZpbyB3cm90ZToNCj4gT24gTW9uLCAx MiBGZWIgMjAyNCAxMjo0NTowMCArMDEwMA0KPiBQYXVsIEhvbHppbmdlciA8cGhvbHppbmdAcmVk aGF0LmNvbT4gd3JvdGU6DQo+DQo+PiBIaSBTdGVmYW5vLA0KPj4NCj4+IE9uIDA5LzAyLzIwMjQg MjI6MDksIFN0ZWZhbm8gQnJpdmlvIHdyb3RlOg0KPj4+IEhpIFBhdWwsDQo+Pj4NCj4+PiBPbiBG cmksIDkgRmViIDIwMjQgMTc6NTc6MDUgKzAxMDANCj4+PiBQYXVsIEhvbHppbmdlciA8cGhvbHpp bmdAcmVkaGF0LmNvbT4gd3JvdGU6DQo+Pj4gICANCj4+Pj4gSGkgYWxsLA0KPj4+PiBJIGZvdW5k IHNvbWUgaXNzdWVzIHdpdGggdGhlIHBhc3RhIHBvcnQgYmluZGluZyBsb2dpYywgaXQgZG9lcyBu b3QNCj4+Pj4gY29ycmVjdGx5IGhhbmRsZSBlcnJvcnMgd2hlbiB0cnlpbmcgdG8gYmluZCBhIHBv cnQgcmFuZ2UuDQo+Pj4+IExldCdzIGZpcnN0IGJpbmQgYSBwb3J0IHNvIHdlIGNhbiBmb3JjZSBh biBlcnJvciBjb25kaXRpb24gaXQ6DQo+Pj4+ICQgbmMgLWwgLXAgODA4MCAmDQo+Pj4+ICQgcGFz dGEgLXQgODA4MMKgIHRydWUNCj4+Pj4gRmFpbGVkIHRvIGJpbmQgYW55IHBvcnQgZm9yICctdCA4 MDgwJywgZXhpdGluZyA8LS0gZmFpbHMgYXMgZXhwZWN0ZWQNCj4+Pj4gJCBwYXN0YSAtdCA4MDgx IC10IDgwODDCoCB0cnVlDQo+Pj4+IEZhaWxlZCB0byBiaW5kIGFueSBwb3J0IGZvciAnLXQgODA4 MCcsIGV4aXRpbmcgPC0tIGhlcmUgaXQgYWxzbyBmYWlscw0KPj4+PiBjb3JyZWN0bHkNCj4+Pj4g JCBwYXN0YSAtdCA4MDgwLTgwODHCoCB0cnVlDQo+Pj4+IDwtLSBubyBlcnJvciBldmVuIHRob3Vn aCBwYXN0YSBjb3VsZCBub3QgYmluZCA4MDgwDQo+Pj4gVGhpcyBpcyBhY3R1YWxseSBpbnRlbmRl ZDogaXQgb25seSBmYWlscyBpZiBpdCBjYW4ndCBiaW5kICphbnkqIHBvcnQgaW4NCj4+PiBhIGdp dmVuIHJhbmdlLCBzbyB0aGF0IHVzZXJzIGRvbid0IGhhdmUgdG8gZXhwbGljaXRseSBleGNsdWRl IHBvcnRzDQo+Pj4gZnJvbSByYW5nZXMgaW4gY2FzZSBzb21lIGFyZSBhbHJlYWR5IHRha2VuLCBr bm93aW5nbHkgb3Igbm90LiBUaGF0J3MNCj4+PiB3aHkgdGhlIGVycm9yIG1lc3NhZ2Ugc2F5cyAi YW55IHBvcnQiLg0KPj4gT2sgYnV0IHRoaXMgcmVzdWx0cyBpbiBhIHZlcnkgaW5jb25zaXN0ZW50 IGJlaGF2aW9yLiBJIGFyZ3VlIHRoaXMgaXMgbm90DQo+PiB3aGF0IGEgbm9ybWFsIHVzZXIgZXhw ZWN0cyBhdCBhbGwuDQo+IFRoaXMgcmVhbGx5IGRlcGVuZHMgb24gdGhlIHVzZXIuIFRoZSBtYWlu IHVzYWdlIGJlaGluZCB0aGUgY3VycmVudA0KPiBiZWhhdmlvdXIgaXMgdGhlICJhbGwiIGZvcndh cmRpbmcgbW9kZSwgYXMgb3JpZ2luYWxseSBkZXNpZ25lZCBmb3INCj4gS3ViZVZpcnQsIG5vdyBh dmFpbGFibGUgdmlhIGxpYnZpcnQgaW4gdHdvIGZvcm1zOiAtdCBhbGwgLyAtdSBhbGwsIG9yDQo+ IGdpdmluZyBleGNsdWRlZCByYW5nZXMgb25seSAoZnJvbSB0aGUgbWFuIHBhZ2U6ICJTcGVjaWZ5 aW5nIGV4Y2x1ZGVkDQo+IHJhbmdlcyBvbmx5IGltcGxpZXMgdGhhdCBhbGwgb3RoZXIgcG9ydHMg YXJlIGZvcndhcmRlZC4iKS4NCj4NCj4gQXQgbGVhc3QgdGhpcyBwYXJ0LCBzcGVjaWZpY2FsbHks IGlzIGFuIGVzdGFibGlzaGVkIGJlaGF2aW91ciBhbmQgd2UNCj4gY2FuJ3QgYnJlYWsgaXQuDQo+ DQo+IEJ1dCB0aGF0J3Mgbm90IGEgc3Vic3RhbnRpYWwgY29uZmxpY3Qgd2l0aCB3aGF0IHlvdSdy ZSBhc2tpbmcgZm9yDQo+IFBvZG1hbjogd2UgY2FuIGtlZXAgdGhpcyBiZWhhdmlvdXIgb25seSBp ZiB0aGUgdXNlciBhc2tzIHRvIGZvcndhcmQNCj4gKGFsbW9zdCkgImFsbCIgdGhlIHBvcnRzIChp biB3aGF0ZXZlciB3YXkpLiBBbmQgUG9kbWFuIG5ldmVyIGFza3MgZm9yDQo+IHRoYXQsIGFuZCBw cm9iYWJseSBuZXZlciB3aWxsLg0KPg0KPj4gSXQgaXMgbm90IGV2ZW4gZG9jdW1lbnRlZCBpbiB0 aGUgbWFuIHBhZ2UuDQo+IFJpZ2h0LCB5ZXMsIHdlJ2xsIG5lZWQgdG8gZGVzY3JpYmUgaXQuDQo+ DQo+Pj4gRm9yIHR3byBwb3J0cyBpdCBwcm9iYWJseSBtYWtlcyBubyBzZW5zZSwgYnV0IGZvciBs YXJnZXIgcmFuZ2VzDQo+Pj4gZXhjbHVkaW5nIGRvemVucyBvZiBwb3J0cyBjYW4gZ2V0IHF1aXRl IGFubm95aW5nIGZvciB0aGUgdXNlci4gQW5kDQo+Pj4gd2FybmluZ3Mgb24gZmFpbGVkIGJpbmQo KSBjYWxscyBjb3VsZCBnZXQgcXVpdGUgbm9pc3ksIHRvby4NCj4+IEF0IHRoZSBzYW1lIHRpbWUg dGhpcyBjYW4gcmVzdWx0IGluIGEgbG90IG9mIHVuZXhwZWN0ZWQgcHJvYmxlbXMgZm9yDQo+PiB1 c2VycyBhcyBpdCBqdXN0IGhpZGVzIHBvdGVudGlhbCBwcm9ibGVtcywgYXNzdW1pbmcgODAwMS05 MDAwIGFyZQ0KPj4gYWxyZWFkeSBpbiB1c2UgdGhlbiAtdCA4MDAwLTkwMDAgd291bGQgd29yayBh bmQgdGhlbiBvbmUgbWlnaHQNCj4+IHJlYXNvbmFibHkgZXhwZWN0IHRoYXQgaWYgdGhleSBjb25u ZWN0IHRvIGFueSBvZiB0aGUgZ2l2ZW4gcG9ydHMgdGhleQ0KPj4gdGFsayB0byB0aGUgcGFzdGEg bmFtZXNwYWNlIGFuZCBub3Qgc29tZXRoaW5nIGVsc2UsIHRoaXMgY291bGQgYmUgYQ0KPj4gc2Vj dXJpdHkgY29uY2Vybi4gSSB3b3VsZCBzYXkgaW4gc3VjaCBjYXNlIHllcyBJIHdhbnQgdG8gc2Vl IGEgbG9nZ2VkDQo+PiBlcnJvciBmb3IgZWFjaCBpbmRpdmlkdWFsIHBvcnQuDQo+IEkgc2VlLCBi dXQgYWdhaW4sIGlmIGp1c3QgcG9ydCA4MDA1IGlzIG5vdCBhdmFpbGFibGUsIHlvdSBtaWdodCBz YXkNCj4gdGhhdCBoYXZpbmcgcGFzdGEgc3VjY2VlZCBpcyBhIHNlY3VyaXR5IGNvbmNlcm4gYmVj YXVzZSBzb21lYm9keSBjYW4NCj4gInN0ZWFsIiB0aGUgcG9ydCwgb3IgdGhhdCBoYXZpbmcgcGFz dGEgZmFpbCBpcyBhIG51aXNhbmNlIGJlY2F1c2UgdGhlDQo+IHVzZXIgcHJvYmFibHkganVzdCB3 YW50ZWQgdG8gZm9yd2FyZCB0aGUgcmVtYWluaW5nIDEwMDAgcG9ydHMsIGFuZA0KPiBncmFjZWZ1 bCBkZWdyYWRhdGlvbiB3b3VsZCBiZSBkZXNpcmFibGUgaW5zdGVhZC4NCj4NCj4gSXQncyBwcmV0 dHkgaW1wb3NzaWJsZSB0byBkcmF3IGEgbGluZSBpbiBhIGRpZmZlcmVudCB3YXkgdGhhdCdzIG5v dA0KPiBjb25zaWRlcmVkIGluY29uc2lzdGVudCBvciBpbmNvbnZlbmllbnQgYnkgc29tZS4gU286 DQpZZWFoIEkgdW5kZXJzdGFuZCB0aGF0LCBJIGd1ZXNzIEkganVzdCBhbSBtaXNzaW5nIHRoZSB1 c2UgY2FzZSBvZiANCmZvcndhcmRpbmcgbGFyZ2UgcG9ydCByYW5nZXMgaW4gZ2VuZXJhbCBhcyBJ IGRvbid0IHVuZGVyc3RhbmQgaG93IGl0IGlzIA0KdXNlZCBpbiBwcmFjdGljZS4gQXMgYW4gYXBw bGljYXRpb24gaW5zaWRlIHRoZSBWTS9jb250YWluZXIgdGhhdCBqdXN0IA0KYmluZHMgYSBwb3J0 IGl0IGhhcyBubyBrbm93bGVkZ2Ugd2hlbmV2ZXIgcGFzc3QvcGFzdGEgZm9yd2FyZGVkIHRoZSBw b3J0IA0Kc28gaWYgaXQgaGFwcGVucyB0byB1c2Ugb25lIHRoYXQgd2FzIHNraXBwZWQgYmVjYXVz ZSBpdCB3YXMgYWxyZWFkeSB1c2VkIA0Kb24gdGhlIGhvc3QgaXQganVzdCB3b24ndCBnZXQgZXh0 ZXJuYWwgY29ubmVjdGlvbnMuIEkgZ3Vlc3MgdGhlIGFuc3dlciANCmZvciB0aGF0IGlzIHVzZXIg ZXJyb3IvcHJvYmxlbS4NCj4NCj4+PiBJZiBpdCdzIGEgcHJvYmxlbSBmb3IgUG9kbWFuLCBJIGNh biB0aGluayBvZiB0d28gc29sdXRpb25zLiBPbmUgd291bGQNCj4+PiBiZSBhbiBvcHRpb24gc3Vj aCBhcyAtLXN0cmljdC1iaW5kIG9yIHN1Y2hsaWtlIChiZXR0ZXIgbmFtZXMgd2FybWx5DQo+Pj4g d2VsY29tZSkuDQo+PiBJdCBpcyBhIGJpZyBwcm9ibGVtIGZvciBwb2RtYW4gYXMgaXQgZG9lcyBu b3QgZG8gd2hhdCB1c2VycyB3YW50IHVzIHRvDQo+PiBkby4gQWxzbywgYmVjYXVzZSBwb2RtYW4g aXMgc21hcnQgZW5vdWdoIHRvIGNvbWJpbmUgc2V2ZXJhbCBwb3J0cyBpbnRvDQo+PiByYW5nZXMg aW50ZXJuYWxseSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgc29tZXRoaW5nIGxpa2UgLXAgODA6 ODAgLXANCj4+IDgxOjgxIGlzIGFsd2F5cyBhIHJhbmdlIGZvciBwb2RtYW4gdGh1cyB0aGVyZSBp cyBubyB3YXkgZm9yIHBvZG1hbiB1c2Vycw0KPj4gdG8gYXZvaWQgaGl0dGluZyB0aGlzIHByb2Js ZW0uIEFuIG9wdC1pbiBvcHRpb24gd29ya3MgZm9yIG1lIGJ1dCB0aGVuIHdlDQo+PiBuZWVkIHRv IGJ1bXAgdGhlIG1pbmltdW0gcGFzdGEgcmVxdWlyZW1lbnQgdmVyc2lvbiBmb3IgcG9kbWFuIHdo aWNoIGlzIGENCj4+IGJpdCBhbm5veWluZyBhcyBJIHdvdWxkIG5lZWQgdG8gd2FpdCB1bnRpbCB0 aGUgdmVyc2lvbnMgbGFuZHMgaW4gb3VyIENJLg0KPiAuLi53b3VsZCBwcm9iaW5nIGZvciB0aGUg b3B0aW9uIGJlIGEgcG9zc2liaWxpdHk/IFRoYXQgaXMsIHJ1biAncGFzdGENCj4gLS1zdHJpY3Qt YmluZCcsIGFuZCBpZiBpdCBmYWlscywgbG9nIGEgd2FybmluZyBhbmQgY29udGludWUgd2l0aG91 dCB0aGUNCj4gb3B0aW9uLg0KPg0KPiBJZiB0aGF0J3MgdG9vIGN1bWJlcnNvbWUsIHRoZW4gSSB3 b3VsZCBza2lwIHRoZSBuZXcgb3B0aW9uIGFuZCBjaGFuZ2UNCj4gaXQgdG8gc2ltcGx5IGZhaWwg aWYgd2UgY2FuJ3QgYmluZCBhIHNpbmdsZSBwb3J0IChhbmQgcmVwb3J0IHRoZSBzaW5nbGUNCj4g ZXJyb3IgcmlnaHQgYXdheSksIHVubGVzcyB0aGUgdXNlciByZXF1ZXN0cyB0byBmb3J3YXJkICJh bG1vc3QgYWxsIiB0aGUNCj4gcG9ydHMsIGluIHdoaWNoIGNhc2Ugd2UgY291bGQgcHJvYmFibHkg d2FybigpIHdpdGggYSBsaXN0IG9mIHRoZSBwb3J0cw0KPiB0aGF0IHdlIGNvdWxkbid0IGJpbmQu DQoNCkkgYW0gZmluZSB3aXRoIGFuIG9wdCBpbiBvcHRpb24sIGl0IGp1c3QgbWVhbnMgdGhhdCBJ IHdpbGwgbmVlZCB0byB3YWl0IA0KYSBiaXQgdW50aWwgdGhlIHBhc3N0IHBhY2thZ2UgbGFuZGVk IGluIGZlZG9yYSBhbmQgb3VyIENJIGltYWdlcyBiZWZvcmUgDQpJIGNhbiBpbXBsZW1lbnQgaXQu IFJldHJ5aW5nIHdpdGhvdXQgdGhhdCBvcHRpb24gaXMgYSBnb29kIGlkZWEgYnV0IEkgDQpyYXRo ZXIganVzdCBtYWtlIGEgY2xlYW4gcmVxdWlyZW1lbnQgb2YgdmVyc2lvbiB4eHggdG8gbm90IGNv bXBsaWNhdGUgDQp0aGUgcG9kbWFuIGNvZGUuIFdlIGFyZSBpbiBwcm9jZXNzIG9mIGZpbmFsaXpp bmcgUG9kbWFuIDUuMCByaWdodCBub3cgc28gDQppZiBzdWNoIG9wdGlvbiBjb3VsZCBiZSBpbXBs ZW1lbnRlZCB3aXRoaW4gdGhlIG5leHQgMi0zIHdlZWtzIHRoYXQgd291bGQgDQpiZSBncmVhdCBh bmQgSSBjYW4gYWRkIGEgbm90ZSB0aGUgd2UgcmVxdWlyZSBwYXNzdCB2ZXJzaW9uIFhYWCBub3cg YXMgDQpwYXJ0IG9mIDUuMCBhbmQgbWFrZSBpdCB0aGUgcGFja2FnZXJzIHJlc3BvbnNpYmlsaXR5 IHRvIHByb3ZpZGUgdGhhdC4NCg0KPg0KPj4+IEFub3RoZXIgaWRlYSB3b3VsZCBiZSB0aGF0IHRo ZSBiYWNrLWVuZCBpbiBQb2RtYW4gcGFzc2VzIHJhbmdlcyBhcw0KPj4+IHNpbmdsZSBwb3J0cy4u LiBidXQgdGhlbiB0aGUgY29tbWFuZCBsaW5lIG1pZ2h0IGV4cGxvZGUgYW5kIHRoYXQncw0KPj4+ IG5vdCBpZGVhbCBmb3IgdXNlcnMsIGVpdGhlci4gSSdkIHJhdGhlciBmYXZvdXIgdGhlIGV4dHJh IG9wdGlvbi4NCj4+IFllYWggdGhhdCB3b3JrcyBidXQgZm9yIGxhcmdlIHJhbmdlcyBpdCB3b3Vs ZCBub3QgYmUgYXMgcGVyZm9ybWFudCBhbmQNCj4+IHRoZXJlIGlzIHRoZSByaXNrIG9mIGhpdHRp bmcgQVJHX01BWCAoYWx0aG91Z2ggSSB1bmRlcnN0YW5kIGl0IGlzDQo+PiB1bmxpa2VseSB0byBi ZSByZWFsIHByb2JsZW0gZ2l2ZW4gb25lIHdvdWxkIG5lZWQgdG8gZ2l2ZSBtaWxsaW9ucyBvZg0K Pj4gcG9ydHMgdG8gaGl0IGl0KS4NCj4+PiAgIA0KPj4+PiBBbHNvIGJlc2lkZXMgdGhpcyBJIGZp bmQgdGhlIGVycm9yIG1lc3NhZ2UgbGVzcyB0aGFuIGlkZWFsLiBJdCBtaXNzaW5nDQo+Pj4+IHRo ZSBlcnJubyBmcm9tIHRoZSBiaW5kIHN5c2NhbGwgc28gaW1wb3J0YW50IGNvbnRleHQgZ2V0cyBs b3N0IChpLmUuDQo+Pj4+IEFkZHJlc3MgYWxyZWFkeSBpbiB1c2UgdnMgUGVybWlzc2lvbiBkZW5p ZWQpLg0KPj4+IFRoZSBwcm9ibGVtIGlzIHRoYXQgd2UgbWlnaHQgZmFpbCB0byBiaW5kIG11bHRp cGxlIHBvcnRzLCBzbyB0aGVyZQ0KPj4+IGlzbid0IG5lY2Vzc2FyaWx5IGEgc2luZ2xlIGJpbmQo KSBlcnJvci4gQnV0IGlmIHdlIGdvIHdpdGgNCj4+PiAtLXN0cmljdC1iaW5kLCB3ZSBjb3VsZCBy ZXBvcnQgdGhlIGZpcnN0IGVycm9yIChpbmNsdWRpbmcgcmV0dXJuIGNvZGUNCj4+PiBmcm9tIHRo ZSBzeXN0ZW0gY2FsbCkgYW5kIGV4aXQgcmlnaHQgYXdheS4NCj4+IEkgYW0gZmluZSB3aXRoIHRo aXMsIGV4aXQgb24gdGhlIGZpcnN0IGVycm9yIGlzIHdoYXQgYWxsIG91ciBvdGhlcg0KPj4gbmV0 d29yayB0b29scyBkby4NCj4+IEJ1dCB0aGUgYmVoYXZpb3IgYWxzbyBleGlzdHMgZm9yIGV2ZW4g YSBzaW5nbGUgcG9ydCB0b2RheSwgZm9yIHJlZmVyZW5jZQ0KPj4gdGhlIGVycm9yIG1lc3NhZ2Vz IHRvZGF5Og0KPj4NCj4+IHJvb3RsZXNzcG9ydDoNCj4+DQo+PiAkIHBvZG1hbiBydW4gLXAgNTM6 NTMgLS1ybSBxdWF5LmlvL2xpYnBvZC90ZXN0aW1hZ2U6MjAyMjEwMTgNCj4+IEVycm9yOiByb290 bGVzc3BvcnQgY2Fubm90IGV4cG9zZSBwcml2aWxlZ2VkIHBvcnQgNTMsIHlvdSBjYW4gYWRkDQo+ PiAnbmV0LmlwdjQuaXBfdW5wcml2aWxlZ2VkX3BvcnRfc3RhcnQ9NTMnIHRvIC9ldGMvc3lzY3Rs LmNvbmYgKGN1cnJlbnRseQ0KPj4gMTAyNCksIG9yIGNob29zZSBhIGxhcmdlciBwb3J0IG51bWJl ciAoPj0gMTAyNCk6IGxpc3RlbiB0Y3AgMC4wLjAuMDo1MzoNCj4+IGJpbmQ6IHBlcm1pc3Npb24g ZGVuaWVkDQo+PiAkIHBvZG1hbiBydW4gLXAgODAwMDo4MDAwIC0tbmV0d29yayBzbGlycDRuZXRu c8KgIC0tcm0NCj4+IHF1YXkuaW8vbGlicG9kL3Rlc3RpbWFnZToyMDIyMTAxOA0KPj4gRXJyb3I6 IHJvb3RsZXNzcG9ydCBsaXN0ZW4gdGNwIDAuMC4wLjA6ODAwMDogYmluZDogYWRkcmVzcyBhbHJl YWR5IGluIHVzZQ0KPj4NCj4+IHBhc3RhOg0KPj4NCj4+ICQgcG9kbWFuIHJ1biAtcCA1Mzo1MyAt LW5ldHdvcmsgcGFzdGHCoCAtLXJtDQo+PiBxdWF5LmlvL2xpYnBvZC90ZXN0aW1hZ2U6MjAyMjEw MTgNCj4+IEVycm9yOiBwYXN0YSBmYWlsZWQgd2l0aCBleGl0IGNvZGUgMToNCj4+IE5vIGV4dGVy bmFsIHJvdXRhYmxlIGludGVyZmFjZSBmb3IgSVB2Ng0KPiBSZWFkaW5nIFsxXSBiZWxvdywgdGhp cyBzdHJpbmcgaXMgY29uc2lkZXJlZCBjb25mdXNpbmcgdG9vLCBldmVuIHRob3VnaA0KPiBJIGZl ZWwgdGhhdCBoaWRpbmcgaXQgY29uY2VwdHVhbGx5IGNsYXNoZXMgd2l0aCB0aGUgcmF0aW9uYWxl IG9mIHlvdXINCj4gdmVyeSByZXF1ZXN0LiBUaGF0IGlzLCBvbmUgbWlnaHQgYXJndWUgdGhhdCB0 aGUgdXNlciB3YW50ZWQgSVB2NiB0b28sDQo+IGJ1dCBpdCdzIG5vdCB3b3JraW5nLCBhbmQgd2Ug c2hvdWxkIHRlbGwgdGhlIHVzZXIuDQo+DQo+IEFueXdheSwgd2UgY2FuIGNoYW5nZSBpdCB0byBp bmZvKCkgYW5kIHJ1biBwYXN0YSB3aXRoIC1xIC8gLS1xdWlldC4NCj4gV291bGQgdGhhdCBoZWxw Pw0KPg0KPj4gRmFpbGVkIHRvIGJpbmQgYW55IHBvcnQgZm9yICctdCA1My01Mzo1My01MycsIGV4 aXRpbmcNCj4+ICQgcG9kbWFuIHJ1biAtcCA4MDAwOjgwMDAgLS1uZXR3b3JrIHBhc3RhwqAgLS1y bQ0KPj4gcXVheS5pby9saWJwb2QvdGVzdGltYWdlOjIwMjIxMDE4DQo+PiBFcnJvcjogcGFzdGEg ZmFpbGVkIHdpdGggZXhpdCBjb2RlIDE6DQo+PiBObyBleHRlcm5hbCByb3V0YWJsZSBpbnRlcmZh Y2UgZm9yIElQdjYNCj4+IEZhaWxlZCB0byBiaW5kIGFueSBwb3J0IGZvciAnLXQgODAwMC04MDAw OjgwMDAtODAwMCcsIGV4aXRpbmcNCj4+DQo+PiBJIHRoaW5rIHRoZSBhbnN3ZXIgb2Ygd2hhdCBp cyBtb3JlIGhlbHBmdWwgdG8gdXNlcnMgaXMgb2J2aW91cyBhbmQgdGhhdA0KPj4gaXNuJ3QganVz dCBteSBvcGluaW9uWzFdLg0KPiBTdXJlLCBJIHVuZGVyc3RhbmQsIGVzcGVjaWFsbHkgaW4gY2Fz ZSBvZiBhIHNpbmdsZSBwb3J0LiBUaGlzIGlzIGp1c3QNCj4gdGhlIGZpcnN0IHRpbWUgc29tZWJv ZHkgcmVwb3J0cyB0aGF0Lg0KPg0KPj4+IExldCBtZSBrbm93IGlmIGFueSBvZiB0aGlzIHdvdWxk IGFkZHJlc3MgeW91ciBwcm9ibGVtLCBJIGNhbiB3cml0ZSBhDQo+Pj4gcGF0Y2ggaW4gdGhlIG5l eHQgZGF5cyBpbiBjYXNlIChvciBmZWVsIGZyZWUgdG8gc3VibWl0IG9uZSkuDQo+PiBbMV0gaHR0 cHM6Ly9naXRodWIuY29tL2NvbnRhaW5lcnMvcG9kbWFuL3B1bGwvMjE1NjMjaXNzdWVjb21tZW50 LTE5MzcwMjQ2NDINCg0K