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 1E476C38142 for ; Tue, 24 Jan 2023 16:51:40 +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-Type: Content-Transfer-Encoding:Reply-To:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:References:Cc:To:Subject: From:MIME-Version:Date:Message-ID:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=zOvrcWjyimOIV6uYU8hTEeXQa5JK3ntiXW2HsXEg9NA=; b=NANUAhoDhJN7yMTQL1h+QpLrgN 5rUZJWCQ8oQPVn2oK2x9wg8KLeiou/enWT7OT9yaje9JXvy7KDg8Xlww83+qPZ8ZVyX12dgBcy20y Pl9cUybg1q59yEkdwp/FkzCi1bY1w6BUxffW0AUPdGQflxI9d4oWX/8VhPaJHG3VDV0HvSQ/2e66S LHTvUDHkIkVedW+HzbyGxMW/qMKsHIc/b+z/UnnYuUl6DsjoKkSK2eC94CB/CFe0R1kTJJVWpa4we blEtvhJar5TyQMCL2J4887ALw6Iox9DW2swTqRxIJOlyFzsJLmy1TRRjPhi79unhq5kOWl3D7/oam vxnJuBtg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pKMW6-004jBS-Du; Tue, 24 Jan 2023 16:51:26 +0000 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pKMW1-004j9s-R3 for linux-amlogic@lists.infradead.org; Tue, 24 Jan 2023 16:51:25 +0000 Received: by mail-wm1-x331.google.com with SMTP id iv8-20020a05600c548800b003db04a0a46bso1404546wmb.0 for ; Tue, 24 Jan 2023 08:51:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:in-reply-to:organization:references:cc:to :content-language:subject:reply-to:from:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=/QMMkQsAXBBa4IBbrvm4yS2dc9M5I00KgHxkFWOUUng=; b=xeHwl1bE5tMvkNH1gfNfo5m7pzXks85uRUkzl8dV/+6wp2pMQumaw+cFBx8Tc9BOpV hQILrbfB6di+QXD1sqHyJfTvZ9ektQMBT3u6ffli/988weTOskp9yP24mQcA19fKUg3C P6g2IbYCht9THXNpQsQ2wdPIWobGxZ3c/ZCJOTksrQVV11g5d307vbdKdsX6RQy+vbyU aVZxsmoqQbxNKP9Wz1yJRLQjuWQ4gb01JAzaj3+fKUxKenuRbPwx29X92I0XImHVAMh9 0Z3tXdRAlEeeoGhH5bumdxt5cM+ulVtLf4dFmFVJlg4u3HQ+mlgKBwDW2/7bMJ1J3M8V l0hA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:organization:references:cc:to :content-language:subject:reply-to:from:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=/QMMkQsAXBBa4IBbrvm4yS2dc9M5I00KgHxkFWOUUng=; b=HwuNhLIjADtwFEH8uL44pBwGOWRPBYFmO1gQ0vGYNjBBY8VhO7LXc8pcmpfWNvgvfW 4IZgkd89HZx8Ve3Dd2nlhRykYOY+0jPOYJge+8j5+ZcGBPzBWUb8dGjCNkYdMcZbpK4+ CaQOAobBqy5B6VZdzj4hB52wczT4r2X1xsrAcXYzYurl5FYaEvzJB5zAk0TZSPPFO1pF 6RpwEReqk5IsQMLQjxPxVARAZWb3qMKGjAbuvO1B2lx1q8wTw7VpoMZFYuTiJvezpHH/ bK1MKO+y0NRtZBAxqrrqVLWkR6QFVF8HwRT3wTKJFq0uSEC6B+m54ylynzOV+sVNWDWM DXsA== X-Gm-Message-State: AFqh2kpneYBCVk1nkbFo69Hh0YnKr5NkivanhEHJuCNdrktTlvaJqtSR BQsMumVEqqnEsYXIciIiELefoA== X-Google-Smtp-Source: AMrXdXt8XQViyHJmlnaDU66tWa4jYlI82ZCZUzvfPU6LefEDhLrqkRGVUFNirb/KGeJcRRn60uGwuw== X-Received: by 2002:a05:600c:c0a:b0:3db:2858:db84 with SMTP id fm10-20020a05600c0c0a00b003db2858db84mr19347934wmb.34.1674579075475; Tue, 24 Jan 2023 08:51:15 -0800 (PST) Received: from ?IPV6:2a01:e0a:982:cbb0:ebd2:15b:f444:7985? ([2a01:e0a:982:cbb0:ebd2:15b:f444:7985]) by smtp.gmail.com with ESMTPSA id e18-20020a05600c449200b003da105437besm2366267wmo.29.2023.01.24.08.51.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 24 Jan 2023 08:51:15 -0800 (PST) Message-ID: <95132025-8f0f-8179-40b7-8bf83458886a@linaro.org> Date: Tue, 24 Jan 2023 17:51:14 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 From: neil.armstrong@linaro.org Subject: Re: [PATCH v2 1/2] media: meson: vdec: implement 10bit bitstream handling Content-Language: en-US To: Nicolas Dufresne , Christian Hewitt , Mauro Carvalho Chehab , Greg Kroah-Hartman , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , linux-media@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-staging@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Benjamin Roszak References: <20230124034058.3407235-1-christianshewitt@gmail.com> <20230124034058.3407235-2-christianshewitt@gmail.com> <6ff68c4bea9d48980853e9af9db1fc0bf13976ae.camel@ndufresne.ca> <07933226-fbab-fa78-6b96-38e365577605@linaro.org> <478d5a7569b7879aa3410a5b3049d745867df780.camel@ndufresne.ca> Organization: Linaro Developer Services In-Reply-To: <478d5a7569b7879aa3410a5b3049d745867df780.camel@ndufresne.ca> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230124_085121_952286_2911EBA2 X-CRM114-Status: GOOD ( 38.04 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: neil.armstrong@linaro.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org T24gMjQvMDEvMjAyMyAxNzoyNiwgTmljb2xhcyBEdWZyZXNuZSB3cm90ZToKPiBMZSBtYXJkaSAy NCBqYW52aWVyIDIwMjMgw6AgMTY6MjYgKzAxMDAsIE5laWwgQXJtc3Ryb25nIGEgw6ljcml0wqA6 Cj4+IE9uIDI0LzAxLzIwMjMgMTY6MjEsIE5pY29sYXMgRHVmcmVzbmUgd3JvdGU6Cj4+PiBIaSwK Pj4+Cj4+PiBMZSBtYXJkaSAyNCBqYW52aWVyIDIwMjMgw6AgMDM6NDAgKzAwMDAsIENocmlzdGlh biBIZXdpdHQgYSDDqWNyaXTCoDoKPj4+PiBGcm9tOiBCZW5qYW1pbiBSb3N6YWsgPGJlbmphbWlu NTQ1QGdtYWlsLmNvbT4KPj4+Pgo+Pj4+IEluIG9yZGVyIHRvIHN1cHBvcnQgMTBiaXQgYml0c3Ry ZWFtIGRlY29kaW5nLCBidWZmZXJzIGFuZCBNTVUKPj4+PiBoYW5kbGluZyBtdXN0IGJlIGNsZWFu ZWQgdXAgdG8gc3VwcG9ydCBlaXRoZXIgZG93bnNjYWxlIG91dHB1dAo+Pj4+IGZyb20gY29tcHJl c3NlZCAxMGJpdCBkZWNvZGluZyB0byB1bmNvbXByZXNzZWQgOGJpdCBOVjEyIG91dHB1dAo+Pj4+ IG9yIHRvIGNvbXByZXNzZWQgMTBiaXQgcHJvcHJpZXRhcnkgZW5jb2RlZCBmcmFtZSBmb3JtYXQu Cj4+Pgo+Pj4gSSB1bmRlcnN0YW5kIHRoaXMgaXMgc3RlcCBmb3J3YXJkLCBhbmQgYWdyZWUgd2l0 aCB0aGUgcGF0Y2hlcyBpbiBnZW5lcmFsLCB0aG91Z2gKPj4+IEknZCBsaWtlIHRvIGtub3cgaWYg d2UgY2FuIGV4cGVjdCAxMGJpdCBzZWNvbmRhcnkgYnVmZmVycyBpbiB0aGUgZnV0dXJlID8gT3Ig aXMKPj4+IHRoZSBBTUZCQyB0aGF0IG9ubHkgMTBiaXQgZm9ybWF0IHN1cHBvcnRlZCA/IFNob3Vs ZCBiZSBleHBlY3QgdGhlIDEwYml0IGZvcm1hdAo+Pj4gZGVmaW5pdGlvbiB0byBiZSBhZGRlZCBs YXRlciA/Cj4+Cj4+IFRoZSBzdXBwb3J0IGV4aXN0LCBidXQgaXQgc3RvcHBlZCB3aGVuIG5vYm9k eSBhZ2dyZWVkIG9uIGhvdyB0byBoYW5kbGUgdGhlIGRpZmZlcmVudAo+PiBsYXlvdXRzIGdlbmVy YXRlZCBieSB0aGUgZGVjb2Rlci4KPj4KPj4gVGhlcmUncyBhdCBsZWFzdCA0IHBvc3NpYmxlIGxh eW91dHMgdnMgaG93IHdlIHJlcHJlc2VudCB0aGVuIGluIERSTSA6Cj4+IC0gR1ggOGJpdDogRFJN X0ZPUk1BVF9ZVVY0MjBfOEJJVCB8IERSTV9GT1JNQVRfTU9EX0FNTE9HSUNfRkJDKEFNTE9HSUNf RkJDX0xBWU9VVF9CQVNJQywgMCkKPj4gLSBHWCAxMGJpdDogRFJNX0ZPUk1BVF9ZVVY0MjBfMTBC SVQgfCBEUk1fRk9STUFUX01PRF9BTUxPR0lDX0ZCQyhBTUxPR0lDX0ZCQ19MQVlPVVRfQkFTSUMs IDApCj4+IC0gRzEyIDhiaXQ6IERSTV9GT1JNQVRfWVVWNDIwXzhCSVQgfCBEUk1fRk9STUFUX01P RF9BTUxPR0lDX0ZCQyhBTUxPR0lDX0ZCQ19MQVlPVVRfU0NBVFRFUixBTUxPR0lDX0ZCQ19PUFRJ T05fTUVNX1NBVklORykKPj4gLSBHMTIgMTBiaXQ6IERSTV9GT1JNQVRfWVVWNDIwXzEwQklUIHwg RFJNX0ZPUk1BVF9NT0RfQU1MT0dJQ19GQkMoKUFNTE9HSUNfRkJDX0xBWU9VVF9TQ0FUVEVSLCBB TUxPR0lDX0ZCQ19PUFRJT05fTUVNX1NBVklORykKPj4KPj4gQW5kIHByb2JhYmx5IG1vcmUgZGVw ZW5kaW5nIG9uIG5ldyBTb0NzIGFuZCBuZXcgY29kZWNzLgo+IAo+IFRoYW5rcywgSSBkaWRuJ3Qg a25vdy4gSSB0aGluayBWNEwyIHN0cmF0ZWd5IGhlcmUgd291bGQgYmUgdG8gcGljayBhbmQgZXhw b3NlCj4ganVzdCB0aGUgbWluaW11bSB0byBtYWtlIHRoZSBtYWlubGluZSBkcml2ZXIgdmlhYmxl IGZvciAxMGJpdCBkZWNvZGluZyAodW5sZXNzCj4gYWdhaW4geW91IGhhdmUgYSBzZWNvbmRhcnkg Zm9ybWF0IGxpa2UgUDAxMCBhdmFpbGFibGUpLiBUaGlzIHdvdWxkIHN1aXRlIGJldHRlcgo+IHlv dXIgdXNlcnMgdGhlbiBqdXN0IHdhaXRpbmcgZm9yIHRoZSBwZXJmZWN0IHN5c3RlbSB0byBiZSBp biBwbGFjZS4KPiAKPiBwLnMgQU1MT0dJQ19GQkNfT1BUSU9OX01FTV9TQVZJTkcgaXMgdW5saWtl bHkgYSBsYXlvdXQgZnJvbSBpdHMgbmFtZS4gRkJDIGlzCj4gZ2VuZXJhbGx5IGxvc3MtbGVzcyBm b3IgY29ycmVjdG5lc3MsIGJ1dCBsb3NzLWxlc3MgY29tcHJlc3Npb24gYWx3YXlzIGhhdmUgYQo+ IHdvcnNlIGNhc2Ugc2NlbmVyaW8gYmlnZ2VyIHRoZW4gdGhlIG9yaWdpbmFsLCBzbyB3ZSBzdGls bCBuZWVkIHRvIHJlc2VydmUgYmlnCj4gY2h1bmsgb2YgbWVtb3J5LiBGb3IgbWVtb3J5IGxpbWl0 ZWQgZGV2aWNlLCBBUk0gY2FtZSB1cCB3aXRoIGxvc3N5IGNvbXByZXNzb3IsCj4gdGhhdCBndWFy YW50eSBhIGNlcnRhaW4gY29tcHJlc3Npb24gcmF0aW8uIFRoaXMgbmFtZSBzb3VuZHMgbGlrZSBh IHNpbWlsYXIKPiBmZWF0dXJlIHRvIG1lLgoKT2sgaXQncyBub3QgdGhhdCBzaW1wbGUsIHNlZW1z IEkgbmVlZCB0byBkbyBhIHJlY2FwIG9mIHRoZSBzaXR1YXRpb24uCgpUaGUgSFcgZGVjb2RlciBp cyBhIGZpcm13YXJlIHJ1bm5pbmcgb24gdG9wIG9mIGEgc2V0IG9mIHByb3ByaWF0ZXJ5IChvciBw ZXJoYXBzCmJvdWdodCBJUFMsIGJ1dCBoaWRkZW4gYmVoaW5kIHRoZSBmaXJtd2FyZSkgSFcuCgpU aGVyZSdzIDIgZ2VuZXJhdGlvbnM6Ci0gdGhlIG9sZCBnZW5lcmF0aW9uIHN1cHBvcnRzIG9ubHkg YSBzaW5nbGUgZGVjb2RpbmcgYXQgYSB0aW1lLCBhbmQgaW1wbGVtZW50cyB0aGUKIm9sZCIgY29k ZWNzIChNUEVHLTEvMiwgSDI2NCwgLi4uKQotIHRoZSBuZXcgaXMgYnVpbGQgYXJvdW5kIHRoZSAi SEVWQyIgY29yZSB0byBkZWNvZGUgbXVsdGlwbGUgc3RyZWFtcyB3aXRoIHN1cHBvcnQKb2YgbG9h ZGFibGUgY29udGV4dCwgYW5kIHN1cHBvcnRzIEguMjY0LCBIRVZDIGFuZCBWUDkgKGFuZCBWQy0x IG9uIG5ldyBTb0NzKS4KCkknbGwgY292ZXIgb25seSB0aGUgbmV3IGNvcmUuCgpUaGUgbmV3IGNv cmUgc3VwcG9ydHMgZGVjb2RpbmcgOGJpdCBhbmQgMTBiaXQgc3RyZWFtcyAoZXhjZXB0IGZvciBI MjY0KSwgYnV0IHRoZQpkZWNvZGVyIG9ubHkgd29ya3Mgb24gImNvbXByZXNzZWQgZnJhbWVidWZm ZXJzIiwgd2hpY2ggaXMgc2ltaWxhciB0byB0aGUgQVJNIG9uZQpvciBhbnkgb3RoZXIgU29DIHZl bmRvciBkb2VzIGludGVybmFsbHkgaW4gZmFjdC4KCkJ1dCB0aGUgZmlybXdhcmUgc3VwcG9ydHMg Y29weWluZyB0aGUgb3V0cHV0IGZyYW1lcyBpbiBhIG5vbi1jb21wcmVzc2VkIE5WMTIgZG91Ymxl CnBsYW5lIGJ1ZmZlcnMgKGJ1ZmZlcnMgY2FuJ3QgYmUgc2luZ2xlLCB3ZSBuZWVkIHRvIHByb3Zp ZGUgMiBidWZmZXJzIHdpdGggYSBzcGVjaWZpYwphbGlnbWVudCksIGJ1dCB3ZSBjYW4gYWxzbyBn ZXQgdGhlIGNvbXByZXNzZSBidWZmZXJzIGFuZCBmZWVkIHRoZW0gdG8gdGhlIGRpc3BsYXkgdW5p dC4KCkJ1dCBiZXR3ZWVuIGdlbmVyYXRpb25zLCB0aGUgY29tcHJlc3NlZCBidWZmZXJzIGxheW91 dCAmIG9wdGlvbnMgZ2VuZXJhdGVkIGJ5IHRoZQpkZWNvZGVyIGZpcm13YXJlIGFyZSBkaWZmZXJl bnQsIGJ1dCBvbiB0aGUgRGlzcGxheSBzaWRlIHRoZSBJUCAmIHRoZSBwb3NzaWJsZSBvcHRpb25z CmFyZSB0aGUgc2FtZS4KClNvIHdlICpuZWVkKiB0byBrbm93IHRoZXIgYnBwIGFuZCB0aGUgY29t cHJlc3Npb24gbGF5b3V0ICsgb3B0aW9ucyBvbiB0aGUgZGlzcGxheQpzaWRlLCBhbmQgd2UgY2Fu J3QgdXNlIHRoZSBTb0MgbmFtZSBmb3IgdGhhdCwgZXNwZWNpYWxseSBmcm9tIGZmbXBlZyBvciBn c3RyZWFtZXIuCgpCdXQgd2UgYWxyZWFkeSB1cHN0cmVhbWVkIHRoZSBEUk0gbW9kaWZpZXIgYSBm ZXcgeWVhcnMgYWdvLCBzbyB0aGlzIGlzIGRvbmUuCgpTbyBub3cgd2UgbmVlZCBhIHdheSBmcm9t IFY0TDIgdG8gZ2V0IHRob3NlcyBpbmZvcm1hdGlvbnMgZnJvbSB0aGUgL2Rldi92aWRlbyBlbmRw b2ludCB0bwpjb3JyZWN0bHkgc2V0IHRoZSBmb3VyY2MgKyBtb2RpZmllciBmb3IgZGlzcGxheS4K CldlIGhvcGVkIHdlIGNvdWxkIHVzZSB0aGUgc2FtZSBtb2RpZmllciBhcyBEUk0sIGJ1dCBpdCBz ZWVtcyB0aGlzIGlzIG5vdyBvdXQgb2Ygc2NvcGUuCgpOZWlsCgo+IAo+IE5pY29sYXMKPiAKPj4K Pj4gTmVpbAo+Pgo+Pj4KPj4+Pgo+Pj4+IEZvciB0aGF0LCAiYW0yMWMiIG5hbWUgaXMgbW92ZWQg dG8gImFtZmJjIiB0byByZWZsZWN0IHRoZSB1cHN0cmVhbQo+Pj4+IEFtbG9naWMgQ29tcHJlc3Nl ZCBmcmFtZWJ1ZmZlciBtb2RpZmllciBuYW1pbmcuCj4+Pj4KPj4+PiBDb21wcmVzc2VkIGZyYW1l IGJ1ZmZlcnMgYWxsb2NhdGlvbiBpcyBhbHNvIGNsZWFuZWQgdXAgc28gaXQKPj4+PiBjYW4gYmUg c2hhcmVkIHdpdGggdGhlIEhFVkMgZGVjb2RlciBpbXBsZW1lbnRhdGlvbi4KPj4+Pgo+Pj4+IFNp Z25lZC1vZmYtYnk6IEJlbmphbWluIFJvc3phayA8YmVuamFtaW41NDVAZ21haWwuY29tPgo+Pj4+ IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBIZXdpdHQgPGNocmlzdGlhbnNoZXdpdHRAZ21haWwu Y29tPgo+Pj4+IC0tLQo+Pj4+ICAgIGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL2Nv ZGVjX2gyNjQuYyB8ICAgMyArLQo+Pj4+ICAgIC4uLi9tZWRpYS9tZXNvbi92ZGVjL2NvZGVjX2hl dmNfY29tbW9uLmMgICAgICB8IDE2MSArKysrKysrKysrKy0tLS0tLS0KPj4+PiAgICAuLi4vbWVk aWEvbWVzb24vdmRlYy9jb2RlY19oZXZjX2NvbW1vbi5oICAgICAgfCAgIDMgKy0KPj4+PiAgICBk cml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy9jb2RlY192cDkuYyAgfCAgMzUgKystLQo+ Pj4+ICAgIGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL2VzcGFyc2VyLmMgICB8ICAg MSArCj4+Pj4gICAgZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvdmRlYy5oICAgICAg IHwgICAxICsKPj4+PiAgICAuLi4vc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL3ZkZWNfaGVscGVy cy5jICAgfCAgNDQgKysrLS0KPj4+PiAgICAuLi4vc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL3Zk ZWNfaGVscGVycy5oICAgfCAgMTAgKy0KPj4+PiAgICA4IGZpbGVzIGNoYW5nZWQsIDE2MSBpbnNl cnRpb25zKCspLCA5NyBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy9jb2RlY19oMjY0LmMgYi9kcml2ZXJzL3N0YWdpbmcv bWVkaWEvbWVzb24vdmRlYy9jb2RlY19oMjY0LmMKPj4+PiBpbmRleCBjNjExMjhmYzRiYjkuLmQ1 M2M5YTQ2NGJkZSAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24v dmRlYy9jb2RlY19oMjY0LmMKPj4+PiArKysgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24v dmRlYy9jb2RlY19oMjY0LmMKPj4+PiBAQCAtMzUzLDcgKzM1Myw4IEBAIHN0YXRpYyB2b2lkIGNv ZGVjX2gyNjRfc3JjX2NoYW5nZShzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MpCj4+Pj4gICAg CQlmcmFtZV93aWR0aCwgZnJhbWVfaGVpZ2h0LCBjcm9wX3JpZ2h0LCBjcm9wX2JvdHRvbSk7Cj4+ Pj4gICAgCj4+Pj4gICAgCWNvZGVjX2gyNjRfc2V0X3BhcihzZXNzKTsKPj4+PiAtCWFtdmRlY19z cmNfY2hhbmdlKHNlc3MsIGZyYW1lX3dpZHRoLCBmcmFtZV9oZWlnaHQsIGgyNjQtPm1heF9yZWZz ICsgNSk7Cj4+Pj4gKwlhbXZkZWNfc3JjX2NoYW5nZShzZXNzLCBmcmFtZV93aWR0aCwgZnJhbWVf aGVpZ2h0LAo+Pj4+ICsJCQkgIGgyNjQtPm1heF9yZWZzICsgNSwgOCk7Cj4+Pj4gICAgfQo+Pj4+ ICAgIAo+Pj4+ICAgIC8qCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9t ZXNvbi92ZGVjL2NvZGVjX2hldmNfY29tbW9uLmMgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVz b24vdmRlYy9jb2RlY19oZXZjX2NvbW1vbi5jCj4+Pj4gaW5kZXggMDMxNWNjMDkxMWNkLi4xYzc0 YjQ4MzdkY2IgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3Zk ZWMvY29kZWNfaGV2Y19jb21tb24uYwo+Pj4+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9t ZXNvbi92ZGVjL2NvZGVjX2hldmNfY29tbW9uLmMKPj4+PiBAQCAtMzAsOCArMzAsMTEgQEAgY29u c3QgdTE2IHZkZWNfaGV2Y19wYXJzZXJfY21kW10gPSB7Cj4+Pj4gICAgdm9pZCBjb2RlY19oZXZj X3NldHVwX2RlY29kZV9oZWFkKHN0cnVjdCBhbXZkZWNfc2Vzc2lvbiAqc2VzcywgaW50IGlzXzEw Yml0KQo+Pj4+ICAgIHsKPj4+PiAgICAJc3RydWN0IGFtdmRlY19jb3JlICpjb3JlID0gc2Vzcy0+ Y29yZTsKPj4+PiAtCXUzMiBib2R5X3NpemUgPSBhbXZkZWNfYW0yMWNfYm9keV9zaXplKHNlc3Mt PndpZHRoLCBzZXNzLT5oZWlnaHQpOwo+Pj4+IC0JdTMyIGhlYWRfc2l6ZSA9IGFtdmRlY19hbTIx Y19oZWFkX3NpemUoc2Vzcy0+d2lkdGgsIHNlc3MtPmhlaWdodCk7Cj4+Pj4gKwl1MzIgdXNlX21t dSA9IGNvZGVjX2hldmNfdXNlX21tdShjb3JlLT5wbGF0Zm9ybS0+cmV2aXNpb24sCj4+Pj4gKwkJ CQkJIHNlc3MtPnBpeGZtdF9jYXAsIGlzXzEwYml0KTsKPj4+PiArCXUzMiBib2R5X3NpemUgPSBh bXZkZWNfYW1mYmNfYm9keV9zaXplKHNlc3MtPndpZHRoLCBzZXNzLT5oZWlnaHQsCj4+Pj4gKwkJ CQkJICAgICAgIGlzXzEwYml0LCB1c2VfbW11KTsKPj4+PiArCXUzMiBoZWFkX3NpemUgPSBhbXZk ZWNfYW1mYmNfaGVhZF9zaXplKHNlc3MtPndpZHRoLCBzZXNzLT5oZWlnaHQpOwo+Pj4+ICAgIAo+ Pj4+ICAgIAlpZiAoIWNvZGVjX2hldmNfdXNlX2ZiYyhzZXNzLT5waXhmbXRfY2FwLCBpc18xMGJp dCkpIHsKPj4+PiAgICAJCS8qIEVuYWJsZSAyLXBsYW5lIHJlZmVyZW5jZSByZWFkIG1vZGUgKi8K Pj4+PiBAQCAtMzksOSArNDIsMTcgQEAgdm9pZCBjb2RlY19oZXZjX3NldHVwX2RlY29kZV9oZWFk KHN0cnVjdCBhbXZkZWNfc2Vzc2lvbiAqc2VzcywgaW50IGlzXzEwYml0KQo+Pj4+ICAgIAkJcmV0 dXJuOwo+Pj4+ICAgIAl9Cj4+Pj4gICAgCj4+Pj4gKwkvKiBlbmFibGUgbWVtIHNhdmluZyBtb2Rl IGZvciA4LWJpdCAqLwo+Pj4+ICsJaWYgKCFpc18xMGJpdCkKPj4+PiArCQlhbXZkZWNfd3JpdGVf ZG9zX2JpdHMoY29yZSwgSEVWQ19TQU9fQ1RSTDUsIEJJVCg5KSk7Cj4+Pj4gKwllbHNlCj4+Pj4g KwkJYW12ZGVjX2NsZWFyX2Rvc19iaXRzKGNvcmUsIEhFVkNfU0FPX0NUUkw1LCBCSVQoOSkpOwo+ Pj4+ICsKPj4+PiAgICAJaWYgKGNvZGVjX2hldmNfdXNlX21tdShjb3JlLT5wbGF0Zm9ybS0+cmV2 aXNpb24sCj4+Pj4gICAgCQkJICAgICAgIHNlc3MtPnBpeGZtdF9jYXAsIGlzXzEwYml0KSkKPj4+ PiAgICAJCWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ0RfTVBQX0RFQ09NUF9DVEwxLCBCSVQo NCkpOwo+Pj4+ICsJZWxzZSBpZiAoIWlzXzEwYml0KQo+Pj4+ICsJCWFtdmRlY193cml0ZV9kb3Mo Y29yZSwgSEVWQ0RfTVBQX0RFQ09NUF9DVEwxLCBCSVQoMykpOwo+Pj4+ICAgIAllbHNlCj4+Pj4g ICAgCQlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIEhFVkNEX01QUF9ERUNPTVBfQ1RMMSwgMCk7Cj4+ Pj4gICAgCj4+Pj4gQEAgLTczLDcgKzg0LDcgQEAgc3RhdGljIHZvaWQgY29kZWNfaGV2Y19zZXR1 cF9idWZmZXJzX2d4YmIoc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzLAo+Pj4+ICAgIAo+Pj4+ ICAgIAkJaWR4ID0gdmItPmluZGV4Owo+Pj4+ICAgIAo+Pj4+IC0JCWlmIChjb2RlY19oZXZjX3Vz ZV9kb3duc2FtcGxlKHNlc3MtPnBpeGZtdF9jYXAsIGlzXzEwYml0KSkKPj4+PiArCQlpZiAoY29k ZWNfaGV2Y191c2VfZmJjKHNlc3MtPnBpeGZtdF9jYXAsIGlzXzEwYml0KSkKPj4+PiAgICAJCQli dWZfeV9wYWRkciA9IGNvbW0tPmZiY19idWZmZXJfcGFkZHJbaWR4XTsKPj4+PiAgICAJCWVsc2UK Pj4+PiAgICAJCQlidWZfeV9wYWRkciA9IHZiMl9kbWFfY29udGlnX3BsYW5lX2RtYV9hZGRyKHZi LCAwKTsKPj4+PiBAQCAtMTE0LDggKzEyNSw4IEBAIHN0YXRpYyB2b2lkIGNvZGVjX2hldmNfc2V0 dXBfYnVmZmVyc19neGwoc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzLAo+Pj4+ICAgIHsKPj4+ PiAgICAJc3RydWN0IGFtdmRlY19jb3JlICpjb3JlID0gc2Vzcy0+Y29yZTsKPj4+PiAgICAJc3Ry dWN0IHY0bDJfbTJtX2J1ZmZlciAqYnVmOwo+Pj4+IC0JdTMyIHJldmlzaW9uID0gY29yZS0+cGxh dGZvcm0tPnJldmlzaW9uOwo+Pj4+ICAgIAl1MzIgcGl4Zm10X2NhcCA9IHNlc3MtPnBpeGZtdF9j YXA7Cj4+Pj4gKwljb25zdCB1MzIgcmV2aXNpb24gPSBjb3JlLT5wbGF0Zm9ybS0+cmV2aXNpb247 Cj4+Pj4gICAgCWludCBpOwo+Pj4+ICAgIAo+Pj4+ICAgIAlhbXZkZWNfd3JpdGVfZG9zKGNvcmUs IEhFVkNEX01QUF9BTkMyQVhJX1RCTF9DT05GX0FERFIsCj4+Pj4gQEAgLTEyNywxMiArMTM4LDE0 IEBAIHN0YXRpYyB2b2lkIGNvZGVjX2hldmNfc2V0dXBfYnVmZmVyc19neGwoc3RydWN0IGFtdmRl Y19zZXNzaW9uICpzZXNzLAo+Pj4+ICAgIAkJZG1hX2FkZHJfdCBidWZfdXZfcGFkZHIgPSAwOwo+ Pj4+ICAgIAkJdTMyIGlkeCA9IHZiLT5pbmRleDsKPj4+PiAgICAKPj4+PiAtCQlpZiAoY29kZWNf aGV2Y191c2VfbW11KHJldmlzaW9uLCBwaXhmbXRfY2FwLCBpc18xMGJpdCkpCj4+Pj4gLQkJCWJ1 Zl95X3BhZGRyID0gY29tbS0+bW11X2hlYWRlcl9wYWRkcltpZHhdOwo+Pj4+IC0JCWVsc2UgaWYg KGNvZGVjX2hldmNfdXNlX2Rvd25zYW1wbGUocGl4Zm10X2NhcCwgaXNfMTBiaXQpKQo+Pj4+IC0J CQlidWZfeV9wYWRkciA9IGNvbW0tPmZiY19idWZmZXJfcGFkZHJbaWR4XTsKPj4+PiAtCQllbHNl Cj4+Pj4gKwkJaWYgKGNvZGVjX2hldmNfdXNlX2Rvd25zYW1wbGUocGl4Zm10X2NhcCwgaXNfMTBi aXQpKSB7Cj4+Pj4gKwkJCWlmIChjb2RlY19oZXZjX3VzZV9tbXUocmV2aXNpb24sIHBpeGZtdF9j YXAsIGlzXzEwYml0KSkKPj4+PiArCQkJCWJ1Zl95X3BhZGRyID0gY29tbS0+bW11X2hlYWRlcl9w YWRkcltpZHhdOwo+Pj4+ICsJCQllbHNlCj4+Pj4gKwkJCQlidWZfeV9wYWRkciA9IGNvbW0tPmZi Y19idWZmZXJfcGFkZHJbaWR4XTsKPj4+PiArCQl9IGVsc2Ugewo+Pj4+ICAgIAkJCWJ1Zl95X3Bh ZGRyID0gdmIyX2RtYV9jb250aWdfcGxhbmVfZG1hX2FkZHIodmIsIDApOwo+Pj4+ICsJCX0KPj4+ PiAgICAKPj4+PiAgICAJCWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ0RfTVBQX0FOQzJBWElf VEJMX0RBVEEsCj4+Pj4gICAgCQkJCSBidWZfeV9wYWRkciA+PiA1KTsKPj4+PiBAQCAtMTUwLDYw ICsxNjMsNjcgQEAgc3RhdGljIHZvaWQgY29kZWNfaGV2Y19zZXR1cF9idWZmZXJzX2d4bChzdHJ1 Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsCj4+Pj4gICAgCQlhbXZkZWNfd3JpdGVfZG9zKGNvcmUs IEhFVkNEX01QUF9BTkNfQ0FOVkFTX0RBVEFfQUREUiwgMCk7Cj4+Pj4gICAgfQo+Pj4+ICAgIAo+ Pj4+IC12b2lkIGNvZGVjX2hldmNfZnJlZV9mYmNfYnVmZmVycyhzdHJ1Y3QgYW12ZGVjX3Nlc3Np b24gKnNlc3MsCj4+Pj4gK3ZvaWQgY29kZWNfaGV2Y19mcmVlX21tdV9oZWFkZXJzKHN0cnVjdCBh bXZkZWNfc2Vzc2lvbiAqc2VzcywKPj4+PiAgICAJCQkJIHN0cnVjdCBjb2RlY19oZXZjX2NvbW1v biAqY29tbSkKPj4+PiAgICB7Cj4+Pj4gICAgCXN0cnVjdCBkZXZpY2UgKmRldiA9IHNlc3MtPmNv cmUtPmRldjsKPj4+PiAtCXUzMiBhbTIxX3NpemUgPSBhbXZkZWNfYW0yMWNfc2l6ZShzZXNzLT53 aWR0aCwgc2Vzcy0+aGVpZ2h0KTsKPj4+PiAgICAJaW50IGk7Cj4+Pj4gICAgCj4+Pj4gICAgCWZv ciAoaSA9IDA7IGkgPCBNQVhfUkVGX1BJQ19OVU07ICsraSkgewo+Pj4+IC0JCWlmIChjb21tLT5m YmNfYnVmZmVyX3ZhZGRyW2ldKSB7Cj4+Pj4gLQkJCWRtYV9mcmVlX2NvaGVyZW50KGRldiwgYW0y MV9zaXplLAo+Pj4+IC0JCQkJCSAgY29tbS0+ZmJjX2J1ZmZlcl92YWRkcltpXSwKPj4+PiAtCQkJ CQkgIGNvbW0tPmZiY19idWZmZXJfcGFkZHJbaV0pOwo+Pj4+IC0JCQljb21tLT5mYmNfYnVmZmVy X3ZhZGRyW2ldID0gTlVMTDsKPj4+PiArCQlpZiAoY29tbS0+bW11X2hlYWRlcl92YWRkcltpXSkg ewo+Pj4+ICsJCQlkbWFfZnJlZV9jb2hlcmVudChkZXYsIE1NVV9DT01QUkVTU19IRUFERVJfU0la RSwKPj4+PiArCQkJCQkgIGNvbW0tPm1tdV9oZWFkZXJfdmFkZHJbaV0sCj4+Pj4gKwkJCQkJICBj b21tLT5tbXVfaGVhZGVyX3BhZGRyW2ldKTsKPj4+PiArCQkJY29tbS0+bW11X2hlYWRlcl92YWRk cltpXSA9IE5VTEw7Cj4+Pj4gICAgCQl9Cj4+Pj4gICAgCX0KPj4+PiAgICB9Cj4+Pj4gLUVYUE9S VF9TWU1CT0xfR1BMKGNvZGVjX2hldmNfZnJlZV9mYmNfYnVmZmVycyk7Cj4+Pj4gK0VYUE9SVF9T WU1CT0xfR1BMKGNvZGVjX2hldmNfZnJlZV9tbXVfaGVhZGVycyk7Cj4+Pj4gICAgCj4+Pj4gLXN0 YXRpYyBpbnQgY29kZWNfaGV2Y19hbGxvY19mYmNfYnVmZmVycyhzdHJ1Y3QgYW12ZGVjX3Nlc3Np b24gKnNlc3MsCj4+Pj4gK3N0YXRpYyBpbnQgY29kZWNfaGV2Y19hbGxvY19tbXVfaGVhZGVycyhz dHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsCj4+Pj4gICAgCQkJCQlzdHJ1Y3QgY29kZWNfaGV2 Y19jb21tb24gKmNvbW0pCj4+Pj4gICAgewo+Pj4+ICAgIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBz ZXNzLT5jb3JlLT5kZXY7Cj4+Pj4gICAgCXN0cnVjdCB2NGwyX20ybV9idWZmZXIgKmJ1ZjsKPj4+ PiAtCXUzMiBhbTIxX3NpemUgPSBhbXZkZWNfYW0yMWNfc2l6ZShzZXNzLT53aWR0aCwgc2Vzcy0+ aGVpZ2h0KTsKPj4+PiAgICAKPj4+PiAgICAJdjRsMl9tMm1fZm9yX2VhY2hfZHN0X2J1ZihzZXNz LT5tMm1fY3R4LCBidWYpIHsKPj4+PiAgICAJCXUzMiBpZHggPSBidWYtPnZiLnZiMl9idWYuaW5k ZXg7Cj4+Pj4gICAgCQlkbWFfYWRkcl90IHBhZGRyOwo+Pj4+IC0JCXZvaWQgKnZhZGRyID0gZG1h X2FsbG9jX2NvaGVyZW50KGRldiwgYW0yMV9zaXplLCAmcGFkZHIsCj4+Pj4gLQkJCQkJCSBHRlBf S0VSTkVMKTsKPj4+PiArCQl2b2lkICp2YWRkciA9IGRtYV9hbGxvY19jb2hlcmVudChkZXYsIE1N VV9DT01QUkVTU19IRUFERVJfU0laRSwKPj4+PiArCQkJCQkJICZwYWRkciwgR0ZQX0tFUk5FTCk7 Cj4+Pj4gICAgCQlpZiAoIXZhZGRyKSB7Cj4+Pj4gLQkJCWNvZGVjX2hldmNfZnJlZV9mYmNfYnVm ZmVycyhzZXNzLCBjb21tKTsKPj4+PiArCQkJY29kZWNfaGV2Y19mcmVlX21tdV9oZWFkZXJzKHNl c3MsIGNvbW0pOwo+Pj4+ICAgIAkJCXJldHVybiAtRU5PTUVNOwo+Pj4+ICAgIAkJfQo+Pj4+ICAg IAo+Pj4+IC0JCWNvbW0tPmZiY19idWZmZXJfdmFkZHJbaWR4XSA9IHZhZGRyOwo+Pj4+IC0JCWNv bW0tPmZiY19idWZmZXJfcGFkZHJbaWR4XSA9IHBhZGRyOwo+Pj4+ICsJCWNvbW0tPm1tdV9oZWFk ZXJfdmFkZHJbaWR4XSA9IHZhZGRyOwo+Pj4+ICsJCWNvbW0tPm1tdV9oZWFkZXJfcGFkZHJbaWR4 XSA9IHBhZGRyOwo+Pj4+ICAgIAl9Cj4+Pj4gICAgCj4+Pj4gICAgCXJldHVybiAwOwo+Pj4+ICAg IH0KPj4+PiAgICAKPj4+PiAtdm9pZCBjb2RlY19oZXZjX2ZyZWVfbW11X2hlYWRlcnMoc3RydWN0 IGFtdmRlY19zZXNzaW9uICpzZXNzLAo+Pj4+ICt2b2lkIGNvZGVjX2hldmNfZnJlZV9mYmNfYnVm ZmVycyhzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsCj4+Pj4gICAgCQkJCSBzdHJ1Y3QgY29k ZWNfaGV2Y19jb21tb24gKmNvbW0pCj4+Pj4gICAgewo+Pj4+ICAgIAlzdHJ1Y3QgZGV2aWNlICpk ZXYgPSBzZXNzLT5jb3JlLT5kZXY7Cj4+Pj4gKwl1MzIgdXNlX21tdTsKPj4+PiArCXUzMiBhbTIx X3NpemU7Cj4+Pj4gICAgCWludCBpOwo+Pj4+ICAgIAo+Pj4+ICsJdXNlX21tdSA9IGNvZGVjX2hl dmNfdXNlX21tdShzZXNzLT5jb3JlLT5wbGF0Zm9ybS0+cmV2aXNpb24sCj4+Pj4gKwkJCQkgICAg IHNlc3MtPnBpeGZtdF9jYXAsCj4+Pj4gKwkJCQlzZXNzLT5iaXRkZXB0aCA9PSAxMCA/IDEgOiAw KTsKPj4+PiArCj4+Pj4gKwlhbTIxX3NpemUgPSBhbXZkZWNfYW1mYmNfc2l6ZShzZXNzLT53aWR0 aCwgc2Vzcy0+aGVpZ2h0LAo+Pj4+ICsJCQkJICAgICAgc2Vzcy0+Yml0ZGVwdGggPT0gMTAgPyAx IDogMCwgdXNlX21tdSk7Cj4+Pj4gKwo+Pj4+ICAgIAlmb3IgKGkgPSAwOyBpIDwgTUFYX1JFRl9Q SUNfTlVNOyArK2kpIHsKPj4+PiAtCQlpZiAoY29tbS0+bW11X2hlYWRlcl92YWRkcltpXSkgewo+ Pj4+IC0JCQlkbWFfZnJlZV9jb2hlcmVudChkZXYsIE1NVV9DT01QUkVTU19IRUFERVJfU0laRSwK Pj4+PiAtCQkJCQkgIGNvbW0tPm1tdV9oZWFkZXJfdmFkZHJbaV0sCj4+Pj4gLQkJCQkJICBjb21t LT5tbXVfaGVhZGVyX3BhZGRyW2ldKTsKPj4+PiAtCQkJY29tbS0+bW11X2hlYWRlcl92YWRkcltp XSA9IE5VTEw7Cj4+Pj4gKwkJaWYgKGNvbW0tPmZiY19idWZmZXJfdmFkZHJbaV0pIHsKPj4+PiAr CQkJZG1hX2ZyZWVfY29oZXJlbnQoZGV2LCBhbTIxX3NpemUsCj4+Pj4gKwkJCQkJICBjb21tLT5m YmNfYnVmZmVyX3ZhZGRyW2ldLAo+Pj4+ICsJCQkJCSAgY29tbS0+ZmJjX2J1ZmZlcl9wYWRkcltp XSk7Cj4+Pj4gKwkJCWNvbW0tPmZiY19idWZmZXJfdmFkZHJbaV0gPSBOVUxMOwo+Pj4+ICAgIAkJ fQo+Pj4+ICAgIAl9Cj4+Pj4gICAgCj4+Pj4gQEAgLTIxMywzMyArMjMzLDUwIEBAIHZvaWQgY29k ZWNfaGV2Y19mcmVlX21tdV9oZWFkZXJzKHN0cnVjdCBhbXZkZWNfc2Vzc2lvbiAqc2VzcywKPj4+ PiAgICAJCQkJICBjb21tLT5tbXVfbWFwX3BhZGRyKTsKPj4+PiAgICAJCWNvbW0tPm1tdV9tYXBf dmFkZHIgPSBOVUxMOwo+Pj4+ICAgIAl9Cj4+Pj4gKwo+Pj4+ICsJY29kZWNfaGV2Y19mcmVlX21t dV9oZWFkZXJzKHNlc3MsIGNvbW0pOwo+Pj4+ICAgIH0KPj4+PiAtRVhQT1JUX1NZTUJPTF9HUEwo Y29kZWNfaGV2Y19mcmVlX21tdV9oZWFkZXJzKTsKPj4+PiArRVhQT1JUX1NZTUJPTF9HUEwoY29k ZWNfaGV2Y19mcmVlX2ZiY19idWZmZXJzKTsKPj4+PiAgICAKPj4+PiAtc3RhdGljIGludCBjb2Rl Y19oZXZjX2FsbG9jX21tdV9oZWFkZXJzKHN0cnVjdCBhbXZkZWNfc2Vzc2lvbiAqc2VzcywKPj4+ PiArc3RhdGljIGludCBjb2RlY19oZXZjX2FsbG9jX2ZiY19idWZmZXJzKHN0cnVjdCBhbXZkZWNf c2Vzc2lvbiAqc2VzcywKPj4+PiAgICAJCQkJCXN0cnVjdCBjb2RlY19oZXZjX2NvbW1vbiAqY29t bSkKPj4+PiAgICB7Cj4+Pj4gICAgCXN0cnVjdCBkZXZpY2UgKmRldiA9IHNlc3MtPmNvcmUtPmRl djsKPj4+PiAgICAJc3RydWN0IHY0bDJfbTJtX2J1ZmZlciAqYnVmOwo+Pj4+ICsJdTMyIHVzZV9t bXU7Cj4+Pj4gKwl1MzIgYW0yMV9zaXplOwo+Pj4+ICsJY29uc3QgdTMyIHJldmlzaW9uID0gc2Vz cy0+Y29yZS0+cGxhdGZvcm0tPnJldmlzaW9uOwo+Pj4+ICsJY29uc3QgdTMyIGlzXzEwYml0ID0g c2Vzcy0+Yml0ZGVwdGggPT0gMTAgPyAxIDogMDsKPj4+PiArCWludCByZXQ7Cj4+Pj4gICAgCj4+ Pj4gLQljb21tLT5tbXVfbWFwX3ZhZGRyID0gZG1hX2FsbG9jX2NvaGVyZW50KGRldiwgTU1VX01B UF9TSVpFLAo+Pj4+IC0JCQkJCQkgJmNvbW0tPm1tdV9tYXBfcGFkZHIsCj4+Pj4gLQkJCQkJCSBH RlBfS0VSTkVMKTsKPj4+PiAtCWlmICghY29tbS0+bW11X21hcF92YWRkcikKPj4+PiAtCQlyZXR1 cm4gLUVOT01FTTsKPj4+PiArCXVzZV9tbXUgPSBjb2RlY19oZXZjX3VzZV9tbXUocmV2aXNpb24s IHNlc3MtPnBpeGZtdF9jYXAsCj4+Pj4gKwkJCQkgICAgIGlzXzEwYml0KTsKPj4+PiArCj4+Pj4g KwlhbTIxX3NpemUgPSBhbXZkZWNfYW1mYmNfc2l6ZShzZXNzLT53aWR0aCwgc2Vzcy0+aGVpZ2h0 LAo+Pj4+ICsJCQkJICAgICAgaXNfMTBiaXQsIHVzZV9tbXUpOwo+Pj4+ICAgIAo+Pj4+ICAgIAl2 NGwyX20ybV9mb3JfZWFjaF9kc3RfYnVmKHNlc3MtPm0ybV9jdHgsIGJ1Zikgewo+Pj4+ICAgIAkJ dTMyIGlkeCA9IGJ1Zi0+dmIudmIyX2J1Zi5pbmRleDsKPj4+PiAgICAJCWRtYV9hZGRyX3QgcGFk ZHI7Cj4+Pj4gLQkJdm9pZCAqdmFkZHIgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LCBNTVVfQ09N UFJFU1NfSEVBREVSX1NJWkUsCj4+Pj4gLQkJCQkJCSAmcGFkZHIsIEdGUF9LRVJORUwpOwo+Pj4+ ICsKPj4+PiArCQl2b2lkICp2YWRkciA9IGRtYV9hbGxvY19jb2hlcmVudChkZXYsIGFtMjFfc2l6 ZSwgJnBhZGRyLAo+Pj4+ICsJCQkJCQkgR0ZQX0tFUk5FTCk7Cj4+Pj4gICAgCQlpZiAoIXZhZGRy KSB7Cj4+Pj4gLQkJCWNvZGVjX2hldmNfZnJlZV9tbXVfaGVhZGVycyhzZXNzLCBjb21tKTsKPj4+ PiArCQkJY29kZWNfaGV2Y19mcmVlX2ZiY19idWZmZXJzKHNlc3MsIGNvbW0pOwo+Pj4+ICAgIAkJ CXJldHVybiAtRU5PTUVNOwo+Pj4+ICAgIAkJfQo+Pj4+ICAgIAo+Pj4+IC0JCWNvbW0tPm1tdV9o ZWFkZXJfdmFkZHJbaWR4XSA9IHZhZGRyOwo+Pj4+IC0JCWNvbW0tPm1tdV9oZWFkZXJfcGFkZHJb aWR4XSA9IHBhZGRyOwo+Pj4+ICsJCWNvbW0tPmZiY19idWZmZXJfdmFkZHJbaWR4XSA9IHZhZGRy Owo+Pj4+ICsJCWNvbW0tPmZiY19idWZmZXJfcGFkZHJbaWR4XSA9IHBhZGRyOwo+Pj4+ICsJfQo+ Pj4+ICsKPj4+PiArCWlmIChjb2RlY19oZXZjX3VzZV9tbXUocmV2aXNpb24sIHNlc3MtPnBpeGZt dF9jYXAsIGlzXzEwYml0KSAmJgo+Pj4+ICsJICAgIGNvZGVjX2hldmNfdXNlX2Rvd25zYW1wbGUo c2Vzcy0+cGl4Zm10X2NhcCwgaXNfMTBiaXQpKSB7Cj4+Pj4gKwkJcmV0ID0gY29kZWNfaGV2Y19h bGxvY19tbXVfaGVhZGVycyhzZXNzLCBjb21tKTsKPj4+PiArCQlpZiAocmV0KSB7Cj4+Pj4gKwkJ CWNvZGVjX2hldmNfZnJlZV9mYmNfYnVmZmVycyhzZXNzLCBjb21tKTsKPj4+PiArCQkJcmV0dXJu IHJldDsKPj4+PiArCQl9Cj4+Pj4gICAgCX0KPj4+PiAgICAKPj4+PiAgICAJcmV0dXJuIDA7Cj4+ Pj4gQEAgLTI1MCwyMSArMjg3LDI0IEBAIGludCBjb2RlY19oZXZjX3NldHVwX2J1ZmZlcnMoc3Ry dWN0IGFtdmRlY19zZXNzaW9uICpzZXNzLAo+Pj4+ICAgIAkJCSAgICAgaW50IGlzXzEwYml0KQo+ Pj4+ICAgIHsKPj4+PiAgICAJc3RydWN0IGFtdmRlY19jb3JlICpjb3JlID0gc2Vzcy0+Y29yZTsK Pj4+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGNvcmUtPmRldjsKPj4+PiAgICAJaW50IHJldDsK Pj4+PiAgICAKPj4+PiAtCWlmIChjb2RlY19oZXZjX3VzZV9kb3duc2FtcGxlKHNlc3MtPnBpeGZt dF9jYXAsIGlzXzEwYml0KSkgewo+Pj4+IC0JCXJldCA9IGNvZGVjX2hldmNfYWxsb2NfZmJjX2J1 ZmZlcnMoc2VzcywgY29tbSk7Cj4+Pj4gLQkJaWYgKHJldCkKPj4+PiAtCQkJcmV0dXJuIHJldDsK Pj4+PiArCWlmIChjb2RlY19oZXZjX3VzZV9tbXUoY29yZS0+cGxhdGZvcm0tPnJldmlzaW9uLAo+ Pj4+ICsJCQkgICAgICAgc2Vzcy0+cGl4Zm10X2NhcCwgaXNfMTBiaXQpKSB7Cj4+Pj4gKwkJY29t bS0+bW11X21hcF92YWRkciA9IGRtYV9hbGxvY19jb2hlcmVudChkZXYsIE1NVV9NQVBfU0laRSwK Pj4+PiArCQkJCQkJCSAmY29tbS0+bW11X21hcF9wYWRkciwKPj4+PiArCQkJCQkJCSBHRlBfS0VS TkVMKTsKPj4+PiArCQlpZiAoIWNvbW0tPm1tdV9tYXBfdmFkZHIpCj4+Pj4gKwkJCXJldHVybiAt RU5PTUVNOwo+Pj4+ICAgIAl9Cj4+Pj4gICAgCj4+Pj4gICAgCWlmIChjb2RlY19oZXZjX3VzZV9t bXUoY29yZS0+cGxhdGZvcm0tPnJldmlzaW9uLAo+Pj4+IC0JCQkgICAgICAgc2Vzcy0+cGl4Zm10 X2NhcCwgaXNfMTBiaXQpKSB7Cj4+Pj4gLQkJcmV0ID0gY29kZWNfaGV2Y19hbGxvY19tbXVfaGVh ZGVycyhzZXNzLCBjb21tKTsKPj4+PiAtCQlpZiAocmV0KSB7Cj4+Pj4gLQkJCWNvZGVjX2hldmNf ZnJlZV9mYmNfYnVmZmVycyhzZXNzLCBjb21tKTsKPj4+PiArCQkJICAgICAgIHNlc3MtPnBpeGZt dF9jYXAsIGlzXzEwYml0KSB8fAo+Pj4+ICsJICAgIGNvZGVjX2hldmNfdXNlX2Rvd25zYW1wbGUo c2Vzcy0+cGl4Zm10X2NhcCwgaXNfMTBiaXQpKSB7Cj4+Pj4gKwkJcmV0ID0gY29kZWNfaGV2Y19h bGxvY19mYmNfYnVmZmVycyhzZXNzLCBjb21tKTsKPj4+PiArCQlpZiAocmV0KQo+Pj4+ICAgIAkJ CXJldHVybiByZXQ7Cj4+Pj4gLQkJfQo+Pj4+ICAgIAl9Cj4+Pj4gICAgCj4+Pj4gICAgCWlmIChj b3JlLT5wbGF0Zm9ybS0+cmV2aXNpb24gPT0gVkRFQ19SRVZJU0lPTl9HWEJCKQo+Pj4+IEBAIC0y NzgsMTkgKzMxOCwyNCBAQCBFWFBPUlRfU1lNQk9MX0dQTChjb2RlY19oZXZjX3NldHVwX2J1ZmZl cnMpOwo+Pj4+ICAgIAo+Pj4+ICAgIHZvaWQgY29kZWNfaGV2Y19maWxsX21tdV9tYXAoc3RydWN0 IGFtdmRlY19zZXNzaW9uICpzZXNzLAo+Pj4+ICAgIAkJCSAgICAgc3RydWN0IGNvZGVjX2hldmNf Y29tbW9uICpjb21tLAo+Pj4+IC0JCQkgICAgIHN0cnVjdCB2YjJfYnVmZmVyICp2YikKPj4+PiAr CQkJICAgICBzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIsCj4+Pj4gKwkJCSAgICAgdTMyIGlzXzEwYml0 KQo+Pj4+ICAgIHsKPj4+PiAtCXUzMiBzaXplID0gYW12ZGVjX2FtMjFjX3NpemUoc2Vzcy0+d2lk dGgsIHNlc3MtPmhlaWdodCk7Cj4+Pj4gLQl1MzIgbmJfcGFnZXMgPSBzaXplIC8gUEFHRV9TSVpF Owo+Pj4+ICsJdTMyIHVzZV9tbXU7Cj4+Pj4gKwl1MzIgc2l6ZTsKPj4+PiArCXUzMiBuYl9wYWdl czsKPj4+PiAgICAJdTMyICptbXVfbWFwID0gY29tbS0+bW11X21hcF92YWRkcjsKPj4+PiAgICAJ dTMyIGZpcnN0X3BhZ2U7Cj4+Pj4gICAgCXUzMiBpOwo+Pj4+ICAgIAo+Pj4+IC0JaWYgKHNlc3Mt PnBpeGZtdF9jYXAgPT0gVjRMMl9QSVhfRk1UX05WMTJNKQo+Pj4+IC0JCWZpcnN0X3BhZ2UgPSBj b21tLT5mYmNfYnVmZmVyX3BhZGRyW3ZiLT5pbmRleF0gPj4gUEFHRV9TSElGVDsKPj4+PiAtCWVs c2UKPj4+PiAtCQlmaXJzdF9wYWdlID0gdmIyX2RtYV9jb250aWdfcGxhbmVfZG1hX2FkZHIodmIs IDApID4+IFBBR0VfU0hJRlQ7Cj4+Pj4gKwl1c2VfbW11ID0gY29kZWNfaGV2Y191c2VfbW11KHNl c3MtPmNvcmUtPnBsYXRmb3JtLT5yZXZpc2lvbiwKPj4+PiArCQkJCSAgICAgc2Vzcy0+cGl4Zm10 X2NhcCwgaXNfMTBiaXQpOwo+Pj4+ICsKPj4+PiArCXNpemUgPSBhbXZkZWNfYW1mYmNfc2l6ZShz ZXNzLT53aWR0aCwgc2Vzcy0+aGVpZ2h0LCBpc18xMGJpdCwKPj4+PiArCQkJCSB1c2VfbW11KTsK Pj4+PiAgICAKPj4+PiArCW5iX3BhZ2VzID0gc2l6ZSAvIFBBR0VfU0laRTsKPj4+PiArCWZpcnN0 X3BhZ2UgPSBjb21tLT5mYmNfYnVmZmVyX3BhZGRyW3ZiLT5pbmRleF0gPj4gUEFHRV9TSElGVDsK Pj4+PiAgICAJZm9yIChpID0gMDsgaSA8IG5iX3BhZ2VzOyArK2kpCj4+Pj4gICAgCQltbXVfbWFw W2ldID0gZmlyc3RfcGFnZSArIGk7Cj4+Pj4gICAgfQo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy9jb2RlY19oZXZjX2NvbW1vbi5oIGIvZHJpdmVycy9z dGFnaW5nL21lZGlhL21lc29uL3ZkZWMvY29kZWNfaGV2Y19jb21tb24uaAo+Pj4+IGluZGV4IGNm MDcyYjhhOWRhMi4uMTNmOWYxZDkwYTk0IDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvc3RhZ2lu Zy9tZWRpYS9tZXNvbi92ZGVjL2NvZGVjX2hldmNfY29tbW9uLmgKPj4+PiArKysgYi9kcml2ZXJz L3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy9jb2RlY19oZXZjX2NvbW1vbi5oCj4+Pj4gQEAgLTY0 LDYgKzY0LDcgQEAgaW50IGNvZGVjX2hldmNfc2V0dXBfYnVmZmVycyhzdHJ1Y3QgYW12ZGVjX3Nl c3Npb24gKnNlc3MsCj4+Pj4gICAgCj4+Pj4gICAgdm9pZCBjb2RlY19oZXZjX2ZpbGxfbW11X21h cChzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsCj4+Pj4gICAgCQkJICAgICBzdHJ1Y3QgY29k ZWNfaGV2Y19jb21tb24gKmNvbW0sCj4+Pj4gLQkJCSAgICAgc3RydWN0IHZiMl9idWZmZXIgKnZi KTsKPj4+PiArCQkJICAgICBzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIsCj4+Pj4gKwkJCSAgICAgdTMy IGlzXzEwYml0KTsKPj4+PiAgICAKPj4+PiAgICAjZW5kaWYKPj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvY29kZWNfdnA5LmMgYi9kcml2ZXJzL3N0YWdp bmcvbWVkaWEvbWVzb24vdmRlYy9jb2RlY192cDkuYwo+Pj4+IGluZGV4IDM5NGRmNTc2MTU1Ni4u OGUzYmJmMGRiNGIzIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNv bi92ZGVjL2NvZGVjX3ZwOS5jCj4+Pj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29u L3ZkZWMvY29kZWNfdnA5LmMKPj4+PiBAQCAtNDU4LDEyICs0NTgsNiBAQCBzdHJ1Y3QgY29kZWNf dnA5IHsKPj4+PiAgICAJc3RydWN0IGxpc3RfaGVhZCByZWZfZnJhbWVzX2xpc3Q7Cj4+Pj4gICAg CXUzMiBmcmFtZXNfbnVtOwo+Pj4+ICAgIAo+Pj4+IC0JLyogSW4gY2FzZSBvZiBkb3duc2FtcGxp bmcgKGRlY29kaW5nIHdpdGggRkJDIGJ1dCBvdXRwdXR0aW5nIGluIE5WMTJNKSwKPj4+PiAtCSAq IHdlIG5lZWQgdG8gYWxsb2NhdGUgYWRkaXRpb25hbCBidWZmZXJzIGZvciBGQkMuCj4+Pj4gLQkg Ki8KPj4+PiAtCXZvaWQgICAgICAqZmJjX2J1ZmZlcl92YWRkcltNQVhfUkVGX1BJQ19OVU1dOwo+ Pj4+IC0JZG1hX2FkZHJfdCBmYmNfYnVmZmVyX3BhZGRyW01BWF9SRUZfUElDX05VTV07Cj4+Pj4g LQo+Pj4+ICAgIAlpbnQgcmVmX2ZyYW1lX21hcFtSRUZfRlJBTUVTXTsKPj4+PiAgICAJaW50IG5l eHRfcmVmX2ZyYW1lX21hcFtSRUZfRlJBTUVTXTsKPj4+PiAgICAJc3RydWN0IHZwOV9mcmFtZSAq ZnJhbWVfcmVmc1tSRUZTX1BFUl9GUkFNRV07Cj4+Pj4gQEAgLTkwMSwxMSArODk1LDggQEAgc3Rh dGljIHZvaWQgY29kZWNfdnA5X3NldF9zYW8oc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzLAo+ Pj4+ICAgIAkJYnVmX3lfcGFkZHIgPQo+Pj4+ICAgIAkJICAgICAgIHZiMl9kbWFfY29udGlnX3Bs YW5lX2RtYV9hZGRyKHZiLCAwKTsKPj4+PiAgICAKPj4+PiAtCWlmIChjb2RlY19oZXZjX3VzZV9m YmMoc2Vzcy0+cGl4Zm10X2NhcCwgdnA5LT5pc18xMGJpdCkpIHsKPj4+PiAtCQl2YWwgPSBhbXZk ZWNfcmVhZF9kb3MoY29yZSwgSEVWQ19TQU9fQ1RSTDUpICYgfjB4ZmYwMjAwOwo+Pj4+IC0JCWFt dmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ19TQU9fQ1RSTDUsIHZhbCk7Cj4+Pj4gKwlpZiAoY29k ZWNfaGV2Y191c2VfZmJjKHNlc3MtPnBpeGZtdF9jYXAsIHZwOS0+aXNfMTBiaXQpKQo+Pj4+ICAg IAkJYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBIRVZDX0NNX0JPRFlfU1RBUlRfQUREUiwgYnVmX3lf cGFkZHIpOwo+Pj4+IC0JfQo+Pj4+ICAgIAo+Pj4+ICAgIAlpZiAoc2Vzcy0+cGl4Zm10X2NhcCA9 PSBWNEwyX1BJWF9GTVRfTlYxMk0pIHsKPj4+PiAgICAJCWJ1Zl95X3BhZGRyID0KPj4+PiBAQCAt OTIwLDggKzkxMSwxMyBAQCBzdGF0aWMgdm9pZCBjb2RlY192cDlfc2V0X3NhbyhzdHJ1Y3QgYW12 ZGVjX3Nlc3Npb24gKnNlc3MsCj4+Pj4gICAgCj4+Pj4gICAgCWlmIChjb2RlY19oZXZjX3VzZV9t bXUoY29yZS0+cGxhdGZvcm0tPnJldmlzaW9uLCBzZXNzLT5waXhmbXRfY2FwLAo+Pj4+ICAgIAkJ CSAgICAgICB2cDktPmlzXzEwYml0KSkgewo+Pj4+IC0JCWFtdmRlY193cml0ZV9kb3MoY29yZSwg SEVWQ19DTV9IRUFERVJfU1RBUlRfQUREUiwKPj4+PiAtCQkJCSB2cDktPmNvbW1vbi5tbXVfaGVh ZGVyX3BhZGRyW3ZiLT5pbmRleF0pOwo+Pj4+ICsJCWRtYV9hZGRyX3QgaGVhZGVyX2FkcjsKPj4+ PiArCj4+Pj4gKwkJaWYgKGNvZGVjX2hldmNfdXNlX2Rvd25zYW1wbGUoc2Vzcy0+cGl4Zm10X2Nh cCwgdnA5LT5pc18xMGJpdCkpCj4+Pj4gKwkJCWhlYWRlcl9hZHIgPSB2cDktPmNvbW1vbi5tbXVf aGVhZGVyX3BhZGRyW3ZiLT5pbmRleF07Cj4+Pj4gKwkJZWxzZQo+Pj4+ICsJCQloZWFkZXJfYWRy ID0gdmIyX2RtYV9jb250aWdfcGxhbmVfZG1hX2FkZHIodmIsIDApOwo+Pj4+ICsJCWFtdmRlY193 cml0ZV9kb3MoY29yZSwgSEVWQ19DTV9IRUFERVJfU1RBUlRfQUREUiwgaGVhZGVyX2Fkcik7Cj4+ Pj4gICAgCQkvKiB1c2UgSEVWQ19DTV9IRUFERVJfU1RBUlRfQUREUiAqLwo+Pj4+ICAgIAkJYW12 ZGVjX3dyaXRlX2Rvc19iaXRzKGNvcmUsIEhFVkNfU0FPX0NUUkw1LCBCSVQoMTApKTsKPj4+PiAg ICAJfQo+Pj4+IEBAIC0xMTQ4LDkgKzExNDQsMTMgQEAgc3RhdGljIHZvaWQgY29kZWNfdnA5X3Nl dF9tYyhzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsCj4+Pj4gICAgewo+Pj4+ICAgIAlzdHJ1 Y3QgYW12ZGVjX2NvcmUgKmNvcmUgPSBzZXNzLT5jb3JlOwo+Pj4+ICAgIAl1MzIgc2NhbGUgPSAw Owo+Pj4+ICsJdTMyIHVzZV9tbXU7Cj4+Pj4gICAgCXUzMiBzejsKPj4+PiAgICAJaW50IGk7Cj4+ Pj4gICAgCj4+Pj4gKwl1c2VfbW11ID0gY29kZWNfaGV2Y191c2VfbW11KGNvcmUtPnBsYXRmb3Jt LT5yZXZpc2lvbiwKPj4+PiArCQkJCSAgICAgc2Vzcy0+cGl4Zm10X2NhcCwgdnA5LT5pc18xMGJp dCk7Cj4+Pj4gKwo+Pj4+ICAgIAlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIEhFVkNEX01QUF9BTkNf Q0FOVkFTX0FDQ0NPTkZJR19BRERSLCAxKTsKPj4+PiAgICAJY29kZWNfdnA5X3NldF9yZWZzKHNl c3MsIHZwOSk7Cj4+Pj4gICAgCWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ0RfTVBQX0FOQ19D QU5WQVNfQUNDQ09ORklHX0FERFIsCj4+Pj4gQEAgLTExNjYsOCArMTE2Niw5IEBAIHN0YXRpYyB2 b2lkIGNvZGVjX3ZwOV9zZXRfbWMoc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzLAo+Pj4+ICAg IAkJICAgIHZwOS0+ZnJhbWVfcmVmc1tpXS0+aGVpZ2h0ICE9IHZwOS0+aGVpZ2h0KQo+Pj4+ICAg IAkJCXNjYWxlID0gMTsKPj4+PiAgICAKPj4+PiAtCQlzeiA9IGFtdmRlY19hbTIxY19ib2R5X3Np emUodnA5LT5mcmFtZV9yZWZzW2ldLT53aWR0aCwKPj4+PiAtCQkJCQkgICAgdnA5LT5mcmFtZV9y ZWZzW2ldLT5oZWlnaHQpOwo+Pj4+ICsJCXN6ID0gYW12ZGVjX2FtZmJjX2JvZHlfc2l6ZSh2cDkt PmZyYW1lX3JlZnNbaV0tPndpZHRoLAo+Pj4+ICsJCQkJCSAgICB2cDktPmZyYW1lX3JlZnNbaV0t PmhlaWdodCwKPj4+PiArCQkJCQkgICAgdnA5LT5pc18xMGJpdCwgdXNlX21tdSk7Cj4+Pj4gICAg Cj4+Pj4gICAgCQlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIFZQOURfTVBQX1JFRklORk9fREFUQSwK Pj4+PiAgICAJCQkJIHZwOS0+ZnJhbWVfcmVmc1tpXS0+d2lkdGgpOwo+Pj4+IEBAIC0xMjgzLDcg KzEyODQsOCBAQCBzdGF0aWMgdm9pZCBjb2RlY192cDlfcHJvY2Vzc19mcmFtZShzdHJ1Y3QgYW12 ZGVjX3Nlc3Npb24gKnNlc3MpCj4+Pj4gICAgCWlmIChjb2RlY19oZXZjX3VzZV9tbXUoY29yZS0+ cGxhdGZvcm0tPnJldmlzaW9uLCBzZXNzLT5waXhmbXRfY2FwLAo+Pj4+ICAgIAkJCSAgICAgICB2 cDktPmlzXzEwYml0KSkKPj4+PiAgICAJCWNvZGVjX2hldmNfZmlsbF9tbXVfbWFwKHNlc3MsICZ2 cDktPmNvbW1vbiwKPj4+PiAtCQkJCQkmdnA5LT5jdXJfZnJhbWUtPnZidWYtPnZiMl9idWYpOwo+ Pj4+ICsJCQkJCSZ2cDktPmN1cl9mcmFtZS0+dmJ1Zi0+dmIyX2J1ZiwKPj4+PiArCQkJCQl2cDkt PmlzXzEwYml0KTsKPj4+PiAgICAKPj4+PiAgICAJaW50cmFfb25seSA9IHBhcmFtLT5wLnNob3df ZnJhbWUgPyAwIDogcGFyYW0tPnAuaW50cmFfb25seTsKPj4+PiAgICAKPj4+PiBAQCAtMjEzMCw3 ICsyMTMyLDggQEAgc3RhdGljIGlycXJldHVybl90IGNvZGVjX3ZwOV90aHJlYWRlZF9pc3Ioc3Ry dWN0IGFtdmRlY19zZXNzaW9uICpzZXNzKQo+Pj4+ICAgIAo+Pj4+ICAgIAljb2RlY192cDlfZmV0 Y2hfcnBtKHNlc3MpOwo+Pj4+ICAgIAlpZiAoY29kZWNfdnA5X3Byb2Nlc3NfcnBtKHZwOSkpIHsK Pj4+PiAtCQlhbXZkZWNfc3JjX2NoYW5nZShzZXNzLCB2cDktPndpZHRoLCB2cDktPmhlaWdodCwg MTYpOwo+Pj4+ICsJCWFtdmRlY19zcmNfY2hhbmdlKHNlc3MsIHZwOS0+d2lkdGgsIHZwOS0+aGVp Z2h0LCAxNiwKPj4+PiArCQkJCSAgdnA5LT5pc18xMGJpdCA/IDEwIDogOCk7Cj4+Pj4gICAgCj4+ Pj4gICAgCQkvKiBObyBmcmFtZSBpcyBhY3R1YWxseSBwcm9jZXNzZWQgKi8KPj4+PiAgICAJCXZw OS0+Y3VyX2ZyYW1lID0gTlVMTDsKPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21l ZGlhL21lc29uL3ZkZWMvZXNwYXJzZXIuYyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92 ZGVjL2VzcGFyc2VyLmMKPj4+PiBpbmRleCAxOTA0ZDU4ODc1YWQuLjNjZDI5YWI0Zjk3OSAxMDA2 NDQKPj4+PiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy9lc3BhcnNlci5j Cj4+Pj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvZXNwYXJzZXIuYwo+ Pj4+IEBAIC0zMjAsNiArMzIwLDcgQEAgZXNwYXJzZXJfcXVldWUoc3RydWN0IGFtdmRlY19zZXNz aW9uICpzZXNzLCBzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICp2YnVmKQo+Pj4+ICAgIAkJaWYgKGVz cGFyc2VyX3ZpZmlmb19nZXRfZnJlZV9zcGFjZShzZXNzKSA8IHBheWxvYWRfc2l6ZSB8fAo+Pj4+ ICAgIAkJICAgIGF0b21pY19yZWFkKCZzZXNzLT5lc3BhcnNlcl9xdWV1ZWRfYnVmcykgPj0gbnVt X2RzdF9idWZzKQo+Pj4+ICAgIAkJCXJldHVybiAtRUFHQUlOOwo+Pj4+ICsKPj4+PiAgICAJfSBl bHNlIGlmIChlc3BhcnNlcl92aWZpZm9fZ2V0X2ZyZWVfc3BhY2Uoc2VzcykgPCBwYXlsb2FkX3Np emUpIHsKPj4+PiAgICAJCXJldHVybiAtRUFHQUlOOwo+Pj4+ICAgIAl9Cj4+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL3ZkZWMuaCBiL2RyaXZlcnMvc3Rh Z2luZy9tZWRpYS9tZXNvbi92ZGVjL3ZkZWMuaAo+Pj4+IGluZGV4IDA5MDZiOGZiNWNjNi4uYTQ4 MTcwZmU0Y2ZmIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92 ZGVjL3ZkZWMuaAo+Pj4+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL3Zk ZWMuaAo+Pj4+IEBAIC0yNDQsNiArMjQ0LDcgQEAgc3RydWN0IGFtdmRlY19zZXNzaW9uIHsKPj4+ PiAgICAJdTMyIHdpZHRoOwo+Pj4+ICAgIAl1MzIgaGVpZ2h0Owo+Pj4+ICAgIAl1MzIgY29sb3Jz cGFjZTsKPj4+PiArCXUzMiBiaXRkZXB0aDsKPj4+PiAgICAJdTggeWNiY3JfZW5jOwo+Pj4+ICAg IAl1OCBxdWFudGl6YXRpb247Cj4+Pj4gICAgCXU4IHhmZXJfZnVuYzsKPj4+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvdmRlY19oZWxwZXJzLmMgYi9kcml2 ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy92ZGVjX2hlbHBlcnMuYwo+Pj4+IGluZGV4IDdk MmE3NTY1MzI1MC4uZmVmNzYxNDJmMGM1IDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvc3RhZ2lu Zy9tZWRpYS9tZXNvbi92ZGVjL3ZkZWNfaGVscGVycy5jCj4+Pj4gKysrIGIvZHJpdmVycy9zdGFn aW5nL21lZGlhL21lc29uL3ZkZWMvdmRlY19oZWxwZXJzLmMKPj4+PiBAQCAtNTAsMzIgKzUwLDQw IEBAIHZvaWQgYW12ZGVjX3dyaXRlX3BhcnNlcihzdHJ1Y3QgYW12ZGVjX2NvcmUgKmNvcmUsIHUz MiByZWcsIHUzMiB2YWwpCj4+Pj4gICAgfQo+Pj4+ICAgIEVYUE9SVF9TWU1CT0xfR1BMKGFtdmRl Y193cml0ZV9wYXJzZXIpOwo+Pj4+ICAgIAo+Pj4+IC0vKiA0IEtpQiBwZXIgNjR4MzIgYmxvY2sg Ki8KPj4+PiAtdTMyIGFtdmRlY19hbTIxY19ib2R5X3NpemUodTMyIHdpZHRoLCB1MzIgaGVpZ2h0 KQo+Pj4+ICsvKiBBTUZCQyBib2R5IGlzIG1hZGUgb3V0IG9mIDY0eDMyIGJsb2NrcyB3aXRoIHZh cnlpbmcgYmxvY2sgc2l6ZSAqLwo+Pj4+ICt1MzIgYW12ZGVjX2FtZmJjX2JvZHlfc2l6ZSh1MzIg d2lkdGgsIHUzMiBoZWlnaHQsIHUzMiBpc18xMGJpdCwgdTMyIHVzZV9tbXUpCj4+Pj4gICAgewo+ Pj4+ICAgIAl1MzIgd2lkdGhfNjQgPSBBTElHTih3aWR0aCwgNjQpIC8gNjQ7Cj4+Pj4gICAgCXUz MiBoZWlnaHRfMzIgPSBBTElHTihoZWlnaHQsIDMyKSAvIDMyOwo+Pj4+ICsJdTMyIGJsa19zaXpl ID0gNDA5NjsKPj4+PiAgICAKPj4+PiAtCXJldHVybiBTWl80SyAqIHdpZHRoXzY0ICogaGVpZ2h0 XzMyOwo+Pj4+ICsJaWYgKCFpc18xMGJpdCkgewo+Pj4+ICsJCWlmICh1c2VfbW11KQo+Pj4+ICsJ CQlibGtfc2l6ZSA9IDMyMDA7Cj4+Pj4gKwkJZWxzZQo+Pj4+ICsJCQlibGtfc2l6ZSA9IDMwNzI7 Cj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJcmV0dXJuIGJsa19zaXplICogd2lkdGhfNjQgKiBoZWln aHRfMzI7Cj4+Pj4gICAgfQo+Pj4+IC1FWFBPUlRfU1lNQk9MX0dQTChhbXZkZWNfYW0yMWNfYm9k eV9zaXplKTsKPj4+PiArRVhQT1JUX1NZTUJPTF9HUEwoYW12ZGVjX2FtZmJjX2JvZHlfc2l6ZSk7 Cj4+Pj4gICAgCj4+Pj4gICAgLyogMzIgYnl0ZXMgcGVyIDEyOHg2NCBibG9jayAqLwo+Pj4+IC11 MzIgYW12ZGVjX2FtMjFjX2hlYWRfc2l6ZSh1MzIgd2lkdGgsIHUzMiBoZWlnaHQpCj4+Pj4gK3Uz MiBhbXZkZWNfYW1mYmNfaGVhZF9zaXplKHUzMiB3aWR0aCwgdTMyIGhlaWdodCkKPj4+PiAgICB7 Cj4+Pj4gICAgCXUzMiB3aWR0aF8xMjggPSBBTElHTih3aWR0aCwgMTI4KSAvIDEyODsKPj4+PiAg ICAJdTMyIGhlaWdodF82NCA9IEFMSUdOKGhlaWdodCwgNjQpIC8gNjQ7Cj4+Pj4gICAgCj4+Pj4g ICAgCXJldHVybiAzMiAqIHdpZHRoXzEyOCAqIGhlaWdodF82NDsKPj4+PiAgICB9Cj4+Pj4gLUVY UE9SVF9TWU1CT0xfR1BMKGFtdmRlY19hbTIxY19oZWFkX3NpemUpOwo+Pj4+ICtFWFBPUlRfU1lN Qk9MX0dQTChhbXZkZWNfYW1mYmNfaGVhZF9zaXplKTsKPj4+PiAgICAKPj4+PiAtdTMyIGFtdmRl Y19hbTIxY19zaXplKHUzMiB3aWR0aCwgdTMyIGhlaWdodCkKPj4+PiArdTMyIGFtdmRlY19hbWZi Y19zaXplKHUzMiB3aWR0aCwgdTMyIGhlaWdodCwgdTMyIGlzXzEwYml0LCB1MzIgdXNlX21tdSkK Pj4+PiAgICB7Cj4+Pj4gLQlyZXR1cm4gQUxJR04oYW12ZGVjX2FtMjFjX2JvZHlfc2l6ZSh3aWR0 aCwgaGVpZ2h0KSArCj4+Pj4gLQkJICAgICBhbXZkZWNfYW0yMWNfaGVhZF9zaXplKHdpZHRoLCBo ZWlnaHQpLCBTWl82NEspOwo+Pj4+ICsJcmV0dXJuIEFMSUdOKGFtdmRlY19hbWZiY19ib2R5X3Np emUod2lkdGgsIGhlaWdodCwgaXNfMTBiaXQsIHVzZV9tbXUpICsKPj4+PiArCQkgICAgIGFtdmRl Y19hbWZiY19oZWFkX3NpemUod2lkdGgsIGhlaWdodCksIFNaXzY0Syk7Cj4+Pj4gICAgfQo+Pj4+ IC1FWFBPUlRfU1lNQk9MX0dQTChhbXZkZWNfYW0yMWNfc2l6ZSk7Cj4+Pj4gK0VYUE9SVF9TWU1C T0xfR1BMKGFtdmRlY19hbWZiY19zaXplKTsKPj4+PiAgICAKPj4+PiAgICBzdGF0aWMgaW50IGNh bnZhc19hbGxvYyhzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsIHU4ICpjYW52YXNfaWQpCj4+ Pj4gICAgewo+Pj4+IEBAIC00NDAsNyArNDQ4LDcgQEAgdm9pZCBhbXZkZWNfc2V0X3Bhcl9mcm9t X2RhcihzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsCj4+Pj4gICAgRVhQT1JUX1NZTUJPTF9H UEwoYW12ZGVjX3NldF9wYXJfZnJvbV9kYXIpOwo+Pj4+ICAgIAo+Pj4+ICAgIHZvaWQgYW12ZGVj X3NyY19jaGFuZ2Uoc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzLCB1MzIgd2lkdGgsCj4+Pj4g LQkJICAgICAgIHUzMiBoZWlnaHQsIHUzMiBkcGJfc2l6ZSkKPj4+PiArCQkgICAgICAgdTMyIGhl aWdodCwgdTMyIGRwYl9zaXplLCB1MzIgYml0ZGVwdGgpCj4+Pj4gICAgewo+Pj4+ICAgIAlzdGF0 aWMgY29uc3Qgc3RydWN0IHY0bDJfZXZlbnQgZXYgPSB7Cj4+Pj4gICAgCQkudHlwZSA9IFY0TDJf RVZFTlRfU09VUkNFX0NIQU5HRSwKPj4+PiBAQCAtNDQ4LDI1ICs0NTYsMjcgQEAgdm9pZCBhbXZk ZWNfc3JjX2NoYW5nZShzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsIHUzMiB3aWR0aCwKPj4+ PiAgICAKPj4+PiAgICAJdjRsMl9jdHJsX3NfY3RybChzZXNzLT5jdHJsX21pbl9idWZfY2FwdHVy ZSwgZHBiX3NpemUpOwo+Pj4+ICAgIAo+Pj4+ICsJc2Vzcy0+Yml0ZGVwdGggPSBiaXRkZXB0aDsK Pj4+PiArCj4+Pj4gICAgCS8qCj4+Pj4gICAgCSAqIENoZWNrIGlmIHRoZSBjYXB0dXJlIHF1ZXVl IGlzIGFscmVhZHkgY29uZmlndXJlZCB3ZWxsIGZvciBvdXIKPj4+PiAtCSAqIHVzZWNhc2UuIElm IHNvLCBrZWVwIGRlY29kaW5nIHdpdGggaXQgYW5kIGRvIG5vdCBzZW5kIHRoZSBldmVudAo+Pj4+ ICsJICogdXNlY2FzZS4gSWYgc28sIGtlZXAgZGVjb2Rpbmcgd2l0aCBpdC4KPj4+PiAgICAJICov Cj4+Pj4gICAgCWlmIChzZXNzLT5zdHJlYW1vbl9jYXAgJiYKPj4+PiAgICAJICAgIHNlc3MtPndp ZHRoID09IHdpZHRoICYmCj4+Pj4gICAgCSAgICBzZXNzLT5oZWlnaHQgPT0gaGVpZ2h0ICYmCj4+ Pj4gICAgCSAgICBkcGJfc2l6ZSA8PSBzZXNzLT5udW1fZHN0X2J1ZnMpIHsKPj4+PiAgICAJCXNl c3MtPmZtdF9vdXQtPmNvZGVjX29wcy0+cmVzdW1lKHNlc3MpOwo+Pj4+IC0JCXJldHVybjsKPj4+ PiArCX0gZWxzZSB7Cj4+Pj4gKwkJc2Vzcy0+c3RhdHVzID0gU1RBVFVTX05FRURTX1JFU1VNRTsK Pj4+PiArCQlzZXNzLT5jaGFuZ2VkX2Zvcm1hdCA9IDA7Cj4+Pj4gICAgCX0KPj4+PiAgICAKPj4+ PiAtCXNlc3MtPmNoYW5nZWRfZm9ybWF0ID0gMDsKPj4+PiAgICAJc2Vzcy0+d2lkdGggPSB3aWR0 aDsKPj4+PiAgICAJc2Vzcy0+aGVpZ2h0ID0gaGVpZ2h0Owo+Pj4+IC0Jc2Vzcy0+c3RhdHVzID0g U1RBVFVTX05FRURTX1JFU1VNRTsKPj4+PiAgICAKPj4+PiAtCWRldl9kYmcoc2Vzcy0+Y29yZS0+ ZGV2LCAiUmVzLiBjaGFuZ2VkICgldXgldSksIERQQiBzaXplICV1XG4iLAo+Pj4+IC0JCXdpZHRo LCBoZWlnaHQsIGRwYl9zaXplKTsKPj4+PiArCWRldl9kYmcoc2Vzcy0+Y29yZS0+ZGV2LCAiUmVz LiBjaGFuZ2VkICgldXgldSksIERQQiAldSwgYml0ZGVwdGggJXVcbiIsCj4+Pj4gKwkJd2lkdGgs IGhlaWdodCwgZHBiX3NpemUsIGJpdGRlcHRoKTsKPj4+PiAgICAJdjRsMl9ldmVudF9xdWV1ZV9m aCgmc2Vzcy0+ZmgsICZldik7Cj4+Pj4gICAgfQo+Pj4+ICAgIEVYUE9SVF9TWU1CT0xfR1BMKGFt dmRlY19zcmNfY2hhbmdlKTsKPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlh L21lc29uL3ZkZWMvdmRlY19oZWxwZXJzLmggYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24v dmRlYy92ZGVjX2hlbHBlcnMuaAo+Pj4+IGluZGV4IDRiZjNlNjFkMDgxYi4uMWE3MTE2NzlkMjZh IDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL3ZkZWNf aGVscGVycy5oCj4+Pj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvdmRl Y19oZWxwZXJzLmgKPj4+PiBAQCAtMjcsOSArMjcsMTAgQEAgdm9pZCBhbXZkZWNfY2xlYXJfZG9z X2JpdHMoc3RydWN0IGFtdmRlY19jb3JlICpjb3JlLCB1MzIgcmVnLCB1MzIgdmFsKTsKPj4+PiAg ICB1MzIgYW12ZGVjX3JlYWRfcGFyc2VyKHN0cnVjdCBhbXZkZWNfY29yZSAqY29yZSwgdTMyIHJl Zyk7Cj4+Pj4gICAgdm9pZCBhbXZkZWNfd3JpdGVfcGFyc2VyKHN0cnVjdCBhbXZkZWNfY29yZSAq Y29yZSwgdTMyIHJlZywgdTMyIHZhbCk7Cj4+Pj4gICAgCj4+Pj4gLXUzMiBhbXZkZWNfYW0yMWNf Ym9keV9zaXplKHUzMiB3aWR0aCwgdTMyIGhlaWdodCk7Cj4+Pj4gLXUzMiBhbXZkZWNfYW0yMWNf aGVhZF9zaXplKHUzMiB3aWR0aCwgdTMyIGhlaWdodCk7Cj4+Pj4gLXUzMiBhbXZkZWNfYW0yMWNf c2l6ZSh1MzIgd2lkdGgsIHUzMiBoZWlnaHQpOwo+Pj4+ICsvKiBIZWxwZXJzIGZvciB0aGUgQW1s b2dpYyBjb21wcmVzc2VkIGZyYW1lYnVmZmVyIGZvcm1hdCAqLwo+Pj4+ICt1MzIgYW12ZGVjX2Ft ZmJjX2JvZHlfc2l6ZSh1MzIgd2lkdGgsIHUzMiBoZWlnaHQsIHUzMiBpc18xMGJpdCwgdTMyIHVz ZV9tbXUpOwo+Pj4+ICt1MzIgYW12ZGVjX2FtZmJjX2hlYWRfc2l6ZSh1MzIgd2lkdGgsIHUzMiBo ZWlnaHQpOwo+Pj4+ICt1MzIgYW12ZGVjX2FtZmJjX3NpemUodTMyIHdpZHRoLCB1MzIgaGVpZ2h0 LCB1MzIgaXNfMTBiaXQsIHUzMiB1c2VfbW11KTsKPj4+PiAgICAKPj4+PiAgICAvKioKPj4+PiAg ICAgKiBhbXZkZWNfZHN0X2J1Zl9kb25lX2lkeCgpIC0gU2lnbmFsIHRoYXQgYSBidWZmZXIgaXMg ZG9uZSBkZWNvZGluZwo+Pj4+IEBAIC03Nyw5ICs3OCwxMCBAQCB2b2lkIGFtdmRlY19zZXRfcGFy X2Zyb21fZGFyKHN0cnVjdCBhbXZkZWNfc2Vzc2lvbiAqc2VzcywKPj4+PiAgICAgKiBAd2lkdGg6 IHBpY3R1cmUgd2lkdGggZGV0ZWN0ZWQgYnkgdGhlIGhhcmR3YXJlCj4+Pj4gICAgICogQGhlaWdo dDogcGljdHVyZSBoZWlnaHQgZGV0ZWN0ZWQgYnkgdGhlIGhhcmR3YXJlCj4+Pj4gICAgICogQGRw Yl9zaXplOiBEZWNvZGVkIFBpY3R1cmUgQnVmZmVyIHNpemUgKD0gYW1vdW50IG9mIGJ1ZmZlcnMg Zm9yIGRlY29kaW5nKQo+Pj4+ICsgKiBAYml0ZGVwdGg6IEJpdCBkZXB0aCAodXN1YWxseSAxMCBv ciA4KSBvZiB0aGUgY29kZWQgY29udGVudAo+Pj4+ICAgICAqLwo+Pj4+ICAgIHZvaWQgYW12ZGVj X3NyY19jaGFuZ2Uoc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzLCB1MzIgd2lkdGgsCj4+Pj4g LQkJICAgICAgIHUzMiBoZWlnaHQsIHUzMiBkcGJfc2l6ZSk7Cj4+Pj4gKwkJICAgICAgIHUzMiBo ZWlnaHQsIHUzMiBkcGJfc2l6ZSwgdTMyIGJpdGRlcHRoKTsKPj4+PiAgICAKPj4+PiAgICAvKioK Pj4+PiAgICAgKiBhbXZkZWNfYWJvcnQoKSAtIEFib3J0IHRoZSBjdXJyZW50IGRlY29kaW5nIHNl c3Npb24KPj4+Cj4+Cj4gCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KbGludXgtYW1sb2dpYyBtYWlsaW5nIGxpc3QKbGludXgtYW1sb2dpY0BsaXN0cy5p bmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v bGludXgtYW1sb2dpYwo=