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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 3201AC00140 for ; Fri, 12 Aug 2022 09:43:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc: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=fCbe1UjvjzKTT8UkL5rdIrgKGTQ7wryexzSEEbXoZTg=; b=tTo07ukyPuT1FE 0kSehqSIjdTS3NpHXgvrWgai8IpAoxCMxKG3KaydBi5j2aUeZU8BmMNh2uzqzZSZXYuR805vNKJkx 2siwIQ59rhtpjoE2BpfPaeNPn3qWz4lSgWsllJGA52x5ESM1ihadmSaNuK/AHuIGdBV1eIMvUORBO DyoAQu52dyhbPSKj8UNvmUYHPMLqu40eQhO0NJqnfLQaqU6aPLy8qgURQ9Y/ZRG/cM3+UonagT3Z1 85leRz+U55RyEhRUT3s2EUP2p6wqYpGyTUoXb+i+9OfCziSxOz5eWoIK/DIA/8hcieF/XVvZNzXY/ f/xkyEXSO/8EwESvpc0w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oMRBf-003t7E-B3; Fri, 12 Aug 2022 09:42:39 +0000 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oMRBY-003t3o-8o for linux-arm-kernel@lists.infradead.org; Fri, 12 Aug 2022 09:42:37 +0000 Received: by mail-wm1-x330.google.com with SMTP id ay39-20020a05600c1e2700b003a5503a80cfso266330wmb.2 for ; Fri, 12 Aug 2022 02:42:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc; bh=qQ5Fb/m5tOKuGY5L1MB9TpI6Nm3DBr1zgH8HC7WdcdM=; b=NNQTc5xXnWCVYaZ5l4UumUFdY7T/JETi1/YQyq4tc7FzA7zVG1HffHHw/mtWdMRa2d kNQrfoddBQgKU+TzkqlhEcVQJRJae9SHDql6LXIhrCKAo9H7Gr8DSaneVKb6u62NdKxF zIFUw79xZuI9R4MrvU5UMpUEYZTo5bM7+nJSE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc; bh=qQ5Fb/m5tOKuGY5L1MB9TpI6Nm3DBr1zgH8HC7WdcdM=; b=XVPEgcDpqMyoJ1Z6+SLS98AN3pfzkoWf9Y2sJIqYFQrEc7Mzj3af2TOiAU25UfvtA/ MmwdncXsE2p4QPw4uWFxFGBuBhwz8ZLfCh76Wzy79+bPTpUyiOmAz/45lRPZIwIe00Oa /KJY0qFXHb7DhBSLfvSfsT3jyDpd7nDLm1uRP/VubrgJSN6BLfqFH9PK1ibTEA0MWbMd PFA02OqoCuNHJdZrrcp0PcyTv6kbYcqdWhjV0Y8bKgO8Z8ryDqR8RcvKsqMx8Vfq07J+ FSznEP1zmIrZdBCUdikHkZkuqTVjaIm5mKdACoSVASorE1Y9NwcO+XkHLbhYfxBWOLqH hq9w== X-Gm-Message-State: ACgBeo1VuAy9eIyu4C3nGu5D5xpPPD5ihtsaRy6yTGnukw8o4p5m2bmp UIgAErCPd9AKgzfybJPXG35n4g== X-Google-Smtp-Source: AA6agR4jUa4SkDBJJDp4PRDYkM84TpemLbevsZKOhgPri9f/Jcr7MUDi6GmdsQYGJ18GG6vTwas/tA== X-Received: by 2002:a05:600c:4ecd:b0:3a3:3eb0:9101 with SMTP id g13-20020a05600c4ecd00b003a33eb09101mr2111319wmq.49.1660297350160; Fri, 12 Aug 2022 02:42:30 -0700 (PDT) Received: from tom-ThinkPad-T14s-Gen-2i (net-188-217-51-7.cust.vodafonedsl.it. [188.217.51.7]) by smtp.gmail.com with ESMTPSA id bt19-20020a056000081300b0021eaf4138aesm1778378wrb.108.2022.08.12.02.42.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Aug 2022 02:42:29 -0700 (PDT) Date: Fri, 12 Aug 2022 11:42:27 +0200 From: Tommaso Merciai To: Ming Qian Cc: "mchehab@kernel.org" , "hverkuil-cisco@xs4all.nl" , "shawnguo@kernel.org" , "robh+dt@kernel.org" , "s.hauer@pengutronix.de" , "kernel@pengutronix.de" , "festevam@gmail.com" , dl-linux-imx , "X.H. Bao" , "linux-media@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" Subject: Re: [EXT] Re: [PATCH v4 2/4] media: amphion: tell and handle contiguous and non contiguous format Message-ID: <20220812094227.GA11185@tom-ThinkPad-T14s-Gen-2i> References: <4af9766eb664a02d1c5884cb48fadef24dec142f.1660027440.git.ming.qian@nxp.com> <20220812071455.GB5705@tom-ThinkPad-T14s-Gen-2i> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220812_024232_442597_D2687DCD X-CRM114-Status: GOOD ( 32.91 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gRnJpLCBBdWcgMTIsIDIwMjIgYXQgMDc6MTk6NDlBTSArMDAwMCwgTWluZyBRaWFuIHdyb3Rl Ogo+ID5Gcm9tOiBUb21tYXNvIE1lcmNpYWkgPHRvbW1hc28ubWVyY2lhaUBhbWFydWxhc29sdXRp b25zLmNvbT4KPiA+U2VudDogMjAyMuW5tDjmnIgxMuaXpSAxNToxNQo+ID5UbzogTWluZyBRaWFu IDxtaW5nLnFpYW5AbnhwLmNvbT4KPiA+Q2M6IG1jaGVoYWJAa2VybmVsLm9yZzsgaHZlcmt1aWwt Y2lzY29AeHM0YWxsLm5sOyBzaGF3bmd1b0BrZXJuZWwub3JnOwo+ID5yb2JoK2R0QGtlcm5lbC5v cmc7IHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU7IGtlcm5lbEBwZW5ndXRyb25peC5kZTsKPiA+ZmVz dGV2YW1AZ21haWwuY29tOyBkbC1saW51eC1pbXggPGxpbnV4LWlteEBueHAuY29tPjsgWC5ILiBC YW8KPiA+PHhpYWhvbmcuYmFvQG54cC5jb20+OyBsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmc7 Cj4gPmxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMu aW5mcmFkZWFkLm9yZwo+ID5TdWJqZWN0OiBbRVhUXSBSZTogW1BBVENIIHY0IDIvNF0gbWVkaWE6 IGFtcGhpb246IHRlbGwgYW5kIGhhbmRsZSBjb250aWd1b3VzCj4gPmFuZCBub24gY29udGlndW91 cyBmb3JtYXQKPiA+Cj4gPkNhdXRpb246IEVYVCBFbWFpbAo+ID4KPiA+SGkgTWluZywKPiA+SnVz dCBhbiBpbmZvLiBJJ20gcGxhbm5pbmcgdG8gaGVscCB0byByZXZpZXcgeW91ciBzZXJpZXMuCj4g Pk9uIHdoaWNoIExpbnV4IHRyZWUgYXJlIHlvdSB3b3JraW5nPwo+IAo+IEhpIFRvbW1hc28sCj4g ICAgIFRoYW5rcyBmb3IgeW91ciBoZWxwLCBhbmQgSSdtIHdvcmtpbmcgb24gaHR0cHM6Ly9naXQu bGludXh0di5vcmcvbWVkaWFfdHJlZS5naXQKClRoYW5rcyBmb3IgeW91ciB0aW1lLgoKVG9tbWFz bwoKPiAKPiBNaW5nCj4gCj4gPgo+ID5UaGFua3MgaW4gYWR2YW5jZSwKPiA+VG9tbWFzbwo+ID4K PiA+T24gVHVlLCBBdWcgMDksIDIwMjIgYXQgMDI6NTA6MzlQTSArMDgwMCwgTWluZyBRaWFuIHdy b3RlOgo+ID4+IERyaXZlciBzaG91bGQgdGVsbCB0aGUgbnVtYmVyIG9mIG1lbW9yeSBwbGFuZXMg YW5kIGNvbXBvbmVudCBwbGFuZXMuCj4gPj4gdGhlIGFtcGhpb24gdnB1IHN1cHBvcnQgbm9uIGNv bnRpZ3VvdXMgcGxhbmVzLCBidXQgZm9yIGNvbXBhdGliaWxpdHkKPiA+PiB3aXRoIG90aGVyIGRl dmljZSB0aGF0IG9ubHkgc3VwcG9ydCBjb250aWd1b3VzIHBsYW5lcy4KPiA+PiBkcml2ZXIgY2Fu IGFkZCBzdXBwb3J0IGZvciBjb250aWd1b3VzIHBsYW5lcyBpbiB0aGUgc2FtZSB0aW1lLgo+ID4+ IFRoZW4gdGhlIG1lbV9wbGFuZXMgY2FuIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBjb21wX3BsYW5l cy4KPiA+PiBkcml2ZXIgbmVlZCB0byBoYW5kbGUgYnVmZmVyIGFjY29yZGluZyBtZW1fcGxhbmVz IGFuZCBjb21wX3BsYW5lcy4KPiA+Pgo+ID4+IFNvIGRyaXZlciBjYW4gc3VwcG9ydCBOVjEyIGFu ZCBOVjEyTS4KPiA+Pgo+ID4+IFNpZ25lZC1vZmYtYnk6IE1pbmcgUWlhbiA8bWluZy5xaWFuQG54 cC5jb20+Cj4gPj4gLS0tCj4gPj4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92ZGVj LmMgICAgICAgIHwgMTg3ICsrKysrKysrKystLS0tLS0tLS0KPiA+PiAgZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9hbXBoaW9uL3ZlbmMuYyAgICAgICAgfCAgMzMgKystLQo+ID4+ICBkcml2ZXJzL21l ZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1LmggICAgICAgICB8ICAgNCArLQo+ID4+ICBkcml2ZXJz L21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1X2RiZy5jICAgICB8ICAgOCArLQo+ID4+ICBkcml2 ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1X2hlbHBlcnMuYyB8ICA0OCArKysrLQo+ID4+ ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1X2hlbHBlcnMuaCB8ICAgMiArCj4g Pj4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92cHVfbWFsb25lLmMgIHwgICAzICst Cj4gPj4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92cHVfdjRsMi5jICAgIHwgMTY4 ICsrKysrKysrKysrKy0tLS0tCj4gPj4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92 cHVfdjRsMi5oICAgIHwgICAzICstCj4gPj4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlv bi92cHVfd2luZHNvci5jIHwgICA4ICstCj4gPj4gIDEwIGZpbGVzIGNoYW5nZWQsIDI5OSBpbnNl cnRpb25zKCspLCAxNjUgZGVsZXRpb25zKC0pCj4gPj4KPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9uL3ZkZWMuYwo+ID4+IGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9hbXBoaW9uL3ZkZWMuYwo+ID4+IGluZGV4IGZlYjc1ZGMyMDRkZS4uNDhhYjY2NGZhN2Vm IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92ZGVjLmMK PiA+PiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdmRlYy5jCj4gPj4gQEAg LTY5LDcyICs2OSw4NSBAQCBzdHJ1Y3QgdmRlY190IHsKPiA+PiAgc3RhdGljIGNvbnN0IHN0cnVj dCB2cHVfZm9ybWF0IHZkZWNfZm9ybWF0c1tdID0gewo+ID4+ICAgICAgIHsKPiA+PiAgICAgICAg ICAgICAgIC5waXhmbXQgPSBWNEwyX1BJWF9GTVRfTlYxMk1fOEwxMjgsCj4gPj4gLSAgICAgICAg ICAgICAubnVtX3BsYW5lcyA9IDIsCj4gPj4gKyAgICAgICAgICAgICAubWVtX3BsYW5lcyA9IDIs Cj4gPj4gKyAgICAgICAgICAgICAuY29tcF9wbGFuZXMgPSAyLAo+ID4+ICAgICAgICAgICAgICAg LnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkVfTVBMQU5FLAo+ID4+ICAgICAgIH0s Cj4gPj4gICAgICAgewo+ID4+ICAgICAgICAgICAgICAgLnBpeGZtdCA9IFY0TDJfUElYX0ZNVF9O VjEyTV8xMEJFXzhMMTI4LAo+ID4+IC0gICAgICAgICAgICAgLm51bV9wbGFuZXMgPSAyLAo+ID4+ ICsgICAgICAgICAgICAgLm1lbV9wbGFuZXMgPSAyLAo+ID4+ICsgICAgICAgICAgICAgLmNvbXBf cGxhbmVzID0gMiwKPiA+PiAgICAgICAgICAgICAgIC50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURF T19DQVBUVVJFX01QTEFORSwKPiA+PiAgICAgICB9LAo+ID4+ICAgICAgIHsKPiA+PiAgICAgICAg ICAgICAgIC5waXhmbXQgPSBWNEwyX1BJWF9GTVRfSDI2NCwKPiA+PiAtICAgICAgICAgICAgIC5u dW1fcGxhbmVzID0gMSwKPiA+PiArICAgICAgICAgICAgIC5tZW1fcGxhbmVzID0gMSwKPiA+PiAr ICAgICAgICAgICAgIC5jb21wX3BsYW5lcyA9IDEsCj4gPj4gICAgICAgICAgICAgICAudHlwZSA9 IFY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVUX01QTEFORSwKPiA+PiAtICAgICAgICAgICAgIC5m bGFncyA9IFY0TDJfRk1UX0ZMQUdfRFlOX1JFU09MVVRJT04KPiA+PiArICAgICAgICAgICAgIC5m bGFncyA9IFY0TDJfRk1UX0ZMQUdfRFlOX1JFU09MVVRJT04gfAo+ID4+ICsgVjRMMl9GTVRfRkxB R19DT01QUkVTU0VECj4gPj4gICAgICAgfSwKPiA+PiAgICAgICB7Cj4gPj4gICAgICAgICAgICAg ICAucGl4Zm10ID0gVjRMMl9QSVhfRk1UX0gyNjRfTVZDLAo+ID4+IC0gICAgICAgICAgICAgLm51 bV9wbGFuZXMgPSAxLAo+ID4+ICsgICAgICAgICAgICAgLm1lbV9wbGFuZXMgPSAxLAo+ID4+ICsg ICAgICAgICAgICAgLmNvbXBfcGxhbmVzID0gMSwKPiA+PiAgICAgICAgICAgICAgIC50eXBlID0g VjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVRfTVBMQU5FLAo+ID4+IC0gICAgICAgICAgICAgLmZs YWdzID0gVjRMMl9GTVRfRkxBR19EWU5fUkVTT0xVVElPTgo+ID4+ICsgICAgICAgICAgICAgLmZs YWdzID0gVjRMMl9GTVRfRkxBR19EWU5fUkVTT0xVVElPTiB8Cj4gPj4gKyBWNEwyX0ZNVF9GTEFH X0NPTVBSRVNTRUQKPiA+PiAgICAgICB9LAo+ID4+ICAgICAgIHsKPiA+PiAgICAgICAgICAgICAg IC5waXhmbXQgPSBWNEwyX1BJWF9GTVRfSEVWQywKPiA+PiAtICAgICAgICAgICAgIC5udW1fcGxh bmVzID0gMSwKPiA+PiArICAgICAgICAgICAgIC5tZW1fcGxhbmVzID0gMSwKPiA+PiArICAgICAg ICAgICAgIC5jb21wX3BsYW5lcyA9IDEsCj4gPj4gICAgICAgICAgICAgICAudHlwZSA9IFY0TDJf QlVGX1RZUEVfVklERU9fT1VUUFVUX01QTEFORSwKPiA+PiAtICAgICAgICAgICAgIC5mbGFncyA9 IFY0TDJfRk1UX0ZMQUdfRFlOX1JFU09MVVRJT04KPiA+PiArICAgICAgICAgICAgIC5mbGFncyA9 IFY0TDJfRk1UX0ZMQUdfRFlOX1JFU09MVVRJT04gfAo+ID4+ICsgVjRMMl9GTVRfRkxBR19DT01Q UkVTU0VECj4gPj4gICAgICAgfSwKPiA+PiAgICAgICB7Cj4gPj4gICAgICAgICAgICAgICAucGl4 Zm10ID0gVjRMMl9QSVhfRk1UX1ZDMV9BTk5FWF9HLAo+ID4+IC0gICAgICAgICAgICAgLm51bV9w bGFuZXMgPSAxLAo+ID4+ICsgICAgICAgICAgICAgLm1lbV9wbGFuZXMgPSAxLAo+ID4+ICsgICAg ICAgICAgICAgLmNvbXBfcGxhbmVzID0gMSwKPiA+PiAgICAgICAgICAgICAgIC50eXBlID0gVjRM Ml9CVUZfVFlQRV9WSURFT19PVVRQVVRfTVBMQU5FLAo+ID4+IC0gICAgICAgICAgICAgLmZsYWdz ID0gVjRMMl9GTVRfRkxBR19EWU5fUkVTT0xVVElPTgo+ID4+ICsgICAgICAgICAgICAgLmZsYWdz ID0gVjRMMl9GTVRfRkxBR19EWU5fUkVTT0xVVElPTiB8Cj4gPj4gKyBWNEwyX0ZNVF9GTEFHX0NP TVBSRVNTRUQKPiA+PiAgICAgICB9LAo+ID4+ICAgICAgIHsKPiA+PiAgICAgICAgICAgICAgIC5w aXhmbXQgPSBWNEwyX1BJWF9GTVRfVkMxX0FOTkVYX0wsCj4gPj4gLSAgICAgICAgICAgICAubnVt X3BsYW5lcyA9IDEsCj4gPj4gKyAgICAgICAgICAgICAubWVtX3BsYW5lcyA9IDEsCj4gPj4gKyAg ICAgICAgICAgICAuY29tcF9wbGFuZXMgPSAxLAo+ID4+ICAgICAgICAgICAgICAgLnR5cGUgPSBW NEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9NUExBTkUsCj4gPj4gKyAgICAgICAgICAgICAuZmxh Z3MgPSBWNEwyX0ZNVF9GTEFHX0NPTVBSRVNTRUQKPiA+PiAgICAgICB9LAo+ID4+ICAgICAgIHsK PiA+PiAgICAgICAgICAgICAgIC5waXhmbXQgPSBWNEwyX1BJWF9GTVRfTVBFRzIsCj4gPj4gLSAg ICAgICAgICAgICAubnVtX3BsYW5lcyA9IDEsCj4gPj4gKyAgICAgICAgICAgICAubWVtX3BsYW5l cyA9IDEsCj4gPj4gKyAgICAgICAgICAgICAuY29tcF9wbGFuZXMgPSAxLAo+ID4+ICAgICAgICAg ICAgICAgLnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9NUExBTkUsCj4gPj4gLSAg ICAgICAgICAgICAuZmxhZ3MgPSBWNEwyX0ZNVF9GTEFHX0RZTl9SRVNPTFVUSU9OCj4gPj4gKyAg ICAgICAgICAgICAuZmxhZ3MgPSBWNEwyX0ZNVF9GTEFHX0RZTl9SRVNPTFVUSU9OIHwKPiA+PiAr IFY0TDJfRk1UX0ZMQUdfQ09NUFJFU1NFRAo+ID4+ICAgICAgIH0sCj4gPj4gICAgICAgewo+ID4+ ICAgICAgICAgICAgICAgLnBpeGZtdCA9IFY0TDJfUElYX0ZNVF9NUEVHNCwKPiA+PiAtICAgICAg ICAgICAgIC5udW1fcGxhbmVzID0gMSwKPiA+PiArICAgICAgICAgICAgIC5tZW1fcGxhbmVzID0g MSwKPiA+PiArICAgICAgICAgICAgIC5jb21wX3BsYW5lcyA9IDEsCj4gPj4gICAgICAgICAgICAg ICAudHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVUX01QTEFORSwKPiA+PiAtICAgICAg ICAgICAgIC5mbGFncyA9IFY0TDJfRk1UX0ZMQUdfRFlOX1JFU09MVVRJT04KPiA+PiArICAgICAg ICAgICAgIC5mbGFncyA9IFY0TDJfRk1UX0ZMQUdfRFlOX1JFU09MVVRJT04gfAo+ID4+ICsgVjRM Ml9GTVRfRkxBR19DT01QUkVTU0VECj4gPj4gICAgICAgfSwKPiA+PiAgICAgICB7Cj4gPj4gICAg ICAgICAgICAgICAucGl4Zm10ID0gVjRMMl9QSVhfRk1UX1hWSUQsCj4gPj4gLSAgICAgICAgICAg ICAubnVtX3BsYW5lcyA9IDEsCj4gPj4gKyAgICAgICAgICAgICAubWVtX3BsYW5lcyA9IDEsCj4g Pj4gKyAgICAgICAgICAgICAuY29tcF9wbGFuZXMgPSAxLAo+ID4+ICAgICAgICAgICAgICAgLnR5 cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9NUExBTkUsCj4gPj4gLSAgICAgICAgICAg ICAuZmxhZ3MgPSBWNEwyX0ZNVF9GTEFHX0RZTl9SRVNPTFVUSU9OCj4gPj4gKyAgICAgICAgICAg ICAuZmxhZ3MgPSBWNEwyX0ZNVF9GTEFHX0RZTl9SRVNPTFVUSU9OIHwKPiA+PiArIFY0TDJfRk1U X0ZMQUdfQ09NUFJFU1NFRAo+ID4+ICAgICAgIH0sCj4gPj4gICAgICAgewo+ID4+ICAgICAgICAg ICAgICAgLnBpeGZtdCA9IFY0TDJfUElYX0ZNVF9WUDgsCj4gPj4gLSAgICAgICAgICAgICAubnVt X3BsYW5lcyA9IDEsCj4gPj4gKyAgICAgICAgICAgICAubWVtX3BsYW5lcyA9IDEsCj4gPj4gKyAg ICAgICAgICAgICAuY29tcF9wbGFuZXMgPSAxLAo+ID4+ICAgICAgICAgICAgICAgLnR5cGUgPSBW NEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9NUExBTkUsCj4gPj4gLSAgICAgICAgICAgICAuZmxh Z3MgPSBWNEwyX0ZNVF9GTEFHX0RZTl9SRVNPTFVUSU9OCj4gPj4gKyAgICAgICAgICAgICAuZmxh Z3MgPSBWNEwyX0ZNVF9GTEFHX0RZTl9SRVNPTFVUSU9OIHwKPiA+PiArIFY0TDJfRk1UX0ZMQUdf Q09NUFJFU1NFRAo+ID4+ICAgICAgIH0sCj4gPj4gICAgICAgewo+ID4+ICAgICAgICAgICAgICAg LnBpeGZtdCA9IFY0TDJfUElYX0ZNVF9IMjYzLAo+ID4+IC0gICAgICAgICAgICAgLm51bV9wbGFu ZXMgPSAxLAo+ID4+ICsgICAgICAgICAgICAgLm1lbV9wbGFuZXMgPSAxLAo+ID4+ICsgICAgICAg ICAgICAgLmNvbXBfcGxhbmVzID0gMSwKPiA+PiAgICAgICAgICAgICAgIC50eXBlID0gVjRMMl9C VUZfVFlQRV9WSURFT19PVVRQVVRfTVBMQU5FLAo+ID4+IC0gICAgICAgICAgICAgLmZsYWdzID0g VjRMMl9GTVRfRkxBR19EWU5fUkVTT0xVVElPTgo+ID4+ICsgICAgICAgICAgICAgLmZsYWdzID0g VjRMMl9GTVRfRkxBR19EWU5fUkVTT0xVVElPTiB8Cj4gPj4gKyBWNEwyX0ZNVF9GTEFHX0NPTVBS RVNTRUQKPiA+PiAgICAgICB9LAo+ID4+ICAgICAgIHswLCAwLCAwLCAwfSwKPiA+PiAgfTsKPiA+ PiBAQCAtMjU2LDIzICsyNjksMjIgQEAgc3RhdGljIGludCB2ZGVjX2VudW1fZm10KHN0cnVjdCBm aWxlICpmaWxlLCB2b2lkICpmaCwKPiA+c3RydWN0IHY0bDJfZm10ZGVzYyAqZikKPiA+PiAgICAg ICBpbnQgcmV0ID0gLUVJTlZBTDsKPiA+Pgo+ID4+ICAgICAgIHZwdV9pbnN0X2xvY2soaW5zdCk7 Cj4gPj4gLSAgICAgaWYgKCFWNEwyX1RZUEVfSVNfT1VUUFVUKGYtPnR5cGUpICYmIHZkZWMtPmZp eGVkX2ZtdCkgewo+ID4+IC0gICAgICAgICAgICAgaWYgKGYtPmluZGV4ID09IDApIHsKPiA+PiAt ICAgICAgICAgICAgICAgICAgICAgZi0+cGl4ZWxmb3JtYXQgPSBpbnN0LT5jYXBfZm9ybWF0LnBp eGZtdDsKPiA+PiAtICAgICAgICAgICAgICAgICAgICAgZi0+ZmxhZ3MgPSBpbnN0LT5jYXBfZm9y bWF0LmZsYWdzOwo+ID4+IC0gICAgICAgICAgICAgICAgICAgICByZXQgPSAwOwo+ID4+IC0gICAg ICAgICAgICAgfQo+ID4+ICsgICAgIGlmIChWNEwyX1RZUEVfSVNfQ0FQVFVSRShmLT50eXBlKSAm JiB2ZGVjLT5maXhlZF9mbXQpIHsKPiA+PiArICAgICAgICAgICAgIGZtdCA9IHZwdV9nZXRfZm9y bWF0KGluc3QsIGYtPnR5cGUpOwo+ID4+ICsgICAgICAgICAgICAgaWYgKGYtPmluZGV4ID09IDEp Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIGZtdCA9IHZwdV9oZWxwZXJfZmluZF9zaWJsaW5n KGluc3QsIGYtPnR5cGUsCj4gPmZtdC0+cGl4Zm10KTsKPiA+PiArICAgICAgICAgICAgIGlmIChm LT5pbmRleCA+IDEpCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIGZtdCA9IE5VTEw7Cj4gPj4g ICAgICAgfSBlbHNlIHsKPiA+PiAgICAgICAgICAgICAgIGZtdCA9IHZwdV9oZWxwZXJfZW51bV9m b3JtYXQoaW5zdCwgZi0+dHlwZSwgZi0+aW5kZXgpOwo+ID4+IC0gICAgICAgICAgICAgbWVtc2V0 KGYtPnJlc2VydmVkLCAwLCBzaXplb2YoZi0+cmVzZXJ2ZWQpKTsKPiA+PiAtICAgICAgICAgICAg IGlmICghZm10KQo+ID4+IC0gICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Cj4gPj4gLQo+ ID4+IC0gICAgICAgICAgICAgZi0+cGl4ZWxmb3JtYXQgPSBmbXQtPnBpeGZtdDsKPiA+PiAtICAg ICAgICAgICAgIGYtPmZsYWdzID0gZm10LT5mbGFnczsKPiA+PiAtICAgICAgICAgICAgIHJldCA9 IDA7Cj4gPj4gICAgICAgfQo+ID4+ICsgICAgIGlmICghZm10KQo+ID4+ICsgICAgICAgICAgICAg Z290byBleGl0Owo+ID4+Cj4gPj4gKyAgICAgbWVtc2V0KGYtPnJlc2VydmVkLCAwLCBzaXplb2Yo Zi0+cmVzZXJ2ZWQpKTsKPiA+PiArICAgICBmLT5waXhlbGZvcm1hdCA9IGZtdC0+cGl4Zm10Owo+ ID4+ICsgICAgIGYtPmZsYWdzID0gZm10LT5mbGFnczsKPiA+PiArICAgICByZXQgPSAwOwo+ID4+ ICBleGl0Ogo+ID4+ICAgICAgIHZwdV9pbnN0X3VubG9jayhpbnN0KTsKPiA+PiAgICAgICByZXR1 cm4gcmV0Owo+ID4+IEBAIC0yODksMTQgKzMwMSwxNCBAQCBzdGF0aWMgaW50IHZkZWNfZ19mbXQo c3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLAo+ID5zdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCj4g Pj4gICAgICAgY3VyX2ZtdCA9IHZwdV9nZXRfZm9ybWF0KGluc3QsIGYtPnR5cGUpOwo+ID4+Cj4g Pj4gICAgICAgcGl4bXAtPnBpeGVsZm9ybWF0ID0gY3VyX2ZtdC0+cGl4Zm10Owo+ID4+IC0gICAg IHBpeG1wLT5udW1fcGxhbmVzID0gY3VyX2ZtdC0+bnVtX3BsYW5lczsKPiA+PiArICAgICBwaXht cC0+bnVtX3BsYW5lcyA9IGN1cl9mbXQtPm1lbV9wbGFuZXM7Cj4gPj4gICAgICAgcGl4bXAtPndp ZHRoID0gY3VyX2ZtdC0+d2lkdGg7Cj4gPj4gICAgICAgcGl4bXAtPmhlaWdodCA9IGN1cl9mbXQt PmhlaWdodDsKPiA+PiAgICAgICBwaXhtcC0+ZmllbGQgPSBjdXJfZm10LT5maWVsZDsKPiA+PiAg ICAgICBwaXhtcC0+ZmxhZ3MgPSBjdXJfZm10LT5mbGFnczsKPiA+PiAgICAgICBmb3IgKGkgPSAw OyBpIDwgcGl4bXAtPm51bV9wbGFuZXM7IGkrKykgewo+ID4+ICAgICAgICAgICAgICAgcGl4bXAt PnBsYW5lX2ZtdFtpXS5ieXRlc3BlcmxpbmUgPSBjdXJfZm10LT5ieXRlc3BlcmxpbmVbaV07Cj4g Pj4gLSAgICAgICAgICAgICBwaXhtcC0+cGxhbmVfZm10W2ldLnNpemVpbWFnZSA9IGN1cl9mbXQt PnNpemVpbWFnZVtpXTsKPiA+PiArICAgICAgICAgICAgIHBpeG1wLT5wbGFuZV9mbXRbaV0uc2l6 ZWltYWdlID0KPiA+PiArIHZwdV9nZXRfZm10X3BsYW5lX3NpemUoY3VyX2ZtdCwgaSk7Cj4gPj4g ICAgICAgfQo+ID4+Cj4gPj4gICAgICAgZi0+Zm10LnBpeF9tcC5jb2xvcnNwYWNlID0gdmRlYy0+ Y29kZWNfaW5mby5jb2xvcl9wcmltYXJpZXM7IEBACj4gPj4gLTMxMSwxMCArMzIzLDE5IEBAIHN0 YXRpYyBpbnQgdmRlY190cnlfZm10KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkCj4gPj4gKmZoLCBz dHJ1Y3QgdjRsMl9mb3JtYXQgKmYpICB7Cj4gPj4gICAgICAgc3RydWN0IHZwdV9pbnN0ICppbnN0 ID0gdG9faW5zdChmaWxlKTsKPiA+PiAgICAgICBzdHJ1Y3QgdmRlY190ICp2ZGVjID0gaW5zdC0+ cHJpdjsKPiA+PiAtCj4gPj4gLSAgICAgdnB1X3RyeV9mbXRfY29tbW9uKGluc3QsIGYpOwo+ID4+ ICsgICAgIHN0cnVjdCB2cHVfZm9ybWF0IGZtdDsKPiA+Pgo+ID4+ICAgICAgIHZwdV9pbnN0X2xv Y2soaW5zdCk7Cj4gPj4gKyAgICAgaWYgKFY0TDJfVFlQRV9JU19DQVBUVVJFKGYtPnR5cGUpICYm IHZkZWMtPmZpeGVkX2ZtdCkgewo+ID4+ICsgICAgICAgICAgICAgc3RydWN0IHZwdV9mb3JtYXQg KmNhcF9mbXQgPSB2cHVfZ2V0X2Zvcm1hdChpbnN0LAo+ID4+ICsgZi0+dHlwZSk7Cj4gPj4gKwo+ ID4+ICsgICAgICAgICAgICAgaWYgKCF2cHVfaGVscGVyX21hdGNoX2Zvcm1hdChpbnN0LCBjYXBf Zm10LT50eXBlLAo+ID5jYXBfZm10LT5waXhmbXQsCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGYtPmZtdC5waXhfbXAucGl4ZWxmb3JtYXQpKQo+ID4+ICsg ICAgICAgICAgICAgICAgICAgICBmLT5mbXQucGl4X21wLnBpeGVsZm9ybWF0ID0gY2FwX2ZtdC0+ cGl4Zm10Owo+ID4+ICsgICAgIH0KPiA+PiArCj4gPj4gKyAgICAgdnB1X3RyeV9mbXRfY29tbW9u KGluc3QsIGYsICZmbXQpOwo+ID4+ICsKPiA+PiAgICAgICBpZiAodmRlYy0+Zml4ZWRfZm10KSB7 Cj4gPj4gICAgICAgICAgICAgICBmLT5mbXQucGl4X21wLmNvbG9yc3BhY2UgPQo+ID52ZGVjLT5j b2RlY19pbmZvLmNvbG9yX3ByaW1hcmllczsKPiA+PiAgICAgICAgICAgICAgIGYtPmZtdC5waXhf bXAueGZlcl9mdW5jID0KPiA+PiB2ZGVjLT5jb2RlY19pbmZvLnRyYW5zZmVyX2NoYXJzOyBAQCAt MzM0LDcgKzM1NSw3IEBAIHN0YXRpYyBpbnQKPiA+PiB2ZGVjX3RyeV9mbXQoc3RydWN0IGZpbGUg KmZpbGUsIHZvaWQgKmZoLCBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCj4gPj4gc3RhdGljIGludCB2 ZGVjX3NfZm10X2NvbW1vbihzdHJ1Y3QgdnB1X2luc3QgKmluc3QsIHN0cnVjdCB2NGwyX2Zvcm1h dCAqZikgIHsKPiA+PiAgICAgICBzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0X21wbGFuZSAqcGl4bXAg PSAmZi0+Zm10LnBpeF9tcDsKPiA+PiAtICAgICBjb25zdCBzdHJ1Y3QgdnB1X2Zvcm1hdCAqZm10 Owo+ID4+ICsgICAgIHN0cnVjdCB2cHVfZm9ybWF0IGZtdDsKPiA+PiAgICAgICBzdHJ1Y3QgdnB1 X2Zvcm1hdCAqY3VyX2ZtdDsKPiA+PiAgICAgICBzdHJ1Y3QgdmIyX3F1ZXVlICpxOwo+ID4+ICAg ICAgIHN0cnVjdCB2ZGVjX3QgKnZkZWMgPSBpbnN0LT5wcml2OyBAQCAtMzQ5LDM2ICszNzAsMzAg QEAgc3RhdGljCj4gPj4gaW50IHZkZWNfc19mbXRfY29tbW9uKHN0cnVjdCB2cHVfaW5zdCAqaW5z dCwgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQo+ID4+ICAgICAgIGlmICh2YjJfaXNfYnVzeShxKSkK PiA+PiAgICAgICAgICAgICAgIHJldHVybiAtRUJVU1k7Cj4gPj4KPiA+PiAtICAgICBmbXQgPSB2 cHVfdHJ5X2ZtdF9jb21tb24oaW5zdCwgZik7Cj4gPj4gLSAgICAgaWYgKCFmbXQpCj4gPj4gKyAg ICAgaWYgKHZwdV90cnlfZm10X2NvbW1vbihpbnN0LCBmLCAmZm10KSkKPiA+PiAgICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOwo+ID4+Cj4gPj4gICAgICAgY3VyX2ZtdCA9IHZwdV9nZXRfZm9y bWF0KGluc3QsIGYtPnR5cGUpOwo+ID4+ICAgICAgIGlmIChWNEwyX1RZUEVfSVNfT1VUUFVUKGYt PnR5cGUpICYmIGluc3QtPnN0YXRlICE9Cj4gPlZQVV9DT0RFQ19TVEFURV9ERUlOSVQpIHsKPiA+ PiAtICAgICAgICAgICAgIGlmIChjdXJfZm10LT5waXhmbXQgIT0gZm10LT5waXhmbXQpIHsKPiA+ PiArICAgICAgICAgICAgIGlmIChjdXJfZm10LT5waXhmbXQgIT0gZm10LnBpeGZtdCkgewo+ID4+ ICAgICAgICAgICAgICAgICAgICAgICB2ZGVjLT5yZXNldF9jb2RlYyA9IHRydWU7Cj4gPj4gICAg ICAgICAgICAgICAgICAgICAgIHZkZWMtPmZpeGVkX2ZtdCA9IGZhbHNlOwo+ID4+ICAgICAgICAg ICAgICAgfQo+ID4+ICAgICAgIH0KPiA+PiAtICAgICBjdXJfZm10LT5waXhmbXQgPSBmbXQtPnBp eGZtdDsKPiA+PiAgICAgICBpZiAoVjRMMl9UWVBFX0lTX09VVFBVVChmLT50eXBlKSB8fCAhdmRl Yy0+Zml4ZWRfZm10KSB7Cj4gPj4gLSAgICAgICAgICAgICBjdXJfZm10LT5udW1fcGxhbmVzID0g Zm10LT5udW1fcGxhbmVzOwo+ID4+IC0gICAgICAgICAgICAgY3VyX2ZtdC0+ZmxhZ3MgPSBmbXQt PmZsYWdzOwo+ID4+IC0gICAgICAgICAgICAgY3VyX2ZtdC0+d2lkdGggPSBwaXhtcC0+d2lkdGg7 Cj4gPj4gLSAgICAgICAgICAgICBjdXJfZm10LT5oZWlnaHQgPSBwaXhtcC0+aGVpZ2h0Owo+ID4+ IC0gICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGZtdC0+bnVtX3BsYW5lczsgaSsrKSB7Cj4g Pj4gLSAgICAgICAgICAgICAgICAgICAgIGN1cl9mbXQtPnNpemVpbWFnZVtpXSA9Cj4gPnBpeG1w LT5wbGFuZV9mbXRbaV0uc2l6ZWltYWdlOwo+ID4+IC0gICAgICAgICAgICAgICAgICAgICBjdXJf Zm10LT5ieXRlc3BlcmxpbmVbaV0gPQo+ID5waXhtcC0+cGxhbmVfZm10W2ldLmJ5dGVzcGVybGlu ZTsKPiA+PiAtICAgICAgICAgICAgIH0KPiA+PiAtICAgICAgICAgICAgIGlmIChwaXhtcC0+Zmll bGQgIT0gVjRMMl9GSUVMRF9BTlkpCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgIGN1cl9mbXQt PmZpZWxkID0gcGl4bXAtPmZpZWxkOwo+ID4+ICsgICAgICAgICAgICAgbWVtY3B5KGN1cl9mbXQs ICZmbXQsIHNpemVvZigqY3VyX2ZtdCkpOwo+ID4+ICAgICAgIH0gZWxzZSB7Cj4gPj4gLSAgICAg ICAgICAgICBwaXhtcC0+bnVtX3BsYW5lcyA9IGN1cl9mbXQtPm51bV9wbGFuZXM7Cj4gPj4gKyAg ICAgICAgICAgICBpZiAodnB1X2hlbHBlcl9tYXRjaF9mb3JtYXQoaW5zdCwgZi0+dHlwZSwgY3Vy X2ZtdC0+cGl4Zm10LAo+ID5waXhtcC0+cGl4ZWxmb3JtYXQpKSB7Cj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgIGN1cl9mbXQtPnBpeGZtdCA9IGZtdC5waXhmbXQ7Cj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgIGN1cl9mbXQtPm1lbV9wbGFuZXMgPSBmbXQubWVtX3BsYW5lczsKPiA+PiArICAg ICAgICAgICAgIH0KPiA+PiArICAgICAgICAgICAgIHBpeG1wLT5waXhlbGZvcm1hdCA9IGN1cl9m bXQtPnBpeGZtdDsKPiA+PiArICAgICAgICAgICAgIHBpeG1wLT5udW1fcGxhbmVzID0gY3VyX2Zt dC0+bWVtX3BsYW5lczsKPiA+PiAgICAgICAgICAgICAgIHBpeG1wLT53aWR0aCA9IGN1cl9mbXQt PndpZHRoOwo+ID4+ICAgICAgICAgICAgICAgcGl4bXAtPmhlaWdodCA9IGN1cl9mbXQtPmhlaWdo dDsKPiA+PiAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaXhtcC0+bnVtX3BsYW5lczsg aSsrKSB7Cj4gPj4gICAgICAgICAgICAgICAgICAgICAgIHBpeG1wLT5wbGFuZV9mbXRbaV0uYnl0 ZXNwZXJsaW5lID0KPiA+Y3VyX2ZtdC0+Ynl0ZXNwZXJsaW5lW2ldOwo+ID4+IC0gICAgICAgICAg ICAgICAgICAgICBwaXhtcC0+cGxhbmVfZm10W2ldLnNpemVpbWFnZSA9Cj4gPmN1cl9mbXQtPnNp emVpbWFnZVtpXTsKPiA+PiArICAgICAgICAgICAgICAgICAgICAgcGl4bXAtPnBsYW5lX2ZtdFtp XS5zaXplaW1hZ2UgPQo+ID4+ICsgdnB1X2dldF9mbXRfcGxhbmVfc2l6ZShjdXJfZm10LCBpKTsK PiA+PiAgICAgICAgICAgICAgIH0KPiA+PiAgICAgICAgICAgICAgIHBpeG1wLT5maWVsZCA9IGN1 cl9mbXQtPmZpZWxkOwo+ID4+ICAgICAgIH0KPiA+PiBAQCAtNjc4LDkgKzY5MywxMSBAQCBzdGF0 aWMgc3RydWN0IHZwdV92YjJfYnVmZmVyCj4gPj4gKnZkZWNfZmluZF9idWZmZXIoc3RydWN0IHZw dV9pbnN0ICppbnN0LCB1MzIgbHVtYSkgIHN0YXRpYyB2b2lkCj4gPj4gdmRlY19idWZfZG9uZShz dHJ1Y3QgdnB1X2luc3QgKmluc3QsIHN0cnVjdCB2cHVfZnJhbWVfaW5mbyAqZnJhbWUpICB7Cj4g Pj4gICAgICAgc3RydWN0IHZkZWNfdCAqdmRlYyA9IGluc3QtPnByaXY7Cj4gPj4gKyAgICAgc3Ry dWN0IHZwdV9mb3JtYXQgKmN1cl9mbXQ7Cj4gPj4gICAgICAgc3RydWN0IHZwdV92YjJfYnVmZmVy ICp2cHVfYnVmOwo+ID4+ICAgICAgIHN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnZidWY7Cj4gPj4g ICAgICAgdTMyIHNlcXVlbmNlOwo+ID4+ICsgICAgIGludCBpOwo+ID4+Cj4gPj4gICAgICAgaWYg KCFmcmFtZSkKPiA+PiAgICAgICAgICAgICAgIHJldHVybjsKPiA+PiBAQCAtNjk5LDYgKzcxNiw3 IEBAIHN0YXRpYyB2b2lkIHZkZWNfYnVmX2RvbmUoc3RydWN0IHZwdV9pbnN0ICppbnN0LAo+ID5z dHJ1Y3QgdnB1X2ZyYW1lX2luZm8gKmZyYW1lKQo+ID4+ICAgICAgICAgICAgICAgcmV0dXJuOwo+ ID4+ICAgICAgIH0KPiA+Pgo+ID4+ICsgICAgIGN1cl9mbXQgPSB2cHVfZ2V0X2Zvcm1hdChpbnN0 LCBpbnN0LT5jYXBfZm9ybWF0LnR5cGUpOwo+ID4+ICAgICAgIHZidWYgPSAmdnB1X2J1Zi0+bTJt X2J1Zi52YjsKPiA+PiAgICAgICBpZiAodmJ1Zi0+dmIyX2J1Zi5pbmRleCAhPSBmcmFtZS0+aWQp Cj4gPj4gICAgICAgICAgICAgICBkZXZfZXJyKGluc3QtPmRldiwgIlslZF0gYnVmZmVyIGlkKCVk LCAlZCkgZGlzbWF0Y2hcbiIsCj4gPj4gQEAgLTcwNyw5ICs3MjUsOSBAQCBzdGF0aWMgdm9pZCB2 ZGVjX2J1Zl9kb25lKHN0cnVjdCB2cHVfaW5zdCAqaW5zdCwKPiA+c3RydWN0IHZwdV9mcmFtZV9p bmZvICpmcmFtZSkKPiA+PiAgICAgICBpZiAodnB1X2dldF9idWZmZXJfc3RhdGUodmJ1ZikgIT0g VlBVX0JVRl9TVEFURV9ERUNPREVEKQo+ID4+ICAgICAgICAgICAgICAgZGV2X2VycihpbnN0LT5k ZXYsICJbJWRdIGJ1ZmZlciglZCkgcmVhZHkgd2l0aG91dAo+ID5kZWNvZGVkXG4iLCBpbnN0LT5p ZCwgZnJhbWUtPmlkKTsKPiA+PiAgICAgICB2cHVfc2V0X2J1ZmZlcl9zdGF0ZSh2YnVmLCBWUFVf QlVGX1NUQVRFX1JFQURZKTsKPiA+PiAtICAgICB2YjJfc2V0X3BsYW5lX3BheWxvYWQoJnZidWYt PnZiMl9idWYsIDAsCj4gPmluc3QtPmNhcF9mb3JtYXQuc2l6ZWltYWdlWzBdKTsKPiA+PiAtICAg ICB2YjJfc2V0X3BsYW5lX3BheWxvYWQoJnZidWYtPnZiMl9idWYsIDEsCj4gPmluc3QtPmNhcF9m b3JtYXQuc2l6ZWltYWdlWzFdKTsKPiA+PiAtICAgICB2YnVmLT5maWVsZCA9IGluc3QtPmNhcF9m b3JtYXQuZmllbGQ7Cj4gPj4gKyAgICAgZm9yIChpID0gMDsgaSA8IHZidWYtPnZiMl9idWYubnVt X3BsYW5lczsgaSsrKQo+ID4+ICsgICAgICAgICAgICAgdmIyX3NldF9wbGFuZV9wYXlsb2FkKCZ2 YnVmLT52YjJfYnVmLCBpLAo+ID52cHVfZ2V0X2ZtdF9wbGFuZV9zaXplKGN1cl9mbXQsIGkpKTsK PiA+PiArICAgICB2YnVmLT5maWVsZCA9IGN1cl9mbXQtPmZpZWxkOwo+ID4+ICAgICAgIHZidWYt PnNlcXVlbmNlID0gc2VxdWVuY2U7Cj4gPj4gICAgICAgZGV2X2RiZyhpbnN0LT5kZXYsICJbJWRd W09VVFBVVCBUU10lMzJsbGRcbiIsIGluc3QtPmlkLAo+ID4+IHZidWYtPnZiMl9idWYudGltZXN0 YW1wKTsKPiA+Pgo+ID4+IEBAIC03NDcsMTUgKzc2NSwxNyBAQCBzdGF0aWMgdm9pZCB2ZGVjX3N0 b3BfZG9uZShzdHJ1Y3QgdnB1X2luc3QKPiA+PiAqaW5zdCkgIHN0YXRpYyBib29sIHZkZWNfY2hl Y2tfc291cmNlX2NoYW5nZShzdHJ1Y3QgdnB1X2luc3QgKmluc3QpICB7Cj4gPj4gICAgICAgc3Ry dWN0IHZkZWNfdCAqdmRlYyA9IGluc3QtPnByaXY7Cj4gPj4gLSAgICAgY29uc3Qgc3RydWN0IHZw dV9mb3JtYXQgKmZtdDsKPiA+PiAtICAgICBpbnQgaTsKPiA+PiArICAgICBjb25zdCBzdHJ1Y3Qg dnB1X2Zvcm1hdCAqc2libGluZzsKPiA+Pgo+ID4+ICAgICAgIGlmICghaW5zdC0+ZmgubTJtX2N0 eCkKPiA+PiAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+Pgo+ID4+ICsgICAgIHNpYmxp bmcgPSB2cHVfaGVscGVyX2ZpbmRfc2libGluZyhpbnN0LCBpbnN0LT5jYXBfZm9ybWF0LnR5cGUs Cj4gPmluc3QtPmNhcF9mb3JtYXQucGl4Zm10KTsKPiA+PiArICAgICBpZiAoc2libGluZyAmJiB2 ZGVjLT5jb2RlY19pbmZvLnBpeGZtdCA9PSBzaWJsaW5nLT5waXhmbXQpCj4gPj4gKyAgICAgICAg ICAgICB2ZGVjLT5jb2RlY19pbmZvLnBpeGZtdCA9IGluc3QtPmNhcF9mb3JtYXQucGl4Zm10Owo+ ID4+ICsKPiA+PiAgICAgICBpZiAoIXZiMl9pc19zdHJlYW1pbmcodjRsMl9tMm1fZ2V0X2RzdF92 cShpbnN0LT5maC5tMm1fY3R4KSkpCj4gPj4gICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPiA+ PiAtICAgICBmbXQgPSB2cHVfaGVscGVyX2ZpbmRfZm9ybWF0KGluc3QsIGluc3QtPmNhcF9mb3Jt YXQudHlwZSwKPiA+dmRlYy0+Y29kZWNfaW5mby5waXhmbXQpOwo+ID4+ICAgICAgIGlmIChpbnN0 LT5jYXBfZm9ybWF0LnBpeGZtdCAhPSB2ZGVjLT5jb2RlY19pbmZvLnBpeGZtdCkKPiA+PiAgICAg ICAgICAgICAgIHJldHVybiB0cnVlOwo+ID4+ICAgICAgIGlmIChpbnN0LT5jYXBfZm9ybWF0Lndp ZHRoICE9IHZkZWMtPmNvZGVjX2luZm8uZGVjb2RlZF93aWR0aCkgQEAKPiA+PiAtNzcyLDE0ICs3 OTIsNiBAQCBzdGF0aWMgYm9vbCB2ZGVjX2NoZWNrX3NvdXJjZV9jaGFuZ2Uoc3RydWN0IHZwdV9p bnN0Cj4gPippbnN0KQo+ID4+ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPj4gICAgICAg aWYgKGluc3QtPmNyb3AuaGVpZ2h0ICE9IHZkZWMtPmNvZGVjX2luZm8uaGVpZ2h0KQo+ID4+ICAg ICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPj4gLSAgICAgaWYgKGZtdCAmJiBpbnN0LT5jYXBf Zm9ybWF0Lm51bV9wbGFuZXMgIT0gZm10LT5udW1fcGxhbmVzKQo+ID4+IC0gICAgICAgICAgICAg cmV0dXJuIHRydWU7Cj4gPj4gLSAgICAgZm9yIChpID0gMDsgaSA8IGluc3QtPmNhcF9mb3JtYXQu bnVtX3BsYW5lczsgaSsrKSB7Cj4gPj4gLSAgICAgICAgICAgICBpZiAoaW5zdC0+Y2FwX2Zvcm1h dC5ieXRlc3BlcmxpbmVbaV0gIT0KPiA+dmRlYy0+Y29kZWNfaW5mby5ieXRlc3BlcmxpbmVbaV0p Cj4gPj4gLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+ID4+IC0gICAgICAgICAg ICAgaWYgKGluc3QtPmNhcF9mb3JtYXQuc2l6ZWltYWdlW2ldICE9Cj4gPnZkZWMtPmNvZGVjX2lu Zm8uc2l6ZWltYWdlW2ldKQo+ID4+IC0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK PiA+PiAtICAgICB9Cj4gPj4KPiA+PiAgICAgICByZXR1cm4gZmFsc2U7Cj4gPj4gIH0KPiA+PiBA QCAtNzg3LDI3ICs3OTksMjEgQEAgc3RhdGljIGJvb2wgdmRlY19jaGVja19zb3VyY2VfY2hhbmdl KHN0cnVjdAo+ID4+IHZwdV9pbnN0ICppbnN0KSAgc3RhdGljIHZvaWQgdmRlY19pbml0X2ZtdChz dHJ1Y3QgdnB1X2luc3QgKmluc3QpICB7Cj4gPj4gICAgICAgc3RydWN0IHZkZWNfdCAqdmRlYyA9 IGluc3QtPnByaXY7Cj4gPj4gLSAgICAgY29uc3Qgc3RydWN0IHZwdV9mb3JtYXQgKmZtdDsKPiA+ PiAtICAgICBpbnQgaTsKPiA+PiArICAgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgZjsKPiA+Pgo+ID4+ IC0gICAgIGZtdCA9IHZwdV9oZWxwZXJfZmluZF9mb3JtYXQoaW5zdCwgaW5zdC0+Y2FwX2Zvcm1h dC50eXBlLAo+ID52ZGVjLT5jb2RlY19pbmZvLnBpeGZtdCk7Cj4gPj4gLSAgICAgaW5zdC0+b3V0 X2Zvcm1hdC53aWR0aCA9IHZkZWMtPmNvZGVjX2luZm8ud2lkdGg7Cj4gPj4gLSAgICAgaW5zdC0+ b3V0X2Zvcm1hdC5oZWlnaHQgPSB2ZGVjLT5jb2RlY19pbmZvLmhlaWdodDsKPiA+PiAtICAgICBp bnN0LT5jYXBfZm9ybWF0LndpZHRoID0gdmRlYy0+Y29kZWNfaW5mby5kZWNvZGVkX3dpZHRoOwo+ ID4+IC0gICAgIGluc3QtPmNhcF9mb3JtYXQuaGVpZ2h0ID0gdmRlYy0+Y29kZWNfaW5mby5kZWNv ZGVkX2hlaWdodDsKPiA+PiAtICAgICBpbnN0LT5jYXBfZm9ybWF0LnBpeGZtdCA9IHZkZWMtPmNv ZGVjX2luZm8ucGl4Zm10Owo+ID4+IC0gICAgIGlmIChmbXQpIHsKPiA+PiAtICAgICAgICAgICAg IGluc3QtPmNhcF9mb3JtYXQubnVtX3BsYW5lcyA9IGZtdC0+bnVtX3BsYW5lczsKPiA+PiAtICAg ICAgICAgICAgIGluc3QtPmNhcF9mb3JtYXQuZmxhZ3MgPSBmbXQtPmZsYWdzOwo+ID4+IC0gICAg IH0KPiA+PiAtICAgICBmb3IgKGkgPSAwOyBpIDwgaW5zdC0+Y2FwX2Zvcm1hdC5udW1fcGxhbmVz OyBpKyspIHsKPiA+PiAtICAgICAgICAgICAgIGluc3QtPmNhcF9mb3JtYXQuYnl0ZXNwZXJsaW5l W2ldID0KPiA+dmRlYy0+Y29kZWNfaW5mby5ieXRlc3BlcmxpbmVbaV07Cj4gPj4gLSAgICAgICAg ICAgICBpbnN0LT5jYXBfZm9ybWF0LnNpemVpbWFnZVtpXSA9IHZkZWMtPmNvZGVjX2luZm8uc2l6 ZWltYWdlW2ldOwo+ID4+IC0gICAgIH0KPiA+PiArICAgICBtZW1zZXQoJmYsIDAsIHNpemVvZihm KSk7Cj4gPj4gKyAgICAgZi50eXBlID0gaW5zdC0+Y2FwX2Zvcm1hdC50eXBlOwo+ID4+ICsgICAg IGYuZm10LnBpeF9tcC5waXhlbGZvcm1hdCA9IHZkZWMtPmNvZGVjX2luZm8ucGl4Zm10Owo+ID4+ ICsgICAgIGYuZm10LnBpeF9tcC53aWR0aCA9IHZkZWMtPmNvZGVjX2luZm8uZGVjb2RlZF93aWR0 aDsKPiA+PiArICAgICBmLmZtdC5waXhfbXAuaGVpZ2h0ID0gdmRlYy0+Y29kZWNfaW5mby5kZWNv ZGVkX2hlaWdodDsKPiA+PiAgICAgICBpZiAodmRlYy0+Y29kZWNfaW5mby5wcm9ncmVzc2l2ZSkK PiA+PiAtICAgICAgICAgICAgIGluc3QtPmNhcF9mb3JtYXQuZmllbGQgPSBWNEwyX0ZJRUxEX05P TkU7Cj4gPj4gKyAgICAgICAgICAgICBmLmZtdC5waXhfbXAuZmllbGQgPSBWNEwyX0ZJRUxEX05P TkU7Cj4gPj4gICAgICAgZWxzZQo+ID4+IC0gICAgICAgICAgICAgaW5zdC0+Y2FwX2Zvcm1hdC5m aWVsZCA9IFY0TDJfRklFTERfU0VRX1RCOwo+ID4+ICsgICAgICAgICAgICAgZi5mbXQucGl4X21w LmZpZWxkID0gVjRMMl9GSUVMRF9TRVFfVEI7Cj4gPj4gKyAgICAgdnB1X3RyeV9mbXRfY29tbW9u KGluc3QsICZmLCAmaW5zdC0+Y2FwX2Zvcm1hdCk7Cj4gPj4gKwo+ID4+ICsgICAgIGluc3QtPm91 dF9mb3JtYXQud2lkdGggPSB2ZGVjLT5jb2RlY19pbmZvLndpZHRoOwo+ID4+ICsgICAgIGluc3Qt Pm91dF9mb3JtYXQuaGVpZ2h0ID0gdmRlYy0+Y29kZWNfaW5mby5oZWlnaHQ7Cj4gPj4gIH0KPiA+ Pgo+ID4+ICBzdGF0aWMgdm9pZCB2ZGVjX2luaXRfY3JvcChzdHJ1Y3QgdnB1X2luc3QgKmluc3Qp IEBAIC05NjYsNyArOTcyLDEwCj4gPj4gQEAgc3RhdGljIGludCB2ZGVjX3Jlc3BvbnNlX2ZyYW1l KHN0cnVjdCB2cHVfaW5zdCAqaW5zdCwgc3RydWN0Cj4gPnZiMl92NGwyX2J1ZmZlciAqdmIKPiA+ PiAgICAgICBpbmZvLnRhZyA9IHZkZWMtPnNlcV90YWc7Cj4gPj4gICAgICAgaW5mby5sdW1hX2Fk ZHIgPSB2cHVfZ2V0X3ZiX3BoeV9hZGRyKCZ2YnVmLT52YjJfYnVmLCAwKTsKPiA+PiAgICAgICBp bmZvLmx1bWFfc2l6ZSA9IGluc3QtPmNhcF9mb3JtYXQuc2l6ZWltYWdlWzBdOwo+ID4+IC0gICAg IGluZm8uY2hyb21hX2FkZHIgPSB2cHVfZ2V0X3ZiX3BoeV9hZGRyKCZ2YnVmLT52YjJfYnVmLCAx KTsKPiA+PiArICAgICBpZiAodmJ1Zi0+dmIyX2J1Zi5udW1fcGxhbmVzID4gMSkKPiA+PiArICAg ICAgICAgICAgIGluZm8uY2hyb21hX2FkZHIgPSB2cHVfZ2V0X3ZiX3BoeV9hZGRyKCZ2YnVmLT52 YjJfYnVmLAo+ID4xKTsKPiA+PiArICAgICBlbHNlCj4gPj4gKyAgICAgICAgICAgICBpbmZvLmNo cm9tYV9hZGRyID0gaW5mby5sdW1hX2FkZHIgKyBpbmZvLmx1bWFfc2l6ZTsKPiA+PiAgICAgICBp bmZvLmNocm9tYXVfc2l6ZSA9IGluc3QtPmNhcF9mb3JtYXQuc2l6ZWltYWdlWzFdOwo+ID4+ICAg ICAgIGluZm8uYnl0ZXNwZXJsaW5lID0gaW5zdC0+Y2FwX2Zvcm1hdC5ieXRlc3BlcmxpbmVbMF07 Cj4gPj4gICAgICAgcmV0ID0gdnB1X3Nlc3Npb25fYWxsb2NfZnMoaW5zdCwgJmluZm8pOyBAQCAt OTc1LDcgKzk4NCw3IEBACj4gPj4gc3RhdGljIGludCB2ZGVjX3Jlc3BvbnNlX2ZyYW1lKHN0cnVj dCB2cHVfaW5zdCAqaW5zdCwgc3RydWN0Cj4gPj4gdmIyX3Y0bDJfYnVmZmVyICp2Ygo+ID4+Cj4g Pj4gICAgICAgdnB1X2J1Zi0+dGFnID0gaW5mby50YWc7Cj4gPj4gICAgICAgdnB1X2J1Zi0+bHVt YSA9IGluZm8ubHVtYV9hZGRyOwo+ID4+IC0gICAgIHZwdV9idWYtPmNocm9tYV91ID0gaW5mby5j aHJvbWF1X3NpemU7Cj4gPj4gKyAgICAgdnB1X2J1Zi0+Y2hyb21hX3UgPSBpbmZvLmNocm9tYV9h ZGRyOwo+ID4+ICAgICAgIHZwdV9idWYtPmNocm9tYV92ID0gMDsKPiA+PiAgICAgICB2cHVfc2V0 X2J1ZmZlcl9zdGF0ZSh2YnVmLCBWUFVfQlVGX1NUQVRFX0lOVVNFKTsKPiA+PiAgICAgICB2ZGVj LT5zbG90c1tpbmZvLmlkXSA9IHZwdV9idWY7Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vYW1waGlvbi92ZW5jLmMKPiA+PiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v YW1waGlvbi92ZW5jLmMKPiA+PiBpbmRleCAzNzIxMmYwODdmZGQuLjA2MGExZWU3OGIxNyAxMDA2 NDQKPiA+PiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdmVuYy5jCj4gPj4g KysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9uL3ZlbmMuYwo+ID4+IEBAIC02OSwx MyArNjksMTYgQEAgc3RydWN0IHZlbmNfZnJhbWVfdCB7ICBzdGF0aWMgY29uc3Qgc3RydWN0Cj4g Pj4gdnB1X2Zvcm1hdCB2ZW5jX2Zvcm1hdHNbXSA9IHsKPiA+PiAgICAgICB7Cj4gPj4gICAgICAg ICAgICAgICAucGl4Zm10ID0gVjRMMl9QSVhfRk1UX05WMTJNLAo+ID4+IC0gICAgICAgICAgICAg Lm51bV9wbGFuZXMgPSAyLAo+ID4+ICsgICAgICAgICAgICAgLm1lbV9wbGFuZXMgPSAyLAo+ID4+ ICsgICAgICAgICAgICAgLmNvbXBfcGxhbmVzID0gMiwKPiA+PiAgICAgICAgICAgICAgIC50eXBl ID0gVjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVRfTVBMQU5FLAo+ID4+ICAgICAgIH0sCj4gPj4g ICAgICAgewo+ID4+ICAgICAgICAgICAgICAgLnBpeGZtdCA9IFY0TDJfUElYX0ZNVF9IMjY0LAo+ ID4+IC0gICAgICAgICAgICAgLm51bV9wbGFuZXMgPSAxLAo+ID4+ICsgICAgICAgICAgICAgLm1l bV9wbGFuZXMgPSAxLAo+ID4+ICsgICAgICAgICAgICAgLmNvbXBfcGxhbmVzID0gMSwKPiA+PiAg ICAgICAgICAgICAgIC50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFX01QTEFORSwK PiA+PiArICAgICAgICAgICAgIC5mbGFncyA9IFY0TDJfRk1UX0ZMQUdfQ09NUFJFU1NFRAo+ID4+ ICAgICAgIH0sCj4gPj4gICAgICAgezAsIDAsIDAsIDB9LAo+ID4+ICB9Owo+ID4+IEBAIC0xNzMs MTQgKzE3NiwxNCBAQCBzdGF0aWMgaW50IHZlbmNfZ19mbXQoc3RydWN0IGZpbGUgKmZpbGUsIHZv aWQgKmZoLAo+ID5zdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCj4gPj4gICAgICAgY3VyX2ZtdCA9IHZw dV9nZXRfZm9ybWF0KGluc3QsIGYtPnR5cGUpOwo+ID4+Cj4gPj4gICAgICAgcGl4bXAtPnBpeGVs Zm9ybWF0ID0gY3VyX2ZtdC0+cGl4Zm10Owo+ID4+IC0gICAgIHBpeG1wLT5udW1fcGxhbmVzID0g Y3VyX2ZtdC0+bnVtX3BsYW5lczsKPiA+PiArICAgICBwaXhtcC0+bnVtX3BsYW5lcyA9IGN1cl9m bXQtPm1lbV9wbGFuZXM7Cj4gPj4gICAgICAgcGl4bXAtPndpZHRoID0gY3VyX2ZtdC0+d2lkdGg7 Cj4gPj4gICAgICAgcGl4bXAtPmhlaWdodCA9IGN1cl9mbXQtPmhlaWdodDsKPiA+PiAgICAgICBw aXhtcC0+ZmllbGQgPSBjdXJfZm10LT5maWVsZDsKPiA+PiAgICAgICBwaXhtcC0+ZmxhZ3MgPSBj dXJfZm10LT5mbGFnczsKPiA+PiAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGl4bXAtPm51bV9wbGFu ZXM7IGkrKykgewo+ID4+ICAgICAgICAgICAgICAgcGl4bXAtPnBsYW5lX2ZtdFtpXS5ieXRlc3Bl cmxpbmUgPSBjdXJfZm10LT5ieXRlc3BlcmxpbmVbaV07Cj4gPj4gLSAgICAgICAgICAgICBwaXht cC0+cGxhbmVfZm10W2ldLnNpemVpbWFnZSA9IGN1cl9mbXQtPnNpemVpbWFnZVtpXTsKPiA+PiAr ICAgICAgICAgICAgIHBpeG1wLT5wbGFuZV9mbXRbaV0uc2l6ZWltYWdlID0KPiA+PiArIHZwdV9n ZXRfZm10X3BsYW5lX3NpemUoY3VyX2ZtdCwgaSk7Cj4gPj4gICAgICAgfQo+ID4+Cj4gPj4gICAg ICAgZi0+Zm10LnBpeF9tcC5jb2xvcnNwYWNlID0gdmVuYy0+cGFyYW1zLmNvbG9yLnByaW1hcmll czsgQEAKPiA+PiAtMTk0LDggKzE5Nyw5IEBAIHN0YXRpYyBpbnQgdmVuY19nX2ZtdChzdHJ1Y3Qg ZmlsZSAqZmlsZSwgdm9pZCAqZmgsCj4gPj4gc3RydWN0IHY0bDJfZm9ybWF0ICpmKSAgc3RhdGlj IGludCB2ZW5jX3RyeV9mbXQoc3RydWN0IGZpbGUgKmZpbGUsCj4gPj4gdm9pZCAqZmgsIHN0cnVj dCB2NGwyX2Zvcm1hdCAqZikgIHsKPiA+PiAgICAgICBzdHJ1Y3QgdnB1X2luc3QgKmluc3QgPSB0 b19pbnN0KGZpbGUpOwo+ID4+ICsgICAgIHN0cnVjdCB2cHVfZm9ybWF0IGZtdDsKPiA+Pgo+ID4+ IC0gICAgIHZwdV90cnlfZm10X2NvbW1vbihpbnN0LCBmKTsKPiA+PiArICAgICB2cHVfdHJ5X2Zt dF9jb21tb24oaW5zdCwgZiwgJmZtdCk7Cj4gPj4KPiA+PiAgICAgICByZXR1cm4gMDsKPiA+PiAg fQo+ID4+IEBAIC0yMDMsMTIgKzIwNywxMSBAQCBzdGF0aWMgaW50IHZlbmNfdHJ5X2ZtdChzdHJ1 Y3QgZmlsZSAqZmlsZSwgdm9pZAo+ID4+ICpmaCwgc3RydWN0IHY0bDJfZm9ybWF0ICpmKSAgc3Rh dGljIGludCB2ZW5jX3NfZm10KHN0cnVjdCBmaWxlICpmaWxlLAo+ID4+IHZvaWQgKmZoLCBzdHJ1 Y3QgdjRsMl9mb3JtYXQgKmYpICB7Cj4gPj4gICAgICAgc3RydWN0IHZwdV9pbnN0ICppbnN0ID0g dG9faW5zdChmaWxlKTsKPiA+PiAtICAgICBjb25zdCBzdHJ1Y3QgdnB1X2Zvcm1hdCAqZm10Owo+ ID4+ICsgICAgIHN0cnVjdCB2cHVfZm9ybWF0IGZtdDsKPiA+PiAgICAgICBzdHJ1Y3QgdnB1X2Zv cm1hdCAqY3VyX2ZtdDsKPiA+PiAgICAgICBzdHJ1Y3QgdmIyX3F1ZXVlICpxOwo+ID4+ICAgICAg IHN0cnVjdCB2ZW5jX3QgKnZlbmMgPSBpbnN0LT5wcml2Owo+ID4+ICAgICAgIHN0cnVjdCB2NGwy X3BpeF9mb3JtYXRfbXBsYW5lICpwaXhfbXAgPSAmZi0+Zm10LnBpeF9tcDsKPiA+PiAtICAgICBp bnQgaTsKPiA+Pgo+ID4+ICAgICAgIHEgPSB2NGwyX20ybV9nZXRfdnEoaW5zdC0+ZmgubTJtX2N0 eCwgZi0+dHlwZSk7Cj4gPj4gICAgICAgaWYgKCFxKQo+ID4+IEBAIC0yMTYsMjQgKzIxOSwxMiBA QCBzdGF0aWMgaW50IHZlbmNfc19mbXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLAo+ID5z dHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCj4gPj4gICAgICAgaWYgKHZiMl9pc19idXN5KHEpKQo+ID4+ ICAgICAgICAgICAgICAgcmV0dXJuIC1FQlVTWTsKPiA+Pgo+ID4+IC0gICAgIGZtdCA9IHZwdV90 cnlfZm10X2NvbW1vbihpbnN0LCBmKTsKPiA+PiAtICAgICBpZiAoIWZtdCkKPiA+PiArICAgICBp ZiAodnB1X3RyeV9mbXRfY29tbW9uKGluc3QsIGYsICZmbXQpKQo+ID4+ICAgICAgICAgICAgICAg cmV0dXJuIC1FSU5WQUw7Cj4gPj4KPiA+PiAgICAgICBjdXJfZm10ID0gdnB1X2dldF9mb3JtYXQo aW5zdCwgZi0+dHlwZSk7Cj4gPj4KPiA+PiAtICAgICBjdXJfZm10LT5waXhmbXQgPSBmbXQtPnBp eGZtdDsKPiA+PiAtICAgICBjdXJfZm10LT5udW1fcGxhbmVzID0gZm10LT5udW1fcGxhbmVzOwo+ ID4+IC0gICAgIGN1cl9mbXQtPmZsYWdzID0gZm10LT5mbGFnczsKPiA+PiAtICAgICBjdXJfZm10 LT53aWR0aCA9IHBpeF9tcC0+d2lkdGg7Cj4gPj4gLSAgICAgY3VyX2ZtdC0+aGVpZ2h0ID0gcGl4 X21wLT5oZWlnaHQ7Cj4gPj4gLSAgICAgZm9yIChpID0gMDsgaSA8IGZtdC0+bnVtX3BsYW5lczsg aSsrKSB7Cj4gPj4gLSAgICAgICAgICAgICBjdXJfZm10LT5zaXplaW1hZ2VbaV0gPSBwaXhfbXAt PnBsYW5lX2ZtdFtpXS5zaXplaW1hZ2U7Cj4gPj4gLSAgICAgICAgICAgICBjdXJfZm10LT5ieXRl c3BlcmxpbmVbaV0gPSBwaXhfbXAtPnBsYW5lX2ZtdFtpXS5ieXRlc3BlcmxpbmU7Cj4gPj4gLSAg ICAgfQo+ID4+IC0KPiA+PiAtICAgICBpZiAocGl4X21wLT5maWVsZCAhPSBWNEwyX0ZJRUxEX0FO WSkKPiA+PiAtICAgICAgICAgICAgIGN1cl9mbXQtPmZpZWxkID0gcGl4X21wLT5maWVsZDsKPiA+ PiArICAgICBtZW1jcHkoY3VyX2ZtdCwgJmZtdCwgc2l6ZW9mKCpjdXJfZm10KSk7Cj4gPj4KPiA+ PiAgICAgICBpZiAoVjRMMl9UWVBFX0lTX09VVFBVVChmLT50eXBlKSkgewo+ID4+ICAgICAgICAg ICAgICAgdmVuYy0+cGFyYW1zLmlucHV0X2Zvcm1hdCA9IGN1cl9mbXQtPnBpeGZtdDsgZGlmZiAt LWdpdAo+ID4+IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9uL3ZwdS5oCj4gPj4gYi9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1LmgKPiA+PiBpbmRleCBmOTE0ZGU2ZWQ4 MWUuLjk5ODU5MWZhNWI4NSAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L2FtcGhpb24vdnB1LmgKPiA+PiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24v dnB1LmgKPiA+PiBAQCAtODQsNyArODQsOCBAQCBzdHJ1Y3QgdnB1X2RldiB7Cj4gPj4KPiA+PiAg c3RydWN0IHZwdV9mb3JtYXQgewo+ID4+ICAgICAgIHUzMiBwaXhmbXQ7Cj4gPj4gLSAgICAgdW5z aWduZWQgaW50IG51bV9wbGFuZXM7Cj4gPj4gKyAgICAgdTMyIG1lbV9wbGFuZXM7Cj4gPj4gKyAg ICAgdTMyIGNvbXBfcGxhbmVzOwo+ID4+ICAgICAgIHUzMiB0eXBlOwo+ID4+ICAgICAgIHUzMiBm bGFnczsKPiA+PiAgICAgICB1MzIgd2lkdGg7Cj4gPj4gQEAgLTkyLDYgKzkzLDcgQEAgc3RydWN0 IHZwdV9mb3JtYXQgewo+ID4+ICAgICAgIHUzMiBzaXplaW1hZ2VbVklERU9fTUFYX1BMQU5FU107 Cj4gPj4gICAgICAgdTMyIGJ5dGVzcGVybGluZVtWSURFT19NQVhfUExBTkVTXTsKPiA+PiAgICAg ICB1MzIgZmllbGQ7Cj4gPj4gKyAgICAgdTMyIHNpYmxpbmc7Cj4gPj4gIH07Cj4gPj4KPiA+PiAg c3RydWN0IHZwdV9jb3JlX3Jlc291cmNlcyB7Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vYW1waGlvbi92cHVfZGJnLmMKPiA+PiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vYW1waGlvbi92cHVfZGJnLmMKPiA+PiBpbmRleCBmNzJjOGE1MDZiMjIuLmM0MWM5ODk2OTEy YyAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1X2Ri Zy5jCj4gPj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9uL3ZwdV9kYmcuYwo+ ID4+IEBAIC04OSw5ICs4OSw5IEBAIHN0YXRpYyBpbnQgdnB1X2RiZ19pbnN0YW5jZShzdHJ1Y3Qg c2VxX2ZpbGUgKnMsIHZvaWQKPiA+KmRhdGEpCj4gPj4gICAgICAgICAgICAgICAgICAgICAgIHZx LT5sYXN0X2J1ZmZlcl9kZXF1ZXVlZCk7Cj4gPj4gICAgICAgaWYgKHNlcV93cml0ZShzLCBzdHIs IG51bSkpCj4gPj4gICAgICAgICAgICAgICByZXR1cm4gMDsKPiA+PiAtICAgICBmb3IgKGkgPSAw OyBpIDwgaW5zdC0+b3V0X2Zvcm1hdC5udW1fcGxhbmVzOyBpKyspIHsKPiA+PiArICAgICBmb3Ig KGkgPSAwOyBpIDwgaW5zdC0+b3V0X2Zvcm1hdC5tZW1fcGxhbmVzOyBpKyspIHsKPiA+PiAgICAg ICAgICAgICAgIG51bSA9IHNjbnByaW50ZihzdHIsIHNpemVvZihzdHIpLCAiICVkKCVkKSIsCj4g Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdC0+b3V0X2Zvcm1hdC5zaXplaW1h Z2VbaV0sCj4gPj4gKwo+ID4+ICsgdnB1X2dldF9mbXRfcGxhbmVfc2l6ZSgmaW5zdC0+b3V0X2Zv cm1hdCwgaSksCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdC0+b3V0X2Zv cm1hdC5ieXRlc3BlcmxpbmVbaV0pOwo+ID4+ICAgICAgICAgICAgICAgaWYgKHNlcV93cml0ZShz LCBzdHIsIG51bSkpCj4gPj4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwo+ID4+IEBA IC0xMTMsOSArMTEzLDkgQEAgc3RhdGljIGludCB2cHVfZGJnX2luc3RhbmNlKHN0cnVjdCBzZXFf ZmlsZSAqcywgdm9pZAo+ID4qZGF0YSkKPiA+PiAgICAgICAgICAgICAgICAgICAgICAgdnEtPmxh c3RfYnVmZmVyX2RlcXVldWVkKTsKPiA+PiAgICAgICBpZiAoc2VxX3dyaXRlKHMsIHN0ciwgbnVt KSkKPiA+PiAgICAgICAgICAgICAgIHJldHVybiAwOwo+ID4+IC0gICAgIGZvciAoaSA9IDA7IGkg PCBpbnN0LT5jYXBfZm9ybWF0Lm51bV9wbGFuZXM7IGkrKykgewo+ID4+ICsgICAgIGZvciAoaSA9 IDA7IGkgPCBpbnN0LT5jYXBfZm9ybWF0Lm1lbV9wbGFuZXM7IGkrKykgewo+ID4+ICAgICAgICAg ICAgICAgbnVtID0gc2NucHJpbnRmKHN0ciwgc2l6ZW9mKHN0ciksICIgJWQoJWQpIiwKPiA+PiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0LT5jYXBfZm9ybWF0LnNpemVpbWFnZVtp XSwKPiA+PiArCj4gPj4gKyB2cHVfZ2V0X2ZtdF9wbGFuZV9zaXplKCZpbnN0LT5jYXBfZm9ybWF0 LCBpKSwKPiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0LT5jYXBfZm9ybWF0 LmJ5dGVzcGVybGluZVtpXSk7Cj4gPj4gICAgICAgICAgICAgICBpZiAoc2VxX3dyaXRlKHMsIHN0 ciwgbnVtKSkKPiA+PiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92cHVfaGVscGVycy5jCj4gPj4g Yi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1X2hlbHBlcnMuYwo+ID4+IGluZGV4 IGU5YWViMzQ1M2RmYy4uZGI4ZjQ3MWI5MTg3IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vYW1waGlvbi92cHVfaGVscGVycy5jCj4gPj4gKysrIGIvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9hbXBoaW9uL3ZwdV9oZWxwZXJzLmMKPiA+PiBAQCAtNTksNiArNTksMzkgQEAg Y29uc3Qgc3RydWN0IHZwdV9mb3JtYXQKPiA+KnZwdV9oZWxwZXJfZmluZF9mb3JtYXQoc3RydWN0 IHZwdV9pbnN0ICppbnN0LCB1MzIgdHlwZSwKPiA+PiAgICAgICByZXR1cm4gTlVMTDsKPiA+PiAg fQo+ID4+Cj4gPj4gK2NvbnN0IHN0cnVjdCB2cHVfZm9ybWF0ICp2cHVfaGVscGVyX2ZpbmRfc2li bGluZyhzdHJ1Y3QgdnB1X2luc3QKPiA+PiArKmluc3QsIHUzMiB0eXBlLCB1MzIgcGl4ZWxmbXQp IHsKPiA+PiArICAgICBjb25zdCBzdHJ1Y3QgdnB1X2Zvcm1hdCAqZm10Owo+ID4+ICsgICAgIGNv bnN0IHN0cnVjdCB2cHVfZm9ybWF0ICpzaWJsaW5nOwo+ID4+ICsKPiA+PiArICAgICBmbXQgPSB2 cHVfaGVscGVyX2ZpbmRfZm9ybWF0KGluc3QsIHR5cGUsIHBpeGVsZm10KTsKPiA+PiArICAgICBp ZiAoIWZtdCkKPiA+PiArICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ID4+ICsgICAgIGlmICgh Zm10LT5zaWJsaW5nKQo+ID4+ICsgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gPj4gKyAgICAg c2libGluZyA9IHZwdV9oZWxwZXJfZmluZF9mb3JtYXQoaW5zdCwgdHlwZSwgZm10LT5zaWJsaW5n KTsKPiA+PiArICAgICBpZiAoIXNpYmxpbmcpCj4gPj4gKyAgICAgICAgICAgICByZXR1cm4gTlVM TDsKPiA+PiArICAgICBpZiAoc2libGluZy0+c2libGluZyAhPSBmbXQtPnBpeGZtdCkKPiA+PiAr ICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ID4+ICsgICAgIGlmIChzaWJsaW5nLT5jb21wX3Bs YW5lcyAhPSBmbXQtPmNvbXBfcGxhbmVzKQo+ID4+ICsgICAgICAgICAgICAgcmV0dXJuIE5VTEw7 Cj4gPj4gKyAgICAgcmV0dXJuIHNpYmxpbmc7Cj4gPj4gK30KPiA+PiArCj4gPj4gK2Jvb2wgdnB1 X2hlbHBlcl9tYXRjaF9mb3JtYXQoc3RydWN0IHZwdV9pbnN0ICppbnN0LCB1MzIgdHlwZSwgdTMy Cj4gPj4gK2ZtdGEsIHUzMiBmbXRiKSB7Cj4gPj4gKyAgICAgY29uc3Qgc3RydWN0IHZwdV9mb3Jt YXQgKnNpYmxpbmc7Cj4gPj4gKwo+ID4+ICsgICAgIGlmIChmbXRhID09IGZtdGIpCj4gPj4gKyAg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPiA+PiArCj4gPj4gKyAgICAgc2libGluZyA9IHZwdV9o ZWxwZXJfZmluZF9zaWJsaW5nKGluc3QsIHR5cGUsIGZtdGEpOwo+ID4+ICsgICAgIGlmIChzaWJs aW5nICYmIHNpYmxpbmctPnBpeGZtdCA9PSBmbXRiKQo+ID4+ICsgICAgICAgICAgICAgcmV0dXJu IHRydWU7Cj4gPj4gKyAgICAgcmV0dXJuIGZhbHNlOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICBjb25z dCBzdHJ1Y3QgdnB1X2Zvcm1hdCAqdnB1X2hlbHBlcl9lbnVtX2Zvcm1hdChzdHJ1Y3QgdnB1X2lu c3QKPiA+PiAqaW5zdCwgdTMyIHR5cGUsIGludCBpbmRleCkgIHsKPiA+PiAgICAgICBjb25zdCBz dHJ1Y3QgdnB1X2Zvcm1hdCAqcGZtdDsKPiA+PiBAQCAtMTIzLDkgKzE1NiwxMCBAQCBzdGF0aWMg dTMyIGdldF9udjEyX3BsYW5lX3NpemUodTMyIHdpZHRoLCB1MzIKPiA+aGVpZ2h0LCBpbnQgcGxh bmVfbm8sCj4gPj4gICAgICAgdTMyIGJ5dGVzcGVybGluZTsKPiA+PiAgICAgICB1MzIgc2l6ZSA9 IDA7Cj4gPj4KPiA+PiAtICAgICBieXRlc3BlcmxpbmUgPSBBTElHTih3aWR0aCwgc3RyaWRlKTsK PiA+PiArICAgICBieXRlc3BlcmxpbmUgPSB3aWR0aDsKPiA+PiAgICAgICBpZiAocGJsKQo+ID4+ ICAgICAgICAgICAgICAgYnl0ZXNwZXJsaW5lID0gbWF4KGJ5dGVzcGVybGluZSwgKnBibCk7Cj4g Pj4gKyAgICAgYnl0ZXNwZXJsaW5lID0gQUxJR04oYnl0ZXNwZXJsaW5lLCBzdHJpZGUpOwo+ID4+ ICAgICAgIGhlaWdodCA9IEFMSUdOKGhlaWdodCwgMik7Cj4gPj4gICAgICAgaWYgKHBsYW5lX25v ID09IDApCj4gPj4gICAgICAgICAgICAgICBzaXplID0gYnl0ZXNwZXJsaW5lICogaGVpZ2h0OyBA QCAtMTQ4LDEzICsxODIsMTMgQEAKPiA+PiBzdGF0aWMgdTMyIGdldF90aWxlZF84bDEyOF9wbGFu ZV9zaXplKHUzMiBmbXQsIHUzMiB3aWR0aCwgdTMyIGhlaWdodCwKPiA+PiBpbnQgcGxhbmVfCj4g Pj4KPiA+PiAgICAgICBpZiAoaW50ZXJsYWNlZCkKPiA+PiAgICAgICAgICAgICAgIGhzKys7Cj4g Pj4gLSAgICAgaWYgKGZtdCA9PSBWNEwyX1BJWF9GTVRfTlYxMk1fMTBCRV84TDEyOCkKPiA+PiAr ICAgICBpZiAoZm10ID09IFY0TDJfUElYX0ZNVF9OVjEyTV8xMEJFXzhMMTI4IHx8IGZtdCA9PQo+ ID4+ICsgVjRMMl9QSVhfRk1UX05WMTJfMTBCRV84TDEyOCkKPiA+PiAgICAgICAgICAgICAgIGJp dGRlcHRoID0gMTA7Cj4gPj4gICAgICAgYnl0ZXNwZXJsaW5lID0gRElWX1JPVU5EX1VQKHdpZHRo ICogYml0ZGVwdGgsIEJJVFNfUEVSX0JZVEUpOwo+ID4+IC0gICAgIGJ5dGVzcGVybGluZSA9IEFM SUdOKGJ5dGVzcGVybGluZSwgMSA8PCB3cyk7Cj4gPj4gLSAgICAgYnl0ZXNwZXJsaW5lID0gQUxJ R04oYnl0ZXNwZXJsaW5lLCBzdHJpZGUpOwo+ID4+ICAgICAgIGlmIChwYmwpCj4gPj4gICAgICAg ICAgICAgICBieXRlc3BlcmxpbmUgPSBtYXgoYnl0ZXNwZXJsaW5lLCAqcGJsKTsKPiA+PiArICAg ICBieXRlc3BlcmxpbmUgPSBBTElHTihieXRlc3BlcmxpbmUsIDEgPDwgd3MpOwo+ID4+ICsgICAg IGJ5dGVzcGVybGluZSA9IEFMSUdOKGJ5dGVzcGVybGluZSwgc3RyaWRlKTsKPiA+PiAgICAgICBo ZWlnaHQgPSBBTElHTihoZWlnaHQsIDEgPDwgaHMpOwo+ID4+ICAgICAgIGlmIChwbGFuZV9ubyA9 PSAwKQo+ID4+ICAgICAgICAgICAgICAgc2l6ZSA9IGJ5dGVzcGVybGluZSAqIGhlaWdodDsgQEAg LTE3Miw5ICsyMDYsMTAgQEAKPiA+PiBzdGF0aWMgdTMyIGdldF9kZWZhdWx0X3BsYW5lX3NpemUo dTMyIHdpZHRoLCB1MzIgaGVpZ2h0LCBpbnQgcGxhbmVfbm8sCj4gPj4gICAgICAgdTMyIGJ5dGVz cGVybGluZTsKPiA+PiAgICAgICB1MzIgc2l6ZSA9IDA7Cj4gPj4KPiA+PiAtICAgICBieXRlc3Bl cmxpbmUgPSBBTElHTih3aWR0aCwgc3RyaWRlKTsKPiA+PiArICAgICBieXRlc3BlcmxpbmUgPSB3 aWR0aDsKPiA+PiAgICAgICBpZiAocGJsKQo+ID4+ICAgICAgICAgICAgICAgYnl0ZXNwZXJsaW5l ID0gbWF4KGJ5dGVzcGVybGluZSwgKnBibCk7Cj4gPj4gKyAgICAgYnl0ZXNwZXJsaW5lID0gQUxJ R04oYnl0ZXNwZXJsaW5lLCBzdHJpZGUpOwo+ID4+ICAgICAgIGlmIChwbGFuZV9ubyA9PSAwKQo+ ID4+ICAgICAgICAgICAgICAgc2l6ZSA9IGJ5dGVzcGVybGluZSAqIGhlaWdodDsKPiA+PiAgICAg ICBpZiAocGJsKQo+ID4+IEBAIC0xODcsOSArMjIyLDEyIEBAIHUzMiB2cHVfaGVscGVyX2dldF9w bGFuZV9zaXplKHUzMiBmbXQsIHUzMiB3LCB1MzIKPiA+aCwgaW50IHBsYW5lX25vLAo+ID4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgc3RyaWRlLCB1MzIgaW50ZXJsYWNlZCwgdTMy ICpwYmwpICB7Cj4gPj4gICAgICAgc3dpdGNoIChmbXQpIHsKPiA+PiArICAgICBjYXNlIFY0TDJf UElYX0ZNVF9OVjEyOgo+ID4+ICAgICAgIGNhc2UgVjRMMl9QSVhfRk1UX05WMTJNOgo+ID4+ICAg ICAgICAgICAgICAgcmV0dXJuIGdldF9udjEyX3BsYW5lX3NpemUodywgaCwgcGxhbmVfbm8sIHN0 cmlkZSwKPiA+PiBpbnRlcmxhY2VkLCBwYmwpOwo+ID4+ICsgICAgIGNhc2UgVjRMMl9QSVhfRk1U X05WMTJfOEwxMjg6Cj4gPj4gICAgICAgY2FzZSBWNEwyX1BJWF9GTVRfTlYxMk1fOEwxMjg6Cj4g Pj4gKyAgICAgY2FzZSBWNEwyX1BJWF9GTVRfTlYxMl8xMEJFXzhMMTI4Ogo+ID4+ICAgICAgIGNh c2UgVjRMMl9QSVhfRk1UX05WMTJNXzEwQkVfOEwxMjg6Cj4gPj4gICAgICAgICAgICAgICByZXR1 cm4gZ2V0X3RpbGVkXzhsMTI4X3BsYW5lX3NpemUoZm10LCB3LCBoLCBwbGFuZV9ubywgc3RyaWRl LAo+ID5pbnRlcmxhY2VkLCBwYmwpOwo+ID4+ICAgICAgIGRlZmF1bHQ6Cj4gPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92cHVfaGVscGVycy5oCj4gPj4gYi9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1X2hlbHBlcnMuaAo+ID4+IGluZGV4IGJj MjgzNTA5NThiZS4uMGVhZGRiMDcxOTBkIDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vYW1waGlvbi92cHVfaGVscGVycy5oCj4gPj4gKysrIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9hbXBoaW9uL3ZwdV9oZWxwZXJzLmgKPiA+PiBAQCAtMTQsNiArMTQsOCBAQCBzdHJ1 Y3QgdnB1X3BhaXIgewo+ID4+ICBpbnQgdnB1X2hlbHBlcl9maW5kX2luX2FycmF5X3U4KGNvbnN0 IHU4ICphcnJheSwgdTMyIHNpemUsIHUzMiB4KTsKPiA+PiBib29sIHZwdV9oZWxwZXJfY2hlY2tf dHlwZShzdHJ1Y3QgdnB1X2luc3QgKmluc3QsIHUzMiB0eXBlKTsgIGNvbnN0Cj4gPj4gc3RydWN0 IHZwdV9mb3JtYXQgKnZwdV9oZWxwZXJfZmluZF9mb3JtYXQoc3RydWN0IHZwdV9pbnN0ICppbnN0 LCB1MzIKPiA+PiB0eXBlLCB1MzIgcGl4ZWxmbXQpOwo+ID4+ICtjb25zdCBzdHJ1Y3QgdnB1X2Zv cm1hdCAqdnB1X2hlbHBlcl9maW5kX3NpYmxpbmcoc3RydWN0IHZwdV9pbnN0Cj4gPj4gKyppbnN0 LCB1MzIgdHlwZSwgdTMyIHBpeGVsZm10KTsgYm9vbCB2cHVfaGVscGVyX21hdGNoX2Zvcm1hdChz dHJ1Y3QKPiA+PiArdnB1X2luc3QgKmluc3QsIHUzMiB0eXBlLCB1MzIgZm10YSwgdTMyIGZtdGIp Owo+ID4+ICBjb25zdCBzdHJ1Y3QgdnB1X2Zvcm1hdCAqdnB1X2hlbHBlcl9lbnVtX2Zvcm1hdChz dHJ1Y3QgdnB1X2luc3QKPiA+PiAqaW5zdCwgdTMyIHR5cGUsIGludCBpbmRleCk7Cj4gPj4gIHUz MiB2cHVfaGVscGVyX3ZhbGlkX2ZyYW1lX3dpZHRoKHN0cnVjdCB2cHVfaW5zdCAqaW5zdCwgdTMy IHdpZHRoKTsKPiA+PiAgdTMyIHZwdV9oZWxwZXJfdmFsaWRfZnJhbWVfaGVpZ2h0KHN0cnVjdCB2 cHVfaW5zdCAqaW5zdCwgdTMyIGhlaWdodCk7Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vYW1waGlvbi92cHVfbWFsb25lLmMKPiA+PiBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vYW1waGlvbi92cHVfbWFsb25lLmMKPiA+PiBpbmRleCA1MWUwNzAyZjlhZTEuLjY5ZDlh MjI2OWZjZSAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24v dnB1X21hbG9uZS5jCj4gPj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9uL3Zw dV9tYWxvbmUuYwo+ID4+IEBAIC01ODMsNyArNTgzLDggQEAgYm9vbCB2cHVfbWFsb25lX2NoZWNr X2ZtdChlbnVtIHZwdV9jb3JlX3R5cGUKPiA+dHlwZSwgdTMyIHBpeGVsZm10KQo+ID4+ICAgICAg IGlmICghdnB1X2lteDhxX2NoZWNrX2ZtdCh0eXBlLCBwaXhlbGZtdCkpCj4gPj4gICAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7Cj4gPj4KPiA+PiAtICAgICBpZiAocGl4ZWxmbXQgPT0gVjRMMl9Q SVhfRk1UX05WMTJNXzhMMTI4IHx8IHBpeGVsZm10ID09Cj4gPlY0TDJfUElYX0ZNVF9OVjEyTV8x MEJFXzhMMTI4KQo+ID4+ICsgICAgIGlmIChwaXhlbGZtdCA9PSBWNEwyX1BJWF9GTVRfTlYxMl84 TDEyOCB8fCBwaXhlbGZtdCA9PQo+ID5WNEwyX1BJWF9GTVRfTlYxMl8xMEJFXzhMMTI4IHx8Cj4g Pj4gKyAgICAgICAgIHBpeGVsZm10ID09IFY0TDJfUElYX0ZNVF9OVjEyTV84TDEyOCB8fCBwaXhl bGZtdCA9PQo+ID4+ICsgVjRMMl9QSVhfRk1UX05WMTJNXzEwQkVfOEwxMjgpCj4gPj4gICAgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKPiA+PiAgICAgICBpZiAodnB1X21hbG9uZV9mb3JtYXRfcmVt YXAocGl4ZWxmbXQpID09IE1BTE9ORV9GTVRfTlVMTCkKPiA+PiAgICAgICAgICAgICAgIHJldHVy biBmYWxzZTsKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9u L3ZwdV92NGwyLmMKPiA+PiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92cHVfdjRs Mi5jCj4gPj4gaW5kZXggOGEzZWVkOTU3YWU2Li44N2NjZTU1MmU5MDYgMTAwNjQ0Cj4gPj4gLS0t IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9uL3ZwdV92NGwyLmMKPiA+PiArKysgYi9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1X3Y0bDIuYwo+ID4+IEBAIC0xNDAsNTEg KzE0MCwxMzUgQEAgYm9vbCB2cHVfaXNfc291cmNlX2VtcHR5KHN0cnVjdCB2cHVfaW5zdCAqaW5z dCkKPiA+PiAgICAgICByZXR1cm4gdHJ1ZTsKPiA+PiAgfQo+ID4+Cj4gPj4gLWNvbnN0IHN0cnVj dCB2cHVfZm9ybWF0ICp2cHVfdHJ5X2ZtdF9jb21tb24oc3RydWN0IHZwdV9pbnN0ICppbnN0LAo+ ID4+IHN0cnVjdCB2NGwyX2Zvcm1hdCAqZikKPiA+PiArc3RhdGljIGludCB2cHVfaW5pdF9mb3Jt YXQoc3RydWN0IHZwdV9pbnN0ICppbnN0LCBzdHJ1Y3QgdnB1X2Zvcm1hdAo+ID4+ICsqZm10KSB7 Cj4gPj4gKyAgICAgY29uc3Qgc3RydWN0IHZwdV9mb3JtYXQgKmluZm87Cj4gPj4gKwo+ID4+ICsg ICAgIGluZm8gPSB2cHVfaGVscGVyX2ZpbmRfZm9ybWF0KGluc3QsIGZtdC0+dHlwZSwgZm10LT5w aXhmbXQpOwo+ID4+ICsgICAgIGlmICghaW5mbykgewo+ID4+ICsgICAgICAgICAgICAgaW5mbyA9 IHZwdV9oZWxwZXJfZW51bV9mb3JtYXQoaW5zdCwgZm10LT50eXBlLCAwKTsKPiA+PiArICAgICAg ICAgICAgIGlmICghaW5mbykKPiA+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5W QUw7Cj4gPj4gKyAgICAgfQo+ID4+ICsgICAgIG1lbWNweShmbXQsIGluZm8sIHNpemVvZigqZm10 KSk7Cj4gPj4gKwo+ID4+ICsgICAgIHJldHVybiAwOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0 aWMgaW50IHZwdV9jYWxjX2ZtdF9ieXRlc3BlcmxpbmUoc3RydWN0IHY0bDJfZm9ybWF0ICpmLCBz dHJ1Y3QKPiA+PiArdnB1X2Zvcm1hdCAqZm10KQo+ID4+ICB7Cj4gPj4gICAgICAgc3RydWN0IHY0 bDJfcGl4X2Zvcm1hdF9tcGxhbmUgKnBpeG1wID0gJmYtPmZtdC5waXhfbXA7Cj4gPj4gLSAgICAg dTMyIHR5cGUgPSBmLT50eXBlOwo+ID4+ICsgICAgIGludCBpOwo+ID4+ICsKPiA+PiArICAgICBp ZiAoZm10LT5mbGFncyAmIFY0TDJfRk1UX0ZMQUdfQ09NUFJFU1NFRCkgewo+ID4+ICsgICAgICAg ICAgICAgZm9yIChpID0gMDsgaSA8IGZtdC0+Y29tcF9wbGFuZXM7IGkrKykKPiA+PiArICAgICAg ICAgICAgICAgICAgICAgZm10LT5ieXRlc3BlcmxpbmVbaV0gPSAwOwo+ID4+ICsgICAgICAgICAg ICAgcmV0dXJuIDA7Cj4gPj4gKyAgICAgfQo+ID4+ICsgICAgIGlmIChwaXhtcC0+bnVtX3BsYW5l cyA9PSBmbXQtPmNvbXBfcGxhbmVzKSB7Cj4gPj4gKyAgICAgICAgICAgICBmb3IgKGkgPSAwOyBp IDwgZm10LT5jb21wX3BsYW5lczsgaSsrKQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICBmbXQt PmJ5dGVzcGVybGluZVtpXSA9Cj4gPnBpeG1wLT5wbGFuZV9mbXRbaV0uYnl0ZXNwZXJsaW5lOwo+ ID4+ICsgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPj4gKyAgICAgfQo+ID4+ICsgICAgIGlmIChw aXhtcC0+bnVtX3BsYW5lcyA+IDEpCj4gPj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsK PiA+PiArCj4gPj4gKyAgICAgLyphbXBoaW9uIHZwdSBvbmx5IHN1cHBvcnQgbnYxMiBhbmQgbnYx MiB0aWxlZCwKPiA+PiArICAgICAgKiBzbyB0aGUgYnl0ZXNwZXJsaW5lIG9mIGx1bWEgYW5kIGNo cm9tYSBzaG91bGQgYmUgc2FtZQo+ID4+ICsgICAgICAqLwo+ID4+ICsgICAgIGZvciAoaSA9IDA7 IGkgPCBmbXQtPmNvbXBfcGxhbmVzOyBpKyspCj4gPj4gKyAgICAgICAgICAgICBmbXQtPmJ5dGVz cGVybGluZVtpXSA9IHBpeG1wLT5wbGFuZV9mbXRbMF0uYnl0ZXNwZXJsaW5lOwo+ID4+ICsKPiA+ PiArICAgICByZXR1cm4gMDsKPiA+PiArfQo+ID4+ICsKPiA+PiArc3RhdGljIGludCB2cHVfY2Fs Y19mbXRfc2l6ZWltYWdlKHN0cnVjdCB2cHVfaW5zdCAqaW5zdCwgc3RydWN0Cj4gPj4gK3ZwdV9m b3JtYXQgKmZtdCkgewo+ID4+ICAgICAgIHUzMiBzdHJpZGUgPSAxOwo+ID4+IC0gICAgIHUzMiBi eXRlc3BlcmxpbmU7Cj4gPj4gLSAgICAgdTMyIHNpemVpbWFnZTsKPiA+PiAtICAgICBjb25zdCBz dHJ1Y3QgdnB1X2Zvcm1hdCAqZm10Owo+ID4+IC0gICAgIGNvbnN0IHN0cnVjdCB2cHVfY29yZV9y ZXNvdXJjZXMgKnJlczsKPiA+PiAgICAgICBpbnQgaTsKPiA+Pgo+ID4+IC0gICAgIGZtdCA9IHZw dV9oZWxwZXJfZmluZF9mb3JtYXQoaW5zdCwgdHlwZSwgcGl4bXAtPnBpeGVsZm9ybWF0KTsKPiA+ PiAtICAgICBpZiAoIWZtdCkgewo+ID4+IC0gICAgICAgICAgICAgZm10ID0gdnB1X2hlbHBlcl9l bnVtX2Zvcm1hdChpbnN0LCB0eXBlLCAwKTsKPiA+PiAtICAgICAgICAgICAgIGlmICghZm10KQo+ ID4+IC0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiA+PiAtICAgICAgICAgICAg IHBpeG1wLT5waXhlbGZvcm1hdCA9IGZtdC0+cGl4Zm10Owo+ID4+ICsgICAgIGlmICghKGZtdC0+ ZmxhZ3MgJiBWNEwyX0ZNVF9GTEFHX0NPTVBSRVNTRUQpKSB7Cj4gPj4gKyAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgdnB1X2NvcmVfcmVzb3VyY2VzICpyZXMgPQo+ID4+ICsgdnB1X2dldF9yZXNv dXJjZShpbnN0KTsKPiA+PiArCj4gPj4gKyAgICAgICAgICAgICBpZiAocmVzKQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgICBzdHJpZGUgPSByZXMtPnN0cmlkZTsKPiA+PiAgICAgICB9Cj4gPj4K PiA+PiAtICAgICByZXMgPSB2cHVfZ2V0X3Jlc291cmNlKGluc3QpOwo+ID4+IC0gICAgIGlmIChy ZXMpCj4gPj4gLSAgICAgICAgICAgICBzdHJpZGUgPSByZXMtPnN0cmlkZTsKPiA+PiAtICAgICBp ZiAocGl4bXAtPndpZHRoKQo+ID4+IC0gICAgICAgICAgICAgcGl4bXAtPndpZHRoID0gdnB1X2hl bHBlcl92YWxpZF9mcmFtZV93aWR0aChpbnN0LAo+ID5waXhtcC0+d2lkdGgpOwo+ID4+IC0gICAg IGlmIChwaXhtcC0+aGVpZ2h0KQo+ID4+IC0gICAgICAgICAgICAgcGl4bXAtPmhlaWdodCA9IHZw dV9oZWxwZXJfdmFsaWRfZnJhbWVfaGVpZ2h0KGluc3QsCj4gPnBpeG1wLT5oZWlnaHQpOwo+ID4+ ICsgICAgIGZvciAoaSA9IDA7IGkgPCBmbXQtPmNvbXBfcGxhbmVzOyBpKyspIHsKPiA+PiArICAg ICAgICAgICAgIGZtdC0+c2l6ZWltYWdlW2ldID0gdnB1X2hlbHBlcl9nZXRfcGxhbmVfc2l6ZShm bXQtPnBpeGZtdCwKPiA+PiArCj4gPmZtdC0+d2lkdGgsCj4gPj4gKwo+ID5mbXQtPmhlaWdodCwK PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpLAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cmlkZSwKPiA+PiArCj4gPmZtdC0+ZmllbGQgIT0gVjRMMl9G SUVMRF9OT05FID8gMSA6IDAsCj4gPj4gKwo+ID4mZm10LT5ieXRlc3BlcmxpbmVbaV0pOwo+ID4+ ICsgICAgICAgICAgICAgZm10LT5zaXplaW1hZ2VbaV0gPSBtYXhfdCh1MzIsIGZtdC0+c2l6ZWlt YWdlW2ldLCBQQUdFX1NJWkUpOwo+ID4+ICsgICAgICAgICAgICAgaWYgKGZtdC0+ZmxhZ3MgJiBW NEwyX0ZNVF9GTEFHX0NPTVBSRVNTRUQpIHsKPiA+PiArICAgICAgICAgICAgICAgICAgICAgZm10 LT5zaXplaW1hZ2VbaV0gPSBjbGFtcF92YWwoZm10LT5zaXplaW1hZ2VbaV0sCj4gPlNaXzEyOEss IFNaXzhNKTsKPiA+PiArICAgICAgICAgICAgICAgICAgICAgZm10LT5ieXRlc3BlcmxpbmVbaV0g PSAwOwo+ID4+ICsgICAgICAgICAgICAgfQo+ID4+ICsgICAgIH0KPiA+PiArCj4gPj4gKyAgICAg cmV0dXJuIDA7Cj4gPj4gK30KPiA+PiArCj4gPj4gK3UzMiB2cHVfZ2V0X2ZtdF9wbGFuZV9zaXpl KHN0cnVjdCB2cHVfZm9ybWF0ICpmbXQsIHUzMiBwbGFuZV9ubykgewo+ID4+ICsgICAgIHUzMiBz aXplOwo+ID4+ICsgICAgIGludCBpOwo+ID4+ICsKPiA+PiArICAgICBpZiAocGxhbmVfbm8gPj0g Zm10LT5tZW1fcGxhbmVzKQo+ID4+ICsgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPj4gKwo+ID4+ ICsgICAgIGlmIChmbXQtPmNvbXBfcGxhbmVzID09IGZtdC0+bWVtX3BsYW5lcykKPiA+PiArICAg ICAgICAgICAgIHJldHVybiBmbXQtPnNpemVpbWFnZVtwbGFuZV9ub107Cj4gPj4gKyAgICAgaWYg KHBsYW5lX25vIDwgZm10LT5tZW1fcGxhbmVzIC0gMSkKPiA+PiArICAgICAgICAgICAgIHJldHVy biBmbXQtPnNpemVpbWFnZVtwbGFuZV9ub107Cj4gPj4gKyAgICAgc2l6ZSA9IGZtdC0+c2l6ZWlt YWdlW3BsYW5lX25vXTsKPiA+PiArICAgICBmb3IgKGkgPSBmbXQtPm1lbV9wbGFuZXM7IGkgPCBm bXQtPmNvbXBfcGxhbmVzOyBpKyspCj4gPj4gKyAgICAgICAgICAgICBzaXplICs9IGZtdC0+c2l6 ZWltYWdlW2ldOwo+ID4+ICsKPiA+PiArICAgICByZXR1cm4gc2l6ZTsKPiA+PiArfQo+ID4+ICsK PiA+PiAraW50IHZwdV90cnlfZm10X2NvbW1vbihzdHJ1Y3QgdnB1X2luc3QgKmluc3QsIHN0cnVj dCB2NGwyX2Zvcm1hdCAqZiwKPiA+PiArc3RydWN0IHZwdV9mb3JtYXQgKmZtdCkgewo+ID4+ICsg ICAgIHN0cnVjdCB2NGwyX3BpeF9mb3JtYXRfbXBsYW5lICpwaXhtcCA9ICZmLT5mbXQucGl4X21w Owo+ID4+ICsgICAgIGludCBpOwo+ID4+ICsgICAgIGludCByZXQ7Cj4gPj4gKwo+ID4+ICsgICAg IGZtdC0+cGl4Zm10ID0gcGl4bXAtPnBpeGVsZm9ybWF0Owo+ID4+ICsgICAgIGZtdC0+dHlwZSA9 IGYtPnR5cGU7Cj4gPj4gKyAgICAgcmV0ID0gdnB1X2luaXRfZm9ybWF0KGluc3QsIGZtdCk7Cj4g Pj4gKyAgICAgaWYgKHJldCA8IDApCj4gPj4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4+ ICsKPiA+PiArICAgICBmbXQtPndpZHRoID0gcGl4bXAtPndpZHRoOwo+ID4+ICsgICAgIGZtdC0+ aGVpZ2h0ID0gcGl4bXAtPmhlaWdodDsKPiA+PiArICAgICBpZiAoZm10LT53aWR0aCkKPiA+PiAr ICAgICAgICAgICAgIGZtdC0+d2lkdGggPSB2cHVfaGVscGVyX3ZhbGlkX2ZyYW1lX3dpZHRoKGlu c3QsCj4gPmZtdC0+d2lkdGgpOwo+ID4+ICsgICAgIGlmIChmbXQtPmhlaWdodCkKPiA+PiArICAg ICAgICAgICAgIGZtdC0+aGVpZ2h0ID0gdnB1X2hlbHBlcl92YWxpZF9mcmFtZV9oZWlnaHQoaW5z dCwKPiA+Zm10LT5oZWlnaHQpOwo+ID4+ICsgICAgIGZtdC0+ZmllbGQgPSBwaXhtcC0+ZmllbGQg PT0gVjRMMl9GSUVMRF9BTlkgPyBWNEwyX0ZJRUxEX05PTkUgOgo+ID5waXhtcC0+ZmllbGQ7Cj4g Pj4gKyAgICAgdnB1X2NhbGNfZm10X2J5dGVzcGVybGluZShmLCBmbXQpOwo+ID4+ICsgICAgIHZw dV9jYWxjX2ZtdF9zaXplaW1hZ2UoaW5zdCwgZm10KTsKPiA+PiArICAgICBpZiAoKGZtdC0+Zmxh Z3MgJiBWNEwyX0ZNVF9GTEFHX0NPTVBSRVNTRUQpICYmCj4gPnBpeG1wLT5wbGFuZV9mbXRbMF0u c2l6ZWltYWdlKQo+ID4+ICsgICAgICAgICAgICAgZm10LT5zaXplaW1hZ2VbMF0gPQo+ID4+ICsg Y2xhbXBfdmFsKHBpeG1wLT5wbGFuZV9mbXRbMF0uc2l6ZWltYWdlLCBTWl8xMjhLLCBTWl84TSk7 Cj4gPj4gKwo+ID4+ICsgICAgIHBpeG1wLT5waXhlbGZvcm1hdCA9IGZtdC0+cGl4Zm10Owo+ID4+ ICsgICAgIHBpeG1wLT53aWR0aCA9IGZtdC0+d2lkdGg7Cj4gPj4gKyAgICAgcGl4bXAtPmhlaWdo dCA9IGZtdC0+aGVpZ2h0Owo+ID4+ICAgICAgIHBpeG1wLT5mbGFncyA9IGZtdC0+ZmxhZ3M7Cj4g Pj4gLSAgICAgcGl4bXAtPm51bV9wbGFuZXMgPSBmbXQtPm51bV9wbGFuZXM7Cj4gPj4gLSAgICAg aWYgKHBpeG1wLT5maWVsZCA9PSBWNEwyX0ZJRUxEX0FOWSkKPiA+PiAtICAgICAgICAgICAgIHBp eG1wLT5maWVsZCA9IFY0TDJfRklFTERfTk9ORTsKPiA+PiArICAgICBwaXhtcC0+bnVtX3BsYW5l cyA9IGZtdC0+bWVtX3BsYW5lczsKPiA+PiArICAgICBwaXhtcC0+ZmllbGQgPSBmbXQtPmZpZWxk Owo+ID4+ICsgICAgIG1lbXNldChwaXhtcC0+cmVzZXJ2ZWQsIDAsIHNpemVvZihwaXhtcC0+cmVz ZXJ2ZWQpKTsKPiA+PiAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGl4bXAtPm51bV9wbGFuZXM7IGkr Kykgewo+ID4+IC0gICAgICAgICAgICAgYnl0ZXNwZXJsaW5lID0gbWF4X3QoczMyLCBwaXhtcC0+ cGxhbmVfZm10W2ldLmJ5dGVzcGVybGluZSwKPiA+MCk7Cj4gPj4gLSAgICAgICAgICAgICBzaXpl aW1hZ2UgPSB2cHVfaGVscGVyX2dldF9wbGFuZV9zaXplKHBpeG1wLT5waXhlbGZvcm1hdCwKPiA+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4 bXAtPndpZHRoLAo+ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwaXhtcC0+aGVpZ2h0LAo+ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpLAo+ID4+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGUsCj4gPj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeG1wLT5maWVsZCA+Cj4gPlY0 TDJfRklFTERfTk9ORSA/IDEgOiAwLAo+ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZXNwZXJsaW5lKTsKPiA+PiAtICAgICAgICAgICAg IHNpemVpbWFnZSA9IG1heF90KHMzMiwgcGl4bXAtPnBsYW5lX2ZtdFtpXS5zaXplaW1hZ2UsCj4g PnNpemVpbWFnZSk7Cj4gPj4gLSAgICAgICAgICAgICBwaXhtcC0+cGxhbmVfZm10W2ldLmJ5dGVz cGVybGluZSA9IGJ5dGVzcGVybGluZTsKPiA+PiAtICAgICAgICAgICAgIHBpeG1wLT5wbGFuZV9m bXRbaV0uc2l6ZWltYWdlID0gc2l6ZWltYWdlOwo+ID4+ICsgICAgICAgICAgICAgcGl4bXAtPnBs YW5lX2ZtdFtpXS5ieXRlc3BlcmxpbmUgPSBmbXQtPmJ5dGVzcGVybGluZVtpXTsKPiA+PiArICAg ICAgICAgICAgIHBpeG1wLT5wbGFuZV9mbXRbaV0uc2l6ZWltYWdlID0gdnB1X2dldF9mbXRfcGxh bmVfc2l6ZShmbXQsCj4gPmkpOwo+ID4+ICsgICAgICAgICAgICAgbWVtc2V0KHBpeG1wLT5wbGFu ZV9mbXRbaV0ucmVzZXJ2ZWQsIDAsCj4gPj4gKyBzaXplb2YocGl4bXAtPnBsYW5lX2ZtdFtpXS5y ZXNlcnZlZCkpOwo+ID4+ICAgICAgIH0KPiA+Pgo+ID4+IC0gICAgIHJldHVybiBmbXQ7Cj4gPj4g KyAgICAgcmV0dXJuIDA7Cj4gPj4gIH0KPiA+Pgo+ID4+ICBzdGF0aWMgYm9vbCB2cHVfY2hlY2tf cmVhZHkoc3RydWN0IHZwdV9pbnN0ICppbnN0LCB1MzIgdHlwZSkgQEAKPiA+PiAtMzg5LDEwICs0 NzMsMTAgQEAgc3RhdGljIGludCB2cHVfdmIyX3F1ZXVlX3NldHVwKHN0cnVjdCB2YjJfcXVldWUg KnZxLAo+ID4+ICAgICAgIGN1cl9mbXQgPSB2cHVfZ2V0X2Zvcm1hdChpbnN0LCB2cS0+dHlwZSk7 Cj4gPj4KPiA+PiAgICAgICBpZiAoKnBsYW5lX2NvdW50KSB7Cj4gPj4gLSAgICAgICAgICAgICBp ZiAoKnBsYW5lX2NvdW50ICE9IGN1cl9mbXQtPm51bV9wbGFuZXMpCj4gPj4gKyAgICAgICAgICAg ICBpZiAoKnBsYW5lX2NvdW50ICE9IGN1cl9mbXQtPm1lbV9wbGFuZXMpCj4gPj4gICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4+IC0gICAgICAgICAgICAgZm9yIChpID0g MDsgaSA8IGN1cl9mbXQtPm51bV9wbGFuZXM7IGkrKykgewo+ID4+IC0gICAgICAgICAgICAgICAg ICAgICBpZiAocHNpemVbaV0gPCBjdXJfZm10LT5zaXplaW1hZ2VbaV0pCj4gPj4gKyAgICAgICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgY3VyX2ZtdC0+bWVtX3BsYW5lczsgaSsrKSB7Cj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgIGlmIChwc2l6ZVtpXSA8IHZwdV9nZXRfZm10X3BsYW5lX3NpemUo Y3VyX2ZtdCwKPiA+PiArIGkpKQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOwo+ID4+ICAgICAgICAgICAgICAgfQo+ID4+ICAgICAgICAgICAgICAgcmV0 dXJuIDA7Cj4gPj4gQEAgLTQwMiw5ICs0ODYsOSBAQCBzdGF0aWMgaW50IHZwdV92YjJfcXVldWVf c2V0dXAoc3RydWN0IHZiMl9xdWV1ZQo+ID4qdnEsCj4gPj4gICAgICAgICAgICAgICAqYnVmX2Nv dW50ID0gbWF4X3QodW5zaWduZWQgaW50LCAqYnVmX2NvdW50LAo+ID5pbnN0LT5taW5fYnVmZmVy X291dCk7Cj4gPj4gICAgICAgZWxzZQo+ID4+ICAgICAgICAgICAgICAgKmJ1Zl9jb3VudCA9IG1h eF90KHVuc2lnbmVkIGludCwgKmJ1Zl9jb3VudCwKPiA+aW5zdC0+bWluX2J1ZmZlcl9jYXApOwo+ ID4+IC0gICAgICpwbGFuZV9jb3VudCA9IGN1cl9mbXQtPm51bV9wbGFuZXM7Cj4gPj4gLSAgICAg Zm9yIChpID0gMDsgaSA8IGN1cl9mbXQtPm51bV9wbGFuZXM7IGkrKykKPiA+PiAtICAgICAgICAg ICAgIHBzaXplW2ldID0gY3VyX2ZtdC0+c2l6ZWltYWdlW2ldOwo+ID4+ICsgICAgICpwbGFuZV9j b3VudCA9IGN1cl9mbXQtPm1lbV9wbGFuZXM7Cj4gPj4gKyAgICAgZm9yIChpID0gMDsgaSA8IGN1 cl9mbXQtPm1lbV9wbGFuZXM7IGkrKykKPiA+PiArICAgICAgICAgICAgIHBzaXplW2ldID0gdnB1 X2dldF9mbXRfcGxhbmVfc2l6ZShjdXJfZm10LCBpKTsKPiA+Pgo+ID4+ICAgICAgIHJldHVybiAw Owo+ID4+ICB9Cj4gPj4gQEAgLTQzNCw4ICs1MTgsOCBAQCBzdGF0aWMgaW50IHZwdV92YjJfYnVm X3ByZXBhcmUoc3RydWN0IHZiMl9idWZmZXIKPiA+KnZiKQo+ID4+ICAgICAgIHUzMiBpOwo+ID4+ Cj4gPj4gICAgICAgY3VyX2ZtdCA9IHZwdV9nZXRfZm9ybWF0KGluc3QsIHZiLT50eXBlKTsKPiA+ PiAtICAgICBmb3IgKGkgPSAwOyBpIDwgY3VyX2ZtdC0+bnVtX3BsYW5lczsgaSsrKSB7Cj4gPj4g LSAgICAgICAgICAgICBpZiAodnB1X2dldF92Yl9sZW5ndGgodmIsIGkpIDwgY3VyX2ZtdC0+c2l6 ZWltYWdlW2ldKSB7Cj4gPj4gKyAgICAgZm9yIChpID0gMDsgaSA8IGN1cl9mbXQtPm1lbV9wbGFu ZXM7IGkrKykgewo+ID4+ICsgICAgICAgICAgICAgaWYgKHZwdV9nZXRfdmJfbGVuZ3RoKHZiLCBp KSA8Cj4gPj4gKyB2cHVfZ2V0X2ZtdF9wbGFuZV9zaXplKGN1cl9mbXQsIGkpKSB7Cj4gPj4gICAg ICAgICAgICAgICAgICAgICAgIGRldl9kYmcoaW5zdC0+ZGV2LCAiWyVkXSAlcyBidWZbJWRdIGlz IGludmFsaWRcbiIsCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdC0+aWQs IHZwdV90eXBlX25hbWUodmItPnR5cGUpLAo+ID52Yi0+aW5kZXgpOwo+ID4+ICAgICAgICAgICAg ICAgICAgICAgICB2cHVfc2V0X2J1ZmZlcl9zdGF0ZSh2YnVmLAo+ID5WUFVfQlVGX1NUQVRFX0VS Uk9SKTsKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9uL3Zw dV92NGwyLmgKPiA+PiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi92cHVfdjRsMi5o Cj4gPj4gaW5kZXggNzk1Y2EzM2E2YTUwLi5lZjVkZTZiNjZlNDcgMTAwNjQ0Cj4gPj4gLS0tIGEv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBoaW9uL3ZwdV92NGwyLmgKPiA+PiArKysgYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vdnB1X3Y0bDIuaAo+ID4+IEBAIC0xNiw3ICsxNiw4 IEBAIHVuc2lnbmVkIGludCB2cHVfZ2V0X2J1ZmZlcl9zdGF0ZShzdHJ1Y3QKPiA+PiB2YjJfdjRs Ml9idWZmZXIgKnZidWYpOyAgaW50IHZwdV92NGwyX29wZW4oc3RydWN0IGZpbGUgKmZpbGUsIHN0 cnVjdAo+ID4+IHZwdV9pbnN0ICppbnN0KTsgIGludCB2cHVfdjRsMl9jbG9zZShzdHJ1Y3QgZmls ZSAqZmlsZSk7Cj4gPj4KPiA+PiAtY29uc3Qgc3RydWN0IHZwdV9mb3JtYXQgKnZwdV90cnlfZm10 X2NvbW1vbihzdHJ1Y3QgdnB1X2luc3QgKmluc3QsCj4gPj4gc3RydWN0IHY0bDJfZm9ybWF0ICpm KTsKPiA+PiArdTMyIHZwdV9nZXRfZm10X3BsYW5lX3NpemUoc3RydWN0IHZwdV9mb3JtYXQgKmZt dCwgdTMyIHBsYW5lX25vKTsgaW50Cj4gPj4gK3ZwdV90cnlfZm10X2NvbW1vbihzdHJ1Y3QgdnB1 X2luc3QgKmluc3QsIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZiwKPiA+PiArc3RydWN0IHZwdV9mb3Jt YXQgKmZtdCk7Cj4gPj4gIGludCB2cHVfcHJvY2Vzc19vdXRwdXRfYnVmZmVyKHN0cnVjdCB2cHVf aW5zdCAqaW5zdCk7ICBpbnQKPiA+PiB2cHVfcHJvY2Vzc19jYXB0dXJlX2J1ZmZlcihzdHJ1Y3Qg dnB1X2luc3QgKmluc3QpOyAgc3RydWN0Cj4gPj4gdmIyX3Y0bDJfYnVmZmVyICp2cHVfbmV4dF9z cmNfYnVmKHN0cnVjdCB2cHVfaW5zdCAqaW5zdCk7IGRpZmYgLS1naXQKPiA+PiBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vYW1waGlvbi92cHVfd2luZHNvci5jCj4gPj4gYi9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL2FtcGhpb24vdnB1X3dpbmRzb3IuYwo+ID4+IGluZGV4IDE1MjZhZjJlZjlkYS4u YTQ1NGYxNDJhZTE3IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1w aGlvbi92cHVfd2luZHNvci5jCj4gPj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbXBo aW9uL3ZwdV93aW5kc29yLmMKPiA+PiBAQCAtNzc1LDYgKzc3NSw4IEBAIHN0YXRpYyBpbnQgdnB1 X3dpbmRzb3JfZmlsbF95dXZfZnJhbWUoc3RydWN0Cj4gPnZwdV9zaGFyZWRfYWRkciAqc2hhcmVk LAo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBpbnN0YW5jZSwK PiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmIyX2J1ZmZl ciAqdmIpICB7Cj4gPj4gKyAgICAgc3RydWN0IHZwdV9pbnN0ICppbnN0ID0gdmIyX2dldF9kcnZf cHJpdih2Yi0+dmIyX3F1ZXVlKTsKPiA+PiArICAgICBzdHJ1Y3QgdnB1X2Zvcm1hdCAqb3V0X2Zt dDsKPiA+PiAgICAgICBzdHJ1Y3QgdnB1X2VuY195dXZfZGVzYyAqZGVzYzsKPiA+PiAgICAgICBz dHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICp2YnVmOwo+ID4+Cj4gPj4gQEAgLTc4Miw2ICs3ODQsNyBA QCBzdGF0aWMgaW50IHZwdV93aW5kc29yX2ZpbGxfeXV2X2ZyYW1lKHN0cnVjdAo+ID52cHVfc2hh cmVkX2FkZHIgKnNoYXJlZCwKPiA+PiAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4+ Cj4gPj4gICAgICAgZGVzYyA9IGdldF95dXZfZGVzYyhzaGFyZWQsIGluc3RhbmNlKTsKPiA+PiAr ICAgICBvdXRfZm10ID0gdnB1X2dldF9mb3JtYXQoaW5zdCwgdmItPnR5cGUpOwo+ID4+Cj4gPj4g ICAgICAgdmJ1ZiA9IHRvX3ZiMl92NGwyX2J1ZmZlcih2Yik7Cj4gPj4gICAgICAgZGVzYy0+ZnJh bWVfaWQgPSB2YnVmLT5zZXF1ZW5jZTsgQEAgLTc5MCw3ICs3OTMsMTAgQEAgc3RhdGljIGludAo+ ID4+IHZwdV93aW5kc29yX2ZpbGxfeXV2X2ZyYW1lKHN0cnVjdCB2cHVfc2hhcmVkX2FkZHIgKnNo YXJlZCwKPiA+PiAgICAgICBlbHNlCj4gPj4gICAgICAgICAgICAgICBkZXNjLT5rZXlfZnJhbWUg PSAwOwo+ID4+ICAgICAgIGRlc2MtPmx1bWFfYmFzZSA9IHZwdV9nZXRfdmJfcGh5X2FkZHIodmIs IDApOwo+ID4+IC0gICAgIGRlc2MtPmNocm9tYV9iYXNlID0gdnB1X2dldF92Yl9waHlfYWRkcih2 YiwgMSk7Cj4gPj4gKyAgICAgaWYgKHZiLT5udW1fcGxhbmVzID4gMSkKPiA+PiArICAgICAgICAg ICAgIGRlc2MtPmNocm9tYV9iYXNlID0gdnB1X2dldF92Yl9waHlfYWRkcih2YiwgMSk7Cj4gPj4g KyAgICAgZWxzZQo+ID4+ICsgICAgICAgICAgICAgZGVzYy0+Y2hyb21hX2Jhc2UgPSBkZXNjLT5s dW1hX2Jhc2UgKwo+ID4+ICsgb3V0X2ZtdC0+c2l6ZWltYWdlWzBdOwo+ID4+Cj4gPj4gICAgICAg cmV0dXJuIDA7Cj4gPj4gIH0KPiA+PiAtLQo+ID4+IDIuMzcuMQo+ID4+Cj4gPgo+ID4tLQo+ID5U b21tYXNvIE1lcmNpYWkKPiA+RW1iZWRkZWQgTGludXggRW5naW5lZXIKPiA+dG9tbWFzby5tZXJj aWFpQGFtYXJ1bGFzb2x1dGlvbnMuY29tCj4gPl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPiA+Cj4gPkFtYXJ1bGEgU29sdXRpb25zIFNSTAo+ID5WaWEgTGUgQ2FuZXZhcmUgMzAs IDMxMTAwIFRyZXZpc28sIFZlbmV0bywgSVQgVC4gKzM5IDA0MiAyNDMgNTMxMAo+ID5pbmZvQGFt YXJ1bGFzb2x1dGlvbnMuY29tCj4gPmh0dHBzOi8vZXVyMDEuc2FmZWxpbmtzLnByb3RlY3Rpb24u b3V0bG9vay5jb20vP3VybD1odHRwJTNBJTJGJTJGd3d3LmFtCj4gPmFydWxhc29sdXRpb25zLmNv bSUyRiZhbXA7ZGF0YT0wNSU3QzAxJTdDbWluZy5xaWFuJTQwbnhwLmNvbSU3QzM5Cj4gPjgyYWIy NDdhNTA0M2ZkMWY2NjA4ZGE3YzMyNWUyMSU3QzY4NmVhMWQzYmMyYjRjNmZhOTJjZDk5YzVjMzAx NjMKPiA+NSU3QzAlN0MwJTdDNjM3OTU4ODUzMDE1MDAyOTAwJTdDVW5rbm93biU3Q1RXRnBiR1pz YjNkOGV5SlcKPiA+SWpvaU1DNHdMakF3TURBaUxDSlFJam9pVjJsdU16SWlMQ0pCVGlJNklrMWhh V3dpTENKWFZDSTZNbjAlM0QlN0MzMAo+ID4wMCU3QyU3QyU3QyZhbXA7c2RhdGE9SWcyMGNVQlRz VkFPY1I3Ymx3YlIwbVdyR2hacDdpUVlVTzZaYUg4Cj4gPkwwMEklM0QmYW1wO3Jlc2VydmVkPTAK Ci0tIApUb21tYXNvIE1lcmNpYWkKRW1iZWRkZWQgTGludXggRW5naW5lZXIKdG9tbWFzby5tZXJj aWFpQGFtYXJ1bGFzb2x1dGlvbnMuY29tCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KCkFtYXJ1bGEgU29sdXRpb25zIFNSTApWaWEgTGUgQ2FuZXZhcmUgMzAsIDMxMTAwIFRyZXZp c28sIFZlbmV0bywgSVQKVC4gKzM5IDA0MiAyNDMgNTMxMAppbmZvQGFtYXJ1bGFzb2x1dGlvbnMu Y29tCnd3dy5hbWFydWxhc29sdXRpb25zLmNvbQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgt YXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=