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 3C94EA00C5; Fri, 8 Jul 2022 14:44:03 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 19D0C406B4; Fri, 8 Jul 2022 14:44:03 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70075.outbound.protection.outlook.com [40.107.7.75]) by mails.dpdk.org (Postfix) with ESMTP id 414884021E; Fri, 8 Jul 2022 14:44:01 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CnbJNIjAM7Ll9uSbiYMbsxFWvLl0SsJSi6iR7WAap4t65XYfA2kXYo1TyrA+/2jNQA1ZlfC9fEEnsNnKd08OnpW8Cp1visBa3uMRzf6ZXdPMWX3gEt4dvxKPb5gZ0kTvPTK5JLcu/nQmUsqgU6SHdr82kOkVcAcezgndejV8mg+ktVPhjh7MeeEKKux/+LNvPa0QnXAyXX2mZYp5AphaFRvAfifm7SJMuoTyYMM7RVNTCBtIpa96MMpLvoKsoJ/a5sLkeGHsDTNElJMNHDa0JN9sesaG70KvE8rAmNX54vXS77FiD01Zh6c6xtAsj0FGAPZ89Wln4HQXRfdoZfT1RQ== 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=UAfNLVTN2g9lx9g/ZQiJuUWl9/wMtz4VI3VJqzcoenk=; b=dWwaqIXlcvR7JnTdoDK56v9xEGQMCj99FzUy42OLU5mMtXcvMSYduWiDap0I6eU1Y9xbRkjFTHCcINHih2ZkIu2ezT4ef5yPk1/V87GA8r/egsGmSAlCeNLf+ambZJmu+NCi7FYVoVjAdEDqsqD+p1bqzMV6lMwB0XwoTGvIYO2bQGY56kuz3Psw8ueXPdRWzvbirIsW/hsbg6yrGaUgKa0ZmxAqj/Sr7llQYkChmDx0+RjcO0/I2OFKF9LmKs28Ltgb+XCVA51AxuSNCTLZ71Np/FhcRydVXn69JWTWL7a347fkJphjN7PqcI8azp47YBXCSV9ksCYTOutelG7n2w== 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=UAfNLVTN2g9lx9g/ZQiJuUWl9/wMtz4VI3VJqzcoenk=; b=elfBz4DGN6A3u/Jp9oTWc+RmGjjtWmX18tvQeBdkR+3l9Qxg6MCcx9Jk7b61WGRkeoilHivfzvWy6fkCnSgVf8B0NJ2Gsqv2y8Se8d92GFqsESLn52QZ3c6f7VOO0FRn3njhvWA/Solcmpq1DjG6Wlm2L+ZBZ1Tw9GNBLOx1VnE= Received: from DB7PR07MB5978.eurprd07.prod.outlook.com (2603:10a6:10:80::15) by VI1PR0701MB2656.eurprd07.prod.outlook.com (2603:10a6:801:c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.17; Fri, 8 Jul 2022 12:43:59 +0000 Received: from DB7PR07MB5978.eurprd07.prod.outlook.com ([fe80::45fc:aa82:15fd:875f]) by DB7PR07MB5978.eurprd07.prod.outlook.com ([fe80::45fc:aa82:15fd:875f%7]) with mapi id 15.20.5417.015; Fri, 8 Jul 2022 12:43:58 +0000 From: =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= To: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= , "olivier.matz@6wind.com" CC: Emil Berg , "bruce.richardson@intel.com" , "stephen@networkplumber.org" , "stable@dpdk.org" , "bugzilla@dpdk.org" , "dev@dpdk.org" , Onar Olsen Subject: Re: [PATCH 2/2] net: have checksum routines accept unaligned data Thread-Topic: [PATCH 2/2] net: have checksum routines accept unaligned data Thread-Index: AQHYkjBQspW89wI+1ka6BCnnbZPHfa1zcSqAgAD7PQA= Date: Fri, 8 Jul 2022 12:43:58 +0000 Message-ID: <6839721a-8050-0e11-0c66-0f735ec8c56d@ericsson.com> References: <98CBD80474FA8B44BF855DF32C47DC35D87189@smartserver.smartshare.dk> <20220707183450.3203361-1-hofors@lysator.liu.se> <20220707183450.3203361-2-hofors@lysator.liu.se> <98CBD80474FA8B44BF855DF32C47DC35D871B1@smartserver.smartshare.dk> In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35D871B1@smartserver.smartshare.dk> 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.11.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: 5070de5e-80b9-40fc-a7f4-08da60df870d x-ms-traffictypediagnostic: VI1PR0701MB2656:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ZzbIEp/vuyzKqZs9a5MpfIJiKIe/7np2ChT1zcgpBEobV4jYcxTxgiTYqFK2VlM4YgN07KsBksq7J6romHgOv6nFuKs1ycUVK/KCsgF9hClgkeXEdvd+2t4TgisHp/UYirMXb637Z7dgEDu9wiljWEwrkW/UoLriwWhHV/9ScpG6wXxgnZGS3MyvbwkY5HiGafOjqs8APD6Ky5MF7nvnHQvGFpWeRCECz/mgWSXUWMOS15qeHcOI57IzZdWnKZNEMZBdWkzS/g7iHWXuHoQAy7kqmk5HfvWDZ0IGWNiqg9KU2cCkGA1sMdSmfRtbGDGRWPRACY1NlgPULocz0Ssa59hm7QmkqeVvfSw6HwReO8zRtlsOVqBa+CtDNyuiM8XmF5EAFQZoHsY0UK57Bph7xPfQ6DnqAjA3eDGhbmuWYpZV7Za87NZi9JfIiMSyv0gLe6ghb1KTmkNaLQxa0bQsbKi9jNUNQe0diHxOM6tqS7Lobi7no/st+UqTElO+718JV1yBCRyR5d+J6l28g/b7n+ekdcv2HmjZx31PBArOinco97SFku3n22tYj5APl+tTw1+6Kw9mP7/hB3EyLbXZJERlq7ZDARDZEhZ0438qlI5miUpXO93h4f887WG8sXn1ggvVi1jZVM3qwPFx+OX9wJEnEC/c5GSjFBUV8snkzVFZHpzt+XUFNqN0Dax1artwtibqQTw3S+wCAdgXSbvLN/EUrhR6PMS/OtW8py8crtDaI1FBBhRnDxCEnzuJ+51bEcMs9f5UHFd6w09C8mKSNWc6SPx8zAUP/k85OPMrpoiUYZGehwKrqJRECjVUOER3G9QnhkFIrS3E/yYPOOMZLVVBU9t0THAyLYJpCY51hHBg8ZXInEVTodBzKUzq4A2lLxIH+F3IBwE75DbsBndTTCNa08e+x0iRf+u2h8Lw4dyaOtnp3MQ5Lf8h2p/T2HoL 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:(13230016)(4636009)(39860400002)(376002)(366004)(346002)(396003)(136003)(478600001)(41300700001)(107886003)(26005)(6486002)(8936002)(5660300002)(6506007)(6512007)(66574015)(64756008)(186003)(2616005)(2906002)(31696002)(86362001)(53546011)(71200400001)(82960400001)(76116006)(66476007)(83380400001)(31686004)(85202003)(8676002)(54906003)(36756003)(85182001)(66556008)(38100700002)(4326008)(122000001)(66446008)(110136005)(38070700005)(91956017)(316002)(66946007)(45980500001)(43740500002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?djBPendneDhvSnJZcDlIK045WmVjUndObWNWSzJSem9YcDNkZ1VJanAzNllC?= =?utf-8?B?WlRBS0k2MkNhVEFDRHVJZWFKaXJWUXJEeXRsaU16RmY4SHd6RVlFaFdXL0NU?= =?utf-8?B?WDdZRktTbGFOV29hRGFWNTd4cUJaVVV6V2NHVWhrYjRvVG91SklpdFMyUFpK?= =?utf-8?B?L2YwdjJnekZTNVloOHViMVBJdldDdWRUcDJtNmJIZGJ6SEJneHN1WFFtRFZE?= =?utf-8?B?SkNYbTNzQVR3d0lxdDFrbVdzemFGRWZ6Z085anFzM1V1eG95SXlvV2ZNbWps?= =?utf-8?B?U29nMXpwMEZHdUVpVjVEenhCUTJsK0JUU1ZjQkpkOUxDd3lFeFpBK2N0bkl2?= =?utf-8?B?eDNSWFVwRkZnZ3JKcTRjOXM4TU91UENXRUdKS0o4cWxEV3ZNd01PQzRIb1hY?= =?utf-8?B?V0p4amVkWERWL3JNUUgxTjV0cWJSeXYzd09RRGRUTlRUME9UcExCTWFuVUJq?= =?utf-8?B?VjlKQlJiOWhZLy9VeXgvNGxwYU1vTFRtamdtZFNVSlFTMGZDZlM4THYyZTBI?= =?utf-8?B?d3FlbS9DMGNxcnB6RU9uby91TUdNQXlFM1ZBN2NBbURSMTEyNGprOHJ3TjN0?= =?utf-8?B?cDVNdDVkVm5DcUtiNWFZWDVmc3JoblR4VUlOQzBUd3FqL012bXNibWRuUmVC?= =?utf-8?B?cWQ4MEM2bitzRTM2UlhHb25KQ0FCM3ViY251bUhxSnlEd3YrWVgxY2RqMHZN?= =?utf-8?B?NWgwSDVnSityRk5zQjgyUzg4QVdrK25QWjNhVVlkbFAvVjlVZDFBNW42NDFL?= =?utf-8?B?dUxyWVlHaE1kVG8zOFN5SzJ5VmtVbVB1SExoWWluZDNZNEJNalZ5cGhkSzN4?= =?utf-8?B?dkg1dTM2dmRlTDAvVjAvUFFhQlFiWGxXNytWUVZUL3dGUWRPUTJMZTRuUXBP?= =?utf-8?B?di9Xb3pOa1oxV05FTHFoZVg5Ym5JenFIOHJPSTkrdXRpU3laSHd1NGppVTBL?= =?utf-8?B?R0FTTCtyMi9PSnZUOGpkd0k5ZlRBWkc5ZlE3bFVxRlJvNURhRmlKRTR2ME5M?= =?utf-8?B?VU5ZWkZWWlRHdlR4dXJYMStudjlORWRWOTkwWHl4dGNSejl0MWVOWDRNRHRU?= =?utf-8?B?TXhrQlIyYzR4RS9zZDZyM0ZoeDZsOTA4dFRkQzB3VGRCQ0ZMdlFORVl2OHlh?= =?utf-8?B?ZEhGa3h4b1RqMi95dHp0RklzR3AvYUoyWm1MaVIwUDRvM3BKM2RwQmtyT2Fa?= =?utf-8?B?ZXlKdEZiSzlvK2NvU0s2TnI2aXhTMkZTV2VpbE04Z1M4K1A5QlkxMTVwM0lv?= =?utf-8?B?OWE5R1NXMGdzN29rM2VoZ3BCYk1FMnNTKy9BMGNCUXI3eS9Idms4bjFHSVpa?= =?utf-8?B?dk5wZTVJNGY0Y1VZQXRFajdhRjM3N2tzenpvejJMYlN5YXFLbkRWRjBGYVZO?= =?utf-8?B?OVFDZllLRWtEQnhlMjQ5NlgrWU1XZ1FSdkIwWXZIc3o4M0ZyVmJGamdKcHBw?= =?utf-8?B?Y0p6VU1ENGQ3RnRhR3JZNjJNbC82Y0dOWlZjaEVBWndXNXBLZThzZHJlZi9B?= =?utf-8?B?ekNJZW9nT3ZTalNodXVPSDV2SzRqTnJDY2ZtSkpvOVlsRHR1UmUvSEpIZkx1?= =?utf-8?B?OVBRSng5OUd5WS9DTW1NN2pIV3dOZVpGdEg4aEVvcE91b3ZqVWdZSS9jR3Rz?= =?utf-8?B?bVZuWngxVnN0RHF0MG9odFFmT1BsVjhVMjJUdmZleXVKd0ZDbHFDUndseHRw?= =?utf-8?B?L05aOGxOOWxTSE11NlFqdWFrc0l4WWNhZlREZGhNMEd2eDhQY3NSZEg1SGtq?= =?utf-8?B?blpTYkI5VzNxQWg0V2hDMFlrcWRaMTB2VWlhK1VJelA3c0IzRkxhVjFEeUZ4?= =?utf-8?B?RUw4NlkwZ0tGQnUrdk5rdzFWMVYyRnkybDU2cWVjWGpJeUdCZzRlZ3A5Q3B5?= =?utf-8?B?M2Z5c0l3Ly9COWdQQjJKNUNTWnlvaTdQTUphUWlKcGM5MFZxRFdLSHA5cjls?= =?utf-8?B?VmRPbTUyMVZWNHdxUStUd1hhUWpwUGh6QVZKUDJvWmYxcjlYamJRSHBuWjVz?= =?utf-8?B?NnBOZGg0a1E4T3l2WW1RTHFqQmtlY1RtSUxoRjRxN1htVXMyRHJNTjVwY1NQ?= =?utf-8?B?cWhsQXFVdURvVlBiQ0xIZjlFVDEwUktBaVZQUkRYeHpFMjFraGMvZzhOeTdh?= =?utf-8?B?SHh5bnlEU1JjalF2NjdFUi90MHFscnJGWmdmcGtqKzBwNTlJN2o3ZDN4Ymtz?= =?utf-8?B?V2c9PQ==?= 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: 5070de5e-80b9-40fc-a7f4-08da60df870d X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jul 2022 12:43:58.5514 (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: QUryQyEEG9V82F331k1l05MKlpulRy9hB+Px7thvLGOG5iEycs2N2WZWItqEjjap4S2eCltPehHhyF7FQlsc0v1BCLYAjO0yx1zR7lkdZl4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0701MB2656 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 T24gMjAyMi0wNy0wNyAyMzo0NCwgTW9ydGVuIEJyw7hydXAgd3JvdGU6DQo+PiBGcm9tOiBNYXR0 aWFzIFLDtm5uYmxvbSBbbWFpbHRvOmhvZm9yc0BseXNhdG9yLmxpdS5zZV0NCj4+IFNlbnQ6IFRo dXJzZGF5LCA3IEp1bHkgMjAyMiAyMC4zNQ0KPj4NCj4+IEZyb206IE1hdHRpYXMgUsO2bm5ibG9t IDxtYXR0aWFzLnJvbm5ibG9tQGVyaWNzc29uLmNvbT4NCj4+DQo+PiBfX3J0ZV9yYXdfY2tzdW0o KSAodXNlZCBieSBydGVfcmF3X2Nrc3VtKCkgYW1vbmcgb3RoZXJzKSBhY2Nlc3NlZCBpdHMNCj4+ IGRhdGEgdGhyb3VnaCBhbiB1aW50MTZfdCBwb2ludGVyLCB3aGljaCBhbGxvd2VkIHRoZSBjb21w aWxlciB0byBhc3N1bWUNCj4+IHRoZSBkYXRhIHdhcyAxNi1iaXQgYWxpZ25lZC4gVGhpcyBpbiB0 dXJuIHdvdWxkLCB3aXRoIGNlcnRhaW4NCj4+IGFyY2hpdGVjdHVyZXMgYW5kIGNvbXBpbGVyIGZs YWcgY29tYmluYXRpb25zLCByZXN1bHQgaW4gY29kZSB3aXRoIFNJTUQNCj4+IGxvYWQgb3Igc3Rv cmUgaW5zdHJ1Y3Rpb25zIHdpdGggcmVzdHJpY3Rpb25zIG9uIGRhdGEgYWxpZ25tZW50Lg0KPj4N Cj4+IFRoaXMgcGF0Y2gga2VlcHMgdGhlIG9sZCBhbGdvcml0aG0sIGJ1dCBkYXRhIGlzIHJlYWQg dXNpbmcgbWVtY3B5KCkNCj4+IGluc3RlYWQgb2YgZGlyZWN0IHBvaW50ZXIgYWNjZXNzLCBmb3Jj aW5nIHRoZSBjb21waWxlciB0byBhbHdheXMNCj4+IGdlbmVyYXRlIGNvZGUgdGhhdCBoYW5kbGVz IHVuYWxpZ25lZCBpbnB1dC4gVGhlIF9fbWF5X2FsaWFzX18gR0NDDQo+PiBhdHRyaWJ1dGUgaXMg bm8gbG9uZ2VyIG5lZWRlZC4NCj4+DQo+PiBUaGUgZGF0YSBvbiB3aGljaCB0aGUgSW50ZXJuZXQg Y2hlY2tzdW0gZnVuY3Rpb25zIG9wZXJhdGVzIGFyZSBhbG1vc3QNCj4+IGFsd2F5cyAxNi1iaXQg YWxpZ25lZCwgYnV0IHRoZXJlIGFyZSBleGNlcHRpb25zLiBJbiBwYXJ0aWN1bGFyLCB0aGUNCj4+ IFBEQ1AgcHJvdG9jb2wgaGVhZGVyIG1heSAobGl0ZXJhbGx5KSBoYXZlIGFuIG9kZCBzaXplLg0K Pj4NCj4+IFBlcmZvcm1hbmNlIGltcGFjdCBzZWVtcyB0byByYW5nZSBmcm9tIG5vbmUgdG8gYSB2 ZXJ5IHNsaWdodA0KPj4gcmVncmVzc2lvbi4NCj4+DQo+PiBCdWd6aWxsYSBJRDogMTAzNQ0KPj4g Q2M6IHN0YWJsZUBkcGRrLm9yZw0KPj4NCj4+IFNpZ25lZC1vZmYtYnk6IE1hdHRpYXMgUsO2bm5i bG9tIDxtYXR0aWFzLnJvbm5ibG9tQGVyaWNzc29uLmNvbT4NCj4+IC0tLQ0KPj4gICBsaWIvbmV0 L3J0ZV9pcC5oIHwgMTkgKysrKysrKysrKysrLS0tLS0tLQ0KPj4gICAxIGZpbGUgY2hhbmdlZCwg MTIgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkNCj4+DQo+PiBkaWZmIC0tZ2l0IGEvbGli L25ldC9ydGVfaXAuaCBiL2xpYi9uZXQvcnRlX2lwLmgNCj4+IGluZGV4IGI1MDI0ODE2NzAuLmE5 ZTYyNTFmMTQgMTAwNjQ0DQo+PiAtLS0gYS9saWIvbmV0L3J0ZV9pcC5oDQo+PiArKysgYi9saWIv bmV0L3J0ZV9pcC5oDQo+PiBAQCAtMTYwLDE4ICsxNjAsMjMgQEAgcnRlX2lwdjRfaGRyX2xlbihj b25zdCBzdHJ1Y3QgcnRlX2lwdjRfaGRyDQo+PiAqaXB2NF9oZHIpDQo+PiAgIHN0YXRpYyBpbmxp bmUgdWludDMyX3QNCj4+ICAgX19ydGVfcmF3X2Nrc3VtKGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90 IGxlbiwgdWludDMyX3Qgc3VtKQ0KPj4gICB7DQo+PiAtCS8qIGV4dGVuZCBzdHJpY3QtYWxpYXNp bmcgcnVsZXMgKi8NCj4+IC0JdHlwZWRlZiB1aW50MTZfdCBfX2F0dHJpYnV0ZV9fKChfX21heV9h bGlhc19fKSkgdTE2X3A7DQo+PiAtCWNvbnN0IHUxNl9wICp1MTZfYnVmID0gKGNvbnN0IHUxNl9w ICopYnVmOw0KPj4gLQljb25zdCB1MTZfcCAqZW5kID0gdTE2X2J1ZiArIGxlbiAvIHNpemVvZigq dTE2X2J1Zik7DQo+PiArCWNvbnN0IHZvaWQgKmVuZDsNCj4gDQo+IEkgd291bGQgc2V0ICJlbmQi IGhlcmUgaW5zdGVhZCwgcG9zc2libHkgbWFraW5nIHRoZSBwb2ludGVyIGNvbnN0IHRvby4gQW5k IGFkZCBzcGFjZXMgYXJvdW5kICcvJy4NCj4gY29uc3Qgdm9pZCAqIGNvbnN0IGVuZCA9IFJURV9Q VFJfQUREKGJ1ZiwgKGxlbiAvIHNpemVvZih1aW50MTZfdCkpICogc2l6ZW9mKHVpbnQxNl90KSk7 DQo+IA0KDQpJIGRvbid0IHRoaW5rIHRoYXQgbWFrZXMgdGhlIGNvZGUgbW9yZSByZWFkYWJsZS4N Cg0KPj4NCj4+IC0JZm9yICg7IHUxNl9idWYgIT0gZW5kOyArK3UxNl9idWYpDQo+PiAtCQlzdW0g Kz0gKnUxNl9idWY7DQo+PiArCWZvciAoZW5kID0gUlRFX1BUUl9BREQoYnVmLCAobGVuL3NpemVv Zih1aW50MTZfdCkpICoNCj4+IHNpemVvZih1aW50MTZfdCkpOw0KPj4gKwkgICAgIGJ1ZiAhPSBl bmQ7IGJ1ZiA9IFJURV9QVFJfQUREKGJ1Ziwgc2l6ZW9mKHVpbnQxNl90KSkpIHsNCj4+ICsJCXVp bnQxNl90IHY7DQo+PiArDQo+PiArCQltZW1jcHkoJnYsIGJ1Ziwgc2l6ZW9mKHVpbnQxNl90KSk7 DQo+PiArCQlzdW0gKz0gdjsNCj4+ICsJfQ0KPj4NCj4+ICAgCS8qIGlmIGxlbmd0aCBpcyBvZGQs IGtlZXBpbmcgaXQgYnl0ZSBvcmRlciBpbmRlcGVuZGVudCAqLw0KPj4gICAJaWYgKHVubGlrZWx5 KGxlbiAlIDIpKSB7DQo+PiArCQl1aW50OF90IGxhc3Q7DQo+PiAgIAkJdWludDE2X3QgbGVmdCA9 IDA7DQo+PiAtCQkqKHVuc2lnbmVkIGNoYXIgKikmbGVmdCA9ICooY29uc3QgdW5zaWduZWQgY2hh ciAqKWVuZDsNCj4+ICsNCj4+ICsJCW1lbWNweSgmbGFzdCwgZW5kLCAxKTsNCj4+ICsJCSoodW5z aWduZWQgY2hhciAqKSZsZWZ0ID0gbGFzdDsNCj4gDQo+IENvdWxkbid0IHlvdSBqdXN0IG1lbWNw eSgmbGVmdCwgZW5kLCAxKSwgYW5kIG9taXQgdGhlIHRlbXBvcmFyeSB2YXJpYWJsZSAibGFzdCI/ DQo+IA0KDQpHb29kIHBvaW50Lg0KDQpJIGRvbid0IGxpa2UgaG93IHRoaXMgY29kZSBpcyBjbGV2 ZXIgdmlzLcOgLXZpcyBieXRlIG9yZGVyLCBidXQgdGhlbiBJIA0KYWxzbyBkb24ndCBoYXZlIGEg YmV0dGVyIHN1Z2dlc3Rpb24uDQoNCj4+ICAgCQlzdW0gKz0gbGVmdDsNCj4+ICAgCX0NCj4+DQo+ PiAtLQ0KPj4gMi4yNS4xDQo+Pg0KPiANCj4gV2l0aCBvdXIgd2l0aG91dCBteSBzdWdnZXN0ZWQg Y2hhbmdlcywgaXQgbG9va3MgZ29vZC4NCj4gDQo+IFJldmlld2VkLWJ5OiBNb3J0ZW4gQnLDuHJ1 cCA8bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tPg0KPiANCg0KVGhhbmtzIQ0KDQo=