From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: passt.top; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=IjnqOSsc; dkim-atps=neutral Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by passt.top (Postfix) with ESMTPS id 2BDA35A0274 for ; Mon, 20 Jan 2025 17:10:38 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1737389437; 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=ri3SMYvQPCeY1bR1GnymUd0egQws7tzEKq8qVlLHNGQ=; b=IjnqOSscbP47nTmDgZ1panCeE4oeqDGjnyro4jCyJa8kb4GKHUf/euvBV2+cYf6pztSEen dPSzzaM1B59FERtFiFifbg6jX1Aw7PHGPD1jvQ/J2FqANsTdQ714MBc35fWffA7frkIyAl PNG6hP7UISi/OB2t59wGC43m+1pHlr4= Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-68-I5v40wekMgWBkej50YcxVg-1; Mon, 20 Jan 2025 11:10:35 -0500 X-MC-Unique: I5v40wekMgWBkej50YcxVg-1 X-Mimecast-MFC-AGG-ID: I5v40wekMgWBkej50YcxVg Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-7b6fe99d179so1114632785a.2 for ; Mon, 20 Jan 2025 08:10:35 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737389435; x=1737994235; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ri3SMYvQPCeY1bR1GnymUd0egQws7tzEKq8qVlLHNGQ=; b=EgP71M4YkJNmRluQaSvAkTZ3OUhfEbenc2xchXkUr7MFaUo+VY2MjXA5fwm1HPfzaL LTeJV9RhY1/FdQhDHYjxgIQmVaavOfqhDjG8kHuSYRKIkNzYuQeMEFkx9aLdw0sCjrxK onAFE4ZrS47ATFF+BYksTuvO4C1Y8kwmttY+CXHv22z8E1zDoqKkCWNxwoC9tMLc9QtX 98FYUF/tNcU0/pu7rvXZCVOtGkF4HdEmPgBrocqNfHQvkNtRsxtp22/glGymIfNqi/Vs 9KaWo+p+uPJkgS+Vg0T5K+syPlpcW3eIz1VkmEAQO2AQwmNIFROEYBOfy4iVsa5liXXr 5HEA== X-Forwarded-Encrypted: i=1; AJvYcCUnQji4j//YJI/TIA+ymcE75ChgFpIAx4FGJhrXX2ZHNW5bLebGrsudq/omBkTM8Vy8Vsc1hhrcUso=@passt.top X-Gm-Message-State: AOJu0YwwDfRsFrq7lYf9K3eGVPEr3A4SOK2qtG23/2AbqGk7i2/kGbPb HFZe7JU5Qw0RSq8pd5jUnMY4NR9hmPtJeR9j7jHbhbv4xN6rEA4t4zrTpOuw+MncHstz/wrd3N3 9u2C70ssVWua4d0YrQ7GmhnAYFSFzDKIqUcCidF2eLq9Ln4ThPQ== X-Gm-Gg: ASbGncsRzQHiUgYqetq8NuCcbxwqMRqaMWnHVUz2XcX8cpQSuKDUSFdZ7SO0PzKpuBk DkD65l8DFKlgYsLh3BOijIb8jJ6DciWz9s62lNsrsr1lJQJEMorxeYpLTalJO6AmZt0hwTm8y54 lZ7KFx4mmLW38ee/yEx1ugFecYFqwSh4EZxkY4b7rCqdj6ELKqeRz+Y/fCkkn/ftw5Hpo2JXiPS l6kSbiEdE/oU8udxQWDYh8vNncQOkR/lX+NygKBYXst6W4uU4ePJKbi9pDuTLxfVz69 X-Received: by 2002:a05:620a:4252:b0:7b1:3bf5:11f8 with SMTP id af79cd13be357-7be6320a5efmr2224500985a.25.1737389435038; Mon, 20 Jan 2025 08:10:35 -0800 (PST) X-Google-Smtp-Source: AGHT+IFlpZ0W4K8TO5Ce8IJmPQUTs/oNxMtHzbVCB0Dhz2gxAltYaO9P+5ofPeTe3G0EQsVd/7SmRw== X-Received: by 2002:a05:620a:4252:b0:7b1:3bf5:11f8 with SMTP id af79cd13be357-7be6320a5efmr2224496985a.25.1737389434720; Mon, 20 Jan 2025 08:10:34 -0800 (PST) Received: from [10.0.0.215] ([24.225.235.209]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7be614dabeasm458117585a.86.2025.01.20.08.10.33 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 20 Jan 2025 08:10:34 -0800 (PST) Message-ID: Date: Mon, 20 Jan 2025 11:10:32 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [net,v2] tcp: correct handling of extreme memory squeeze From: Jon Maloy To: Neal Cardwell References: <20250117214035.2414668-1-jmaloy@redhat.com> In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: UwtuAfTu6TwcwzoLQ_RzwVj6TIdt0_nY3RdT8Y6sQkk_1737389435 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: K4CNCEODXUJLJSGSAWPRKYLFW47IXHIQ X-Message-ID-Hash: K4CNCEODXUJLJSGSAWPRKYLFW47IXHIQ X-MailFrom: jmaloy@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: netdev@vger.kernel.org, davem@davemloft.net, kuba@kernel.org, passt-dev@passt.top, sbrivio@redhat.com, lvivier@redhat.com, dgibson@redhat.com, eric.dumazet@gmail.com, edumazet@google.com, Menglong Dong 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: DQoNCk9uIDIwMjUtMDEtMjAgMDA6MDMsIEpvbiBNYWxveSB3cm90ZToNCj4gDQo+IA0KPiBPbiAy MDI1LTAxLTE4IDE1OjA0LCBOZWFsIENhcmR3ZWxsIHdyb3RlOg0KPj4gT24gRnJpLCBKYW4gMTcs IDIwMjUgYXQgNDo0MeKAr1BNIDxqbWFsb3lAcmVkaGF0LmNvbT4gd3JvdGU6DQo+Pj4NCj4+PiBG cm9tOiBKb24gTWFsb3kgPGptYWxveUByZWRoYXQuY29tPg0KPj4+DQo+Pj4gVGVzdGluZyB3aXRo IGlwZXJmMyB1c2luZyB0aGUgInBhc3RhIiBwcm90b2NvbCBzcGxpY2VyIGhhcyByZXZlYWxlZA0K Pj4+IGEgYnVnIGluIHRoZSB3YXkgdGNwIGhhbmRsZXMgd2luZG93IGFkdmVydGlzaW5nIGluIGV4 dHJlbWUgbWVtb3J5DQo+Pj4gc3F1ZWV6ZSBzaXR1YXRpb25zLg0KPj4+DQo+Pj4gVW5kZXIgbWVt b3J5IHByZXNzdXJlLCBhIHNvY2tldCBlbmRwb2ludCBtYXkgdGVtcG9yYXJpbHkgYWR2ZXJ0aXNl DQo+Pj4gYSB6ZXJvLXNpemVkIHdpbmRvdywgYnV0IHRoaXMgaXMgbm90IHN0b3JlZCBhcyBwYXJ0 IG9mIHRoZSBzb2NrZXQgZGF0YS4NCj4+PiBUaGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIGlzIHRo YXQgaXQgaXMgY29uc2lkZXJlZCBhIHRlbXBvcmFyeSBzZXR0aW5nDQo+Pj4gd2hpY2ggc2hvdWxk bid0IGluZmx1ZW5jZSBhbnkgZnVydGhlciBjYWxjdWxhdGlvbnMuDQo+Pj4NCj4+PiBIb3dldmVy LCBpZiB3ZSBoYXBwZW4gdG8gc3RhbGwgYXQgYW4gdW5mb3J0dW5hdGUgdmFsdWUgb2YgdGhlIGN1 cnJlbnQNCj4+PiB3aW5kb3cgc2l6ZSwgdGhlIGFsZ29yaXRobSBzZWxlY3RpbmcgYSBuZXcgdmFs dWUgd2lsbCBjb25zaXN0ZW50bHkgZmFpbA0KPj4+IHRvIGFkdmVydGlzZSBhIG5vbi16ZXJvIHdp bmRvdyBvbmNlIHdlIGhhdmUgZnJlZWQgdXAgZW5vdWdoIG1lbW9yeS4NCj4+DQo+PiBUaGUgImlm IHdlIGhhcHBlbiB0byBzdGFsbCBhdCBhbiB1bmZvcnR1bmF0ZSB2YWx1ZSBvZiB0aGUgY3VycmVu dA0KPj4gd2luZG93IHNpemUiIHBocmFzZSBpcyBhIGxpdHRsZSB2YWd1ZS4uLiA6LSkgRG8geW91 IGhhdmUgYSBzZW5zZSBvZg0KPj4gd2hhdCBtaWdodCBjb3VudCBhcyAidW5mb3J0dW5hdGUiIGhl cmU/IFRoYXQgbWlnaHQgaGVscCBpbiBjcmFmdGluZyBhDQo+PiBwYWNrZXRkcmlsbCB0ZXN0IHRv IHJlcHJvZHVjZSB0aGlzIGFuZCBoYXZlIGFuIGF1dG9tYXRlZCByZWdyZXNzaW9uDQo+PiB0ZXN0 Lg0KPiANCj4gT2J2aW91c2x5LCBpdCBoYXBwZW5zIHdoZW4gdGhlIGZvbGxvd2luZyBjb2RlIHNu aXBwZXQgaW4NCj4gDQo+IF9fdGNwX2NsZWFudXBfcmJ1ZigpIHsNCj4gIMKgwqAgWy4uLi5dDQo+ ICDCoMKgIGlmIChjb3BpZWQgPiAwICYmICF0aW1lX3RvX2FjayAmJg0KPiAgwqDCoMKgwqDCoMKg ICEoc2stPnNrX3NodXRkb3duICYgUkNWX1NIVVRET1dOKSkgew0KPiAgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBfX3UzMiByY3Zfd2luZG93X25vdyA9IHRjcF9yZWNlaXZlX3dpbmRvdyh0cCk7DQo+ IA0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBPcHRpbWl6ZSwgX190Y3Bfc2VsZWN0X3dp bmRvdygpIGlzIG5vdCBjaGVhcC4gKi8NCj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKDIq cmN2X3dpbmRvd19ub3cgPD0gdHAtPndpbmRvd19jbGFtcCkgew0KPiAgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIF9fdTMyIG5ld193aW5kb3cgPSBfX3RjcF9zZWxlY3Rfd2luZG93KHNr KTsNCj4gDQo+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogU2VuZCBBQ0sgbm93 LCBpZiB0aGlzIHJlYWQgZnJlZWQgbG90cyBvZiBzcGFjZQ0KPiAgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKiBpbiBvdXIgYnVmZmVyLiBDZXJ0YWlubHksIG5ld193aW5kb3cgaXMg bmV3IHdpbmRvdy4NCj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogV2UgY2Fu IGFkdmVydGlzZSBpdCBub3csIGlmIGl0IGlzIG5vdCBsZXNzIHRoYW4NCj4gIMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICogY3VycmVudCBvbmUuDQo+ICDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAqICJMb3RzIiBtZWFucyAiYXQgbGVhc3QgdHdpY2UiIGhlcmUuDQo+ ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPiAgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGlmIChuZXdfd2luZG93ICYmIG5ld193aW5kb3cgPj0gMiAqIHJjdl93 aW5kb3dfbm93KQ0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB0aW1lX3RvX2FjayA9IHRydWU7DQo+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+ICDC oMKgwqAgfQ0KPiAgwqDCoMKgIFsuLi4uXQ0KPiB9DQo+IA0KPiB5aWVsZHMgdGltZV90b19hY2sg PSBmYWxzZSwgaS5lLsKgIF9fdGNwX3NlbGVjdF93aW5kb3coc2spIHJldHVybnMNCj4gYSB2YWx1 ZSBuZXdfd2luZG93wqAgPCAoMiAqwqAgdGNwX3JlY2VpdmVfd2luZG93KHRwKSkuDQo+IA0KPiBJ biBteSBsb2cgSSBoYXZlIGZvciBicmV2aXR5IHVzZWQgdGhlIGZvbGxvd2luZyBuYW1lczoNCj4g DQo+IHdpbl9ub3c6IHNhbWUgYXMgcmN2X3dpbmRvd19ub3cNCj4gIMKgwqDCoCAoPSB0Y3BfcmVj ZWl2ZV93aW5kb3codHApLA0KPiAgwqDCoMKgwqAgPSB0cC0+cmN2X3d1cCArIHRwLT5yY3Zfd25k IC0gdHAtPnJjdl9ueHQsDQo+ICDCoMKgwqDCoCA9IDI2NTQ2OTIwMCArIDI2MjE0NCAtwqAgMjY1 NjAwMTYwLA0KPiAgwqDCoMKgwqAgPSAxMzExODQpDQo+IA0KPiBuZXdfd2luOiBzYW1lIGFzIG5l d193aW5kb3cNCj4gIMKgwqDCoMKgICg9IF9fdGNwX3NlbGVjdF93aW5kb3coc2spLA0KPiAgwqDC oMKgwqDCoCA9IDAgZmlyc3QgdGltZSwgbGF0ZXIgMjYyMTQ0ICkNCj4gDQo+IHJjdl93bmQ6IHNh bWUgYXMgdHAtPnJjdl93bmQsDQo+ICDCoMKgwqDCoMKgICg9MjYyMTQ0KQ0KPiANCj4gV2Ugc2Vl IHRoYXQgYWx0aG91Z2ggdGhlIGxhc3QgdGVzdCBhY3R1YWxseSBpcyBwcmV0dHkgY2xvc2UNCj4g KDI2MjE0NCA+PSAyNjIzNjggPyA9PiBmYWxzZSkgaXQgaXMgbm90IGNsb3NlIGVub3VnaC4NCj4g DQo+IA0KPiBXZSBhbHNvIG5vdGljZSB0aGF0DQo+ICh0cC0+cmN2X254dCAtIHRwLT5yY3Zfd3Vw KSA9ICgyNjU2MDAxNjAgLSAyNjU0NjkyMDApID0gMTMwOTYwLg0KPiAxMzA5NjAgPCB0cC0+cmN2 X3duZCAvIDIsIHNvIHRoZSBsYXN0IHRlc3QgaW4gX190Y3BfY2xlYW51cF9yYnVmKCk6DQo+IChu ZXdfd2luZG93ID49IDIgKiByY3Zfd2luZG93X25vdykgd2lsbCBhbHdheXMgYmUgZmFsc2UuDQo+ IA0KPiANCj4gVG9vIG1lIGl0IGxvb2tzIGxpa2UgX190Y3Bfc2VsZWN0X3dpbmRvdyhzaykgZG9l c24ndCBhdCBhbGwgdGFrZSB0aGUgDQo+IGZyZWVkLXVwIG1lbW9yeSBpbnRvIGFjY291bnQgd2hl biBjYWxjdWxhdGluZyBhIG5ldyB3aW5kb3cuIEkgaGF2ZW4ndA0KPiBsb29rZWQgaW50byB3aHkg dGhhdCBpcyBoYXBwZW5pbmcuDQo+IA0KPj4NCj4+PiBUaGlzIG1lYW5zIHRoYXQgdGhpcyBzaWRl J3Mgbm90aW9uIG9mIHRoZSBjdXJyZW50IHdpbmRvdyBzaXplIGlzDQo+Pj4gZGlmZmVyZW50IGZy b20gdGhlIG9uZSBsYXN0IGFkdmVydGlzZWQgdG8gdGhlIHBlZXIsIGNhdXNpbmcgdGhlIGxhdHRl cg0KPj4+IHRvIG5vdCBzZW5kIGFueSBkYXRhIHRvIHJlc29sdmUgdGhlIHNpdHV0aW9uLg0KPj4N Cj4+IFNpbmNlIHRoZSBwZWVyIGxhc3Qgc2F3IGEgemVybyByZWNlaXZlIHdpbmRvdyBhdCB0aGUg dGltZSBvZiB0aGUNCj4+IG1lbW9yeS1wcmVzc3VyZSBkcm9wLCBzaG91bGRuJ3QgdGhlIHBlZXIg YmUgc2VuZGluZyByZXBlYXRlZCB6ZXJvDQo+PiB3aW5kb3cgcHJvYmVzLCBhbmQgc2hvdWxkbid0 IHRoZSBsb2NhbCBob3N0IHJlc3BvbmQgdG8gYSBaV1Agd2l0aCBhbg0KPj4gQUNLIHdpdGggdGhl IGNvcnJlY3Qgbm9uLXplcm8gd2luZG93Pw0KPiANCj4gSXQgc2hvdWxkLCBidXQgYXQgdGhlIG1v bWVudCB3aGVuIEkgZm91bmQgdGhpcyBidWcgdGhlIHBlZXIgc3RhY2sgd2FzIA0KPiBub3QgdGhl IExpbnV4IGtlcm5lbCBzdGFjaywgYnV0IG9uZSB3ZSBkZXZlbG9wIGZvciBvdXIgb3duIHB1cnBv c2UuIFdlIA0KPiBmaXhlZCB0aGF0IGxhdGVyLCBidXQgaXQgc3RpbGwgbWVhbnMgdGhhdCB0cmFm ZmljIHN0b3BzIGZvciBhIGNvdXBsZSBvZiANCj4gc2Vjb25kcyBub3cgYW5kIHRoZW4gYmVmb3Jl IHRoZSB0aW1lciByZXN0YXJ0cyB0aGUgZmxvdy4gVGhpcyBoYXBwZW5zDQo+IHRvbyBvZnRlbiBm b3IgY29tZm9ydCBpbiBvdXIgdXNhZ2Ugc2NlbmFyaW9zLg0KPiBXZSBjYW4gb2YgY291cnNlIGJs YW1lIHRoZSB0aGUgcGVlciBzdGFjaywgYnV0IEkgc3RpbGwgZmVlbCB0aGlzIGlzIGENCj4gYnVn LCBhbmQgdGhhdCBpdCBjb3VsZCBiZSBoYW5kbGVkIGJldHRlciBieSB0aGUga2VybmVsIHN0YWNr Lg0KPj4NCj4+IERvIHlvdSBoYXBwZW4gdG8gaGF2ZSBhIHRjcGR1bXAgLnBjYXAgb2Ygb25lIG9m IHRoZXNlIGNhc2VzIHRoYXQgeW91IA0KPj4gY2FuIHNoYXJlPw0KPiANCj4gSSBoYWQgb25lLCBh bHRob3VnaCBub3QgZm9yIHRoaXMgcGFydGljdWxhciBydW4sIGFuZCBJIGNhbm5vdCBmaW5kIGl0 IA0KPiByaWdodCBub3cuIEkgd2lsbCBjb250aW51ZSBsb29raW5nIG9yIG1ha2UgYSBuZXcgb25l LiBJcyB0aGVyZSBzb21lIA0KPiBzaGFyZWQgc3BhY2UgSSBjYW4gcHV0IGl0Pw0KDQpIZXJlIGl0 IGlzLiBMb29rIGF0IGZyYW1lICMxMDY3Lg0KDQpodHRwczovL3Bhc3N0LnRvcC9zdGF0aWMvaXBl cmYzX2pvbl96ZXJvX3dpbmRvd19jdXQucGNhcA0KPiANCj4+DQo+Pj4gVGhlIHByb2JsZW0gb2Nj dXJzIG9uIHRoZSBpcGVyZjMgc2VydmVyIHNpZGUsIGFuZCB0aGUgc29ja2V0IGluIHF1ZXN0aW9u DQo+Pj4gaXMgYSBjb21wbGV0ZWx5IHJlZ3VsYXIgc29ja2V0IHdpdGggdGhlIGRlZmF1bHQgc2V0 dGluZ3MgZm9yIHRoZQ0KPj4+IGZlZG9yYTQwIGtlcm5lbC4gV2UgZG8gbm90IHVzZSBTT19QRUVL IG9yIFNPX1JDVkJVRiBvbiB0aGUgc29ja2V0Lg0KPj4+DQo+Pj4gVGhlIGZvbGxvd2luZyBleGNl cnB0IG9mIGEgbG9nZ2luZyBzZXNzaW9uLCB3aXRoIG93biBjb21tZW50cyBhZGRlZCwNCj4+PiBz aG93cyBtb3JlIGluIGRldGFpbCB3aGF0IGlzIGhhcHBlbmluZzoNCj4+Pg0KPj4+IC8vwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdGNwX3Y0X3JjdigtPikNCj4+PiAvL8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB0Y3BfcmN2X2VzdGFibGlzaGVkKC0+KQ0KPj4+IFs1MjAxPC0+Mzky MjJdOsKgwqDCoMKgID09PT0gQWN0aXZhdGluZyBsb2cgQCBuZXQvaXB2NC90Y3BfaW5wdXQuYy8g DQo+Pj4gdGNwX2RhdGFfcXVldWUoKS81MjU3ID09PT0NCj4+PiBbNTIwMTwtPjM5MjIyXTrCoMKg wqDCoCB0Y3BfZGF0YV9xdWV1ZSgtPikNCj4+PiBbNTIwMTwtPjM5MjIyXTrCoMKgwqDCoMKgwqDC oCBEUk9QUElORyBza2IgWzI2NTYwMDE2MC4uMjY1NjY1NjQwXSwgcmVhc29uOiANCj4+PiBTS0Jf RFJPUF9SRUFTT05fUFJPVE9fTUVNDQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBbcmN2X254dCAyNjU2MDAxNjAsIHJjdl93bmQgMjYyMTQ0LCBzbnRf YWNrIA0KPj4+IDI2NTQ2OTIwMCwgd2luX25vdyAxMzExODRdDQo+Pg0KPj4gV2hhdCBpcyAid2lu X25vdyI/IFRoYXQgZG9lc24ndCBzZWVtIHRvIGNvcnJlc3BvbmQgdG8gYW55IHZhcmlhYmxlDQo+ PiBuYW1lIGluIHRoZSBMaW51eCBzb3VyY2UgdHJlZS4gDQo+IA0KPiBTZWUgYWJvdmUuDQo+IA0K PiAgwqBDYW4gdGhpcyBiZSByZW5hbWVkIHRvIHRoZQ0KPj4gdGNwX3NlbGVjdF93aW5kb3coKSB2 YXJpYWJsZSBpdCBpcyBwcmludGluZywgbGlrZSAiY3VyX3dpbiIgb3INCj4+ICJlZmZlY3RpdmVf d2luIiBvciAibmV3X3dpbiIsIGV0Yz8NCj4+DQo+PiBPciBwZXJoYXBzIHlvdSBjYW4gYXR0YWNo IHlvdXIgZGVidWdnaW5nIHBhdGNoIGluIHNvbWUgZW1haWwgdGhyZWFkPyBJDQo+PiBhZ3JlZSB3 aXRoIEVyaWMgdGhhdCB0aGVzZSBkZWJ1ZyBkdW1wcyBhcmUgYSBsaXR0bGUgaGFyZCB0byBwYXJz ZQ0KPj4gd2l0aG91dCBzZWVpbmcgdGhlIHBhdGNoIHRoYXQgYWxsb3dzIHVzIHRvIHVuZGVyc3Rh bmQgd2hhdCBzb21lIG9mDQo+PiB0aGVzZSBmaWVsZHMgYXJlLi4uDQo+Pg0KPj4gSSBhZ3JlZSB3 aXRoIEVyaWMgdGhhdCBwcm9iYWJseSB0cC0+cHJlZF9mbGFncyBzaG91bGQgYmUgY2xlYXJlZCwg YW5kDQo+PiBhIHBhY2tldGRyaWxsIHRlc3QgZm9yIHRoaXMgd291bGQgYmUgc3VwZXItaGVscGZ1 bC4NCj4gDQo+IEkgbXVzdCBhZG1pdCBJIGhhdmUgbmV2ZXIgdXNlZCBwYWNrZXRkcmlsbCwgYnV0 IEkgY2FuIG1ha2UgYW4gZWZmb3J0Lg0KDQpJIGhlYXIgZnJvbSBvdGhlciBzb3VyY2VzIHRoYXQg eW91IGNhbm5vdCBmb3JjZSBhIG1lbW9yeSBleGhhdXN0aW9uIHdpdGgNCnBhY2tldGRyaWxsIGFu eXdheSwgc28gdGhpcyBzb3VuZHMgbGlrZSBhIHBvaW50bGVzcyBleGVyY2lzZS4NCg0KLy8vam9u DQoNCj4gDQo+IC8vL2pvbg0KPiANCj4+DQo+PiB0aGFua3MsDQo+PiBuZWFsDQo+Pg0KPiANCg0K