From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from codeconstruct.com.au (pi.codeconstruct.com.au [203.29.241.158]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A86EC30596D; Wed, 4 Mar 2026 01:13:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=203.29.241.158 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772586785; cv=none; b=IKeP1O4w1iurPWssUCUCY8TdCTr3X8SUgj0EQ81fPpNc3chfgtdBix99YxgenIlCSGV/IX62UIbXeQ9RKwSAzCK9d1M7RVBKhjGOlzVObi/NacB97AaPpjAt9OySgIXk7cikLhgYFFYC0O4BAwggUvC17Fr4HLvUO75uohF55rU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772586785; c=relaxed/simple; bh=jSEtLFlW2KW7ktkQ+ZLui/2ozn3ulBLlfLou/kxEBaU=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=hGCvaYWEHAeRmbbeO7Kfd4ss4vDivP0uSfoCWAeKG9X7YKDr3IRArGtDfKtlhph8CCX2i1UgE8f70QXg4fzzyp9B0beeBTlLkuchdDOsEVULVtaN/th1WTuwOMQV6JvcflNEVRa8mH18QyEqTjV/9+CieWCtJnW+AGYW52AEqZo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=codeconstruct.com.au; spf=pass smtp.mailfrom=codeconstruct.com.au; dkim=pass (2048-bit key) header.d=codeconstruct.com.au header.i=@codeconstruct.com.au header.b=K0DrDC/J; arc=none smtp.client-ip=203.29.241.158 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=codeconstruct.com.au Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=codeconstruct.com.au Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=codeconstruct.com.au header.i=@codeconstruct.com.au header.b="K0DrDC/J" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=codeconstruct.com.au; s=2022a; t=1772586774; bh=jSEtLFlW2KW7ktkQ+ZLui/2ozn3ulBLlfLou/kxEBaU=; h=Subject:From:To:Cc:Date:In-Reply-To:References; b=K0DrDC/J3lokggUaecka0esrARi3BAKrt6fTCTrTl+dXFRpp7PUWnRJYHsmgORKGm tIeKpEn9B8r7mVA5XsR32sDui7y15amyaa6/7myaND2MNI5vc259XZc5JSdk2UWMmw JInq00q6Cf8kex+I71W1eWHBpuNeHIXxEEn7vqcYSVwky+QDvuCh0sUxBGO9ZxbvV1 L/4mcz2Ud1qUQ+RVX6wvKHoXUZospu7tl2KgGfPjmb870ihxBHp7OZzpWtaNA+oZXc qLuSdVPB668m/qDzkbhybAJkvtD5fWsO9hSp2zQs6LgxO4+PcFlGCCDYwsoYEZzuAW ib5HXgAClYHYg== Received: from pecola.lan (unknown [159.196.93.152]) by mail.codeconstruct.com.au (Postfix) with ESMTPSA id 2C46C6016C; Wed, 4 Mar 2026 09:12:51 +0800 (AWST) Message-ID: Subject: Re: [net-next v32 2/2] mctp pcc: Implement MCTP over PCC Transport From: Jeremy Kerr To: Adam Young , Matt Johnston , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Sudeep Holla , Jonathan Cameron , Huisong Li Date: Wed, 04 Mar 2026 09:12:51 +0800 In-Reply-To: <20260303213649.237851-3-admiyo@os.amperecomputing.com> References: <20260303213649.237851-1-admiyo@os.amperecomputing.com> <20260303213649.237851-3-admiyo@os.amperecomputing.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.46.4-2+deb12u1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 SGkgQWRhbSwKClRoaXMgaXMgbG9va2luZyBwcmV0dHkgY29uY2lzZSBub3csIG5pY2Ugd29yay4g QSBmZXcgdGhpbmdzIGlubGluZToKCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21jdHAvTWFr ZWZpbGUgYi9kcml2ZXJzL25ldC9tY3RwL01ha2VmaWxlCj4gaW5kZXggYzM2MDA2ODQ5YTFlLi4w YTU5MTI5OWZmYTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9uZXQvbWN0cC9NYWtlZmlsZQo+ICsr KyBiL2RyaXZlcnMvbmV0L21jdHAvTWFrZWZpbGUKPiBAQCAtMSw0ICsxLDUgQEAKPiDCoG9iai0k KENPTkZJR19NQ1RQX1NFUklBTCkgKz0gbWN0cC1zZXJpYWwubwo+IMKgb2JqLSQoQ09ORklHX01D VFBfVFJBTlNQT1JUX0kyQykgKz0gbWN0cC1pMmMubwo+IMKgb2JqLSQoQ09ORklHX01DVFBfVFJB TlNQT1JUX0kzQykgKz0gbWN0cC1pM2Mubwo+ICtvYmotJChDT05GSUdfTUNUUF9UUkFOU1BPUlRf UENDKSArPSBtY3RwLXBjYy5vCj4gwqBvYmotJChDT05GSUdfTUNUUF9UUkFOU1BPUlRfVVNCKSAr PSBtY3RwLXVzYi5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1wY2MuYyBi L2RyaXZlcnMvbmV0L21jdHAvbWN0cC1wY2MuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMDAwMDAwLi5kMGU3Njk5ZWJlODIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJp dmVycy9uZXQvbWN0cC9tY3RwLXBjYy5jCj4gQEAgLTAsMCArMSwzMjIgQEAKPiArLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArLyoKPiArICogbWN0cC1wY2MuYyAtIERyaXZl ciBmb3IgTUNUUCBvdmVyIFBDQy4KPiArICogQ29weXJpZ2h0IChjKSAyMDI0LTIwMjUsIEFtcGVy ZSBDb21wdXRpbmcgTExDCgpNaW5vciwgYnV0IGlmIHlvdSBlbmQgdXAgcmUtcm9sbGluZzogLTIw MjYuCgo+ICsgKgo+ICsgKi8KPiArCj4gKy8qIEltcGxlbWVudGF0aW9uIG9mIE1DVFAgb3ZlciBQ Q0MgRE1URiBTcGVjaWZpY2F0aW9uIERTUDAyNTYKPiArICogaHR0cHM6Ly93d3cuZG10Zi5vcmcv c2l0ZXMvZGVmYXVsdC9maWxlcy9zdGFuZGFyZHMvZG9jdW1lbnRzL0RTUDAyOTJfMS4wLjBXSVA1 MC5wZGYKPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvYWNwaS5oPgo+ICsjaW5jbHVkZSA8 bGludXgvaHJ0aW1lci5oPgo+ICsjaW5jbHVkZSA8bGludXgvaWZfYXJwLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9pbml0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiArI2luY2x1ZGUg PGxpbnV4L21haWxib3hfY2xpZW50Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1f ZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9za2J1ZmYuaD4KPiArI2luY2x1ZGUgPGxpbnV4 L3N0cmluZy5oPgo+ICsKPiArI2luY2x1ZGUgPGFjcGkvYWNwaV9idXMuaD4KPiArI2luY2x1ZGUg PGFjcGkvYWNwaV9kcml2ZXJzLmg+Cj4gKyNpbmNsdWRlIDxhY3BpL2FjcmVzdHlwLmg+Cj4gKyNp bmNsdWRlIDxhY3BpL2FjdGJsLmg+Cj4gKyNpbmNsdWRlIDxhY3BpL3BjYy5oPgo+ICsjaW5jbHVk ZSA8bmV0L21jdHAuaD4KPiArI2luY2x1ZGUgPG5ldC9tY3RwZGV2aWNlLmg+Cj4gKwo+ICsjZGVm aW5lIE1DVFBfU0lHTkFUVVJFwqDCoMKgwqDCoMKgwqDCoMKgICJNQ1RQIgo+ICsjZGVmaW5lIE1D VFBfU0lHTkFUVVJFX0xFTkdUSMKgwqAgKHNpemVvZihNQ1RQX1NJR05BVFVSRSkgLSAxKQo+ICsj ZGVmaW5lIE1DVFBfTUlOX01UVcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgNjgKPiArI2RlZmluZSBQ Q0NfRFdPUkRfVFlQRcKgwqDCoMKgwqDCoMKgwqDCoCAweDBjCj4gKwo+ICtzdHJ1Y3QgbWN0cF9w Y2NfbWFpbGJveCB7Cj4gK8KgwqDCoMKgwqDCoMKgdTMyIGluZGV4Owo+ICvCoMKgwqDCoMKgwqDC oHN0cnVjdCBwY2NfbWJveF9jaGFuICpjaGFuOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBtYm94 X2NsaWVudCBjbGllbnQ7Cj4gK307Cj4gKwo+ICsvKiBUaGUgbmV0ZGV2IHN0cnVjdHVyZS4gT25l IG9mIHRoZXNlIHBlciBQQ0MgYWRhcHRlci4gKi8KPiArc3RydWN0IG1jdHBfcGNjX25kZXYgewo+ ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2Owo+ICvCoMKgwqDCoMKgwqDC oHN0cnVjdCBhY3BpX2RldmljZSAqYWNwaV9kZXZpY2U7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0 IG1jdHBfcGNjX21haWxib3ggaW5ib3g7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IG1jdHBfcGNj X21haWxib3ggb3V0Ym94Owo+ICt9Owo+ICsKPiArc3RhdGljIHZvaWQgbWN0cF9wY2NfY2xpZW50 X3J4X2NhbGxiYWNrKHN0cnVjdCBtYm94X2NsaWVudCAqY2wsIHZvaWQgKm1zc2cpCj4gK3sKPiAr wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYWNwaV9wY2N0X2V4dF9wY2Nfc2hhcmVkX21lbW9yeSBwY2Nf aGVhZGVyOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBtY3RwX3BjY19uZGV2ICptY3RwX3BjY19u ZGV2Owo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBtY3RwX3BjY19tYWlsYm94ICppbmJveDsKPiAr wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWN0cF9za2JfY2IgKmNiOwo+ICvCoMKgwqDCoMKgwqDCoHN0 cnVjdCBza19idWZmICpza2I7Cj4gK8KgwqDCoMKgwqDCoMKgaW50IHNpemU7Cj4gKwo+ICvCoMKg wqDCoMKgwqDCoG1jdHBfcGNjX25kZXYgPSBjb250YWluZXJfb2YoY2wsIHN0cnVjdCBtY3RwX3Bj Y19uZGV2LCBpbmJveC5jbGllbnQpOwo+ICvCoMKgwqDCoMKgwqDCoGluYm94ID0gJm1jdHBfcGNj X25kZXYtPmluYm94Owo+ICvCoMKgwqDCoMKgwqDCoHNpemUgPSBwY2NfbWJveF9xdWVyeV9ieXRl c19hdmFpbGFibGUoaW5ib3gtPmNoYW4pOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChzaXplID09IDAp Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsKCllvdXIgbmV3IHBjY19t Ym94X3F1ZXJ5X2J5dGVzX2F2YWlsYWJsZSgpIHJldHVybnMgLTEgb24gZXJyb3IsIGJ1dCB5b3UK ZG9uJ3QgaGFuZGxlIHRoYXQgaGVyZS4KCgo+ICvCoMKgwqDCoMKgwqDCoHNrYiA9IG5ldGRldl9h bGxvY19za2IobWN0cF9wY2NfbmRldi0+bmRldiwgc2l6ZSk7Cj4gK8KgwqDCoMKgwqDCoMKgaWYg KCFza2IpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X2RzdGF0c19yeF9k cm9wcGVkKG1jdHBfcGNjX25kZXYtPm5kZXYpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm47Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoHNrYl9wdXQo c2tiLCBzaXplKTsKPiArwqDCoMKgwqDCoMKgwqBza2ItPnByb3RvY29sID0gaHRvbnMoRVRIX1Bf TUNUUCk7Cj4gK8KgwqDCoMKgwqDCoMKgcGNjX21ib3hfcmVhZF9mcm9tX2J1ZmZlcihpbmJveC0+ Y2hhbiwgc2l6ZSwgc2tiLT5kYXRhKTsKPiArwqDCoMKgwqDCoMKgwqBkZXZfZHN0YXRzX3J4X2Fk ZChtY3RwX3BjY19uZGV2LT5uZGV2LCBza2ItPmxlbik7Cj4gK8KgwqDCoMKgwqDCoMKgc2tiX3Jl c2V0X21hY19oZWFkZXIoc2tiKTsKPiArwqDCoMKgwqDCoMKgwqBza2JfcHVsbChza2IsIHNpemVv ZihwY2NfaGVhZGVyKSk7CgpEbyB5b3Ugd2FudCB0byBjaGVjayB0aGF0IHRoZSBoZWFkZXIgZGVz Y3JpYmVzIGEgdmFsaWQgTUNUUC1vdmVyLVBDQwpwYWNrZXQ/Cgo+ICvCoMKgwqDCoMKgwqDCoHNr Yl9yZXNldF9uZXR3b3JrX2hlYWRlcihza2IpOwo+ICvCoMKgwqDCoMKgwqDCoGNiID0gX19tY3Rw X2NiKHNrYik7Cj4gK8KgwqDCoMKgwqDCoMKgY2ItPmhhbGVuID0gMDsKPiArwqDCoMKgwqDCoMKg wqBuZXRpZl9yeChza2IpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgbmV0ZGV2X3R4X3QgbWN0cF9wY2Nf dHgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCj4gK3sKPiAr wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYWNwaV9wY2N0X2V4dF9wY2Nfc2hhcmVkX21lbW9yeSAqcGNj X2hlYWRlcjsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWN0cF9wY2NfbmRldiAqbXBuZCA9IG5l dGRldl9wcml2KG5kZXYpOwo+ICvCoMKgwqDCoMKgwqDCoGludCBsZW4gPSBza2ItPmxlbjsKPiAr wqDCoMKgwqDCoMKgwqBpbnQgcmM7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJjID0gc2tiX2Nvd19o ZWFkKHNrYiwgc2l6ZW9mKCpwY2NfaGVhZGVyKSk7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKHJjKSB7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9kc3RhdHNfdHhfZHJvcHBlZChu ZGV2KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKga2ZyZWVfc2tiKHNrYik7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBORVRERVZfVFhfT0s7Cj4gK8Kg wqDCoMKgwqDCoMKgfQo+ICsKPiArwqDCoMKgwqDCoMKgwqBwY2NfaGVhZGVyID0gc2tiX3B1c2go c2tiLCBzaXplb2YoKnBjY19oZWFkZXIpKTsKPiArwqDCoMKgwqDCoMKgwqBwY2NfaGVhZGVyLT5z aWduYXR1cmUgPSBQQ0NfU0lHTkFUVVJFIHwgbXBuZC0+b3V0Ym94LmluZGV4Owo+ICvCoMKgwqDC oMKgwqDCoHBjY19oZWFkZXItPmZsYWdzID0gUENDX0NNRF9DT01QTEVUSU9OX05PVElGWTsKPiAr wqDCoMKgwqDCoMKgwqBtZW1jcHkoJnBjY19oZWFkZXItPmNvbW1hbmQsIE1DVFBfU0lHTkFUVVJF LCBNQ1RQX1NJR05BVFVSRV9MRU5HVEgpOwo+ICvCoMKgwqDCoMKgwqDCoHBjY19oZWFkZXItPmxl bmd0aCA9IGxlbiArIE1DVFBfU0lHTkFUVVJFX0xFTkdUSDsKPiArCj4gK8KgwqDCoMKgwqDCoMKg cmMgPSBtYm94X3NlbmRfbWVzc2FnZShtcG5kLT5vdXRib3guY2hhbi0+bWNoYW4sIHNrYik7Cj4g K8KgwqDCoMKgwqDCoMKgaWYgKHJjIDwgMCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBuZXRpZl9zdG9wX3F1ZXVlKG5kZXYpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gTkVUREVWX1RYX0JVU1k7CgpJZiB5b3UgcmV0dXJuIE5FVERFVl9UWF9CVVNZ IGhlcmUsIGFuZCB0aGUgY29yZSBkb2VzIGEgcmV0cmFuc21pdCwKeW91IHdpbGwgZW5kIHVwIHBy ZXBlbmRpbmcgYW5vdGhlciBoZWFkZXIuCgpKdXN0IHRvIGNvbmZpcm0gZnJvbSBlYXJsaWVyIGRp c2N1c3Npb25zOiB5b3UgaGF2ZSBubyB3YXkgdG8gZGV0ZXJtaW5lCnRoYXQgdGhlIGNoYW5uZWwg aXMgdW5hdmFpbGFibGUgaW4gYWR2YW5jZSwgcmlnaHQ/Cgo+ICvCoMKgwqDCoMKgwqDCoH0KPiAr Cj4gK8KgwqDCoMKgwqDCoMKgZGV2X2RzdGF0c190eF9hZGQobmRldiwgbGVuKTsKPiArwqDCoMKg wqDCoMKgwqByZXR1cm4gTkVUREVWX1RYX09LOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBtY3Rw X3BjY190eF9wcmVwYXJlKHN0cnVjdCBtYm94X2NsaWVudCAqY2wsIHZvaWQgKm1zc2cpCj4gK3sK PiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWN0cF9wY2NfbmRldiAqbWN0cF9wY2NfbmRldjsKPiAr wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWN0cF9wY2NfbWFpbGJveCAqb3V0Ym94Owo+ICvCoMKgwqDC oMKgwqDCoHN0cnVjdCBza19idWZmICpza2IgPSBtc3NnOwo+ICvCoMKgwqDCoMKgwqDCoGludCBs ZW5fc2VudDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgbWN0cF9wY2NfbmRldiA9IGNvbnRhaW5lcl9v ZihjbCwgc3RydWN0IG1jdHBfcGNjX25kZXYsIG91dGJveC5jbGllbnQpOwo+ICvCoMKgwqDCoMKg wqDCoG91dGJveCA9ICZtY3RwX3BjY19uZGV2LT5vdXRib3g7Cj4gKwo+ICvCoMKgwqDCoMKgwqDC oGlmICghc2tiKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gKwo+ ICvCoMKgwqDCoMKgwqDCoGxlbl9zZW50ID0gcGNjX21ib3hfd3JpdGVfdG9fYnVmZmVyKG91dGJv eC0+Y2hhbiwgc2tiLT5sZW4sIHNrYi0+ZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKGxlbl9z ZW50ID09IDApCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5ldGRldl9pbmZvKG1j dHBfcGNjX25kZXYtPm5kZXYswqAgInBhY2tldCBkcm9wcGVkIik7CgpZb3UgcHJvYmFibHkgZG9u J3Qgd2FudCBhIG5ldGRldl9pbmZvKCkgaGVyZSwgcGVyaGFwcyBuZXRkZXZfZGJnKCkuCgpPciwg Y291bGQgeW91IGluY3JlbWVudCB0aGUgdHhfZHJvcHBlZCBzdGF0PyBJIHNlZSB5b3UncmUgZG9p bmcgYWxsIHRoZQpzdGF0cyBhY2NvdW50aW5nIGluIHN0YXJ0X3htaXQgLSBJJ20gbm90IGZhbWls aWFyIHdpdGggdGhlIFBDQyBBUEksIGJ1dAp0aGVyZSBzZWVtIHRvIGJlIGZhaWx1cmUgcGF0aHMg cGFzdCB0aGF0IHBvaW50LiBJcyBpdCBwb3NzaWJsZSB0bwpkaXN0aW5ndWlzaCBiZXR3ZWVuIHN1 Y2Nlc3NmdWwgdHggYW5kIGRyb3BwZWQgdHggaW4gdGhlIHR4X2RvbmUKY2FsbGJhY2ssIGFuZCBk byB0aGUgYWNjb3VudGluZyB0aGVyZSwgcGVyaGFwcz8KCk9yIGlzIHRoaXMgYSB0cml2aWFsLWVu b3VnaCBjYXNlIChsZW4gPiBzaG1lbV9zaXplKSB0byBub3Qgd29ycnkgYWJvdXQKYWNjb3VudGlu Zz8KCkNoZWVycywKCgpKZXJlbXkK