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 8F03CA0C45; Wed, 22 Sep 2021 09:26:59 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7300A4069E; Wed, 22 Sep 2021 09:26:59 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mails.dpdk.org (Postfix) with ESMTP id 8C5DE40141 for ; Wed, 22 Sep 2021 09:26:57 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10114"; a="223568672" X-IronPort-AV: E=Sophos;i="5.85,313,1624345200"; d="scan'208";a="223568672" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Sep 2021 00:26:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,313,1624345200"; d="scan'208";a="653184496" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga005.jf.intel.com with ESMTP; 22 Sep 2021 00:26:56 -0700 Received: from orsmsx606.amr.corp.intel.com (10.22.229.19) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Wed, 22 Sep 2021 00:26:55 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Wed, 22 Sep 2021 00:26:55 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.177) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Wed, 22 Sep 2021 00:26:54 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Zi6pKRBhk1kzrxS9d7TsJzojyizjWwZjzs3wahkkDOLioc5XDm7v9fiEt5LVSisv0e/fefVFoqzKHsFpIiu65nb6aGUj7rezIfZFWsYEXFZJlTCVZxeMd4vB09y5CCiFQC1oGt+kEuY79Ex3fF8HbfaCbnTfi33E1XCe00TLsWWK0BQ1s2LnhdXBrikrRlYRIDsknL4aT8EFLn89N064BtBK/ZBiQ9my0Fsg5aGXayN3vcIsnRiSO/7n868Fe0COlvi4W4L8AHcl5qmbQz5SBDjpx4lQc9GRIEy8mIx3OZTG3dkKxodtGpvzmi0lNwLai2j2wreFhlck6/ref8x+ZA== 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=swU/iZzuZUaHaq1JZysLB9bu10Rj2DG5wayVunj9BOA=; b=LgwTxW/gpbc7LesJ+FI4EZQ1+XNXa6Kxz3FGqdLE4rNg/hkR2DDSC7kee7TqlHIc/RKSicDFql9rG2wNocH4ExRHfkepLkzepkNm3Brfl1M4cpv7UfkyDDJOJdIbqbPBonglURczko8vAPPftjPU+Nlj7ExVea+NhRDrPUAAJqyz0VkNUL5vjt+hFTXTWCnlqWfxxub5zIeFpNvPfn5NL0sfiaNB6DOmzEIRbQ2uibsw8JKqGUdL2XpFheTQ4lzR1P3FmeyhBcw+SlZUpzwZu9kL5aC079m/aj+4AtCKYKoE52XUS4lRcj/zRSf9m66O4uwXsp069PjsTtafXSPT0Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=swU/iZzuZUaHaq1JZysLB9bu10Rj2DG5wayVunj9BOA=; b=I/9npoU/4p+KCxiiPYdDfgtMyFhbCAaWKw5PfBzOYXggRuWZU5SWV7EmpyhAqqOslu9KbjAFBxKucR6j5ZbbNTLQJaB55JZWWoQSr8XSfA24UbUN0kEgMU656g1FJxIwn4dtcLH/vjSwgOCKKu/BugfWvNtjbt2tEBQKPPjQYoM= Received: from DM8PR11MB5591.namprd11.prod.outlook.com (2603:10b6:8:38::23) by DM8PR11MB5671.namprd11.prod.outlook.com (2603:10b6:8:3c::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.15; Wed, 22 Sep 2021 07:26:53 +0000 Received: from DM8PR11MB5591.namprd11.prod.outlook.com ([fe80::904:ace8:b3b:c1a2]) by DM8PR11MB5591.namprd11.prod.outlook.com ([fe80::904:ace8:b3b:c1a2%4]) with mapi id 15.20.4544.014; Wed, 22 Sep 2021 07:26:52 +0000 From: "Peng, ZhihongX" To: David Marchand CC: "Burakov, Anatoly" , "Ananyev, Konstantin" , Stephen Hemminger , dev , "Lin, Xueqin" Thread-Topic: [dpdk-dev] [PATCH v3] Enable AddressSanitizer feature on DPDK Thread-Index: AQHXrGHxrMSNwZERbEWuoORjLey9IKustNSAgALmBaA= Date: Wed, 22 Sep 2021 07:26:52 +0000 Message-ID: References: <20210916013843.342366-1-zhihongx.peng@intel.com> <20210918074155.872358-1-zhihongx.peng@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3d9aa686-716c-4ea1-6e3c-08d97d9a597d x-ms-traffictypediagnostic: DM8PR11MB5671: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: SrkU8xe/jaK95qe2ii9n1y+LjlmUo4l8i2FflgvlQ2fKJMB90+kOcLJ0zQvkVNzdgylb7mR9nKYr8FaQTr+KMgRkn+OOpbdbTs5VpZS+Fy3eZk9Q8AYSg1wr5gSlll0dL22lAAu8UhfnZFMkwUniQfw63t0UKIbYZngM3KF0oDTbSWWlTD3wN2Iph6Y6d8fpmwGOwFeu+4aDtJ2XMpW5A0yJFs+mKOPOMOxhvCTxi8MY0hJfSdOQa4k5siDIIRRpepNAN23F6WZzwWVEamDEzMl/xYJjAXGh+5QcR6mDVrpfAnvQUP8yLk/eJP8/e3DFsJQg7KPy5oc0R1nfN+hp/KRfH7YtuH7l9eyFvhGLlHhG1CyH/1RFYs0DcEh18euuOBmz0luUNz6Y2gn7vZp924cBpZEo1gGVLkCYFBIyLylXyXH6oNt6Qcj9VxDTPPMMZIk01ST3TTSV9zf0Zqo0H4a+oB3/V+qxbESKT0ZfVwT5e6II2eNVo6D9RGRZRmhh0hVUr53D7gG7vESYHjn2PPqRDM1+t+Vr62DvYkDXdTrQSOj8MqJQOX2l0tsqHotr81+Zp6kkqegidSpmBR6A1SALfbrjzI8+jGNbqZy+8+2d48+L7GsRxkZnMOwbEYhA+bVDsCIfZZAJkR05Khm+cX3ULKKOUvCLlyzOgVeqUqD1q0QGNCDXmMLuZKwOvpG+JXExm6TdvD4t/AvF8WUeYDYX33mjFPhjwcuYqZ18HS1cDKPMfNaRP74k9FExmBraYat1/6ycqXJ2G1NKpCymAVJRGL1nCYxL4GqJ9OvzsJKpld9HUuZgvp7Ap1Ps+Hg+nDKnoMhvlNk1wHNEjfryKBu6ylwYP8FRZ0h9HZoJqTuMwI64lwDsUUXv3kfslYoLlpSDogf0SzbWSK4mcBuRCQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR11MB5591.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(38070700005)(38100700002)(122000001)(86362001)(83380400001)(107886003)(66556008)(33656002)(66446008)(52536014)(508600001)(4326008)(53546011)(54906003)(66946007)(71200400001)(30864003)(76116006)(6506007)(6916009)(66476007)(8676002)(316002)(5660300002)(966005)(55016002)(26005)(9686003)(186003)(8936002)(2906002)(64756008)(7696005)(49343001)(559001)(579004)(505234006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RURGNkk2N3FtWUtNdXMzaXlkM1hQd1drNUFxTG9BTVRGY1BTOEdKWjExcWwr?= =?utf-8?B?dkZwZUVXTGJyREhGdk5FUUFDRnp5MjhXdVkwbDdpQVdYUndIUHYrOFU0b0tL?= =?utf-8?B?R0pZTHIvb2xDaStNZlNZRWFwQlUzdVk3TGtiY3dQeVNhenRHeENpUTRSMnZx?= =?utf-8?B?dUhBREZkWTNOZ3llRm4vU1JDWHJLMDJkeVo3WGsrb1ZxLzhLTHVLMTZaQzZ6?= =?utf-8?B?U1N0RUtpYXVNT0tBZXFod0Fxa0JvTFh0SzlnRXNlZVU1RVV0QjlBS0FWaU4x?= =?utf-8?B?MFc2U25BTmZMZ1ZkcGxsbFh6VmJrSy9UR0d4VmxPRzNpZGFMWEkvZlpTS3JV?= =?utf-8?B?aENsOFJUYkphOHZxRU1ydDRqaWt5aDVEUG5VRktUcHB0bnFFelJydzRQWVUz?= =?utf-8?B?Z0Y3eUgwZFJ2NXdqWXRqaXdFS1VTRHlnbkdySXpCS0FGVWtqQ2p5Q0l4UDZr?= =?utf-8?B?NFNBSXlpdVczQTh1VUJRV2lyenEvZ085R0l5VjhXemx0ZzJuWGVOUFh1bFFS?= =?utf-8?B?Ym1LREtnTHEvZ0d5eHRyVkxWYWNkTTl4V2lnL3RkL2ZnUG5ONy9lUVhSZmNm?= =?utf-8?B?RHp2UFJFY3Yxd3pEdmhKV29SbnJmQnZsR2VRMGxGL3prcHVhYXU0TjloRmtF?= =?utf-8?B?ZjQ4QXFubTJCRkdZbzM3SVhudWczUGwyWk5jVU1aR054cThOY1FEUmdCVlQz?= =?utf-8?B?Q2llTDM2OXlFSWNQR2ZheU9OeUFVT3Z3ekJFT3lTSlVSRW9vYlV3Q0x1MkY5?= =?utf-8?B?ZmZ5T1Q1ZDB5SWRMa1hLSXNWSWk0VmY0ZUowRk85M1pTbk5VRnMvY1ZyZ1hq?= =?utf-8?B?UDRlWEcvdkZEdkR2N1hQYXBscEQ5Y1ZmV29MT1A5SzZXaENLb1NFS0MvSVB6?= =?utf-8?B?eU8vWkpsWFpGbmxvVmY0WUhlekk5Smt3Yk4zdUVXQmRzWXBpYVNERnRGVS8w?= =?utf-8?B?WUlwN0l0ZFFyUmlRUEs5eU91VGNlSkQyY1h1WERwamNZdHdRdncrais5WklR?= =?utf-8?B?NlY0QndrM2ZYVnhRUzJXSncxQnlqVjg2MTNlNml4YUZkdnhSczlkZzVOT1pM?= =?utf-8?B?S3M0cVpGQUwzNXhBeTZibk10ZUZBaHZjVzByTXp0eUFEdEJPRlQ5UENxOTk0?= =?utf-8?B?Q2FzOThuUnJGQ3ZLMnl6RzhJdTUwWks2TXFmcStVUWtSL0xSVTFXT3pTbmhn?= =?utf-8?B?d1BHLzdBWlBXdUhFcWF4ZmJtUDRsa2Z6aGJucFd2TXJNc29qSEM5SnUyaElh?= =?utf-8?B?N2FVMXA0M3duVk91MEFjcFdOY2VLVHg2M05YeVNvVnExejQyR2RSY2d2RkhQ?= =?utf-8?B?NDdsSlRSWFJ6WHhTM25oOEVIdmtwZHY5ZVJqVms1b1pnNUk2cWFPZ1N2cGt2?= =?utf-8?B?N0ZhT2pGRGdqSzArb0xCZzVLMXh6WlI4UVpSelRySkI0WDdnZEY1SitwYnJm?= =?utf-8?B?OFR6dG1hM0FrY2txRU9kMUtGSWZjcCtieTg5VDdZdkdyOXBZN3ptdjdmREND?= =?utf-8?B?OCt0ekRTUnpqaTZBNzh4M0E2Z2o1RFZmbnZ6NDJGZ3dSUzYraC82eW9naW5V?= =?utf-8?B?TkM3bjNVVG5wQ1cycmRBR2lNZ1hqTEZXa0srRHpaVTd2U1BxUzNoNDlNR2Rk?= =?utf-8?B?NVJpM3BCSi9xQXFDQnM3NWlxOGlacTBQdXpvdXpCc3pJTHZKZEJhSEhKMC94?= =?utf-8?B?aHFpRE5ObndpZkRma0pwSjY4aHdqVyt2NTJWMWtRY3QwSlluRldYWGJWZEpM?= =?utf-8?Q?azYqHF2CYILgFRPs0U=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR11MB5591.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3d9aa686-716c-4ea1-6e3c-08d97d9a597d X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Sep 2021 07:26:52.8179 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Be/o71xCRm/cL4Ba76JFuwCeiR0bmFhkNIeHfqqtyl5VTKQg18+V1NAdlvLCyvzAQyb+Ds/i4uDpsRnUkFnycQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR11MB5671 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v3] Enable AddressSanitizer feature on DPDK 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 Sender: "dev" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBEYXZpZCBNYXJjaGFuZCA8ZGF2 aWQubWFyY2hhbmRAcmVkaGF0LmNvbT4NCj4gU2VudDogTW9uZGF5LCBTZXB0ZW1iZXIgMjAsIDIw MjEgNjowNCBQTQ0KPiBUbzogUGVuZywgWmhpaG9uZ1ggPHpoaWhvbmd4LnBlbmdAaW50ZWwuY29t Pg0KPiBDYzogQnVyYWtvdiwgQW5hdG9seSA8YW5hdG9seS5idXJha292QGludGVsLmNvbT47IEFu YW55ZXYsIEtvbnN0YW50aW4NCj4gPGtvbnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+OyBTdGVw aGVuIEhlbW1pbmdlcg0KPiA8c3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmc+OyBkZXYgPGRldkBk cGRrLm9yZz47IExpbiwgWHVlcWluDQo+IDx4dWVxaW4ubGluQGludGVsLmNvbT4NCj4gU3ViamVj dDogUmU6IFtkcGRrLWRldl0gW1BBVENIIHYzXSBFbmFibGUgQWRkcmVzc1Nhbml0aXplciBmZWF0 dXJlIG9uIERQREsNCj4gDQo+IE9uIFNhdCwgU2VwIDE4LCAyMDIxIGF0IDk6NTEgQU0gPHpoaWhv bmd4LnBlbmdAaW50ZWwuY29tPiB3cm90ZToNCj4gPg0KPiA+IEZyb206IFpoaWhvbmcgUGVuZyA8 emhpaG9uZ3gucGVuZ0BpbnRlbC5jb20+DQo+IA0KPiAtIFRoZSB0aXRsZSBpcyB0b28gdmFndWUu DQo+IEkgYW0gbm90IHN1cmUgd2hhdCB0aGUgYmVzdCB0aXRsZSBpcywgYnV0IG15IGN1cnJlbnQg aWRlYSBpczoNCj4gbWVtOiBpbnN0cnVtZW50IGFsbG9jYXRvciB3aXRoIEFzYW4NCg0KRG8geW91 IHRoaW5rIHRoaXMgbmFtZSBpcyBhY2N1cmF0ZTogRW5hYmxlIEFkZHJlc3NTYW5pdGl6ZXIgZm9y IG1lbW9yeSBkZXRlY3RvciBvbiBEUERLDQoNCj4gDQo+IA0KPiAtIFRoaXMgaXMgYSBuaWNlIGZl YXR1cmUgdGhhdCBtdXN0IGJlIGFubm91bmNlZCBpbiB0aGUgcmVsZWFzZSBub3Rlcy4NCj4gDQo+ IA0KPiAtIEhvdyBzaG91bGQgd2Ugc3BlbGwgaXQ/DQo+IEFzYW4gPw0KPiBBU0FOID8NCj4gQVNh biA/DQoNClVzZSBBU2FuLCBnb29nbGUncyBzcGVsbGluZzoNCmh0dHBzOi8vZ2l0aHViLmNvbS9n b29nbGUvc2FuaXRpemVycy93aWtpL0FkZHJlc3NTYW5pdGl6ZXINCg0KPiANCj4gUGxlYXNlIHVw ZGF0ZSBkZXZ0b29scy93b3Jkcy1jYXNlLnR4dCBhbmQgZml4IGluY29uc2lzdGVuY2llcyBpbiB0 aGlzIHBhdGNoLg0KDQpWNCB3aWxsIHVwZGF0ZSB0aGlzIGRvY3VtZW50Lg0KDQo+ID4NCj4gPiBB ZGRyZXNzU2FuaXRpemVyIChBU2FuKSBpcyBhIGdvb2dsZSBtZW1vcnkgZXJyb3IgZGV0ZWN0IHN0 YW5kYXJkIHRvb2wuDQo+ID4gSXQgY291bGQgaGVscCB0byBkZXRlY3QgdXNlLWFmdGVyLWZyZWUg YW5kIHtoZWFwLHN0YWNrLGdsb2JhbH0tYnVmZmVyDQo+ID4gb3ZlcmZsb3cgYnVncyBpbiBDL0Mr KyBwcm9ncmFtcywgcHJpbnQgZGV0YWlsZWQgZXJyb3IgaW5mb3JtYXRpb24gd2hlbg0KPiA+IGVy cm9yIGhhcHBlbnMsIGxhcmdlIGltcHJvdmUgZGVidWcgZWZmaWNpZW5jeS4NCj4gPg0KPiA+IEJ5 IHJlZmVycmluZyB0byBpdHMgaW1wbGVtZW50YXRpb24gYWxnb3JpdGhtDQo+ID4gKGh0dHBzOi8v Z2l0aHViLmNvbS9nb29nbGUvc2FuaXRpemVycy93aWtpL0FkZHJlc3NTYW5pdGl6ZXJBbGdvcml0 aG0pLA0KPiA+IGVuYWJsZSBoZWFwLWJ1ZmZlci1vdmVyZmxvdyBhbmQgdXNlLWFmdGVyLWZyZWUg ZnVuY3Rpb25zIG9uIGRwZGsuDQo+ID4gRFBESyBBU0FOIGZ1bmN0aW9uIGN1cnJlbnRseSBvbmx5 IHN1cHBvcnRzIG9uIExpbnV4IHg4Nl82NC4NCj4gDQo+IElmIHlvdSBkb24ndCBpbnRlbmQgdG8g dXBkYXRlIG90aGVyIGFyY2hlcywgYXQgbGVhc3QgZXhwbGFpbiBpbiB0aGUgY29tbWl0bG9nDQo+ IHdoYXQgc2hvdWxkIGJlIGRvbmU6IHNvIHRoYXQgb3RoZXIgYXJjaGVzIGtub3cgd2hhdCB0byBk byB0byBhZGQgc3VwcG9ydC4NCg0KVjQgd2lsbCBhZGQgaW5zdHJ1Y3Rpb25zLg0KDQo+IA0KPiA+ DQo+ID4gSGVyZSBpcyBhbiBleGFtcGxlIG9mIGhlYXAtYnVmZmVyLW92ZXJmbG93IGJ1ZzoNCj4g PiAgICAgICAgIC4uLi4uLg0KPiA+ICAgICAgICAgY2hhciAqcCA9IHJ0ZV96bWFsbG9jKE5VTEws IDcsIDApOw0KPiA+ICAgICAgICAgcFs3XSA9ICdhJzsNCj4gPiAgICAgICAgIC4uLi4uLg0KPiA+ DQo+ID4gSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzZS1hZnRlci1mcmVlIGJ1ZzoNCj4gPiAgICAg ICAgIC4uLi4uLg0KPiA+ICAgICAgICAgY2hhciAqcCA9IHJ0ZV96bWFsbG9jKE5VTEwsIDcsIDAp Ow0KPiA+ICAgICAgICAgcnRlX2ZyZWUocCk7DQo+ID4gICAgICAgICAqcCA9ICdhJzsNCj4gPiAg ICAgICAgIC4uLi4uLg0KPiA+DQo+ID4gSWYgeW91IHdhbnQgdG8gdXNlIHRoaXMgZmVhdHVyZSwN Cj4gPiB5b3UgbmVlZCB0byBhZGQgYmVsb3cgY29tcGlsYXRpb24gb3B0aW9ucyB3aGVuIGNvbXBp bGluZyBjb2RlOg0KPiA+IC1EYnVpbGR0eXBlPWRlYnVnIC1EYl9sdW5kZWY9ZmFsc2UgLURiX3Nh bml0aXplPWFkZHJlc3MNCj4gDQo+IEFTQU4gaXMgdHJpZ2dlcmVkIGJ5IC1EYl9zYW5pdGl6ZT1h ZGRyZXNzLCBpdCBpcyB0aGUgb25seSAqbmVlZGVkKiBvcHRpb24NCj4gYWZhaXUuDQo+IA0KPiAN Cj4gPiAiLURidWlsZHR5cGU9ZGVidWciOiBEaXNwbGF5IGNvZGUgaW5mb3JtYXRpb24gd2hlbiBj b3JlZHVtcCBvY2N1cnMgaW4NCj4gPiB0aGUgcHJvZ3JhbS4NCj4gDQo+IEluIEFTYW4gY29udGV4 dCwgdGhlcmUgaXMgbm8gY29yZWR1bXAuDQo+IEFTYW4gZGlzcGxheXMgYSBiYWNrdHJhY2Ugd2hp Y2ggaXMgZWFzaWVyIHRvIHJlYWQgd2hlbiBkZWJ1ZyBzeW1ib2xzIGFyZQ0KPiBhdmFpbGFibGUu DQo+IFlvdSBjYW4gc3VnZ2VzdCBidWlsZGluZyB3aXRoIGRlYnVnLCBidXQgdGhpcyBpcyAqbm90 IG5lZWRlZCouDQo+IA0KPiANCj4gPiAiLURiX2x1bmRlZj1mYWxzZSI6IEl0IGlzIGVuYWJsZWQg YnkgZGVmYXVsdCwgYW5kIG5lZWRzIHRvIGJlIGRpc2FibGVkDQo+ID4gd2hlbiB1c2luZyBhc2Fu Lg0KDQpEYnVpbGR0eXBlIGFuZCBEYl9sdW5kZWYgd2lsbCB1cGRhdGUgdGhlIGluc3RydWN0aW9u cy4NCg0KPiBUaGlzIGlzIGFuIGlzc3VlIHdpdGggbWVzb24gYW5kIGNsYW5nLg0KPiBUd2Vha2lu ZyBiX2x1bmRlZiBpcyBuZWVkZWQgd2l0aCBjbGFuZywgZ2NjIGxvb2tzIGZpbmUuDQo+IEJ1dCBz dGlsbCwgb24gUkhFTCB3aXRoIGdjYywgSSBuZWVkIHRvIGluc3RhbGwgbGliYXNhbi4NCj4NCj4g TWF5YmUgd2UgY2FuIGFkZCBsaWJhc2FuIGF0IGEgcmVxdWlyZW1lbnQgYXQgcHJvamVjdCBsZXZl bCwgZGlkIHlvdSB0cnkgaXQ/DQoNCmxpYmFzYW4gaXMgaW5zdGFsbGVkIGJ5IGRlZmF1bHQgb24g dGhlIHVidW50dSBzeXN0ZW0uIEJlY2F1c2UgbGliYXNhbg0KYW5kIHRoZSBjb21waWxlciBhcmUg bWF0Y2hlZCwgc28gaXQgaXMgYmVzdCB0byBtYW51YWxseSBpbnN0YWxsIHRoZQ0KbWF0Y2hpbmcg bGlicmFyeS4NCg0KPiANCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFh1ZXFpbiBMaW4gPHh1ZXFp bi5saW5AaW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFpoaWhvbmcgUGVuZyA8emhpaG9u Z3gucGVuZ0BpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gIGRvYy9ndWlkZXMvcHJvZ19ndWlkZS9h c2FuLnJzdCAgfCAxMzAgKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICBkb2MvZ3VpZGVzL3By b2dfZ3VpZGUvaW5kZXgucnN0IHwgICAxICsNCj4gPiAgbGliL2VhbC9jb21tb24vbWFsbG9jX2Vs ZW0uYyAgICB8ICAyNiArKysrLQ0KPiA+ICBsaWIvZWFsL2NvbW1vbi9tYWxsb2NfZWxlbS5oICAg IHwgMTg0DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystDQo+ID4gIGxpYi9lYWwv Y29tbW9uL21hbGxvY19oZWFwLmMgICAgfCAgMTIgKysrDQo+ID4gIGxpYi9lYWwvY29tbW9uL3J0 ZV9tYWxsb2MuYyAgICAgfCAgIDkgKy0NCj4gPiAgbGliL3BpcGVsaW5lL3J0ZV9zd3hfcGlwZWxp bmUuYyB8ICAgNCArLQ0KPiANCj4gVGhpcyBjaGFuZ2Ugb24gcGlwZWxpbmUgaGFzIG5vIGV4cGxh bmF0aW9uLCBhbmQgbG9va3Mgb3V0IG9mIHBsYWNlIHdydCB0bw0KPiBjdXJyZW50IGNoYW5nZS4N Cg0KVGhpcyBpcyB0byBzb2x2ZSB0aGUgZ2NjIGNvbXBpbGF0aW9uIHByb2JsZW0sIEkgd2lsbCBz ZXBhcmF0ZSB0aGlzIHBhdGNoLg0KDQo+IA0KPiANCj4gDQo+ID4gIDcgZmlsZXMgY2hhbmdlZCwg MzU5IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pICBjcmVhdGUgbW9kZQ0KPiA+IDEwMDY0 NCBkb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvYXNhbi5yc3QNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9k b2MvZ3VpZGVzL3Byb2dfZ3VpZGUvYXNhbi5yc3QNCj4gPiBiL2RvYy9ndWlkZXMvcHJvZ19ndWlk ZS9hc2FuLnJzdCBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleA0KPiA+IDAwMDAwMDAwMDAuLmEw NTg5ZDliOGENCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZG9jL2d1aWRlcy9wcm9nX2d1 aWRlL2FzYW4ucnN0DQo+ID4gQEAgLTAsMCArMSwxMzAgQEANCj4gPiArLi4gQ29weXJpZ2h0IChj KSA8MjAyMT4sIEludGVsIENvcnBvcmF0aW9uDQo+ID4gKyAgIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+ID4gKw0KPiA+ICtNZW1vcnkgZXJyb3IgZGV0ZWN0IHN0YW5kYXJkIHRvb2wgLSBBZGRyZXNz U2FuaXRpemVyKEFzYW4pDQo+ID4NCj4gKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA9DQo+ID4gKw0KPiA+ICtBZGRyZXNzU2FuaXRp emVyIChBU2FuKSBpcyBhIGdvb2dsZSBtZW1vcnkgZXJyb3IgZGV0ZWN0IHN0YW5kYXJkDQo+ID4g K3Rvb2wuIEl0IGNvdWxkIGhlbHAgdG8gZGV0ZWN0IHVzZS1hZnRlci1mcmVlIGFuZA0KPiA+ICt7 aGVhcCxzdGFjayxnbG9iYWx9LWJ1ZmZlciBvdmVyZmxvdyBidWdzIGluIEMvQysrIHByb2dyYW1z LCBwcmludA0KPiA+ICtkZXRhaWxlZCBlcnJvciBpbmZvcm1hdGlvbiB3aGVuIGVycm9yIGhhcHBl bnMsIGxhcmdlIGltcHJvdmUgZGVidWcNCj4gPiArZWZmaWNpZW5jeS4NCj4gPiArDQo+ID4gK0J5 IHJlZmVycmluZyB0byBpdHMgaW1wbGVtZW50YXRpb24gYWxnb3JpdGhtDQo+ID4gKyhodHRwczov L2dpdGh1Yi5jb20vZ29vZ2xlL3Nhbml0aXplcnMvd2lraS9BZGRyZXNzU2FuaXRpemVyQWxnb3Jp dGhtKQ0KPiA+ICssIGVuYWJsZWQgaGVhcC1idWZmZXItb3ZlcmZsb3cgYW5kIHVzZS1hZnRlci1m cmVlIGZ1bmN0aW9ucyBvbiBkcGRrLg0KPiA+ICtEUERLIEFTQU4gZnVuY3Rpb24gY3VycmVudGx5 IG9ubHkgc3VwcG9ydHMgb24gTGludXggeDg2XzY0Lg0KPiA+ICsNCj4gPiArQWRkcmVzc1Nhbml0 aXplciBpcyBhIHBhcnQgb2YgTExWTSgzLjErKWFuZCBHQ0MoNC44KykuDQo+ID4gKw0KPiA+ICtF eGFtcGxlIGhlYXAtYnVmZmVyLW92ZXJmbG93IGVycm9yDQo+ID4gKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCj4gPiArDQo+ID4gK0ZvbGxvd2luZyBlcnJvciB3YXMgcmVwb3J0 ZWQgd2hlbiBBc2FuIHdhcyBlbmFibGVkOjoNCj4gPiArDQo+ID4gKyAgICBBcHBsaWVkIDkgYnl0 ZXMgb2YgbWVtb3J5LCBidXQgYWNjZXNzZWQgdGhlIDEwdGggYnl0ZSBvZiBtZW1vcnksDQo+ID4g KyAgICBzbyBoZWFwLWJ1ZmZlci1vdmVyZmxvdyBhcHBlYXJlZC4NCj4gPiArDQo+ID4gK0JlbG93 IGNvZGUgcmVzdWx0cyBpbiB0aGlzIGVycm9yOjoNCj4gPiArDQo+ID4gKyAgICBjaGFyICpwID0g cnRlX3ptYWxsb2MoTlVMTCwgOSwgMCk7DQo+ID4gKyAgICBpZiAoIXApIHsNCj4gPiArICAgICAg ICBwcmludGYoInJ0ZV96bWFsbG9jIGVycm9yLiIpOw0KPiA+ICsgICAgICAgIHJldHVybiAtMTsN Cj4gPiArICAgIH0NCj4gPiArICAgIHBbOV0gPSAnYSc7DQo+ID4gKw0KPiA+ICtUaGUgZXJyb3Ig bG9nOjoNCj4gPiArDQo+ID4gKyAgICA9PTQ5NDMzPT1FUlJPUjogQWRkcmVzc1Nhbml0aXplcjog aGVhcC1idWZmZXItb3ZlcmZsb3cgb24gYWRkcmVzcw0KPiAweDdmNzczZmFmYTI0OSBhdCBwYyAw eDU1NTZiMTNiZGFlNCBicCAweDdmZmViNDk2NWU0MCBzcCAweDdmZmViNDk2NWUzMA0KPiBXUklU RSBvZiBzaXplIDEgYXQgMHg3Zjc3M2ZhZmEyNDkgdGhyZWFkIFQwDQo+ID4gKyAgICAjMCAweDU1 NTZiMTNiZGFlMyBpbg0KPiBhc2FuX2hlYXBfYnVmZmVyX292ZXJmbG93IC4uL2FwcC90ZXN0L3Rl c3RfYXNhbl9oZWFwX2J1ZmZlcl9vdmVyZmxvdy4NCj4gYzoyNQ0KPiA+ICsgICAgIzEgMHg1NTU2 YjA0M2U5ZDQgaW4NCj4gY21kX2F1dG90ZXN0X3BhcnNlZCAuLi9hcHAvdGVzdC9jb21tYW5kcy5j OjcxDQo+ID4gKyAgICAjMiAweDU1NTZiMWNkZDRiMCBpbg0KPiBjbWRsaW5lX3BhcnNlIC4uL2xp Yi9jbWRsaW5lL2NtZGxpbmVfcGFyc2UuYzoyOTANCj4gPiArICAgICMzIDB4NTU1NmIxY2Q4OTg3 IGluIGNtZGxpbmVfdmFsaWRfYnVmZmVyIC4uL2xpYi9jbWRsaW5lL2NtZGxpbmUuYzoyNg0KPiA+ ICsgICAgIzQgMHg1NTU2YjFjZTQ3N2EgaW4gcmRsaW5lX2NoYXJfaW4gLi4vbGliL2NtZGxpbmUv Y21kbGluZV9yZGxpbmUuYzo0MjENCj4gPiArICAgICM1IDB4NTU1NmIxY2Q5MjNlIGluIGNtZGxp bmVfaW4gLi4vbGliL2NtZGxpbmUvY21kbGluZS5jOjE0OQ0KPiA+ICsgICAgIzYgMHg1NTU2YjFj ZDk3NjkgaW4gY21kbGluZV9pbnRlcmFjdCAuLi9saWIvY21kbGluZS9jbWRsaW5lLmM6MjIzDQo+ ID4gKyAgICAjNyAweDU1NTZiMDQ1ZjUzYiBpbiBtYWluIC4uL2FwcC90ZXN0L3Rlc3QuYzoyMzQN Cj4gPiArICAgICM4IDB4N2Y3ZjFlYmE5MGIyIGluIF9fbGliY19zdGFydF9tYWluICgvbGliL3g4 Nl82NC1saW51eC0NCj4gZ251L2xpYmMuc28uNisweDI3MGIyKQ0KPiA+ICsgICAgIzkgMHg1NTU2 YjA0M2U3MGQgaW4gX3N0YXJ0DQo+ID4gKyAoL2hvbWUvcHpoL3l5eS94ODZfNjQtbmF0aXZlLWxp bnV4YXBwLWdjYy9hcHAvdGVzdC9kcGRrLQ0KPiB0ZXN0KzB4N2NlNzANCj4gPiArIGQpDQo+ID4g Kw0KPiA+ICsgICAgQWRkcmVzcyAweDdmNzczZmFmYTI0OSBpcyBhIHdpbGQgcG9pbnRlci4NCj4g PiArICAgIFNVTU1BUlk6IEFkZHJlc3NTYW5pdGl6ZXI6IGhlYXAtYnVmZmVyLQ0KPiBvdmVyZmxv dyAuLi9hcHAvdGVzdC90ZXN0X2FzYW5faGVhcF9idWZmZXJfb3ZlcmZsb3cuYzoyNSBpbg0KPiBh c2FuX2hlYXBfYnVmZmVyX292ZXJmbG93DQo+ID4gKyAgICBTaGFkb3cgYnl0ZXMgYXJvdW5kIHRo ZSBidWdneSBhZGRyZXNzOg0KPiA+ICsgICAgMHgwZmVmNjdmNTczZjA6IDAwIDAwIDAwIDAwIDAw IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQo+ID4gKyAgICAweDBmZWY2N2Y1NzQw MDogZmEgZmEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4gPiAr ICAgIDB4MGZlZjY3ZjU3NDEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw MCAwMCAwMCAwMA0KPiA+ICsgICAgMHgwZmVmNjdmNTc0MjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAw IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQo+ID4gKyAgICAweDBmZWY2N2Y1NzQzMDogMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4gPiArICAgID0+ MHgwZmVmNjdmNTc0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIGZhIGZhIDAwWzAxXWZhIDAwIDAwIDAw IDAwIDAwDQo+ID4gKyAgICAweDBmZWY2N2Y1NzQ1MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4gPiArICAgIDB4MGZlZjY3ZjU3NDYwOiAwMCAwMCAw MCAwMCAwMCAwMCBmYSBmYSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KPiA+ICsgICAgMHgwZmVm NjdmNTc0NzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw DQo+ID4gKyAgICAweDBmZWY2N2Y1NzQ4MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgMDAgMDAgMDANCj4gPiArDQo+ID4gK0V4YW1wbGUgdXNlLWFmdGVyLWZyZWUgZXJy b3INCj4gPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICsNCj4gPiArRm9sbG93 aW5nIGVycm9yIHdhcyByZXBvcnRlZCB3aGVuIEFzYW4gd2FzIGVuYWJsZWQ6Og0KPiA+ICsNCj4g PiArICAgIEFwcGxpZWQgZm9yIDkgYnl0ZXMgb2YgbWVtb3J5LCBhbmQgYWNjZXNzZWQgdGhlIGZp cnN0IGJ5dGUgYWZ0ZXINCj4gPiArICAgIHJlbGVhc2VkLCBzbyBoZWFwLXVzZS1hZnRlci1mcmVl IGFwcGVhcmVkLg0KPiA+ICsNCj4gPiArQmVsb3cgY29kZSByZXN1bHRzIGluIHRoaXMgZXJyb3I6 Og0KPiA+ICsNCj4gPiArICAgIGNoYXIgKnAgPSBydGVfem1hbGxvYyhOVUxMLCA5LCAwKTsNCj4g PiArICAgIGlmICghcCkgew0KPiA+ICsgICAgICAgIHByaW50ZigicnRlX3ptYWxsb2MgZXJyb3Iu Iik7DQo+ID4gKyAgICAgICAgcmV0dXJuIC0xOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgcnRlX2Zy ZWUocCk7DQo+ID4gKyAgICAqcCA9ICdhJzsNCj4gPiArDQo+ID4gK1RoZSBlcnJvciBsb2c6Og0K PiA+ICsNCj4gPiArICAgID09NDk0Nzg9PUVSUk9SOiBBZGRyZXNzU2FuaXRpemVyOiBoZWFwLXVz ZS1hZnRlci1mcmVlIG9uIGFkZHJlc3MNCj4gMHg3ZmUyZmZhZmEyNDAgYXQgcGMgMHg1NjQwOWIw ODRiYzggYnAgMHg3ZmZlZjYyYzU3ZDAgc3AgMHg3ZmZlZjYyYzU3YzANCj4gV1JJVEUgb2Ygc2l6 ZSAxIGF0IDB4N2ZlMmZmYWZhMjQwIHRocmVhZCBUMA0KPiA+ICsgICAgIzAgMHg1NjQwOWIwODRi YzcgaW4NCj4gYXNhbl91c2VfYWZ0ZXJfZnJlZSAuLi9hcHAvdGVzdC90ZXN0X2FzYW5fdXNlX2Fm dGVyX2ZyZWUuYzoyNg0KPiA+ICsgICAgIzEgMHg1NjQwOWExMDU5ZDQgaW4NCj4gY21kX2F1dG90 ZXN0X3BhcnNlZCAuLi9hcHAvdGVzdC9jb21tYW5kcy5jOjcxDQo+ID4gKyAgICAjMiAweDU2NDA5 YjlhNDRiMCBpbg0KPiBjbWRsaW5lX3BhcnNlIC4uL2xpYi9jbWRsaW5lL2NtZGxpbmVfcGFyc2Uu YzoyOTANCj4gPiArICAgICMzIDB4NTY0MDliOTlmOTg3IGluIGNtZGxpbmVfdmFsaWRfYnVmZmVy IC4uL2xpYi9jbWRsaW5lL2NtZGxpbmUuYzoyNg0KPiA+ICsgICAgIzQgMHg1NjQwOWI5YWI3N2Eg aW4NCj4gcmRsaW5lX2NoYXJfaW4gLi4vbGliL2NtZGxpbmUvY21kbGluZV9yZGxpbmUuYzo0MjEN Cj4gPiArICAgICM1IDB4NTY0MDliOWEwMjNlIGluIGNtZGxpbmVfaW4gLi4vbGliL2NtZGxpbmUv Y21kbGluZS5jOjE0OQ0KPiA+ICsgICAgIzYgMHg1NjQwOWI5YTA3NjkgaW4gY21kbGluZV9pbnRl cmFjdCAuLi9saWIvY21kbGluZS9jbWRsaW5lLmM6MjIzDQo+ID4gKyAgICAjNyAweDU2NDA5YTEy NjUzYiBpbiBtYWluIC4uL2FwcC90ZXN0L3Rlc3QuYzoyMzQNCj4gPiArICAgICM4IDB4N2ZlYWZh ZmMyMGIyIGluIF9fbGliY19zdGFydF9tYWluICgvbGliL3g4Nl82NC1saW51eC0NCj4gZ251L2xp YmMuc28uNisweDI3MGIyKQ0KPiA+ICsgICAgIzkgMHg1NjQwOWExMDU3MGQgaW4gX3N0YXJ0DQo+ ID4gKyAoL2hvbWUvcHpoL3l5eS94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWdjYy9hcHAvdGVzdC9k cGRrLQ0KPiB0ZXN0KzB4N2NlNzANCj4gPiArIGQpDQo+ID4gKw0KPiA+ICsgICAgQWRkcmVzcyAw eDdmZTJmZmFmYTI0MCBpcyBhIHdpbGQgcG9pbnRlci4NCj4gPiArICAgIFNVTU1BUlk6IEFkZHJl c3NTYW5pdGl6ZXI6IGhlYXAtdXNlLWFmdGVyLQ0KPiBmcmVlIC4uL2FwcC90ZXN0L3Rlc3RfYXNh bl91c2VfYWZ0ZXJfZnJlZS5jOjI2IGluIGFzYW5fdXNlX2FmdGVyX2ZyZWUNCj4gPiArICAgIFNo YWRvdyBieXRlcyBhcm91bmQgdGhlIGJ1Z2d5IGFkZHJlc3M6DQo+ID4gKyAgICAweDBmZmNkZmY1 NzNmMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4g PiArICAgIDB4MGZmY2RmZjU3NDAwOiBmYSBmYSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw MCAwMCAwMCAwMCAwMA0KPiA+ICsgICAgMHgwZmZjZGZmNTc0MTA6IDAwIDAwIDAwIDAwIDAwIDAw IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQo+ID4gKyAgICAweDBmZmNkZmY1NzQyMDog MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4gPiArICAg IDB4MGZmY2RmZjU3NDMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw MCAwMCAwMA0KPiA+ICsgICAgPT4weDBmZmNkZmY1NzQ0MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDBbZmRdZmQgZmQgZmQgZmQgZmQgZmQgZmQNCj4gPiArICAgIDB4MGZmY2RmZjU3NDUwOiAwMCAw MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KPiA+ICsgICAgMHgw ZmZjZGZmNTc0NjA6IDAwIDAwIDAwIDAwIDAwIDAwIGZhIGZhIDAwIDAwIDAwIDAwIDAwIDAwIDAw IDAwDQo+ID4gKyAgICAweDBmZmNkZmY1NzQ3MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDANCj4gPiArICAgIDB4MGZmY2RmZjU3NDgwOiAwMCAwMCAwMCAw MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KPiA+ICsgICAgMHgwZmZjZGZm NTc0OTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQo+ ID4gKw0KPiA+ICtVc2FnZQ0KPiA+ICstLS0tLQ0KPiA+ICsNCj4gPiArbWVzb24gYnVpbGQNCj4g PiArXl5eXl5eXl5eXl4NCj4gPiArDQo+ID4gK1RvIGVuYWJsZSBBc2FuIGluIG1lc29uIGJ1aWxk IHN5c3RlbSwgdXNlIGZvbGxvd2luZyBtZXNvbiBidWlsZA0KPiBjb21tYW5kOg0KPiA+ICsNCj4g PiArRXhhbXBsZSB1c2FnZTo6DQo+ID4gKw0KPiA+ICsgbWVzb24gYnVpbGQgLURidWlsZHR5cGU9 ZGVidWcgLURiX2x1bmRlZj1mYWxzZSAtRGJfc2FuaXRpemU9YWRkcmVzcw0KPiA+ICsgbmluamEg LUMgYnVpbGQNCj4gPiArDQo+ID4gKy4uIE5vdGU6Og0KPiA+ICsNCj4gPiArICBhKSBUaGUgaXNz dWUgb2YgYXNhbiB3aWxkIHBvaW50ZXIgaXMgdGhhdCBkcGRrIGFzYW4gdG9vbCBpcyBub3QgZnVs bHkNCj4gYWRhcHRlZCB0byBnb29nbGUgYXNhbi4NCj4gPiArICAgICBGb3IgZXhhbXBsZTogQWRk cmVzcyAweDdmZTJmZmFmYTI0MCBpcyBhIHdpbGQgcG9pbnRlci4NCj4gDQo+IEkgY2FuJ3QgdW5k ZXJzdGFuZCB3aGF0IHRoZSAid2lsZCBwb2ludGVyIiBtZWFucyBpbiB0aGlzIGNvbnRleHQuDQo+ IFRoaXMgY29tbWVudCBiZWxvbmdzIHRvIHRoZSB0cmFjZXMgaW4gdGhlIHNlY3Rpb24gYmVmb3Jl Lg0KDQpUaGlzIGlzIGJlY2F1c2Ugd2Ugb25seSBzZXQgdXAgdGhlIHJlZCB6b25lIGFuZCBkaWQg bm90IGNvbnN0cnVjdCB0aGUNCmNvbXBsZXRlIGRhdGEgc3RydWN0dXJlIHJlcXVpcmVkIGJ5IGxp YmFzYW4uIEFzIGEgcmVzdWx0LCBsaWJhc2FuIGNvdWxkDQpub3QgZmluZCB0aGUgbG9jYXRpb24g b2YgdGhlIG1lbW9yeSByZXF1ZXN0LCBzbyAid2lsZCBwb2ludGVyIiB3YXMNCnJlcG9ydGVkLiBU aGUgY3VycmVudCBpbmZvcm1hdGlvbiBoYXMgYmVlbiBhYmxlIHRvIHRyb3VibGVzaG9vdCBlcnJv cnMsDQpzbyB0aGlzIGlzc3VlIGlzIGEgbG93ZXIgcHJpb3JpdHkuDQoNCj4gDQo+ID4gKyAgYikg Q2VudG9zOCBuZWVkcyB0byBpbnN0YWxsIGxpYmFzYW4gc2VwYXJhdGVseS4NCj4gDQo+IFNlZSBt eSBwcmV2aW91cyBjb21tZW50IG9uIGJfbHVuZGVmLg0KPiANCj4gDQo+ID4gKyAgYykgSWYgdGhl IHByb2dyYW0gdXNlcyBjbWRsaW5lLCB3aGVuIGEgbWVtb3J5IGJ1ZyBvY2N1cnMsIG5lZWQgdG8N Cj4gZXhlY3V0ZSB0aGUgInN0dHkgZWNobyIgY29tbWFuZC4NCj4gDQo+IFllcywgdGhpcyBpcyBh bm5veWluZyB3aGVuIGV4ZWN1dGluZyBmYWlsaW5nIHVuaXQgdGVzdHMuDQo+IFRoYXQgaXMgc29t ZXRoaW5nIHRvIGhhbmRsZSBiZXR0ZXIgaW4gdGhlIGNtZGxpbmUgbGlicmFyeSwgbWF5YmUgaW4g dGhlIGZ1dHVyZS4NCj4gDQo+IExpa2UgIndpbGQgcG9pbnRlciIsIEkgZG9uJ3QgdGhpbmsgdGhp cyBjb21tZW50IGJlbG9uZ3MgaGVyZS4NCg0KY21kbGluZSBjYW5ub3Qgc29sdmUgdGhpcyBwcm9i bGVtIHRlbXBvcmFyaWx5LCBzbyB0aGlzIHByb2JsZW0gbXVzdA0KYmUgZXhwbGFpbmVkLCBidXQg SSBkb27igJl0IGtub3cgd2hpY2ggcG9zaXRpb24gaXMgYmV0dGVyLg0KDQo+IA0KPiANCj4gPiBk aWZmIC0tZ2l0IGEvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL2luZGV4LnJzdA0KPiA+IGIvZG9jL2d1 aWRlcy9wcm9nX2d1aWRlL2luZGV4LnJzdCBpbmRleCAyZGNlNTA3ZjQ2Li5kZjhhNGI5M2UxIDEw MDY0NA0KPiA+IC0tLSBhL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9pbmRleC5yc3QNCj4gPiArKysg Yi9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvaW5kZXgucnN0DQo+ID4gQEAgLTcxLDMgKzcxLDQgQEAg UHJvZ3JhbW1lcidzIEd1aWRlDQo+ID4gICAgICBsdG8NCj4gPiAgICAgIHByb2ZpbGVfYXBwDQo+ ID4gICAgICBnbG9zc2FyeQ0KPiA+ICsgICAgYXNhbg0KPiA+IGRpZmYgLS1naXQgYS9saWIvZWFs L2NvbW1vbi9tYWxsb2NfZWxlbS5jDQo+ID4gYi9saWIvZWFsL2NvbW1vbi9tYWxsb2NfZWxlbS5j IGluZGV4IGMyYzk0NjFmMWQuLmJkZDIwYTE2MmUgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2VhbC9j b21tb24vbWFsbG9jX2VsZW0uYw0KPiA+ICsrKyBiL2xpYi9lYWwvY29tbW9uL21hbGxvY19lbGVt LmMNCj4gPiBAQCAtNDQ2LDYgKzQ0Niw4IEBAIG1hbGxvY19lbGVtX2FsbG9jKHN0cnVjdCBtYWxs b2NfZWxlbSAqZWxlbSwNCj4gc2l6ZV90IHNpemUsIHVuc2lnbmVkIGFsaWduLA0KPiA+ICAgICAg ICAgICAgICAgICBzdHJ1Y3QgbWFsbG9jX2VsZW0gKm5ld19mcmVlX2VsZW0gPQ0KPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRFX1BUUl9BREQobmV3X2VsZW0sIHNpemUgKw0K PiA+IE1BTExPQ19FTEVNX09WRVJIRUFEKTsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICBhc2Fu X2NsZWFyX3NwbGl0X2FsbG9jem9uZShuZXdfZnJlZV9lbGVtKTsNCj4gPiArDQo+ID4gICAgICAg ICAgICAgICAgIHNwbGl0X2VsZW0oZWxlbSwgbmV3X2ZyZWVfZWxlbSk7DQo+ID4gICAgICAgICAg ICAgICAgIG1hbGxvY19lbGVtX2ZyZWVfbGlzdF9pbnNlcnQobmV3X2ZyZWVfZWxlbSk7DQo+ID4N Cj4gPiBAQCAtNDU4LDYgKzQ2MCw4IEBAIG1hbGxvY19lbGVtX2FsbG9jKHN0cnVjdCBtYWxsb2Nf ZWxlbSAqZWxlbSwNCj4gc2l6ZV90IHNpemUsIHVuc2lnbmVkIGFsaWduLA0KPiA+ICAgICAgICAg ICAgICAgICBlbGVtLT5zdGF0ZSA9IEVMRU1fQlVTWTsNCj4gPiAgICAgICAgICAgICAgICAgZWxl bS0+cGFkID0gb2xkX2VsZW1fc2l6ZTsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICBhc2FuX2Ns ZWFyX2FsbG9jem9uZShlbGVtKTsNCj4gPiArDQo+ID4gICAgICAgICAgICAgICAgIC8qIHB1dCBh IGR1bW15IGhlYWRlciBpbiBwYWRkaW5nLCB0byBwb2ludCB0byByZWFsIGVsZW1lbnQgaGVhZGVy DQo+ICovDQo+ID4gICAgICAgICAgICAgICAgIGlmIChlbGVtLT5wYWQgPiAwKSB7IC8qIHBhZCB3 aWxsIGJlIGF0IGxlYXN0IDY0LWJ5dGVzLCBhcyBldmVyeXRoaW5nDQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICogaXMgY2FjaGUtbGluZSBhbGlnbmVkICovIEBADQo+ ID4gLTQ3MCwxMiArNDc0LDE4IEBAIG1hbGxvY19lbGVtX2FsbG9jKHN0cnVjdCBtYWxsb2NfZWxl bSAqZWxlbSwgc2l6ZV90DQo+IHNpemUsIHVuc2lnbmVkIGFsaWduLA0KPiA+ICAgICAgICAgICAg ICAgICByZXR1cm4gbmV3X2VsZW07DQo+ID4gICAgICAgICB9DQo+ID4NCj4gPiArICAgICAgIGFz YW5fY2xlYXJfc3BsaXRfYWxsb2N6b25lKG5ld19lbGVtKTsNCj4gPiArDQo+ID4gICAgICAgICAv KiB3ZSBhcmUgZ29pbmcgdG8gc3BsaXQgdGhlIGVsZW1lbnQgaW4gdHdvLiBUaGUgb3JpZ2luYWwg ZWxlbWVudA0KPiA+ICAgICAgICAgICogcmVtYWlucyBmcmVlLCBhbmQgdGhlIG5ldyBlbGVtZW50 IGlzIHRoZSBvbmUgYWxsb2NhdGVkLg0KPiA+ICAgICAgICAgICogUmUtaW5zZXJ0IG9yaWdpbmFs IGVsZW1lbnQsIGluIGNhc2UgaXRzIG5ldyBzaXplIG1ha2VzIGl0DQo+ID4gICAgICAgICAgKiBi ZWxvbmcgb24gYSBkaWZmZXJlbnQgbGlzdC4NCj4gPiAgICAgICAgICAqLw0KPiA+ICsNCj4gPiAg ICAgICAgIHNwbGl0X2VsZW0oZWxlbSwgbmV3X2VsZW0pOw0KPiA+ICsNCj4gPiArICAgICAgIGFz YW5fY2xlYXJfYWxsb2N6b25lKG5ld19lbGVtKTsNCj4gPiArDQo+ID4gICAgICAgICBuZXdfZWxl bS0+c3RhdGUgPSBFTEVNX0JVU1k7DQo+ID4gICAgICAgICBtYWxsb2NfZWxlbV9mcmVlX2xpc3Rf aW5zZXJ0KGVsZW0pOw0KPiA+DQo+ID4gQEAgLTYwMSw2ICs2MTEsOCBAQCBtYWxsb2NfZWxlbV9o aWRlX3JlZ2lvbihzdHJ1Y3QgbWFsbG9jX2VsZW0NCj4gKmVsZW0sIHZvaWQgKnN0YXJ0LCBzaXpl X3QgbGVuKQ0KPiA+ICAgICAgICAgaWYgKG5leHQgJiYgbmV4dF9lbGVtX2lzX2FkamFjZW50KGVs ZW0pKSB7DQo+ID4gICAgICAgICAgICAgICAgIGxlbl9hZnRlciA9IFJURV9QVFJfRElGRihuZXh0 LCBoaWRlX2VuZCk7DQo+ID4gICAgICAgICAgICAgICAgIGlmIChsZW5fYWZ0ZXIgPj0gTUFMTE9D X0VMRU1fT1ZFUkhFQUQgKyBNSU5fREFUQV9TSVpFKQ0KPiA+IHsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICBhc2FuX2NsZWFyX3NwbGl0X2FsbG9jem9uZShoaWRlX2VuZCk7DQo+ID4gKw0K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNwbGl0IGFmdGVyICovDQo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgc3BsaXRfZWxlbShlbGVtLCBoaWRlX2VuZCk7DQo+ID4NCj4gPiBA QCAtNjE1LDYgKzYyNyw4IEBAIG1hbGxvY19lbGVtX2hpZGVfcmVnaW9uKHN0cnVjdCBtYWxsb2Nf ZWxlbQ0KPiAqZWxlbSwgdm9pZCAqc3RhcnQsIHNpemVfdCBsZW4pDQo+ID4gICAgICAgICBpZiAo cHJldiAmJiBwcmV2X2VsZW1faXNfYWRqYWNlbnQoZWxlbSkpIHsNCj4gPiAgICAgICAgICAgICAg ICAgbGVuX2JlZm9yZSA9IFJURV9QVFJfRElGRihoaWRlX3N0YXJ0LCBlbGVtKTsNCj4gPiAgICAg ICAgICAgICAgICAgaWYgKGxlbl9iZWZvcmUgPj0gTUFMTE9DX0VMRU1fT1ZFUkhFQUQgKw0KPiA+ IE1JTl9EQVRBX1NJWkUpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBhc2FuX2NsZWFy X3NwbGl0X2FsbG9jem9uZShoaWRlX3N0YXJ0KTsNCj4gPiArDQo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgLyogc3BsaXQgYmVmb3JlICovDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg c3BsaXRfZWxlbShlbGVtLCBoaWRlX3N0YXJ0KTsNCj4gPg0KPiA+IEBAIC02MjgsNiArNjQyLDgg QEAgbWFsbG9jX2VsZW1faGlkZV9yZWdpb24oc3RydWN0IG1hbGxvY19lbGVtDQo+ICplbGVtLCB2 b2lkICpzdGFydCwgc2l6ZV90IGxlbikNCj4gPiAgICAgICAgICAgICAgICAgfQ0KPiA+ICAgICAg ICAgfQ0KPiA+DQo+ID4gKyAgICAgICBhc2FuX2NsZWFyX2FsbG9jem9uZShlbGVtKTsNCj4gPiAr DQo+ID4gICAgICAgICByZW1vdmVfZWxlbShlbGVtKTsNCj4gPiAgfQ0KPiA+DQo+ID4gQEAgLTY0 MSw4ICs2NTcsMTAgQEAgbWFsbG9jX2VsZW1fcmVzaXplKHN0cnVjdCBtYWxsb2NfZWxlbSAqZWxl bSwNCj4gc2l6ZV90IHNpemUpDQo+ID4gICAgICAgICBjb25zdCBzaXplX3QgbmV3X3NpemUgPSBz aXplICsgZWxlbS0+cGFkICsNCj4gPiBNQUxMT0NfRUxFTV9PVkVSSEVBRDsNCj4gPg0KPiA+ICAg ICAgICAgLyogaWYgd2UgcmVxdWVzdCBhIHNtYWxsZXIgc2l6ZSwgdGhlbiBhbHdheXMgcmV0dXJu IG9rICovDQo+ID4gLSAgICAgICBpZiAoZWxlbS0+c2l6ZSA+PSBuZXdfc2l6ZSkNCj4gPiArICAg ICAgIGlmIChlbGVtLT5zaXplID49IG5ld19zaXplKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGFz YW5fY2xlYXJfYWxsb2N6b25lKGVsZW0pOw0KPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gMDsN Cj4gPiArICAgICAgIH0NCj4gPg0KPiA+ICAgICAgICAgLyogY2hlY2sgaWYgdGhlcmUgaXMgYSBu ZXh0IGVsZW1lbnQsIGl0J3MgZnJlZSBhbmQgYWRqYWNlbnQgKi8NCj4gPiAgICAgICAgIGlmICgh ZWxlbS0+bmV4dCB8fCBlbGVtLT5uZXh0LT5zdGF0ZSAhPSBFTEVNX0ZSRUUgfHwgQEAgLTY2MSw5 DQo+ID4gKzY3OSwxNSBAQCBtYWxsb2NfZWxlbV9yZXNpemUoc3RydWN0IG1hbGxvY19lbGVtICpl bGVtLCBzaXplX3Qgc2l6ZSkNCj4gPiAgICAgICAgICAgICAgICAgLyogbm93IHdlIGhhdmUgYSBi aWcgYmxvY2sgdG9nZXRoZXIuIExldHMgY3V0IGl0IGRvd24gYSBiaXQsIGJ5DQo+IHNwbGl0dGlu ZyAqLw0KPiA+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWFsbG9jX2VsZW0gKnNwbGl0X3B0ID0g UlRFX1BUUl9BREQoZWxlbSwgbmV3X3NpemUpOw0KPiA+ICAgICAgICAgICAgICAgICBzcGxpdF9w dCA9IFJURV9QVFJfQUxJR05fQ0VJTChzcGxpdF9wdCwNCj4gPiBSVEVfQ0FDSEVfTElORV9TSVpF KTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIGFzYW5fY2xlYXJfc3BsaXRfYWxsb2N6b25l KHNwbGl0X3B0KTsNCj4gPiArDQo+ID4gICAgICAgICAgICAgICAgIHNwbGl0X2VsZW0oZWxlbSwg c3BsaXRfcHQpOw0KPiA+ICAgICAgICAgICAgICAgICBtYWxsb2NfZWxlbV9mcmVlX2xpc3RfaW5z ZXJ0KHNwbGl0X3B0KTsNCj4gPiAgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBhc2FuX2Ns ZWFyX2FsbG9jem9uZShlbGVtKTsNCj4gPiArDQo+ID4gICAgICAgICByZXR1cm4gMDsNCj4gPiAg fQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9lYWwvY29tbW9uL21hbGxvY19lbGVtLmgNCj4g PiBiL2xpYi9lYWwvY29tbW9uL21hbGxvY19lbGVtLmggaW5kZXggYTFlNWY3ZjAyYy4uMDFhNzM5 ZjJlYSAxMDA2NDQNCj4gPiAtLS0gYS9saWIvZWFsL2NvbW1vbi9tYWxsb2NfZWxlbS5oDQo+ID4g KysrIGIvbGliL2VhbC9jb21tb24vbWFsbG9jX2VsZW0uaA0KPiA+IEBAIC03LDYgKzcsMTQgQEAN Cj4gPg0KPiA+ICAjaW5jbHVkZSA8c3RkYm9vbC5oPg0KPiA+DQo+ID4gKyNpZmRlZiBfX1NBTklU SVpFX0FERFJFU1NfXw0KPiA+ICsjZGVmaW5lIFJURV9NQUxMT0NfQVNBTg0KPiA+ICsjZWxpZiBk ZWZpbmVkKF9faGFzX2ZlYXR1cmUpDQo+ID4gKyMgaWYgX19oYXNfZmVhdHVyZShhZGRyZXNzX3Nh bml0aXplcikgI2RlZmluZSBSVEVfTUFMTE9DX0FTQU4gIw0KPiBlbmRpZg0KPiA+ICsjZW5kaWYN Cj4gPiArDQo+ID4gICNkZWZpbmUgTUlOX0RBVEFfU0laRSAoUlRFX0NBQ0hFX0xJTkVfU0laRSkN Cj4gPg0KPiA+ICAvKiBkdW1teSBkZWZpbml0aW9uIG9mIHN0cnVjdCBzbyB3ZSBjYW4gdXNlIHBv aW50ZXJzIHRvIGl0IGluDQo+ID4gbWFsbG9jX2VsZW0gc3RydWN0ICovIEBAIC0zNiwxMCArNDQs MjAgQEAgc3RydWN0IG1hbGxvY19lbGVtIHsNCj4gPiAgICAgICAgIHVpbnQ2NF90IGhlYWRlcl9j b29raWU7ICAgICAgICAgLyogQ29va2llIG1hcmtpbmcgc3RhcnQgb2YgZGF0YSAqLw0KPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cmFpbGVyIGNvb2tpZSBh dCBzdGFydCArDQo+ID4gc2l6ZSAqLyAgI2VuZGlmDQo+ID4gKyNpZmRlZiBSVEVfTUFMTE9DX0FT QU4NCj4gPiArICAgICAgIHNpemVfdCB1c2VyX3NpemU7DQo+ID4gKyAgICAgICB1aW50NjRfdCBh c2FuX2Nvb2tpZVsyXTsgLyptdXN0IGJlIG5leHQgdG8gaGVhZGVyX2Nvb2tpZSovDQo+IA0KPiBG aXggY29kaW5nIHN0eWxlIGZvciBjb21tZW50IHBsZWFzZS4NCg0KVjQgd2lsbCBiZSBmaXhlZC4N Cg0KPiANCj4gPiArI2VuZGlmDQo+ID4gIH0gX19ydGVfY2FjaGVfYWxpZ25lZDsNCj4gPg0KPiA+ ICtzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IE1BTExPQ19FTEVNX0hFQURFUl9MRU4gPSBzaXpl b2Yoc3RydWN0DQo+ID4gK21hbGxvY19lbGVtKTsNCj4gPiArDQo+ID4gICNpZm5kZWYgUlRFX01B TExPQ19ERUJVRw0KPiA+IC1zdGF0aWMgY29uc3QgdW5zaWduZWQgTUFMTE9DX0VMRU1fVFJBSUxF Ul9MRU4gPSAwOw0KPiA+ICsjaWZkZWYgUlRFX01BTExPQ19BU0FODQo+ID4gK3N0YXRpYyBjb25z dCB1bnNpZ25lZCBpbnQgTUFMTE9DX0VMRU1fVFJBSUxFUl9MRU4gPQ0KPiA+ICtSVEVfQ0FDSEVf TElORV9TSVpFOyAjZWxzZSBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50DQo+ID4gK01BTExPQ19F TEVNX1RSQUlMRVJfTEVOOyAjZW5kaWYNCj4gPg0KPiA+ICAvKiBkdW1teSBmdW5jdGlvbiAtIGp1 c3QgY2hlY2sgaWYgcG9pbnRlciBpcyBub24tbnVsbCAqLyAgc3RhdGljDQo+ID4gaW5saW5lIGlu dCBAQCAtNTUsNyArNzMsNyBAQCBzZXRfdHJhaWxlcihzdHJ1Y3QgbWFsbG9jX2VsZW0gKmVsZW0N Cj4gPiBfX3J0ZV91bnVzZWQpeyB9DQo+ID4NCj4gPg0KPiA+ICAjZWxzZQ0KPiA+IC1zdGF0aWMg Y29uc3QgdW5zaWduZWQgTUFMTE9DX0VMRU1fVFJBSUxFUl9MRU4gPQ0KPiBSVEVfQ0FDSEVfTElO RV9TSVpFOw0KPiA+ICtzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IE1BTExPQ19FTEVNX1RSQUlM RVJfTEVOID0NCj4gPiArUlRFX0NBQ0hFX0xJTkVfU0laRTsNCj4gPg0KPiA+ICAjZGVmaW5lIE1B TExPQ19IRUFERVJfQ09PS0lFICAgMHhiYWRiYWRiYWRhZGQyZTU1VUxMIC8qKjwNCj4gSGVhZGVy IGNvb2tpZS4gKi8NCj4gPiAgI2RlZmluZSBNQUxMT0NfVFJBSUxFUl9DT09LSUUgIDB4YWRkMmU1 NWJhZGJhZGJhZFVMTCAvKio8IFRyYWlsZXINCj4gPiBjb29raWUuKi8gQEAgLTkwLDkgKzEwOCwx NjkgQEAgbWFsbG9jX2VsZW1fY29va2llc19vayhjb25zdCBzdHJ1Y3QNCj4gPiBtYWxsb2NfZWxl bSAqZWxlbSkNCj4gPg0KPiA+ICAjZW5kaWYNCj4gPg0KPiA+IC1zdGF0aWMgY29uc3QgdW5zaWdu ZWQgTUFMTE9DX0VMRU1fSEVBREVSX0xFTiA9IHNpemVvZihzdHJ1Y3QNCj4gPiBtYWxsb2NfZWxl bSk7ICAjZGVmaW5lIE1BTExPQ19FTEVNX09WRVJIRUFEDQo+IChNQUxMT0NfRUxFTV9IRUFERVJf TEVOICsNCj4gPiBNQUxMT0NfRUxFTV9UUkFJTEVSX0xFTikNCj4gPg0KPiA+ICsjaWZkZWYgUlRF X01BTExPQ19BU0FODQo+ID4gKw0KPiA+ICsjZGVmaW5lIEFTQU5fU0hBRE9XX0dSQUlOX1NJWkUg OA0KPiA+ICsjZGVmaW5lIEFTQU5fTUVNX0ZSRUVfRkxBRyAgICAgMHhmZA0KPiA+ICsjZGVmaW5l IEFTQU5fTUVNX1JFRFpPTkVfRkxBRyAgMHhmYQ0KPiA+ICsjZGVmaW5lIEFTQU5fTUVNX1RPX1NI QURPVyhtZW0pICgoKG1lbSkgPj4gMykgKw0KPiAweDAwMDA3ZmZmODAwMCkNCj4gPiArDQo+ID4g KyNpZiBkZWZpbmVkKF9fY2xhbmdfXykNCj4gPiArX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemUo ImFkZHJlc3MiLCAiaHdhZGRyZXNzIikpKSAjZWxzZQ0KPiA+ICtfX2F0dHJpYnV0ZV9fKChub19z YW5pdGl6ZV9hZGRyZXNzKSkNCj4gPiArI2VuZGlmDQo+IA0KPiBUaGlzIGF0dHJpYnV0ZSBpcyBv bmx5IHVzZWQgaGVyZSwgSSBhbSBvayB3aXRoIGxlYXZpbmcgdGhpcyBhcyBpcy4NCj4gSWYgbGF0 ZXIgaXQgaXMgbmVlZGVkIGVsc2V3aGVyZSwgd2UnbGwgaGF2ZSB0byBkZWZpbmUgYSBuZXcgYXR0 cmlidXRlIHdyYXBwZXINCj4gaW4gcnRlX2NvbW1vbi5oLg0KPiANCj4gDQo+ID4gK3N0YXRpYyBp bmxpbmUgdm9pZA0KPiA+ICthc2FuX3NldF9zaGFkb3codm9pZCAqYWRkciwgY2hhciB2YWwpIHsN Cj4gPiArICAgICAgICooY2hhciAqKWFkZHIgPSB2YWw7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0 YXRpYyBpbmxpbmUgdm9pZA0KPiA+ICthc2FuX3NldF96b25lKHZvaWQgKnB0ciwgc2l6ZV90IGxl biwgdWludDMyX3QgdmFsKSB7DQo+ID4gKyAgICAgICBzaXplX3Qgb2Zmc2V0Ow0KPiA+ICsgICAg ICAgY2hhciAqc2hhZG93Ow0KPiA+ICsgICAgICAgc2l6ZV90IHpvbmVfbGVuID0gbGVuIC8gQVNB Tl9TSEFET1dfR1JBSU5fU0laRTsNCj4gDQo+ICsgc2l6ZV90IGk7DQo+ICsgPGVtcHR5IGxpbmU+ IHRvIHNlcGFyYXRlIGRlY2xhcmF0aW9ucyBmcm9tIGNvZGUuDQo+IA0KPiANCj4gPiArICAgICAg IGlmIChsZW4gJSBBU0FOX1NIQURPV19HUkFJTl9TSVpFICE9IDApDQo+ID4gKyAgICAgICAgICAg ICAgIHpvbmVfbGVuICs9IDE7DQo+ID4gKw0KPiA+ICsgICAgICAgZm9yIChzaXplX3QgaSA9IDA7 IGkgPCB6b25lX2xlbjsgaSsrKSB7DQo+IA0KPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCB6b25l X2xlbjsgaSsrKSB7DQo+IA0KPiBUaGF0J3MgdG8gZml4IGJ1aWxkIGlzc3VlOg0KPiANCg0KVjQg d2lsbCBiZSBmaXhlZC4NCg0KPiBJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vbGliL2VhbC9jb21t b24vbWFsbG9jX21wLmM6MTY6MDoNCj4gLi4vbGliL2VhbC9jb21tb24vbWFsbG9jX2VsZW0uaDog SW4gZnVuY3Rpb24g4oCYYXNhbl9zZXRfem9uZeKAmToNCj4gLi4vbGliL2VhbC9jb21tb24vbWFs bG9jX2VsZW0uaDoxNDA6MjogZXJyb3I6IOKAmGZvcuKAmSBsb29wIGluaXRpYWwgZGVjbGFyYXRp b25zDQo+IGFyZSBvbmx5IGFsbG93ZWQgaW4gQzk5IG1vZGUNCj4gICBmb3IgKHNpemVfdCBpID0g MDsgaSA8IHpvbmVfbGVuOyBpKyspIHsNCj4gICBeDQo+IC4uL2xpYi9lYWwvY29tbW9uL21hbGxv Y19lbGVtLmg6MTQwOjI6IG5vdGU6IHVzZSBvcHRpb24gLXN0ZD1jOTkgb3INCj4gLXN0ZD1nbnU5 OSB0byBjb21waWxlIHlvdXIgY29kZQ0KPiANCj4gDQo+IA0KPiANCj4gDQo+IA0KPiANCj4gPiAr ICAgICAgICAgICAgICAgb2Zmc2V0ID0gaSAqIEFTQU5fU0hBRE9XX0dSQUlOX1NJWkU7DQo+ID4g KyAgICAgICAgICAgICAgIHNoYWRvdyA9IChjaGFyICopQVNBTl9NRU1fVE9fU0hBRE9XKCgoaW50 NjRfdClwdHIgKw0KPiBvZmZzZXQpKTsNCj4gPiArICAgICAgICAgICAgICAgYXNhbl9zZXRfc2hh ZG93KHNoYWRvdywgdmFsKTsNCj4gPiArICAgICAgIH0NCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoN Cj4gPiArICogV2hlbiB0aGUgbWVtb3J5IGlzIHJlbGVhc2VkLCB0aGUgcmVsZWFzZSBtYXJrIGlz DQo+ID4gKyAqIHNldCBpbiB0aGUgY29ycmVzcG9uZGluZyByYW5nZSBvZiB0aGUgc2hhZG93IGFy ZWEuDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPiArYXNhbl9zZXRfZnJl ZXpvbmUodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSkgew0KPiA+ICsgICAgICAgYXNhbl9zZXRfem9u ZShwdHIsIHNpemUsIEFTQU5fTUVNX0ZSRUVfRkxBRyk7IH0NCj4gPiArDQo+ID4gKy8qDQo+ID4g KyAqIFdoZW4gdGhlIG1lbW9yeSBpcyBhbGxvY2F0ZWQsIG1lbW9yeSBzdGF0ZSBtdXN0IHNldCBh cyBhY2Nlc3NpYmxlLg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGlubGluZSB2b2lkDQo+ID4gK2Fz YW5fY2xlYXJfYWxsb2N6b25lKHN0cnVjdCBtYWxsb2NfZWxlbSAqZWxlbSkNCj4gPiArew0KPiA+ ICsgICAgICAgYXNhbl9zZXRfem9uZSgodm9pZCAqKWVsZW0sIGVsZW0tPnNpemUsIDB4MCk7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiA+ICthc2FuX2NsZWFyX3Nw bGl0X2FsbG9jem9uZShzdHJ1Y3QgbWFsbG9jX2VsZW0gKmVsZW0pDQo+ID4gK3sNCj4gPiArICAg ICAgIHZvaWQgKnB0ciA9IFJURV9QVFJfU1VCKGVsZW0sIE1BTExPQ19FTEVNX1RSQUlMRVJfTEVO KTsNCj4gPiArICAgICAgIGFzYW5fc2V0X3pvbmUocHRyLCBNQUxMT0NfRUxFTV9PVkVSSEVBRCwg MHgwKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogV2hlbiB0aGUgbWVtb3J5IGlz IGFsbG9jYXRlZCwgdGhlIG1lbW9yeSBib3VuZGFyeSBpcw0KPiA+ICsgKiBtYXJrZWQgaW4gdGhl IGNvcnJlc3BvbmRpbmcgcmFuZ2Ugb2YgdGhlIHNoYWRvdyBhcmVhLg0KPiA+ICsgKi8NCj4gPiAr c3RhdGljIGlubGluZSB2b2lkDQo+ID4gK2FzYW5fc2V0X3JlZHpvbmUoc3RydWN0IG1hbGxvY19l bGVtICplbGVtLCBzaXplX3QgdXNlcl9zaXplKQ0KPiA+ICt7DQo+ID4gKyAgICAgICB1aW50NjRf dCBwdHI7DQo+ID4gKyAgICAgICBjaGFyICpzaGFkb3c7DQo+ID4gKyAgICAgICBpZiAoZWxlbSAh PSBOVUxMKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChlbGVtLT5zdGF0ZSAhPSBFTEVNX1BB RCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBlbGVtID0gUlRFX1BUUl9BREQoZWxlbSwg ZWxlbS0+cGFkKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIGVsZW0tPnVzZXJfc2l6ZSA9 IHVzZXJfc2l6ZTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIC8qIFNldCBtYXJrIGJlZm9y ZSB0aGUgc3RhcnQgb2YgdGhlIGFsbG9jYXRlZCBtZW1vcnkgKi8NCj4gPiArICAgICAgICAgICAg ICAgcHRyID0gKHVpbnQ2NF90KVJURV9QVFJfQUREKGVsZW0sIE1BTExPQ19FTEVNX0hFQURFUl9M RU4pDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgLSBBU0FOX1NIQURPV19HUkFJTl9TSVpF Ow0KPiA+ICsgICAgICAgICAgICAgICBzaGFkb3cgPSAoY2hhciAqKUFTQU5fTUVNX1RPX1NIQURP VyhwdHIpOw0KPiA+ICsgICAgICAgICAgICAgICBhc2FuX3NldF9zaGFkb3coc2hhZG93LCBBU0FO X01FTV9SRURaT05FX0ZMQUcpOw0KPiA+ICsgICAgICAgICAgICAgICBzaGFkb3cgPSAoY2hhciAq KUFTQU5fTUVNX1RPX1NIQURPVyhwdHINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0gQVNBTl9TSEFET1dfR1JBSU5fU0laRSk7DQo+ID4gKyAgICAgICAgICAgICAgIGFzYW5f c2V0X3NoYWRvdyhzaGFkb3csIEFTQU5fTUVNX1JFRFpPTkVfRkxBRyk7DQo+ID4gKw0KPiA+ICsg ICAgICAgICAgICAgICAvKiBTZXQgbWFyayBhZnRlciB0aGUgZW5kIG9mIHRoZSBhbGxvY2F0ZWQg bWVtb3J5ICovDQo+ID4gKyAgICAgICAgICAgICAgIHB0ciA9ICh1aW50NjRfdClSVEVfUFRSX0FE RChlbGVtLCBNQUxMT0NfRUxFTV9IRUFERVJfTEVODQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArIGVsZW0tPnVzZXJfc2l6ZSk7DQo+ID4gKyAgICAgICAgICAgICAgIHNoYWRv dyA9IChjaGFyICopQVNBTl9NRU1fVE9fU0hBRE9XKHB0cik7DQo+ID4gKyAgICAgICAgICAgICAg IHVpbnQzMl90IHZhbCA9IChwdHIgJSBBU0FOX1NIQURPV19HUkFJTl9TSVpFKTsNCj4gPiArICAg ICAgICAgICAgICAgdmFsID0gKHZhbCA9PSAwKSA/IEFTQU5fTUVNX1JFRFpPTkVfRkxBRyA6IHZh bDsNCj4gPiArICAgICAgICAgICAgICAgYXNhbl9zZXRfc2hhZG93KHNoYWRvdywgdmFsKTsNCj4g PiArICAgICAgICAgICAgICAgc2hhZG93ID0gKGNoYXIgKilBU0FOX01FTV9UT19TSEFET1cocHRy DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIEFTQU5fU0hBRE9XX0dSQUlO X1NJWkUpOw0KPiA+ICsgICAgICAgICAgICAgICBhc2FuX3NldF9zaGFkb3coc2hhZG93LCBBU0FO X01FTV9SRURaT05FX0ZMQUcpOw0KPiA+ICsgICAgICAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv Kg0KPiA+ICsgKiBXaGVuIHRoZSBtZW1vcnkgaXMgcmVsZWFzZWQsIHRoZSBtYXJrIG9mIHRoZSBt ZW1vcnkgYm91bmRhcnkNCj4gPiArICogaW4gdGhlIGNvcnJlc3BvbmRpbmcgcmFuZ2Ugb2YgdGhl IHNoYWRvdyBhcmVhIGlzIGNsZWFyZWQuDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5saW5lIHZv aWQNCj4gPiArYXNhbl9jbGVhcl9yZWR6b25lKHN0cnVjdCBtYWxsb2NfZWxlbSAqZWxlbSkNCj4g PiArew0KPiA+ICsgICAgICAgdWludDY0X3QgcHRyOw0KPiA+ICsgICAgICAgY2hhciAqc2hhZG93 Ow0KPiA+ICsgICAgICAgaWYgKGVsZW0gIT0gTlVMTCkgew0KPiA+ICsgICAgICAgICAgICAgICBl bGVtID0gUlRFX1BUUl9BREQoZWxlbSwgZWxlbS0+cGFkKTsNCj4gPiArDQo+ID4gKyAgICAgICAg ICAgICAgIC8qIENsZWFyIG1hcmsgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgYWxsb2NhdGVkIG1l bW9yeSAqLw0KPiA+ICsgICAgICAgICAgICAgICBwdHIgPSAodWludDY0X3QpUlRFX1BUUl9BREQo ZWxlbSwgTUFMTE9DX0VMRU1fSEVBREVSX0xFTikNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAtIEFTQU5fU0hBRE9XX0dSQUlOX1NJWkU7DQo+ID4gKyAgICAgICAgICAgICAgIHNoYWRvdyA9 IChjaGFyICopQVNBTl9NRU1fVE9fU0hBRE9XKHB0cik7DQo+ID4gKyAgICAgICAgICAgICAgIGFz YW5fc2V0X3NoYWRvdyhzaGFkb3csIDB4MDApOw0KPiA+ICsgICAgICAgICAgICAgICBzaGFkb3cg PSAoY2hhciAqKUFTQU5fTUVNX1RPX1NIQURPVyhwdHINCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0gQVNBTl9TSEFET1dfR1JBSU5fU0laRSk7DQo+ID4gKyAgICAgICAgICAg ICAgIGFzYW5fc2V0X3NoYWRvdyhzaGFkb3csIDB4MDApOw0KPiA+ICsNCj4gPiArICAgICAgICAg ICAgICAgLyogQ2xlYXIgbWFyayBhZnRlciB0aGUgZW5kIG9mIHRoZSBhbGxvY2F0ZWQgbWVtb3J5 ICovDQo+ID4gKyAgICAgICAgICAgICAgIHB0ciA9ICh1aW50NjRfdClSVEVfUFRSX0FERChlbGVt LCBNQUxMT0NfRUxFTV9IRUFERVJfTEVODQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArIGVsZW0tPnVzZXJfc2l6ZSk7DQo+ID4gKyAgICAgICAgICAgICAgIHNoYWRvdyA9IChj aGFyICopQVNBTl9NRU1fVE9fU0hBRE9XKHB0cik7DQo+ID4gKyAgICAgICAgICAgICAgIGFzYW5f c2V0X3NoYWRvdyhzaGFkb3csIDB4MDApOw0KPiA+ICsgICAgICAgICAgICAgICBzaGFkb3cgPSAo Y2hhciAqKUFTQU5fTUVNX1RPX1NIQURPVyhwdHINCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsgQVNBTl9TSEFET1dfR1JBSU5fU0laRSk7DQo+ID4gKyAgICAgICAgICAgICAg IGFzYW5fc2V0X3NoYWRvdyhzaGFkb3csIDB4MDApOw0KPiA+ICsgICAgICAgfQ0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIHNpemVfdA0KPiA+ICtvbGRfbWFsbG9jX3NpemUoc3Ry dWN0IG1hbGxvY19lbGVtICplbGVtKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpZiAoZWxlbS0+c3Rh dGUgIT0gRUxFTV9QQUQpDQo+ID4gKyAgICAgICAgICAgICAgIGVsZW0gPSBSVEVfUFRSX0FERChl bGVtLCBlbGVtLT5wYWQpOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiBlbGVtLT51c2VyX3Np emU7DQo+ID4gK30NCj4gPiArI2Vsc2UNCj4gPiArc3RhdGljIGlubGluZSB2b2lkDQo+ID4gK2Fz YW5fc2V0X2ZyZWV6b25lKHZvaWQgKnB0ciBfX3J0ZV91bnVzZWQsIHNpemVfdCBzaXplIF9fcnRl X3VudXNlZCkgeyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPiArYXNhbl9j bGVhcl9hbGxvY3pvbmUoc3RydWN0IG1hbGxvY19lbGVtICplbGVtIF9fcnRlX3VudXNlZCkgeyB9 DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPiArYXNhbl9jbGVhcl9zcGxpdF9h bGxvY3pvbmUoc3RydWN0IG1hbGxvY19lbGVtICplbGVtIF9fcnRlX3VudXNlZCkgeyB9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPiArYXNhbl9zZXRfcmVkem9uZShzdHJ1Y3Qg bWFsbG9jX2VsZW0gKmVsZW0gX19ydGVfdW51c2VkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplX3QgdXNlcl9zaXplIF9fcnRlX3VudXNlZCkgeyB9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPiArYXNhbl9jbGVhcl9yZWR6b25lKHN0 cnVjdCBtYWxsb2NfZWxlbSAqZWxlbSBfX3J0ZV91bnVzZWQpIHsgfQ0KPiA+ICsNCj4gPiArc3Rh dGljIGlubGluZSBzaXplX3QNCj4gPiArb2xkX21hbGxvY19zaXplKHN0cnVjdCBtYWxsb2NfZWxl bSAqZWxlbSkNCj4gPiArew0KPiA+ICsgICAgICAgcmV0dXJuIGVsZW0tPnNpemUgLSBlbGVtLT5w YWQgLSBNQUxMT0NfRUxFTV9PVkVSSEVBRDsNCj4gPiArfQ0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ ID4gIC8qDQo+ID4gICAqIEdpdmVuIGEgcG9pbnRlciB0byB0aGUgc3RhcnQgb2YgYSBtZW1vcnkg YmxvY2sgcmV0dXJuZWQgYnkgbWFsbG9jLCBnZXQNCj4gPiAgICogdGhlIGFjdHVhbCBtYWxsb2Nf ZWxlbSBoZWFkZXIgZm9yIHRoYXQgYmxvY2suDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9lYWwvY29t bW9uL21hbGxvY19oZWFwLmMNCj4gYi9saWIvZWFsL2NvbW1vbi9tYWxsb2NfaGVhcC5jDQo+ID4g aW5kZXggZWU0MDBmMzhlYy4uNzc1ZDY3ODlkZiAxMDA2NDQNCj4gPiAtLS0gYS9saWIvZWFsL2Nv bW1vbi9tYWxsb2NfaGVhcC5jDQo+ID4gKysrIGIvbGliL2VhbC9jb21tb24vbWFsbG9jX2hlYXAu Yw0KPiA+IEBAIC0yMzcsNiArMjM3LDcgQEAgaGVhcF9hbGxvYyhzdHJ1Y3QgbWFsbG9jX2hlYXAg KmhlYXAsIGNvbnN0IGNoYXINCj4gKnR5cGUgX19ydGVfdW51c2VkLCBzaXplX3Qgc2l6ZSwNCj4g PiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzLCBzaXplX3QgYWxpZ24sIHNpemVf dCBib3VuZCwgYm9vbCBjb250aWcpDQo+ID4gIHsNCj4gPiAgICAgICAgIHN0cnVjdCBtYWxsb2Nf ZWxlbSAqZWxlbTsNCj4gPiArICAgICAgIHNpemVfdCB1c2VyX3NpemUgPSBzaXplOw0KPiA+DQo+ ID4gICAgICAgICBzaXplID0gUlRFX0NBQ0hFX0xJTkVfUk9VTkRVUChzaXplKTsNCj4gPiAgICAg ICAgIGFsaWduID0gUlRFX0NBQ0hFX0xJTkVfUk9VTkRVUChhbGlnbik7DQo+ID4gQEAgLTI1MCw2 ICsyNTEsOCBAQCBoZWFwX2FsbG9jKHN0cnVjdCBtYWxsb2NfaGVhcCAqaGVhcCwgY29uc3QgY2hh cg0KPiAqdHlwZSBfX3J0ZV91bnVzZWQsIHNpemVfdCBzaXplLA0KPiA+DQo+ID4gICAgICAgICAg ICAgICAgIC8qIGluY3JlYXNlIGhlYXAncyBjb3VudCBvZiBhbGxvY2F0ZWQgZWxlbWVudHMgKi8N Cj4gPiAgICAgICAgICAgICAgICAgaGVhcC0+YWxsb2NfY291bnQrKzsNCj4gPiArDQo+ID4gKyAg ICAgICAgICAgICAgIGFzYW5fc2V0X3JlZHpvbmUoZWxlbSwgdXNlcl9zaXplKTsNCj4gPiAgICAg ICAgIH0NCj4gPg0KPiA+ICAgICAgICAgcmV0dXJuIGVsZW0gPT0gTlVMTCA/IE5VTEwgOiAodm9p ZCAqKSgmZWxlbVsxXSk7DQo+ID4gQEAgLTI3MCw2ICsyNzMsOCBAQCBoZWFwX2FsbG9jX2JpZ2dl c3Qoc3RydWN0IG1hbGxvY19oZWFwICpoZWFwLA0KPiBjb25zdCBjaGFyICp0eXBlIF9fcnRlX3Vu dXNlZCwNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAvKiBpbmNyZWFzZSBoZWFwJ3MgY291bnQg b2YgYWxsb2NhdGVkIGVsZW1lbnRzICovDQo+ID4gICAgICAgICAgICAgICAgIGhlYXAtPmFsbG9j X2NvdW50Kys7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBhc2FuX3NldF9yZWR6b25lKGVs ZW0sIHNpemUpOw0KPiA+ICAgICAgICAgfQ0KPiA+DQo+ID4gICAgICAgICByZXR1cm4gZWxlbSA9 PSBOVUxMID8gTlVMTCA6ICh2b2lkICopKCZlbGVtWzFdKTsNCj4gPiBAQCAtODQxLDYgKzg0Niw4 IEBAIG1hbGxvY19oZWFwX2ZyZWUoc3RydWN0IG1hbGxvY19lbGVtICplbGVtKQ0KPiA+ICAgICAg ICAgaWYgKCFtYWxsb2NfZWxlbV9jb29raWVzX29rKGVsZW0pIHx8IGVsZW0tPnN0YXRlICE9IEVM RU1fQlVTWSkNCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KPiA+DQo+ID4gKyAgICAg ICBhc2FuX2NsZWFyX3JlZHpvbmUoZWxlbSk7DQo+ID4gKw0KPiA+ICAgICAgICAgLyogZWxlbSBt YXkgYmUgbWVyZ2VkIHdpdGggcHJldmlvdXMgZWxlbWVudCwgc28ga2VlcCBoZWFwIGFkZHJlc3MN Cj4gKi8NCj4gPiAgICAgICAgIGhlYXAgPSBlbGVtLT5oZWFwOw0KPiA+ICAgICAgICAgbXNsID0g ZWxlbS0+bXNsOw0KPiA+IEBAIC04NDgsNiArODU1LDkgQEAgbWFsbG9jX2hlYXBfZnJlZShzdHJ1 Y3QgbWFsbG9jX2VsZW0gKmVsZW0pDQo+ID4NCj4gPiAgICAgICAgIHJ0ZV9zcGlubG9ja19sb2Nr KCYoaGVhcC0+bG9jaykpOw0KPiA+DQo+ID4gKyAgICAgICB2b2lkICphc2FuX3B0ciA9IFJURV9Q VFJfQUREKGVsZW0sIE1BTExPQ19FTEVNX0hFQURFUl9MRU4gKw0KPiBlbGVtLT5wYWQpOw0KPiA+ ICsgICAgICAgc2l6ZV90IGFzYW5fZGF0YV9sZW4gPSBlbGVtLT5zaXplIC0gTUFMTE9DX0VMRU1f T1ZFUkhFQUQgLQ0KPiBlbGVtLT5wYWQ7DQo+ID4gKw0KPiA+ICAgICAgICAgLyogbWFyayBlbGVt ZW50IGFzIGZyZWUgKi8NCj4gPiAgICAgICAgIGVsZW0tPnN0YXRlID0gRUxFTV9GUkVFOw0KPiA+ DQo+ID4gQEAgLTEwMDEsNiArMTAxMSw4IEBAIG1hbGxvY19oZWFwX2ZyZWUoc3RydWN0IG1hbGxv Y19lbGVtICplbGVtKQ0KPiA+DQo+ID4gICAgICAgICBydGVfbWNmZ19tZW1fd3JpdGVfdW5sb2Nr KCk7DQo+ID4gIGZyZWVfdW5sb2NrOg0KPiA+ICsgICAgICAgYXNhbl9zZXRfZnJlZXpvbmUoYXNh bl9wdHIsIGFzYW5fZGF0YV9sZW4pOw0KPiA+ICsNCj4gPiAgICAgICAgIHJ0ZV9zcGlubG9ja191 bmxvY2soJihoZWFwLT5sb2NrKSk7DQo+ID4gICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICB9DQo+ ID4gZGlmZiAtLWdpdCBhL2xpYi9lYWwvY29tbW9uL3J0ZV9tYWxsb2MuYyBiL2xpYi9lYWwvY29t bW9uL3J0ZV9tYWxsb2MuYw0KPiA+IGluZGV4IDlkMzllNThjMDguLmQwYmVjMjY5MjAgMTAwNjQ0 DQo+ID4gLS0tIGEvbGliL2VhbC9jb21tb24vcnRlX21hbGxvYy5jDQo+ID4gKysrIGIvbGliL2Vh bC9jb21tb24vcnRlX21hbGxvYy5jDQo+ID4gQEAgLTE2Miw2ICsxNjIsOCBAQCBydGVfY2FsbG9j KGNvbnN0IGNoYXIgKnR5cGUsIHNpemVfdCBudW0sIHNpemVfdCBzaXplLA0KPiB1bnNpZ25lZCBh bGlnbikNCj4gPiAgdm9pZCAqDQo+ID4gIHJ0ZV9yZWFsbG9jX3NvY2tldCh2b2lkICpwdHIsIHNp emVfdCBzaXplLCB1bnNpZ25lZCBpbnQgYWxpZ24sIGludCBzb2NrZXQpDQo+ID4gIHsNCj4gPiAr ICAgICAgIHNpemVfdCB1c2VyX3NpemU7DQo+ID4gKw0KPiA+ICAgICAgICAgaWYgKHB0ciA9PSBO VUxMKQ0KPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gcnRlX21hbGxvY19zb2NrZXQoTlVMTCwg c2l6ZSwgYWxpZ24sIHNvY2tldCk7DQo+ID4NCj4gPiBAQCAtMTcxLDYgKzE3Myw4IEBAIHJ0ZV9y ZWFsbG9jX3NvY2tldCh2b2lkICpwdHIsIHNpemVfdCBzaXplLCB1bnNpZ25lZA0KPiBpbnQgYWxp Z24sIGludCBzb2NrZXQpDQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KPiA+ICAg ICAgICAgfQ0KPiA+DQo+ID4gKyAgICAgICB1c2VyX3NpemUgPSBzaXplOw0KPiA+ICsNCj4gPiAg ICAgICAgIHNpemUgPSBSVEVfQ0FDSEVfTElORV9ST1VORFVQKHNpemUpLCBhbGlnbiA9DQo+IFJU RV9DQUNIRV9MSU5FX1JPVU5EVVAoYWxpZ24pOw0KPiA+DQo+ID4gICAgICAgICAvKiBjaGVjayBy ZXF1ZXN0ZWQgc29ja2V0IGlkIGFuZCBhbGlnbm1lbnQgbWF0Y2hlcyBmaXJzdCwgYW5kIGlmIG9r LA0KPiA+IEBAIC0xODEsNiArMTg1LDkgQEAgcnRlX3JlYWxsb2Nfc29ja2V0KHZvaWQgKnB0ciwg c2l6ZV90IHNpemUsIHVuc2lnbmVkDQo+IGludCBhbGlnbiwgaW50IHNvY2tldCkNCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICBSVEVfUFRSX0FMSUdOKHB0ciwgYWxpZ24pID09IHB0ciAmJg0K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgIG1hbGxvY19oZWFwX3Jlc2l6ZShlbGVtLCBzaXpl KSA9PSAwKSB7DQo+ID4gICAgICAgICAgICAgICAgIHJ0ZV9lYWxfdHJhY2VfbWVtX3JlYWxsb2Mo c2l6ZSwgYWxpZ24sIHNvY2tldCwgcHRyKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIGFz YW5fc2V0X3JlZHpvbmUoZWxlbSwgdXNlcl9zaXplKTsNCj4gPiArDQo+ID4gICAgICAgICAgICAg ICAgIHJldHVybiBwdHI7DQo+ID4gICAgICAgICB9DQo+ID4NCj4gPiBAQCAtMTkyLDcgKzE5OSw3 IEBAIHJ0ZV9yZWFsbG9jX3NvY2tldCh2b2lkICpwdHIsIHNpemVfdCBzaXplLCB1bnNpZ25lZA0K PiBpbnQgYWxpZ24sIGludCBzb2NrZXQpDQo+ID4gICAgICAgICBpZiAobmV3X3B0ciA9PSBOVUxM KQ0KPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCj4gPiAgICAgICAgIC8qIGVsZW06 IHxwYWR8ZGF0YV9lbGVtfGRhdGF8dHJhaWxlcnwgKi8NCj4gPiAtICAgICAgIGNvbnN0IHNpemVf dCBvbGRfc2l6ZSA9IGVsZW0tPnNpemUgLSBlbGVtLT5wYWQgLQ0KPiBNQUxMT0NfRUxFTV9PVkVS SEVBRDsNCj4gPiArICAgICAgIGNvbnN0IHNpemVfdCBvbGRfc2l6ZSA9IG9sZF9tYWxsb2Nfc2l6 ZShlbGVtKTsNCj4gPiAgICAgICAgIHJ0ZV9tZW1jcHkobmV3X3B0ciwgcHRyLCBvbGRfc2l6ZSA8 IHNpemUgPyBvbGRfc2l6ZSA6IHNpemUpOw0KPiA+ICAgICAgICAgcnRlX2ZyZWUocHRyKTsNCj4g Pg0KPiA+IGRpZmYgLS1naXQgYS9saWIvcGlwZWxpbmUvcnRlX3N3eF9waXBlbGluZS5jDQo+IGIv bGliL3BpcGVsaW5lL3J0ZV9zd3hfcGlwZWxpbmUuYw0KPiA+IGluZGV4IDhlYjk3OGEzMGMuLmFh YTAxMDdkMDIgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL3BpcGVsaW5lL3J0ZV9zd3hfcGlwZWxpbmUu Yw0KPiA+ICsrKyBiL2xpYi9waXBlbGluZS9ydGVfc3d4X3BpcGVsaW5lLmMNCj4gPiBAQCAtNjM0 MCw3ICs2MzQwLDcgQEAgaW5zdHJfbWV0ZXJfdHJhbnNsYXRlKHN0cnVjdCBydGVfc3d4X3BpcGVs aW5lICpwLA0KPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4gPiAgICAgICAgIH0NCj4g Pg0KPiA+IC0gICAgICAgQ0hFQ0soMCwgRUlOVkFMKTsNCj4gPiArICAgICAgIHJldHVybiAtRUlO VkFMOw0KPiA+ICB9DQo+ID4NCj4gPiAgc3RhdGljIGlubGluZSBzdHJ1Y3QgbWV0ZXIgKg0KPiA+ IEBAIC04MDI1LDcgKzgwMjUsNyBAQCBpbnN0cl90cmFuc2xhdGUoc3RydWN0IHJ0ZV9zd3hfcGlw ZWxpbmUgKnAsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGluc3RyLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRhKTsNCj4gPg0KPiA+IC0gICAgICAgQ0hFQ0soMCwgRUlOVkFMKTsNCj4gPiArICAg ICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICB9DQo+ID4NCj4gPiAgc3RhdGljIHN0cnVjdCBpbnN0 cnVjdGlvbl9kYXRhICoNCj4gPiAtLQ0KPiA+IDIuMjUuMQ0KPiA+DQo+IA0KPiANCj4gLS0NCj4g RGF2aWQgTWFyY2hhbmQNCg0K