Received: by 10.213.65.68 with SMTP id h4csp259404imn; Mon, 26 Mar 2018 21:04:03 -0700 (PDT) X-Google-Smtp-Source: AG47ELs3wRzvNn+VzukcZOEXTevb8SiHEKoTe35DTI8X8KqgCHlalzBW1LRdk7OK8GxqopYo842X X-Received: by 10.99.148.17 with SMTP id m17mr30439385pge.140.1522123443690; Mon, 26 Mar 2018 21:04:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522123443; cv=none; d=google.com; s=arc-20160816; b=qEbFTRt2BwLNkVgkX+Q0PbJdetxkyW01S5p9Qf1B5rllzJt32yh/BARagVbHA+Ot7n WRLP4LMckXoycBgOrCiFdIOZf75K0hXVPHPJRt28akB3e/nrwpI6o2FF2WOFNPQikmiZ SEy906a5QprEexHLRK5IvYYUhat7kO5U7jdaDlMVcxJn+lmQowZTfMCNjCd1vZdzcyvT WVc23GGufn1CSbQDNY1UDCcYEJ7hyzlciR8BzFVBrEsxlX/MQVasNjxX7f4Ug1C6xjod mmqT34k88PUUXT5qktelrsnq9VvPsNec+IjuEYGP6B0tR/rpFNbAQRLdvPnrfsHGt2we WKiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :spamdiagnosticmetadata:spamdiagnosticoutput:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=NbZBFiqPnOyJyahjlRUNWqy6gBR5N+S36oDJRwrdt6U=; b=lgVPoRoAsfIE094em+66A183WFbkCpxyrD7CTi2pX94CsB1/NBsJkEVaNqG7KCoplu RCjfcxXU6qULNdE4guuz9dk0CuOFZLyh0v9CITYLdZtTPZNKRIJhG3EVlyCVHEk5zHTm NqzaYncNuybR4ZXz/yAh75t/kRIYwOzQa9cEOBY/GTJEvA4fvu8nhQmhVVr5mfmk2+1h wYJfqruCENCqSxFvWZJCAI6QOKkY/vle0US2CAsIEILt6jqYdHECeMYPt0L/YpLJZh/s WsjMQpHSb7yLthxRYpve1u8d8mm8JRpsW4R+9gKT8jJctoHpkarQYTy2zWU7HgTJojv1 8lSw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@xilinx.onmicrosoft.com header.s=selector1-xilinx-com header.b=Pvw5yqzK; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e91-v6si373507plb.73.2018.03.26.21.03.48; Mon, 26 Mar 2018 21:04:03 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@xilinx.onmicrosoft.com header.s=selector1-xilinx-com header.b=Pvw5yqzK; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750897AbeC0ECz (ORCPT + 99 others); Tue, 27 Mar 2018 00:02:55 -0400 Received: from mail-cys01nam02on0085.outbound.protection.outlook.com ([104.47.37.85]:15520 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750742AbeC0ECx (ORCPT ); Tue, 27 Mar 2018 00:02:53 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=NbZBFiqPnOyJyahjlRUNWqy6gBR5N+S36oDJRwrdt6U=; b=Pvw5yqzK7QL7GuajBS023i4ePa6G1aHijkKqLw5Gq0m2H7AccuYQu98ztMBQykpoujcwLvZEIfamO6cnS73KRS6oy6LuC+zMd/BANuztJ0FYb2iXgwfzP+zsPzVXgVtgGK/CwR3dOnjxvMv9hkO2iYAe1sA7ivKEeGYo4q7nGE8= Received: from BY2PR02MB1411.namprd02.prod.outlook.com (10.162.80.151) by BY2PR02MB1638.namprd02.prod.outlook.com (10.163.27.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.609.10; Tue, 27 Mar 2018 04:02:50 +0000 Received: from BY2PR02MB1411.namprd02.prod.outlook.com ([fe80::143b:3ff:feb2:e405]) by BY2PR02MB1411.namprd02.prod.outlook.com ([fe80::143b:3ff:feb2:e405%6]) with mapi id 15.20.0609.012; Tue, 27 Mar 2018 04:02:42 +0000 From: Naga Sureshkumar Relli To: Miquel Raynal CC: "nagasureshkumarrelli@gmail.com" , "boris.brezillon@bootlin.com" , "richard@nod.at" , "dwmw2@infradead.org" , "computersforpeace@gmail.com" , "marek.vasut@gmail.com" , "cyrille.pitchen@wedev4u.fr" , "linux-mtd@lists.infradead.org" , "linux-kernel@vger.kernel.org" , Michal Simek , "Punnaiah Choudary Kalluri" Subject: RE: [LINUX PATCH v8 2/2] mtd: rawnand: pl353: Add basic driver for arm pl353 smc nand interface Thread-Topic: [LINUX PATCH v8 2/2] mtd: rawnand: pl353: Add basic driver for arm pl353 smc nand interface Thread-Index: AQHTu4IebRjORrYPu0KFc32DbYgusKPYLssAgAW0FkCABT/+gIAAZoxw Date: Tue, 27 Mar 2018 04:02:42 +0000 Message-ID: References: <1521024505-30677-1-git-send-email-nagasureshkumarrelli@gmail.com> <20180319233748.65b5a7b9@xps13> <20180326235359.39825dfd@xps13> In-Reply-To: <20180326235359.39825dfd@xps13> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=nagasure@xilinx.com; x-originating-ip: [182.72.145.30] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;BY2PR02MB1638;7:jpDEcw51M7ViiyJzW/R39Z3vZ/8swj3h98gBIjwrAo31jWcudodWeh6fS4f9ANZmrvCwAE7hAEI1vWLuw60Swr/A5wai75QVEQYnyMewcJ42VqfcfgUb950eAATHrdgqfxK7F9ieh9/ceivZ2LoBfCeXVepwv3iAnjCyUrFUWbH1LglL3ixMOuSMmK5IrUM5LaSzjv4QEi15o0mJvQAhDRONPOGUPY4jwZ15oAjHZQynT9bRanTklRAzz9aGVckk x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 0c878783-5d6e-43bf-c989-08d593979714 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(3008032)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020);SRVR:BY2PR02MB1638; x-ms-traffictypediagnostic: BY2PR02MB1638: x-ld-processed: 657af505-d5df-48d0-8300-c31994686c5c,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(9452136761055)(85827821059158)(258649278758335)(192813158149592)(17755550239193); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(3231221)(944501327)(52105095)(6055026)(6041310)(20161123560045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011);SRVR:BY2PR02MB1638;BCL:0;PCL:0;RULEID:;SRVR:BY2PR02MB1638; x-forefront-prvs: 0624A2429E x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39380400002)(376002)(346002)(39860400002)(396003)(366004)(13464003)(189003)(199004)(53546011)(6436002)(446003)(39060400002)(66066001)(76176011)(107886003)(2900100001)(11346002)(53936002)(6306002)(6246003)(9686003)(7736002)(476003)(8936002)(59450400001)(74316002)(5660300001)(99286004)(7696005)(7416002)(6916009)(55016002)(86362001)(305945005)(6506007)(478600001)(14454004)(5250100002)(106356001)(316002)(54906003)(68736007)(81156014)(81166006)(97736004)(8676002)(229853002)(186003)(33656002)(3660700001)(25786009)(966005)(102836004)(3280700002)(2906002)(4326008)(93886005)(486005)(55236004)(105586002)(6116002)(26005)(3846002)(486005)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:BY2PR02MB1638;H:BY2PR02MB1411.namprd02.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; received-spf: None (protection.outlook.com: xilinx.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: EqB+oRqzi9qUCBozBPupBdUdj5jQ//tw3YXkBtZ9U4QIUGJ6k6SB6+aMDVyaKhKNXEG9RAIaqOWpoKauveCAypnpuiPLGRArOtxmAjKSHiSdM+JFJ7dbzUaYgPBFMnONuzQNbiPDMsuiFax8CEtsbYeQMOyKJKtivqEEoHWJD1u/Tso0lyVkgCZ92QACdVSMXMpDPLybZ68QYgD+5e4yEwRPM40XW6qWz8kbpw2wLfBu+P0tgTI4TB/xqdhABnTmj6Gj9E3R1ED21IYzTyDqPuJ+Llgcvv9Mtfmv/oZXnSNrEkrTQIk9aFHMt1SPDHBtYt5qSEdULG2WfU6u9MCivg== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0c878783-5d6e-43bf-c989-08d593979714 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Mar 2018 04:02:42.4984 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR02MB1638 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgTWlxdWVsLA0KDQpUaGFua3MgZm9yIGNsYXJpZnlpbmcgdGhlIHF1ZXJpZXMuDQpJIHdpbGwg c2VuZCBuZXh0IHZlcnNpb24gYnkgYWRkcmVzc2luZyBhbGwgdGhlIGNvbW1lbnRzIGdpdmVuLg0K DQpUaGFua3MsDQpOYWdhIFN1cmVzaGt1bWFyIFJlbGxpLg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+IEZyb206IE1pcXVlbCBSYXluYWwgW21haWx0bzptaXF1ZWwucmF5bmFsQGJv b3RsaW4uY29tXQ0KPiBTZW50OiBUdWVzZGF5LCBNYXJjaCAyNywgMjAxOCAzOjI0IEFNDQo+IFRv OiBOYWdhIFN1cmVzaGt1bWFyIFJlbGxpIDxuYWdhc3VyZUB4aWxpbnguY29tPg0KPiBDYzogbmFn YXN1cmVzaGt1bWFycmVsbGlAZ21haWwuY29tOyBib3Jpcy5icmV6aWxsb25AYm9vdGxpbi5jb207 DQo+IHJpY2hhcmRAbm9kLmF0OyBkd213MkBpbmZyYWRlYWQub3JnOyBjb21wdXRlcnNmb3JwZWFj ZUBnbWFpbC5jb207DQo+IG1hcmVrLnZhc3V0QGdtYWlsLmNvbTsgY3lyaWxsZS5waXRjaGVuQHdl ZGV2NHUuZnI7IGxpbnV4LQ0KPiBtdGRAbGlzdHMuaW5mcmFkZWFkLm9yZzsgbGludXgta2VybmVs QHZnZXIua2VybmVsLm9yZzsgTWljaGFsIFNpbWVrDQo+IDxtaWNoYWxzQHhpbGlueC5jb20+OyBQ dW5uYWlhaCBDaG91ZGFyeSBLYWxsdXJpIDxwdW5uYWlhQHhpbGlueC5jb20+DQo+IFN1YmplY3Q6 IFJlOiBbTElOVVggUEFUQ0ggdjggMi8yXSBtdGQ6IHJhd25hbmQ6IHBsMzUzOiBBZGQgYmFzaWMg ZHJpdmVyIGZvcg0KPiBhcm0gcGwzNTMgc21jIG5hbmQgaW50ZXJmYWNlDQo+IA0KPiBIaSBOYWdh LA0KPiANCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICogcGwzNTNfbmFuZF9yZWFkX2J1Zl9sIC0g cmVhZCBjaGlwIGRhdGEgaW50byBidWZmZXINCj4gPiA+ID4gKyAqIEBjaGlwOglQb2ludGVyIHRv IHRoZSBOQU5EIGNoaXAgaW5mbyBzdHJ1Y3R1cmUNCj4gPiA+ID4gKyAqIEBpbjoJCVBvaW50ZXIg dG8gdGhlIGJ1ZmZlciB0byBzdG9yZSByZWFkIGRhdGENCj4gPiA+ID4gKyAqIEBsZW46CU51bWJl ciBvZiBieXRlcyB0byByZWFkDQo+ID4gPiA+ICsgKiBSZXR1cm46CUFsd2F5cyByZXR1cm4gemVy bw0KPiA+ID4gPiArICovDQo+ID4gPiA+ICtzdGF0aWMgaW50IHBsMzUzX25hbmRfcmVhZF9idWZf bChzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwLA0KPiA+ID4gPiArCQkJCSAgICAgdWludDhfdCAqaW4s DQo+ID4gPiA+ICsJCQkJICAgICB1bnNpZ25lZCBpbnQgbGVuKQ0KPiA+ID4gPiArew0KPiA+ID4g PiArCWludCBpOw0KPiA+ID4gPiArCXVuc2lnbmVkIGxvbmcgKnB0ciA9ICh1bnNpZ25lZCBsb25n ICopaW47DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlsZW4gPj49IDI7DQo+ID4gPg0KPiA+ID4gQ2Fu IHlvdSBwbGVhc2UgbGV0IHRoZSBjb21waWxlciBvcHRpbWl6ZSB0aGluZ3M/IEkgZG9uJ3QgZmlu ZCB0aGlzDQo+ID4gPiB2ZXJ5IHJlYWRhYmxlLCBJIHdvdWxkIHByZWZlciBhIGRpdmlzaW9uIGhl cmUuIEFuZCBpZiB0aGlzIGRpdmlzaW9uDQo+ID4gPiBieSA0IGlzIHJlbGF0ZWQgdG8gdGhlIHNp emUgb2YgKnB0ciwgcGxlYXNlIHVzZSB0aGUgc2l6ZW9mKCkgbWFjcm8uDQo+IE90aGVyd2lzZSBw bGVhc2UgZG9jdW1lbnQgdGhpcyB2YWx1ZS4NCj4gPiBBdCBhIHRpbWUsIHdlIGFyZSByZWFkaW5n IDRieXRlcy4gSGVuY2UgPj4gMi4NCj4gPiBJIGRpZG4ndCBnZXQgeW91ciBwb2ludC4NCj4gPiBB cmUgeW91IHNheWluZyBpbnN0ZWFkIG9mIHNoaWZ0aW5nLCBqdXN0IHVzZSBkaXZpZGUgYnkgND8N Cj4gDQo+IEkgZG8uDQo+IA0KPiA+DQo+ID4gPg0KPiA+ID4gPiArCWZvciAoaSA9IDA7IGkgPCBs ZW47IGkrKykNCj4gPiA+ID4gKwkJcHRyW2ldID0gcmVhZGwoY2hpcC0+SU9fQUREUl9SKTsNCj4g PiA+DQo+ID4gPiBTcGFjZQ0KPiA+IE9rLCBJIHdpbGwgdXBkYXRlIGl0DQo+ID4gPg0KPiA+ID4g PiArCXJldHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgdm9p ZCBwbDM1M19uYW5kX3dyaXRlX2J1Zl9sKHN0cnVjdCBuYW5kX2NoaXAgKmNoaXAsIGNvbnN0DQo+ ID4gPiA+ICt1aW50OF90DQo+ID4gPiAqYnVmLA0KPiA+ID4gPiArCQkJCWludCBsZW4pDQo+ID4g PiA+ICt7DQo+ID4gPiA+ICsJaW50IGk7DQo+ID4gPiA+ICsJdW5zaWduZWQgbG9uZyAqcHRyID0g KHVuc2lnbmVkIGxvbmcgKilidWY7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlmb3IgKGkgPSAwOyBp IDwgbGVuOyBpKyspDQo+ID4gPiA+ICsJCXdyaXRlYihwdHJbaV0sIGNoaXAtPklPX0FERFJfVyk7 DQo+ID4gPg0KPiA+ID4gSGVyZSB5b3UgdXNlIHdyaXRlYiAoYXMgb3Bwb3NlZCB0byByZWFkbCBw cmV2aW91c2x5KS4gVGhlbiwgSSBndWVzcw0KPiA+ID4geW91IGNhbiBhbHNvIHJlYWQgYnl0ZSBw ZXIgYnl0ZS4gSWYgc28sIHlvdSBjYW4gZHJvcCBib3RoIGhlbHBlcnMNCj4gPiA+IGFuZCBsZXQg dGhlIGNvcmUgdXNlIGl0cyBkZWZhdWx0cyBvbmVzOiBuYW5kX3JlYWQvd3JpdGVfYnVmKCkuDQo+ ID4gTWF5IGJlIHRoZSBmdW5jdGlvbiBuYW1lIEkgaGF2ZSB3cml0dGVuIHdyb25nbHkuDQo+ID4g V2hlbiB1c2luZyB3cml0ZWwsIGl0IHNob3VsZCBiZSBuYW5kX3dyaXRlX2J1Zl9sLg0KPiA+IEJ1 dCB0aGUgdGhpbmcgaXMsIHdoZW4gdXNpbmcgZXhlY19vcCwgY29yZSBpcyBub3QgY2FsbGluZw0K PiA+IGNoaXAtPnJlYWRfYnl0ZSgpLCBoZW5jZSBJIGFkZGVkIEJ5dGUgcmVhZGluZy4NCj4gDQo+ IFdlbGwsIHRoZSBwb2ludCBvZiB1c2luZyAtPmV4ZWNfb3AoKSBpcyB0byBmb3JnZXQgYWJvdXQg dGhlc2UgaG9va3MuDQo+IC0+ZXhlY19vcCgpIHdpbGwgYXNrIHlvdSB0byByZWFkIG9uZSBieXRl IGlmIG5lZWRlZC4gWW91IHNob3VsZCBmb3JnZXQNCj4gYWJvdXQgLT5yZWFkL3dyaXRlX2J5dGUv d29yZC9idWYoKSBob29rcyBhbmQgZGVsZXRlIHRoZW0gZW50aXJlbHkuDQo+IA0KPiA+ID4NCj4g PiA+IFNhbWUgZm9yIHRoZSBuZXh0IGZ1bmN0aW9ucy4gUGx1cywgaWYgeW91IGRvbid0IHVzZSB0 aGVtIGluc2lkZQ0KPiA+ID4gLT5leGVjX29wKCkgaW1wbGVtZW50YXRpb24sIHRoZXkgaGF2ZSB0 byBiZSByZW1vdmVkIGFueXdheS4NCj4gPiBUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gc2hvdWxk IGNoYW5nZSB0byBidWZfbCwgdG8gZG8gNGJ5dGUgd3JpdGVzLg0KPiA+IFRoZSBuYW1lIGlzIGNy ZWF0aW5nIGNvbmZ1c2lvbi4NCj4gPiA+DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4g Ky8qKg0KPiA+ID4gPiArICogcGwzNTNfbmFuZF93cml0ZV9idWYgLSB3cml0ZSBidWZmZXIgdG8g Y2hpcA0KPiA+ID4gPiArICogQG10ZDoJUG9pbnRlciB0byB0aGUgbXRkIGluZm8gc3RydWN0dXJl DQo+ID4gPiA+ICsgKiBAYnVmOglQb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gc3RvcmUgcmVhZCBk YXRhDQo+ID4gPiA+ICsgKiBAbGVuOglOdW1iZXIgb2YgYnl0ZXMgdG8gd3JpdGUNCj4gPiA+ID4g KyAqLw0KPiA+ID4gPiArc3RhdGljIHZvaWQgcGwzNTNfbmFuZF93cml0ZV9idWYoc3RydWN0IG10 ZF9pbmZvICptdGQsIGNvbnN0IHVpbnQ4X3QNCj4gKmJ1ZiwNCj4gPiA+ID4gKwkJCQlpbnQgbGVu KQ0KPiA+ID4gPiArew0KPiA+ID4gPiArCWludCBpOw0KPiA+ID4gPiArCXN0cnVjdCBuYW5kX2No aXAgKmNoaXAgPSBtdGRfdG9fbmFuZChtdGQpOw0KPiA+ID4gPiArCXVuc2lnbmVkIGxvbmcgKnB0 ciA9ICh1bnNpZ25lZCBsb25nICopYnVmOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJbGVuID4+PSAy Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQ0KPiA+ID4g PiArCQl3cml0ZWwocHRyW2ldLCBjaGlwLT5JT19BRERSX1cpOyB9DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKy8qKg0KPiA+ID4gPiArICogcGwzNTNfbmFuZF9yZWFkX2J1ZiAtIHJlYWQgY2hpcCBkYXRh IGludG8gYnVmZmVyDQo+ID4gPiA+ICsgKiBAY2hpcDoJUG9pbnRlciB0byB0aGUgTkFORCBjaGlw IGluZm8gc3RydWN0dXJlDQo+ID4gPiA+ICsgKiBAaW46CVBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB0 byBzdG9yZSByZWFkIGRhdGENCj4gPiA+ID4gKyAqIEBsZW46CU51bWJlciBvZiBieXRlcyB0byBy ZWFkDQo+ID4gPiA+ICsgKiBSZXR1cm46CTAgb24gc3VjY2VzcyBvciBlcnJvciB2YWx1ZSBvbiBm YWlsdXJlDQo+ID4gPiA+ICsgKi8NCj4gPiA+ID4gK3N0YXRpYyBpbnQgcGwzNTNfbmFuZF9yZWFk X2J1ZihzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwLA0KPiA+ID4gPiArCQkJCSAgICAgdWludDhfdCAq aW4sDQo+ID4gPiA+ICsJCQkJICAgICB1bnNpZ25lZCBpbnQgbGVuKQ0KPiA+ID4gPiArew0KPiA+ ID4gPiArCWludCBpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJZm9yIChpID0gMDsgaSA8IGxlbjsg aSsrKQ0KPiA+ID4gPiArCQlpbltpXSA9IHJlYWRiKGNoaXAtPklPX0FERFJfUik7DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKwlyZXR1cm4gMDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiAr LyoqDQo+ID4gPiA+ICsgKiBwbDM1M19uYW5kX2NhbGN1bGF0ZV9od2VjYyAtIENhbGN1bGF0ZSBI YXJkd2FyZSBFQ0MNCj4gPiA+ID4gKyAqIEBtdGQ6CVBvaW50ZXIgdG8gdGhlIG10ZF9pbmZvIHN0 cnVjdHVyZQ0KPiA+ID4gPiArICogQGRhdGE6CVBvaW50ZXIgdG8gdGhlIHBhZ2UgZGF0YQ0KPiA+ ID4gPiArICogQGVjY19jb2RlOglQb2ludGVyIHRvIHRoZSBFQ0MgYnVmZmVyIHdoZXJlIEVDQyBk YXRhIG5lZWRzIHRvIGJlDQo+ID4gPiBzdG9yZWQNCj4gPiA+DQo+ID4gPiBZb3Ugc3RvcmUgRUND IGluIGEgdmFyaWFibGUgY2FsbGVkICJjb2RlIiwgY2FuIHlvdSBwbGVhc2UgbWFrZSBpdA0KPiBj b25zaXN0ZW50Pw0KPiA+IE1pcXVlbCwgSSBhbSBub3QgdXNpbmcgYW55IHZhcmlhYmxlIGNhbGxl ZCAiY29kZSINCj4gDQo+IEkgc2VlICJlY2NfY29kZSIsIGFuZCBFQ0MgYWxyZWFkeSBzdGFuZHMg Zm9yICJFcnJvciBDb3JyZWN0aW5nIENvZGUiLg0KPiANCj4gPiA+DQo+ID4gPiA+ICsgKg0KPiA+ ID4gPiArICogVGhpcyBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIEhhcmR3YXJlIEVDQyBkYXRhIGZy b20gdGhlDQo+ID4gPiA+ICtjb250cm9sbGVyIGFuZCByZXR1cm5zDQo+ID4gPiA+ICsgKiBFQ0Mg ZGF0YSBiYWNrIHRvIHRoZSBNVEQgc3Vic3lzdGVtLg0KPiA+ID4gPiArICoNCj4gPiA+ID4gKyAq IFJldHVybjoJMCBvbiBzdWNjZXNzIG9yIGVycm9yIHZhbHVlIG9uIGZhaWx1cmUNCj4gPiA+ID4g KyAqLw0KPiA+ID4gPiArc3RhdGljIGludCBwbDM1M19uYW5kX2NhbGN1bGF0ZV9od2VjYyhzdHJ1 Y3QgbXRkX2luZm8gKm10ZCwNCj4gPiA+ID4gKwkJCQljb25zdCB1OCAqZGF0YSwgdTggKmVjY19j b2RlKSB7DQo+ID4gPiA+ICsJdTMyIGVjY192YWx1ZSwgZWNjX3N0YXR1czsNCj4gPiA+ID4gKwl1 OCBlY2NfcmVnLCBlY2NfYnl0ZTsNCj4gPiA+ID4gKwl1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBq aWZmaWVzICsgUEwzNTNfTkFORF9FQ0NfQlVTWV9USU1FT1VUOw0KPiA+ID4gPiArCS8qIFdhaXQg dGlsbCB0aGUgRUNDIG9wZXJhdGlvbiBpcyBjb21wbGV0ZSBvciB0aW1lb3V0ICovDQo+ID4gPiA+ ICsJZG8gew0KPiA+ID4gPiArCQlpZiAocGwzNTNfc21jX2VjY19pc19idXN5KCkpDQo+ID4gPg0K PiA+ID4gV2hlcmUgZG9lcyB0aGlzIGZ1bmN0aW9uIGNvbWUgZnJvbT8NCj4gPiBUaGUgcGwzNTMg U01DIGhhcyBtZW1vcnkgY29udHJvbGxlciBkcml2ZXIgYW5kIHRoaXMgTkFORCBkcml2ZXIgaXMg dXNpbmcNCj4gdGhvc2UgQVBJcy4NCj4gPiBJIHNlbnQgcGF0Y2hlcyB0byBhZGQgdGhlIG1lbW9y eSBjb250cm9sbGVyIGRyaXZlciBmb3IgcGwzNTMuDQo+ID4gaHR0cHM6Ly93d3cuc3Bpbmljcy5u ZXQvbGlzdHMva2VybmVsL21zZzI3NDg4MzIuaHRtbA0KPiA+IGh0dHBzOi8vd3d3LnNwaW5pY3Mu bmV0L2xpc3RzL2tlcm5lbC9tc2cyNzQ4ODM0Lmh0bWwNCj4gPiBodHRwczovL3d3dy5zcGluaWNz Lm5ldC9saXN0cy9rZXJuZWwvbXNnMjc0ODg0MC5odG1sDQo+ID4NCj4gDQo+IG9rLCBwbGVhc2Ug YWRkIGEgcmVmZXJlbmNlIGluIHlvdXIgY292ZXIgbGV0dGVyIHRvIHRoZSBmdW5jdGlvbnMgdGhh dCBhcmUgbm90DQo+IHlldCBtZXJnZWQgYW5kIHlvdSB3b3VsZCB1c2UgaW4gdGhpcyBzZXJpZXMu DQo+IA0KPiANCj4gPiA+ID4gKw0KPiA+ID4gPiArCWNtZF9waGFzZV9hZGRyID0gKHVuc2lnbmVk IGxvbmcgX19mb3JjZSl4bmFuZC0+bmFuZF9iYXNlICsgKA0KPiA+ID4gPiArCQkJICgoKHhuYW5k LT5yb3dfYWRkcl9jeWNsZXMpICsgKHhuYW5kLQ0KPiA+ID4gPmNvbF9hZGRyX2N5Y2xlcykpDQo+ ID4gPiA+ICsJCQkgPDwgQUREUl9DWUNMRVNfU0hJRlQpIHwNCj4gPiA+ID4gKwkJCSAoZW5kX2Nt ZF92YWxpZCA8PCBFTkRfQ01EX1ZBTElEX1NISUZUKQ0KPiA+ID4gCXwNCj4gPiA+ID4gKwkJCSAo Q09NTUFORF9QSEFTRSkJCQkJfA0KPiA+ID4gPiArCQkJIChlbmRfY21kIDw8IEVORF9DTURfU0hJ RlQpDQo+IAl8DQo+ID4gPg0KPiA+ID4gUGxlYXNlIGRvbid0IGFsaWduIHRoZSAnfCcNCj4gPiBZ b3UgbWVhbiwgdGFiYmluZz8NCj4gDQo+IFllcw0KPiANCj4gPiA+DQo+ID4gPiA+ICsJCQkgKHN0 YXJ0X2NtZCA8PCBTVEFSVF9DTURfU0hJRlQpKTsNCj4gPiA+ID4gKwljbWRfYWRkciA9ICh2b2lk IF9faW9tZW0gKiBfX2ZvcmNlKWNtZF9waGFzZV9hZGRyOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJ LyogR2V0IHRoZSBkYXRhIHBoYXNlIGFkZHJlc3MgKi8NCj4gPiA+ID4gKwlkYXRhX3BoYXNlX2Fk ZHIgPSAodW5zaWduZWQgbG9uZyBfX2ZvcmNlKXhuYW5kLT5uYW5kX2Jhc2UgKyAoDQo+ID4gPiA+ ICsJCQkgICgweDAgPDwgQ0xFQVJfQ1NfU0hJRlQpCQkJfA0KPiA+ID4gPiArCQkJICAoMCA8PCBF TkRfQ01EX1ZBTElEX1NISUZUKQl8DQo+ID4gPiA+ICsJCQkgIChEQVRBX1BIQVNFKQ0KPiAJfA0K PiA+ID4gPiArCQkJICAoZW5kX2NtZCA8PCBFTkRfQ01EX1NISUZUKQ0KPiAJfA0KPiA+ID4gPiAr CQkJICAoMHgwIDw8IEVDQ19MQVNUX1NISUZUKSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwljaGlw LT5JT19BRERSX1IgPSAodm9pZCBfX2lvbWVtICogX19mb3JjZSlkYXRhX3BoYXNlX2FkZHI7DQo+ ID4gPiA+ICsJY2hpcC0+SU9fQUREUl9XID0gY2hpcC0+SU9fQUREUl9SOw0KPiA+ID4gPiArCWlm IChjaGlwLT5vcHRpb25zICYgTkFORF9CVVNXSURUSF8xNikNCj4gPiA+ID4gKwkJY29sdW1uID4+ PSAxOw0KPiA+ID4NCj4gPiA+ICAvIDINCj4gPiA+DQo+ID4gPiA+ICsJY21kX2RhdGEgPSBjb2x1 bW47DQo+ID4gPiA+ICsJaWYgKG10ZC0+d3JpdGVzaXplID4gUEwzNTNfTkFORF9FQ0NfU0laRSkg ew0KPiA+ID4gPiArCQljbWRfZGF0YSB8PSBwYWdlIDw8IDE2Ow0KPiA+ID4gPiArCQkvKiBBbm90 aGVyIGFkZHJlc3MgY3ljbGUgZm9yIGRldmljZXMgPiAxMjhNaUIgKi8NCj4gPiA+ID4gKwkJaWYg KGNoaXAtPmNoaXBzaXplID4gKDEyOCA8PCAyMCkpIHsNCj4gPiA+DQo+ID4gPiBOb3cgdGhlcmUg aXMgYSBmbGFnIGZvciB0aGF0IGluIHRoZSBjb3JlLCBjYWxsZWQgTkFORF9ST1dfQUREUl8zLg0K PiA+IEkgd2lsbCBjaGVjayBhbmQgdXBkYXRlLg0KPiA+ID4NCj4gPiA+ID4gKwkJCXBsMzUzX25h bmRfd3JpdGUzMihjbWRfYWRkciwgY21kX2RhdGEpOw0KPiA+ID4gPiArCQkJY21kX2RhdGEgPSAo cGFnZSA+PiAxNik7DQo+ID4gPiA+ICsJCX0NCj4gPiA+ID4gKwl9IGVsc2Ugew0KPiA+ID4gPiAr CQljbWRfZGF0YSB8PSBwYWdlIDw8IDg7DQo+ID4gPiA+ICsJfQ0KPiA+ID4NCj4gPiA+IFNwYWNl DQo+ID4gT2ssIEkgd2lsbCB1cGRhdGUuDQo+ID4gPg0KPiA+ID4gPiArCXBsMzUzX25hbmRfd3Jp dGUzMihjbWRfYWRkciwgY21kX2RhdGEpOyB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ ID4gPiArICogcGwzNTNfbmFuZF9yZWFkX29vYiAtIFtSRVBMQUNFQUJMRV0gdGhlIG1vc3QgY29t bW9uIE9PQg0KPiBkYXRhDQo+ID4gPiA+ICtyZWFkDQo+ID4gPiBmdW5jdGlvbg0KPiA+ID4gPiAr ICogQG10ZDoJUG9pbnRlciB0byB0aGUgbXRkIGluZm8gc3RydWN0dXJlDQo+ID4gPiA+ICsgKiBA Y2hpcDoJUG9pbnRlciB0byB0aGUgTkFORCBjaGlwIGluZm8gc3RydWN0dXJlDQo+ID4gPiA+ICsg KiBAcGFnZToJUGFnZSBudW1iZXIgdG8gcmVhZA0KPiA+ID4gPiArICoNCj4gPiA+ID4gKyAqIFJl dHVybjoJQWx3YXlzIHJldHVybiB6ZXJvDQo+ID4gPiA+ICsgKi8NCj4gPiA+ID4gK3N0YXRpYyBp bnQgcGwzNTNfbmFuZF9yZWFkX29vYihzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0DQo+ID4g PiA+ICtuYW5kX2NoaXANCj4gPiA+ICpjaGlwLA0KPiA+ID4gPiArCQkJICAgIGludCBwYWdlKQ0K PiA+ID4gPiArew0KPiA+ID4gPiArDQo+ID4gPiA+ICsJdW5zaWduZWQgbG9uZyBkYXRhX3BoYXNl X2FkZHI7DQo+ID4gPiA+ICsJdWludDhfdCAqcDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCWNoaXAt PnBhZ2VidWYgPSAtMTsNCj4gPiA+ID4gKwlpZiAobXRkLT53cml0ZXNpemUgPCBQTDM1M19OQU5E X0VDQ19TSVpFKQ0KPiA+ID4gPiArCQlyZXR1cm4gMDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXBs MzUzX3ByZXBhcmVfY21kKG10ZCwgY2hpcCwgcGFnZSwgbXRkLT53cml0ZXNpemUsDQo+ID4gPiBO QU5EX0NNRF9SRUFEMCwNCj4gPiA+ID4gKwkJTkFORF9DTURfUkVBRFNUQVJULCAxKTsNCj4gPiA+ DQo+ID4gPiBBbGlnbm1lbnQNCj4gPiBBcmUgeW91IHJ1bm5pbmcgYW55IHNjcmlwdCBhcGFydCBm cm9tIGNoZWNrcGF0Y2g/DQo+ID4gQW55IHdheSBJIHdpbGwgY29ycmVjdCBpdC4NCj4gDQo+IEFs bCBteSBjb21tZW50cyBoYXZlIGJlZW4gbWFkZSAibWFudWFsbHkiIHdpdGhvdXQgdG9vbCBidXQg eW91IHNob3VsZA0KPiBkZWZpbml0aXZlbHkgcnVuIGNoZWNrcGF0Y2gucGwgLS1zdHJpY3Qgb24g YWxsIHlvdXIgcGF0Y2hlcyBiZWZvcmUgc2VuZGluZw0KPiB0aGVtLg0KPiANCj4gDQo+ID4gPiA+ ICsNCj4gPiA+ID4gKwlyZXR1cm4gKHN0YXR1cyAmIE5BTkRfU1RBVFVTX0ZBSUwpID8gLUVJTyA6 IDA7IH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgKiBwbDM1M19uYW5kX3Jl YWRfcGFnZV9yYXcgLSBbSW50ZXJuXSByZWFkIHJhdyBwYWdlIGRhdGEgd2l0aG91dA0KPiBlY2MN Cj4gPiA+ID4gKyAqIEBtdGQ6CQlQb2ludGVyIHRvIHRoZSBtdGQgaW5mbyBzdHJ1Y3R1cmUNCj4g PiA+ID4gKyAqIEBjaGlwOgkJUG9pbnRlciB0byB0aGUgTkFORCBjaGlwIGluZm8gc3RydWN0dXJl DQo+ID4gPiA+ICsgKiBAYnVmOgkJUG9pbnRlciB0byB0aGUgZGF0YSBidWZmZXINCj4gPiA+ID4g KyAqIEBvb2JfcmVxdWlyZWQ6CUNhbGxlciByZXF1aXJlcyBPT0IgZGF0YSByZWFkIHRvIGNoaXAt DQo+ID5vb2JfcG9pDQo+ID4gPiA+ICsgKiBAcGFnZToJCVBhZ2UgbnVtYmVyIHRvIHJlYWQNCj4g PiA+ID4gKyAqDQo+ID4gPiA+ICsgKiBSZXR1cm46CUFsd2F5cyByZXR1cm4gemVybw0KPiA+ID4g PiArICovDQo+ID4gPiA+ICtzdGF0aWMgaW50IHBsMzUzX25hbmRfcmVhZF9wYWdlX3JhdyhzdHJ1 Y3QgbXRkX2luZm8gKm10ZCwNCj4gPiA+ID4gKwkJCQlzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwLA0K PiA+ID4gPiArCQkJCXVpbnQ4X3QgKmJ1ZiwgaW50IG9vYl9yZXF1aXJlZCwgaW50IHBhZ2UpDQo+ ID4gPg0KPiA+ID4gRG8geW91IHJlYWxseSBuZWVkIHJhdyBhY2Nlc3NvcnM/DQo+ID4gWWVzLCB3 aGVuIHVzaW5nIG9uLWRpZSBlY2MsIHRoaXMgZnVuY3Rpb24gaXMgZ2V0dGluZyBjYWxsZWQuDQo+ ID4gaS5lLiBuYW5kX21pY3Jvbi5jIGlzIGNhbGxpbmcgbmFuZF9zZXRfZmVhdHVyZXNfb3AsIHdp dGgNCj4gPiBEQVRBX09VVF9JTlNUUiwgYW5kIHRoZXJlIHdlIGFyZSB1c2luZyB0aGlzLg0KPiAN Cj4gSSBkb24ndCBzZWUgYW55IGxpbmsgYmV0d2VlbiBkb2luZyBhIG5hZF9zZXRfZmVhdHVyZXNf b3AgYW5kIGNhbGxpbmcgYSByYXcNCj4gYWNjZXNzb3IuIEl0J3MgYWxtb3N0IGxpa2UgdGhlIC0+ cmVhZF9ieXRlKCkgaG9vaywgaWYgdGhlcmUgaXMgbm90aGluZyBzcGVjaWZpYyB0bw0KPiBpbXBs ZW1lbnQsIGp1c3QgZm9yZ2V0IGFib3V0IGl0LCAtPmV4ZWNfb3AoKSBpcyBwcm9iYWJseSBlbm91 Z2guDQo+IA0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgKiBwbDM1M19uYW5kX3NlbGVjdF9jaGlw IC0gU2VsZWN0IHRoZSBmbGFzaCBkZXZpY2UNCj4gPiA+ID4gKyAqIEBtdGQ6CVBvaW50ZXIgdG8g dGhlIG10ZCBpbmZvIHN0cnVjdHVyZQ0KPiA+ID4gPiArICogQGNoaXA6CVBvaW50ZXIgdG8gdGhl IE5BTkQgY2hpcCBpbmZvIHN0cnVjdHVyZQ0KPiA+ID4gPiArICoNCj4gPiA+ID4gKyAqIFRoaXMg ZnVuY3Rpb24gaXMgZW1wdHkgYXMgdGhlIE5BTkQgY29udHJvbGxlciBoYW5kbGVzIGNoaXANCj4g PiA+ID4gK3NlbGVjdCBsaW5lDQo+ID4gPiA+ICsgKiBpbnRlcm5hbGx5IGJhc2VkIG9uIHRoZSBj aGlwIGFkZHJlc3MgcGFzc2VkIGluIGNvbW1hbmQgYW5kIGRhdGENCj4gcGhhc2UuDQo+ID4gPiA+ ICsgKi8NCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHBsMzUzX25hbmRfc2VsZWN0X2NoaXAoc3RydWN0 IG10ZF9pbmZvICptdGQsIGludA0KPiA+ID4gPiArY2hpcCkgeyB9DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKy8qIE5BTkQgZnJhbWV3b3JrIC0+ZXhlY19vcCgpIGhvb2tzIGFuZCByZWxhdGVkIGhlbHBl cnMgKi8gc3RhdGljDQo+ID4gPiA+ICt2b2lkIHBsMzUzX25mY19wYXJzZV9pbnN0cnVjdGlvbnMo c3RydWN0IG5hbmRfY2hpcCAqY2hpcCwNCj4gPiA+ID4gKwkJCQkJICAgY29uc3Qgc3RydWN0IG5h bmRfc3Vib3AgKnN1Ym9wLA0KPiA+ID4gPiArCQkJCQkgICBzdHJ1Y3QgcGwzNTNfbmZjX29wICpu ZmNfb3ApIHsNCj4gPiA+ID4gKwljb25zdCBzdHJ1Y3QgbmFuZF9vcF9pbnN0ciAqaW5zdHIgPSBO VUxMOw0KPiA+ID4gPiArCXVuc2lnbmVkIGludCBvcF9pZCwgb2Zmc2V0LCBuYWRkcnM7DQo+ID4g PiA+ICsJaW50IGk7DQo+ID4gPiA+ICsJY29uc3QgdTggKmFkZHJzOw0KPiA+ID4gPiArDQo+ID4g PiA+ICsJbWVtc2V0KG5mY19vcCwgMCwgc2l6ZW9mKHN0cnVjdCBwbDM1M19uZmNfb3ApKTsNCj4g PiA+ID4gKwlmb3IgKG9wX2lkID0gMDsgb3BfaWQgPCBzdWJvcC0+bmluc3Ryczsgb3BfaWQrKykg ew0KPiA+ID4gPiArDQo+ID4gPg0KPiA+ID4gV2hhdCBpcyB0aGlzIGZvci1sb29wIGZvcj8gSSBk b24ndCBnZXQgaXQgYXMgeW91IGJyZWFrIHRoZSBzd2l0Y2ggaW4gZXZlcnkNCj4gY2FzZT8NCj4g PiBJIHRoaW5rLCBicmVha2luZyBzd2l0Y2ggY2FzZSBvbmx5IG5vdCBmb3IgbG9vcC4NCj4gDQo+ IE15IGJhZCwgb2suDQo+IA0KPiA+ID4NCj4gPiA+ID4gKwkJbmZjX29wLT5sZW4gPSBuYW5kX3N1 Ym9wX2dldF9kYXRhX2xlbihzdWJvcCwgb3BfaWQpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJCWlu c3RyID0gJnN1Ym9wLT5pbnN0cnNbb3BfaWRdOw0KPiA+ID4gPiArCQlpZiAoc3Vib3AtPm5pbnN0 cnMgPT0gMSkNCj4gPiA+ID4gKwkJCW5mY19vcC0+Y21uZHNbMF0gPSAtMTsNCj4gPiA+ID4gKwkJ c3dpdGNoIChpbnN0ci0+dHlwZSkgew0KPiA+ID4gPiArCQljYXNlIE5BTkRfT1BfQ01EX0lOU1RS Og0KPiA+ID4gPiArCQkJbmZjX29wLT50eXBlID0gTkFORF9PUF9DTURfSU5TVFI7DQo+ID4gPiA+ ICsJCQluZmNfb3AtPmVuZF9jbWQgPSBvcF9pZCAtIDE7DQo+ID4gPiA+ICsJCQlpZiAob3BfaWQp DQo+ID4gPg0KPiA+ID4gWW91IHNob3VsZCBwdXQgeyB9IG9uIHRoZSBpZiBhbHNvIGlmIHRoZSBl bHNlIHN0YXRlbWVudCBuZWVkcyBicmFjZXMuDQo+ID4gT2ssIGJ1dCBJIGRpZG4ndCBzZWUgYW55 IHdhcm5pbmcgZnJvbSBjaGVja3BhdGNoLg0KPiANCj4gTWF5YmUgd2l0aCB0aGUgLS1zdHJpY3Qg b3B0aW9uPw0KPiBPdGhlcndpc2UgdGhpcyBpcyBjbGVhcmx5IHN0YXRlZCBpbiB0aGUga2VybmVs IGNvZGluZyBzdHlsZSBkb2N1bWVudGF0aW9uLg0KPiANCj4gDQo+ID4gPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IG5hbmRfb3BfcGFyc2VyIHBsMzUzX25mY19vcF9wYXJzZXIgPQ0KPiA+ID4gTkFO RF9PUF9QQVJTRVIoDQo+ID4gPiA+ICsJTkFORF9PUF9QQVJTRVJfUEFUVEVSTigNCj4gPiA+ID4g KwkJcGwzNTNfbmFuZF9jbWRfZnVuY3Rpb24sDQo+ID4gPiA+ICsJCU5BTkRfT1BfUEFSU0VSX1BB VF9DTURfRUxFTShmYWxzZSksDQo+ID4gPiA+ICsJCU5BTkRfT1BfUEFSU0VSX1BBVF9BRERSX0VM RU0oZmFsc2UsIDcpLA0KPiA+ID4gPiArCQlOQU5EX09QX1BBUlNFUl9QQVRfREFUQV9JTl9FTEVN KGZhbHNlLCA4KSksDQo+ID4gPiA+ICsJIE5BTkRfT1BfUEFSU0VSX1BBVFRFUk4oDQo+ID4gPiA+ ICsJCXBsMzUzX25hbmRfY21kX2Z1bmN0aW9uLA0KPiA+ID4gPiArCQlOQU5EX09QX1BBUlNFUl9Q QVRfQ01EX0VMRU0oZmFsc2UpLA0KPiA+ID4gPiArCQlOQU5EX09QX1BBUlNFUl9QQVRfQUREUl9F TEVNKGZhbHNlLCA3KSwNCj4gPiA+ID4gKwkJTkFORF9PUF9QQVJTRVJfUEFUX0NNRF9FTEVNKGZh bHNlKSwNCj4gPiA+ID4gKwkJTkFORF9PUF9QQVJTRVJfUEFUX1dBSVRSRFlfRUxFTShmYWxzZSkp LA0KPiA+ID4gPiArCU5BTkRfT1BfUEFSU0VSX1BBVFRFUk4oDQo+ID4gPiA+ICsJCXBsMzUzX25h bmRfY21kX2Z1bmN0aW9uLA0KPiA+ID4gPiArCQlOQU5EX09QX1BBUlNFUl9QQVRfQ01EX0VMRU0o ZmFsc2UpLA0KPiA+ID4gPiArCQlOQU5EX09QX1BBUlNFUl9QQVRfREFUQV9JTl9FTEVNKGZhbHNl LCA4KSksDQo+ID4gPiA+ICsJIE5BTkRfT1BfUEFSU0VSX1BBVFRFUk4oDQo+ID4gPiA+ICsJCXBs MzUzX25hbmRfY21kX2Z1bmN0aW9uLA0KPiA+ID4gPiArCQlOQU5EX09QX1BBUlNFUl9QQVRfQ01E X0VMRU0oZmFsc2UpLA0KPiA+ID4gPiArCQlOQU5EX09QX1BBUlNFUl9QQVRfQUREUl9FTEVNKGZh bHNlLCA3KSwNCj4gPiA+ID4gKwkJTkFORF9PUF9QQVJTRVJfUEFUX1dBSVRSRFlfRUxFTShmYWxz ZSkpLA0KPiA+ID4gPiArCU5BTkRfT1BfUEFSU0VSX1BBVFRFUk4oDQo+ID4gPiA+ICsJCXBsMzUz X25hbmRfY21kX2Z1bmN0aW9uLA0KPiA+ID4gPiArCQlOQU5EX09QX1BBUlNFUl9QQVRfQ01EX0VM RU0oZmFsc2UpLA0KPiA+ID4gPiArCQlOQU5EX09QX1BBUlNFUl9QQVRfQUREUl9FTEVNKGZhbHNl LCA4KSwNCj4gPiA+ID4gKwkJTkFORF9PUF9QQVJTRVJfUEFUX0RBVEFfT1VUX0VMRU0oZmFsc2Us IDIwNDgpLA0KPiA+ID4gPiArCQlOQU5EX09QX1BBUlNFUl9QQVRfQ01EX0VMRU0odHJ1ZSksDQo+ ID4gPiA+ICsJCU5BTkRfT1BfUEFSU0VSX1BBVF9XQUlUUkRZX0VMRU0odHJ1ZSkpLA0KPiA+ID4g PiArCU5BTkRfT1BfUEFSU0VSX1BBVFRFUk4oDQo+ID4gPiA+ICsJCXBsMzUzX25hbmRfY21kX2Z1 bmN0aW9uLA0KPiA+ID4gPiArCQlOQU5EX09QX1BBUlNFUl9QQVRfQ01EX0VMRU0oZmFsc2UpLA0K PiA+ID4gPiArCQlOQU5EX09QX1BBUlNFUl9QQVRfV0FJVFJEWV9FTEVNKGZhbHNlKSksDQo+ID4g PiA+ICsJTkFORF9PUF9QQVJTRVJfUEFUVEVSTigNCj4gPiA+ID4gKwkJcGwzNTNfbmFuZF9jbWRf ZnVuY3Rpb24sDQo+ID4gPiA+ICsJCU5BTkRfT1BfUEFSU0VSX1BBVF9EQVRBX0lOX0VMRU0oZmFs c2UsIDIwNDgpKSwNCj4gPiA+ID4gKwlOQU5EX09QX1BBUlNFUl9QQVRURVJOKA0KPiA+ID4gPiAr CQlwbDM1M19uYW5kX2NtZF9mdW5jdGlvbiwNCj4gPiA+ID4gKwkJTkFORF9PUF9QQVJTRVJfUEFU X0NNRF9FTEVNKGZhbHNlKSksDQo+ID4gPg0KPiA+ID4gSSBhbSBwcmV0dHkgc3VyZSB5b3UgY2Fu IGZhY3Rvcml6ZSBhbGwgdGhlc2UgcGF0dGVybnMgbm93LiBVc2UgdGhlDQo+ICJvcHRpb25hbCIN Cj4gPiA+IHBhcmFtZXRlciBmb3IgdGhhdC4NCj4gPiBDYW4geW91IGV4cGxhaW4gbGl0dGxlIGJp dD8gIEkgZGlkbid0IGdldC4NCj4gDQo+IEFsbCB0aGUgcGF0dGVybnMgcmVmZXIgdG8gdGhlIHNh bWUgZnVuY3Rpb24uIFRoaXMgaXMgZmluZS4NCj4gQnV0IG1heWJlIHlvdSBjYW4gZmFjdG9yaXpl IHRoZSBwYXJlbnRzIHVzaW5nIHRoZSAib3B0aW9uYWwiIHBhcmFtZXRlci4NCj4gRm9yIGV4YW1w bGUsIGlmIHlvdSBoYXZlDQo+ICogQ01EICsgQUREUiArIERBVEFfSU4NCj4gKiBDTUQgKyBEQVRB X0lODQo+IE1heWJlIHlvdSBjYW4ganVzdCBzdGF0ZToNCj4gKiBDTUQgKyBbQUREUl0gKyBEQVRB X0lODQo+IFdpdGggIltdIiBtZWFuaW5nIHRoZSBlbGVtZW50IGlzIG9wdGlvbmFsLg0KPiANCj4g DQo+IFRoYW5rcyBmb3IgYWRkcmVzc2luZyB0aGVzZSBjb21tZW50cy4NCj4gDQo+IFJlZ2FyZHMs DQo+IE1pcXXDqGwNCj4gDQo+IC0tDQo+IE1pcXVlbCBSYXluYWwsIEJvb3RsaW4gKGZvcm1lcmx5 IEZyZWUgRWxlY3Ryb25zKSBFbWJlZGRlZCBMaW51eCBhbmQgS2VybmVsDQo+IGVuZ2luZWVyaW5n IGh0dHBzOi8vYm9vdGxpbi5jb20NCg==