Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp3819308pxb; Mon, 30 Aug 2021 11:20:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw9uGRvQX8czYyfH87EV4LSfgFGnU4vf4SdzDgVq5ZiJAW5MkZbNrk+OeD/7aBEf6gsPD2s X-Received: by 2002:a50:ed09:: with SMTP id j9mr25244546eds.164.1630347627925; Mon, 30 Aug 2021 11:20:27 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1630347627; cv=pass; d=google.com; s=arc-20160816; b=kfvlpcnY2LT7OjVEsDP8Clc5P8Ekz/oahf+Qyg6Lf5FIb4HpCclj33touBP94BVKSR lme8uSWmcBtPqkO0+TFw8roYahYMz65NwwFq1NhII3gi6dhdT+8HFJnudvulv6QybZqY OcranihyhIVjLSLocD5BEotmb0tKtfzW6AT8ahBXO/MQ3MLj28J3htedPBlqCKHHunKJ dmOFIMoc9kCKBYgKw15/yADbsJq4DRLRPKU0w/wxUZ1flKDyoHOK8o8MZX8kyiWYY4u/ i7kX2DjxwTw5KmQVriURK7I8GMt+3StN0jxcidY8dRcuJcEwjfpb8gjCzCeUH4eOvWSD t46A== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=5BLsMdIf53pDaBCMlHv1BFigow06Ey6lalUaNOCxAGY=; b=i2pLZhZgzSuhrmoK7LsgheSfii+lXdDoHN8qob6aSKbDnPgdT/oFlkWCNyYi4dtPX7 xLsqbQrhmqqLipCY0bU/3doaBhyvOPFVuoXDVgxgYhu3jSmxZ2K6m+BB6DwCt1E9GCWI CEyVKIYHpnu87xx0HcEfiVswPxTLrMfCusmxUK6PczAnkcmMu5MtdurmEN+Wr3lpWlWr Q6RfuJcBbELyyEdCGI6XTxTqgwyFlJKcpjjbGfEJ+GsgZPNMmtf33ff9yWXNdtXChyq1 /L7q7PrzMQ5hekYsooFfoRzzfn3cpTpcdCo6KomQehXCQujOH7ao7teHMVcT3toYcisq dUNw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@hammerspace.com header.s=selector2 header.b=LkAhWwEh; arc=pass (i=1 spf=pass spfdomain=hammerspace.com dkim=pass dkdomain=hammerspace.com dmarc=pass fromdomain=hammerspace.com); spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hammerspace.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u2si13240538ejy.557.2021.08.30.11.19.46; Mon, 30 Aug 2021 11:20:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@hammerspace.com header.s=selector2 header.b=LkAhWwEh; arc=pass (i=1 spf=pass spfdomain=hammerspace.com dkim=pass dkdomain=hammerspace.com dmarc=pass fromdomain=hammerspace.com); spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hammerspace.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238548AbhH3SUX (ORCPT + 99 others); Mon, 30 Aug 2021 14:20:23 -0400 Received: from mail-bn8nam11on2113.outbound.protection.outlook.com ([40.107.236.113]:63809 "EHLO NAM11-BN8-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S238830AbhH3SS7 (ORCPT ); Mon, 30 Aug 2021 14:18:59 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aRrQWGXaRGHT/KBVBmeSwJNGCpDZJdB6UyCRgQJcx8SJVVQYOKlUclOif8KPE8vWLv2/mB+7CV1AWcLwUT7p+0v/ZoMEATGgZ7q4iJJcbh378OvwviFixIzlxR3EAESq9jQtywJoP88wQV71LEdAtafzgM0cxormcUcUnlFi04qPkyTuHRT2nmeyd/5UWts1cozGDO5GuCd/TqyYCUohhNBfF1ytg5WZYtAvqEgSbckKuahVzKzC0uwJLsweNC4auqiISgquvjTtr0O6tU93STBhO5qbiR7nLE40kAyqsFGGeL1pQXoViQNFFq3n1SZGYgcjt1LUXavItjm4Pxdcfg== 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; bh=5BLsMdIf53pDaBCMlHv1BFigow06Ey6lalUaNOCxAGY=; b=fGpnjkMt2A/JrFdxq3ekEGMH4O/1VOLOijvrP5uE5e82Qokz2oFqP4a9M+pa+iuh2H8e52wTagJ+nO0ruKMALNAs0Gt3KWyPKNvlrABztRnOJv6faEnkv3hnTEM5vm0JeIyG4IQvWX4DpXp1tn61X7JyeJ93MsvmF4V3xo2d+bAZOlgb6DS/eC0kxR6Rj313MA5GZrPpQQ6bv1xsIy3JzfTgstsWUaBciUr3+QXHQeJ11yO9aIMSiEZsQ0a+vQHbWy5rmcuasDFcIRTwjjKGS1jmuaxbuCjQ8CojgH1lQdB+e2Da50bhT2757XA6WYE9q9GHB1qxerIN6wabBb4kVA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hammerspace.com; dmarc=pass action=none header.from=hammerspace.com; dkim=pass header.d=hammerspace.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hammerspace.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5BLsMdIf53pDaBCMlHv1BFigow06Ey6lalUaNOCxAGY=; b=LkAhWwEhTrpupp8VUovSF3mYCBLE5SP3nCIVrg2yaJ3PzMhoKqIhMUfxSS+tfBMyjhP6eI7yT1F0QvUdZD9AIw7rvTvWsBji6XxwO5QEBCz2zEREkD2Gz1xf7hmfuGHZVSrBLoMWWw0UkAQNHCa+rxLMPIm7hPUzucaLuuU6Np0= Received: from CH0PR13MB5084.namprd13.prod.outlook.com (2603:10b6:610:111::7) by CH2PR13MB3414.namprd13.prod.outlook.com (2603:10b6:610:26::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.15; Mon, 30 Aug 2021 18:18:02 +0000 Received: from CH0PR13MB5084.namprd13.prod.outlook.com ([fe80::185b:505d:b35c:a3a2]) by CH0PR13MB5084.namprd13.prod.outlook.com ([fe80::185b:505d:b35c:a3a2%7]) with mapi id 15.20.4478.017; Mon, 30 Aug 2021 18:18:02 +0000 From: Trond Myklebust To: "chuck.lever@oracle.com" CC: "linux-nfs@vger.kernel.org" , "anna.schumaker@netapp.com" , "olga.kornievskaia@gmail.com" Subject: Re: [RFC 1/2] xprtrdma: xdr pad optimization revisted again Thread-Topic: [RFC 1/2] xprtrdma: xdr pad optimization revisted again Thread-Index: AQHXnb+CbAHCmXSSW0GqOAKXfQ2+oquMRqQAgAAFx4CAAALBAIAAB7YAgAAEWQA= Date: Mon, 30 Aug 2021 18:18:02 +0000 Message-ID: <9448f294a39775734212083cbe329642b9e15d09.camel@hammerspace.com> References: <20210830165302.60225-1-olga.kornievskaia@gmail.com> <20210830165302.60225-2-olga.kornievskaia@gmail.com> <04f975f95126921f3d239a7a9d80ced2d88b05ff.camel@hammerspace.com> In-Reply-To: Accept-Language: en-US, en-GB Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: oracle.com; dkim=none (message not signed) header.d=none;oracle.com; dmarc=none action=none header.from=hammerspace.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 5e8f3b52-b7ac-4951-6cfc-08d96be28146 x-ms-traffictypediagnostic: CH2PR13MB3414: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 9NEQifmD6oh1KGqWuAcxMVDWWQ9v0Q5GHv64iOuTiRasXcOHO2HR9TYT7mXWH139mR5M30Bq16NUv2zpHQhD9+JO7zkhbFdXvkIAB5Tb+/HoRBrGZmYCnalAbVbymf+81oJuHnS+0SXXh49at+BYwcOUo9T4PTOtyIzPWN1XeKzq8JHGcqDc8UlkOkjiyifPxNtXGw6aQMwdFAEEGbTajgOMQjmdaG9k0GjJzPOTUBGWfQGVT68mNbcjJqSU827MXXaXPFupSia593rmPc+g2nha/VJ6VSgZKDj9tFJs7wfdXTEReaLKmkAk+/fn/9qxeFRPKnHDZqp2JBZySeaiGpZHMwej9Of+ex4do+hks+BWj7aVleHqd5r1oBFK8D5wQDJsjCg9X8aLVMFUzogbJBg8uiBfi9Ufjg0XGqjHVE0h0DphRkR7c6uTTGiEpGhJK8UDTFkmQdySewi/RYoGbbaIESYgt0wtQUKQ/mFsgaMom0QgYfFf7RgVRoQl5n5R1AINk3i7Paw9feZIrXy9iV3hwa+T/27cXJg/ZYI4GyI8dfIvo1fFMIAFywhlLqYbYltxfdJvtmutolzUI/HMEN41v7L2znxko6OLb2F1v6H6QCM4NMnqhs8Oe4Lmei4mmld5Mbt1ZQzuVFrif1FJaOxl16++GKqsPHwMtZW98Yzl9NniTTaqld9+lfVqOPcOious/R8UriGlR5SYNpGBCw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH0PR13MB5084.namprd13.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(39830400003)(396003)(136003)(376002)(346002)(26005)(6916009)(2616005)(186003)(2906002)(4326008)(53546011)(6506007)(54906003)(86362001)(6512007)(8676002)(8936002)(5660300002)(6486002)(66476007)(66446008)(66946007)(76116006)(316002)(64756008)(66556008)(71200400001)(122000001)(38100700002)(38070700005)(36756003)(83380400001)(478600001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?aG5uc21SM01hc3hVN3dsdWRqMGtueXhzelFDQXNWTDkyelIwbFROWWFiNk9M?= =?utf-8?B?RDJBTU92MXdKczd5cE1JSkg3Wk5KcTlFeXc4WHZzRDF0ZFQ1UnRaaEhwWUM3?= =?utf-8?B?NlRqRFBidUpZMXBWTkpoR1dyTFdJSG5WN2hTTERYSGt5cThSdzVUZG1GVDA0?= =?utf-8?B?SFhjd201M2RRR05hR1plbVZ4NVlWbGRPdWlyeHVvK3BlemJuaGNGOUV1MFhw?= =?utf-8?B?Z2hxOHJHV3hlM2VjYy9QbUw3Z3gxOVUxRlRHSnVXYUhPTXYrSmJMS203UFRQ?= =?utf-8?B?a2dySjZvNytJcjBmTUxWNGt5NTBhaE5KTWRnRHJNRlNodTNPV0F3OHpIbWEx?= =?utf-8?B?b1IwOU9qMFNpZ0gvU1Z6Z3g5ampIRDY2cGFUT25Kb3AvQTRyOVFqa0NLZWxa?= =?utf-8?B?NEVMM3FiczdEVktwdG1vMDVFcmlDM0N1aEg2bmM4a2wxdmdyWC9TTWdsYmpj?= =?utf-8?B?cWE4Y0tvVm9iYnJ1TGVVSVFGbWtKZmVNMitFUTlzOEEwekZtVFMwdTh0Um9t?= =?utf-8?B?bVA0U2VHM2tYbUlhMFQwdE5rRlB6NnFHMFlKTlZGelRNMXFDNVNmcDk5LzF2?= =?utf-8?B?MTJDaG5NVHJGYkIvcWJkV09ZdXFTVFVJS1dpK3BmSHlKaUM0VUk2d0NvaGZY?= =?utf-8?B?d2FoVlZSaWo5c21hYXhhejc2MU8wYkloYjlkZEhJZWFsWUdKeWF0R1hTVVhT?= =?utf-8?B?OEdDTDRkZ3hBT1BDbDV3TTVsQmdtdGpycWJIaWxVWEw0anZsWjhQMmNrelJQ?= =?utf-8?B?S1BISFhXU21RbURNaXNVdHlYOWFLMmtkN3NWZ3AzeStnOFZiOUptNmNvN1B5?= =?utf-8?B?bFlXdXlCVzFoR0wzK0tvTVdTMkNDMnJQZEllYURaZFpZTjQweHdNNUg0MWpF?= =?utf-8?B?ckxSUll3QlNQbE5Gdlk4TDVnbHBPUUNMSGpNKzVKV2FhVFhvdFg0UkpVMUdu?= =?utf-8?B?NFViNHRwdXJ3SzErc1VVb01FaGxPR3A3bHdtOGlVeTZjMFlrUnBxSy9abm9I?= =?utf-8?B?S2M3bDlGVE9yUHR6dDVFYktWTkxTdW03OEJoRUtrK0hXeHh5Z2ZFeFFJclRy?= =?utf-8?B?d1B3RExua25hMVZWOHpFaWorTGlPWUFhRmFsZ0gvSWladmdhaHdYL0VuR2wy?= =?utf-8?B?cy9LVkthSWRyK0dzRm1WeEZ5elhGbEtJck53N2dnY25YaW9TY2JqVWUraHQ4?= =?utf-8?B?a3Z6aURMMWMzdklIc25ha3RrOHVacFg4VGxrcUNvWm16a0o3UzY2cWNGR1h2?= =?utf-8?B?NU1EMTFMbDlYcjM5Z3FYY0IzaTluNHBjNnh3aW51RkZ0TmQzbzZLY1ZlRTdp?= =?utf-8?B?UHhRaXlSamVRVTRGWFhYYzhuVFlsNTNON3FjWlUxUXBxMEd2c3EzMXdiQkpX?= =?utf-8?B?RUNKREZTMVZKYW5veHZ4dHcrN2JMTWUvaFNmRjlRbGFJZ3QzYk14bmZMMm41?= =?utf-8?B?NWZWU0RsRU1SczgxTGR0dWhsK0V3Q1M5WHFHRFhPTjFFNTA2RmdkdW4xMnhx?= =?utf-8?B?WTNCZjJqK2laaTZtSDBUenRvSjllamRyTHZ4U3RiTGZNRkY1bmN3a3RwcnlP?= =?utf-8?B?RFh2TWhpcHRPWW9uMzVlWDM5KzBQWU1aRno2aFRCZXJYWTdoL1VLcXcycXYr?= =?utf-8?B?Lzd4YnJVK1NlRG1maW8wTUZ5elNHUXowaFEvcmxmMUZmVWdmVDRXcWdib0Ex?= =?utf-8?B?WS9oNmF1N2JNaktud0xJWkowcC8zUHY3ZVZ1YUwwWE9hWEZtL1JJSm5tNGd5?= =?utf-8?Q?ZpJP4RAQ0GBdnq7IB4jDOylClvkZvwWF6ruad0k?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <556BB155A52F294AAAFA55639CB0F207@namprd13.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: hammerspace.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH0PR13MB5084.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5e8f3b52-b7ac-4951-6cfc-08d96be28146 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Aug 2021 18:18:02.3988 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 0d4fed5c-3a70-46fe-9430-ece41741f59e X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: kcLrH2Ym9vZbA69+uSdfCtrQyuk6MrGWLGr2MpS4VtPuWvdMnD9kfCNyf+AD6SHmF9wk8MHs+14YEBOwOPGneA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR13MB3414 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org T24gTW9uLCAyMDIxLTA4LTMwIGF0IDE4OjAyICswMDAwLCBDaHVjayBMZXZlciBJSUkgd3JvdGU6 DQo+IA0KPiANCj4gPiBPbiBBdWcgMzAsIDIwMjEsIGF0IDE6MzQgUE0sIFRyb25kIE15a2xlYnVz dA0KPiA+IDx0cm9uZG15QGhhbW1lcnNwYWNlLmNvbT4gd3JvdGU6DQo+ID4gDQo+ID4gT24gTW9u LCAyMDIxLTA4LTMwIGF0IDEzOjI0IC0wNDAwLCBPbGdhIEtvcm5pZXZza2FpYSB3cm90ZToNCj4g PiA+IE9uIE1vbiwgQXVnIDMwLCAyMDIxIGF0IDE6MDQgUE0gQ2h1Y2sgTGV2ZXIgSUlJDQo+ID4g PiA8Y2h1Y2subGV2ZXJAb3JhY2xlLmNvbT4gd3JvdGU6DQo+ID4gPiA+IA0KPiA+ID4gPiBIaSBP bGdhLQ0KPiA+ID4gPiANCj4gPiA+ID4gPiBPbiBBdWcgMzAsIDIwMjEsIGF0IDEyOjUzIFBNLCBP bGdhIEtvcm5pZXZza2FpYQ0KPiA+ID4gPiA+IDxvbGdhLmtvcm5pZXZza2FpYUBnbWFpbC5jb20+ IHdyb3RlOg0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IEZyb206IE9sZ2EgS29ybmlldnNrYWlhIDxr b2xnYUBuZXRhcHAuY29tPg0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IEdpdmVuIHRoZSBwYXRjaCAi QWx3YXlzIHByb3ZpZGUgYWxpZ25lZCBidWZmZXJzIHRvIHRoZSBSUEMNCj4gPiA+ID4gPiByZWFk DQo+ID4gPiA+ID4gbGF5ZXJzIiwNCj4gPiA+ID4gPiBSUEMgb3ZlciBSRE1BIGRvZXNuJ3QgbmVl ZCB0byBsb29rIGF0IHRoZSB0YWlsIHBhZ2UgYW5kIGFkZA0KPiA+ID4gPiA+IHRoYXQNCj4gPiA+ ID4gPiBzcGFjZQ0KPiA+ID4gPiA+IHRvIHRoZSB3cml0ZSBjaHVuay4NCj4gPiA+ID4gPiANCj4g PiA+ID4gPiBGb3IgdGhlIFJGQyA4MTY2IGNvbXBsaWFudCBzZXJ2ZXIsIGl0IG11c3Qgbm90IHdy aXRlIGFuIFhEUg0KPiA+ID4gPiA+IHBhZGRpbmcNCj4gPiA+ID4gPiBpbnRvIHRoZSB3cml0ZSBj aHVuayAoZXZlbiBpZiBzcGFjZSB3YXMgcHJvdmlkZWQpLg0KPiA+ID4gPiA+IEhpc3RvcmljYWxs eQ0KPiA+ID4gPiA+IChiZWZvcmUgUkZDIDgxNjYpIFNvbGFyaXMgUkRNQSBzZXJ2ZXIgaGFzIGJl ZW4gcmVxdWlyaW5nIHRoZQ0KPiA+ID4gPiA+IGNsaWVudA0KPiA+ID4gPiA+IHRvIHByb3ZpZGUg c3BhY2UgZm9yIHRoZSBYRFIgcGFkZGluZyBhbmQgdGh1cyB0aGlzIGNsaWVudA0KPiA+ID4gPiA+ IGNvZGUNCj4gPiA+ID4gPiBoYXMNCj4gPiA+ID4gPiBleGlzdGVkLg0KPiA+ID4gPiANCj4gPiA+ ID4gSSBkb24ndCB1bmRlcnN0YW5kIHRoaXMgY2hhbmdlLg0KPiA+ID4gPiANCj4gPiA+ID4gU28s IHRoZSB1cHBlciBsYXllciBkb2Vzbid0IHByb3ZpZGUgWERSIHBhZGRpbmcgYW55IG1vcmUuIFRo YXQNCj4gPiA+ID4gZG9lc24ndA0KPiA+ID4gPiBtZWFuIFNvbGFyaXMgc2VydmVycyBzdGlsbCBh cmVuJ3QgZ29pbmcgdG8gd2FudCB0byB3cml0ZSBpbnRvDQo+ID4gPiA+IGl0Lg0KPiA+ID4gPiBU aGUNCj4gPiA+ID4gY2xpZW50IHN0aWxsIGhhcyB0byBwcm92aWRlIHRoaXMgcGFkZGluZyBmcm9t IHNvbWV3aGVyZS4NCj4gPiA+ID4gDQo+ID4gPiA+IFRoaXMgc3VnZ2VzdHMgdGhhdCAiQWx3YXlz IHByb3ZpZGUgYWxpZ25lZCBidWZmZXJzIHRvIHRoZSBSUEMNCj4gPiA+ID4gcmVhZA0KPiA+ID4g PiBsYXllcnMiIGJyZWFrcyBvdXIgaW50ZXJvcCB3aXRoIFNvbGFyaXMgc2VydmVycy4gRG9lcyBp dD8NCj4gPiA+IA0KPiA+ID4gTm8sIEkgZG9uJ3QgYmVsaWV2ZSAiQWx3YXlzIHByb3ZpZGUgYWxp Z25lZCBidWZmZXJzIHRvIHRoZSBSUEMNCj4gPiA+IHJlYWQNCj4gPiA+IGxheWVycyIgYnJlYWtz IHRoZSBpbnRlcm9wZXJhYmlsaXR5LiBUSElTIHBhdGNoIHdvdWxkIGJyZWFrIHRoZQ0KPiA+ID4g aW50ZXJvcC4NCj4gPiA+IA0KPiA+ID4gSWYgd2UgYXJlIG5vdCB3aWxsaW5nIHRvIGJyZWFrIHRo ZSBpbnRlcm9wZXJhYmlsaXR5IGFuZCBzdXBwb3J0DQo+ID4gPiBvbmx5DQo+ID4gPiBzZXJ2ZXJz IHRoYXQgY29tcGx5IHdpdGggUkZDIDgxNjYsIHRoaXMgcGF0Y2ggaXMgbm90IG5lZWRlZC4NCj4g PiANCj4gPiBXaHk/IFRoZSBpbnRlbnRpb24gb2YgdGhlIGZpcnN0IHBhdGNoIGlzIHRvIGVuc3Vy ZSB0aGF0IHdlIGRvIG5vdA0KPiA+IGhhdmUNCj4gPiBidWZmZXJzIHRoYXQgYXJlIG5vdCB3b3Jk IGFsaWduZWQuIElmIFNvbGFyaXMgd2FudHMgdG8gd3JpdGUNCj4gPiBwYWRkaW5nDQo+ID4gYWZ0 ZXIgdGhlIGVuZCBvZiB0aGUgZmlsZSwgdGhlbiB0aGVyZSBpcyBzcGFjZSBpbiB0aGUgcGFnZSBi dWZmZXINCj4gPiBmb3INCj4gPiBpdCB0byBkbyBzby4gVGhlcmUgc2hvdWxkIGJlIG5vIG5lZWQg Zm9yIGFuIGV4dHJhIHRhaWwgaW4gd2hpY2ggdG8NCj4gPiB3cml0ZSB0aGUgcGFkZGluZy4NCj4g DQo+IFRoZSBSUEMvUkRNQSBwcm90b2NvbCBpcyBkZXNpZ25lZCBmb3IgaGFyZHdhcmUtb2ZmbG9h ZGVkIGRpcmVjdCBkYXRhDQo+IHBsYWNlbWVudC4gVGhhdCBtZWFucyB0aGUgcGFkZGluZywgd2hp Y2ggaXNuJ3QgZGF0YSwgbXVzdCBiZSBkaXJlY3RlZA0KPiB0byBhbm90aGVyIGJ1ZmZlci4NCj4g DQo+IFRoaXMgaXMgYSBwcm9ibGVtIHdpdGggUlBDL1JETUEgdjEgaW1wbGVtZW50YXRpb25zLiBS RkMgNTY2NiB3YXMNCj4gYW1iaWd1b3VzLCBzbyB0aGVyZSBhcmUgaW1wbGVtZW50YXRpb25zIHRo YXQgd3JpdGUgWERSIHBhZGRpbmcgaW50bw0KPiBXcml0ZSBjaHVua3MuIFRoaXMgaXMgd2h5IFJG QyA4MTY2IHNheXMgU0hPVUxEIE5PVCBpbnN0ZWFkIG9mIE1VU1QNCj4gTk9ULg0KPiANCj4gSSBi ZWxpZXZlIHJwY3JkbWEtdmVyc2lvbi10d28gbWFrZXMgaXQgYSByZXF1aXJlbWVudCBub3QgdG8g dXNlIFhEUg0KPiBwYWRkaW5nIGluIGVpdGhlciBSZWFkIG9yIFdyaXRlIGRhdGEgcGF5bG9hZCBj aHVua3MuDQo+IA0KPiANCkNvcnJlY3QsIGJ1dCBpbiBvcmRlciB0byBzYXRpc2Z5IHRoZSBuZWVk cyBvZiB0aGUgU29sYXJpcyBzZXJ2ZXIsDQp5b3UndmUgaGlqYWNrZWQgdGhlIHRhaWwgZm9yIHVz ZSBhcyBhIGRhdGEgYnVmZmVyLiBBRkFJQ1MgaXQgaXMgbm90DQpiZWluZyB1c2VkIGFzIGEgU0VO RCBidWZmZXIgdGFyZ2V0LCBidXQgaXMgaW5zdGVhZCBiZWluZyB0dXJuZWQgaW50byBhDQp3cml0 ZSBjaHVuayB0YXJnZXQuIFRoYXQgaXMgbm90IGFjY2VwdGFibGUhDQoNCkl0IG1lYW5zIHRoYXQg d2Ugbm93IGFyZSBsaW1pdGVkIHRvIGNyZWF0aW5nIENPTVBPVU5EcyB3aGVyZSB0aGVyZSBhcmUN Cm5vIG1vcmUgb3BlcmF0aW9ucyBmb2xsb3dpbmcgdGhlIFJFQUQgb3AgYmVjYXVzZSBpZiB3ZSBk byBzbywgd2UgZW5kIHVwDQp3aXRoIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSBSRE1BIGJlaGF2aW91 ciBicmVha3MuDQoNCj4gPiBUaGlzIG1lYW5zIHRoYXQgdGhlIFJETUEgYW5kIFRDUCBjYXNlcyBz aG91bGQgZW5kIHVwIGRvaW5nIHRoZSBzYW1lDQo+ID4gdGhpbmcgZm9yIHRoZSBjYXNlIG9mIHRo ZSBTb2xhcmlzIHNlcnZlcjogdGhlIHBhZGRpbmcgaXMgd3JpdHRlbg0KPiA+IGludG8NCj4gPiB0 aGUgcGFnZSBidWZmZXIuIFRoZXJlIGlzIG5vdGhpbmcgd3JpdHRlbiB0byB0aGUgdGFpbCBpbiBl aXRoZXINCj4gPiBjYXNlLg0KPiANCj4gIkFsd2F5cyBwcm92aWRlIiBjYW4gZ3VhcmFudGVlIHRo YXQgdGhlIE5GUyBjbGllbnQgbWFrZXMgYWxpZ25lZA0KPiByZXF1ZXN0cyBmb3IgYnVmZmVyZWQg SS9PLCBidXQgd2hhdCBhYm91dCBORlMgZGlyZWN0IEkvTyBmcm9tIHVzZXINCj4gc3BhY2U/IFRo ZSBOSUMgd2lsbCBwbGFjZSB0aGUgZGF0YSBwYXlsb2FkIGluIHRoZSBhcHBsaWNhdGlvbg0KPiBi dWZmZXIsIGJ1dCB0aGVyZSdzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBORlMgUkVBRCByZXF1ZXN0 IHdpbGwgYmUNCj4gYWxpZ25lZCBvciB0aGF0IHRoZSBidWZmZXIgd2lsbCBiZSBhYmxlIHRvIHNp bmsgdGhlIGV4dHJhIHBhZGRpbmcNCj4gYnl0ZXMuDQo+IA0KPiBXZSB3b3VsZCBkZWZpbml0ZWx5 IGNvbnNpZGVyIGl0IGFuIGVycm9yIGlmIGFuIHVuYWxpZ25lZCBSRE1BIFJlYWQNCj4gbGVha2Vk IHRoZSBsaW5rLWxheWVyJ3MgNC1ieXRlIHBhZGRpbmcgaW50byBhIHNpbmsgYnVmZmVyLg0KPiAN Cj4gU28sICJBbHdheXMgcHJvdmlkZSIgaXMgbmljZSBmb3IgdGhlIGluLWtlcm5lbCBORlMgY2xp ZW50LCBidXQgSQ0KPiBkb24ndCBiZWxpZXZlIGl0IGFsbG93cyB0aGUgd2F5IHhwcnRyZG1hIGJl aGF2ZXMgdG8gYmUgY2hhbmdlZC4NCj4gDQoNCklmIHlvdSdyZSBkb2luZyBhbiB1bmFsaWduZWQg UkVBRCBmcm9tIHVzZXIgc3BhY2UgdGhlbiB5b3UgYXJlIGFscmVhZHkNCmluIGEgc2l0dWF0aW9u IHdoZXJlIHlvdSdyZSBkb2luZyBzb21ldGhpbmcgdGhhdCBpcyBpbmNvbXBhdGlibGUgd2l0aA0K YmxvY2sgZGV2aWNlIHJlcXVpcmVtZW50cy4NCklmIHRoZXJlIHJlYWxseSBhcmUgYW55IGFwcGxp Y2F0aW9ucyB0aGF0IGNvbnRhaW4gT19ESVJFQ1QgY29kZQ0Kc3BlY2lmaWNhbGx5IGZvciB1c2Ug d2l0aCBORlMsIHRoZW4gd2UgY2FuIGFydGlmaWNpYWxseSBmb3JjZSB0aGUNCmJ1ZmZlcnMgdG8g YmUgYWxpZ25lZCBieSByZWR1Y2luZyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHRvIGFsaWduIHRv IGENCjQgYnl0ZSBib3VuZGFyeS4gTkZTIHN1cHBvcnRzIHJldHVybmluZyBzaG9ydCByZWFkcy4N Cg0KPiANCj4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBPbGdhIEtvcm5pZXZza2FpYSA8a29sZ2FA bmV0YXBwLmNvbT4NCj4gPiA+ID4gPiAtLS0NCj4gPiA+ID4gPiBuZXQvc3VucnBjL3hwcnRyZG1h L3JwY19yZG1hLmMgfCAxNSAtLS0tLS0tLS0tLS0tLS0NCj4gPiA+ID4gPiAxIGZpbGUgY2hhbmdl ZCwgMTUgZGVsZXRpb25zKC0pDQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL25l dC9zdW5ycGMveHBydHJkbWEvcnBjX3JkbWEuYw0KPiA+ID4gPiA+IGIvbmV0L3N1bnJwYy94cHJ0 cmRtYS9ycGNfcmRtYS5jDQo+ID4gPiA+ID4gaW5kZXggYzMzNWMxMzYxNTY0Li4yYzQxNDZiY2Yy YTggMTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9ycGNfcmRtYS5j DQo+ID4gPiA+ID4gKysrIGIvbmV0L3N1bnJwYy94cHJ0cmRtYS9ycGNfcmRtYS5jDQo+ID4gPiA+ ID4gQEAgLTI1NSwyMSArMjU1LDYgQEAgcnBjcmRtYV9jb252ZXJ0X2lvdnMoc3RydWN0IHJwY3Jk bWFfeHBydA0KPiA+ID4gPiA+ICpyX3hwcnQsIHN0cnVjdCB4ZHJfYnVmICp4ZHJidWYsDQo+ID4g PiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGFnZV9iYXNlID0gMDsNCj4gPiA+ID4g PiDCoMKgwqDCoMKgIH0NCj4gPiA+ID4gPiANCj4gPiA+ID4gPiAtwqDCoMKgwqAgaWYgKHR5cGUg PT0gcnBjcmRtYV9yZWFkY2gpDQo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBn b3RvIG91dDsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLcKgwqDCoMKgIC8qIFdoZW4gZW5jb2Rp bmcgYSBXcml0ZSBjaHVuaywgc29tZSBzZXJ2ZXJzIG5lZWQgdG8NCj4gPiA+ID4gPiBzZWUgYW4N Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoCAqIGV4dHJhIHNlZ21lbnQgZm9yIG5vbi1YRFItYWxpZ25l ZCBXcml0ZSBjaHVua3MuIFRoZQ0KPiA+ID4gPiA+IHVwcGVyDQo+ID4gPiA+ID4gLcKgwqDCoMKg wqAgKiBsYXllciBwcm92aWRlcyBzcGFjZSBpbiB0aGUgdGFpbCBpb3ZlYyB0aGF0IG1heSBiZQ0K PiA+ID4gPiA+IHVzZWQNCj4gPiA+ID4gPiAtwqDCoMKgwqDCoCAqIGZvciB0aGlzIHB1cnBvc2Uu DQo+ID4gPiA+ID4gLcKgwqDCoMKgwqAgKi8NCj4gPiA+ID4gPiAtwqDCoMKgwqAgaWYgKHR5cGUg PT0gcnBjcmRtYV93cml0ZWNoICYmIHJfeHBydC0+cnhfZXAtDQo+ID4gPiA+ID4gPiByZV9pbXBs aWNpdF9yb3VuZHVwKQ0KPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBv dXQ7DQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC3CoMKgwqDCoCBpZiAoeGRyYnVmLT50YWlsWzBd Lmlvdl9sZW4pDQo+ID4gPiA+IA0KPiA+ID4gPiBJbnN0ZWFkIG9mIGNoZWNraW5nIGZvciBhIHRh aWwsIHdlIGNvdWxkIGNoZWNrDQo+ID4gPiA+IA0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoCBpZiAo eGRyX3BhZF9zaXplKHhkcmJ1Zi0+cGFnZV9sZW4pKQ0KPiA+ID4gPiANCj4gPiA+ID4gYW5kIHBy b3ZpZGUgc29tZSB0YWlsIHNwYWNlIGluIHRoYXQgY2FzZS4NCj4gPiA+IA0KPiA+ID4gSSBkb24n dCBiZWxpZXZlIHRoaXMgaXMgYW55IGRpZmZlcmVudCB0aGFuIHdoYXQgd2UgaGF2ZSBub3cuIElm DQo+ID4gPiB0aGUNCj4gPiA+IHBhZ2Ugc2l6ZSBpcyBub24tNGJ5dGUgYWxpZ25lZCB0aGVuLCB3 ZSB3b3VsZCBzdGlsbCBhbGxvY2F0ZSBzaXplDQo+ID4gPiBmb3INCj4gPiA+IHRoZSBwYWRkaW5n IHdoaWNoICJTSE9VTEQgTk9UIiBiZSB0aGVyZS4gQnV0IHllcyBpdCBpcyBhbGxvd2VkIHRvDQo+ ID4gPiBiZQ0KPiA+ID4gdGhlcmUuDQo+ID4gPiANCj4gPiA+IFRoZSBwcm9ibGVtLCBhcyB5b3Ug a25vdyBmcm9tIG91ciBvZmZsaW5lIGRpc2N1c3Npb24sIGlzDQo+ID4gPiBhbGxvY2F0aW5nDQo+ ID4gPiB0aGUgdGFpbCBwYWdlIGFuZCBpbmNsdWRpbmcgaXQgaW4gdGhlIHdyaXRlIGNodW5rIGZv ciB0aGUgTnZpZGlhDQo+ID4gPiBlbnZpcm9ubWVudCB3aGVyZSBOdmlkaWEgZG9lc24ndCBzdXBw b3J0IHVzZSBvZiBkYXRhICh1c2VyKSBwYWdlcw0KPiA+ID4gYW5kDQo+ID4gPiBuZnMga2VybmVs IGFsbG9jYXRlZCBwYWdlcyBpbiB0aGUgc2FtZSBzZWdtZW50Lg0KPiA+ID4gDQo+ID4gPiBBbHRl cm5hdGl2ZWx5LCBteSBhc2sgaXMgdGhlbiB0byBjaGFuZ2UgcnBjcmRtYV9jb252ZXJ0X2lvdnMo KSB0bw0KPiA+ID4gcmV0dXJuIDIgc2VncyBpbnN0ZWFkIG9mIG9uZTogb25lIGZvciB0aGUgcGFn ZXMgYW5kIGFub3RoZXIgZm9yDQo+ID4gPiB0aGUNCj4gPiA+IHRhaWwuDQo+ID4gPiANCj4gPiA+ ID4gDQo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBycGNyZG1hX2NvbnZlcnRf a3ZlYygmeGRyYnVmLT50YWlsWzBdLCBzZWcsDQo+ID4gPiA+ID4gJm4pOw0KPiA+ID4gPiA+IC0N Cj4gPiA+ID4gPiAtb3V0Og0KPiA+ID4gPiA+IMKgwqDCoMKgwqAgaWYgKHVubGlrZWx5KG4gPiBS UENSRE1BX01BWF9TRUdTKSkNCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gLUVJTzsNCj4gPiA+ID4gPiDCoMKgwqDCoMKgIHJldHVybiBuOw0KPiA+ID4gPiA+IC0t DQo+ID4gPiA+ID4gMi4yNy4wDQo+ID4gPiA+ID4gDQo+ID4gPiA+IA0KPiA+ID4gPiAtLQ0KPiA+ ID4gPiBDaHVjayBMZXZlcg0KPiA+ID4gPiANCj4gPiA+ID4gDQo+ID4gPiA+IA0KPiA+IA0KPiA+ IC0tIA0KPiA+IFRyb25kIE15a2xlYnVzdA0KPiA+IExpbnV4IE5GUyBjbGllbnQgbWFpbnRhaW5l ciwgSGFtbWVyc3BhY2UNCj4gPiB0cm9uZC5teWtsZWJ1c3RAaGFtbWVyc3BhY2UuY29tDQo+IA0K PiAtLQ0KPiBDaHVjayBMZXZlcg0KPiANCj4gDQo+IA0KDQotLSANClRyb25kIE15a2xlYnVzdA0K TGludXggTkZTIGNsaWVudCBtYWludGFpbmVyLCBIYW1tZXJzcGFjZQ0KdHJvbmQubXlrbGVidXN0 QGhhbW1lcnNwYWNlLmNvbQ0KDQoNCg==