From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ACDDEC3A59E for ; Fri, 16 Aug 2019 09:45:07 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 789C62133F for ; Fri, 16 Aug 2019 09:45:07 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="rqVHdYme" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 789C62133F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=r0bT+mjOotubKP2KsN0KmuBEtNNEJM8PmiHWxzY1X1E=; b=rqVHdYmevQFi11 EQzXy41RwnbZceHpo5gJzpqyKqMPjfI+AvuDgA1ZfpHFgnTTN5lF1BLWpuWY7I9SD7eZSSvXM6cE2 eEA9ljjUSPdEaXrYrWHObuzv0Aqp4D/0MpW5aVwvLSd82gER39R0guTAgqTW9XjSbrtMIPK8ZYGip W9H1aHYQ3VHLUXeQSKEwScnWOqisJmPa69y/w7zGjpTxMmyTVKT1M2Vk9Sw8lbnmtJxe1RmMQUT1n QD4e09ZgVrEadwWcKhFPODgxNa2zI/Fxomrr28RZicEyCA/QbTzgNYt/ZiAdbaiCMeOdlIIi/OQVk sfpKkSuKH+tbUcmOpovw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1hyYn4-0005qC-LM; Fri, 16 Aug 2019 09:44:58 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1hyYmz-0005pl-KT for linux-arm-kernel@lists.infradead.org; Fri, 16 Aug 2019 09:44:56 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8752228; Fri, 16 Aug 2019 02:44:52 -0700 (PDT) Received: from localhost (unknown [10.37.6.20]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A9D523F706; Fri, 16 Aug 2019 02:44:51 -0700 (PDT) Date: Fri, 16 Aug 2019 10:44:50 +0100 From: Andrew Murray To: Xiaowei Bao Subject: Re: [PATCH 01/10] PCI: designware-ep: Add multiple PFs support for DWC Message-ID: <20190816094449.GA14111@e119886-lin.cambridge.arm.com> References: <20190815083716.4715-1-xiaowei.bao@nxp.com> <20190815113129.GF43882@e119886-lin.cambridge.arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1+81 (426a6c1) (2018-08-26) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190816_024453_768674_56C6638C X-CRM114-Status: GOOD ( 27.53 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "mark.rutland@arm.com" , Roy Zang , "lorenzo.pieralisi@arm.com" , "arnd@arndb.de" , "gregkh@linuxfoundation.org" , "jingoohan1@gmail.com" , "Z.q. Hou" , "linuxppc-dev@lists.ozlabs.org" , "linux-pci@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "kishon@ti.com" , "M.h. Lian" , "devicetree@vger.kernel.org" , "gustavo.pimentel@synopsys.com" , Leo Li , "shawnguo@kernel.org" , "linux-arm-kernel@lists.infradead.org" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gRnJpLCBBdWcgMTYsIDIwMTkgYXQgMDI6NTU6NDFBTSArMDAwMCwgWGlhb3dlaSBCYW8gd3Jv dGU6Cj4gCj4gCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gRnJvbTogQW5kcmV3 IE11cnJheSA8YW5kcmV3Lm11cnJheUBhcm0uY29tPgo+ID4gU2VudDogMjAxOeW5tDjmnIgxNeaX pSAxOTozMgo+ID4gVG86IFhpYW93ZWkgQmFvIDx4aWFvd2VpLmJhb0BueHAuY29tPgo+ID4gQ2M6 IGppbmdvb2hhbjFAZ21haWwuY29tOyBndXN0YXZvLnBpbWVudGVsQHN5bm9wc3lzLmNvbTsKPiA+ IGJoZWxnYWFzQGdvb2dsZS5jb207IHJvYmgrZHRAa2VybmVsLm9yZzsgbWFyay5ydXRsYW5kQGFy bS5jb207Cj4gPiBzaGF3bmd1b0BrZXJuZWwub3JnOyBMZW8gTGkgPGxlb3lhbmcubGlAbnhwLmNv bT47IGtpc2hvbkB0aS5jb207Cj4gPiBsb3JlbnpvLnBpZXJhbGlzaUBhcm0uY29tOyBhcm5kQGFy bmRiLmRlOyBncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZzsKPiA+IE0uaC4gTGlhbiA8bWluZ2h1 YW4ubGlhbkBueHAuY29tPjsgTWluZ2thaSBIdSA8bWluZ2thaS5odUBueHAuY29tPjsKPiA+IFJv eSBaYW5nIDxyb3kuemFuZ0BueHAuY29tPjsgbGludXgtcGNpQHZnZXIua2VybmVsLm9yZzsKPiA+ IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3Jn Owo+ID4gbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOyBsaW51eHBwYy1kZXZA bGlzdHMub3psYWJzLm9yZwo+ID4gU3ViamVjdDogUmU6IFtQQVRDSCAwMS8xMF0gUENJOiBkZXNp Z253YXJlLWVwOiBBZGQgbXVsdGlwbGUgUEZzIHN1cHBvcnQgZm9yCj4gPiBEV0MKPiA+IAo+ID4g T24gVGh1LCBBdWcgMTUsIDIwMTkgYXQgMDQ6Mzc6MDdQTSArMDgwMCwgWGlhb3dlaSBCYW8gd3Jv dGU6Cj4gPiA+IEFkZCBtdWx0aXBsZSBQRnMgc3VwcG9ydCBmb3IgRFdDLCBkaWZmZXJlbnQgUEYg aGF2ZSBkaWZmZXJlbnQgY29uZmlnCj4gPiA+IHNwYWNlLCB3ZSB1c2UgcGYtb2Zmc2V0IHByb3Bl cnR5IHdoaWNoIGdldCBmcm9tIHRoZSBEVFMgdG8gYWNjZXNzIHRoZQo+ID4gPiBkaWZmZXJlbnQg cEYgY29uZmlnIHNwYWNlLgo+ID4gCj4gPiBUaGFua3MgZm9yIHRoZSBwYXRjaC4gSSBoYXZlbid0 IHNlZW4gYSBjb3ZlciBsZXR0ZXIgZm9yIHRoaXMgc2VyaWVzLCBpcyB0aGVyZSBvbmUKPiA+IG1p c3Npbmc/Cj4gTWF5YmUgSSBtaXNzLCBJIHdpbGwgYWRkIHlvdSB0byByZXZpZXcgbmV4dCB0aW1l LCB0aGFua3MgYSBsb3QgZm9yIHlvdXIgY29tbWVudHMuCj4gPiAKPiA+IAo+ID4gPgo+ID4gPiBT aWduZWQtb2ZmLWJ5OiBYaWFvd2VpIEJhbyA8eGlhb3dlaS5iYW9AbnhwLmNvbT4KPiA+ID4gLS0t Cj4gPiA+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtZXAuYyB8 ICA5Nwo+ID4gKysrKysrKysrKysrKy0tLS0tLS0tLQo+ID4gPiAgZHJpdmVycy9wY2kvY29udHJv bGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLmMgICAgfCAxMDUKPiA+ICsrKysrKysrKysrKysrKysr KysrKystLQo+ID4gPiAgZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJl LmggICAgfCAgMTAgKystCj4gPiA+ICBpbmNsdWRlL2xpbnV4L3BjaS1lcGMuaCAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMSArCj4gPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDE2NCBpbnNlcnRp b25zKCspLCA0OSBkZWxldGlvbnMoLSkKPiA+ID4KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv cGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS1lcC5jCj4gPiA+IGIvZHJpdmVycy9w Y2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWVwLmMKPiA+ID4gaW5kZXggMmJmNWEz NS4uNzVlMjk1NSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2Mv cGNpZS1kZXNpZ253YXJlLWVwLmMKPiA+ID4gKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9k d2MvcGNpZS1kZXNpZ253YXJlLWVwLmMKPiA+ID4gQEAgLTE5LDEyICsxOSwxNCBAQCB2b2lkIGR3 X3BjaWVfZXBfbGlua3VwKHN0cnVjdCBkd19wY2llX2VwICplcCkKPiA+ID4gIAlwY2lfZXBjX2xp bmt1cChlcGMpOwo+ID4gPiAgfQo+ID4gPgo+ID4gPiAtc3RhdGljIHZvaWQgX19kd19wY2llX2Vw X3Jlc2V0X2JhcihzdHJ1Y3QgZHdfcGNpZSAqcGNpLCBlbnVtIHBjaV9iYXJubwo+ID4gYmFyLAo+ ID4gPiAtCQkJCSAgIGludCBmbGFncykKPiA+ID4gK3N0YXRpYyB2b2lkIF9fZHdfcGNpZV9lcF9y ZXNldF9iYXIoc3RydWN0IGR3X3BjaWUgKnBjaSwgdTggZnVuY19ubywKPiA+ID4gKwkJCQkgICBl bnVtIHBjaV9iYXJubyBiYXIsIGludCBmbGFncykKPiA+ID4gIHsKPiA+ID4gIAl1MzIgcmVnOwo+ ID4gPiArCXN0cnVjdCBwY2lfZXBjICplcGMgPSBwY2ktPmVwLmVwYzsKPiA+ID4gKwl1MzIgcGZf YmFzZSA9IGZ1bmNfbm8gKiBlcGMtPnBmX29mZnNldDsKPiA+ID4KPiA+ID4gLQlyZWcgPSBQQ0lf QkFTRV9BRERSRVNTXzAgKyAoNCAqIGJhcik7Cj4gPiA+ICsJcmVnID0gcGZfYmFzZSArIFBDSV9C QVNFX0FERFJFU1NfMCArICg0ICogYmFyKTsKPiA+IAo+ID4gSSB0aGluayBJJ2QgcmF0aGVyIHNl ZSB0aGlzIGFyaXRobWV0aWMgKGFuZCB0aGUgb25lIGZvciBkZXRlcm1pbmluZyBwZl9iYXNlKQo+ ID4gaW5zaWRlIGEgbWFjcm8gb3IgaW5saW5lIGhlYWRlciBmdW5jdGlvbi4gVGhpcyB3b3VsZCBt YWtlIHRoaXMgY29kZSBtb3JlCj4gPiByZWFkYWJsZSBhbmQgcmVkdWNlIHRoZSBjaGFuY2VzIG9m IGFuIGVycm9yIGJ5IGF2b2lkaW5nIGR1cGxpY2F0aW9uIG9mIGNvZGUuCj4gPiAKPiA+IEZvciBl eGFtcGxlIGxvb2sgYXQgY2Ruc19wY2llX2VwX2ZuX3dyaXRlYiBhbmQKPiA+IFJPQ0tDSElQX1BD SUVfRVBfRlVOQ19CQVNFIGZvciBleGFtcGxlcyBvZiBvdGhlciBFUCBkcml2ZXJzIHRoYXQgZG8K PiA+IHRoaXMuCj4gQWdyZWUsIHRoaXMgbG9va3MgZmluZSwgdGhhbmtzIGEgbG90IGZvciB5b3Vy IGNvbW1lbnRzLCBJIHdpbGwgdXNlIHRoaXMgd2F5IHRvIGFjY2Vzcwo+IHRoZSByZWdpc3RlcnMg aW4gbmV4dCB2ZXJzaW9uIHBhdGNoLgo+ID4gCj4gPiAKPiA+ID4gIAlkd19wY2llX2RiaV9yb193 cl9lbihwY2kpOwo+ID4gPiAgCWR3X3BjaWVfd3JpdGVsX2RiaTIocGNpLCByZWcsIDB4MCk7Cj4g PiA+ICAJZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwgcmVnLCAweDApOwo+ID4gPiBAQCAtMzcsNyAr MzksMTIgQEAgc3RhdGljIHZvaWQgX19kd19wY2llX2VwX3Jlc2V0X2JhcihzdHJ1Y3QgZHdfcGNp ZQo+ID4gPiAqcGNpLCBlbnVtIHBjaV9iYXJubyBiYXIsCj4gPiA+Cj4gPiA+ICB2b2lkIGR3X3Bj aWVfZXBfcmVzZXRfYmFyKHN0cnVjdCBkd19wY2llICpwY2ksIGVudW0gcGNpX2Jhcm5vIGJhcikg IHsKPiA+ID4gLQlfX2R3X3BjaWVfZXBfcmVzZXRfYmFyKHBjaSwgYmFyLCAwKTsKPiA+ID4gKwl1 OCBmdW5jX25vLCBmdW5jczsKPiA+ID4gKwo+ID4gPiArCWZ1bmNzID0gcGNpLT5lcC5lcGMtPm1h eF9mdW5jdGlvbnM7Cj4gPiA+ICsKPiA+ID4gKwlmb3IgKGZ1bmNfbm8gPSAwOyBmdW5jX25vIDwg ZnVuY3M7IGZ1bmNfbm8rKykKPiA+ID4gKwkJX19kd19wY2llX2VwX3Jlc2V0X2JhcihwY2ksIGZ1 bmNfbm8sIGJhciwgMCk7Cj4gPiA+ICB9Cj4gPiA+Cj4gPiA+ICBzdGF0aWMgdTggX19kd19wY2ll X2VwX2ZpbmRfbmV4dF9jYXAoc3RydWN0IGR3X3BjaWUgKnBjaSwgdTggY2FwX3B0ciwKPiA+ID4g QEAgLTc4LDI4ICs4NSwyOSBAQCBzdGF0aWMgaW50IGR3X3BjaWVfZXBfd3JpdGVfaGVhZGVyKHN0 cnVjdCBwY2lfZXBjCj4gPiA+ICplcGMsIHU4IGZ1bmNfbm8sICB7Cj4gPiA+ICAJc3RydWN0IGR3 X3BjaWVfZXAgKmVwID0gZXBjX2dldF9kcnZkYXRhKGVwYyk7Cj4gPiA+ICAJc3RydWN0IGR3X3Bj aWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9lcChlcCk7Cj4gPiA+ICsJdTMyIHBmX2Jhc2UgPSBm dW5jX25vICogZXBjLT5wZl9vZmZzZXQ7Cj4gPiA+Cj4gPiA+ICAJZHdfcGNpZV9kYmlfcm9fd3Jf ZW4ocGNpKTsKPiA+ID4gLQlkd19wY2llX3dyaXRld19kYmkocGNpLCBQQ0lfVkVORE9SX0lELCBo ZHItPnZlbmRvcmlkKTsKPiA+ID4gLQlkd19wY2llX3dyaXRld19kYmkocGNpLCBQQ0lfREVWSUNF X0lELCBoZHItPmRldmljZWlkKTsKPiA+ID4gLQlkd19wY2llX3dyaXRlYl9kYmkocGNpLCBQQ0lf UkVWSVNJT05fSUQsIGhkci0+cmV2aWQpOwo+ID4gPiAtCWR3X3BjaWVfd3JpdGViX2RiaShwY2ks IFBDSV9DTEFTU19QUk9HLCBoZHItPnByb2dpZl9jb2RlKTsKPiA+ID4gLQlkd19wY2llX3dyaXRl d19kYmkocGNpLCBQQ0lfQ0xBU1NfREVWSUNFLAo+ID4gPiArCWR3X3BjaWVfd3JpdGV3X2RiaShw Y2ksIHBmX2Jhc2UgKyBQQ0lfVkVORE9SX0lELCBoZHItPnZlbmRvcmlkKTsKPiA+ID4gKwlkd19w Y2llX3dyaXRld19kYmkocGNpLCBwZl9iYXNlICsgUENJX0RFVklDRV9JRCwgaGRyLT5kZXZpY2Vp ZCk7Cj4gPiA+ICsJZHdfcGNpZV93cml0ZWJfZGJpKHBjaSwgcGZfYmFzZSArIFBDSV9SRVZJU0lP Tl9JRCwgaGRyLT5yZXZpZCk7Cj4gPiA+ICsJZHdfcGNpZV93cml0ZWJfZGJpKHBjaSwgcGZfYmFz ZSArIFBDSV9DTEFTU19QUk9HLCBoZHItPnByb2dpZl9jb2RlKTsKPiA+ID4gKwlkd19wY2llX3dy aXRld19kYmkocGNpLCBwZl9iYXNlICsgUENJX0NMQVNTX0RFVklDRSwKPiA+ID4gIAkJCSAgIGhk ci0+c3ViY2xhc3NfY29kZSB8IGhkci0+YmFzZWNsYXNzX2NvZGUgPDwgOCk7Cj4gPiA+IC0JZHdf cGNpZV93cml0ZWJfZGJpKHBjaSwgUENJX0NBQ0hFX0xJTkVfU0laRSwKPiA+ID4gKwlkd19wY2ll X3dyaXRlYl9kYmkocGNpLCBwZl9iYXNlICsgUENJX0NBQ0hFX0xJTkVfU0laRSwKPiA+ID4gIAkJ CSAgIGhkci0+Y2FjaGVfbGluZV9zaXplKTsKPiA+ID4gLQlkd19wY2llX3dyaXRld19kYmkocGNp LCBQQ0lfU1VCU1lTVEVNX1ZFTkRPUl9JRCwKPiA+ID4gKwlkd19wY2llX3dyaXRld19kYmkocGNp LCBwZl9iYXNlICsgUENJX1NVQlNZU1RFTV9WRU5ET1JfSUQsCj4gPiA+ICAJCQkgICBoZHItPnN1 YnN5c192ZW5kb3JfaWQpOwo+ID4gPiAtCWR3X3BjaWVfd3JpdGV3X2RiaShwY2ksIFBDSV9TVUJT WVNURU1fSUQsIGhkci0+c3Vic3lzX2lkKTsKPiA+ID4gLQlkd19wY2llX3dyaXRlYl9kYmkocGNp LCBQQ0lfSU5URVJSVVBUX1BJTiwKPiA+ID4gKwlkd19wY2llX3dyaXRld19kYmkocGNpLCBwZl9i YXNlICsgUENJX1NVQlNZU1RFTV9JRCwKPiA+IGhkci0+c3Vic3lzX2lkKTsKPiA+ID4gKwlkd19w Y2llX3dyaXRlYl9kYmkocGNpLCBwZl9iYXNlICsgUENJX0lOVEVSUlVQVF9QSU4sCj4gPiA+ICAJ CQkgICBoZHItPmludGVycnVwdF9waW4pOwo+ID4gPiAgCWR3X3BjaWVfZGJpX3JvX3dyX2Rpcyhw Y2kpOwo+ID4gPgo+ID4gPiAgCXJldHVybiAwOwo+ID4gPiAgfQo+ID4gPgo+ID4gPiAtc3RhdGlj IGludCBkd19wY2llX2VwX2luYm91bmRfYXR1KHN0cnVjdCBkd19wY2llX2VwICplcCwgZW51bQo+ ID4gcGNpX2Jhcm5vIGJhciwKPiA+ID4gLQkJCQkgIGRtYV9hZGRyX3QgY3B1X2FkZHIsCj4gPiA+ ICtzdGF0aWMgaW50IGR3X3BjaWVfZXBfaW5ib3VuZF9hdHUoc3RydWN0IGR3X3BjaWVfZXAgKmVw LCB1OCBmdW5jX25vLAo+ID4gPiArCQkJCSAgZW51bSBwY2lfYmFybm8gYmFyLCBkbWFfYWRkcl90 IGNwdV9hZGRyLAo+ID4gPiAgCQkJCSAgZW51bSBkd19wY2llX2FzX3R5cGUgYXNfdHlwZSkKPiA+ ID4gIHsKPiA+ID4gIAlpbnQgcmV0Owo+ID4gPiBAQCAtMTEyLDcgKzEyMCw3IEBAIHN0YXRpYyBp bnQgZHdfcGNpZV9lcF9pbmJvdW5kX2F0dShzdHJ1Y3QKPiA+IGR3X3BjaWVfZXAgKmVwLCBlbnVt IHBjaV9iYXJubyBiYXIsCj4gPiA+ICAJCXJldHVybiAtRUlOVkFMOwo+ID4gPiAgCX0KPiA+ID4K PiA+ID4gLQlyZXQgPSBkd19wY2llX3Byb2dfaW5ib3VuZF9hdHUocGNpLCBmcmVlX3dpbiwgYmFy LCBjcHVfYWRkciwKPiA+ID4gKwlyZXQgPSBkd19wY2llX3Byb2dfaW5ib3VuZF9hdHUocGNpLCBm dW5jX25vLCBmcmVlX3dpbiwgYmFyLAo+ID4gPiArY3B1X2FkZHIsCj4gPiA+ICAJCQkJICAgICAg IGFzX3R5cGUpOwo+ID4gPiAgCWlmIChyZXQgPCAwKSB7Cj4gPiA+ICAJCWRldl9lcnIocGNpLT5k ZXYsICJGYWlsZWQgdG8gcHJvZ3JhbSBJQiB3aW5kb3dcbiIpOyBAQCAtMTI1LDcKPiA+ID4gKzEz Myw4IEBAIHN0YXRpYyBpbnQgZHdfcGNpZV9lcF9pbmJvdW5kX2F0dShzdHJ1Y3QgZHdfcGNpZV9l cCAqZXAsCj4gPiBlbnVtIHBjaV9iYXJubyBiYXIsCj4gPiA+ICAJcmV0dXJuIDA7Cj4gPiA+ICB9 Cj4gPiA+Cj4gPiA+IC1zdGF0aWMgaW50IGR3X3BjaWVfZXBfb3V0Ym91bmRfYXR1KHN0cnVjdCBk d19wY2llX2VwICplcCwgcGh5c19hZGRyX3QKPiA+ID4gcGh5c19hZGRyLAo+ID4gPiArc3RhdGlj IGludCBkd19wY2llX2VwX291dGJvdW5kX2F0dShzdHJ1Y3QgZHdfcGNpZV9lcCAqZXAsIHU4IGZ1 bmNfbm8sCj4gPiA+ICsJCQkJICAgcGh5c19hZGRyX3QgcGh5c19hZGRyLAo+ID4gPiAgCQkJCSAg IHU2NCBwY2lfYWRkciwgc2l6ZV90IHNpemUpCj4gPiA+ICB7Cj4gPiA+ICAJdTMyIGZyZWVfd2lu Owo+ID4gPiBAQCAtMTM3LDggKzE0Niw4IEBAIHN0YXRpYyBpbnQgZHdfcGNpZV9lcF9vdXRib3Vu ZF9hdHUoc3RydWN0Cj4gPiBkd19wY2llX2VwICplcCwgcGh5c19hZGRyX3QgcGh5c19hZGRyLAo+ ID4gPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gIAl9Cj4gPiA+Cj4gPiA+IC0JZHdfcGNpZV9w cm9nX291dGJvdW5kX2F0dShwY2ksIGZyZWVfd2luLCBQQ0lFX0FUVV9UWVBFX01FTSwKPiA+ID4g LQkJCQkgIHBoeXNfYWRkciwgcGNpX2FkZHIsIHNpemUpOwo+ID4gPiArCWR3X3BjaWVfcHJvZ19l cF9vdXRib3VuZF9hdHUocGNpLCBmdW5jX25vLCBmcmVlX3dpbiwKPiA+IFBDSUVfQVRVX1RZUEVf TUVNLAo+ID4gPiArCQkJCSAgICAgcGh5c19hZGRyLCBwY2lfYWRkciwgc2l6ZSk7Cj4gPiA+Cj4g PiA+ICAJc2V0X2JpdChmcmVlX3dpbiwgZXAtPm9iX3dpbmRvd19tYXApOwo+ID4gPiAgCWVwLT5v dXRib3VuZF9hZGRyW2ZyZWVfd2luXSA9IHBoeXNfYWRkcjsgQEAgLTE1NCw3ICsxNjMsNyBAQAo+ ID4gc3RhdGljCj4gPiA+IHZvaWQgZHdfcGNpZV9lcF9jbGVhcl9iYXIoc3RydWN0IHBjaV9lcGMg KmVwYywgdTggZnVuY19ubywKPiA+ID4gIAllbnVtIHBjaV9iYXJubyBiYXIgPSBlcGZfYmFyLT5i YXJubzsKPiA+ID4gIAl1MzIgYXR1X2luZGV4ID0gZXAtPmJhcl90b19hdHVbYmFyXTsKPiA+ID4K PiA+ID4gLQlfX2R3X3BjaWVfZXBfcmVzZXRfYmFyKHBjaSwgYmFyLCBlcGZfYmFyLT5mbGFncyk7 Cj4gPiA+ICsJX19kd19wY2llX2VwX3Jlc2V0X2JhcihwY2ksIGZ1bmNfbm8sIGJhciwgZXBmX2Jh ci0+ZmxhZ3MpOwo+ID4gPgo+ID4gPiAgCWR3X3BjaWVfZGlzYWJsZV9hdHUocGNpLCBhdHVfaW5k ZXgsIERXX1BDSUVfUkVHSU9OX0lOQk9VTkQpOwo+ID4gPiAgCWNsZWFyX2JpdChhdHVfaW5kZXgs IGVwLT5pYl93aW5kb3dfbWFwKTsgQEAgLTE3MCwxNCArMTc5LDE2IEBACj4gPiA+IHN0YXRpYyBp bnQgZHdfcGNpZV9lcF9zZXRfYmFyKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8sCj4g PiA+ICAJc2l6ZV90IHNpemUgPSBlcGZfYmFyLT5zaXplOwo+ID4gPiAgCWludCBmbGFncyA9IGVw Zl9iYXItPmZsYWdzOwo+ID4gPiAgCWVudW0gZHdfcGNpZV9hc190eXBlIGFzX3R5cGU7Cj4gPiA+ IC0JdTMyIHJlZyA9IFBDSV9CQVNFX0FERFJFU1NfMCArICg0ICogYmFyKTsKPiA+ID4gKwl1MzIg cGZfYmFzZSA9IGZ1bmNfbm8gKiBlcGMtPnBmX29mZnNldDsKPiA+ID4gKwl1MzIgcmVnID0gUENJ X0JBU0VfQUREUkVTU18wICsgKDQgKiBiYXIpICsgcGZfYmFzZTsKPiA+ID4KPiA+ID4gIAlpZiAo IShmbGFncyAmIFBDSV9CQVNFX0FERFJFU1NfU1BBQ0UpKQo+ID4gPiAgCQlhc190eXBlID0gRFdf UENJRV9BU19NRU07Cj4gPiA+ICAJZWxzZQo+ID4gPiAgCQlhc190eXBlID0gRFdfUENJRV9BU19J TzsKPiA+ID4KPiA+ID4gLQlyZXQgPSBkd19wY2llX2VwX2luYm91bmRfYXR1KGVwLCBiYXIsIGVw Zl9iYXItPnBoeXNfYWRkciwgYXNfdHlwZSk7Cj4gPiA+ICsJcmV0ID0gZHdfcGNpZV9lcF9pbmJv dW5kX2F0dShlcCwgZnVuY19ubywgYmFyLAo+ID4gPiArCQkJCSAgICAgZXBmX2Jhci0+cGh5c19h ZGRyLCBhc190eXBlKTsKPiA+ID4gIAlpZiAocmV0KQo+ID4gPiAgCQlyZXR1cm4gcmV0Owo+ID4g Pgo+ID4gPiBAQCAtMjM1LDcgKzI0Niw3IEBAIHN0YXRpYyBpbnQgZHdfcGNpZV9lcF9tYXBfYWRk cihzdHJ1Y3QgcGNpX2VwYwo+ID4gKmVwYywgdTggZnVuY19ubywKPiA+ID4gIAlzdHJ1Y3QgZHdf cGNpZV9lcCAqZXAgPSBlcGNfZ2V0X2RydmRhdGEoZXBjKTsKPiA+ID4gIAlzdHJ1Y3QgZHdfcGNp ZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX2VwKGVwKTsKPiA+ID4KPiA+ID4gLQlyZXQgPSBkd19w Y2llX2VwX291dGJvdW5kX2F0dShlcCwgYWRkciwgcGNpX2FkZHIsIHNpemUpOwo+ID4gPiArCXJl dCA9IGR3X3BjaWVfZXBfb3V0Ym91bmRfYXR1KGVwLCBmdW5jX25vLCBhZGRyLCBwY2lfYWRkciwg c2l6ZSk7Cj4gPiA+ICAJaWYgKHJldCkgewo+ID4gPiAgCQlkZXZfZXJyKHBjaS0+ZGV2LCAiRmFp bGVkIHRvIGVuYWJsZSBhZGRyZXNzXG4iKTsKPiA+ID4gIAkJcmV0dXJuIHJldDsKPiA+ID4gQEAg LTI0OCwxMiArMjU5LDEzIEBAIHN0YXRpYyBpbnQgZHdfcGNpZV9lcF9nZXRfbXNpKHN0cnVjdCBw Y2lfZXBjCj4gPiA+ICplcGMsIHU4IGZ1bmNfbm8pICB7Cj4gPiA+ICAJc3RydWN0IGR3X3BjaWVf ZXAgKmVwID0gZXBjX2dldF9kcnZkYXRhKGVwYyk7Cj4gPiA+ICAJc3RydWN0IGR3X3BjaWUgKnBj aSA9IHRvX2R3X3BjaWVfZnJvbV9lcChlcCk7Cj4gPiA+ICsJdTMyIHBmX2Jhc2UgPSBmdW5jX25v ICogZXBjLT5wZl9vZmZzZXQ7Cj4gPiA+ICAJdTMyIHZhbCwgcmVnOwo+ID4gPgo+ID4gPiAgCWlm ICghZXAtPm1zaV9jYXApCj4gPiA+ICAJCXJldHVybiAtRUlOVkFMOwo+ID4gPgo+ID4gPiAtCXJl ZyA9IGVwLT5tc2lfY2FwICsgUENJX01TSV9GTEFHUzsKPiA+ID4gKwlyZWcgPSBlcC0+bXNpX2Nh cCArIHBmX2Jhc2UgKyBQQ0lfTVNJX0ZMQUdTOwo+ID4gPiAgCXZhbCA9IGR3X3BjaWVfcmVhZHdf ZGJpKHBjaSwgcmVnKTsKPiA+ID4gIAlpZiAoISh2YWwgJiBQQ0lfTVNJX0ZMQUdTX0VOQUJMRSkp Cj4gPiA+ICAJCXJldHVybiAtRUlOVkFMOwo+ID4gPiBAQCAtMjY3LDEyICsyNzksMTMgQEAgc3Rh dGljIGludCBkd19wY2llX2VwX3NldF9tc2koc3RydWN0IHBjaV9lcGMKPiA+ID4gKmVwYywgdTgg ZnVuY19ubywgdTggaW50ZXJydXB0cykgIHsKPiA+ID4gIAlzdHJ1Y3QgZHdfcGNpZV9lcCAqZXAg PSBlcGNfZ2V0X2RydmRhdGEoZXBjKTsKPiA+ID4gIAlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9f ZHdfcGNpZV9mcm9tX2VwKGVwKTsKPiA+ID4gKwl1MzIgcGZfYmFzZSA9IGZ1bmNfbm8gKiBlcGMt PnBmX29mZnNldDsKPiA+ID4gIAl1MzIgdmFsLCByZWc7Cj4gPiA+Cj4gPiA+ICAJaWYgKCFlcC0+ bXNpX2NhcCkKPiA+ID4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+Cj4gPiA+IC0JcmVnID0gZXAt Pm1zaV9jYXAgKyBQQ0lfTVNJX0ZMQUdTOwo+ID4gPiArCXJlZyA9IGVwLT5tc2lfY2FwICsgcGZf YmFzZSArIFBDSV9NU0lfRkxBR1M7Cj4gPiA+ICAJdmFsID0gZHdfcGNpZV9yZWFkd19kYmkocGNp LCByZWcpOwo+ID4gPiAgCXZhbCAmPSB+UENJX01TSV9GTEFHU19RTUFTSzsKPiA+ID4gIAl2YWwg fD0gKGludGVycnVwdHMgPDwgMSkgJiBQQ0lfTVNJX0ZMQUdTX1FNQVNLOyBAQCAtMjg3LDEyICsz MDAsMTMKPiA+ID4gQEAgc3RhdGljIGludCBkd19wY2llX2VwX2dldF9tc2l4KHN0cnVjdCBwY2lf ZXBjICplcGMsIHU4IGZ1bmNfbm8pICB7Cj4gPiA+ICAJc3RydWN0IGR3X3BjaWVfZXAgKmVwID0g ZXBjX2dldF9kcnZkYXRhKGVwYyk7Cj4gPiA+ICAJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3 X3BjaWVfZnJvbV9lcChlcCk7Cj4gPiA+ICsJdTMyIHBmX2Jhc2UgPSBmdW5jX25vICogZXBjLT5w Zl9vZmZzZXQ7Cj4gPiA+ICAJdTMyIHZhbCwgcmVnOwo+ID4gPgo+ID4gPiAgCWlmICghZXAtPm1z aXhfY2FwKQo+ID4gPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4KPiA+ID4gLQlyZWcgPSBlcC0+ bXNpeF9jYXAgKyBQQ0lfTVNJWF9GTEFHUzsKPiA+ID4gKwlyZWcgPSBlcC0+bXNpeF9jYXAgKyBw Zl9iYXNlICsgUENJX01TSVhfRkxBR1M7Cj4gPiA+ICAJdmFsID0gZHdfcGNpZV9yZWFkd19kYmko cGNpLCByZWcpOwo+ID4gPiAgCWlmICghKHZhbCAmIFBDSV9NU0lYX0ZMQUdTX0VOQUJMRSkpCj4g PiA+ICAJCXJldHVybiAtRUlOVkFMOwo+ID4gPiBAQCAtMzA2LDEyICszMjAsMTMgQEAgc3RhdGlj IGludCBkd19wY2llX2VwX3NldF9tc2l4KHN0cnVjdCBwY2lfZXBjCj4gPiA+ICplcGMsIHU4IGZ1 bmNfbm8sIHUxNiBpbnRlcnJ1cHRzKSAgewo+ID4gPiAgCXN0cnVjdCBkd19wY2llX2VwICplcCA9 IGVwY19nZXRfZHJ2ZGF0YShlcGMpOwo+ID4gPiAgCXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19k d19wY2llX2Zyb21fZXAoZXApOwo+ID4gPiArCXUzMiBwZl9iYXNlID0gZnVuY19ubyAqIGVwYy0+ cGZfb2Zmc2V0Owo+ID4gPiAgCXUzMiB2YWwsIHJlZzsKPiA+ID4KPiA+ID4gIAlpZiAoIWVwLT5t c2l4X2NhcCkKPiA+ID4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+Cj4gPiA+IC0JcmVnID0gZXAt Pm1zaXhfY2FwICsgUENJX01TSVhfRkxBR1M7Cj4gPiA+ICsJcmVnID0gZXAtPm1zaXhfY2FwICsg cGZfYmFzZSArIFBDSV9NU0lYX0ZMQUdTOwo+ID4gPiAgCXZhbCA9IGR3X3BjaWVfcmVhZHdfZGJp KHBjaSwgcmVnKTsKPiA+ID4gIAl2YWwgJj0gflBDSV9NU0lYX0ZMQUdTX1FTSVpFOwo+ID4gPiAg CXZhbCB8PSBpbnRlcnJ1cHRzOwo+ID4gPiBAQCAtNDAwLDYgKzQxNSw3IEBAIGludCBkd19wY2ll X2VwX3JhaXNlX21zaV9pcnEoc3RydWN0IGR3X3BjaWVfZXAKPiA+ICplcCwgdTggZnVuY19ubywK PiA+ID4gIAl1bnNpZ25lZCBpbnQgYWxpZ25lZF9vZmZzZXQ7Cj4gPiA+ICAJdTE2IG1zZ19jdHJs LCBtc2dfZGF0YTsKPiA+ID4gIAl1MzIgbXNnX2FkZHJfbG93ZXIsIG1zZ19hZGRyX3VwcGVyLCBy ZWc7Cj4gPiA+ICsJdTMyIHBmX2Jhc2UgPSBmdW5jX25vICogZXBjLT5wZl9vZmZzZXQ7Cj4gPiA+ ICAJdTY0IG1zZ19hZGRyOwo+ID4gPiAgCWJvb2wgaGFzX3VwcGVyOwo+ID4gPiAgCWludCByZXQ7 Cj4gPiA+IEBAIC00MDgsMTkgKzQyNCwxOSBAQCBpbnQgZHdfcGNpZV9lcF9yYWlzZV9tc2lfaXJx KHN0cnVjdAo+ID4gZHdfcGNpZV9lcCAqZXAsIHU4IGZ1bmNfbm8sCj4gPiA+ICAJCXJldHVybiAt RUlOVkFMOwo+ID4gPgo+ID4gPiAgCS8qIFJhaXNlIE1TSSBwZXIgdGhlIFBDSSBMb2NhbCBCdXMg U3BlY2lmaWNhdGlvbiBSZXZpc2lvbiAzLjAsIDYuOC4xLiAqLwo+ID4gPiAtCXJlZyA9IGVwLT5t c2lfY2FwICsgUENJX01TSV9GTEFHUzsKPiA+ID4gKwlyZWcgPSBlcC0+bXNpX2NhcCArIHBmX2Jh c2UgKyBQQ0lfTVNJX0ZMQUdTOwo+ID4gPiAgCW1zZ19jdHJsID0gZHdfcGNpZV9yZWFkd19kYmko cGNpLCByZWcpOwo+ID4gPiAgCWhhc191cHBlciA9ICEhKG1zZ19jdHJsICYgUENJX01TSV9GTEFH U182NEJJVCk7Cj4gPiA+IC0JcmVnID0gZXAtPm1zaV9jYXAgKyBQQ0lfTVNJX0FERFJFU1NfTE87 Cj4gPiA+ICsJcmVnID0gZXAtPm1zaV9jYXAgKyBwZl9iYXNlICsgUENJX01TSV9BRERSRVNTX0xP Owo+ID4gPiAgCW1zZ19hZGRyX2xvd2VyID0gZHdfcGNpZV9yZWFkbF9kYmkocGNpLCByZWcpOwo+ ID4gPiAgCWlmIChoYXNfdXBwZXIpIHsKPiA+ID4gLQkJcmVnID0gZXAtPm1zaV9jYXAgKyBQQ0lf TVNJX0FERFJFU1NfSEk7Cj4gPiA+ICsJCXJlZyA9IGVwLT5tc2lfY2FwICsgcGZfYmFzZSArIFBD SV9NU0lfQUREUkVTU19ISTsKPiA+ID4gIAkJbXNnX2FkZHJfdXBwZXIgPSBkd19wY2llX3JlYWRs X2RiaShwY2ksIHJlZyk7Cj4gPiA+IC0JCXJlZyA9IGVwLT5tc2lfY2FwICsgUENJX01TSV9EQVRB XzY0Owo+ID4gPiArCQlyZWcgPSBlcC0+bXNpX2NhcCArIHBmX2Jhc2UgKyBQQ0lfTVNJX0RBVEFf NjQ7Cj4gPiA+ICAJCW1zZ19kYXRhID0gZHdfcGNpZV9yZWFkd19kYmkocGNpLCByZWcpOwo+ID4g PiAgCX0gZWxzZSB7Cj4gPiA+ICAJCW1zZ19hZGRyX3VwcGVyID0gMDsKPiA+ID4gLQkJcmVnID0g ZXAtPm1zaV9jYXAgKyBQQ0lfTVNJX0RBVEFfMzI7Cj4gPiA+ICsJCXJlZyA9IGVwLT5tc2lfY2Fw ICsgcGZfYmFzZSArIFBDSV9NU0lfREFUQV8zMjsKPiA+ID4gIAkJbXNnX2RhdGEgPSBkd19wY2ll X3JlYWR3X2RiaShwY2ksIHJlZyk7Cj4gPiA+ICAJfQo+ID4gPiAgCWFsaWduZWRfb2Zmc2V0ID0g bXNnX2FkZHJfbG93ZXIgJiAoZXBjLT5tZW0tPnBhZ2Vfc2l6ZSAtIDEpOyBAQAo+ID4gPiAtNDM5 LDcgKzQ1NSw3IEBAIGludCBkd19wY2llX2VwX3JhaXNlX21zaV9pcnEoc3RydWN0IGR3X3BjaWVf ZXAgKmVwLAo+ID4gPiB1OCBmdW5jX25vLCAgfQo+ID4gPgo+ID4gPiAgaW50IGR3X3BjaWVfZXBf cmFpc2VfbXNpeF9pcnEoc3RydWN0IGR3X3BjaWVfZXAgKmVwLCB1OCBmdW5jX25vLAo+ID4gPiAt CQkJICAgICB1MTYgaW50ZXJydXB0X251bSkKPiA+ID4gKwkJCSAgICAgIHUxNiBpbnRlcnJ1cHRf bnVtKQo+ID4gPiAgewo+ID4gPiAgCXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zy b21fZXAoZXApOwo+ID4gPiAgCXN0cnVjdCBwY2lfZXBjICplcGMgPSBlcC0+ZXBjOwo+ID4gPiBA QCAtNDQ3LDE2ICs0NjMsMTcgQEAgaW50IGR3X3BjaWVfZXBfcmFpc2VfbXNpeF9pcnEoc3RydWN0 Cj4gPiBkd19wY2llX2VwICplcCwgdTggZnVuY19ubywKPiA+ID4gIAl1MzIgYmFyX2FkZHJfdXBw ZXIsIGJhcl9hZGRyX2xvd2VyOwo+ID4gPiAgCXUzMiBtc2dfYWRkcl91cHBlciwgbXNnX2FkZHJf bG93ZXI7Cj4gPiA+ICAJdTMyIHJlZywgbXNnX2RhdGEsIHZlY19jdHJsOwo+ID4gPiArCXUzMiBw Zl9iYXNlID0gZnVuY19ubyAqIGVwYy0+cGZfb2Zmc2V0Owo+ID4gPiAgCXU2NCB0YmxfYWRkciwg bXNnX2FkZHIsIHJlZ191NjQ7Cj4gPiA+ICAJdm9pZCBfX2lvbWVtICptc2l4X3RibDsKPiA+ID4g IAlpbnQgcmV0Owo+ID4gPgo+ID4gPiAtCXJlZyA9IGVwLT5tc2l4X2NhcCArIFBDSV9NU0lYX1RB QkxFOwo+ID4gPiArCXJlZyA9IGVwLT5tc2l4X2NhcCArIHBmX2Jhc2UgKyBQQ0lfTVNJWF9UQUJM RTsKPiA+ID4gIAl0Ymxfb2Zmc2V0ID0gZHdfcGNpZV9yZWFkbF9kYmkocGNpLCByZWcpOwo+ID4g PiAgCWJpciA9ICh0Ymxfb2Zmc2V0ICYgUENJX01TSVhfVEFCTEVfQklSKTsKPiA+ID4gIAl0Ymxf b2Zmc2V0ICY9IFBDSV9NU0lYX1RBQkxFX09GRlNFVDsKPiA+ID4KPiA+ID4gLQlyZWcgPSBQQ0lf QkFTRV9BRERSRVNTXzAgKyAoNCAqIGJpcik7Cj4gPiA+ICsJcmVnID0gUENJX0JBU0VfQUREUkVT U18wICsgcGZfYmFzZSArICg0ICogYmlyKTsKPiA+ID4gIAliYXJfYWRkcl91cHBlciA9IDA7Cj4g PiA+ICAJYmFyX2FkZHJfbG93ZXIgPSBkd19wY2llX3JlYWRsX2RiaShwY2ksIHJlZyk7Cj4gPiA+ ICAJcmVnX3U2NCA9IChiYXJfYWRkcl9sb3dlciAmIFBDSV9CQVNFX0FERFJFU1NfTUVNX1RZUEVf TUFTSyk7Cj4gPiBAQAo+ID4gPiAtNTkyLDEzICs2MDksMTcgQEAgaW50IGR3X3BjaWVfZXBfaW5p dChzdHJ1Y3QgZHdfcGNpZV9lcCAqZXApCj4gPiA+ICAJZXAtPmVwYyA9IGVwYzsKPiA+ID4gIAll cGNfc2V0X2RydmRhdGEoZXBjLCBlcCk7Cj4gPiA+Cj4gPiA+IC0JaWYgKGVwLT5vcHMtPmVwX2lu aXQpCj4gPiA+IC0JCWVwLT5vcHMtPmVwX2luaXQoZXApOwo+ID4gPiAtCj4gPiA+ICAJcmV0ID0g b2ZfcHJvcGVydHlfcmVhZF91OChucCwgIm1heC1mdW5jdGlvbnMiLCAmZXBjLT5tYXhfZnVuY3Rp b25zKTsKPiA+ID4gIAlpZiAocmV0IDwgMCkKPiA+ID4gIAkJZXBjLT5tYXhfZnVuY3Rpb25zID0g MTsKPiA+ID4KPiA+ID4gKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgInBmLW9mZnNl dCIsICZlcGMtPnBmX29mZnNldCk7Cj4gPiA+ICsJaWYgKHJldCA8IDApCj4gPiA+ICsJCWVwYy0+ cGZfb2Zmc2V0ID0gMDsKPiA+IAo+ID4gQmFkIHRoaW5ncyB3aWxsIGxpa2VseSBoYXBwZW4gaWYg bWF4X2Z1bmN0aW9ucyA+IDEgYW5kIHBmLW9mZnNldCBpc24ndCBzZXQuCj4gPiBJIHRoaW5rIHRo ZSBkcml2ZXIgc2hvdWxkIGJhaWwgaW4gdGhpcyBzaXR1YXRpb24uIEl0IHdvdWxkIGJlIHZlcnkg ZWFzeSBmb3IKPiA+IHNvbWVvbmUgdG8gbWlzY29uZmlndXJlIHRoaXMuCj4gWWVzLCB5b3UgYXJl IHJpZ2h0LCBidXQgaWYgdGhlIG1heC1mdW5jdGlvbnMgaGF2ZSBkZWZpbmVkIGluIERUUywgcmVx dWlyZSB0aGUgcGYtb2Zmc2V0Cj4gbXVzdCBkZWZpbmUgaW4gRFRTLCBJIGFtIG5vdCBzdXJlIHRo ZSBjb3JyZWN0IHZhbHVlIG9mIHBmLW9mZnNldGZvciBvdGhlciBwbGF0Zm9ybXMsIAo+IHNvIEkg dGhpbmsgdGhlIG1heC1mdW5jdGlvbnMgYW5kIHBmLW9mZnNldCBzaG91bGQgbm90IGhhdmUgdGhl IGRlcGVuZGVuY2UuCgpZZXMgeW91J3JlIGNvcnJlY3QuIEkgaGFkbid0IHJlYWxseSB0aG91Z2h0 IGFib3V0IHRoaXMgYmV5b25kIGxheWVyc2NhcGUuIEl0J3MKYWxzbyBwb3NzaWJsZSB0aGF0IG90 aGVyIGhhcmR3YXJlIGNvdWxkIHN1cHBvcnQgbXVsdGlwbGUgUEZzIHdpdGhvdXQgcmVseWluZyBv bgphbiBvZmZzZXQgYW5kIHBlcmhhcHMgZW1wbG95IHNvbWUgb3RoZXIgbWVjaGFuaXNtIHRvIGFj Y2VzcyBkaWZmZXJlbnQKZnVuY3Rpb25zLiBTbyB3aGlsc3QgdGhpcyBwcm9wZXJ0eSBjYW4gYmUg b3B0aW9uYWwgZm9yIHRoZSBtYWpvcml0eSBvZiBkd2MKY29udHJvbGxlcnMgLSBpdCBtdXN0IGJl IHNldCBhbmQgY2Fubm90IGJlIHplcm8gZm9yIGxheWVyc2NhcGUuCgpQZXJoYXBzIGluc2lkZSBs c19wY2llX2VwX2luaXQsIHlvdSBjYW4gc2V0IG1heF9mdW5jdGlvbnMgdG8gMSBpZiBwZl9vZmZz ZXQgaXMKMCBhbmQgcHJpbnQgYSBXQVJOIHRvIGV4cGxhaW4gd2h5PyAoT3IgbHNfcGNpZV9lcF9p bml0IHJldHVybnMgZmFpbHVyZSBhbmQKZHdfcGNpZV9lcF9pbml0IGNoZWNrcyBpdCBhbmQgYmFp bHMpLgoKVGhlIGFzc3VtcHRpb24gaXMgYmVpbmcgbWFkZSBoZXJlIHRoYXQgZnV0dXJlIGR3IGNv bnRyb2xsZXJzIG1heSBhbHNvIHVzZQpwZl9vZmZzZXQgKGlzIHRoaXMgbGlrZWx5PykgLSBvdGhl cndpc2Ugd2h5IGlzIHRoaXMgaW4gcGNpZS1kZXNpZ253YXJlLWVwLmMgYW5kCm5vdCBwY2ktbGF5 ZXJzY2FwZS1lcC5jIGFuZCB3aHkgaXMgdGhpcyB2YWx1ZSBub3QganVzdCBoYXJkLWNvZGVkIGZv ciBscD8KCgo+IGV2ZW4gdGhvdWdoIEkgZGlkbid0IGRlZmluZSBwZi1vZmZzZXQgd2hlbiBJIGRl ZmluZWQgbWF4LWZ1bmN0aW9ucywgdGhlIHBmLW9mZnNldCBpcyAwLCAKPiB0aGUgRFdDIGVwIGRy aXZlciBjYW4gY29udGludWUgcnVuIHRoZSBwcm9ncmVzcyBvZiBJTklUIGJ1dCBub3QgcmV0dXJu LCBvZiBjb3Vyc2UsIAo+IHRodXMgdGhlIFBGMSB3aWxsIG5vdCB3b3JrLCBJIGRvbid0IGtub3cg d2hpY2ggd2F5IGlzIGJldHRlci4KPiA+IAo+ID4gCj4gPiA+ICsKPiA+ID4gKwlpZiAoZXAtPm9w cy0+ZXBfaW5pdCkKPiA+ID4gKwkJZXAtPm9wcy0+ZXBfaW5pdChlcCk7Cj4gPiA+ICsKPiA+ID4g IAlyZXQgPSBfX3BjaV9lcGNfbWVtX2luaXQoZXBjLCBlcC0+cGh5c19iYXNlLCBlcC0+YWRkcl9z aXplLAo+ID4gPiAgCQkJCSBlcC0+cGFnZV9zaXplKTsKPiA+ID4gIAlpZiAocmV0IDwgMCkgewo+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253 YXJlLmMKPiA+ID4gYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUu Ywo+ID4gPiBpbmRleCA3ZDI1MTAyLi5jOTljZWU0IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJz L3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUuYwo+ID4gPiArKysgYi9kcml2ZXJz L3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUuYwo+ID4gPiBAQCAtMTU4LDYgKzE1 OCw0MyBAQCBzdGF0aWMgdm9pZCBkd19wY2llX3dyaXRlbF9vYl91bnJvbGwoc3RydWN0Cj4gPiBk d19wY2llICpwY2ksIHUzMiBpbmRleCwgdTMyIHJlZywKPiA+ID4gIAlkd19wY2llX3dyaXRlbF9h dHUocGNpLCBvZmZzZXQgKyByZWcsIHZhbCk7ICB9Cj4gPiA+Cj4gPiA+ICtzdGF0aWMgdm9pZCBk d19wY2llX3Byb2dfZXBfb3V0Ym91bmRfYXR1X3Vucm9sbChzdHJ1Y3QgZHdfcGNpZSAqcGNpLCB1 OAo+ID4gZnVuY19ubywKPiA+ID4gKwkJCQkJCWludCBpbmRleCwgaW50IHR5cGUsCj4gPiA+ICsJ CQkJCQl1NjQgY3B1X2FkZHIsIHU2NCBwY2lfYWRkciwKPiA+ID4gKwkJCQkJCXUzMiBzaXplKQo+ ID4gPiArewo+ID4gPiArCXUzMiByZXRyaWVzLCB2YWw7Cj4gPiA+ICsKPiA+ID4gKwlkd19wY2ll X3dyaXRlbF9vYl91bnJvbGwocGNpLCBpbmRleCwgUENJRV9BVFVfVU5SX0xPV0VSX0JBU0UsCj4g PiA+ICsJCQkJIGxvd2VyXzMyX2JpdHMoY3B1X2FkZHIpKTsKPiA+ID4gKwlkd19wY2llX3dyaXRl bF9vYl91bnJvbGwocGNpLCBpbmRleCwgUENJRV9BVFVfVU5SX1VQUEVSX0JBU0UsCj4gPiA+ICsJ CQkJIHVwcGVyXzMyX2JpdHMoY3B1X2FkZHIpKTsKPiA+ID4gKwlkd19wY2llX3dyaXRlbF9vYl91 bnJvbGwocGNpLCBpbmRleCwgUENJRV9BVFVfVU5SX0xJTUlULAo+ID4gPiArCQkJCSBsb3dlcl8z Ml9iaXRzKGNwdV9hZGRyICsgc2l6ZSAtIDEpKTsKPiA+ID4gKwlkd19wY2llX3dyaXRlbF9vYl91 bnJvbGwocGNpLCBpbmRleCwgUENJRV9BVFVfVU5SX0xPV0VSX1RBUkdFVCwKPiA+ID4gKwkJCQkg bG93ZXJfMzJfYml0cyhwY2lfYWRkcikpOwo+ID4gPiArCWR3X3BjaWVfd3JpdGVsX29iX3Vucm9s bChwY2ksIGluZGV4LCBQQ0lFX0FUVV9VTlJfVVBQRVJfVEFSR0VULAo+ID4gPiArCQkJCSB1cHBl cl8zMl9iaXRzKHBjaV9hZGRyKSk7Cj4gPiA+ICsJZHdfcGNpZV93cml0ZWxfb2JfdW5yb2xsKHBj aSwgaW5kZXgsIFBDSUVfQVRVX1VOUl9SRUdJT05fQ1RSTDEsCj4gPiA+ICsJCQkJIHR5cGUgfCBQ Q0lFX0FUVV9GVU5DX05VTShmdW5jX25vKSk7Cj4gPiAKPiA+IFdpdGggdGhlIGV4Y2VwdGlvbiBv ZiB0aGlzIGxpbmUsIHRoZSByZXN0IG9mIHRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvCj4g PiBkd19wY2llX3Byb2dfb3V0Ym91bmRfYXR1X3Vucm9sbC4KPiBZZXMsIEkgY2FuIGludGVncmF0 ZSB0aGUgc2FtZSBjb2RlLCBidXQgSSB0aGluayB3ZSdkIGJldHRlciB1c2UgdGhlIGRpZmZlcmVu dCBvdXRib3VuZCAKPiB3aW5kb3cgc2V0IGZ1bmN0aW9uIGJldHdlZW4gUkMgYW5kIEVQLCBiZWNh dXNlIHRoZSBSQyBkb24ndCBuZWVkIHRoZSBmdW5jX251bSBwYXJhbWV0ZXIuCgoKCj4gPiAKPiA+ ID4gKwlkd19wY2llX3dyaXRlbF9vYl91bnJvbGwocGNpLCBpbmRleCwgUENJRV9BVFVfVU5SX1JF R0lPTl9DVFJMMiwKPiA+ID4gKwkJCQkgUENJRV9BVFVfRU5BQkxFKTsKPiA+ID4gKwo+ID4gPiAr CS8qCj4gPiA+ICsJICogTWFrZSBzdXJlIEFUVSBlbmFibGUgdGFrZXMgZWZmZWN0IGJlZm9yZSBh bnkgc3Vic2VxdWVudCBjb25maWcKPiA+ID4gKwkgKiBhbmQgSS9PIGFjY2Vzc2VzLgo+ID4gPiAr CSAqLwo+ID4gPiArCWZvciAocmV0cmllcyA9IDA7IHJldHJpZXMgPCBMSU5LX1dBSVRfTUFYX0lB VFVfUkVUUklFUzsgcmV0cmllcysrKSB7Cj4gPiA+ICsJCXZhbCA9IGR3X3BjaWVfcmVhZGxfb2Jf dW5yb2xsKHBjaSwgaW5kZXgsCj4gPiA+ICsJCQkJCSAgICAgIFBDSUVfQVRVX1VOUl9SRUdJT05f Q1RSTDIpOwo+ID4gPiArCQlpZiAodmFsICYgUENJRV9BVFVfRU5BQkxFKQo+ID4gPiArCQkJcmV0 dXJuOwo+ID4gPiArCj4gPiA+ICsJCW1kZWxheShMSU5LX1dBSVRfSUFUVSk7Cj4gPiA+ICsJfQo+ ID4gPiArCWRldl9lcnIocGNpLT5kZXYsICJPdXRib3VuZCBpQVRVIGlzIG5vdCBiZWluZyBlbmFi bGVkXG4iKTsgfQo+ID4gPiArCj4gPiA+ICBzdGF0aWMgdm9pZCBkd19wY2llX3Byb2dfb3V0Ym91 bmRfYXR1X3Vucm9sbChzdHJ1Y3QgZHdfcGNpZSAqcGNpLCBpbnQKPiA+IGluZGV4LAo+ID4gPiAg CQkJCQkgICAgIGludCB0eXBlLCB1NjQgY3B1X2FkZHIsCj4gPiA+ICAJCQkJCSAgICAgdTY0IHBj aV9hZGRyLCB1MzIgc2l6ZSkKPiA+ID4gQEAgLTE5NCw2ICsyMzEsNTEgQEAgc3RhdGljIHZvaWQK PiA+IGR3X3BjaWVfcHJvZ19vdXRib3VuZF9hdHVfdW5yb2xsKHN0cnVjdCBkd19wY2llICpwY2ks IGludCBpbmRleCwKPiA+ID4gIAlkZXZfZXJyKHBjaS0+ZGV2LCAiT3V0Ym91bmQgaUFUVSBpcyBu b3QgYmVpbmcgZW5hYmxlZFxuIik7ICB9Cj4gPiA+Cj4gPiA+ICt2b2lkIGR3X3BjaWVfcHJvZ19l cF9vdXRib3VuZF9hdHUoc3RydWN0IGR3X3BjaWUgKnBjaSwgdTggZnVuY19ubywgaW50Cj4gPiBp bmRleCwKPiA+ID4gKwkJCQkgIGludCB0eXBlLCB1NjQgY3B1X2FkZHIsIHU2NCBwY2lfYWRkciwK PiA+ID4gKwkJCQkgIHUzMiBzaXplKQo+ID4gPiArewo+ID4gPiArCXUzMiByZXRyaWVzLCB2YWw7 Cj4gPiA+ICsKPiA+ID4gKwlpZiAocGNpLT5vcHMtPmNwdV9hZGRyX2ZpeHVwKQo+ID4gPiArCQlj cHVfYWRkciA9IHBjaS0+b3BzLT5jcHVfYWRkcl9maXh1cChwY2ksIGNwdV9hZGRyKTsKPiA+ID4g Kwo+ID4gPiArCWlmIChwY2ktPmlhdHVfdW5yb2xsX2VuYWJsZWQpIHsKPiA+ID4gKwkJZHdfcGNp ZV9wcm9nX2VwX291dGJvdW5kX2F0dV91bnJvbGwocGNpLCBmdW5jX25vLCBpbmRleCwgdHlwZSwK PiA+ID4gKwkJCQkJCSAgICBjcHVfYWRkciwgcGNpX2FkZHIsIHNpemUpOwo+ID4gPiArCQlyZXR1 cm47Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwgUENJ RV9BVFVfVklFV1BPUlQsCj4gPiA+ICsJCQkgICBQQ0lFX0FUVV9SRUdJT05fT1VUQk9VTkQgfCBp bmRleCk7Cj4gPiA+ICsJZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwgUENJRV9BVFVfTE9XRVJfQkFT RSwKPiA+ID4gKwkJCSAgIGxvd2VyXzMyX2JpdHMoY3B1X2FkZHIpKTsKPiA+ID4gKwlkd19wY2ll X3dyaXRlbF9kYmkocGNpLCBQQ0lFX0FUVV9VUFBFUl9CQVNFLAo+ID4gPiArCQkJICAgdXBwZXJf MzJfYml0cyhjcHVfYWRkcikpOwo+ID4gPiArCWR3X3BjaWVfd3JpdGVsX2RiaShwY2ksIFBDSUVf QVRVX0xJTUlULAo+ID4gPiArCQkJICAgbG93ZXJfMzJfYml0cyhjcHVfYWRkciArIHNpemUgLSAx KSk7Cj4gPiA+ICsJZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwgUENJRV9BVFVfTE9XRVJfVEFSR0VU LAo+ID4gPiArCQkJICAgbG93ZXJfMzJfYml0cyhwY2lfYWRkcikpOwo+ID4gPiArCWR3X3BjaWVf d3JpdGVsX2RiaShwY2ksIFBDSUVfQVRVX1VQUEVSX1RBUkdFVCwKPiA+ID4gKwkJCSAgIHVwcGVy XzMyX2JpdHMocGNpX2FkZHIpKTsKPiA+ID4gKwlkd19wY2llX3dyaXRlbF9kYmkocGNpLCBQQ0lF X0FUVV9DUjEsIHR5cGUgfAo+ID4gPiArCQkJICAgUENJRV9BVFVfRlVOQ19OVU0oZnVuY19ubykp Owo+ID4gCj4gPiBUaGUgc2FtZSBoZXJlLCB0aGlzIGlzIGlkZW50aWNhbCB0byBkd19wY2llX3By b2dfb3V0Ym91bmRfYXR1IHdpdGggdGhlCj4gPiBleGNlcHRpb24gb2YgdGhpcyBsaW5lLgo+ID4g Cj4gPiBJcyB0aGVyZSBhIHdheSB5b3UgY2FuIGF2b2lkIGFsbCBvZiB0aGlzIGR1cGxpY2F0ZWQg Y29kZT8KPiBBcyBhYm92ZSwgSSBjYW4gaW50ZWdyYXRlIHRoZSBzYW1lIGNvZGUsIGJ1dCBJIGtl ZXAgdG8gdGhpbmsgdGhlIGRpZmZlcmVudCBvdXRib3VuZCAKPiBXaW5kb3cgc2V0IGZ1bmN0aW9u IHNob3VsZCBiZSB1c2VkIGJldHdlZW4gUkMgYW5kIEVQLgoKT3IsIGlzIGl0IHBvc3NpYmxlIHRv IGtlZXAgYW5kIHVzZSB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zLCBidXQgdXNlIHRoZW0KZGlmZmVy ZW50bHksIGUuZzoKCgpAQCAtMTM3LDggKzE0Niw4IEBAIHN0YXRpYyBpbnQgZHdfcGNpZV9lcF9v dXRib3VuZF9hdHUoc3RydWN0IGR3X3BjaWVfZXAgKmVwLCBwaHlzX2FkZHJfdCBwaHlzX2FkZHIs CiAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKICAgICAgICB9CgotICAgICAgIGR3X3Bj aWVfcHJvZ19vdXRib3VuZF9hdHUocGNpLCBmcmVlX3dpbiwgUENJRV9BVFVfVFlQRV9NRU0sCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaHlzX2FkZHIsIHBjaV9hZGRyLCBzaXpl KTsKKyAgICAgICBkd19wY2llX3Byb2dfb3V0Ym91bmRfYXR1KHBjaSwgZnJlZV93aW4sIFBDSUVf QVRVX1RZUEVfTUVNX0ZVTkMoZnVuY19ubyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwaHlzX2FkZHIsIHBjaV9hZGRyLCBzaXplKTsKCiAgICAgICAgc2V0X2JpdChmcmVl X3dpbiwgZXAtPm9iX3dpbmRvd19tYXApOwogICAgICAgIGVwLT5vdXRib3VuZF9hZGRyW2ZyZWVf d2luXSA9IHBoeXNfYWRkcjsKCgpTdXBwb3J0ZWQgd2l0aDoKCiNkZWZpbmUgUENJRV9BVFVfVFlQ RV9NRU0gICAgICAgICAgICAgICAweDAKI2RlZmluZSBQQ0lFX0FUVV9UWVBFX01FTV9GVU5DKGZ1 bmNfbm8pIChQQ0lFX0FUVV9UWVBFX01FTSB8IFBDSUVfQVRVX0ZVTkNfTlVNKGZ1bmNfbm8pKQoK ClRoaXMgaXMganVzdCBhIHN1Z2dlc3Rpb24sIGJ1dCBJJ20ga2VlbiB0byBhdm9pZCBjb2RlIGR1 cGxpY2F0aW9uLgoKPiA+IAo+ID4gVGhhbmtzLAo+ID4gCj4gPiBBbmRyZXcgTXVycmF5Cj4gPiAK PiA+ID4gKwlkd19wY2llX3dyaXRlbF9kYmkocGNpLCBQQ0lFX0FUVV9DUjIsIFBDSUVfQVRVX0VO QUJMRSk7Cj4gPiA+ICsKPiA+ID4gKwkvKgo+ID4gPiArCSAqIE1ha2Ugc3VyZSBBVFUgZW5hYmxl IHRha2VzIGVmZmVjdCBiZWZvcmUgYW55IHN1YnNlcXVlbnQgY29uZmlnCj4gPiA+ICsJICogYW5k IEkvTyBhY2Nlc3Nlcy4KPiA+ID4gKwkgKi8KPiA+ID4gKwlmb3IgKHJldHJpZXMgPSAwOyByZXRy aWVzIDwgTElOS19XQUlUX01BWF9JQVRVX1JFVFJJRVM7IHJldHJpZXMrKykgewo+ID4gPiArCQl2 YWwgPSBkd19wY2llX3JlYWRsX2RiaShwY2ksIFBDSUVfQVRVX0NSMik7Cj4gPiA+ICsJCWlmICh2 YWwgJiBQQ0lFX0FUVV9FTkFCTEUpCj4gPiA+ICsJCQlyZXR1cm47Cj4gPiA+ICsKPiA+ID4gKwkJ bWRlbGF5KExJTktfV0FJVF9JQVRVKTsKPiA+ID4gKwl9Cj4gPiA+ICsJZGV2X2VycihwY2ktPmRl diwgIk91dGJvdW5kIGlBVFUgaXMgbm90IGJlaW5nIGVuYWJsZWRcbiIpOyB9Cj4gPiA+ICsKPiA+ ID4gIHZvaWQgZHdfcGNpZV9wcm9nX291dGJvdW5kX2F0dShzdHJ1Y3QgZHdfcGNpZSAqcGNpLCBp bnQgaW5kZXgsIGludCB0eXBlLAo+ID4gPiAgCQkJICAgICAgIHU2NCBjcHVfYWRkciwgdTY0IHBj aV9hZGRyLCB1MzIgc2l6ZSkgIHsgQEAgLTI1Miw4Cj4gPiArMzM0LDgKPiA+ID4gQEAgc3RhdGlj IHZvaWQgZHdfcGNpZV93cml0ZWxfaWJfdW5yb2xsKHN0cnVjdCBkd19wY2llICpwY2ksIHUzMiBp bmRleCwKPiA+IHUzMiByZWcsCj4gPiA+ICAJZHdfcGNpZV93cml0ZWxfYXR1KHBjaSwgb2Zmc2V0 ICsgcmVnLCB2YWwpOyAgfQo+ID4gPgo+ID4gPiAtc3RhdGljIGludCBkd19wY2llX3Byb2dfaW5i b3VuZF9hdHVfdW5yb2xsKHN0cnVjdCBkd19wY2llICpwY2ksIGludCBpbmRleCwKPiA+ID4gLQkJ CQkJICAgaW50IGJhciwgdTY0IGNwdV9hZGRyLAo+ID4gPiArc3RhdGljIGludCBkd19wY2llX3By b2dfaW5ib3VuZF9hdHVfdW5yb2xsKHN0cnVjdCBkd19wY2llICpwY2ksIHU4Cj4gPiBmdW5jX25v LAo+ID4gPiArCQkJCQkgICBpbnQgaW5kZXgsIGludCBiYXIsIHU2NCBjcHVfYWRkciwKPiA+ID4g IAkJCQkJICAgZW51bSBkd19wY2llX2FzX3R5cGUgYXNfdHlwZSkgIHsKPiA+ID4gIAlpbnQgdHlw ZTsKPiA+ID4gQEAgLTI3NSw4ICszNTcsMTAgQEAgc3RhdGljIGludCBkd19wY2llX3Byb2dfaW5i b3VuZF9hdHVfdW5yb2xsKHN0cnVjdAo+ID4gZHdfcGNpZSAqcGNpLCBpbnQgaW5kZXgsCj4gPiA+ ICAJCXJldHVybiAtRUlOVkFMOwo+ID4gPiAgCX0KPiA+ID4KPiA+ID4gLQlkd19wY2llX3dyaXRl bF9pYl91bnJvbGwocGNpLCBpbmRleCwgUENJRV9BVFVfVU5SX1JFR0lPTl9DVFJMMSwKPiA+IHR5 cGUpOwo+ID4gPiArCWR3X3BjaWVfd3JpdGVsX2liX3Vucm9sbChwY2ksIGluZGV4LCBQQ0lFX0FU VV9VTlJfUkVHSU9OX0NUUkwxLAo+ID4gdHlwZSB8Cj4gPiA+ICsJCQkJIFBDSUVfQVRVX0ZVTkNf TlVNKGZ1bmNfbm8pKTsKPiA+ID4gIAlkd19wY2llX3dyaXRlbF9pYl91bnJvbGwocGNpLCBpbmRl eCwgUENJRV9BVFVfVU5SX1JFR0lPTl9DVFJMMiwKPiA+ID4gKwkJCQkgUENJRV9BVFVfRlVOQ19O VU1fTUFUQ0hfRU4gfAo+ID4gPiAgCQkJCSBQQ0lFX0FUVV9FTkFCTEUgfAo+ID4gPiAgCQkJCSBQ Q0lFX0FUVV9CQVJfTU9ERV9FTkFCTEUgfCAoYmFyIDw8IDgpKTsKPiA+ID4KPiA+ID4gQEAgLTI5 NywxNCArMzgxLDE1IEBAIHN0YXRpYyBpbnQKPiA+IGR3X3BjaWVfcHJvZ19pbmJvdW5kX2F0dV91 bnJvbGwoc3RydWN0IGR3X3BjaWUgKnBjaSwgaW50IGluZGV4LAo+ID4gPiAgCXJldHVybiAtRUJV U1k7Cj4gPiA+ICB9Cj4gPiA+Cj4gPiA+IC1pbnQgZHdfcGNpZV9wcm9nX2luYm91bmRfYXR1KHN0 cnVjdCBkd19wY2llICpwY2ksIGludCBpbmRleCwgaW50IGJhciwKPiA+ID4gLQkJCSAgICAgdTY0 IGNwdV9hZGRyLCBlbnVtIGR3X3BjaWVfYXNfdHlwZSBhc190eXBlKQo+ID4gPiAraW50IGR3X3Bj aWVfcHJvZ19pbmJvdW5kX2F0dShzdHJ1Y3QgZHdfcGNpZSAqcGNpLCB1OCBmdW5jX25vLCBpbnQg aW5kZXgsCj4gPiA+ICsJCQkgICAgIGludCBiYXIsIHU2NCBjcHVfYWRkciwKPiA+ID4gKwkJCSAg ICAgZW51bSBkd19wY2llX2FzX3R5cGUgYXNfdHlwZSkKPiA+ID4gIHsKPiA+ID4gIAlpbnQgdHlw ZTsKPiA+ID4gIAl1MzIgcmV0cmllcywgdmFsOwo+ID4gPgo+ID4gPiAgCWlmIChwY2ktPmlhdHVf dW5yb2xsX2VuYWJsZWQpCj4gPiA+IC0JCXJldHVybiBkd19wY2llX3Byb2dfaW5ib3VuZF9hdHVf dW5yb2xsKHBjaSwgaW5kZXgsIGJhciwKPiA+ID4gKwkJcmV0dXJuIGR3X3BjaWVfcHJvZ19pbmJv dW5kX2F0dV91bnJvbGwocGNpLCBmdW5jX25vLCBpbmRleCwgYmFyLAo+ID4gPiAgCQkJCQkJICAg ICAgIGNwdV9hZGRyLCBhc190eXBlKTsKPiA+ID4KPiA+ID4gIAlkd19wY2llX3dyaXRlbF9kYmko cGNpLCBQQ0lFX0FUVV9WSUVXUE9SVCwKPiA+IFBDSUVfQVRVX1JFR0lPTl9JTkJPVU5EIHwKPiA+ ID4gQEAgLTMyMyw5ICs0MDgsMTEgQEAgaW50IGR3X3BjaWVfcHJvZ19pbmJvdW5kX2F0dShzdHJ1 Y3QgZHdfcGNpZQo+ID4gKnBjaSwgaW50IGluZGV4LCBpbnQgYmFyLAo+ID4gPiAgCQlyZXR1cm4g LUVJTlZBTDsKPiA+ID4gIAl9Cj4gPiA+Cj4gPiA+IC0JZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwg UENJRV9BVFVfQ1IxLCB0eXBlKTsKPiA+ID4gLQlkd19wY2llX3dyaXRlbF9kYmkocGNpLCBQQ0lF X0FUVV9DUjIsIFBDSUVfQVRVX0VOQUJMRQo+ID4gPiAtCQkJICAgfCBQQ0lFX0FUVV9CQVJfTU9E RV9FTkFCTEUgfCAoYmFyIDw8IDgpKTsKPiA+ID4gKwlkd19wY2llX3dyaXRlbF9kYmkocGNpLCBQ Q0lFX0FUVV9DUjEsIHR5cGUgfAo+ID4gPiArCQkJICAgUENJRV9BVFVfRlVOQ19OVU0oZnVuY19u bykpOwo+ID4gPiArCWR3X3BjaWVfd3JpdGVsX2RiaShwY2ksIFBDSUVfQVRVX0NSMiwgUENJRV9B VFVfRU5BQkxFIHwKPiA+ID4gKwkJCSAgIFBDSUVfQVRVX0ZVTkNfTlVNX01BVENIX0VOIHwKPiA+ ID4gKwkJCSAgIFBDSUVfQVRVX0JBUl9NT0RFX0VOQUJMRSB8IChiYXIgPDwgOCkpOwo+ID4gPgo+ ID4gPiAgCS8qCj4gPiA+ICAJICogTWFrZSBzdXJlIEFUVSBlbmFibGUgdGFrZXMgZWZmZWN0IGJl Zm9yZSBhbnkgc3Vic2VxdWVudCBjb25maWcKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNp L2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS5oCj4gPiA+IGIvZHJpdmVycy9wY2kvY29u dHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLmgKPiA+ID4gaW5kZXggZmZlZDA4NC4uMmIyOTFl OCAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNp Z253YXJlLmgKPiA+ID4gKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNp Z253YXJlLmgKPiA+ID4gQEAgLTcxLDkgKzcxLDExIEBACj4gPiA+ICAjZGVmaW5lIFBDSUVfQVRV X1RZUEVfSU8JCTB4Mgo+ID4gPiAgI2RlZmluZSBQQ0lFX0FUVV9UWVBFX0NGRzAJCTB4NAo+ID4g PiAgI2RlZmluZSBQQ0lFX0FUVV9UWVBFX0NGRzEJCTB4NQo+ID4gPiArI2RlZmluZSBQQ0lFX0FU VV9GVU5DX05VTShwZikgICAgICAgICAgIChwZiA8PCAyMCkKPiA+ID4gICNkZWZpbmUgUENJRV9B VFVfQ1IyCQkJMHg5MDgKPiA+ID4gICNkZWZpbmUgUENJRV9BVFVfRU5BQkxFCQkJQklUKDMxKQo+ ID4gPiAgI2RlZmluZSBQQ0lFX0FUVV9CQVJfTU9ERV9FTkFCTEUJQklUKDMwKQo+ID4gPiArI2Rl ZmluZSBQQ0lFX0FUVV9GVU5DX05VTV9NQVRDSF9FTiAgICAgIEJJVCgxOSkKPiA+ID4gICNkZWZp bmUgUENJRV9BVFVfTE9XRVJfQkFTRQkJMHg5MEMKPiA+ID4gICNkZWZpbmUgUENJRV9BVFVfVVBQ RVJfQkFTRQkJMHg5MTAKPiA+ID4gICNkZWZpbmUgUENJRV9BVFVfTElNSVQJCQkweDkxNAo+ID4g PiBAQCAtMjY1LDggKzI2NywxMiBAQCBpbnQgZHdfcGNpZV93YWl0X2Zvcl9saW5rKHN0cnVjdCBk d19wY2llICpwY2kpOwo+ID4gPiB2b2lkIGR3X3BjaWVfcHJvZ19vdXRib3VuZF9hdHUoc3RydWN0 IGR3X3BjaWUgKnBjaSwgaW50IGluZGV4LAo+ID4gPiAgCQkJICAgICAgIGludCB0eXBlLCB1NjQg Y3B1X2FkZHIsIHU2NCBwY2lfYWRkciwKPiA+ID4gIAkJCSAgICAgICB1MzIgc2l6ZSk7Cj4gPiA+ IC1pbnQgZHdfcGNpZV9wcm9nX2luYm91bmRfYXR1KHN0cnVjdCBkd19wY2llICpwY2ksIGludCBp bmRleCwgaW50IGJhciwKPiA+ID4gLQkJCSAgICAgdTY0IGNwdV9hZGRyLCBlbnVtIGR3X3BjaWVf YXNfdHlwZSBhc190eXBlKTsKPiA+ID4gK3ZvaWQgZHdfcGNpZV9wcm9nX2VwX291dGJvdW5kX2F0 dShzdHJ1Y3QgZHdfcGNpZSAqcGNpLCB1OCBmdW5jX25vLCBpbnQKPiA+IGluZGV4LAo+ID4gPiAr CQkJCSAgaW50IHR5cGUsIHU2NCBjcHVfYWRkciwgdTY0IHBjaV9hZGRyLAo+ID4gPiArCQkJCSAg dTMyIHNpemUpOwo+ID4gPiAraW50IGR3X3BjaWVfcHJvZ19pbmJvdW5kX2F0dShzdHJ1Y3QgZHdf cGNpZSAqcGNpLCB1OCBmdW5jX25vLCBpbnQgaW5kZXgsCj4gPiA+ICsJCQkgICAgIGludCBiYXIs IHU2NCBjcHVfYWRkciwKPiA+ID4gKwkJCSAgICAgZW51bSBkd19wY2llX2FzX3R5cGUgYXNfdHlw ZSk7Cj4gPiA+ICB2b2lkIGR3X3BjaWVfZGlzYWJsZV9hdHUoc3RydWN0IGR3X3BjaWUgKnBjaSwg aW50IGluZGV4LAo+ID4gPiAgCQkJIGVudW0gZHdfcGNpZV9yZWdpb25fdHlwZSB0eXBlKTsKPiA+ ID4gIHZvaWQgZHdfcGNpZV9zZXR1cChzdHJ1Y3QgZHdfcGNpZSAqcGNpKTsgZGlmZiAtLWdpdAo+ ID4gPiBhL2luY2x1ZGUvbGludXgvcGNpLWVwYy5oIGIvaW5jbHVkZS9saW51eC9wY2ktZXBjLmgg aW5kZXgKPiA+ID4gZjY0MWJhZC4uZmMyZmVlZSAxMDA2NDQKPiA+ID4gLS0tIGEvaW5jbHVkZS9s aW51eC9wY2ktZXBjLmgKPiA+ID4gKysrIGIvaW5jbHVkZS9saW51eC9wY2ktZXBjLmgKPiA+ID4g QEAgLTk2LDYgKzk2LDcgQEAgc3RydWN0IHBjaV9lcGMgewo+ID4gPiAgCWNvbnN0IHN0cnVjdCBw Y2lfZXBjX29wcwkqb3BzOwo+ID4gPiAgCXN0cnVjdCBwY2lfZXBjX21lbQkJKm1lbTsKPiA+ID4g IAl1OAkJCQltYXhfZnVuY3Rpb25zOwo+ID4gPiArCXUzMgkJCQlwZl9vZmZzZXQ7CgpBbHNvIHBm X29mZnNldCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgbmVlZGVkIG9ubHkgYnkgdGhlIGRy aXZlciB0bwpjYWxjdWxhdGUgd2hlcmUgdGhlIFBGIGlzIC0gaXQgZG9lc24ndCBzZWVtIHJpZ2h0 IHRoYXQgd2Ugc2hhcmUgdGhpcyB3aXRoIHRoZQpFUCBjb250cm9sbGVyIGZyYW1ld29yayAod2hl cmVhcyBtYXhfZnVuY3Rpb25zIGlzIHVzZWQgYXMgYSBib3VuZHMgY2hlY2sKZm9yIGZ1bmNfbm8g aW4gdGhlIGZyYW1ld29yayBjYWxscykuCgpJJ2Qgc3VnZ2VzdCB0aGF0IHBmX29mZnNldCBpcyBt b3ZlZCB0byBhIGR3YyBzdHJ1Y3R1cmUsIHBlcmhhcHMgZHdfcGNpZV9lcD8KClRoYW5rcywKCkFu ZHJldyBNdXJyYXkKCj4gPiA+ICAJc3RydWN0IGNvbmZpZ19ncm91cAkJKmdyb3VwOwo+ID4gPiAg CS8qIHNwaW5sb2NrIHRvIHByb3RlY3QgYWdhaW5zdCBjb25jdXJyZW50IGFjY2VzcyBvZiBFUCBj b250cm9sbGVyICovCj4gPiA+ICAJc3BpbmxvY2tfdAkJCWxvY2s7Cj4gPiA+IC0tCj4gPiA+IDIu OS41Cj4gPiA+Cj4gPiA+Cj4gPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4gPiA+IGxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0Cj4gPiA+IGxp bnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwo+ID4gPiBodHRwczovL2V1cjAxLnNh ZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cCUzQSUyRiUyRmxpc3RzCj4g PiA+IC5pbmZyYWRlYWQub3JnJTJGbWFpbG1hbiUyRmxpc3RpbmZvJTJGbGludXgtYXJtLWtlcm5l bCZhbXA7ZGF0YT0wMiUKPiA+IDdDMAo+ID4gPgo+ID4gMSU3Q3hpYW93ZWkuYmFvJTQwbnhwLmNv bSU3QzBlMzkxNjhmNmYxNDRkYjY4NDAzMDhkNzIxNzQyMDQwJTcKPiA+IEM2ODZlYTFkCj4gPiA+ Cj4gPiAzYmMyYjRjNmZhOTJjZDk5YzVjMzAxNjM1JTdDMCU3QzElN0M2MzcwMTQ2NTQ5OTg1MjQ0 NTImYW1wO3NkCj4gPiBhdGE9YlA3ZWgKPiA+ID4gY2psR1hDTVZGRTJiNGYxMlE2ZkdWN2xRJTJG NWk5cUlpOUZvUGxiSSUzRCZhbXA7cmVzZXJ2ZWQ9MAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGlu dXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=