From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from out0.migadu.com (out0.migadu.com [IPv6:2001:41d0:2:267::]) by mail.toke.dk (Postfix) with ESMTPS id 2F2359B5E1E for ; Wed, 9 Nov 2022 19:22:22 +0100 (CET) Authentication-Results: mail.toke.dk; dkim=pass (1024-bit key; unprotected) header.d=linux.dev header.i=@linux.dev header.a=rsa-sha256 header.s=key1 header.b=S0xfJz/6 Message-ID: <5a23b856-88a3-a57a-2191-b673f4160796@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1668018140; 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=PfObcJDPf5gEmYlvJlE9NKgi68kSqcyEYtXQfgjzd4Q=; b=S0xfJz/6hcuQo4rMiSyxO+9ePlVkWfpoF9B5A1BlpdgUSqhFTddqAOMUSVSmU0zEtDfIve O4XgyubS9/xderFMaGJ8Dh5eKXEszZ78e588H063Y6MxiWLcitYk55s+LXMUTAK0ME5ITA pajRF/OaIawTuSfYO/p5Rhn6C1w2gSw= Date: Wed, 9 Nov 2022 10:22:11 -0800 MIME-Version: 1.0 Content-Language: en-US To: =?UTF-8?Q?Toke_H=c3=b8iland-J=c3=b8rgensen?= References: <20221104032532.1615099-1-sdf@google.com> <20221104032532.1615099-7-sdf@google.com> <187e89c3-d7de-7bec-c72e-d9d6eb5bcca0@linux.dev> <9a8fefe4-2fcb-95b7-cda0-06509feee78e@linux.dev> <6f57370f-7ec3-07dd-54df-04423cab6d1f@linux.dev> <87leokz8lq.fsf@toke.dk> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Martin KaFai Lau In-Reply-To: <87leokz8lq.fsf@toke.dk> Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 X-Migadu-Flow: FLOW_OUT Message-ID-Hash: 36YD6ZEC3ZPOFVJKYEEEXVBZ63T26TOR X-Message-ID-Hash: 36YD6ZEC3ZPOFVJKYEEEXVBZ63T26TOR X-MailFrom: martin.lau@linux.dev 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: Stanislav Fomichev , ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, song@kernel.org, yhs@fb.com, john.fastabend@gmail.com, kpsingh@kernel.org, haoluo@google.com, jolsa@kernel.org, David Ahern , Jakub Kicinski , Willem de Bruijn , Jesper Dangaard Brouer , Anatoly Burakov , Alexander Lobakin , Magnus Karlsson , Maryam Tahhan , xdp-hints@xdp-project.net, netdev@vger.kernel.org, bpf@vger.kernel.org X-Mailman-Version: 3.3.6 Precedence: list Subject: [xdp-hints] Re: [RFC bpf-next v2 06/14] xdp: Carry over xdp metadata into skb context List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: T24gMTEvOS8yMiAzOjEwIEFNLCBUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gd3JvdGU6DQo+IFNu aXBwaW5nIGEgYml0IG9mIGNvbnRleHQgdG8gcmVwbHkgdG8gdGhpcyBiaXQ6DQo+IA0KPj4+Pj4g Q2FuIHRoZSB4ZHAgcHJvZyBzdGlsbCBjaGFuZ2UgdGhlIG1ldGFkYXRhIHRocm91Z2ggeGRwLT5k YXRhX21ldGE/IHRiaCwgSSBhbSBub3QNCj4+Pj4+IHN1cmUgaXQgaXMgc29saWQgZW5vdWdoIGJ5 IGFza2luZyB0aGUgeGRwIHByb2cgbm90IHRvIHVzZSB0aGUgc2FtZSByYW5kb20gbnVtYmVyDQo+ Pj4+PiBpbiBpdHMgb3duIG1ldGFkYXRhICsgbm90IHRvIGNoYW5nZSB0aGUgbWV0YWRhdGEgdGhy b3VnaCB4ZHAtPmRhdGFfbWV0YSBhZnRlcg0KPj4+Pj4gY2FsbGluZyBicGZfeGRwX21ldGFkYXRh X2V4cG9ydF90b19za2IoKS4NCj4+Pj4NCj4+Pj4gV2hhdCBkbyB5b3UgdGhpbmsgdGhlIHVzZWNh c2UgaGVyZSBtaWdodCBiZT8gT3IgYXJlIHlvdSBzdWdnZXN0aW5nIHdlDQo+Pj4+IHJlamVjdCBm dXJ0aGVyIGFjY2VzcyB0byBkYXRhX21ldGEgYWZ0ZXINCj4+Pj4gYnBmX3hkcF9tZXRhZGF0YV9l eHBvcnRfdG9fc2tiIHNvbWVob3c/DQo+Pj4+DQo+Pj4+IElmIHdlIHdhbnQgdG8gbGV0IHRoZSBw cm9ncmFtcyBvdmVycmlkZSBzb21lIG9mIHRoaXMNCj4+Pj4gYnBmX3hkcF9tZXRhZGF0YV9leHBv cnRfdG9fc2tiKCkgbWV0YWRhdGEsIGl0IGZlZWxzIGxpa2Ugd2UgY2FuIGFkZA0KPj4+PiBtb3Jl IGtmdW5jcyBpbnN0ZWFkIG9mIGV4cG9zaW5nIHRoZSBsYXlvdXQ/DQo+Pj4+DQo+Pj4+IGJwZl94 ZHBfbWV0YWRhdGFfZXhwb3J0X3RvX3NrYihjdHgpOw0KPj4+PiBicGZfeGRwX21ldGFkYXRhX2V4 cG9ydF9za2JfaGFzaChjdHgsIDEyMzQpOw0KPiANCj4gVGhlcmUgYXJlIHNldmVyYWwgdXNlIGNh c2VzIGZvciBuZWVkaW5nIHRvIGFjY2VzcyB0aGUgbWV0YWRhdGEgYWZ0ZXINCj4gY2FsbGluZyBi cGZfeGRwX21ldGRhdGFfZXhwb3J0X3RvX3NrYigpOg0KPiANCj4gLSBBY2Nlc3NpbmcgdGhlIG1l dGFkYXRhIGFmdGVyIHJlZGlyZWN0IChpbiBhIGNwdW1hcCBvciBkZXZtYXAgcHJvZ3JhbSwNCj4g ICAgb3Igb24gYSB2ZXRoIGRldmljZSkNCj4gLSBUcmFuc2ZlcnJpbmcgdGhlIHBhY2tldCttZXRh ZGF0YSB0byBBRl9YRFANCmZ3aXcsIHRoZSB4ZHAgcHJvZyBjb3VsZCBhbHNvIGJlIG1vcmUgc2Vs ZWN0aXZlIGFuZCBvbmx5IHN0b3JlcyBvbmUgb2YgdGhlIGhpbnRzIA0KaW5zdGVhZCBvZiB0aGUg d2hvbGUgJ3N0cnVjdCB4ZHBfdG9fc2tiX21ldGFkYXRhJy4NCg0KPiAtIFJldHVybmluZyBYRFBf UEFTUywgYnV0IGFjY2Vzc2luZyBzb21lIG9mIHRoZSBtZXRhZGF0YSBmaXJzdCAod2hldGhlcg0K PiAgICB0byByZWFkIG9yIGNoYW5nZSBpdCkNCj4gDQo+IFRoZSBsYXN0IG9uZSBjb3VsZCBiZSBz b2x2ZWQgYnkgY2FsbGluZyBhZGRpdGlvbmFsIGtmdW5jcywgYnV0IHRoYXQNCj4gd291bGQgYmUg bGVzcyBlZmZpY2llbnQgdGhhbiBqdXN0IGRpcmVjdGx5IGVkaXRpbmcgdGhlIHN0cnVjdCB3aGlj aA0KPiB3aWxsIGJlIGNhY2hlLWhvdCBhZnRlciB0aGUgaGVscGVyIHJldHVybnMuDQoNClllYWgs IGl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGRpcmVjdGx5IHdyaXRlIGlmIHBvc3NpYmxlLiAgSSB0 aGluayB0aGlzIHNldCANCmFsbG93cyB0aGUgZGlyZWN0IHJlYWRpbmcgYW5kIHdyaXRpbmcgYWxy ZWFkeSB0aHJvdWdoIGRhdGFfbWV0YSAoYXMgYSBfdTggKikuDQoNCj4gDQo+IEFuZCB5ZWFoLCB0 aGlzIHdpbGwgYWxsb3cgdGhlIFhEUCBwcm9ncmFtIHRvIGluamVjdCBhcmJpdHJhcnkgbWV0YWRh dGENCj4gaW50byB0aGUgbmV0c3RhY2s7IGJ1dCBpdCBjYW4gYWxyZWFkeSBpbmplY3QgYXJiaXRy YXJ5ICpwYWNrZXQqIGRhdGENCj4gaW50byB0aGUgc3RhY2ssIHNvIG5vdCBzdXJlIGlmIHRoaXMg aXMgbXVjaCBvZiBhbiBhZGRpdGlvbmFsIHJpc2s/IElmIGl0DQo+IGRvZXMgbGVhZCB0byB0cml2 aWFsIGNyYXNoZXMsIHdlIHNob3VsZCBwcm9iYWJseSBoYXJkZW4gdGhlIHN0YWNrDQo+IGFnYWlu c3QgdGhhdD8NCj4gDQo+IEFzIGZvciB0aGUgcmFuZG9tIG51bWJlciwgSmVzcGVyIGFuZCBJIGRp c2N1c3NlZCByZXBsYWNpbmcgdGhpcyB3aXRoIHRoZQ0KPiBzYW1lIEJURi1JRCBzY2hlbWUgdGhh dCBoZSB3YXMgdXNpbmcgaW4gaGlzIHBhdGNoIHNlcmllcy4gSS5lLiwgaW5zdGVhZA0KPiBvZiBq dXN0IHB1dHRpbmcgaW4gYSByYW5kb20gbnVtYmVyLCB3ZSBpbnNlcnQgdGhlIEJURiBJRCBvZiB0 aGUgbWV0YWRhdGENCj4gc3RydWN0IGF0IHRoZSBlbmQgb2YgaXQuIFRoaXMgd2lsbCBhbGxvdyB1 cyB0byBzdXBwb3J0IG11bHRpcGxlDQo+IGRpZmZlcmVudCBmb3JtYXRzIGluIHRoZSBmdXR1cmUg KG5vdCBqdXN0IGNoYW5naW5nIHRoZSBsYXlvdXQsIGJ1dA0KPiBoYXZpbmcgbXVsdGlwbGUgc2lt dWx0YW5lb3VzIGZvcm1hdHMgaW4gdGhlIHNhbWUga2VybmVsIGltYWdlKSwgaW4gY2FzZQ0KPiB3 ZSBydW4gb3V0IG9mIHNwYWNlLg0KDQpUaGlzIHNlZW1zIGEgYml0IGh5cG90aGV0aWNhbC4gIEhv dyBtdWNoIGhlYWRyb29tIGRvZXMgaXQgdXN1YWxseSBoYXZlIGZvciB0aGUgDQp4ZHAgcHJvZz8g IFBvdGVudGlhbGx5IHRoZSBoaW50cyBjYW4gdXNlIGFsbCB0aGUgcmVtYWluaW5nIHNwYWNlIGxl ZnQgYWZ0ZXIgdGhlIA0KaGVhZGVyIGVuY2FwIGFuZCB0aGUgY3VycmVudCBicGZfeGRwX2FkanVz dF9tZXRhKCkgdXNhZ2U/DQoNCj4gDQo+IFdlIHNob3VsZCBwcm9iYWJseSBhbHNvIGhhdmUgYSBm bGFnIHNldCBvbiB0aGUgeGRwX2ZyYW1lIHNvIHRoZSBzdGFjaw0KPiBrbm93cyB0aGF0IHRoZSBt ZXRhZGF0YSBhcmVhIGNvbnRhaW5zIHJlbGV2YW50LXRvLXNrYiBkYXRhLCB0byBndWFyZA0KPiBh Z2FpbnN0IGFuIFhEUCBwcm9ncmFtIGFjY2lkZW50YWxseSBoaXR0aW5nIHRoZSAibWFnaWMgbnVt YmVyIiAoQlRGX0lEKQ0KPiBpbiB1bnJlbGF0ZWQgc3R1ZmYgaXQgcHV0cyBpbnRvIHRoZSBtZXRh ZGF0YSBhcmVhLg0KDQpZZWFoLCBJIHRoaW5rIGhhdmluZyBhIGZsYWcgaXMgdXNlZnVsLiAgVGhl IGZsYWcgd2lsbCBiZSBzZXQgYXQgeGRwX2J1ZmYgYW5kIA0KdGhlbiB0cmFuc2ZlciB0byB0aGUg eGRwX2ZyYW1lPw0KDQo+IA0KPj4gQWZ0ZXIgcmUtcmVhZGluZyBwYXRjaCA2LCBoYXZlIGFub3Ro ZXIgcXVlc3Rpb24uIFRoZSAndm9pZA0KPj4gYnBmX3hkcF9tZXRhZGF0YV9leHBvcnRfdG9fc2ti KCk7JyBmdW5jdGlvbiBzaWduYXR1cmUuIFNob3VsZCBpdCBhdA0KPj4gbGVhc3QgcmV0dXJuIG9r L2Vycj8gb3IgZXZlbiByZXR1cm4gYSAnc3RydWN0IHhkcF90b19za2JfbWV0YWRhdGEgKicNCj4+ IHBvaW50ZXIgYW5kIHRoZSB4ZHAgcHJvZyBjYW4gZGlyZWN0bHkgcmVhZCAob3IgZXZlbiB3cml0 ZSkgaXQ/DQo+IA0KPiBIbW0sIEknbSBub3Qgc3VyZSByZXR1cm5pbmcgYSBmYWlsdXJlIG1ha2Vz IHNlbnNlPyBGYWlsdXJlIHRvIHJlYWQgb25lDQo+IG9yIG1vcmUgZmllbGRzIGp1c3QgbWVhbnMg dGhhdCB0aG9zZSBmaWVsZHMgd2lsbCBub3QgYmUgcG9wdWxhdGVkPyBXZQ0KPiBzaG91bGQgcHJv YmFibHkgaGF2ZSBhIGZsYWdzIGZpZWxkIGluc2lkZSB0aGUgbWV0YWRhdGEgc3RydWN0IGl0c2Vs ZiB0bw0KPiBpbmRpY2F0ZSB3aGljaCBmaWVsZHMgYXJlIHNldCBvciBub3QsIGJ1dCBJJ20gbm90 IHN1cmUgcmV0dXJuaW5nIGFuDQo+IGVycm9yIHZhbHVlIGFkZHMgYW55dGhpbmc/IFJldHVybmlu ZyBhIHBvaW50ZXIgdG8gdGhlIG1ldGFkYXRhIGZpZWxkDQo+IG1pZ2h0IGJlIGNvbnZlbmllbnQg Zm9yIHVzZXJzIChpdCB3b3VsZCBqdXN0IGJlIGFuIGFsaWFzIHRvIHRoZQ0KPiBkYXRhX21ldGEg cG9pbnRlciwgYnV0IHRoZSB2ZXJpZmllciBjb3VsZCBrbm93IGl0cyBzaXplLCBzbyB0aGUgcHJv Z3JhbQ0KPiBkb2Vzbid0IGhhdmUgdG8gYm91bmRzIGNoZWNrIGl0KS4NCg0KSWYgc29tZSBoaW50 cyBhcmUgbm90IGF2YWlsYWJsZSwgdGhvc2UgaGludHMgc2hvdWxkIGJlIGluaXRpYWxpemVkIHRv IA0KMC9DSEVDS1NVTV9OT05FLy4uLmV0Yy4gIFRoZSB4ZHAgcHJvZyBuZWVkcyBhIGRpcmVjdCB3 YXkgdG8gdGVsbCBoYXJkIGZhaWx1cmUgDQp3aGVuIGl0IGNhbm5vdCB3cml0ZSB0aGUgbWV0YSBh cmVhIGJlY2F1c2Ugb2Ygbm90IGVub3VnaCBzcGFjZS4gIENvbXBhcmluZyANCnhkcC0+ZGF0YV9t ZXRhIHdpdGggeGRwLT5kYXRhIGFzIGEgc2lkZSBlZmZlY3QgaXMgbm90IGludHVpdGl2ZS4NCg0K SXQgaXMgbW9yZSB0aGFuIHNhdmluZyB0aGUgYm91bmQgY2hlY2suICBXaXRoIHR5cGUgaW5mbyBv ZiAnc3RydWN0IA0KeGRwX3RvX3NrYl9tZXRhZGF0YSAqJywgdGhlIHZlcmlmaWVyIGNhbiBkbyBt b3JlIGNoZWNrcyBsaWtlIHJlYWRpbmcgaW4gdGhlIA0KbWlkZGxlIG9mIGFuIGludGVnZXIgbWVt YmVyLiAgVGhlIHZlcmlmaWVyIGNvdWxkIGFsc28gbGltaXQgd3JpdGUgYWNjZXNzIG9ubHkgdG8g DQphIGZldyBzdHJ1Y3QncyBtZW1iZXJzIGlmIGl0IGlzIG5lZWRlZC4NCg0KVGhlIHJldHVybmlu ZyAnc3RydWN0IHhkcF90b19za2JfbWV0YWRhdGEgKicgc2hvdWxkIG5vdCBiZSBhbiBhbGlhcyB0 byB0aGUgDQp4ZHAtPmRhdGFfbWV0YS4gIFRoZXkgc2hvdWxkIGFjdHVhbGx5IHBvaW50IHRvIGRp ZmZlcmVudCBsb2NhdGlvbnMgaW4gdGhlIA0KaGVhZHJvb20uICBicGZfeGRwX21ldGFkYXRhX2V4 cG9ydF90b19za2IoKSBzZXRzIGEgZmxhZyBpbiB4ZHBfYnVmZi4gDQp4ZHAtPmRhdGFfbWV0YSB3 b24ndCBiZSBjaGFuZ2VkIGFuZCBrZWVwcyBwb2ludGluZyB0byB0aGUgbGFzdCANCmJwZl94ZHBf YWRqdXN0X21ldGEoKSBsb2NhdGlvbi4gIFRoZSBrZXJuZWwgd2lsbCBrbm93IGlmIHRoZXJlIGlz IA0KeGRwX3RvX3NrYl9tZXRhZGF0YSBiZWZvcmUgdGhlIHhkcC0+ZGF0YV9tZXRhIHdoZW4gdGhh dCBiaXQgaXMgc2V0IGluIHRoZSANCnhkcF97YnVmZixmcmFtZX0uICBXb3VsZCBpdCB3b3JrPw0K DQo+IA0KPj4gQSByZWxhdGVkIHF1ZXN0aW9uLCB3aHkgJ3N0cnVjdCB4ZHBfdG9fc2tiX21ldGFk YXRhJyBuZWVkcw0KPj4gX19yYW5kb21pemVfbGF5b3V0Pw0KPiANCj4gVGhlIF9fcmFuZG9taXpl X2xheW91dCB0aGluZyBpcyB0aGVyZSB0byBmb3JjZSBCUEYgcHJvZ3JhbXMgdG8gdXNlIENPLVJF DQo+IHRvIGFjY2VzcyB0aGUgZmllbGQuIFRoaXMgaXMgdG8gYXZvaWQgdGhlIHN0cnVjdCBsYXlv dXQgYWNjaWRlbnRhbGx5DQo+IG9zc2lmeWluZyBiZWNhdXNlIHBlb3BsZSBpbiBwcmFjdGljZSBy ZWx5IG9uIGEgcGFydGljdWxhciBsYXlvdXQsIGV2ZW4NCj4gdGhvdWdoIHdlIHRlbGwgdGhlbSB0 byB1c2UgQ08tUkUuIFRoZXJlIGFyZSBsb3RzIG9mIGV4YW1wbGVzIG9mIHRoaXMNCj4gaGFwcGVu aW5nIGluIG90aGVyIGRvbWFpbnMgKElQIGhlYWRlciBvcHRpb25zLCBUQ1Agb3B0aW9ucywgZXRj KSwgYW5kDQo+IF9fcmFuZG9taXplX2xheW91dCBzZWVtZWQgbGlrZSBhIG5lYXQgdHJpY2sgdG8g ZW5mb3JjZSBDTy1SRSB1c2FnZSA6KQ0KDQpJIGFtIG5vdCBzdXJlIGlmIGl0IGlzIG5lY2Vzc2Fy eSBvciBoZWxwZnVsIHRvIG9ubHkgZW5mb3JjZSBfX3JhbmRvbWl6ZV9sYXlvdXQgDQppbiAnc3Ry dWN0IHhkcF90b19za2JfbWV0YWRhdGEnLiAgVGhlcmUgYXJlIG90aGVyIENPLVJFIHVzZSBjYXNl cyAodHJhY2luZyBhbmQgDQpub24gdHJhY2luZykgdGhhdCBhbHJlYWR5IGhhdmUgZGlyZWN0IGFj Y2VzcyAocmVhZGluZyBhbmQvb3Igd3JpdGluZykgdG8gb3RoZXIgDQprZXJuZWwgc3RydWN0dXJl cy4NCg0KSXQgaXMgbW9yZSBpbXBvcnRhbnQgZm9yIHRoZSB2ZXJpZmllciB0byBzZWUgdGhlIHhk cCBwcm9nIGFjY2Vzc2luZyBpdCBhcyBhIA0KJ3N0cnVjdCB4ZHBfdG9fc2tiX21ldGFkYXRhICon IGluc3RlYWQgb2YgeGRwLT5kYXRhX21ldGEgd2hpY2ggaXMgYSBfX3U4ICogc28gDQp0aGF0IHRo ZSB2ZXJpZmllciBjYW4gZW5mb3JjZSB0aGUgcnVsZXMgb2YgYWNjZXNzLg0KDQo+IA0KPj4+Pj4g RG9lcyB4ZHBfdG9fc2tiX21ldGFkYXRhIGhhdmUgYSB1c2UgY2FzZSBmb3IgWERQX1BBU1MgKGxp a2UgcGF0Y2ggNykgb3IgdGhlDQo+Pj4+PiB4ZHBfdG9fc2tiX21ldGFkYXRhIGNhbiBiZSBsaW1p dGVkIHRvIFhEUF9SRURJUkVDVCBvbmx5Pw0KPj4+Pg0KPj4+PiBYRFBfUEFTUyBjYXNlcyB3aGVy ZSB3ZSBjb252ZXJ0IHhkcF9idWZmIGludG8gc2tiIGluIHRoZSBkcml2ZXJzIHJpZ2h0DQo+Pj4+ IG5vdyB1c3VhbGx5IGhhdmUgQyBjb2RlIHRvIG1hbnVhbGx5IHB1bGwgb3V0IHRoZSBtZXRhZGF0 YSAob3V0IG9mIGh3DQo+Pj4+IGRlc2MpIGFuZCBwdXQgaXQgaW50byBza2IuDQo+Pj4+DQo+Pj4+ IFNvLCBjdXJyZW50bHksIGlmIHdlJ3JlIGNhbGxpbmcgYnBmX3hkcF9tZXRhZGF0YV9leHBvcnRf dG9fc2tiKCkgZm9yDQo+Pj4+IFhEUF9QQVNTLCB3ZSdyZSBkb2luZyBhIGRvdWJsZSBhbW91bnQg b2Ygd29yazoNCj4+Pj4gc2tiX21ldGFkYXRhX2ltcG9ydF9mcm9tX3hkcCBmaXJzdCwgdGhlbiBj dXN0b20gZHJpdmVyIGNvZGUgc2Vjb25kLg0KPj4+Pg0KPj4+PiBJbiB0aGVvcnksIG1heWJlIHdl IHNob3VsZCBjb21wbGV0ZWx5IHNraXAgZHJpdmVycyBjdXN0b20gcGFyc2luZyB3aGVuDQo+Pj4+ IHRoZXJlIGlzIGEgcHJvZyB3aXRoIEJQRl9GX1hEUF9IQVNfTUVUQURBVEE/DQo+Pj4+IFRoZW4g Ym90aCB4ZHAtPnNrYiBwYXRocyAoWERQX1BBU1MrWERQX1JFRElSRUNUKSB3aWxsIGJlIGJwZi1k cml2ZW4NCj4+Pj4gYW5kIHdvbid0IHJlcXVpcmUgYW55IG1lbnRhbCB3b3JrIChwbHVzLCB0aGUg ZHJpdmVycyB3b24ndCBoYXZlIHRvDQo+Pj4+IGNhcmUgZWl0aGVyIGluIHRoZSBmdXR1cmUpLg0K Pj4+PiAgwqA+IFdEWVQ/DQo+Pj4NCj4+Pg0KPj4+IFllYWgsIG5vdCBzdXJlIGlmIGl0IGNhbiBz b2xlbHkgZGVwZW5kIG9uIEJQRl9GX1hEUF9IQVNfTUVUQURBVEEgYnV0IGl0IG1ha2VzDQo+Pj4g c2Vuc2UgdG8gb25seSB1c2UgdGhlIGhpbnRzIChpZiBldmVyIHdyaXR0ZW4pIGZyb20geGRwIHBy b2cgZXNwZWNpYWxseSBpZiBpdA0KPj4+IHdpbGwgZXZlbnR1YWxseSBzdXBwb3J0IHhkcCBwcm9n IGNoYW5naW5nIHNvbWUgb2YgdGhlIGhpbnRzIGluIHRoZSBmdXR1cmUuwqAgRm9yDQo+Pj4gbm93 LCBJIHRoaW5rIGVpdGhlciB3YXkgaXMgZmluZSBzaW5jZSB0aGV5IGFyZSB0aGUgc2FtZSBhbmQg dGhlIHhkcCBwcm9nIGlzIHNvcnQNCj4+PiBvZiBkb2luZyBleHRyYSB1bm5lY2Vzc2FyeSB3b3Jr IGFueXdheSBieSBjYWxsaW5nDQo+Pj4gYnBmX3hkcF9tZXRhZGF0YV9leHBvcnRfdG9fc2tiKCkg d2l0aCBYRFBfUEFTUyBhbmQga25vd2luZyBub3RoaW5nIGNhbiBiZQ0KPj4+IGNoYW5nZWQgbm93 Lg0KPiANCj4gSSBhZ3JlZSBpdCB3b3VsZCBiZSBiZXN0IGlmIHRoZSBkcml2ZXJzIGFsc28gdXNl IHRoZSBYRFAgbWV0YWRhdGEgKGlmDQo+IHByZXNlbnQpIG9uIFhEUF9QQVNTLiBMb25nZXIgdGVy bSBteSBob3BlIGlzIHdlIGNhbiBtYWtlIHRoZSBYRFANCj4gbWV0YWRhdGEgc3VwcG9ydCB0aGUg b25seSB0aGluZyBkcml2ZXJzIG5lZWQgdG8gaW1wbGVtZW50IChpLmUuLCBoYXZlDQo+IHRoZSBz dGFjayBjYWxsIGludG8gdGhhdCBjb2RlIGV2ZW4gd2hlbiBubyBYRFAgcHJvZ3JhbSBpcyBsb2Fk ZWQpLCBidXQNCj4gZm9yIG5vdyBqdXN0IGZvciBjb25zaXN0ZW5jeSAoYW5kIGFsbG93aW5nIHRo ZSBYRFAgcHJvZ3JhbSB0byB1cGRhdGUgdGhlDQo+IG1ldGFkYXRhKSwgd2Ugc2hvdWxkIHByb2Jh Ymx5IGF0IGxlYXN0IGNvbnN1bWUgaXQgb24gWERQX1BBU1MuDQo+IA0KPiAtVG9rZQ0KPiANCg0K