From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 35BDEA0506; Tue, 29 Mar 2022 10:32:23 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EE16141151; Tue, 29 Mar 2022 10:32:22 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40049.outbound.protection.outlook.com [40.107.4.49]) by mails.dpdk.org (Postfix) with ESMTP id 125A740691 for ; Tue, 29 Mar 2022 10:32:22 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ni0Jgn2UV7q6a3Ii6TTdm8nHE/KjMR7hhuu68t1kb9+GC7ZpjZ0UCO9blDF3EkULvWADKVKo6JlXilYP9GfR2cUAPo33iMsYwaQa9CACMdIkjZVlsZF5HIlR2cHd++twpGxbiBzAqbUfCtFODWDEaD/C5iklltRv6oRoTZAHmeYSGy3pok3HVpAOs4eso/Yy6h7dLn/CPu5VPlqbPtAMyA2MA+sRZ4EfxS7gJgc4IYPClAA94t/l6xcP/g8Ul1rHd8FTFF/yjKoloekOAeGU0aTqJpIRB9XHXVJy9j/nVlRHchCoFbS2NnOYPaqRoU7TWrwqpJ5tQfbRjCMxzz1xRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QsuObHsR6X7/tYEazHeKlvx/LWCFaYAwC4MG5rtOo78=; b=e9DtKu5EHJeQmmNNeHPpkr5zaWX6fBNQ0gCI7Q74nU1HG3jesiphANjsHe4vWahez3ifbzwCmemEHNtMjwIJbemLMTpf0s5lq9TqrDh560NzbrWPG2jbfOsx+DRuwDKg/5uTtnwTorHsMlMQIE8g45jRalfIdDLw8RMPIPJG4rA20u2/hrezdBfHuSLWbqbekYB2DI6GdtzgXieJTnxEuc8iW8GgcHWUmsYp++WPWonbFPnitkqipvl2PWLwefpkqUsJGb2EPMESFde31Ix8jBEp/gvdYpjglbu2umb32mXIQpYeXadEDjLsWs+yhW0OKTjs/tKycb/vZIfMRlLiew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ericsson.com; dmarc=pass action=none header.from=ericsson.com; dkim=pass header.d=ericsson.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ericsson.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QsuObHsR6X7/tYEazHeKlvx/LWCFaYAwC4MG5rtOo78=; b=GFqKoNorzzLID9YjyJqPb1QdsIi7wHeEamG8OwtbvzxVBP9nsv48JbZ5z7UKw6UXoZqwPfp3hvyQYb1nEg7gv/s3VnSRB5on8ZLzpw4WhQTjQQy9MBFA14U0gGI0N9F7hemeqAr4AM1VsABTwmSahvS267ZyF4RKs90sip4NKKw= Received: from DB7PR07MB5978.eurprd07.prod.outlook.com (2603:10a6:10:80::15) by DBAPR07MB6791.eurprd07.prod.outlook.com (2603:10a6:10:17e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.15; Tue, 29 Mar 2022 08:32:20 +0000 Received: from DB7PR07MB5978.eurprd07.prod.outlook.com ([fe80::8058:d193:21b1:4715]) by DB7PR07MB5978.eurprd07.prod.outlook.com ([fe80::8058:d193:21b1:4715%6]) with mapi id 15.20.5123.016; Tue, 29 Mar 2022 08:32:20 +0000 From: =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= To: Ola Liljedahl , "Ananyev, Konstantin" , "dev@dpdk.org" CC: Thomas Monjalon , David Marchand , Onar Olsen , "Honnappa.Nagarahalli@arm.com" , "nd@arm.com" , "mb@smartsharesystems.com" , "stephen@networkplumber.org" Subject: Re: [RFC] eal: add seqlock Thread-Topic: [RFC] eal: add seqlock Thread-Index: AQHYQIZ9wDkZOfooCUq3k8gPX7b0VKzTUosAgAAwdoCAASAVAIAANeKAgAE0/oA= Date: Tue, 29 Mar 2022 08:32:20 +0000 Message-ID: References: <20220325202428.94628-1-mattias.ronnblom@ericsson.com> <77168168-eadb-9a0b-b51e-9ccdf8ad7230@ericsson.com> In-Reply-To: Accept-Language: en-US, sv-SE Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=ericsson.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 549ff8f5-e9d4-4804-7038-08da115ea465 x-ms-traffictypediagnostic: DBAPR07MB6791:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: dLuIQrKlQ5wsNOJEl7crTtOqONodQ51c2QdUaE8hcfGjC1K294e8+Rg7Ru6ONUr1QN0c369l9aZdx62L5mYH2CGbAU4IvOV2lhUgtrhkvcXvXxCMR49kSzmKRvrpnuh1gxzH0Lwli1Vw3+sFXtyHtjjUxjbSxo6PZzPjlixaMgV3anRFw9TTmulRN2v5dEaKgezgV9YQsIgbWNdB1W60My5iO1G//YZsT9ynvK7UGFrZl2F4FazvLu0LUrfTwX7w2jQEtyif6SW76rENf/8BR43XwOMvh5eYOYTW8b7hBqRSdQLaXOFT7QMsBu+/H2LVWGwHqjphqc2kBB8xcDjmkYBAbPWc1+Kutt98MuMmErRdfXXlDx63s8C9j9pnDqhGuTH3iSlRlPziNmaH45W/Xz1k8hXfs/s/ZN7ooGOh1uQ00End9dfHe/SLxKoauJhoyiuMLkqBIl2NP3NN4LDnL/YvClDnIxsNpEQuNgYrVQhHYkbO+/XgAn6VmzGFEtuLfFfhwzwfayE+dMBqxZNJgEp1z5ph3YEWM8yqPsVhuXBvNAGnLZ1zD6T/ZguTgrG/Hfh++bI0li0b8C2vB3lHjhr4O2eh0LPKC9kD+fR4AV6VjHrUZOQEaC9bsmxOhv77wTwwEkGokDejauqK1Ii107zFQCItwjPralSiCxe1fj3P0/PtO7mOIQSa4lsJRCoVuu7k6g6zKDh3u38LyWsbPt857QbkrsNGDhqwPkPQ3Moihz25DLG1awyZSYgveGq3/9qb+mCQC902lsd3frJoY0wC/zpiHpiOD3rLm3DtM23OG5RvCW54ILHfZ/SzwZUxrQ5c/XECR0BAU/5h9R2o+NPdKmotkToEB6DwsoWan60= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR07MB5978.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(64756008)(66476007)(66446008)(66946007)(91956017)(4326008)(26005)(8676002)(54906003)(6486002)(2616005)(83380400001)(38070700005)(31696002)(82960400001)(38100700002)(76116006)(71200400001)(110136005)(316002)(508600001)(186003)(6506007)(6512007)(2906002)(66556008)(86362001)(36756003)(966005)(31686004)(53546011)(8936002)(5660300002)(85182001)(122000001)(85202003)(43740500002)(45980500001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MmZTdDZtQWRYUWRleXBYVE5rMTB5Wk5qTFRVeThSNWNKT2xtRGllcmpZOGZ4?= =?utf-8?B?QnpPdVFxSmIyY3lEY2lPTkU5YVNsYVo2VUwrNHhnWHZSTlR6RkpodVMrK1Rz?= =?utf-8?B?QUt5cVVQZ2xuTWVnQllJaThFdW94Q0lQTnNIelVWdzlXaUI3SHpUdW9mSGJI?= =?utf-8?B?QnNOMWhmbzU5MWFFa1hkZm9vcDA4UzhXUmN6ZUNUbnAxclRhS1VtbWQrejZL?= =?utf-8?B?TVZpdG5ldXNteFZkTU1NWXVNREZBd2toY0E4Z0FqcStIb0F5UWh6Mlhvd0tO?= =?utf-8?B?cjlIVTF5MGtEMFFPcklnTG42d0VpTXZsOUkyZVlEeXN6TVgwVmdELzVYM3V4?= =?utf-8?B?NjhxRTdxTnk0NjdBRzJXQXYybEdQUWlkS0xOVHVta1VNb2RCNGJmSEViSnF0?= =?utf-8?B?MTZhOUE0OU5kNDZXd3JJQTh3R1RQb2tHSmNHSzIxSUJ1NFo2THRnbnR3MGph?= =?utf-8?B?STZXRTZ1RnNHZ2RKUlZldVFGM0xqUTZPdUVRUERUNHYraUJlWmhjWkRFbU0y?= =?utf-8?B?RFFEU2lkR3Fqbk56UFYyTXhEOEpDc0ZtcnFUK3h4UWNpdkF5WkwwaVVDNHRz?= =?utf-8?B?ck9QSGEzNkFsb3ZQMlJtUGtidzF2UWdzSzBlY2JRcTJzRUQyMGNYTE5jMVE3?= =?utf-8?B?dXh1Qk1CZnJQMkJiZy9TRDNmZUgrM0ZqbTVXUWhoVC95SzhDTkFUbkZwT0tP?= =?utf-8?B?WVJOUTRkWDlKZWg4dHdQUTlZd3VOSnBHZ0YycnhwNDQyVXBDQjhwbmlvSUFH?= =?utf-8?B?OTBJd2wxZ0xLRm45WGhHRnVPVmlVV0hoU2JpQnEyQlFiNkh6bU52SFJwKy9N?= =?utf-8?B?S1BBQmJkWEdYeUYxNmJiZkUzaVZiZC94OThWdTFwV0RQSUdocGhEdE1rd3k4?= =?utf-8?B?VGxOb0E5YlNIeHpyZ3R0QTg2ck1uRTZPcThBdlIvNmJCS0JkbGR2SkU2Uzg3?= =?utf-8?B?ZDUvRGZoZy93WXpXMEdCTjJjbnhua3lwY0o3Y1VaODBPS0NZTThNd1FTaXFs?= =?utf-8?B?M2lYQzE2MEwvdWRVSFhTOGlzQVhuOFJSaDk2WWErUWhPTVpSbmV5ejNzT21q?= =?utf-8?B?WGlqQ3dZanRQSGlobXFRV1U1RVdBMlFrbzZha3loQ3B6b0xJRXYwTlJ2WXl0?= =?utf-8?B?eHhJWUR1TDlsWlRIWjRRMzZydUVNSHB5SStzY2JYQUJsRGxRQ3F2aUI1N2lU?= =?utf-8?B?dnppMEtBNVYwT05uVWROTm1CdHoxb3pGYURzQVQ3TG44OHF3SWhRUndGZEpp?= =?utf-8?B?NVVIZ2hDajIvMlBmMEFZSFdReHkyVjNqMGxZb25PR0pmS0NuQkwxT1FjK0p6?= =?utf-8?B?TDNNeWVKMFptK210NDVMLzZtdGgwUFhjUnp0aDQ0cVYyc3I3cW45STUxWTRo?= =?utf-8?B?eEpJKzVLM1R2bDM4QjBGNkc4WnpheGp0azMvZFlQT0VjaXUvbWdEaXR4Zjdi?= =?utf-8?B?bEFqdWltK0tVRGdBOUdMSTk4MVFyd3ZYTlNmbGtBa0RyM0hETENBc2dwUzJ5?= =?utf-8?B?YVZKeVZpekk3bnBIQUk3b3pFYmc1TTdrdmxHbnZ0YjM4TS9hUnUvSStaS091?= =?utf-8?B?SER1ZlVmZGNxR2x0SWVWcGJrZlFrNFVydDByQ05zYWRJUEljZE8wcll4Vzln?= =?utf-8?B?c2tSWWhCS0FNZG9aYUk4eUZybE45YmtlNTRRbHUvTWdQekZZMVJQR3dMM0RJ?= =?utf-8?B?eFdlT3BUUVQ1TVVLV0xHRHExeUYyYTFWbUwxR1lsTkxRSGtvbzJ3ZjFqeUIx?= =?utf-8?B?U09hbzVabHhhMTJlbTF0RUhtc2FIMzRtLzZZNFA3MUlGaDBJMVBHVE5OWU1y?= =?utf-8?B?eGtTTDV5cFozbjJFQW41S01BZ2MzMm5oamRmd2prN0tCVktrVHdpSDlSSjFI?= =?utf-8?B?QjF5VGxMdTlkcjhEZnlobFpkOUd3elY3dzVocXBlQmFRYnA0UC9DK0FvRjlG?= =?utf-8?B?VWRoOTZib3VIWm5VaXV3WTlsbkhBL3dLL0sxK2Y5RG1Ca0I0eWhNZ0M3djFW?= =?utf-8?B?M1hKbjhNUmRBRTFUY1YvcHNIOEtJNmlyMkg4RWFseVUzUDRXQkIyVTZzNlFa?= =?utf-8?B?a0xla0pBaUVRUitQR29NZjRXWU9SK25yd3o0aG10eHFJaEQwS1ZROVpsVVNY?= =?utf-8?B?akxQQVBGVzZNcHdVYk0yZkpDdUtmcTVuRGJSdXI5czJ3N0x1cHFlVmhPcGFK?= =?utf-8?B?U0xEMEJGM3dFZEdZYy8ramloeE1hL1psM055ZkVQZFVpNlRiaVVsa3NQZ0pE?= =?utf-8?B?WXVSRnZLc2ZaWGtYaWk0TnV1RkZTNnZJVyszZGFSc2N2cWpTVE9vM3pNeTc0?= =?utf-8?B?U09mOW9aTjZiYXBiTTF4SUtvTjBpN0k1bXArTG8rTWFlck1hWWZISWJ4TXkw?= =?utf-8?Q?PNvL8+kC9AY2Tkok=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: ericsson.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DB7PR07MB5978.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 549ff8f5-e9d4-4804-7038-08da115ea465 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Mar 2022 08:32:20.6243 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: oeVX0KhCxwV7uQ/a4RH2v5ZNVLv+jL2YLFg7kBp7b9XWkRDKdXhXQPSYhIG5xNH2am+4xJfcmp2WTEdtsc78okNehrO2biMmOhoMAUy8JE0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR07MB6791 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org T24gMjAyMi0wMy0yOCAxNjowNiwgT2xhIExpbGplZGFobCB3cm90ZToNCj4NCj4NCj4gT24gMy8y OC8yMiAxMjo1MywgQW5hbnlldiwgS29uc3RhbnRpbiB3cm90ZToNCj4+DQo+Pj4+PiBkaWZmIC0t Z2l0IGEvbGliL2VhbC9pbmNsdWRlL21lc29uLmJ1aWxkIA0KPj4+Pj4gYi9saWIvZWFsL2luY2x1 ZGUvbWVzb24uYnVpbGQNCj4+Pj4+IGluZGV4IDk3MDA0OTQ4MTYuLjQ4ZGY1ZjFhMjEgMTAwNjQ0 DQo+Pj4+PiAtLS0gYS9saWIvZWFsL2luY2x1ZGUvbWVzb24uYnVpbGQNCj4+Pj4+ICsrKyBiL2xp Yi9lYWwvaW5jbHVkZS9tZXNvbi5idWlsZA0KPj4+Pj4gQEAgLTM2LDYgKzM2LDcgQEAgaGVhZGVy cyArPSBmaWxlcygNCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICdydGVfcGVyX2xjb3JlLmgn LA0KPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgJ3J0ZV9yYW5kb20uaCcsDQo+Pj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoCAncnRlX3JlY2lwcm9jYWwuaCcsDQo+Pj4+PiArwqDCoMKgwqDCoMKg wqAgJ3J0ZV9zZXFsb2NrLmgnLA0KPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgJ3J0ZV9zZXJ2 aWNlLmgnLA0KPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgJ3J0ZV9zZXJ2aWNlX2NvbXBvbmVu dC5oJywNCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICdydGVfc3RyaW5nX2Zucy5oJywNCj4+ Pj4+IGRpZmYgLS1naXQgYS9saWIvZWFsL2luY2x1ZGUvcnRlX3NlcWxvY2suaCANCj4+Pj4+IGIv bGliL2VhbC9pbmNsdWRlL3J0ZV9zZXFsb2NrLmgNCj4+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+Pj4+PiBpbmRleCAwMDAwMDAwMDAwLi5iOTc1Y2E4NDhhDQo+Pj4+PiAtLS0gL2Rldi9udWxs DQo+Pj4+PiArKysgYi9saWIvZWFsL2luY2x1ZGUvcnRlX3NlcWxvY2suaA0KPj4+Pj4gQEAgLTAs MCArMSw4NCBAQA0KPj4+Pj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1 c2UNCj4+Pj4+ICsgKiBDb3B5cmlnaHQoYykgMjAyMiBFcmljc3NvbiBBQg0KPj4+Pj4gKyAqLw0K Pj4+Pj4gKw0KPj4+Pj4gKyNpZm5kZWYgX1JURV9TRVFMT0NLX0hfDQo+Pj4+PiArI2RlZmluZSBf UlRFX1NFUUxPQ0tfSF8NCj4+Pj4+ICsNCj4+Pj4+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPg0KPj4+ Pj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4+Pj4+ICsNCj4+Pj4+ICsjaW5jbHVkZSA8cnRlX2F0 b21pYy5oPg0KPj4+Pj4gKyNpbmNsdWRlIDxydGVfYnJhbmNoX3ByZWRpY3Rpb24uaD4NCj4+Pj4+ ICsjaW5jbHVkZSA8cnRlX3NwaW5sb2NrLmg+DQo+Pj4+PiArDQo+Pj4+PiArc3RydWN0IHJ0ZV9z ZXFsb2NrIHsNCj4+Pj4+ICvCoMKgwqAgdWludDY0X3Qgc247DQo+Pj4+PiArwqDCoMKgIHJ0ZV9z cGlubG9ja190IGxvY2s7DQo+Pj4+PiArfTsNCj4+Pj4+ICsNCj4+Pj4+ICt0eXBlZGVmIHN0cnVj dCBydGVfc2VxbG9jayBydGVfc2VxbG9ja190Ow0KPj4+Pj4gKw0KPj4+Pj4gK19fcnRlX2V4cGVy aW1lbnRhbA0KPj4+Pj4gK3ZvaWQNCj4+Pj4+ICtydGVfc2VxbG9ja19pbml0KHJ0ZV9zZXFsb2Nr X3QgKnNlcWxvY2spOw0KPj4+PiBQcm9iYWJseSB3b3J0aCB0byBoYXZlIHN0YXRpYyBpbml0aWFs aXplciB0b28uDQo+Pj4+DQo+Pj4NCj4+PiBJIHdpbGwgYWRkIHRoYXQgaW4gdGhlIG5leHQgdmVy c2lvbiwgdGhhbmtzLg0KPj4+DQo+Pj4+PiArDQo+Pj4+PiArX19ydGVfZXhwZXJpbWVudGFsDQo+ Pj4+PiArc3RhdGljIGlubGluZSB1aW50NjRfdA0KPj4+Pj4gK3J0ZV9zZXFsb2NrX3JlYWRfYmVn aW4oY29uc3QgcnRlX3NlcWxvY2tfdCAqc2VxbG9jaykNCj4+Pj4+ICt7DQo+Pj4+PiArwqDCoMKg IC8qIF9fQVRPTUlDX0FDUVVJUkUgdG8gcHJldmVudCBsb2FkcyBhZnRlciAoaW4gcHJvZ3JhbSBv cmRlcikNCj4+Pj4+ICvCoMKgwqDCoCAqIGZyb20gaGFwcGVuaW5nIGJlZm9yZSB0aGUgc24gbG9h ZC4gU3luY3Jvbml6ZXMtd2l0aCB0aGUNCj4+Pj4+ICvCoMKgwqDCoCAqIHN0b3JlIHJlbGVhc2Ug aW4gcnRlX3NlcWxvY2tfZW5kKCkuDQo+Pj4+PiArwqDCoMKgwqAgKi8NCj4+Pj4+ICvCoMKgwqAg cmV0dXJuIF9fYXRvbWljX2xvYWRfbigmc2VxbG9jay0+c24sIF9fQVRPTUlDX0FDUVVJUkUpOw0K Pj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4+Pj4+ICtzdGF0 aWMgaW5saW5lIGJvb2wNCj4+Pj4+ICtydGVfc2VxbG9ja19yZWFkX3JldHJ5KGNvbnN0IHJ0ZV9z ZXFsb2NrX3QgKnNlcWxvY2ssIHVpbnQ2NF90IA0KPj4+Pj4gYmVnaW5fc24pDQo+Pj4+PiArew0K Pj4+Pj4gK8KgwqDCoCB1aW50NjRfdCBlbmRfc247DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIC8q IG1ha2Ugc3VyZSB0aGUgZGF0YSBsb2FkcyBoYXBwZW5zIGJlZm9yZSB0aGUgc24gbG9hZCAqLw0K Pj4+Pj4gK8KgwqDCoCBydGVfYXRvbWljX3RocmVhZF9mZW5jZShfX0FUT01JQ19BQ1FVSVJFKTsN Cj4+Pj4gVGhhdCdzIHNvcnQgb2YgJ3JlYWRfZW5kJyBjb3JyZWN0Pw0KPj4+PiBJZiBzbywgc2hv dWxkbid0IGl0IGJlICdfX0FUT01JQ19SRUxFQVNFJyBpbnN0ZWFkIGhlcmUsDQo+Pj4+IGFuZA0K Pj4+PiBlbmRfc24gPSBfX2F0b21pY19sb2FkX24oLi4uLCAoX19BVE9NSUNfQUNRVUlSRSkNCj4+ Pj4gb24gdGhlIGxpbmUgYmVsb3c/DQo+Pj4NCj4+PiBBIHJlbGVhc2UgZmVuY2UgcHJldmVudHMg cmVvcmRlcmluZyBvZiBzdG9yZXMuIFRoZSByZWFkZXIgZG9lc24ndCBkbyANCj4+PiBhbnkNCj4+ PiBzdG9yZXMsIHNvIEkgZG9uJ3QgdW5kZXJzdGFuZCB3aHkgeW91IHdvdWxkIHVzZSBhIHJlbGVh c2UgZmVuY2UgaGVyZS4NCj4+PiBDb3VsZCB5b3UgZWxhYm9yYXRlPw0KPj4NCj4+IMKgRnJvbSBt eSB1bmRlcnN0YW5kaW5nOg0KPj4gcnRlX2F0b21pY190aHJlYWRfZmVuY2UoX19BVE9NSUNfQUNR VUlSRSk7DQo+PiBzZXJ2ZXMgYXMgYSBob2lzdCBiYXJyaWVyIGhlcmUsIHNvIGl0IHdvdWxkIG9u bHkgcHJldmVudCBsYXRlciANCj4+IGluc3RydWN0aW9ucw0KPj4gdG8gYmUgZXhlY3V0ZWQgYmVm b3JlIHRoYXQgcG9pbnQuDQo+PiBCdXQgaXQgd291bGRuJ3QgcHJldmVudCBlYXJsaWVyIGluc3Ry dWN0aW9ucyB0byBiZSBleGVjdXRlZCBhZnRlciANCj4+IHRoYXQgcG9pbnQuDQo+PiBXaGlsZSB3 ZSBkbyBuZWVkIHRvIGd1YXJhbnRlZSB0aGF0IGNwdSB3aWxsIGZpbmlzaCBhbGwgcHJldmlvdXMg cmVhZHMgDQo+PiBiZWZvcmUNCj4+IHByb2dyZXNzaW5nIGZ1cnRoZXIuDQo+Pg0KPj4gU3VwcG9z ZSB3ZSBoYXZlIHNvbWV0aGluZyBsaWtlIHRoYXQ6DQo+Pg0KPj4gc3RydWN0IHsNCj4+IMKgwqDC oMKgdWludDY0X3Qgc2hhcmVkOw0KPj4gwqDCoMKgwqBydGVfc2VxbG9ja190IGxvY2s7DQo+PiB9 IGRhdGE7DQo+Pg0KPj4gLi4uDQo+PiBzbiA9IC4uLg0KPj4gdWludDY0X3QgeCA9IGRhdGEuc2hh cmVkOw0KPj4gLyogaW5zaWRlIHJ0ZV9zZXFsb2NrX3JlYWRfcmV0cnkoKTogKi8NCj4+IC4uLg0K Pj4gcnRlX2F0b21pY190aHJlYWRfZmVuY2UoX19BVE9NSUNfQUNRVUlSRSk7DQo+PiBlbmRfc24g PSBfX2F0b21pY19sb2FkX24oJmRhdGEubG9jay5zbiwgX19BVE9NSUNfUkVMQVhFRCk7DQo+Pg0K Pj4gSGVyZSB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHJlYWQgb2YgZGF0YS5zaGFyZWQgd2ls bCBhbHdheXMgaGFwcGVuDQo+PiBiZWZvcmUgcmVhZGluZyBvZiBkYXRhLmxvY2suc24uDQo+PiBJ dCBpcyBub3QgYSBwcm9ibGVtIG9uIElBIChhcyByZWFkcyBhcmUgbm90IHJlb3JkZXJlZCksIGJ1 dCBvbiANCj4+IG1hY2hpbmVzIHdpdGgNCj4+IHJlbGF4ZWQgbWVtb3J5IG9yZGVyaW5nIChBUk0s IGV0Yy4pwqAgaXQgY2FuIGhhcHBlbi4NCj4+IFNvIHRvIHByZXZlbnQgaXQgd2UgZG8gbmVlZCBh IHNpbmsgYmFycmllciBoZXJlIGZpcnN0IChBVE9NSUNfUkVMRUFTRSkNCj4gV2UgY2FuJ3QgdXNl IHN0b3JlLXJlbGVhc2Ugc2luY2UgdGhlcmUgaXMgbm8gd3JpdGUgb24gdGhlIHJlYWRlci1zaWRl Lg0KPiBBbmQgZmVuY2UtcmVsZWFzZSBvcmRlcnMgYWdhaW5zdCBsYXRlciBzdG9yZXMsIG5vdCBs YXRlciBsb2Fkcy4NCj4NCj4+DQo+PiBIb25uYXBwYSBhbmQgb3RoZXIgQVJNICYgYXRvbWljcyBl eHBlcnRzLCBwbGVhc2UgY29ycmVjdCBtZSBpZiBJIGFtIA0KPj4gd3JvbmcgaGVyZS4NCj4gVGhl IEMgc3RhbmRhcmQgKGNoYXB0ZXIgNy4xNy40IGluIHRoZSBDMTEgKGRyYWZ0KSkgaXNuJ3Qgc28g ZWFzeSB0byANCj4gZGlnZXN0LiBJZiB3ZSB0cnVzdCBQcmVzaGluZywgaGUgaGFzIGEgbW9yZSBh Y2Nlc3NpYmxlIGRlc2NyaXB0aW9uIA0KPiBoZXJlOiANCj4gaHR0cHM6Ly9wcm90ZWN0Mi5maXJl ZXllLmNvbS92MS91cmw/az0zMTMyMzMzNC01MDFkNTEyMi0zMTMyNzNhZi00NTQ0NDU1NTU3MzEt ZjRmNWIxZWVjMjk4MDI4MyZxPTEmZT0zNDc5ZWJmYS1lMThkLTRiZjgtODhmZS03NjgyM2E1MzE5 MTImdT1odHRwcyUzQSUyRiUyRnByZXNoaW5nLmNvbSUyRjIwMTMwOTIyJTJGYWNxdWlyZS1hbmQt cmVsZWFzZS1mZW5jZXMlMkYNCj4gIkFuIGFjcXVpcmUgZmVuY2UgcHJldmVudHMgdGhlIG1lbW9y eSByZW9yZGVyaW5nIG9mIGFueSByZWFkIHdoaWNoIA0KPiBwcmVjZWRlcyBpdCBpbiBwcm9ncmFt IG9yZGVyIHdpdGggYW55IHJlYWQgb3Igd3JpdGUgd2hpY2ggZm9sbG93cyBpdCANCj4gaW4gcHJv Z3JhbSBvcmRlci4iDQo+IGFuZCBoZXJlOiANCj4gaHR0cHM6Ly9wcm90ZWN0Mi5maXJlZXllLmNv bS92MS91cmw/az0zMTMyMzMzNC01MDFkNTEyMi0zMTMyNzNhZi00NTQ0NDU1NTU3MzEtNjRiMGVi YTQ1MGJlOTM0YiZxPTEmZT0zNDc5ZWJmYS1lMThkLTRiZjgtODhmZS03NjgyM2E1MzE5MTImdT1o dHRwcyUzQSUyRiUyRnByZXNoaW5nLmNvbSUyRjIwMTMxMTI1JTJGYWNxdWlyZS1hbmQtcmVsZWFz ZS1mZW5jZXMtZG9udC13b3JrLXRoZS13YXkteW91ZC1leHBlY3QlMkYgDQo+IChmb3IgQysrIGJ1 dCB0aGUgZGVmaW5pdGlvbiBzZWVtcyB0byBiZSBpZGVudGljYWwgdG8gdGhhdCBvZiBDMTEpLg0K PiBFc3NlbnRpYWxseSBhIExvYWRMb2FkK0xvYWRTdG9yZSBiYXJyaWVyIHdoaWNoIGlzIHdoYXQg d2Ugd2FudCB0byANCj4gYWNoaWV2ZS4NCj4NCj4gR0NDIDEwLjMgZm9yIEFBcmNoNjQvQTY0IElT QSBnZW5lcmF0ZXMgYSAiRE1CIElTSExEIiBpbnN0cnVjdGlvbi4gVGhpcyANCj4gd2FpdHMgZm9y IGFsbCBsb2FkcyBwcmVjZWRpbmcgKGluIHByb2dyYW0gb3JkZXIpIHRoZSBtZW1vcnkgYmFycmll ciB0byANCj4gYmUgb2JzZXJ2ZWQgYmVmb3JlIGFueSBtZW1vcnkgYWNjZXNzZXMgYWZ0ZXIgKGlu IHByb2dyYW0gb3JkZXIpIHRoZSANCj4gbWVtb3J5IGJhcnJpZXIuDQo+DQo+IEkgdGhpbmsgdGhl IGtleSB0byB1bmRlcnN0YW5kaW5nIGF0b21pYyB0aHJlYWQgZmVuY2VzIGlzIHRoYXQgdGhleSBh cmUgDQo+IG5vdCBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBtZW1vcnkgYWNjZXNzICh1bmxp a2UgbG9hZC1hY3F1aXJlIGFuZCANCj4gc3RvcmUtcmVsZWFzZSkgc28gdGhleSBjYW4ndCBvcmRl ciBlYXJsaWVyIG9yIGxhdGVyIG1lbW9yeSBhY2Nlc3NlcyANCj4gYWdhaW5zdCBzb21lIHNwZWNp ZmljIG1lbW9yeSBhY2Nlc3MuIEluc3RlYWQgdGhlIGZlbmNlIG9yZGVycyBhbnkvYWxsIA0KPiBl YXJsaWVyIGxvYWRzIGFuZC9vciBzdG9yZXMgYWdhaW5zdCBhbnkvYWxsIGxhdGVyIGxvYWRzIG9y IHN0b3JlcyANCj4gKGRlcGVuZGluZyBvbiBhY3F1aXJlIG9yIHJlbGVhc2UpLg0KPg0KPj4NCj4+ Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgZW5kX3NuID0gX19hdG9taWNfbG9hZF9uKCZzZXFsb2NrLT5z biwgX19BVE9NSUNfUkVMQVhFRCk7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIHJldHVybiB1bmxp a2VseShiZWdpbl9zbiAmIDEgfHwgYmVnaW5fc24gIT0gZW5kX3NuKTsNCj4+Pj4+ICt9DQo+Pj4+ PiArDQo+Pj4+PiArX19ydGVfZXhwZXJpbWVudGFsDQo+Pj4+PiArc3RhdGljIGlubGluZSB2b2lk DQo+Pj4+PiArcnRlX3NlcWxvY2tfd3JpdGVfYmVnaW4ocnRlX3NlcWxvY2tfdCAqc2VxbG9jaykN Cj4+Pj4+ICt7DQo+Pj4+PiArwqDCoMKgIHVpbnQ2NF90IHNuOw0KPj4+Pj4gKw0KPj4+Pj4gK8Kg wqDCoCAvKiB0byBzeW5jaHJvbml6ZSB3aXRoIG90aGVyIHdyaXRlcnMgKi8NCj4+Pj4+ICvCoMKg wqAgcnRlX3NwaW5sb2NrX2xvY2soJnNlcWxvY2stPmxvY2spOw0KPj4+Pj4gKw0KPj4+Pj4gK8Kg wqDCoCBzbiA9IHNlcWxvY2stPnNuICsgMTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgX19hdG9t aWNfc3RvcmVfbigmc2VxbG9jay0+c24sIHNuLCBfX0FUT01JQ19SRUxBWEVEKTsNCj4+Pj4+ICsN Cj4+Pj4+ICvCoMKgwqAgLyogX19BVE9NSUNfUkVMRUFTRSB0byBwcmV2ZW50IHN0b3JlcyBhZnRl ciAoaW4gcHJvZ3JhbSBvcmRlcikNCj4+Pj4+ICvCoMKgwqDCoCAqIGZyb20gaGFwcGVuaW5nIGJl Zm9yZSB0aGUgc24gc3RvcmUuDQo+Pj4+PiArwqDCoMKgwqAgKi8NCj4+Pj4+ICvCoMKgwqAgcnRl X2F0b21pY190aHJlYWRfZmVuY2UoX19BVE9NSUNfUkVMRUFTRSk7DQo+Pj4+IEkgdGhpbmsgaXQg bmVlZHMgdG8gYmUgJ19fQVRPTUlDX0FDUVVJUkUnIGhlcmUgaW5zdGVhZCBvZiANCj4+Pj4gJ19f QVRPTUlDX1JFTEVBU0UnLg0KPj4+DQo+Pj4gUGxlYXNlIGVsYWJvcmF0ZSBvbiB3aHkuDQo+Pg0K Pj4gQXMgeW91IHNhaWQgaW4gdGhlIGNvbW1lbnRzIGFib3ZlLCB3ZSBuZWVkIHRvIHByZXZlbnQg bGF0ZXIgc3RvcmVzDQo+PiB0byBiZSBleGVjdXRlZCBiZWZvcmUgdGhhdCBwb2ludC4gU28gd2Ug ZG8gbmVlZCBhIGhvaXN0IGJhcnJpZXIgaGVyZS4NCj4+IEFGQUlLIHRvIGd1YXJhbnRlZSBhIGhv aXN0IGJhcnJpZXIgJ19fQVRPTUlDX0FDUVVJUkUnIGlzIHJlcXVpcmVkLg0KPiBBbiBhY3F1aXJl IGZlbmNlIHdvdWxkbid0IG9yZGVyIGFuIGVhcmxpZXIgc3RvcmUgKHRoZSB3cml0ZSB0byANCj4g c2VxbG9jay0+c24pIGZyb20gYmVpbmcgcmVvcmRlcmVkIHdpdGggc29tZSBsYXRlciBzdG9yZSAo ZS5nLiB3cml0ZXMgDQo+IHRvIHRoZSBwcm90ZWN0ZWQgZGF0YSksIHRodXMgaXQgd291bGQgYWxs b3cgcmVhZGVycyB0byBzZWUgdXBkYXRlZCANCj4gZGF0YSAocG9zc2libHkgdG9ybikgd2l0aCBh IHByZS11cGRhdGUgc2VxdWVuY2UgbnVtYmVyLiBXZSBuZWVkIGEgDQo+IFN0b3JlU3RvcmUgYmFy cmllciBmb3Igb3JkZXJpbmcgdGhlIFNOIHN0b3JlIGFuZCBkYXRhIHN0b3JlcyA9PiANCj4gZmVu Y2UocmVsZWFzZSkuDQo+DQo+IEFjcXVpcmUgYW5kIHJlbGVhc2VzIGZlbmNlcyBjYW4gKGFsc28p IGJlIHVzZWQgdG8gY3JlYXRlIA0KPiBzeW5jaHJvbml6ZS13aXRoIHJlbGF0aW9uc2hpcHMgKHRo aXMgaXMgaG93IHRoZSBDIHN0YW5kYXJkIGRlZmluZXMgDQo+IHRoZW0pLiBQcmVzaGluZyBoYXMg YSBnb29kIGV4YW1wbGUgb24gdGhpcy4gQmFzaWNhbGx5DQo+IFRocmVhZCAxOg0KPiBkYXRhID0g MjQyOw0KPiBhdG9taWNfdGhyZWFkX2ZlbmNlKGF0b21pY19yZWxlYXNlKTsNCj4gYXRvbWljX3N0 b3JlX24oJmd1YXJkLCAxLCBhdG9taWNfcmVsYXhlZCk7DQo+DQo+IFRocmVhZCAyOg0KPiB3aGls ZSAoYXRvbWljX2xvYWRfbigmZ3VhcmQsIGF0b21pY19yZWxheGVkKSAhPSAxKSA7DQo+IGF0b21p Y190aHJlYWRfZmVuY2UoYXRvbWljX2FjcXVpcmUpOw0KPiBkb19zb21ldGhpbmcoZGF0YSk7DQo+ DQo+IFRoZXNlIGFyZSBvYnZpb3VzIGFuYWxvZ3VlcyB0byBzdG9yZS1yZWxlYXNlIGFuZCBsb2Fk LWFjcXVpcmUsIHRodXMgDQo+IHRoZSBhY3F1aXJlICYgcmVsZWFzZSBuYW1lcyBvZiB0aGUgZmVu Y2VzLg0KPg0KPiAtIE9sYQ0KPg0KPj4NCj4+Pg0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ICtf X3J0ZV9leHBlcmltZW50YWwNCj4+Pj4+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4+Pj4+ICtydGVf c2VxbG9ja193cml0ZV9lbmQocnRlX3NlcWxvY2tfdCAqc2VxbG9jaykNCj4+Pj4+ICt7DQo+Pj4+ PiArwqDCoMKgIHVpbnQ2NF90IHNuOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBzbiA9IHNlcWxv Y2stPnNuICsgMTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgLyogc3luY2hyb25pemVzLXdpdGgg dGhlIGxvYWQgYWNxdWlyZSBpbiBydGVfc2VxbG9ja19iZWdpbigpICovDQo+Pj4+PiArwqDCoMKg IF9fYXRvbWljX3N0b3JlX24oJnNlcWxvY2stPnNuLCBzbiwgX19BVE9NSUNfUkVMRUFTRSk7DQo+ Pj4+PiArDQo+Pj4+PiArwqDCoMKgIHJ0ZV9zcGlubG9ja191bmxvY2soJnNlcWxvY2stPmxvY2sp Ow0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+DQoNCkkgaGF2ZSBub3RoaW5nIHRvIGFkZCwgYnV0IE9s YSdzIG1haWwgc2VlbXMgdG8gaGF2ZSBiZWVuIGJsb2NrZWQgZnJvbSANCnRoZSBkZXYgbGlzdCwg c28gSSdtIHBvc3RpbmcgdGhpcyBhZ2Fpbi4NCg0K