From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0A571ECAAD3 for ; Wed, 7 Sep 2022 23:09:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229492AbiIGXJX (ORCPT ); Wed, 7 Sep 2022 19:09:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42032 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229436AbiIGXJX (ORCPT ); Wed, 7 Sep 2022 19:09:23 -0400 Received: from mail-pl1-x649.google.com (mail-pl1-x649.google.com [IPv6:2607:f8b0:4864:20::649]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B9DD1C5789 for ; Wed, 7 Sep 2022 16:09:20 -0700 (PDT) Received: by mail-pl1-x649.google.com with SMTP id k3-20020a170902c40300b001743aafd6c6so10835566plk.20 for ; Wed, 07 Sep 2022 16:09:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date; bh=0KRE6OYzpoJpbXuE9P9l7kcrQIIu1WKtxMVwyyvKu1c=; b=ckJcrD6igVTrWXoFqeGnZSGxuH5Nn5qwLwVLzibXBMVINW/7NM0pw4TElNFmyO4qZu cGnAeUl1HWPNi0mhxnIWGyEFX5L9Ll1PPJz3UWeI/jeIsjACmjzeiZcVIk0rSjPvbAEU /6KCVmjup6gAlnbyCNYmOGeCdlKjn0GZS21oyWInnigqh4vRSQr3+U8KTUFCGSiGKgfb 1bVKFa7enblA5n+rUql/rhS0mtLLTrcD84LYqJ/Ccvv0fI9RA+sFgX27sgVYpyTvVP0J VKNGwM/dqKMiOvnlcD3b0JWYItMOE6Z9g4C8U609jVkBCMnQNaaKIrKUk3W2tv0xFVB1 cXZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date; bh=0KRE6OYzpoJpbXuE9P9l7kcrQIIu1WKtxMVwyyvKu1c=; b=TgwEOQRSrv4gbug4JImph18FYt5bVCW1oP6g/jfXUHJqgVIMLV0tIlzaguq1imwOTa r3nMacpt2tthLm1GLoSndc8t+E7TelkVFdxJIOXbi1MbGKtCtKOdSg065D+6pDg+KUaG 3cL3cmWkVI32L/pw4qnpZJ7hNW7RmFOnKqI/fXNmltP49+EvzSaFLncywh747xZWBfJf 8UQFL5GL0k8G2J9J26BZzCvqpSJQeohKYacjyf6BRMsjT96yxTdxQqg4hSn3vkfvsm78 F72AIbszm38++PiGxAhakAQojtEQ84xaXTATfsiOdL+wKAypGKOR2cqD66aZI2YjkExh 668g== X-Gm-Message-State: ACgBeo3yIiozbO+A4XLHKkjI84wYQ+IK2rAGbzbhk/Xy4UJr7xEVgC/G pQxquIdwlWeG5xkqjuIWX1bR5IM= X-Google-Smtp-Source: AA6agR4UqSsh1nTYIuhXy56XpuBdst9RiR7IVTxixDObPoM83TUHOyskN7U+ocgvGBmxY/jVYdj8mGo= X-Received: from sdf.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5935]) (user=sdf job=sendgmr) by 2002:a17:90a:249:b0:1e0:a8a3:3c6c with SMTP id t9-20020a17090a024900b001e0a8a33c6cmr52768pje.0.1662592159394; Wed, 07 Sep 2022 16:09:19 -0700 (PDT) Date: Wed, 7 Sep 2022 16:09:17 -0700 In-Reply-To: <20220907080140.290413-1-aspsk@isovalent.com> Mime-Version: 1.0 References: <20220907080140.290413-1-aspsk@isovalent.com> Message-ID: Subject: Re: [RFC PATCH] bpf: introduce new bpf map type BPF_MAP_TYPE_WILDCARD From: sdf@google.com To: Anton Protopopov Cc: bpf@vger.kernel.org, Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , John Fastabend , Martynas Pumputis , Nikolay Aleksandrov , Eric Torng Content-Type: text/plain; charset="UTF-8"; format=flowed; delsp=yes Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org W3NvcnJ5IGZvciB0aGUgbm9pc2UsIGdvdCBhIGJvdW5jZSBmcm9tIHRoZSBsaXN0LCByZXNlbmQg d2l0aCB0aGUNCm1lc3NhZ2UgdHJpbW1lZF0NCg0KT24gMDkvMDcsIEFudG9uIFByb3RvcG9wb3Yg d3JvdGU6DQo+IEFkZCBhIG5ldyBtYXAsIEJQRl9NQVBfVFlQRV9XSUxEQ0FSRCwgd2hpY2ggcHJv dmlkZXMgbWVhbnMgdG8gaW1wbGVtZW50ICANCj4gZ2VuZXJpYw0KPiBvbmxpbmUgcGFja2V0IGNs YXNzaWZpY2F0aW9uLiBIZXJlICJvbmxpbmUiIHN0YW5kcyBmb3IgImZhc3QgbG9va3VwcyBhbmQg IA0KPiBmYXN0DQo+IHVwZGF0ZXMiLCBhbmQgImdlbmVyaWMiIG1lYW5zIHRoYXQgYSB1c2VyIGNh biBjcmVhdGUgbWFwcyB3aXRoIGN1c3RvbSAgDQo+IGxvb2t1cA0KPiBzY2hlbWVz4oCUZGlmZmVy ZW50IG51bWJlcnMgb2YgZmllbGRzIGFuZCBkaWZmZXJlbnQgaW50ZXJwcmV0YXRpb24gb2YgIA0K PiBpbmRpdmlkdWFsDQo+IGZpZWxkcyAocHJlZml4IGJpdG1hc2tzLCByYW5nZXMsIGFuZCBkaXJl Y3QgbWF0Y2hlcykuDQoNCj4gSW4gcGFydGljdWxhciwgaW4gQ2lsaXVtIHdlIGhhdmUgc2V2ZXJh bCB1c2UgY2FzZXMgZm9yIHN1Y2ggYSBtYXA6DQoNCj4gICAgKiBYRFAgUHJlZmlsdGVyIGlzIGEg c2ltcGxlIFhEUC1iYXNlZCBERG9TIG1pdGlnYXRpb24gc3lzdGVtIHByb3ZpZGVkIGJ5DQo+ICAg ICAgQ2lsaXVtLiBBdCB0aGUgbW9tZW50IGl0IG9ubHkgc3VwcG9ydHMgZmlsdGVyaW5nIGJ5IHNv dXJjZSBDSURScy4gSXQgIA0KPiB3b3VsZA0KPiAgICAgIGJlbmVmaXQgZnJvbSB1c2luZyB0aGlz IG5ldyBtYXAsIGFzIGl0IGFsbG93cyB0byB1dGlsaXplIHdpbGRjYXJkICANCj4gcnVsZXMNCj4g ICAgICB3aXRob3V0IGJpZyBwZW5hbHR5IGNvbXBhcmluZyB0byBvbmUgaGFzaCBvciBMUE0gbG9v a3VwIHV0aWxpemVkIG5vdy4NCg0KPiAgICAqIFhEUCBQYWNrZXQgUmVjb3JkZXIgKHNlZSAgDQo+ IGh0dHBzOi8vbHBjLmV2ZW50cy9ldmVudC8xMS9jb250cmlidXRpb25zLzk1My8pDQoNCj4gICAg KiBLOFMgYW5kIENpbGl1bSBOZXR3b3JrIFBvbGljaWVzOiBhcyBvZiBrOHMgMS4yNSBwb3J0IHJh bmdlcyBhcmUgIA0KPiBjb25zaWRlcmVkDQo+ICAgICAgdG8gYmUgYSBzdGFibGUgZmVhdHVyZSwg YW5kIHRoaXMgbWFwIGFsbG93cyB0byBpbXBsZW1lbnQgdGhpcyBlYXNpbHkgIA0KPiAoYW5kDQo+ ICAgICAgYWxzbyB0byBwcm92aWRlIG1vcmUgc29waGlzdGljYXRlZCBmaWx0ZXJpbmcgZm9yIENp bGl1bSBOZXR3b3JrICANCj4gUG9saWNpZXMpDQoNCj4gS2V5cyBmb3Igd2lsZGNhcmQgbWFwcyBh cmUgZGVmaW5lZCB1c2luZyB0aGUgc3RydWN0IHdpbGRjYXJkX2tleSAgDQo+IHN0cnVjdHVyZS4N Cj4gQmVzaWRlcyB0aGUgdHlwZSBmaWVsZCwgaXQgY29udGFpbnMgdGhlIGRhdGEgZmllbGQgb2Yg YW4gYXJiaXRyYXJ5IHNpemUuICANCj4gVG8NCj4gZWR1Y2F0ZSBtYXAgYWJvdXQgd2hhdCdzIGNv bnRhaW5lZCBpbnNpZGUgdGhlIGRhdGEgZmllbGQsIHR3byBhZGRpdGlvbmFsDQo+IHN0cnVjdHVy ZXMgYXJlIHVzZWQuIFRoZSBmaXJzdCBvbmUsIHN0cnVjdCB3aWxkY2FyZF9kZXNjLCBhbHNvIG9m ICANCj4gYXJiaXRyYXJ5DQo+IHNpemUsIHRlbGxzIGhvdyBtYW55IGZpZWxkcyBhcmUgY29udGFp bmVkIGluc2lkZSBkYXRhLCBhbmQgdGhlIHN0cnVjdA0KPiB3aWxkY2FyZF9ydWxlX2Rlc2Mgc3Ry dWN0dXJlIGRlZmluZXMgaG93IGluZGl2aWR1YWwgZmllbGRzIGxvb2sgbGlrZS4NCg0KPiBGaWVs ZHMgKHJ1bGVzKSBjYW4gYmUgb2YgdGhyZWUgdHlwZXM6ICANCj4gQlBGX1dJTERDQVJEX1JVTEVf e1BSRUZJWCxSQU5HRSxNQVRDSH0uDQoNClsuLl0NCg0KPiBUaGUgUFJFRklYIHJ1bGUgbWVhbnMg dGhhdCBpbnNpZGUgZGF0YSB3ZSBoYXZlIGEgYmluYXJ5IHZhbHVlIGFuZCBhIGJpbmFyeQ0KPiAo cHJlZml4KSBtYXNrOg0KDQo+ICAgICAgICAgICAgICAgICBzaXplICAgICAgICAgICAgIHUzMg0K PiAgICAgICAgICA8LS0tLS0tLS0tLS0tLS0tLT4gPC0tLS0tLS0tLS0tPg0KPiAgICAgLi4uIHwg ICAgcnVsZSB2YWx1ZSAgICB8ICAgcHJlZml4ICAgfCAuLi4NCg0KPiBIZXJlIHJ1bGUgdmFsdWUg aXMgYSBiaW5hcnkgdmFsdWUsIGUuZy4sIDEyMy4zMjQuMTI4LjAsIGFuZCBwcmVmaXggaXMgYSAg DQo+IHUzMiBiaXQNCj4gdmFyaWFibGU7IHdlIG9ubHkgdXNlIGxvd2VyIDggYml0cyBvZiBpdC4g V2UgYWxsb3cgOCwgMTYsIDMyLCA2NCwgYW5kIDEyOCAgDQo+IGJpdA0KPiB2YWx1ZXMgZm9yIFBS RUZJWCBydWxlcy4NCg0KSSBoYXZlbid0IGxvb2tlZCBhdCB0aGUgY29kZSwgc28gcGFyZG9uIHN0 dXBpZCBxdWVzdGlvbnMuIFRoaXMgc291bmRzDQpsaWtlIG9wdGltaXplZCBMUE0tdHJpZT8NCg0K SWYgbm90LCB3aGF0J3MgdGhlIGRpZmZlcmVuY2U/DQoNCklmIHllcywgY2FuIHRoaXMgYmUgc3Bl Y2lhbCBjYXNlZC9vcHRpbWl6ZWQgaW4gdGhlIGV4aXN0aW5nIExQTS10cmllDQpvcHRpbWl6YXRp b24/IEkgdGhpbmsgd2UndmUgdHJpZWQgaW4gdGhlIHBhc3QsIG1vc3RseSBnYXZlIHVwIGFuZA0K ImZpeGVkIiBieSBjYWNoaW5nIHRoZSBzdGF0ZSBpbiB0aGUgc29ja2V0IGxvY2FsIHN0b3JhZ2Uu DQoNCkFsc28sIGZpeGVkIDgvMTYvMzIvNjQgcHJlZml4ZXMgc2VlbXMgbGlrZSBhIGJpZyBsaW1p dGF0aW9uPyBBdCBsZWFzdCBpZg0KSSB3ZXJlIHRvIHN0b3JlIGlwdjQgZnJvbSB0aGUgY2xhc3Ns ZXNzIChjaWRyKSB3b3JsZC4uDQoNCj4gVGhlIFJBTkdFIHJ1bGUgaXMgZGV0ZXJtaW5lZCBieSB0 d28gYmluYXJ5IHZhbHVlczogbWluaW11bSBhbmQgbWF4aW11bSwgIA0KPiB0cmVhdGVkDQo+IGFz IHVuc2lnbmVkIGludGVnZXJzIG9mIGFwcHJvcHJpYXRlIHNpemU6DQoNCj4gICAgICAgICAgICAg ICAgIHNpemUgICAgICAgICAgICAgICBzaXplDQo+ICAgICAgICAgIDwtLS0tLS0tLS0tLS0tLS0t PiA8LS0tLS0tLS0tLS0tLS0tLT4NCj4gICAgIC4uLiB8ICBtaW4gcnVsZSB2YWx1ZSAgfCAgbWF4 IHJ1bGUgdmFsdWUgIHwgLi4uDQoNCj4gV2Ugb25seSBhbGxvdyB0aGUgOCwgMTYsIDMyLCBhbmQg NjQtYml0IGZvciBSQU5HRSBydWxlcy4NCg0KVGhhdCBzZWVtcyB1c2VmdWwuIEkgd2FzIHRoaW5r aW5nIGFib3V0IHNpbWlsYXIgJ3JhbmdlbWFwJyB3aGVyZQ0Kd2UgY2FuIGVmZmVjdGl2ZWx5IHN0 b3JlIGFuZCBsb29rdXAgW2EsYl0gcmFuZ2VzLiBNaWdodCBiZSB1c2VmdWwNCmluIGZpcmV3YWxs cyBmb3Igc3RvcmluZyBsaXN0cyBvZiBwb3J0cyBlZmZpY2llbnRseS4gU28gd2h5IG5vdA0KYSBz ZXBhcmF0ZSBtYXAgaW5zdGVhZD8gQXJlIHlvdSBhYmxlIHRvIHNoYXJlIGEgbG90IG9mIGNvZGUg d2l0aA0KdGhlIGdlbmVyYWwgbWF0Y2hpbmcgbWFwPw0KDQo+IFRoZSBNQVRDSCBydWxlIGlzIGRl dGVybWluZWQgYnkgb25lIGJpbmFyeSB2YWx1ZSwgYW5kIGlzIGJhc2ljYWxseSB0aGUgIA0KPiBz YW1lIGFzDQo+IChYLHNpemVvZihYKSo4KSBQUkVGSVggcnVsZSwgYnV0IGNhbiBiZSBwcm9jZXNz ZWQgYSBiaXQgZmFzdGVyOg0KDQo+ICAgICAgICAgICAgICAgICBzaXplDQo+ICAgICAgICAgIDwt LS0tLS0tLS0tLS0tLS0tPg0KPiAgICAgLi4uIHwgICAgcnVsZSB2YWx1ZSAgICB8IC4uLg0KDQo+ IFRvIHNwZWVkIHVwIHByb2Nlc3NpbmcgYWxsIHRoZSBydWxlcywgaW5jbHVkaW5nIHRoZSBwcmVm aXggZmllbGQsIHNob3VsZCAgDQo+IGJlDQo+IHN0b3JlZCBpbiBob3N0IGJ5dGUgb3JkZXIsIGFu ZCBhbGwgZWxlbWVudHMgaW4gbmV0d29yayBieXRlIG9yZGVyLiAxNi1ieXRlDQo+IGZpZWxkcyBh cmUgc3RvcmVkIGFzIHtsbyxoaX3igJRsb3dlciBlaWdodCBieXRlcywgdGhlbiBoaWdoZXIgZWln aHQgYnl0ZXMuDQoNCj4gRm9yIGVsZW1lbnRzIG9ubHkgdmFsdWVzIGFyZSBzdG9yZWQuDQoNCkNh biB0aGVzZSBvcHRpbWl6YXRpb24gYmUgYXV0by1tYWdpY2FsbHkgZGVyaXZlZCB3aGVuZXZlciBQ UkVGSVggbWFwDQp3aXRoIHRoZSByaWdodCB2YWx1ZXMgaXMgY3JlYXRlZD8gV2h5IHB1dCB0aGlz IGRlY2lzaW9uIG9uIHRoZSB1c2Vycz8NCg0KPiBUbyBzaW1wbGlmeSBkZWZpbml0aW9uIG9mIGtl eSBzdHJ1Y3R1cmVzLCB0aGUgIA0KPiBCUEZfV0lMRENBUkRfREVTQ197MSwyLDMsNCw1fQ0KPiBt YWNyb3Mgc2hvdWxkIGJlIHVzZWQuIEZvciBleGFtcGxlLCBvbmUgY2FuIGRlZmluZSBhbiBJUHY0 IDQtdHVwbGUga2V5cyBhcw0KPiBmb2xsb3dzOg0KDQo+ICAgICBCUEZfV0lMRENBUkRfREVTQ180 KA0KPiAgICAgICAgICBjYXB0dXJlNF93Y2FyZCwNCj4gICAgICAgICAgQlBGX1dJTERDQVJEX1JV TEVfUFJFRklYLCBfX3UzMiwgc2FkZHIsDQo+ICAgICAgICAgIEJQRl9XSUxEQ0FSRF9SVUxFX1BS RUZJWCwgX191MzIsIGRhZGRyLA0KPiAgICAgICAgICBCUEZfV0lMRENBUkRfUlVMRV9SQU5HRSwg X191MTYsIHNwb3J0LA0KPiAgICAgICAgICBCUEZfV0lMRENBUkRfUlVMRV9SQU5HRSwgX191MTYs IGRwb3J0DQo+ICAgICApOw0KDQo+IFRoaXMgbWFjcm8gd2lsbCBkZWZpbmUgdGhlIGZvbGxvd2lu ZyBzdHJ1Y3R1cmU6DQoNCj4gICAgIHN0cnVjdCBjYXB0dXJlNF93Y2FyZF9rZXkgew0KPiAgICAg ICAgICBfX3UzMiB0eXBlOw0KPiAgICAgICAgICBfX3UzMiBwcmlvcml0eTsNCj4gICAgICAgICAg dW5pb24gew0KPiAgICAgICAgICAgICAgc3RydWN0IHsNCj4gICAgICAgICAgICAgICAgICAgICAg X191MzIgc2FkZHI7DQo+ICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHNhZGRyX3ByZWZpeDsN Cj4gICAgICAgICAgICAgICAgICAgICAgX191MzIgZGFkZHI7DQo+ICAgICAgICAgICAgICAgICAg ICAgIF9fdTMyIGRhZGRyX3ByZWZpeDsNCj4gICAgICAgICAgICAgICAgICAgICAgX191MTYgc3Bv cnRfbWluOw0KPiAgICAgICAgICAgICAgICAgICAgICBfX3UxNiBzcG9ydF9tYXg7DQo+ICAgICAg ICAgICAgICAgICAgICAgIF9fdTE2IGRwb3J0X21pbjsNCj4gICAgICAgICAgICAgICAgICAgICAg X191MTYgZHBvcnRfbWF4Ow0KPiAgICAgICAgICAgICAgfSBfX3BhY2tlZCBydWxlOw0KPiAgICAg ICAgICAgICAgc3RydWN0IHsNCj4gICAgICAgICAgICAgICAgICAgICAgX191MzIgc2FkZHI7DQo+ ICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGRhZGRyOw0KPiAgICAgICAgICAgICAgICAgICAg ICBfX3UxNiBzcG9ydDsNCj4gICAgICAgICAgICAgICAgICAgICAgX191MTYgZHBvcnQ7DQo+ICAg ICAgICAgICAgICB9IF9fcGFja2VkOw0KPiAgICAgICAgICB9Ow0KPiAgICAgfSBfX3BhY2tlZDsN Cg0KPiBIZXJlIHR5cGUgZmllbGQgc2hvdWxkIGNvbnRhaW4gZWl0aGVyIEJQRl9XSUxEQ0FSRF9L RVlfUlVMRSBvcg0KPiBCUEZfV0lMRENBUkRfS0VZX0VMRU0gc28gdGhhdCBrZXJuZWwgY2FuIGRp ZmZlcmVudGlhdGUgYmV0d2VlbiBydWxlcyBhbmQNCj4gZWxlbWVudHMuIFRoZSBydWxlIHN0cnVj dHVyZSBpcyB1c2VkIHRvIGRlZmluZSAoYW5kIGxvb2t1cCkgcnVsZXMsIHRoZSAgDQo+IHVubmFt ZWQNCj4gc3RydWN0dXJlIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgZWxlbWVudHMgd2hlbiBtYXRj aGluZyB0aGVtIHdpdGggcnVsZXMuDQoNCj4gSW4gb3JkZXIgdG8gc2ltcGxpZnkgZGVmaW5pdGlv biBvZiBhIGNvcnJlc3BvbmRpbmcgc3RydWN0IHdpbGRjYXJkX2Rlc2MsICANCj4gdGhlDQo+IEJQ Rl9XSUxEQ0FSRF9ERVNDXyogbWFjcm9zIHdpbGwgY3JlYXRlIHlldCBhbm90aGVyIHN0cnVjdHVy ZToNCg0KPiAgICAgc3RydWN0IGNhcHR1cmU0X3djYXJkX2Rlc2Mgew0KPiAgICAgICAgICBfX3Vp bnQobl9ydWxlcywgNCk7DQo+ICAgICAgICAgIHN0cnVjdCB7DQo+ICAgICAgICAgICAgICAgICAg X191aW50KHR5cGUsIEJQRl9XSUxEQ0FSRF9SVUxFX1BSRUZJWCk7DQo+ICAgICAgICAgICAgICAg ICAgX191aW50KHNpemUsIHNpemVvZihfX3UzMikpOw0KPiAgICAgICAgICB9IHNhZGRyOw0KPiAg ICAgICAgICBzdHJ1Y3Qgew0KPiAgICAgICAgICAgICAgICAgIF9fdWludCh0eXBlLCBCUEZfV0lM RENBUkRfUlVMRV9QUkVGSVgpOw0KPiAgICAgICAgICAgICAgICAgIF9fdWludChzaXplLCBzaXpl b2YoX191MzIpKTsNCj4gICAgICAgICAgfSBkYWRkcjsNCj4gICAgICAgICAgc3RydWN0IHsNCj4g ICAgICAgICAgICAgICAgICBfX3VpbnQodHlwZSwgQlBGX1dJTERDQVJEX1JVTEVfUkFOR0UpOw0K PiAgICAgICAgICAgICAgICAgIF9fdWludChzaXplLCBzaXplb2YoX191MTYpKTsNCj4gICAgICAg ICAgfSBzcG9ydDsNCj4gICAgICAgICAgc3RydWN0IHsNCj4gICAgICAgICAgICAgICAgICBfX3Vp bnQodHlwZSwgQlBGX1dJTERDQVJEX1JVTEVfUkFOR0UpOw0KPiAgICAgICAgICAgICAgICAgIF9f dWludChzaXplLCBzaXplb2YoX191MTYpKTsNCj4gICAgICAgICAgfSBkcG9ydDsNCj4gICAgIH07 DQoNCj4gVGhpcyBzdHJ1Y3R1cmUgY2FuIGJlIHVzZWQgaW4gYSAoQlRGKSBtYXAgZGVmaW5pdGlv biBhcyBmb2xsb3dzOg0KDQo+ICAgICAgX190eXBlKHdpbGRjYXJkX2Rlc2MsIHN0cnVjdCBjYXB0 dXJlNF93Y2FyZF9kZXNjKTsNCg0KPiBUaGVuIGxpYmJwZiB3aWxsIGNyZWF0ZSBhIGNvcnJlc3Bv bmRpbmcgc3RydWN0IHdpbGRjYXJkX2Rlc2MgYW5kIHBhc3MgaXQgIA0KPiB0bw0KPiBrZXJuZWwg aW4gYnBmX2F0dHIgdXNpbmcgbmV3IG1hcF9leHRyYV9kYXRhL21hcF9leHRyYV9kYXRhX3NpemUg ZmllbGRzLg0KDQpbLi5dDQoNCj4gVGhlIG1hcCBpbXBsZW1lbnRhdGlvbiBhbGxvd3MgdXNlcnMg dG8gc3BlY2lmeSB3aGljaCBhbGdvcml0aG0gdG8gdXNlIHRvICANCj4gc3RvcmUNCj4gcnVsZXMg YW5kIGxvb2t1cCBwYWNrZXRzLiBDdXJyZW50bHksIHRocmVlIGFsZ29yaXRobXMgYXJlIHN1cHBv cnRlZDoNCg0KPiAgICAqIEJydXRlIEZvcmNlIChzdWl0YWJsZSBmb3IgbWFwIHNpemVzIG9mIGFi b3V0IDMyIG9yIGJlbG93IGVsZW1lbnRzKQ0KDQo+ICAgICogVHVwbGUgTWVyZ2UgKGEgdmFyaWFu dCBvZiB0aGUgVHVwbGUgTWVyZ2UgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiB0aGUNCj4gICAgICAi VHVwbGVNZXJnZTogRmFzdCBTb2Z0d2FyZSBQYWNrZXQgUHJvY2Vzc2luZyBmb3IgT25saW5lIFBh Y2tldA0KPiAgICAgIENsYXNzaWZpY2F0aW9uIiB3aGl0ZSBwYXBlciwgc2VlICANCj4gaHR0cHM6 Ly9ub25zbnMuZ2l0aHViLmlvL3BhcGVyL3Jvc3NpMTl0b24ucGRmLg0KPiAgICAgIFRoZSBUdXBs ZSBNZXJnZSBhbGdvcml0aG0gaXMgbm90IHByb3RlY3RlZCBieSBhbnkgcGF0ZW50cy4pDQoNCj4g ICAgKiBTdGF0aWMgVHVwbGUgTWVyZ2UgKGEgdmFyaWFudCBvZiBUdXBsZSBNZXJnZSB3aGVyZSBh IHNldCBvZiBsb29rdXAgIA0KPiB0YWJsZXMNCj4gICAgICBpcyBkaXJlY3RseSBwcm92aWRlZCBi eSBhIHVzZXIpDQoNCkFzIGEgdXNlciB0aGF0IGhhcyBubyBjbHVlIGhvdyB0aGlzIG1hcCB3b3Jr cywgaG93IGRvIEkgZGVjaWRlIHdoaWNoDQphbGdvcml0aG0gdG8gdXNlPyBXaGF0IEkgbGlrZSB3 aXRoIHRoZSBjdXJyZW50IG1hcHMgaXMgdGhhdCB0aGV5IGRvbid0DQpsZWFrIHRvbyBtdWNoIG9m IHRoZWlyIGlubmVyIHN0YXRlLiBUaGVzZSBjb250cm9scyBzZWVtcyBhIGJpdCBsb3cNCmxldmVs Pw0K