From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 83605C4727C for ; Tue, 29 Sep 2020 16:32:10 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C6E1B2076D for ; Tue, 29 Sep 2020 16:32:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="LzqwTpEP"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=google.com header.i=@google.com header.b="qQ3tsncB" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C6E1B2076D Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=BR2qMGz4XtF6UcknrXKzH5CwcYDu+qTPy26p1VuT1xc=; b=LzqwTpEPBwnUB8HtTW6lKcwHQ aEOfQ/rufk3pK7UvOOeioSIyxSwwju9ccaqJeSDFsgZjoFuha1dwfueQclEdLAWQW9HLGTJBayLum /4KtZU3dW1kKnx09A0W2pX1fkBhLfEbSUQyEdiKhhVxgf7OjPoa8fuN8mTa2ElzPb7QsvXvoNuzUD l/pLRe8Zvqu7xqnESTpJeEUTag6aFN8K9fwaCfj8PlvVIVnAzmROPTG37ymbbnn+2UDF7uMdiR/pr m89B/G+wpdwQqdT51EWXuNXcTfgIJFil9BJeB3qX+2J6IIDlmlH1mBTIpm5kYlAhCIP5rNVdUnmNC CECmITt7A==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kNIWL-0002Nb-V4; Tue, 29 Sep 2020 16:30:29 +0000 Received: from mail-vs1-xe44.google.com ([2607:f8b0:4864:20::e44]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kNIWG-0002MI-U3 for linux-arm-kernel@lists.infradead.org; Tue, 29 Sep 2020 16:30:27 +0000 Received: by mail-vs1-xe44.google.com with SMTP id j3so3312604vsm.0 for ; Tue, 29 Sep 2020 09:30:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=zJ9ni16HIC5QEVIDfqhYrrCOcgAfqh0GPn+4EFgkK48=; b=qQ3tsncBXHSutOp9yQtMJDpTXbDBtB8ozXg45QGY/Z2AtbK6JihwhocdmsmL0dTWuw uyjLZ4hkkKOwneMuZRqsmoP6MzOv4qQqQ0Mu5K9hFb5ig9AxY54jaQ2bbnMnHUdYgRWW W5HnGojr7RLnVqfFET/jNfC/WBITk4hCnRcMLxn7MltLZjGMOGLeQe1Ga+4kZHfQQQJ0 IyJqsmuFri5yX5pjQD8c3lJs/woqiJlQnoMaNVBhjAsaK2WdBU/OqQ043nReae334ogQ 2qMQ87QSwyZu3oUdKBSQ76wN17LF+H99AQVFWAg4QjCA9RayClZPZLr0mxCLn1aSOeZ0 vPiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=zJ9ni16HIC5QEVIDfqhYrrCOcgAfqh0GPn+4EFgkK48=; b=Dlv7PDtQXvBFwtIfwH3MTiavw9EwAB+F2WUkCGO8uulE5UaQufklQqH+Expsdy8oPd UTzUYWEEliEOGULOWUYB47PV/lxQRS306nAN7APqclAV1McwDDzBnpq6OrZEr3+dA3wT QRhHV4oyQ9+9DKQ85PqJbJ0pQJ5kuCbPKIku8wgbn/edK1TBE+7mc1CTS78gDqDwc4mL /BCpAAh/hGJOA3cQwX810Cdtsf20/qJj+7LSreyo//zw2JJ40IS07jijfwnduzIDyPFd Tg8n6ukyBLaCDIoYSde19iAn/JlJN7+7wmaRWcURMeK2AOvtsQy/M98E+jYINx1frNbv 0Lhg== X-Gm-Message-State: AOAM533YM8HQVzqq9hkz2V/qcUyBWxEJ5b6qiEtusik/NjiNQ0JQ/LzF DzfAcy+uf89jOyMQXmmpFOTaPcF5IgfuaalaKtGKrg== X-Google-Smtp-Source: ABdhPJyie9M1qULf2MdGbwTIQ+sZUQcCd5bNdJsKs3jLUnRWzV6oLViooaNE+DE/UQeBUd6pIF1P6wDHYiD27YAZhzc= X-Received: by 2002:a67:d84:: with SMTP id 126mr3460695vsn.51.1601397020261; Tue, 29 Sep 2020 09:30:20 -0700 (PDT) MIME-Version: 1.0 References: <20200928200856.1897023-1-pcc@google.com> <0dc9f36b-417d-bfad-9eb7-858c3041ff0c@baylibre.com> <20200929093201.GL438822@phenom.ffwll.local> In-Reply-To: <20200929093201.GL438822@phenom.ffwll.local> From: Peter Collingbourne Date: Tue, 29 Sep 2020 09:30:08 -0700 Message-ID: Subject: Re: [PATCH] Revert "video: fbdev: amba-clcd: Retire elder CLCD driver" To: Daniel Vetter X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200929_123025_220856_A64C3F17 X-CRM114-Status: GOOD ( 43.77 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Neil Armstrong , Linus Walleij , Kevin Brodsky , Russell King , ML dri-devel , Eric Anholt , Sean Paul , Linux ARM 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 T24gVHVlLCBTZXAgMjksIDIwMjAgYXQgMjozMiBBTSBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3 bGwuY2g+IHdyb3RlOgo+Cj4gT24gVHVlLCBTZXAgMjksIDIwMjAgYXQgMDk6Mjg6NTZBTSArMDIw MCwgTmVpbCBBcm1zdHJvbmcgd3JvdGU6Cj4gPiBIaSwKPiA+Cj4gPiBPbiAyOC8wOS8yMDIwIDIy OjA4LCBQZXRlciBDb2xsaW5nYm91cm5lIHdyb3RlOgo+ID4gPiBBbHNvIHJldmVydCB0aGUgZm9s bG93LXVwIGNoYW5nZSAiZHJtOiBwbDExMTogQWJzb3JiIHRoZSBleHRlcm5hbAo+ID4gPiByZWdp c3RlciBoZWFkZXIiLgo+ID4gPgo+ID4gPiBUaGlzIHJldmVydHMgY29tbWl0cyA3ZTRlNTg5ZGI3 NmEzY2Y0YzFmNTM0ZWI1YTA5Y2M2NDIyNzY2YjkzCj4gPiA+IGFuZCAwZmI4MTI1NjM1ZThlYjU0 ODNmYjA5NWY5OGRjZjA2NTEyMDZhN2I4Lgo+ID4gPgo+ID4gPiBUaGUgZmJkZXYgZHJpdmVyIGlz IHVzZWQgYnkgQW5kcm9pZCdzIEZWUCBjb25maWd1cmF0aW9uLiBVc2luZyB0aGUKPiA+ID4gRFJN IGRyaXZlciB0b2dldGhlciB3aXRoIERSTSdzIGZiZGV2IGVtdWxhdGlvbiByZXN1bHRzIGluIGEg ZmFpbHVyZQo+ID4gPiB0byBib290IEFuZHJvaWQuIFRoZSByb290IGNhdXNlIGlzIHRoYXQgQW5k cm9pZCdzIGdlbmVyaWMgZmJkZXYKPiA+ID4gdXNlcnNwYWNlIGRyaXZlciByZWxpZXMgb24gdGhl IGFiaWxpdHkgdG8gc2V0IHRoZSBwaXhlbCBmb3JtYXQgdmlhCj4gPiA+IEZCSU9QVVRfVlNDUkVF TklORk8sIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgYnkgZmJkZXYgZW11bGF0aW9uLgo+ID4KPiA+ IENhbid0IEFuZHJvaWQgRlZQIHVzZSBkcm0taHdjb21wb3NlciBpbnN0ZWFkID8KCk5vdCB3aXRo b3V0IGtlcm5lbCBjaGFuZ2VzLiBTZWUgZS5nLgpodHRwczovL3d3dy5zcGluaWNzLm5ldC9saXN0 cy9kcmktZGV2ZWwvbXNnMjU1ODgzLmh0bWwKCj4gQWxzbywgaWYgd2UgbmVlZCB0byBhZGQgbW9y ZSByYW5kb20gZmJkZXYgaW9jdGxzIHRvIHRoZSBkcm0gZmJkZXYKPiBlbXVsYXRpb24sIHRoZW4g bGV0J3MgZG8gdGhhdC4gTm90IGtlZXAgZmJkZXYgZHJpdmVycyBvbiBsaWZlIHN1cHBvcnQgZm9y Cj4gbG9uZ2VyIHRoYW4gbmVjZXNzYXJ5LgoKVGhhdCBzaG91bGQgaGF2ZSBiZWVuIGRvbmUgKmJl Zm9yZSogcmVtb3ZpbmcgdGhlIG9sZCBkcml2ZXIsIHdoaWNoIHdhcwphIHVzZXJzcGFjZSBicmVh ayB0aGF0IHdhcyBpbnRyb2R1Y2VkIGluIDUuOXJjMS4gV2Ugc2hvdWxkbid0IGxlYXZlCnVzZXJz cGFjZSBicm9rZW4gZm9yIHRoZSBwZXJpb2Qgb2YgdGltZSB0aGF0IGl0IHdvdWxkIHRha2UgdG8g ZGV2ZWxvcAp0aGF0IGNoYW5nZS4gRXZlbiBpZiBzdWNoIGEgY2hhbmdlIHdlcmUgZGV2ZWxvcGVk IGJlZm9yZSA1LjkgaXMKcmVsZWFzZWQsIGl0IHByb2JhYmx5IHdvdWxkbid0IGJlIGNvbnNpZGVy ZWQgYSBidWcgZml4IHRoYXQgd291bGQgYmUKZWxpZ2libGUgZm9yIDUuOS4KCj4KPiA+Cj4gPiBO ZWlsCj4gPgo+ID4gPgo+ID4gPiBUaGVyZSBoYXZlIGJlZW4gb3RoZXIgbGVzcyBjcml0aWNhbCBi ZWhhdmlvcmFsIGRpZmZlcmVuY2VzIGlkZW50aWZpZWQKPiA+ID4gYmV0d2VlbiB0aGUgZmJkZXYg ZHJpdmVyIGFuZCB0aGUgRFJNIGRyaXZlciB3aXRoIGZiZGV2IGVtdWxhdGlvbi4gVGhlCj4gPiA+ IERSTSBkcml2ZXIgZXhwb3NlcyBkaWZmZXJlbnQgdmFsdWVzIGZvciB0aGUgcGFuZWwncyB3aWR0 aCwgaGVpZ2h0IGFuZAo+ID4gPiByZWZyZXNoIHJhdGUsIGFuZCB0aGUgRFJNIGRyaXZlciBmYWls cyBhIEZCSU9QVVRfVlNDUkVFTklORk8gc3lzY2FsbAo+ID4gPiB3aXRoIHlyZXNfdmlydHVhbCBn cmVhdGVyIHRoYW4gdGhlIG1heGltdW0gc3VwcG9ydGVkIHZhbHVlIGluc3RlYWQKPiA+ID4gb2Yg bGV0dGluZyB0aGUgc3lzY2FsbCBzdWNjZWVkIGFuZCBzZXR0aW5nIHlyZXNfdmlydHVhbCBiYXNl ZCBvbiB5cmVzLgo+Cj4gQWxzbyBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUgZml4ZWQgSSB0aGlu ayBpbiB1cHN0cmVhbSwgaW4gdGhlIGRybSBmYmRldgo+IGVtdWxhdGlvbi4gQXQgbGVhc3QgZG9l c24ndCBzb3VuZCBsaWtlIGl0J3Mgc29tZXRoaW5nIHVuZml4YWJsZS4KCkFnYWluLCBpdCBzaG91 bGQgaGF2ZSBiZWVuIGZpeGVkIGJlZm9yZSByZW1vdmluZyB0aGUgb2xkIGRyaXZlci4KClBldGVy Cgo+IC1EYW5pZWwKPgo+ID4gPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBQZXRlciBDb2xsaW5nYm91 cm5lIDxwY2NAZ29vZ2xlLmNvbT4KPiA+ID4gLS0tCj4gPiA+IFZpZXcgdGhpcyBjaGFuZ2UgaW4g R2Vycml0OiBodHRwczovL2xpbnV4LXJldmlldy5nb29nbGVzb3VyY2UuY29tL3EvSTJkN2U1OWIw ZTY5M2Q5ZmVjMjA2ZDQwZGYxOTBjNWFhMDI4NDRiNTYKPiA+ID4KPiA+ID4gIE1BSU5UQUlORVJT ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArCj4gPiA+ICBkcml2ZXJzL2dwdS9k cm0vcGwxMTEvcGwxMTFfZGVidWdmcy5jICAgfCAgIDEgKwo+ID4gPiAgZHJpdmVycy9ncHUvZHJt L3BsMTExL3BsMTExX2Rpc3BsYXkuYyAgIHwgICAxICsKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9w bDExMS9wbDExMV9kcm0uaCAgICAgICB8ICA3MyAtLQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL3Bs MTExL3BsMTExX2Rydi5jICAgICAgIHwgICAxICsKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9wbDEx MS9wbDExMV92ZXJzYXRpbGUuYyB8ICAgMSArCj4gPiA+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L0tj b25maWcgICAgICAgICAgICAgfCAgMjAgKwo+ID4gPiAgZHJpdmVycy92aWRlby9mYmRldi9NYWtl ZmlsZSAgICAgICAgICAgIHwgICAxICsKPiA+ID4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvYW1iYS1j bGNkLmMgICAgICAgICB8IDk4NiArKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gIGluY2x1 ZGUvbGludXgvYW1iYS9jbGNkLXJlZ3MuaCAgICAgICAgICB8ICA4NyArKysKPiA+ID4gIGluY2x1 ZGUvbGludXgvYW1iYS9jbGNkLmggICAgICAgICAgICAgICB8IDI5MCArKysrKysrCj4gPiA+ICAx MSBmaWxlcyBjaGFuZ2VkLCAxMzkzIGluc2VydGlvbnMoKyksIDczIGRlbGV0aW9ucygtKQo+ID4g PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlkZW8vZmJkZXYvYW1iYS1jbGNkLmMKPiA+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L2FtYmEvY2xjZC1yZWdzLmgKPiA+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L2FtYmEvY2xjZC5oCj4gPiA+Cj4g PiA+IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCj4gPiA+IGluZGV4IDE5 MGM3ZmEyZWEwMS4uNjcxYzFmYTc5ZTY0IDEwMDY0NAo+ID4gPiAtLS0gYS9NQUlOVEFJTkVSUwo+ ID4gPiArKysgYi9NQUlOVEFJTkVSUwo+ID4gPiBAQCAtMTQ2MCw2ICsxNDYwLDExIEBAIFM6ICAg T2RkIEZpeGVzCj4gPiA+ICBGOiBkcml2ZXJzL2FtYmEvCj4gPiA+ICBGOiBpbmNsdWRlL2xpbnV4 L2FtYmEvYnVzLmgKPiA+ID4KPiA+ID4gK0FSTSBQUklNRUNFTEwgQ0xDRCBQTDExMCBEUklWRVIK PiA+ID4gK006IFJ1c3NlbGwgS2luZyA8bGludXhAYXJtbGludXgub3JnLnVrPgo+ID4gPiArUzog T2RkIEZpeGVzCj4gPiA+ICtGOiBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2FtYmEtY2xjZC4qCj4gPiA+ ICsKPiA+ID4gIEFSTSBQUklNRUNFTEwgS01JIFBMMDUwIERSSVZFUgo+ID4gPiAgTTogUnVzc2Vs bCBLaW5nIDxsaW51eEBhcm1saW51eC5vcmcudWs+Cj4gPiA+ICBTOiBPZGQgRml4ZXMKPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV9kZWJ1Z2ZzLmMgYi9kcml2 ZXJzL2dwdS9kcm0vcGwxMTEvcGwxMTFfZGVidWdmcy5jCj4gPiA+IGluZGV4IDMxN2Y2OGFiZjE4 Yi4uMjZjYThjZGYzZTYwIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGwxMTEv cGwxMTFfZGVidWdmcy5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV9k ZWJ1Z2ZzLmMKPiA+ID4gQEAgLTMsNiArMyw3IEBACj4gPiA+ICAgKiAgQ29weXJpZ2h0IMKpIDIw MTcgQnJvYWRjb20KPiA+ID4gICAqLwo+ID4gPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2FtYmEv Y2xjZC1yZWdzLmg+Cj4gPiA+ICAjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4KPiA+ID4KPiA+ ID4gICNpbmNsdWRlIDxkcm0vZHJtX2RlYnVnZnMuaD4KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9wbDExMS9wbDExMV9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vcGwxMTEv cGwxMTFfZGlzcGxheS5jCj4gPiA+IGluZGV4IGIzZTg2OTdjYWZjZi4uNzAzZGRjODAzYzU1IDEw MDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGwxMTEvcGwxMTFfZGlzcGxheS5jCj4g PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV9kaXNwbGF5LmMKPiA+ID4gQEAg LTksNiArOSw3IEBACj4gPiA+ICAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVGV4YXMgSW5zdHJ1bWVu dHMKPiA+ID4gICAqLwo+ID4gPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2FtYmEvY2xjZC1yZWdz Lmg+Cj4gPiA+ICAjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gPiA+ICAjaW5jbHVkZSA8bGludXgv ZGVsYXkuaD4KPiA+ID4gICNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+Cj4gPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vcGwxMTEvcGwxMTFfZHJtLmggYi9kcml2ZXJzL2dwdS9kcm0v cGwxMTEvcGwxMTFfZHJtLmgKPiA+ID4gaW5kZXggMmE0NmI1YmQ4NTc2Li5iYTM5OWJjYjc5MmYg MTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV9kcm0uaAo+ID4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGwxMTEvcGwxMTFfZHJtLmgKPiA+ID4gQEAgLTIzLDc5 ICsyMyw2IEBACj4gPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgo+ID4gPiAgI2luY2x1 ZGUgPGRybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuaD4KPiA+ID4KPiA+ID4gLS8qCj4gPiA+IC0g KiBDTENEIENvbnRyb2xsZXIgSW50ZXJuYWwgUmVnaXN0ZXIgYWRkcmVzc2VzCj4gPiA+IC0gKi8K PiA+ID4gLSNkZWZpbmUgQ0xDRF9USU0wICAgICAgICAgIDB4MDAwMDAwMDAKPiA+ID4gLSNkZWZp bmUgQ0xDRF9USU0xICAgICAgICAgIDB4MDAwMDAwMDQKPiA+ID4gLSNkZWZpbmUgQ0xDRF9USU0y ICAgICAgICAgIDB4MDAwMDAwMDgKPiA+ID4gLSNkZWZpbmUgQ0xDRF9USU0zICAgICAgICAgIDB4 MDAwMDAwMGMKPiA+ID4gLSNkZWZpbmUgQ0xDRF9VQkFTICAgICAgICAgIDB4MDAwMDAwMTAKPiA+ ID4gLSNkZWZpbmUgQ0xDRF9MQkFTICAgICAgICAgIDB4MDAwMDAwMTQKPiA+ID4gLQo+ID4gPiAt I2RlZmluZSBDTENEX1BMMTEwX0lFTkIgICAgICAgICAgICAweDAwMDAwMDE4Cj4gPiA+IC0jZGVm aW5lIENMQ0RfUEwxMTBfQ05UTCAgICAgICAgICAgIDB4MDAwMDAwMWMKPiA+ID4gLSNkZWZpbmUg Q0xDRF9QTDExMF9TVEFUICAgICAgICAgICAgMHgwMDAwMDAyMAo+ID4gPiAtI2RlZmluZSBDTENE X1BMMTEwX0lOVFIgICAgICAgICAgICAweDAwMDAwMDI0Cj4gPiA+IC0jZGVmaW5lIENMQ0RfUEwx MTBfVUNVUiAgICAgICAgICAgIDB4MDAwMDAwMjgKPiA+ID4gLSNkZWZpbmUgQ0xDRF9QTDExMF9M Q1VSICAgICAgICAgICAgMHgwMDAwMDAyQwo+ID4gPiAtCj4gPiA+IC0jZGVmaW5lIENMQ0RfUEwx MTFfQ05UTCAgICAgICAgICAgIDB4MDAwMDAwMTgKPiA+ID4gLSNkZWZpbmUgQ0xDRF9QTDExMV9J RU5CICAgICAgICAgICAgMHgwMDAwMDAxYwo+ID4gPiAtI2RlZmluZSBDTENEX1BMMTExX1JJUyAg ICAgICAgICAgICAweDAwMDAwMDIwCj4gPiA+IC0jZGVmaW5lIENMQ0RfUEwxMTFfTUlTICAgICAg ICAgICAgIDB4MDAwMDAwMjQKPiA+ID4gLSNkZWZpbmUgQ0xDRF9QTDExMV9JQ1IgICAgICAgICAg ICAgMHgwMDAwMDAyOAo+ID4gPiAtI2RlZmluZSBDTENEX1BMMTExX1VDVVIgICAgICAgICAgICAw eDAwMDAwMDJjCj4gPiA+IC0jZGVmaW5lIENMQ0RfUEwxMTFfTENVUiAgICAgICAgICAgIDB4MDAw MDAwMzAKPiA+ID4gLQo+ID4gPiAtI2RlZmluZSBDTENEX1BBTEwgICAgICAgICAgMHgwMDAwMDIw MAo+ID4gPiAtI2RlZmluZSBDTENEX1BBTEVUVEUgICAgICAgICAgICAgICAweDAwMDAwMjAwCj4g PiA+IC0KPiA+ID4gLSNkZWZpbmUgVElNMl9QQ0RfTE9fTUFTSyAgIEdFTk1BU0soNCwgMCkKPiA+ ID4gLSNkZWZpbmUgVElNMl9QQ0RfTE9fQklUUyAgIDUKPiA+ID4gLSNkZWZpbmUgVElNMl9DTEtT RUwgICAgICAgICAgICAgICAgKDEgPDwgNSkKPiA+ID4gLSNkZWZpbmUgVElNMl9BQ0JfTUFTSyAg ICAgICAgICAgICAgR0VOTUFTSygxMCwgNikKPiA+ID4gLSNkZWZpbmUgVElNMl9JVlMgICAgICAg ICAgICgxIDw8IDExKQo+ID4gPiAtI2RlZmluZSBUSU0yX0lIUyAgICAgICAgICAgKDEgPDwgMTIp Cj4gPiA+IC0jZGVmaW5lIFRJTTJfSVBDICAgICAgICAgICAoMSA8PCAxMykKPiA+ID4gLSNkZWZp bmUgVElNMl9JT0UgICAgICAgICAgICgxIDw8IDE0KQo+ID4gPiAtI2RlZmluZSBUSU0yX0JDRCAg ICAgICAgICAgKDEgPDwgMjYpCj4gPiA+IC0jZGVmaW5lIFRJTTJfUENEX0hJX01BU0sgICBHRU5N QVNLKDMxLCAyNykKPiA+ID4gLSNkZWZpbmUgVElNMl9QQ0RfSElfQklUUyAgIDUKPiA+ID4gLSNk ZWZpbmUgVElNMl9QQ0RfSElfU0hJRlQgIDI3Cj4gPiA+IC0KPiA+ID4gLSNkZWZpbmUgQ05UTF9M Q0RFTiAgICAgICAgICgxIDw8IDApCj4gPiA+IC0jZGVmaW5lIENOVExfTENEQlBQMSAgICAgICAg ICAgICAgICgwIDw8IDEpCj4gPiA+IC0jZGVmaW5lIENOVExfTENEQlBQMiAgICAgICAgICAgICAg ICgxIDw8IDEpCj4gPiA+IC0jZGVmaW5lIENOVExfTENEQlBQNCAgICAgICAgICAgICAgICgyIDw8 IDEpCj4gPiA+IC0jZGVmaW5lIENOVExfTENEQlBQOCAgICAgICAgICAgICAgICgzIDw8IDEpCj4g PiA+IC0jZGVmaW5lIENOVExfTENEQlBQMTYgICAgICAgICAgICAgICg0IDw8IDEpCj4gPiA+IC0j ZGVmaW5lIENOVExfTENEQlBQMTZfNTY1ICAoNiA8PCAxKQo+ID4gPiAtI2RlZmluZSBDTlRMX0xD REJQUDE2XzQ0NCAgKDcgPDwgMSkKPiA+ID4gLSNkZWZpbmUgQ05UTF9MQ0RCUFAyNCAgICAgICAg ICAgICAgKDUgPDwgMSkKPiA+ID4gLSNkZWZpbmUgQ05UTF9MQ0RCVyAgICAgICAgICgxIDw8IDQp Cj4gPiA+IC0jZGVmaW5lIENOVExfTENEVEZUICAgICAgICAgICAgICAgICgxIDw8IDUpCj4gPiA+ IC0jZGVmaW5lIENOVExfTENETU9OTzggICAgICAgICAgICAgICgxIDw8IDYpCj4gPiA+IC0jZGVm aW5lIENOVExfTENERFVBTCAgICAgICAgICAgICAgICgxIDw8IDcpCj4gPiA+IC0jZGVmaW5lIENO VExfQkdSICAgICAgICAgICAoMSA8PCA4KQo+ID4gPiAtI2RlZmluZSBDTlRMX0JFQk8gICAgICAg ICAgKDEgPDwgOSkKPiA+ID4gLSNkZWZpbmUgQ05UTF9CRVBPICAgICAgICAgICgxIDw8IDEwKQo+ ID4gPiAtI2RlZmluZSBDTlRMX0xDRFBXUiAgICAgICAgICAgICAgICAoMSA8PCAxMSkKPiA+ID4g LSNkZWZpbmUgQ05UTF9MQ0RWQ09NUCh4KSAgICgoeCkgPDwgMTIpCj4gPiA+IC0jZGVmaW5lIENO VExfTERNQUZJRk9USU1FICAoMSA8PCAxNSkKPiA+ID4gLSNkZWZpbmUgQ05UTF9XQVRFUk1BUksg ICAgICAgICAgICAgKDEgPDwgMTYpCj4gPiA+IC0KPiA+ID4gLS8qIFNUIE1pY3JvZWxlY3Ryb25p Y3MgdmFyaWFudCBiaXRzICovCj4gPiA+IC0jZGVmaW5lIENOVExfU1RfMVhCUFBfNDQ0ICAweDAK PiA+ID4gLSNkZWZpbmUgQ05UTF9TVF8xWEJQUF81NTUxICgxIDw8IDE3KQo+ID4gPiAtI2RlZmlu ZSBDTlRMX1NUXzFYQlBQXzU2NSAgKDEgPDwgMTgpCj4gPiA+IC0jZGVmaW5lIENOVExfU1RfQ0RX SURfMTIgICAweDAKPiA+ID4gLSNkZWZpbmUgQ05UTF9TVF9DRFdJRF8xNiAgICgxIDw8IDE5KQo+ ID4gPiAtI2RlZmluZSBDTlRMX1NUX0NEV0lEXzE4ICAgKDEgPDwgMjApCj4gPiA+IC0jZGVmaW5l IENOVExfU1RfQ0RXSURfMjQgICAoKDEgPDwgMTkpIHwgKDEgPDwgMjApKQo+ID4gPiAtI2RlZmlu ZSBDTlRMX1NUX0NFQUVOICAgICAgICAgICAgICAoMSA8PCAyMSkKPiA+ID4gLSNkZWZpbmUgQ05U TF9TVF9MQ0RCUFAyNF9QQUNLRUQgICAgKDYgPDwgMSkKPiA+ID4gLQo+ID4gPiAgI2RlZmluZSBD TENEX0lSUV9ORVhUQkFTRV9VUERBVEUgQklUKDIpCj4gPiA+Cj4gPiA+ICBzdHJ1Y3QgZHJtX21p bm9yOwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX2Rydi5j IGIvZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX2Rydi5jCj4gPiA+IGluZGV4IDk2ZTU4ZmRh NzVkOC4uZGEwYzM5ZGFlODc0IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGwx MTEvcGwxMTFfZHJ2LmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX2Ry di5jCj4gPiA+IEBAIC00Nyw2ICs0Nyw3IEBACj4gPiA+ICAgKi8KPiA+ID4KPiA+ID4gICNpbmNs dWRlIDxsaW51eC9hbWJhL2J1cy5oPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2FtYmEvY2xjZC1y ZWdzLmg+Cj4gPiA+ICAjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgo+ID4gPiAgI2luY2x1ZGUg PGxpbnV4L21vZHVsZS5oPgo+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4gPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGwxMTEvcGwxMTFfdmVyc2F0aWxlLmMgYi9kcml2ZXJz L2dwdS9kcm0vcGwxMTEvcGwxMTFfdmVyc2F0aWxlLmMKPiA+ID4gaW5kZXggYmRkODgzZjRmMGRh Li4xMTI3MDgyZTlhNjAgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wbDExMS9w bDExMV92ZXJzYXRpbGUuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGwxMTEvcGwxMTFf dmVyc2F0aWxlLmMKPiA+ID4gQEAgLTksNiArOSw3IEBACj4gPiA+ICAgKiBNYWpvciBjb250cmli dXRpb25zIGFuZCBkaXNjb3ZlcmllcyBieSBSdXNzZWxsIEtpbmcuCj4gPiA+ICAgKi8KPiA+ID4K PiA+ID4gKyNpbmNsdWRlIDxsaW51eC9hbWJhL2NsY2QtcmVncy5oPgo+ID4gPiAgI2luY2x1ZGUg PGxpbnV4L2JpdG9wcy5oPgo+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgo+ID4gPiAg I2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv dmlkZW8vZmJkZXYvS2NvbmZpZyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZwo+ID4gPiBp bmRleCBiMmM5ZGQ0ZjBjYjUuLjQwMmU4NTQ1MGJiNSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVy cy92aWRlby9mYmRldi9LY29uZmlnCj4gPiA+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvS2Nv bmZpZwo+ID4gPiBAQCAtMjcyLDYgKzI3MiwyNiBAQCBjb25maWcgRkJfUE0yX0ZJRk9fRElTQ09O TkVDVAo+ID4gPiAgICAgaGVscAo+ID4gPiAgICAgICBTdXBwb3J0IHRoZSBQZXJtZWRpYTIgRklG TyBkaXNjb25uZWN0IGZlYXR1cmUuCj4gPiA+Cj4gPiA+ICtjb25maWcgRkJfQVJNQ0xDRAo+ID4g PiArICAgdHJpc3RhdGUgIkFSTSBQcmltZUNlbGwgUEwxMTAgc3VwcG9ydCIKPiA+ID4gKyAgIGRl cGVuZHMgb24gQVJNIHx8IEFSTTY0IHx8IENPTVBJTEVfVEVTVAo+ID4gPiArICAgZGVwZW5kcyBv biBGQiAmJiBBUk1fQU1CQSAmJiBIQVNfSU9NRU0KPiA+ID4gKyAgIHNlbGVjdCBGQl9DRkJfRklM TFJFQ1QKPiA+ID4gKyAgIHNlbGVjdCBGQl9DRkJfQ09QWUFSRUEKPiA+ID4gKyAgIHNlbGVjdCBG Ql9DRkJfSU1BR0VCTElUCj4gPiA+ICsgICBzZWxlY3QgRkJfTU9ERV9IRUxQRVJTIGlmIE9GCj4g PiA+ICsgICBzZWxlY3QgVklERU9NT0RFX0hFTFBFUlMgaWYgT0YKPiA+ID4gKyAgIHNlbGVjdCBC QUNLTElHSFRfQ0xBU1NfREVWSUNFIGlmIE9GCj4gPiA+ICsgICBoZWxwCj4gPiA+ICsgICAgIFRo aXMgZnJhbWVidWZmZXIgZGV2aWNlIGRyaXZlciBpcyBmb3IgdGhlIEFSTSBQcmltZUNlbGwgUEwx MTAKPiA+ID4gKyAgICAgQ29sb3VyIExDRCBjb250cm9sbGVyLiAgQVJNIFByaW1lQ2VsbHMgcHJv dmlkZSB0aGUgYnVpbGRpbmcKPiA+ID4gKyAgICAgYmxvY2tzIGZvciBTeXN0ZW0gb24gYSBDaGlw IGRldmljZXMuCj4gPiA+ICsKPiA+ID4gKyAgICAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSB0aGlz IGFzIGEgbW9kdWxlICg9Y29kZSB3aGljaCBjYW4gYmUKPiA+ID4gKyAgICAgaW5zZXJ0ZWQgaW50 byBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBydW5uaW5nIGtlcm5lbCksIHNheSBNCj4gPiA+ICsgICAg IGhlcmUgYW5kIHJlYWQgPGZpbGU6RG9jdW1lbnRhdGlvbi9rYnVpbGQvbW9kdWxlcy5yc3Q+LiAg VGhlIG1vZHVsZQo+ID4gPiArICAgICB3aWxsIGJlIGNhbGxlZCBhbWJhLWNsY2QuCj4gPiA+ICsK PiA+ID4gIGNvbmZpZyBGQl9BQ09STgo+ID4gPiAgICAgYm9vbCAiQWNvcm4gVklEQyBzdXBwb3J0 Igo+ID4gPiAgICAgZGVwZW5kcyBvbiAoRkIgPSB5KSAmJiBBUk0gJiYgQVJDSF9BQ09STgo+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9NYWtlZmlsZSBiL2RyaXZlcnMvdmlk ZW8vZmJkZXYvTWFrZWZpbGUKPiA+ID4gaW5kZXggY2FkNGZiNjQ0NDJhLi5hMDcwNWI5OWU2NDMg MTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvTWFrZWZpbGUKPiA+ID4gKysr IGIvZHJpdmVycy92aWRlby9mYmRldi9NYWtlZmlsZQo+ID4gPiBAQCAtNzUsNiArNzUsNyBAQCBv YmotJChDT05GSUdfRkJfSElUKSAgICAgICAgICAgICAgKz0gaGl0ZmIubwo+ID4gPiAgb2JqLSQo Q09ORklHX0ZCX0FUTUVMKSAgICAgICAgICAgICAgICs9IGF0bWVsX2xjZGZiLm8KPiA+ID4gIG9i ai0kKENPTkZJR19GQl9QVlIyKSAgICAgICAgICAgICArPSBwdnIyZmIubwo+ID4gPiAgb2JqLSQo Q09ORklHX0ZCX1ZPT0RPTzEpICAgICAgICAgICs9IHNzdGZiLm8KPiA+ID4gK29iai0kKENPTkZJ R19GQl9BUk1DTENEKSAgICAgKz0gYW1iYS1jbGNkLm8KPiA+ID4gIG9iai0kKENPTkZJR19GQl9H T0xERklTSCkgICAgICAgICArPSBnb2xkZmlzaGZiLm8KPiA+ID4gIG9iai0kKENPTkZJR19GQl82 ODMyOCkgICAgICAgICAgICArPSA2ODMyOGZiLm8KPiA+ID4gIG9iai0kKENPTkZJR19GQl9HQkUp ICAgICAgICAgICAgICArPSBnYmVmYi5vCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVv L2ZiZGV2L2FtYmEtY2xjZC5jIGIvZHJpdmVycy92aWRlby9mYmRldi9hbWJhLWNsY2QuYwo+ID4g PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmI3NjgyZGU0 MTJkOAo+ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv YW1iYS1jbGNkLmMKPiA+ID4gQEAgLTAsMCArMSw5ODYgQEAKPiA+ID4gKy8qCj4gPiA+ICsgKiAg bGludXgvZHJpdmVycy92aWRlby9hbWJhLWNsY2QuYwo+ID4gPiArICoKPiA+ID4gKyAqIENvcHly aWdodCAoQykgMjAwMSBBUk0gTGltaXRlZCwgYnkgRGF2aWQgQSBSdXNsaW5nCj4gPiA+ICsgKiBV cGRhdGVkIHRvIDIuNSwgRGVlcCBCbHVlIFNvbHV0aW9ucyBMdGQuCj4gPiA+ICsgKgo+ID4gPiAr ICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMKPiA+ID4gKyAqIExpY2Vuc2UuICBTZWUgdGhlIGZpbGUgQ09Q WUlORyBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlCj4gPiA+ICsgKiBmb3Ig bW9yZSBkZXRhaWxzLgo+ID4gPiArICoKPiA+ID4gKyAqICBBUk0gUHJpbWVDZWxsIFBMMTEwIENv bG9yIExDRCBDb250cm9sbGVyCj4gPiA+ICsgKi8KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9hbWJh L2J1cy5oPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2FtYmEvY2xjZC5oPgo+ID4gPiArI2luY2x1 ZGUgPGxpbnV4L2JhY2tsaWdodC5oPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ID4g PiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4gPiA+ICsjaW5jbHVkZSA8bGludXgvZG1hLW1h cHBpbmcuaD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9mYi5oPgo+ID4gPiArI2luY2x1ZGUgPGxp bnV4L2luaXQuaD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KPiA+ID4gKyNpbmNs dWRlIDxsaW51eC9saXN0Lmg+Cj4gPiA+ICsjaW5jbHVkZSA8bGludXgvbW0uaD4KPiA+ID4gKyNp bmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNz Lmg+Cj4gPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4KPiA+ID4gKyNpbmNsdWRlIDxs aW51eC9zbGFiLmg+Cj4gPiA+ICsjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+Cj4gPiA+ICsjaW5j bHVkZSA8dmlkZW8vZGlzcGxheV90aW1pbmcuaD4KPiA+ID4gKyNpbmNsdWRlIDx2aWRlby9vZl9k aXNwbGF5X3RpbWluZy5oPgo+ID4gPiArI2luY2x1ZGUgPHZpZGVvL3ZpZGVvbW9kZS5oPgo+ID4g PiArCj4gPiA+ICsjZGVmaW5lIHRvX2NsY2QoaW5mbykgICAgICBjb250YWluZXJfb2YoaW5mbywg c3RydWN0IGNsY2RfZmIsIGZiKQo+ID4gPiArCj4gPiA+ICsvKiBUaGlzIGlzIGxpbWl0ZWQgdG8g MTYgY2hhcmFjdGVycyB3aGVuIGRpc3BsYXllZCBieSBYIHN0YXJ0dXAgKi8KPiA+ID4gK3N0YXRp YyBjb25zdCBjaGFyICpjbGNkX25hbWUgPSAiQ0xDRCBGQiI7Cj4gPiA+ICsKPiA+ID4gKy8qCj4g PiA+ICsgKiBVbmZvcnR1bmF0ZWx5LCB0aGUgZW5hYmxlL2Rpc2FibGUgZnVuY3Rpb25zIG1heSBi ZSBjYWxsZWQgZWl0aGVyIGZyb20KPiA+ID4gKyAqIHByb2Nlc3Mgb3IgSVJRIGNvbnRleHQsIGFu ZCB3ZSBfbmVlZF8gdG8gZGVsYXkuICBUaGlzIGlzIF9ub3RfIGdvb2QuCj4gPiA+ICsgKi8KPiA+ ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCBjbGNkZmJfc2xlZXAodW5zaWduZWQgaW50IG1zKQo+ID4g PiArewo+ID4gPiArICAgaWYgKGluX2F0b21pYygpKSB7Cj4gPiA+ICsgICAgICAgICAgIG1kZWxh eShtcyk7Cj4gPiA+ICsgICB9IGVsc2Ugewo+ID4gPiArICAgICAgICAgICBtc2xlZXAobXMpOwo+ ID4gPiArICAgfQo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgY2xj ZGZiX3NldF9zdGFydChzdHJ1Y3QgY2xjZF9mYiAqZmIpCj4gPiA+ICt7Cj4gPiA+ICsgICB1bnNp Z25lZCBsb25nIHVzdGFydCA9IGZiLT5mYi5maXguc21lbV9zdGFydDsKPiA+ID4gKyAgIHVuc2ln bmVkIGxvbmcgbHN0YXJ0Owo+ID4gPiArCj4gPiA+ICsgICB1c3RhcnQgKz0gZmItPmZiLnZhci55 b2Zmc2V0ICogZmItPmZiLmZpeC5saW5lX2xlbmd0aDsKPiA+ID4gKyAgIGxzdGFydCA9IHVzdGFy dCArIGZiLT5mYi52YXIueXJlcyAqIGZiLT5mYi5maXgubGluZV9sZW5ndGggLyAyOwo+ID4gPiAr Cj4gPiA+ICsgICB3cml0ZWwodXN0YXJ0LCBmYi0+cmVncyArIENMQ0RfVUJBUyk7Cj4gPiA+ICsg ICB3cml0ZWwobHN0YXJ0LCBmYi0+cmVncyArIENMQ0RfTEJBUyk7Cj4gPiA+ICt9Cj4gPiA+ICsK PiA+ID4gK3N0YXRpYyB2b2lkIGNsY2RmYl9kaXNhYmxlKHN0cnVjdCBjbGNkX2ZiICpmYikKPiA+ ID4gK3sKPiA+ID4gKyAgIHUzMiB2YWw7Cj4gPiA+ICsKPiA+ID4gKyAgIGlmIChmYi0+Ym9hcmQt PmRpc2FibGUpCj4gPiA+ICsgICAgICAgICAgIGZiLT5ib2FyZC0+ZGlzYWJsZShmYik7Cj4gPiA+ ICsKPiA+ID4gKyAgIGlmIChmYi0+cGFuZWwtPmJhY2tsaWdodCkgewo+ID4gPiArICAgICAgICAg ICBmYi0+cGFuZWwtPmJhY2tsaWdodC0+cHJvcHMucG93ZXIgPSBGQl9CTEFOS19QT1dFUkRPV047 Cj4gPiA+ICsgICAgICAgICAgIGJhY2tsaWdodF91cGRhdGVfc3RhdHVzKGZiLT5wYW5lbC0+YmFj a2xpZ2h0KTsKPiA+ID4gKyAgIH0KPiA+ID4gKwo+ID4gPiArICAgdmFsID0gcmVhZGwoZmItPnJl Z3MgKyBmYi0+b2ZmX2NudGwpOwo+ID4gPiArICAgaWYgKHZhbCAmIENOVExfTENEUFdSKSB7Cj4g PiA+ICsgICAgICAgICAgIHZhbCAmPSB+Q05UTF9MQ0RQV1I7Cj4gPiA+ICsgICAgICAgICAgIHdy aXRlbCh2YWwsIGZiLT5yZWdzICsgZmItPm9mZl9jbnRsKTsKPiA+ID4gKwo+ID4gPiArICAgICAg ICAgICBjbGNkZmJfc2xlZXAoMjApOwo+ID4gPiArICAgfQo+ID4gPiArICAgaWYgKHZhbCAmIENO VExfTENERU4pIHsKPiA+ID4gKyAgICAgICAgICAgdmFsICY9IH5DTlRMX0xDREVOOwo+ID4gPiAr ICAgICAgICAgICB3cml0ZWwodmFsLCBmYi0+cmVncyArIGZiLT5vZmZfY250bCk7Cj4gPiA+ICsg ICB9Cj4gPiA+ICsKPiA+ID4gKyAgIC8qCj4gPiA+ICsgICAgKiBEaXNhYmxlIENMQ0QgY2xvY2sg c291cmNlLgo+ID4gPiArICAgICovCj4gPiA+ICsgICBpZiAoZmItPmNsa19lbmFibGVkKSB7Cj4g PiA+ICsgICAgICAgICAgIGZiLT5jbGtfZW5hYmxlZCA9IGZhbHNlOwo+ID4gPiArICAgICAgICAg ICBjbGtfZGlzYWJsZShmYi0+Y2xrKTsKPiA+ID4gKyAgIH0KPiA+ID4gK30KPiA+ID4gKwo+ID4g PiArc3RhdGljIHZvaWQgY2xjZGZiX2VuYWJsZShzdHJ1Y3QgY2xjZF9mYiAqZmIsIHUzMiBjbnRs KQo+ID4gPiArewo+ID4gPiArICAgLyoKPiA+ID4gKyAgICAqIEVuYWJsZSB0aGUgQ0xDRCBjbG9j ayBzb3VyY2UuCj4gPiA+ICsgICAgKi8KPiA+ID4gKyAgIGlmICghZmItPmNsa19lbmFibGVkKSB7 Cj4gPiA+ICsgICAgICAgICAgIGZiLT5jbGtfZW5hYmxlZCA9IHRydWU7Cj4gPiA+ICsgICAgICAg ICAgIGNsa19lbmFibGUoZmItPmNsayk7Cj4gPiA+ICsgICB9Cj4gPiA+ICsKPiA+ID4gKyAgIC8q Cj4gPiA+ICsgICAgKiBCcmluZyB1cCBieSBmaXJzdCBlbmFibGluZy4uCj4gPiA+ICsgICAgKi8K PiA+ID4gKyAgIGNudGwgfD0gQ05UTF9MQ0RFTjsKPiA+ID4gKyAgIHdyaXRlbChjbnRsLCBmYi0+ cmVncyArIGZiLT5vZmZfY250bCk7Cj4gPiA+ICsKPiA+ID4gKyAgIGNsY2RmYl9zbGVlcCgyMCk7 Cj4gPiA+ICsKPiA+ID4gKyAgIC8qCj4gPiA+ICsgICAgKiBhbmQgbm93IGFwcGx5IHBvd2VyLgo+ ID4gPiArICAgICovCj4gPiA+ICsgICBjbnRsIHw9IENOVExfTENEUFdSOwo+ID4gPiArICAgd3Jp dGVsKGNudGwsIGZiLT5yZWdzICsgZmItPm9mZl9jbnRsKTsKPiA+ID4gKwo+ID4gPiArICAgLyoK PiA+ID4gKyAgICAqIFR1cm4gb24gYmFja2xpZ2h0Cj4gPiA+ICsgICAgKi8KPiA+ID4gKyAgIGlm IChmYi0+cGFuZWwtPmJhY2tsaWdodCkgewo+ID4gPiArICAgICAgICAgICBmYi0+cGFuZWwtPmJh Y2tsaWdodC0+cHJvcHMucG93ZXIgPSBGQl9CTEFOS19VTkJMQU5LOwo+ID4gPiArICAgICAgICAg ICBiYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhmYi0+cGFuZWwtPmJhY2tsaWdodCk7Cj4gPiA+ICsg ICB9Cj4gPiA+ICsKPiA+ID4gKyAgIC8qCj4gPiA+ICsgICAgKiBmaW5hbGx5LCBlbmFibGUgdGhl IGludGVyZmFjZS4KPiA+ID4gKyAgICAqLwo+ID4gPiArICAgaWYgKGZiLT5ib2FyZC0+ZW5hYmxl KQo+ID4gPiArICAgICAgICAgICBmYi0+Ym9hcmQtPmVuYWJsZShmYik7Cj4gPiA+ICt9Cj4gPiA+ ICsKPiA+ID4gK3N0YXRpYyBpbnQKPiA+ID4gK2NsY2RmYl9zZXRfYml0ZmllbGRzKHN0cnVjdCBj bGNkX2ZiICpmYiwgc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIpCj4gPiA+ICt7Cj4gPiA+ ICsgICB1MzIgY2FwczsKPiA+ID4gKyAgIGludCByZXQgPSAwOwo+ID4gPiArCj4gPiA+ICsgICBp ZiAoZmItPnBhbmVsLT5jYXBzICYmIGZiLT5ib2FyZC0+Y2FwcykKPiA+ID4gKyAgICAgICAgICAg Y2FwcyA9IGZiLT5wYW5lbC0+Y2FwcyAmIGZiLT5ib2FyZC0+Y2FwczsKPiA+ID4gKyAgIGVsc2Ug ewo+ID4gPiArICAgICAgICAgICAvKiBPbGQgd2F5IG9mIHNwZWNpZnlpbmcgd2hhdCBjYW4gYmUg dXNlZCAqLwo+ID4gPiArICAgICAgICAgICBjYXBzID0gZmItPnBhbmVsLT5jbnRsICYgQ05UTF9C R1IgPwo+ID4gPiArICAgICAgICAgICAgICAgICAgIENMQ0RfQ0FQX0JHUiA6IENMQ0RfQ0FQX1JH QjsKPiA+ID4gKyAgICAgICAgICAgLyogQnV0IG1hc2sgb3V0IDQ0NCBtb2RlcyBhcyB0aGV5IHdl cmVuJ3Qgc3VwcG9ydGVkICovCj4gPiA+ICsgICAgICAgICAgIGNhcHMgJj0gfkNMQ0RfQ0FQXzQ0 NDsKPiA+ID4gKyAgIH0KPiA+ID4gKwo+ID4gPiArICAgLyogT25seSBURlQgcGFuZWxzIGNhbiBk byBSR0I4ODgvQkdSODg4ICovCj4gPiA+ICsgICBpZiAoIShmYi0+cGFuZWwtPmNudGwgJiBDTlRM X0xDRFRGVCkpCj4gPiA+ICsgICAgICAgICAgIGNhcHMgJj0gfkNMQ0RfQ0FQXzg4ODsKPiA+ID4g Kwo+ID4gPiArICAgbWVtc2V0KCZ2YXItPnRyYW5zcCwgMCwgc2l6ZW9mKHZhci0+dHJhbnNwKSk7 Cj4gPiA+ICsKPiA+ID4gKyAgIHZhci0+cmVkLm1zYl9yaWdodCA9IDA7Cj4gPiA+ICsgICB2YXIt PmdyZWVuLm1zYl9yaWdodCA9IDA7Cj4gPiA+ICsgICB2YXItPmJsdWUubXNiX3JpZ2h0ID0gMDsK PiA+ID4gKwo+ID4gPiArICAgc3dpdGNoICh2YXItPmJpdHNfcGVyX3BpeGVsKSB7Cj4gPiA+ICsg ICBjYXNlIDE6Cj4gPiA+ICsgICBjYXNlIDI6Cj4gPiA+ICsgICBjYXNlIDQ6Cj4gPiA+ICsgICBj YXNlIDg6Cj4gPiA+ICsgICAgICAgICAgIC8qIElmIHdlIGNhbid0IGRvIDU1NTEsIHJlamVjdCAq Lwo+ID4gPiArICAgICAgICAgICBjYXBzICY9IENMQ0RfQ0FQXzU1NTE7Cj4gPiA+ICsgICAgICAg ICAgIGlmICghY2Fwcykgewo+ID4gPiArICAgICAgICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7 Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiA+ICsgICAgICAgICAgIH0KPiA+ ID4gKwo+ID4gPiArICAgICAgICAgICB2YXItPnJlZC5sZW5ndGggICAgICAgICA9IHZhci0+Yml0 c19wZXJfcGl4ZWw7Cj4gPiA+ICsgICAgICAgICAgIHZhci0+cmVkLm9mZnNldCAgICAgICAgID0g MDsKPiA+ID4gKyAgICAgICAgICAgdmFyLT5ncmVlbi5sZW5ndGggICAgICAgPSB2YXItPmJpdHNf cGVyX3BpeGVsOwo+ID4gPiArICAgICAgICAgICB2YXItPmdyZWVuLm9mZnNldCAgICAgICA9IDA7 Cj4gPiA+ICsgICAgICAgICAgIHZhci0+Ymx1ZS5sZW5ndGggICAgICAgID0gdmFyLT5iaXRzX3Bl cl9waXhlbDsKPiA+ID4gKyAgICAgICAgICAgdmFyLT5ibHVlLm9mZnNldCAgICAgICAgPSAwOwo+ ID4gPiArICAgICAgICAgICBicmVhazsKPiA+ID4gKwo+ID4gPiArICAgY2FzZSAxNjoKPiA+ID4g KyAgICAgICAgICAgLyogSWYgd2UgY2FuJ3QgZG8gNDQ0LCA1NTUxIG9yIDU2NSwgcmVqZWN0ICov Cj4gPiA+ICsgICAgICAgICAgIGlmICghKGNhcHMgJiAoQ0xDRF9DQVBfNDQ0IHwgQ0xDRF9DQVBf NTU1MSB8IENMQ0RfQ0FQXzU2NSkpKSB7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgcmV0ID0g LUVJTlZBTDsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICBicmVhazsKPiA+ID4gKyAgICAgICAg ICAgfQo+ID4gPiArCj4gPiA+ICsgICAgICAgICAgIC8qCj4gPiA+ICsgICAgICAgICAgICAqIEdy ZWVuIGxlbmd0aCBjYW4gYmUgNCwgNSBvciA2IGRlcGVuZGluZyB3aGV0aGVyCj4gPiA+ICsgICAg ICAgICAgICAqIHdlJ3JlIG9wZXJhdGluZyBpbiA0NDQsIDU1NTEgb3IgNTY1IG1vZGUuCj4gPiA+ ICsgICAgICAgICAgICAqLwo+ID4gPiArICAgICAgICAgICBpZiAodmFyLT5ncmVlbi5sZW5ndGgg PT0gNCAmJiBjYXBzICYgQ0xDRF9DQVBfNDQ0KQo+ID4gPiArICAgICAgICAgICAgICAgICAgIGNh cHMgJj0gQ0xDRF9DQVBfNDQ0Owo+ID4gPiArICAgICAgICAgICBpZiAodmFyLT5ncmVlbi5sZW5n dGggPT0gNSAmJiBjYXBzICYgQ0xDRF9DQVBfNTU1MSkKPiA+ID4gKyAgICAgICAgICAgICAgICAg ICBjYXBzICY9IENMQ0RfQ0FQXzU1NTE7Cj4gPiA+ICsgICAgICAgICAgIGVsc2UgaWYgKHZhci0+ Z3JlZW4ubGVuZ3RoID09IDYgJiYgY2FwcyAmIENMQ0RfQ0FQXzU2NSkKPiA+ID4gKyAgICAgICAg ICAgICAgICAgICBjYXBzICY9IENMQ0RfQ0FQXzU2NTsKPiA+ID4gKyAgICAgICAgICAgZWxzZSB7 Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgLyoKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg KiBQTDExMCBvZmZpY2lhbGx5IG9ubHkgc3VwcG9ydHMgUkdCNTU1LAo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAqIGJ1dCBtYXkgYmUgd2lyZWQgdXAgdG8gYWxsb3cgUkdCNTY1Lgo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAqLwo+ID4gPiArICAgICAgICAgICAgICAgICAgIGlmIChjYXBz ICYgQ0xDRF9DQVBfNTY1KSB7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIt PmdyZWVuLmxlbmd0aCA9IDY7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXBz ICY9IENMQ0RfQ0FQXzU2NTsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNh cHMgJiBDTENEX0NBUF81NTUxKSB7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB2 YXItPmdyZWVuLmxlbmd0aCA9IDU7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBj YXBzICY9IENMQ0RfQ0FQXzU1NTE7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+Z3JlZW4ubGVuZ3RoID0gNDsK PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHMgJj0gQ0xDRF9DQVBfNDQ0Owo+ ID4gPiArICAgICAgICAgICAgICAgICAgIH0KPiA+ID4gKyAgICAgICAgICAgfQo+ID4gPiArCj4g PiA+ICsgICAgICAgICAgIGlmICh2YXItPmdyZWVuLmxlbmd0aCA+PSA1KSB7Cj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgdmFyLT5yZWQubGVuZ3RoID0gNTsKPiA+ID4gKyAgICAgICAgICAgICAg ICAgICB2YXItPmJsdWUubGVuZ3RoID0gNTsKPiA+ID4gKyAgICAgICAgICAgfSBlbHNlIHsKPiA+ ID4gKyAgICAgICAgICAgICAgICAgICB2YXItPnJlZC5sZW5ndGggPSA0Owo+ID4gPiArICAgICAg ICAgICAgICAgICAgIHZhci0+Ymx1ZS5sZW5ndGggPSA0Owo+ID4gPiArICAgICAgICAgICB9Cj4g PiA+ICsgICAgICAgICAgIGJyZWFrOwo+ID4gPiArICAgY2FzZSAzMjoKPiA+ID4gKyAgICAgICAg ICAgLyogSWYgd2UgY2FuJ3QgZG8gODg4LCByZWplY3QgKi8KPiA+ID4gKyAgICAgICAgICAgY2Fw cyAmPSBDTENEX0NBUF84ODg7Cj4gPiA+ICsgICAgICAgICAgIGlmICghY2Fwcykgewo+ID4gPiAr ICAgICAgICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7Cj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgYnJlYWs7Cj4gPiA+ICsgICAgICAgICAgIH0KPiA+ID4gKwo+ID4gPiArICAgICAgICAgICB2 YXItPnJlZC5sZW5ndGggPSA4Owo+ID4gPiArICAgICAgICAgICB2YXItPmdyZWVuLmxlbmd0aCA9 IDg7Cj4gPiA+ICsgICAgICAgICAgIHZhci0+Ymx1ZS5sZW5ndGggPSA4Owo+ID4gPiArICAgICAg ICAgICBicmVhazsKPiA+ID4gKyAgIGRlZmF1bHQ6Cj4gPiA+ICsgICAgICAgICAgIHJldCA9IC1F SU5WQUw7Cj4gPiA+ICsgICAgICAgICAgIGJyZWFrOwo+ID4gPiArICAgfQo+ID4gPiArCj4gPiA+ ICsgICAvKgo+ID4gPiArICAgICogPj0gMTZicHAgZGlzcGxheXMgaGF2ZSBzZXBhcmF0ZSBjb2xv dXIgY29tcG9uZW50IGJpdGZpZWxkcwo+ID4gPiArICAgICogZW5jb2RlZCBpbiB0aGUgcGl4ZWwg ZGF0YS4gIENhbGN1bGF0ZSB0aGVpciBwb3NpdGlvbiBmcm9tCj4gPiA+ICsgICAgKiB0aGUgYml0 ZmllbGQgbGVuZ3RoIGRlZmluZWQgYWJvdmUuCj4gPiA+ICsgICAgKi8KPiA+ID4gKyAgIGlmIChy ZXQgPT0gMCAmJiB2YXItPmJpdHNfcGVyX3BpeGVsID49IDE2KSB7Cj4gPiA+ICsgICAgICAgICAg IGJvb2wgYmdyLCByZ2I7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAgICAgYmdyID0gY2FwcyAmIENM Q0RfQ0FQX0JHUiAmJiB2YXItPmJsdWUub2Zmc2V0ID09IDA7Cj4gPiA+ICsgICAgICAgICAgIHJn YiA9IGNhcHMgJiBDTENEX0NBUF9SR0IgJiYgdmFyLT5yZWQub2Zmc2V0ID09IDA7Cj4gPiA+ICsK PiA+ID4gKyAgICAgICAgICAgaWYgKCFiZ3IgJiYgIXJnYikKPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAvKgo+ID4gPiArICAgICAgICAgICAgICAgICAgICAqIFRoZSByZXF1ZXN0ZWQgZm9ybWF0 IHdhcyBub3QgcG9zc2libGUsIHRyeSBqdXN0Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICog b3VyIGNhcGFiaWxpdGllcy4gIE9uZSBvZiBCR1Igb3IgUkdCIG11c3QgYmUKPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgKiBzdXBwb3J0ZWQuCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICov Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgYmdyID0gY2FwcyAmIENMQ0RfQ0FQX0JHUjsKPiA+ ID4gKwo+ID4gPiArICAgICAgICAgICBpZiAoYmdyKSB7Cj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgdmFyLT5ibHVlLm9mZnNldCA9IDA7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgdmFyLT5n cmVlbi5vZmZzZXQgPSB2YXItPmJsdWUub2Zmc2V0ICsgdmFyLT5ibHVlLmxlbmd0aDsKPiA+ID4g KyAgICAgICAgICAgICAgICAgICB2YXItPnJlZC5vZmZzZXQgPSB2YXItPmdyZWVuLm9mZnNldCAr IHZhci0+Z3JlZW4ubGVuZ3RoOwo+ID4gPiArICAgICAgICAgICB9IGVsc2Ugewo+ID4gPiArICAg ICAgICAgICAgICAgICAgIHZhci0+cmVkLm9mZnNldCA9IDA7Cj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgdmFyLT5ncmVlbi5vZmZzZXQgPSB2YXItPnJlZC5vZmZzZXQgKyB2YXItPnJlZC5sZW5n dGg7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgdmFyLT5ibHVlLm9mZnNldCA9IHZhci0+Z3Jl ZW4ub2Zmc2V0ICsgdmFyLT5ncmVlbi5sZW5ndGg7Cj4gPiA+ICsgICAgICAgICAgIH0KPiA+ID4g KyAgIH0KPiA+ID4gKwo+ID4gPiArICAgcmV0dXJuIHJldDsKPiA+ID4gK30KPiA+ID4gKwo+ID4g PiArc3RhdGljIGludCBjbGNkZmJfY2hlY2tfdmFyKHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAq dmFyLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiA+ID4gK3sKPiA+ID4gKyAgIHN0cnVjdCBjbGNk X2ZiICpmYiA9IHRvX2NsY2QoaW5mbyk7Cj4gPiA+ICsgICBpbnQgcmV0ID0gLUVJTlZBTDsKPiA+ ID4gKwo+ID4gPiArICAgaWYgKGZiLT5ib2FyZC0+Y2hlY2spCj4gPiA+ICsgICAgICAgICAgIHJl dCA9IGZiLT5ib2FyZC0+Y2hlY2soZmIsIHZhcik7Cj4gPiA+ICsKPiA+ID4gKyAgIGlmIChyZXQg PT0gMCAmJgo+ID4gPiArICAgICAgIHZhci0+eHJlc192aXJ0dWFsICogdmFyLT5iaXRzX3Blcl9w aXhlbCAvIDggKgo+ID4gPiArICAgICAgIHZhci0+eXJlc192aXJ0dWFsID4gZmItPmZiLmZpeC5z bWVtX2xlbikKPiA+ID4gKyAgICAgICAgICAgcmV0ID0gLUVJTlZBTDsKPiA+ID4gKwo+ID4gPiAr ICAgaWYgKHJldCA9PSAwKQo+ID4gPiArICAgICAgICAgICByZXQgPSBjbGNkZmJfc2V0X2JpdGZp ZWxkcyhmYiwgdmFyKTsKPiA+ID4gKwo+ID4gPiArICAgcmV0dXJuIHJldDsKPiA+ID4gK30KPiA+ ID4gKwo+ID4gPiArc3RhdGljIGludCBjbGNkZmJfc2V0X3BhcihzdHJ1Y3QgZmJfaW5mbyAqaW5m bykKPiA+ID4gK3sKPiA+ID4gKyAgIHN0cnVjdCBjbGNkX2ZiICpmYiA9IHRvX2NsY2QoaW5mbyk7 Cj4gPiA+ICsgICBzdHJ1Y3QgY2xjZF9yZWdzIHJlZ3M7Cj4gPiA+ICsKPiA+ID4gKyAgIGZiLT5m Yi5maXgubGluZV9sZW5ndGggPSBmYi0+ZmIudmFyLnhyZXNfdmlydHVhbCAqCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZmItPmZiLnZhci5iaXRzX3Blcl9waXhlbCAvIDg7Cj4g PiA+ICsKPiA+ID4gKyAgIGlmIChmYi0+ZmIudmFyLmJpdHNfcGVyX3BpeGVsIDw9IDgpCj4gPiA+ ICsgICAgICAgICAgIGZiLT5mYi5maXgudmlzdWFsID0gRkJfVklTVUFMX1BTRVVET0NPTE9SOwo+ ID4gPiArICAgZWxzZQo+ID4gPiArICAgICAgICAgICBmYi0+ZmIuZml4LnZpc3VhbCA9IEZCX1ZJ U1VBTF9UUlVFQ09MT1I7Cj4gPiA+ICsKPiA+ID4gKyAgIGZiLT5ib2FyZC0+ZGVjb2RlKGZiLCAm cmVncyk7Cj4gPiA+ICsKPiA+ID4gKyAgIGNsY2RmYl9kaXNhYmxlKGZiKTsKPiA+ID4gKwo+ID4g PiArICAgd3JpdGVsKHJlZ3MudGltMCwgZmItPnJlZ3MgKyBDTENEX1RJTTApOwo+ID4gPiArICAg d3JpdGVsKHJlZ3MudGltMSwgZmItPnJlZ3MgKyBDTENEX1RJTTEpOwo+ID4gPiArICAgd3JpdGVs KHJlZ3MudGltMiwgZmItPnJlZ3MgKyBDTENEX1RJTTIpOwo+ID4gPiArICAgd3JpdGVsKHJlZ3Mu dGltMywgZmItPnJlZ3MgKyBDTENEX1RJTTMpOwo+ID4gPiArCj4gPiA+ICsgICBjbGNkZmJfc2V0 X3N0YXJ0KGZiKTsKPiA+ID4gKwo+ID4gPiArICAgY2xrX3NldF9yYXRlKGZiLT5jbGssICgxMDAw MDAwMDAwIC8gcmVncy5waXhjbG9jaykgKiAxMDAwKTsKPiA+ID4gKwo+ID4gPiArICAgZmItPmNs Y2RfY250bCA9IHJlZ3MuY250bDsKPiA+ID4gKwo+ID4gPiArICAgY2xjZGZiX2VuYWJsZShmYiwg cmVncy5jbnRsKTsKPiA+ID4gKwo+ID4gPiArI2lmZGVmIERFQlVHCj4gPiA+ICsgICBwcmludGso S0VSTl9JTkZPCj4gPiA+ICsgICAgICAgICAgIkNMQ0Q6IFJlZ2lzdGVycyBzZXQgdG9cbiIKPiA+ ID4gKyAgICAgICAgICAiICAlMDh4ICUwOHggJTA4eCAlMDh4XG4iCj4gPiA+ICsgICAgICAgICAg IiAgJTA4eCAlMDh4ICUwOHggJTA4eFxuIiwKPiA+ID4gKyAgICAgICAgICAgcmVhZGwoZmItPnJl Z3MgKyBDTENEX1RJTTApLCByZWFkbChmYi0+cmVncyArIENMQ0RfVElNMSksCj4gPiA+ICsgICAg ICAgICAgIHJlYWRsKGZiLT5yZWdzICsgQ0xDRF9USU0yKSwgcmVhZGwoZmItPnJlZ3MgKyBDTENE X1RJTTMpLAo+ID4gPiArICAgICAgICAgICByZWFkbChmYi0+cmVncyArIENMQ0RfVUJBUyksIHJl YWRsKGZiLT5yZWdzICsgQ0xDRF9MQkFTKSwKPiA+ID4gKyAgICAgICAgICAgcmVhZGwoZmItPnJl Z3MgKyBmYi0+b2ZmX2llbmIpLCByZWFkbChmYi0+cmVncyArIGZiLT5vZmZfY250bCkpOwo+ID4g PiArI2VuZGlmCj4gPiA+ICsKPiA+ID4gKyAgIHJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4g PiA+ICtzdGF0aWMgaW5saW5lIHUzMiBjb252ZXJ0X2JpdGZpZWxkKGludCB2YWwsIHN0cnVjdCBm Yl9iaXRmaWVsZCAqYmYpCj4gPiA+ICt7Cj4gPiA+ICsgICB1bnNpZ25lZCBpbnQgbWFzayA9ICgx IDw8IGJmLT5sZW5ndGgpIC0gMTsKPiA+ID4gKwo+ID4gPiArICAgcmV0dXJuICh2YWwgPj4gKDE2 IC0gYmYtPmxlbmd0aCkgJiBtYXNrKSA8PCBiZi0+b2Zmc2V0Owo+ID4gPiArfQo+ID4gPiArCj4g PiA+ICsvKgo+ID4gPiArICogIFNldCBhIHNpbmdsZSBjb2xvciByZWdpc3Rlci4gVGhlIHZhbHVl cyBzdXBwbGllZCBoYXZlIGEgMTYgYml0Cj4gPiA+ICsgKiAgbWFnbml0dWRlLiAgUmV0dXJuICE9 IDAgZm9yIGludmFsaWQgcmVnbm8uCj4gPiA+ICsgKi8KPiA+ID4gK3N0YXRpYyBpbnQKPiA+ID4g K2NsY2RmYl9zZXRjb2xyZWcodW5zaWduZWQgaW50IHJlZ25vLCB1bnNpZ25lZCBpbnQgcmVkLCB1 bnNpZ25lZCBpbnQgZ3JlZW4sCj4gPiA+ICsgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYmx1ZSwg dW5zaWduZWQgaW50IHRyYW5zcCwgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gPiA+ICt7Cj4gPiA+ ICsgICBzdHJ1Y3QgY2xjZF9mYiAqZmIgPSB0b19jbGNkKGluZm8pOwo+ID4gPiArCj4gPiA+ICsg ICBpZiAocmVnbm8gPCAxNikKPiA+ID4gKyAgICAgICAgICAgZmItPmNtYXBbcmVnbm9dID0gY29u dmVydF9iaXRmaWVsZCh0cmFuc3AsICZmYi0+ZmIudmFyLnRyYW5zcCkgfAo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0X2JpdGZpZWxkKGJsdWUsICZmYi0+ZmIudmFy LmJsdWUpIHwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydF9iaXRm aWVsZChncmVlbiwgJmZiLT5mYi52YXIuZ3JlZW4pIHwKPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29udmVydF9iaXRmaWVsZChyZWQsICZmYi0+ZmIudmFyLnJlZCk7Cj4gPiA+ ICsKPiA+ID4gKyAgIGlmIChmYi0+ZmIuZml4LnZpc3VhbCA9PSBGQl9WSVNVQUxfUFNFVURPQ09M T1IgJiYgcmVnbm8gPCAyNTYpIHsKPiA+ID4gKyAgICAgICAgICAgaW50IGh3X3JlZyA9IENMQ0Rf UEFMRVRURSArICgocmVnbm8gKiAyKSAmIH4zKTsKPiA+ID4gKyAgICAgICAgICAgdTMyIHZhbCwg bWFzaywgbmV3dmFsOwo+ID4gPiArCj4gPiA+ICsgICAgICAgICAgIG5ld3ZhbCAgPSAocmVkID4+ IDExKSAgJiAweDAwMWY7Cj4gPiA+ICsgICAgICAgICAgIG5ld3ZhbCB8PSAoZ3JlZW4gPj4gNikg JiAweDAzZTA7Cj4gPiA+ICsgICAgICAgICAgIG5ld3ZhbCB8PSAoYmx1ZSA+PiAxKSAgJiAweDdj MDA7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAgICAgLyoKPiA+ID4gKyAgICAgICAgICAgICogMy4y LjExOiBpZiB3ZSdyZSBjb25maWd1cmVkIGZvciBiaWcgZW5kaWFuCj4gPiA+ICsgICAgICAgICAg ICAqIGJ5dGUgb3JkZXIsIHRoZSBwYWxldHRlIGVudHJpZXMgYXJlIHN3YXBwZWQuCj4gPiA+ICsg ICAgICAgICAgICAqLwo+ID4gPiArICAgICAgICAgICBpZiAoZmItPmNsY2RfY250bCAmIENOVExf QkVCTykKPiA+ID4gKyAgICAgICAgICAgICAgICAgICByZWdubyBePSAxOwo+ID4gPiArCj4gPiA+ ICsgICAgICAgICAgIGlmIChyZWdubyAmIDEpIHsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICBu ZXd2YWwgPDw9IDE2Owo+ID4gPiArICAgICAgICAgICAgICAgICAgIG1hc2sgPSAweDAwMDBmZmZm Owo+ID4gPiArICAgICAgICAgICB9IGVsc2Ugewo+ID4gPiArICAgICAgICAgICAgICAgICAgIG1h c2sgPSAweGZmZmYwMDAwOwo+ID4gPiArICAgICAgICAgICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAg ICAgICAgdmFsID0gcmVhZGwoZmItPnJlZ3MgKyBod19yZWcpICYgbWFzazsKPiA+ID4gKyAgICAg ICAgICAgd3JpdGVsKHZhbCB8IG5ld3ZhbCwgZmItPnJlZ3MgKyBod19yZWcpOwo+ID4gPiArICAg fQo+ID4gPiArCj4gPiA+ICsgICByZXR1cm4gcmVnbm8gPiAyNTU7Cj4gPiA+ICt9Cj4gPiA+ICsK PiA+ID4gKy8qCj4gPiA+ICsgKiAgQmxhbmsgdGhlIHNjcmVlbiBpZiBibGFua19tb2RlICE9IDAs IGVsc2UgdW5ibGFuay4gSWYgYmxhbmsgPT0gTlVMTAo+ID4gPiArICogIHRoZW4gdGhlIGNhbGxl ciBibGFua3MgYnkgc2V0dGluZyB0aGUgQ0xVVCAoQ29sb3IgTG9vayBVcCBUYWJsZSkgdG8gYWxs Cj4gPiA+ICsgKiAgYmxhY2suIFJldHVybiAwIGlmIGJsYW5raW5nIHN1Y2NlZWRlZCwgIT0gMCBp ZiB1bi0vYmxhbmtpbmcgZmFpbGVkIGR1ZQo+ID4gPiArICogIHRvIGUuZy4gYSB2aWRlbyBtb2Rl IHdoaWNoIGRvZXNuJ3Qgc3VwcG9ydCBpdC4gSW1wbGVtZW50cyBWRVNBIHN1c3BlbmQKPiA+ID4g KyAqICBhbmQgcG93ZXJkb3duIG1vZGVzIG9uIGhhcmR3YXJlIHRoYXQgc3VwcG9ydHMgZGlzYWJs aW5nIGhzeW5jL3ZzeW5jOgo+ID4gPiArICogICAgYmxhbmtfbW9kZSA9PSAyOiBzdXNwZW5kIHZz eW5jCj4gPiA+ICsgKiAgICBibGFua19tb2RlID09IDM6IHN1c3BlbmQgaHN5bmMKPiA+ID4gKyAq ICAgIGJsYW5rX21vZGUgPT0gNDogcG93ZXJkb3duCj4gPiA+ICsgKi8KPiA+ID4gK3N0YXRpYyBp bnQgY2xjZGZiX2JsYW5rKGludCBibGFua19tb2RlLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiA+ ID4gK3sKPiA+ID4gKyAgIHN0cnVjdCBjbGNkX2ZiICpmYiA9IHRvX2NsY2QoaW5mbyk7Cj4gPiA+ ICsKPiA+ID4gKyAgIGlmIChibGFua19tb2RlICE9IDApIHsKPiA+ID4gKyAgICAgICAgICAgY2xj ZGZiX2Rpc2FibGUoZmIpOwo+ID4gPiArICAgfSBlbHNlIHsKPiA+ID4gKyAgICAgICAgICAgY2xj ZGZiX2VuYWJsZShmYiwgZmItPmNsY2RfY250bCk7Cj4gPiA+ICsgICB9Cj4gPiA+ICsgICByZXR1 cm4gMDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGludCBjbGNkZmJfbW1hcChzdHJ1 Y3QgZmJfaW5mbyAqaW5mbywKPiA+ID4gKyAgICAgICAgICAgICAgICAgIHN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqdm1hKQo+ID4gPiArewo+ID4gPiArICAgc3RydWN0IGNsY2RfZmIgKmZiID0gdG9f Y2xjZChpbmZvKTsKPiA+ID4gKyAgIHVuc2lnbmVkIGxvbmcgbGVuLCBvZmYgPSB2bWEtPnZtX3Bn b2ZmIDw8IFBBR0VfU0hJRlQ7Cj4gPiA+ICsgICBpbnQgcmV0ID0gLUVJTlZBTDsKPiA+ID4gKwo+ ID4gPiArICAgbGVuID0gaW5mby0+Zml4LnNtZW1fbGVuOwo+ID4gPiArCj4gPiA+ICsgICBpZiAo b2ZmIDw9IGxlbiAmJiB2bWEtPnZtX2VuZCAtIHZtYS0+dm1fc3RhcnQgPD0gbGVuIC0gb2ZmICYm Cj4gPiA+ICsgICAgICAgZmItPmJvYXJkLT5tbWFwKQo+ID4gPiArICAgICAgICAgICByZXQgPSBm Yi0+Ym9hcmQtPm1tYXAoZmIsIHZtYSk7Cj4gPiA+ICsKPiA+ID4gKyAgIHJldHVybiByZXQ7Cj4g PiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIGNsY2RmYl9v cHMgPSB7Cj4gPiA+ICsgICAub3duZXIgICAgICAgICAgPSBUSElTX01PRFVMRSwKPiA+ID4gKyAg IC5mYl9jaGVja192YXIgICA9IGNsY2RmYl9jaGVja192YXIsCj4gPiA+ICsgICAuZmJfc2V0X3Bh ciAgICAgPSBjbGNkZmJfc2V0X3BhciwKPiA+ID4gKyAgIC5mYl9zZXRjb2xyZWcgICA9IGNsY2Rm Yl9zZXRjb2xyZWcsCj4gPiA+ICsgICAuZmJfYmxhbmsgICAgICAgPSBjbGNkZmJfYmxhbmssCj4g PiA+ICsgICAuZmJfZmlsbHJlY3QgICAgPSBjZmJfZmlsbHJlY3QsCj4gPiA+ICsgICAuZmJfY29w eWFyZWEgICAgPSBjZmJfY29weWFyZWEsCj4gPiA+ICsgICAuZmJfaW1hZ2VibGl0ICAgPSBjZmJf aW1hZ2VibGl0LAo+ID4gPiArICAgLmZiX21tYXAgICAgICAgID0gY2xjZGZiX21tYXAsCj4gPiA+ ICt9Owo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW50IGNsY2RmYl9yZWdpc3RlcihzdHJ1Y3QgY2xj ZF9mYiAqZmIpCj4gPiA+ICt7Cj4gPiA+ICsgICBpbnQgcmV0Owo+ID4gPiArCj4gPiA+ICsgICAv Kgo+ID4gPiArICAgICogQVJNIFBMMTExIGFsd2F5cyBoYXMgSUVOQiBhdCAweDFjOyBpdCdzIG9u bHkgUEwxMTAKPiA+ID4gKyAgICAqIHdoaWNoIGlzIHJldmVyc2VkIG9uIHNvbWUgcGxhdGZvcm1z Lgo+ID4gPiArICAgICovCj4gPiA+ICsgICBpZiAoYW1iYV9tYW5mKGZiLT5kZXYpID09IDB4NDEg JiYgYW1iYV9wYXJ0KGZiLT5kZXYpID09IDB4MTExKSB7Cj4gPiA+ICsgICAgICAgICAgIGZiLT5v ZmZfaWVuYiA9IENMQ0RfUEwxMTFfSUVOQjsKPiA+ID4gKyAgICAgICAgICAgZmItPm9mZl9jbnRs ID0gQ0xDRF9QTDExMV9DTlRMOwo+ID4gPiArICAgfSBlbHNlIHsKPiA+ID4gKyAgICAgICAgICAg ZmItPm9mZl9pZW5iID0gQ0xDRF9QTDExMF9JRU5COwo+ID4gPiArICAgICAgICAgICBmYi0+b2Zm X2NudGwgPSBDTENEX1BMMTEwX0NOVEw7Cj4gPiA+ICsgICB9Cj4gPiA+ICsKPiA+ID4gKyAgIGZi LT5jbGsgPSBjbGtfZ2V0KCZmYi0+ZGV2LT5kZXYsIE5VTEwpOwo+ID4gPiArICAgaWYgKElTX0VS UihmYi0+Y2xrKSkgewo+ID4gPiArICAgICAgICAgICByZXQgPSBQVFJfRVJSKGZiLT5jbGspOwo+ ID4gPiArICAgICAgICAgICBnb3RvIG91dDsKPiA+ID4gKyAgIH0KPiA+ID4gKwo+ID4gPiArICAg cmV0ID0gY2xrX3ByZXBhcmUoZmItPmNsayk7Cj4gPiA+ICsgICBpZiAocmV0KQo+ID4gPiArICAg ICAgICAgICBnb3RvIGZyZWVfY2xrOwo+ID4gPiArCj4gPiA+ICsgICBmYi0+ZmIuZGV2aWNlICAg ICAgICAgICA9ICZmYi0+ZGV2LT5kZXY7Cj4gPiA+ICsKPiA+ID4gKyAgIGZiLT5mYi5maXgubW1p b19zdGFydCAgID0gZmItPmRldi0+cmVzLnN0YXJ0Owo+ID4gPiArICAgZmItPmZiLmZpeC5tbWlv X2xlbiAgICAgPSByZXNvdXJjZV9zaXplKCZmYi0+ZGV2LT5yZXMpOwo+ID4gPiArCj4gPiA+ICsg ICBmYi0+cmVncyA9IGlvcmVtYXAoZmItPmZiLmZpeC5tbWlvX3N0YXJ0LCBmYi0+ZmIuZml4Lm1t aW9fbGVuKTsKPiA+ID4gKyAgIGlmICghZmItPnJlZ3MpIHsKPiA+ID4gKyAgICAgICAgICAgcHJp bnRrKEtFUk5fRVJSICJDTENEOiB1bmFibGUgdG8gcmVtYXAgcmVnaXN0ZXJzXG4iKTsKPiA+ID4g KyAgICAgICAgICAgcmV0ID0gLUVOT01FTTsKPiA+ID4gKyAgICAgICAgICAgZ290byBjbGtfdW5w cmVwOwo+ID4gPiArICAgfQo+ID4gPiArCj4gPiA+ICsgICBmYi0+ZmIuZmJvcHMgICAgICAgICAg ICA9ICZjbGNkZmJfb3BzOwo+ID4gPiArICAgZmItPmZiLmZsYWdzICAgICAgICAgICAgPSBGQklO Rk9fRkxBR19ERUZBVUxUOwo+ID4gPiArICAgZmItPmZiLnBzZXVkb19wYWxldHRlICAgPSBmYi0+ Y21hcDsKPiA+ID4gKwo+ID4gPiArICAgc3RybmNweShmYi0+ZmIuZml4LmlkLCBjbGNkX25hbWUs IHNpemVvZihmYi0+ZmIuZml4LmlkKSk7Cj4gPiA+ICsgICBmYi0+ZmIuZml4LnR5cGUgICAgICAg ICA9IEZCX1RZUEVfUEFDS0VEX1BJWEVMUzsKPiA+ID4gKyAgIGZiLT5mYi5maXgudHlwZV9hdXgg ICAgID0gMDsKPiA+ID4gKyAgIGZiLT5mYi5maXgueHBhbnN0ZXAgICAgID0gMDsKPiA+ID4gKyAg IGZiLT5mYi5maXgueXBhbnN0ZXAgICAgID0gMDsKPiA+ID4gKyAgIGZiLT5mYi5maXgueXdyYXBz dGVwICAgID0gMDsKPiA+ID4gKyAgIGZiLT5mYi5maXguYWNjZWwgICAgICAgID0gRkJfQUNDRUxf Tk9ORTsKPiA+ID4gKwo+ID4gPiArICAgZmItPmZiLnZhci54cmVzICAgICAgICAgPSBmYi0+cGFu ZWwtPm1vZGUueHJlczsKPiA+ID4gKyAgIGZiLT5mYi52YXIueXJlcyAgICAgICAgID0gZmItPnBh bmVsLT5tb2RlLnlyZXM7Cj4gPiA+ICsgICBmYi0+ZmIudmFyLnhyZXNfdmlydHVhbCA9IGZiLT5w YW5lbC0+bW9kZS54cmVzOwo+ID4gPiArICAgZmItPmZiLnZhci55cmVzX3ZpcnR1YWwgPSBmYi0+ cGFuZWwtPm1vZGUueXJlczsKPiA+ID4gKyAgIGZiLT5mYi52YXIuYml0c19wZXJfcGl4ZWwgPSBm Yi0+cGFuZWwtPmJwcDsKPiA+ID4gKyAgIGZiLT5mYi52YXIuZ3JheXNjYWxlICAgID0gZmItPnBh bmVsLT5ncmF5c2NhbGU7Cj4gPiA+ICsgICBmYi0+ZmIudmFyLnBpeGNsb2NrICAgICA9IGZiLT5w YW5lbC0+bW9kZS5waXhjbG9jazsKPiA+ID4gKyAgIGZiLT5mYi52YXIubGVmdF9tYXJnaW4gID0g ZmItPnBhbmVsLT5tb2RlLmxlZnRfbWFyZ2luOwo+ID4gPiArICAgZmItPmZiLnZhci5yaWdodF9t YXJnaW4gPSBmYi0+cGFuZWwtPm1vZGUucmlnaHRfbWFyZ2luOwo+ID4gPiArICAgZmItPmZiLnZh ci51cHBlcl9tYXJnaW4gPSBmYi0+cGFuZWwtPm1vZGUudXBwZXJfbWFyZ2luOwo+ID4gPiArICAg ZmItPmZiLnZhci5sb3dlcl9tYXJnaW4gPSBmYi0+cGFuZWwtPm1vZGUubG93ZXJfbWFyZ2luOwo+ ID4gPiArICAgZmItPmZiLnZhci5oc3luY19sZW4gICAgPSBmYi0+cGFuZWwtPm1vZGUuaHN5bmNf bGVuOwo+ID4gPiArICAgZmItPmZiLnZhci52c3luY19sZW4gICAgPSBmYi0+cGFuZWwtPm1vZGUu dnN5bmNfbGVuOwo+ID4gPiArICAgZmItPmZiLnZhci5zeW5jICAgICAgICAgPSBmYi0+cGFuZWwt Pm1vZGUuc3luYzsKPiA+ID4gKyAgIGZiLT5mYi52YXIudm1vZGUgICAgICAgID0gZmItPnBhbmVs LT5tb2RlLnZtb2RlOwo+ID4gPiArICAgZmItPmZiLnZhci5hY3RpdmF0ZSAgICAgPSBGQl9BQ1RJ VkFURV9OT1c7Cj4gPiA+ICsgICBmYi0+ZmIudmFyLm5vbnN0ZCAgICAgICA9IDA7Cj4gPiA+ICsg ICBmYi0+ZmIudmFyLmhlaWdodCAgICAgICA9IGZiLT5wYW5lbC0+aGVpZ2h0Owo+ID4gPiArICAg ZmItPmZiLnZhci53aWR0aCAgICAgICAgPSBmYi0+cGFuZWwtPndpZHRoOwo+ID4gPiArICAgZmIt PmZiLnZhci5hY2NlbF9mbGFncyAgPSAwOwo+ID4gPiArCj4gPiA+ICsgICBmYi0+ZmIubW9uc3Bl Y3MuaGZtaW4gICA9IDA7Cj4gPiA+ICsgICBmYi0+ZmIubW9uc3BlY3MuaGZtYXggICA9IDEwMDAw MDsKPiA+ID4gKyAgIGZiLT5mYi5tb25zcGVjcy52Zm1pbiAgID0gMDsKPiA+ID4gKyAgIGZiLT5m Yi5tb25zcGVjcy52Zm1heCAgID0gNDAwOwo+ID4gPiArICAgZmItPmZiLm1vbnNwZWNzLmRjbGtt aW4gPSAxMDAwMDAwOwo+ID4gPiArICAgZmItPmZiLm1vbnNwZWNzLmRjbGttYXggPSAxMDAwMDAw MDA7Cj4gPiA+ICsKPiA+ID4gKyAgIC8qCj4gPiA+ICsgICAgKiBNYWtlIHN1cmUgdGhhdCB0aGUg Yml0ZmllbGRzIGFyZSBzZXQgYXBwcm9wcmlhdGVseS4KPiA+ID4gKyAgICAqLwo+ID4gPiArICAg Y2xjZGZiX3NldF9iaXRmaWVsZHMoZmIsICZmYi0+ZmIudmFyKTsKPiA+ID4gKwo+ID4gPiArICAg LyoKPiA+ID4gKyAgICAqIEFsbG9jYXRlIGNvbG91cm1hcC4KPiA+ID4gKyAgICAqLwo+ID4gPiAr ICAgcmV0ID0gZmJfYWxsb2NfY21hcCgmZmItPmZiLmNtYXAsIDI1NiwgMCk7Cj4gPiA+ICsgICBp ZiAocmV0KQo+ID4gPiArICAgICAgICAgICBnb3RvIHVubWFwOwo+ID4gPiArCj4gPiA+ICsgICAv Kgo+ID4gPiArICAgICogRW5zdXJlIGludGVycnVwdHMgYXJlIGRpc2FibGVkLgo+ID4gPiArICAg ICovCj4gPiA+ICsgICB3cml0ZWwoMCwgZmItPnJlZ3MgKyBmYi0+b2ZmX2llbmIpOwo+ID4gPiAr Cj4gPiA+ICsgICBmYl9zZXRfdmFyKCZmYi0+ZmIsICZmYi0+ZmIudmFyKTsKPiA+ID4gKwo+ID4g PiArICAgZGV2X2luZm8oJmZiLT5kZXYtPmRldiwgIiVzIGhhcmR3YXJlLCAlcyBkaXNwbGF5XG4i LAo+ID4gPiArICAgICAgICAgICAgZmItPmJvYXJkLT5uYW1lLCBmYi0+cGFuZWwtPm1vZGUubmFt ZSk7Cj4gPiA+ICsKPiA+ID4gKyAgIHJldCA9IHJlZ2lzdGVyX2ZyYW1lYnVmZmVyKCZmYi0+ZmIp Owo+ID4gPiArICAgaWYgKHJldCA9PSAwKQo+ID4gPiArICAgICAgICAgICBnb3RvIG91dDsKPiA+ ID4gKwo+ID4gPiArICAgcHJpbnRrKEtFUk5fRVJSICJDTENEOiBjYW5ub3QgcmVnaXN0ZXIgZnJh bWVidWZmZXIgKCVkKVxuIiwgcmV0KTsKPiA+ID4gKwo+ID4gPiArICAgZmJfZGVhbGxvY19jbWFw KCZmYi0+ZmIuY21hcCk7Cj4gPiA+ICsgdW5tYXA6Cj4gPiA+ICsgICBpb3VubWFwKGZiLT5yZWdz KTsKPiA+ID4gKyBjbGtfdW5wcmVwOgo+ID4gPiArICAgY2xrX3VucHJlcGFyZShmYi0+Y2xrKTsK PiA+ID4gKyBmcmVlX2NsazoKPiA+ID4gKyAgIGNsa19wdXQoZmItPmNsayk7Cj4gPiA+ICsgb3V0 Ogo+ID4gPiArICAgcmV0dXJuIHJldDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArI2lmZGVmIENP TkZJR19PRgo+ID4gPiArc3RhdGljIGludCBjbGNkZmJfb2ZfZ2V0X2RwaV9wYW5lbF9tb2RlKHN0 cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSwKPiA+ID4gKyAgICAgICAgICAgc3RydWN0IGNsY2RfcGFu ZWwgKmNsY2RfcGFuZWwpCj4gPiA+ICt7Cj4gPiA+ICsgICBpbnQgZXJyOwo+ID4gPiArICAgc3Ry dWN0IGRpc3BsYXlfdGltaW5nIHRpbWluZzsKPiA+ID4gKyAgIHN0cnVjdCB2aWRlb21vZGUgdmlk ZW87Cj4gPiA+ICsKPiA+ID4gKyAgIGVyciA9IG9mX2dldF9kaXNwbGF5X3RpbWluZyhub2RlLCAi cGFuZWwtdGltaW5nIiwgJnRpbWluZyk7Cj4gPiA+ICsgICBpZiAoZXJyKSB7Cj4gPiA+ICsgICAg ICAgICAgIHByX2VycigiJXBPRjogcHJvYmxlbXMgcGFyc2luZyBwYW5lbC10aW1pbmcgKCVkKVxu Iiwgbm9kZSwgZXJyKTsKPiA+ID4gKyAgICAgICAgICAgcmV0dXJuIGVycjsKPiA+ID4gKyAgIH0K PiA+ID4gKwo+ID4gPiArICAgdmlkZW9tb2RlX2Zyb21fdGltaW5nKCZ0aW1pbmcsICZ2aWRlbyk7 Cj4gPiA+ICsKPiA+ID4gKyAgIGVyciA9IGZiX3ZpZGVvbW9kZV9mcm9tX3ZpZGVvbW9kZSgmdmlk ZW8sICZjbGNkX3BhbmVsLT5tb2RlKTsKPiA+ID4gKyAgIGlmIChlcnIpCj4gPiA+ICsgICAgICAg ICAgIHJldHVybiBlcnI7Cj4gPiA+ICsKPiA+ID4gKyAgIC8qIFNldCB1cCBzb21lIGludmVyc2lv biBmbGFncyAqLwo+ID4gPiArICAgaWYgKHRpbWluZy5mbGFncyAmIERJU1BMQVlfRkxBR1NfUElY REFUQV9ORUdFREdFKQo+ID4gPiArICAgICAgICAgICBjbGNkX3BhbmVsLT50aW0yIHw9IFRJTTJf SVBDOwo+ID4gPiArICAgZWxzZSBpZiAoISh0aW1pbmcuZmxhZ3MgJiBESVNQTEFZX0ZMQUdTX1BJ WERBVEFfUE9TRURHRSkpCj4gPiA+ICsgICAgICAgICAgIC8qCj4gPiA+ICsgICAgICAgICAgICAq IFRvIHByZXNlcnZlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGUgSVBDIChpbnZlcnRlZAo+ ID4gPiArICAgICAgICAgICAgKiBwaXhlbCBjbG9jaykgZmxhZyBuZWVkcyB0byBiZSBzZXQgb24g YW55IGRpc3BsYXkgdGhhdAo+ID4gPiArICAgICAgICAgICAgKiBkb2Vzbid0IGV4cGxpY2l0bHkg c3BlY2lmeSB0aGF0IHRoZSBwaXhlbCBjbG9jayBpcwo+ID4gPiArICAgICAgICAgICAgKiBhY3Rp dmUgb24gdGhlIG5lZ2F0aXZlIG9yIHBvc2l0aXZlIGVkZ2UuCj4gPiA+ICsgICAgICAgICAgICAq Lwo+ID4gPiArICAgICAgICAgICBjbGNkX3BhbmVsLT50aW0yIHw9IFRJTTJfSVBDOwo+ID4gPiAr Cj4gPiA+ICsgICBpZiAodGltaW5nLmZsYWdzICYgRElTUExBWV9GTEFHU19IU1lOQ19MT1cpCj4g PiA+ICsgICAgICAgICAgIGNsY2RfcGFuZWwtPnRpbTIgfD0gVElNMl9JSFM7Cj4gPiA+ICsKPiA+ ID4gKyAgIGlmICh0aW1pbmcuZmxhZ3MgJiBESVNQTEFZX0ZMQUdTX1ZTWU5DX0xPVykKPiA+ID4g KyAgICAgICAgICAgY2xjZF9wYW5lbC0+dGltMiB8PSBUSU0yX0lWUzsKPiA+ID4gKwo+ID4gPiAr ICAgaWYgKHRpbWluZy5mbGFncyAmIERJU1BMQVlfRkxBR1NfREVfTE9XKQo+ID4gPiArICAgICAg ICAgICBjbGNkX3BhbmVsLT50aW0yIHw9IFRJTTJfSU9FOwo+ID4gPiArCj4gPiA+ICsgICByZXR1 cm4gMDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGludCBjbGNkZmJfc25wcmludGZf bW9kZShjaGFyICpidWYsIGludCBzaXplLCBzdHJ1Y3QgZmJfdmlkZW9tb2RlICptb2RlKQo+ID4g PiArewo+ID4gPiArICAgcmV0dXJuIHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiV1eCV1QCV1IiwgbW9k ZS0+eHJlcywgbW9kZS0+eXJlcywKPiA+ID4gKyAgICAgICAgICAgICAgICAgICBtb2RlLT5yZWZy ZXNoKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGludCBjbGNkZmJfb2ZfZ2V0X2Jh Y2tsaWdodChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgY2xjZF9wYW5lbCAqY2xjZF9wYW5lbCkKPiA+ID4gK3sKPiA+ID4gKyAg IHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiYWNrbGlnaHQ7Cj4gPiA+ICsKPiA+ID4gKyAgIC8q IExvb2sgdXAgdGhlIG9wdGlvbmFsIGJhY2tsaWdodCBkZXZpY2UgKi8KPiA+ID4gKyAgIGJhY2ts aWdodCA9IGRldm1fb2ZfZmluZF9iYWNrbGlnaHQoZGV2KTsKPiA+ID4gKyAgIGlmIChJU19FUlIo YmFja2xpZ2h0KSkKPiA+ID4gKyAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoYmFja2xpZ2h0KTsK PiA+ID4gKwo+ID4gPiArICAgY2xjZF9wYW5lbC0+YmFja2xpZ2h0ID0gYmFja2xpZ2h0Owo+ID4g PiArICAgcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgY2xjZGZi X29mX2dldF9tb2RlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpwYW5l bCwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY2xjZF9wYW5lbCAqY2xj ZF9wYW5lbCkKPiA+ID4gK3sKPiA+ID4gKyAgIGludCBlcnI7Cj4gPiA+ICsgICBzdHJ1Y3QgZmJf dmlkZW9tb2RlICptb2RlOwo+ID4gPiArICAgY2hhciAqbmFtZTsKPiA+ID4gKyAgIGludCBsZW47 Cj4gPiA+ICsKPiA+ID4gKyAgIC8qIE9ubHkgZGlyZWN0bHkgY29ubmVjdGVkIERQSSBwYW5lbHMg c3VwcG9ydGVkIGZvciBub3cgKi8KPiA+ID4gKyAgIGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJs ZShwYW5lbCwgInBhbmVsLWRwaSIpKQo+ID4gPiArICAgICAgICAgICBlcnIgPSBjbGNkZmJfb2Zf Z2V0X2RwaV9wYW5lbF9tb2RlKHBhbmVsLCBjbGNkX3BhbmVsKTsKPiA+ID4gKyAgIGVsc2UKPiA+ ID4gKyAgICAgICAgICAgZXJyID0gLUVOT0VOVDsKPiA+ID4gKyAgIGlmIChlcnIpCj4gPiA+ICsg ICAgICAgICAgIHJldHVybiBlcnI7Cj4gPiA+ICsgICBtb2RlID0gJmNsY2RfcGFuZWwtPm1vZGU7 Cj4gPiA+ICsKPiA+ID4gKyAgIGxlbiA9IGNsY2RmYl9zbnByaW50Zl9tb2RlKE5VTEwsIDAsIG1v ZGUpOwo+ID4gPiArICAgbmFtZSA9IGRldm1fa3phbGxvYyhkZXYsIGxlbiArIDEsIEdGUF9LRVJO RUwpOwo+ID4gPiArICAgaWYgKCFuYW1lKQo+ID4gPiArICAgICAgICAgICByZXR1cm4gLUVOT01F TTsKPiA+ID4gKwo+ID4gPiArICAgY2xjZGZiX3NucHJpbnRmX21vZGUobmFtZSwgbGVuICsgMSwg bW9kZSk7Cj4gPiA+ICsgICBtb2RlLT5uYW1lID0gbmFtZTsKPiA+ID4gKwo+ID4gPiArICAgcmV0 dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgY2xjZGZiX29mX2luaXRf dGZ0X3BhbmVsKHN0cnVjdCBjbGNkX2ZiICpmYiwgdTMyIHIwLCB1MzIgZzAsIHUzMiBiMCkKPiA+ ID4gK3sKPiA+ID4gKyAgIHN0YXRpYyBzdHJ1Y3Qgewo+ID4gPiArICAgICAgICAgICB1bnNpZ25l ZCBpbnQgcGFydDsKPiA+ID4gKyAgICAgICAgICAgdTMyIHIwLCBnMCwgYjA7Cj4gPiA+ICsgICAg ICAgICAgIHUzMiBjYXBzOwo+ID4gPiArICAgfSBwYW5lbHNbXSA9IHsKPiA+ID4gKyAgICAgICAg ICAgeyAweDExMCwgMSwgIDcsIDEzLCBDTENEX0NBUF81NTUxIH0sCj4gPiA+ICsgICAgICAgICAg IHsgMHgxMTAsIDAsICA4LCAxNiwgQ0xDRF9DQVBfODg4IH0sCj4gPiA+ICsgICAgICAgICAgIHsg MHgxMTAsIDE2LCA4LCAwLCAgQ0xDRF9DQVBfODg4IH0sCj4gPiA+ICsgICAgICAgICAgIHsgMHgx MTEsIDQsIDE0LCAyMCwgQ0xDRF9DQVBfNDQ0IH0sCj4gPiA+ICsgICAgICAgICAgIHsgMHgxMTEs IDMsIDExLCAxOSwgQ0xDRF9DQVBfNDQ0IHwgQ0xDRF9DQVBfNTU1MSB9LAo+ID4gPiArICAgICAg ICAgICB7IDB4MTExLCAzLCAxMCwgMTksIENMQ0RfQ0FQXzQ0NCB8IENMQ0RfQ0FQXzU1NTEgfAo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMQ0RfQ0FQXzU2NSB9LAo+ID4g PiArICAgICAgICAgICB7IDB4MTExLCAwLCAgOCwgMTYsIENMQ0RfQ0FQXzQ0NCB8IENMQ0RfQ0FQ XzU1NTEgfAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMQ0RfQ0FQXzU2 NSB8IENMQ0RfQ0FQXzg4OCB9LAo+ID4gPiArICAgfTsKPiA+ID4gKyAgIGludCBpOwo+ID4gPiAr Cj4gPiA+ICsgICAvKiBCeXBhc3MgcGl4ZWwgY2xvY2sgZGl2aWRlciAqLwo+ID4gPiArICAgZmIt PnBhbmVsLT50aW0yIHw9IFRJTTJfQkNEOwo+ID4gPiArCj4gPiA+ICsgICAvKiBURlQgZGlzcGxh eSwgdmVydC4gY29tcC4gaW50ZXJydXB0IGF0IHRoZSBzdGFydCBvZiB0aGUgYmFjayBwb3JjaCAq Lwo+ID4gPiArICAgZmItPnBhbmVsLT5jbnRsIHw9IENOVExfTENEVEZUIHwgQ05UTF9MQ0RWQ09N UCgxKTsKPiA+ID4gKwo+ID4gPiArICAgZmItPnBhbmVsLT5jYXBzID0gMDsKPiA+ID4gKwo+ID4g PiArICAgLyogTWF0Y2ggdGhlIHNldHVwIHdpdGgga25vd24gdmFyaWFudHMgKi8KPiA+ID4gKyAg IGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHBhbmVscykgJiYgIWZiLT5wYW5lbC0+Y2Fwczsg aSsrKSB7Cj4gPiA+ICsgICAgICAgICAgIGlmIChhbWJhX3BhcnQoZmItPmRldikgIT0gcGFuZWxz W2ldLnBhcnQpCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiA+ICsgICAg ICAgICAgIGlmIChnMCAhPSBwYW5lbHNbaV0uZzApCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg Y29udGludWU7Cj4gPiA+ICsgICAgICAgICAgIGlmIChyMCA9PSBwYW5lbHNbaV0ucjAgJiYgYjAg PT0gcGFuZWxzW2ldLmIwKQo+ID4gPiArICAgICAgICAgICAgICAgICAgIGZiLT5wYW5lbC0+Y2Fw cyA9IHBhbmVsc1tpXS5jYXBzOwo+ID4gPiArICAgfQo+ID4gPiArCj4gPiA+ICsgICAvKgo+ID4g PiArICAgICogSWYgd2UgYWN0dWFsbHkgcGh5c2ljYWxseSBjb25uZWN0ZWQgdGhlIFIgbGluZXMg dG8gQiBhbmQKPiA+ID4gKyAgICAqIHZpY2UgdmVyc2EKPiA+ID4gKyAgICAqLwo+ID4gPiArICAg aWYgKHIwICE9IDAgJiYgYjAgPT0gMCkKPiA+ID4gKyAgICAgICAgICAgZmItPnBhbmVsLT5iZ3Jf Y29ubmVjdGlvbiA9IHRydWU7Cj4gPiA+ICsKPiA+ID4gKyAgIHJldHVybiBmYi0+cGFuZWwtPmNh cHMgPyAwIDogLUVJTlZBTDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGludCBjbGNk ZmJfb2ZfaW5pdF9kaXNwbGF5KHN0cnVjdCBjbGNkX2ZiICpmYikKPiA+ID4gK3sKPiA+ID4gKyAg IHN0cnVjdCBkZXZpY2Vfbm9kZSAqZW5kcG9pbnQsICpwYW5lbDsKPiA+ID4gKyAgIGludCBlcnI7 Cj4gPiA+ICsgICB1bnNpZ25lZCBpbnQgYnBwOwo+ID4gPiArICAgdTMyIG1heF9iYW5kd2lkdGg7 Cj4gPiA+ICsgICB1MzIgdGZ0X3IwYjBnMFszXTsKPiA+ID4gKwo+ID4gPiArICAgZmItPnBhbmVs ID0gZGV2bV9remFsbG9jKCZmYi0+ZGV2LT5kZXYsIHNpemVvZigqZmItPnBhbmVsKSwgR0ZQX0tF Uk5FTCk7Cj4gPiA+ICsgICBpZiAoIWZiLT5wYW5lbCkKPiA+ID4gKyAgICAgICAgICAgcmV0dXJu IC1FTk9NRU07Cj4gPiA+ICsKPiA+ID4gKyAgIC8qCj4gPiA+ICsgICAgKiBGZXRjaCB0aGUgcGFu ZWwgZW5kcG9pbnQuCj4gPiA+ICsgICAgKi8KPiA+ID4gKyAgIGVuZHBvaW50ID0gb2ZfZ3JhcGhf Z2V0X25leHRfZW5kcG9pbnQoZmItPmRldi0+ZGV2Lm9mX25vZGUsIE5VTEwpOwo+ID4gPiArICAg aWYgKCFlbmRwb2ludCkKPiA+ID4gKyAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4gPiA+ICsK PiA+ID4gKyAgIHBhbmVsID0gb2ZfZ3JhcGhfZ2V0X3JlbW90ZV9wb3J0X3BhcmVudChlbmRwb2lu dCk7Cj4gPiA+ICsgICBpZiAoIXBhbmVsKQo+ID4gPiArICAgICAgICAgICByZXR1cm4gLUVOT0RF VjsKPiA+ID4gKwo+ID4gPiArICAgZXJyID0gY2xjZGZiX29mX2dldF9iYWNrbGlnaHQoJmZiLT5k ZXYtPmRldiwgZmItPnBhbmVsKTsKPiA+ID4gKyAgIGlmIChlcnIpCj4gPiA+ICsgICAgICAgICAg IHJldHVybiBlcnI7Cj4gPiA+ICsKPiA+ID4gKyAgIGVyciA9IGNsY2RmYl9vZl9nZXRfbW9kZSgm ZmItPmRldi0+ZGV2LCBwYW5lbCwgZmItPnBhbmVsKTsKPiA+ID4gKyAgIGlmIChlcnIpCj4gPiA+ ICsgICAgICAgICAgIHJldHVybiBlcnI7Cj4gPiA+ICsKPiA+ID4gKyAgIGVyciA9IG9mX3Byb3Bl cnR5X3JlYWRfdTMyKGZiLT5kZXYtPmRldi5vZl9ub2RlLCAibWF4LW1lbW9yeS1iYW5kd2lkdGgi LAo+ID4gPiArICAgICAgICAgICAgICAgICAgICZtYXhfYmFuZHdpZHRoKTsKPiA+ID4gKyAgIGlm ICghZXJyKSB7Cj4gPiA+ICsgICAgICAgICAgIC8qCj4gPiA+ICsgICAgICAgICAgICAqIG1heF9i YW5kd2lkdGggaXMgaW4gYnl0ZXMgcGVyIHNlY29uZCBhbmQgcGl4Y2xvY2sgaW4KPiA+ID4gKyAg ICAgICAgICAgICogcGljby1zZWNvbmRzLCBzbyB0aGUgbWF4aW11bSBhbGxvd2VkIGJpdHMgcGVy IHBpeGVsIGlzCj4gPiA+ICsgICAgICAgICAgICAqICAgOCAqIG1heF9iYW5kd2lkdGggLyAoUElD T1MyS0haKHBpeGNsb2NrKSAqIDEwMDApCj4gPiA+ICsgICAgICAgICAgICAqIFJlYXJyYW5nZSB0 aGlzIGNhbGN1bGF0aW9uIHRvIGF2b2lkIG92ZXJmbG93IGFuZCB0aGVuIGVuc3VyZQo+ID4gPiAr ICAgICAgICAgICAgKiByZXN1bHQgaXMgYSB2YWxpZCBmb3JtYXQuCj4gPiA+ICsgICAgICAgICAg ICAqLwo+ID4gPiArICAgICAgICAgICBicHAgPSBtYXhfYmFuZHdpZHRoIC8gKDEwMDAgLyA4KQo+ ID4gPiArICAgICAgICAgICAgICAgICAgIC8gUElDT1MyS0haKGZiLT5wYW5lbC0+bW9kZS5waXhj bG9jayk7Cj4gPiA+ICsgICAgICAgICAgIGJwcCA9IHJvdW5kZG93bl9wb3dfb2ZfdHdvKGJwcCk7 Cj4gPiA+ICsgICAgICAgICAgIGlmIChicHAgPiAzMikKPiA+ID4gKyAgICAgICAgICAgICAgICAg ICBicHAgPSAzMjsKPiA+ID4gKyAgIH0gZWxzZQo+ID4gPiArICAgICAgICAgICBicHAgPSAzMjsK PiA+ID4gKyAgIGZiLT5wYW5lbC0+YnBwID0gYnBwOwo+ID4gPiArCj4gPiA+ICsjaWZkZWYgQ09O RklHX0NQVV9CSUdfRU5ESUFOCj4gPiA+ICsgICBmYi0+cGFuZWwtPmNudGwgfD0gQ05UTF9CRUJP Owo+ID4gPiArI2VuZGlmCj4gPiA+ICsgICBmYi0+cGFuZWwtPndpZHRoID0gLTE7Cj4gPiA+ICsg ICBmYi0+cGFuZWwtPmhlaWdodCA9IC0xOwo+ID4gPiArCj4gPiA+ICsgICBpZiAob2ZfcHJvcGVy dHlfcmVhZF91MzJfYXJyYXkoZW5kcG9pbnQsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgImFy bSxwbDExeCx0ZnQtcjBnMGIwLXBhZHMiLAo+ID4gPiArICAgICAgICAgICAgICAgICAgIHRmdF9y MGIwZzAsIEFSUkFZX1NJWkUodGZ0X3IwYjBnMCkpICE9IDApCj4gPiA+ICsgICAgICAgICAgIHJl dHVybiAtRU5PRU5UOwo+ID4gPiArCj4gPiA+ICsgICByZXR1cm4gY2xjZGZiX29mX2luaXRfdGZ0 X3BhbmVsKGZiLCB0ZnRfcjBiMGcwWzBdLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0ZnRfcjBiMGcwWzFdLCAgdGZ0X3IwYjBnMFsyXSk7Cj4gPiA+ICt9Cj4gPiA+ ICsKPiA+ID4gK3N0YXRpYyBpbnQgY2xjZGZiX29mX3ZyYW1fc2V0dXAoc3RydWN0IGNsY2RfZmIg KmZiKQo+ID4gPiArewo+ID4gPiArICAgaW50IGVycjsKPiA+ID4gKyAgIHN0cnVjdCBkZXZpY2Vf bm9kZSAqbWVtb3J5Owo+ID4gPiArICAgdTY0IHNpemU7Cj4gPiA+ICsKPiA+ID4gKyAgIGVyciA9 IGNsY2RmYl9vZl9pbml0X2Rpc3BsYXkoZmIpOwo+ID4gPiArICAgaWYgKGVycikKPiA+ID4gKyAg ICAgICAgICAgcmV0dXJuIGVycjsKPiA+ID4gKwo+ID4gPiArICAgbWVtb3J5ID0gb2ZfcGFyc2Vf cGhhbmRsZShmYi0+ZGV2LT5kZXYub2Zfbm9kZSwgIm1lbW9yeS1yZWdpb24iLCAwKTsKPiA+ID4g KyAgIGlmICghbWVtb3J5KQo+ID4gPiArICAgICAgICAgICByZXR1cm4gLUVOT0RFVjsKPiA+ID4g Kwo+ID4gPiArICAgZmItPmZiLnNjcmVlbl9iYXNlID0gb2ZfaW9tYXAobWVtb3J5LCAwKTsKPiA+ ID4gKyAgIGlmICghZmItPmZiLnNjcmVlbl9iYXNlKQo+ID4gPiArICAgICAgICAgICByZXR1cm4g LUVOT01FTTsKPiA+ID4gKwo+ID4gPiArICAgZmItPmZiLmZpeC5zbWVtX3N0YXJ0ID0gb2ZfdHJh bnNsYXRlX2FkZHJlc3MobWVtb3J5LAo+ID4gPiArICAgICAgICAgICAgICAgICAgIG9mX2dldF9h ZGRyZXNzKG1lbW9yeSwgMCwgJnNpemUsIE5VTEwpKTsKPiA+ID4gKyAgIGZiLT5mYi5maXguc21l bV9sZW4gPSBzaXplOwo+ID4gPiArCj4gPiA+ICsgICByZXR1cm4gMDsKPiA+ID4gK30KPiA+ID4g Kwo+ID4gPiArc3RhdGljIGludCBjbGNkZmJfb2ZfdnJhbV9tbWFwKHN0cnVjdCBjbGNkX2ZiICpm Yiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gPiA+ICt7Cj4gPiA+ICsgICB1bnNpZ25l ZCBsb25nIG9mZiwgdXNlcl9zaXplLCBrZXJuZWxfc2l6ZTsKPiA+ID4gKwo+ID4gPiArCj4gPiA+ ICsgICBvZmYgPSB2bWEtPnZtX3Bnb2ZmIDw8IFBBR0VfU0hJRlQ7Cj4gPiA+ICsgICB1c2VyX3Np emUgPSB2bWEtPnZtX2VuZCAtIHZtYS0+dm1fc3RhcnQ7Cj4gPiA+ICsgICBrZXJuZWxfc2l6ZSA9 IGZiLT5mYi5maXguc21lbV9sZW47Cj4gPiA+ICsKPiA+ID4gKyAgIGlmIChvZmYgPj0ga2VybmVs X3NpemUgfHwgdXNlcl9zaXplID4gKGtlcm5lbF9zaXplIC0gb2ZmKSkKPiA+ID4gKyAgICAgICAg ICAgcmV0dXJuIC1FTlhJTzsKPiA+ID4gKwo+ID4gPiArICAgcmV0dXJuIHJlbWFwX3Bmbl9yYW5n ZSh2bWEsIHZtYS0+dm1fc3RhcnQsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgX19waHlzX3Rv X3BmbihmYi0+ZmIuZml4LnNtZW1fc3RhcnQpICsgdm1hLT52bV9wZ29mZiwKPiA+ID4gKyAgICAg ICAgICAgICAgICAgICB1c2VyX3NpemUsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgcGdwcm90 X3dyaXRlY29tYmluZSh2bWEtPnZtX3BhZ2VfcHJvdCkpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ ICtzdGF0aWMgdm9pZCBjbGNkZmJfb2ZfdnJhbV9yZW1vdmUoc3RydWN0IGNsY2RfZmIgKmZiKQo+ ID4gPiArewo+ID4gPiArICAgaW91bm1hcChmYi0+ZmIuc2NyZWVuX2Jhc2UpOwo+ID4gPiArfQo+ ID4gPiArCj4gPiA+ICtzdGF0aWMgaW50IGNsY2RmYl9vZl9kbWFfc2V0dXAoc3RydWN0IGNsY2Rf ZmIgKmZiKQo+ID4gPiArewo+ID4gPiArICAgdW5zaWduZWQgbG9uZyBmcmFtZXNpemU7Cj4gPiA+ ICsgICBkbWFfYWRkcl90IGRtYTsKPiA+ID4gKyAgIGludCBlcnI7Cj4gPiA+ICsKPiA+ID4gKyAg IGVyciA9IGNsY2RmYl9vZl9pbml0X2Rpc3BsYXkoZmIpOwo+ID4gPiArICAgaWYgKGVycikKPiA+ ID4gKyAgICAgICAgICAgcmV0dXJuIGVycjsKPiA+ID4gKwo+ID4gPiArICAgZnJhbWVzaXplID0g UEFHRV9BTElHTihmYi0+cGFuZWwtPm1vZGUueHJlcyAqIGZiLT5wYW5lbC0+bW9kZS55cmVzICoK PiA+ID4gKyAgICAgICAgICAgICAgICAgICBmYi0+cGFuZWwtPmJwcCAvIDgpOwo+ID4gPiArICAg ZmItPmZiLnNjcmVlbl9iYXNlID0gZG1hX2FsbG9jX2NvaGVyZW50KCZmYi0+ZGV2LT5kZXYsIGZy YW1lc2l6ZSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAmZG1hLCBHRlBfS0VSTkVMKTsKPiA+ ID4gKyAgIGlmICghZmItPmZiLnNjcmVlbl9iYXNlKQo+ID4gPiArICAgICAgICAgICByZXR1cm4g LUVOT01FTTsKPiA+ID4gKwo+ID4gPiArICAgZmItPmZiLmZpeC5zbWVtX3N0YXJ0ID0gZG1hOwo+ ID4gPiArICAgZmItPmZiLmZpeC5zbWVtX2xlbiA9IGZyYW1lc2l6ZTsKPiA+ID4gKwo+ID4gPiAr ICAgcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgY2xjZGZiX29m X2RtYV9tbWFwKHN0cnVjdCBjbGNkX2ZiICpmYiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEp Cj4gPiA+ICt7Cj4gPiA+ICsgICByZXR1cm4gZG1hX21tYXBfd2MoJmZiLT5kZXYtPmRldiwgdm1h LCBmYi0+ZmIuc2NyZWVuX2Jhc2UsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgZmItPmZi LmZpeC5zbWVtX3N0YXJ0LCBmYi0+ZmIuZml4LnNtZW1fbGVuKTsKPiA+ID4gK30KPiA+ID4gKwo+ ID4gPiArc3RhdGljIHZvaWQgY2xjZGZiX29mX2RtYV9yZW1vdmUoc3RydWN0IGNsY2RfZmIgKmZi KQo+ID4gPiArewo+ID4gPiArICAgZG1hX2ZyZWVfY29oZXJlbnQoJmZiLT5kZXYtPmRldiwgZmIt PmZiLmZpeC5zbWVtX2xlbiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICBmYi0+ZmIuc2NyZWVu X2Jhc2UsIGZiLT5mYi5maXguc21lbV9zdGFydCk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0 YXRpYyBzdHJ1Y3QgY2xjZF9ib2FyZCAqY2xjZGZiX29mX2dldF9ib2FyZChzdHJ1Y3QgYW1iYV9k ZXZpY2UgKmRldikKPiA+ID4gK3sKPiA+ID4gKyAgIHN0cnVjdCBjbGNkX2JvYXJkICpib2FyZCA9 IGRldm1fa3phbGxvYygmZGV2LT5kZXYsIHNpemVvZigqYm9hcmQpLAo+ID4gPiArICAgICAgICAg ICAgICAgICAgIEdGUF9LRVJORUwpOwo+ID4gPiArICAgc3RydWN0IGRldmljZV9ub2RlICpub2Rl ID0gZGV2LT5kZXYub2Zfbm9kZTsKPiA+ID4gKwo+ID4gPiArICAgaWYgKCFib2FyZCkKPiA+ID4g KyAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gPiA+ICsKPiA+ID4gKyAgIGJvYXJkLT5uYW1lID0g b2Zfbm9kZV9mdWxsX25hbWUobm9kZSk7Cj4gPiA+ICsgICBib2FyZC0+Y2FwcyA9IENMQ0RfQ0FQ X0FMTDsKPiA+ID4gKyAgIGJvYXJkLT5jaGVjayA9IGNsY2RmYl9jaGVjazsKPiA+ID4gKyAgIGJv YXJkLT5kZWNvZGUgPSBjbGNkZmJfZGVjb2RlOwo+ID4gPiArICAgaWYgKG9mX2ZpbmRfcHJvcGVy dHkobm9kZSwgIm1lbW9yeS1yZWdpb24iLCBOVUxMKSkgewo+ID4gPiArICAgICAgICAgICBib2Fy ZC0+c2V0dXAgPSBjbGNkZmJfb2ZfdnJhbV9zZXR1cDsKPiA+ID4gKyAgICAgICAgICAgYm9hcmQt Pm1tYXAgPSBjbGNkZmJfb2ZfdnJhbV9tbWFwOwo+ID4gPiArICAgICAgICAgICBib2FyZC0+cmVt b3ZlID0gY2xjZGZiX29mX3ZyYW1fcmVtb3ZlOwo+ID4gPiArICAgfSBlbHNlIHsKPiA+ID4gKyAg ICAgICAgICAgYm9hcmQtPnNldHVwID0gY2xjZGZiX29mX2RtYV9zZXR1cDsKPiA+ID4gKyAgICAg ICAgICAgYm9hcmQtPm1tYXAgPSBjbGNkZmJfb2ZfZG1hX21tYXA7Cj4gPiA+ICsgICAgICAgICAg IGJvYXJkLT5yZW1vdmUgPSBjbGNkZmJfb2ZfZG1hX3JlbW92ZTsKPiA+ID4gKyAgIH0KPiA+ID4g Kwo+ID4gPiArICAgcmV0dXJuIGJvYXJkOwo+ID4gPiArfQo+ID4gPiArI2Vsc2UKPiA+ID4gK3N0 YXRpYyBzdHJ1Y3QgY2xjZF9ib2FyZCAqY2xjZGZiX29mX2dldF9ib2FyZChzdHJ1Y3QgYW1iYV9k ZXZpY2UgKmRldikKPiA+ID4gK3sKPiA+ID4gKyAgIHJldHVybiBOVUxMOwo+ID4gPiArfQo+ID4g PiArI2VuZGlmCj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgY2xjZGZiX3Byb2JlKHN0cnVjdCBh bWJhX2RldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgYW1iYV9pZCAqaWQpCj4gPiA+ICt7Cj4gPiA+ ICsgICBzdHJ1Y3QgY2xjZF9ib2FyZCAqYm9hcmQgPSBkZXZfZ2V0X3BsYXRkYXRhKCZkZXYtPmRl dik7Cj4gPiA+ICsgICBzdHJ1Y3QgY2xjZF9mYiAqZmI7Cj4gPiA+ICsgICBpbnQgcmV0Owo+ID4g PiArCj4gPiA+ICsgICBpZiAoIWJvYXJkKQo+ID4gPiArICAgICAgICAgICBib2FyZCA9IGNsY2Rm Yl9vZl9nZXRfYm9hcmQoZGV2KTsKPiA+ID4gKwo+ID4gPiArICAgaWYgKCFib2FyZCkKPiA+ID4g KyAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ICsKPiA+ID4gKyAgIHJldCA9IGRtYV9z ZXRfbWFza19hbmRfY29oZXJlbnQoJmRldi0+ZGV2LCBETUFfQklUX01BU0soMzIpKTsKPiA+ID4g KyAgIGlmIChyZXQpCj4gPiA+ICsgICAgICAgICAgIGdvdG8gb3V0Owo+ID4gPiArCj4gPiA+ICsg ICByZXQgPSBhbWJhX3JlcXVlc3RfcmVnaW9ucyhkZXYsIE5VTEwpOwo+ID4gPiArICAgaWYgKHJl dCkgewo+ID4gPiArICAgICAgICAgICBwcmludGsoS0VSTl9FUlIgIkNMQ0Q6IHVuYWJsZSB0byBy ZXNlcnZlIHJlZ3MgcmVnaW9uXG4iKTsKPiA+ID4gKyAgICAgICAgICAgZ290byBvdXQ7Cj4gPiA+ ICsgICB9Cj4gPiA+ICsKPiA+ID4gKyAgIGZiID0ga3phbGxvYyhzaXplb2YoKmZiKSwgR0ZQX0tF Uk5FTCk7Cj4gPiA+ICsgICBpZiAoIWZiKSB7Cj4gPiA+ICsgICAgICAgICAgIHJldCA9IC1FTk9N RU07Cj4gPiA+ICsgICAgICAgICAgIGdvdG8gZnJlZV9yZWdpb247Cj4gPiA+ICsgICB9Cj4gPiA+ ICsKPiA+ID4gKyAgIGZiLT5kZXYgPSBkZXY7Cj4gPiA+ICsgICBmYi0+Ym9hcmQgPSBib2FyZDsK PiA+ID4gKwo+ID4gPiArICAgZGV2X2luZm8oJmZiLT5kZXYtPmRldiwgIlBMJTAzeCBkZXNpZ25l ciAlMDJ4IHJldiV1IGF0IDB4JTA4bGx4XG4iLAo+ID4gPiArICAgICAgICAgICBhbWJhX3BhcnQo ZGV2KSwgYW1iYV9tYW5mKGRldiksIGFtYmFfcmV2KGRldiksCj4gPiA+ICsgICAgICAgICAgICh1 bnNpZ25lZCBsb25nIGxvbmcpZGV2LT5yZXMuc3RhcnQpOwo+ID4gPiArCj4gPiA+ICsgICByZXQg PSBmYi0+Ym9hcmQtPnNldHVwKGZiKTsKPiA+ID4gKyAgIGlmIChyZXQpCj4gPiA+ICsgICAgICAg ICAgIGdvdG8gZnJlZV9mYjsKPiA+ID4gKwo+ID4gPiArICAgcmV0ID0gY2xjZGZiX3JlZ2lzdGVy KGZiKTsKPiA+ID4gKyAgIGlmIChyZXQgPT0gMCkgewo+ID4gPiArICAgICAgICAgICBhbWJhX3Nl dF9kcnZkYXRhKGRldiwgZmIpOwo+ID4gPiArICAgICAgICAgICBnb3RvIG91dDsKPiA+ID4gKyAg IH0KPiA+ID4gKwo+ID4gPiArICAgZmItPmJvYXJkLT5yZW1vdmUoZmIpOwo+ID4gPiArIGZyZWVf ZmI6Cj4gPiA+ICsgICBrZnJlZShmYik7Cj4gPiA+ICsgZnJlZV9yZWdpb246Cj4gPiA+ICsgICBh bWJhX3JlbGVhc2VfcmVnaW9ucyhkZXYpOwo+ID4gPiArIG91dDoKPiA+ID4gKyAgIHJldHVybiBy ZXQ7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgY2xjZGZiX3JlbW92ZShzdHJ1 Y3QgYW1iYV9kZXZpY2UgKmRldikKPiA+ID4gK3sKPiA+ID4gKyAgIHN0cnVjdCBjbGNkX2ZiICpm YiA9IGFtYmFfZ2V0X2RydmRhdGEoZGV2KTsKPiA+ID4gKwo+ID4gPiArICAgY2xjZGZiX2Rpc2Fi bGUoZmIpOwo+ID4gPiArICAgdW5yZWdpc3Rlcl9mcmFtZWJ1ZmZlcigmZmItPmZiKTsKPiA+ID4g KyAgIGlmIChmYi0+ZmIuY21hcC5sZW4pCj4gPiA+ICsgICAgICAgICAgIGZiX2RlYWxsb2NfY21h cCgmZmItPmZiLmNtYXApOwo+ID4gPiArICAgaW91bm1hcChmYi0+cmVncyk7Cj4gPiA+ICsgICBj bGtfdW5wcmVwYXJlKGZiLT5jbGspOwo+ID4gPiArICAgY2xrX3B1dChmYi0+Y2xrKTsKPiA+ID4g Kwo+ID4gPiArICAgZmItPmJvYXJkLT5yZW1vdmUoZmIpOwo+ID4gPiArCj4gPiA+ICsgICBrZnJl ZShmYik7Cj4gPiA+ICsKPiA+ID4gKyAgIGFtYmFfcmVsZWFzZV9yZWdpb25zKGRldik7Cj4gPiA+ ICsKPiA+ID4gKyAgIHJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGFtYmFfaWQgY2xjZGZiX2lkX3RhYmxlW10gPSB7Cj4gPiA+ICsgICB7Cj4gPiA+ ICsgICAgICAgICAgIC5pZCAgICAgPSAweDAwMDQxMTEwLAo+ID4gPiArICAgICAgICAgICAubWFz ayAgID0gMHgwMDBmZmZmZSwKPiA+ID4gKyAgIH0sCj4gPiA+ICsgICB7IDAsIDAgfSwKPiA+ID4g K307Cj4gPiA+ICsKPiA+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUoYW1iYSwgY2xjZGZiX2lkX3Rh YmxlKTsKPiA+ID4gKwo+ID4gPiArc3RhdGljIHN0cnVjdCBhbWJhX2RyaXZlciBjbGNkX2RyaXZl ciA9IHsKPiA+ID4gKyAgIC5kcnYgICAgICAgICAgICA9IHsKPiA+ID4gKyAgICAgICAgICAgLm5h bWUgICA9ICJjbGNkLXBsMTF4IiwKPiA+ID4gKyAgIH0sCj4gPiA+ICsgICAucHJvYmUgICAgICAg ICAgPSBjbGNkZmJfcHJvYmUsCj4gPiA+ICsgICAucmVtb3ZlICAgICAgICAgPSBjbGNkZmJfcmVt b3ZlLAo+ID4gPiArICAgLmlkX3RhYmxlICAgICAgID0gY2xjZGZiX2lkX3RhYmxlLAo+ID4gPiAr fTsKPiA+ID4gKwo+ID4gPiArc3RhdGljIGludCBfX2luaXQgYW1iYV9jbGNkZmJfaW5pdCh2b2lk KQo+ID4gPiArewo+ID4gPiArICAgaWYgKGZiX2dldF9vcHRpb25zKCJhbWJhZmIiLCBOVUxMKSkK PiA+ID4gKyAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4gPiA+ICsKPiA+ID4gKyAgIHJldHVy biBhbWJhX2RyaXZlcl9yZWdpc3RlcigmY2xjZF9kcml2ZXIpOwo+ID4gPiArfQo+ID4gPiArCj4g PiA+ICttb2R1bGVfaW5pdChhbWJhX2NsY2RmYl9pbml0KTsKPiA+ID4gKwo+ID4gPiArc3RhdGlj IHZvaWQgX19leGl0IGFtYmFfY2xjZGZiX2V4aXQodm9pZCkKPiA+ID4gK3sKPiA+ID4gKyAgIGFt YmFfZHJpdmVyX3VucmVnaXN0ZXIoJmNsY2RfZHJpdmVyKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4g PiArbW9kdWxlX2V4aXQoYW1iYV9jbGNkZmJfZXhpdCk7Cj4gPiA+ICsKPiA+ID4gK01PRFVMRV9E RVNDUklQVElPTigiQVJNIFByaW1lQ2VsbCBQTDExMCBDTENEIGNvcmUgZHJpdmVyIik7Cj4gPiA+ ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7Cj4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4 L2FtYmEvY2xjZC1yZWdzLmggYi9pbmNsdWRlL2xpbnV4L2FtYmEvY2xjZC1yZWdzLmgKPiA+ID4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi40MjFiMGZhOTBk NmEKPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9pbmNsdWRlL2xpbnV4L2FtYmEvY2xj ZC1yZWdzLmgKPiA+ID4gQEAgLTAsMCArMSw4NyBAQAo+ID4gPiArLyoKPiA+ID4gKyAqIERhdmlk IEEgUnVzbGluZwo+ID4gPiArICoKPiA+ID4gKyAqIENvcHlyaWdodCAoQykgMjAwMSBBUk0gTGlt aXRlZAo+ID4gPiArICoKPiA+ID4gKyAqIFRoaXMgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJt cyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCj4gPiA+ICsgKiBMaWNl bnNlLiAgU2VlIHRoZSBmaWxlIENPUFlJTkcgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMg YXJjaGl2ZQo+ID4gPiArICogZm9yIG1vcmUgZGV0YWlscy4KPiA+ID4gKyAqLwo+ID4gPiArCj4g PiA+ICsjaWZuZGVmIEFNQkFfQ0xDRF9SRUdTX0gKPiA+ID4gKyNkZWZpbmUgQU1CQV9DTENEX1JF R1NfSAo+ID4gPiArCj4gPiA+ICsvKgo+ID4gPiArICogQ0xDRCBDb250cm9sbGVyIEludGVybmFs IFJlZ2lzdGVyIGFkZHJlc3Nlcwo+ID4gPiArICovCj4gPiA+ICsjZGVmaW5lIENMQ0RfVElNMCAg ICAgICAgICAweDAwMDAwMDAwCj4gPiA+ICsjZGVmaW5lIENMQ0RfVElNMSAgICAgICAgICAweDAw MDAwMDA0Cj4gPiA+ICsjZGVmaW5lIENMQ0RfVElNMiAgICAgICAgICAweDAwMDAwMDA4Cj4gPiA+ ICsjZGVmaW5lIENMQ0RfVElNMyAgICAgICAgICAweDAwMDAwMDBjCj4gPiA+ICsjZGVmaW5lIENM Q0RfVUJBUyAgICAgICAgICAweDAwMDAwMDEwCj4gPiA+ICsjZGVmaW5lIENMQ0RfTEJBUyAgICAg ICAgICAweDAwMDAwMDE0Cj4gPiA+ICsKPiA+ID4gKyNkZWZpbmUgQ0xDRF9QTDExMF9JRU5CICAg ICAgICAgICAgMHgwMDAwMDAxOAo+ID4gPiArI2RlZmluZSBDTENEX1BMMTEwX0NOVEwgICAgICAg ICAgICAweDAwMDAwMDFjCj4gPiA+ICsjZGVmaW5lIENMQ0RfUEwxMTBfU1RBVCAgICAgICAgICAg IDB4MDAwMDAwMjAKPiA+ID4gKyNkZWZpbmUgQ0xDRF9QTDExMF9JTlRSICAgIDB4MDAwMDAwMjQK PiA+ID4gKyNkZWZpbmUgQ0xDRF9QTDExMF9VQ1VSICAgICAgICAgICAgMHgwMDAwMDAyOAo+ID4g PiArI2RlZmluZSBDTENEX1BMMTEwX0xDVVIgICAgICAgICAgICAweDAwMDAwMDJDCj4gPiA+ICsK PiA+ID4gKyNkZWZpbmUgQ0xDRF9QTDExMV9DTlRMICAgICAgICAgICAgMHgwMDAwMDAxOAo+ID4g PiArI2RlZmluZSBDTENEX1BMMTExX0lFTkIgICAgICAgICAgICAweDAwMDAwMDFjCj4gPiA+ICsj ZGVmaW5lIENMQ0RfUEwxMTFfUklTICAgICAgICAgICAgIDB4MDAwMDAwMjAKPiA+ID4gKyNkZWZp bmUgQ0xDRF9QTDExMV9NSVMgICAgICAgICAgICAgMHgwMDAwMDAyNAo+ID4gPiArI2RlZmluZSBD TENEX1BMMTExX0lDUiAgICAgICAgICAgICAweDAwMDAwMDI4Cj4gPiA+ICsjZGVmaW5lIENMQ0Rf UEwxMTFfVUNVUiAgICAgICAgICAgIDB4MDAwMDAwMmMKPiA+ID4gKyNkZWZpbmUgQ0xDRF9QTDEx MV9MQ1VSICAgICAgICAgICAgMHgwMDAwMDAzMAo+ID4gPiArCj4gPiA+ICsjZGVmaW5lIENMQ0Rf UEFMTCAgICAgICAgICAweDAwMDAwMjAwCj4gPiA+ICsjZGVmaW5lIENMQ0RfUEFMRVRURSAgICAg ICAgICAgICAgIDB4MDAwMDAyMDAKPiA+ID4gKwo+ID4gPiArI2RlZmluZSBUSU0yX1BDRF9MT19N QVNLICAgR0VOTUFTSyg0LCAwKQo+ID4gPiArI2RlZmluZSBUSU0yX1BDRF9MT19CSVRTICAgNQo+ ID4gPiArI2RlZmluZSBUSU0yX0NMS1NFTCAgICAgICAgICAgICAgICAoMSA8PCA1KQo+ID4gPiAr I2RlZmluZSBUSU0yX0FDQl9NQVNLICAgICAgICAgICAgICBHRU5NQVNLKDEwLCA2KQo+ID4gPiAr I2RlZmluZSBUSU0yX0lWUyAgICAgICAgICAgKDEgPDwgMTEpCj4gPiA+ICsjZGVmaW5lIFRJTTJf SUhTICAgICAgICAgICAoMSA8PCAxMikKPiA+ID4gKyNkZWZpbmUgVElNMl9JUEMgICAgICAgICAg ICgxIDw8IDEzKQo+ID4gPiArI2RlZmluZSBUSU0yX0lPRSAgICAgICAgICAgKDEgPDwgMTQpCj4g PiA+ICsjZGVmaW5lIFRJTTJfQkNEICAgICAgICAgICAoMSA8PCAyNikKPiA+ID4gKyNkZWZpbmUg VElNMl9QQ0RfSElfTUFTSyAgIEdFTk1BU0soMzEsIDI3KQo+ID4gPiArI2RlZmluZSBUSU0yX1BD RF9ISV9CSVRTICAgNQo+ID4gPiArI2RlZmluZSBUSU0yX1BDRF9ISV9TSElGVCAgMjcKPiA+ID4g Kwo+ID4gPiArI2RlZmluZSBDTlRMX0xDREVOICAgICAgICAgKDEgPDwgMCkKPiA+ID4gKyNkZWZp bmUgQ05UTF9MQ0RCUFAxICAgICAgICAgICAgICAgKDAgPDwgMSkKPiA+ID4gKyNkZWZpbmUgQ05U TF9MQ0RCUFAyICAgICAgICAgICAgICAgKDEgPDwgMSkKPiA+ID4gKyNkZWZpbmUgQ05UTF9MQ0RC UFA0ICAgICAgICAgICAgICAgKDIgPDwgMSkKPiA+ID4gKyNkZWZpbmUgQ05UTF9MQ0RCUFA4ICAg ICAgICAgICAgICAgKDMgPDwgMSkKPiA+ID4gKyNkZWZpbmUgQ05UTF9MQ0RCUFAxNiAgICAgICAg ICAgICAgKDQgPDwgMSkKPiA+ID4gKyNkZWZpbmUgQ05UTF9MQ0RCUFAxNl81NjUgICg2IDw8IDEp Cj4gPiA+ICsjZGVmaW5lIENOVExfTENEQlBQMTZfNDQ0ICAoNyA8PCAxKQo+ID4gPiArI2RlZmlu ZSBDTlRMX0xDREJQUDI0ICAgICAgICAgICAgICAoNSA8PCAxKQo+ID4gPiArI2RlZmluZSBDTlRM X0xDREJXICAgICAgICAgKDEgPDwgNCkKPiA+ID4gKyNkZWZpbmUgQ05UTF9MQ0RURlQgICAgICAg ICAgICAgICAgKDEgPDwgNSkKPiA+ID4gKyNkZWZpbmUgQ05UTF9MQ0RNT05POCAgICAgICAgICAg ICAgKDEgPDwgNikKPiA+ID4gKyNkZWZpbmUgQ05UTF9MQ0REVUFMICAgICAgICAgICAgICAgKDEg PDwgNykKPiA+ID4gKyNkZWZpbmUgQ05UTF9CR1IgICAgICAgICAgICgxIDw8IDgpCj4gPiA+ICsj ZGVmaW5lIENOVExfQkVCTyAgICAgICAgICAoMSA8PCA5KQo+ID4gPiArI2RlZmluZSBDTlRMX0JF UE8gICAgICAgICAgKDEgPDwgMTApCj4gPiA+ICsjZGVmaW5lIENOVExfTENEUFdSICAgICAgICAg ICAgICAgICgxIDw8IDExKQo+ID4gPiArI2RlZmluZSBDTlRMX0xDRFZDT01QKHgpICAgKCh4KSA8 PCAxMikKPiA+ID4gKyNkZWZpbmUgQ05UTF9MRE1BRklGT1RJTUUgICgxIDw8IDE1KQo+ID4gPiAr I2RlZmluZSBDTlRMX1dBVEVSTUFSSyAgICAgICAgICAgICAoMSA8PCAxNikKPiA+ID4gKwo+ID4g PiArLyogU1QgTWljcm9lbGVjdHJvbmljcyB2YXJpYW50IGJpdHMgKi8KPiA+ID4gKyNkZWZpbmUg Q05UTF9TVF8xWEJQUF80NDQgIDB4MAo+ID4gPiArI2RlZmluZSBDTlRMX1NUXzFYQlBQXzU1NTEg KDEgPDwgMTcpCj4gPiA+ICsjZGVmaW5lIENOVExfU1RfMVhCUFBfNTY1ICAoMSA8PCAxOCkKPiA+ ID4gKyNkZWZpbmUgQ05UTF9TVF9DRFdJRF8xMiAgIDB4MAo+ID4gPiArI2RlZmluZSBDTlRMX1NU X0NEV0lEXzE2ICAgKDEgPDwgMTkpCj4gPiA+ICsjZGVmaW5lIENOVExfU1RfQ0RXSURfMTggICAo MSA8PCAyMCkKPiA+ID4gKyNkZWZpbmUgQ05UTF9TVF9DRFdJRF8yNCAgICgoMSA8PCAxOSl8KDEg PDwgMjApKQo+ID4gPiArI2RlZmluZSBDTlRMX1NUX0NFQUVOICAgICAgICAgICAgICAoMSA8PCAy MSkKPiA+ID4gKyNkZWZpbmUgQ05UTF9TVF9MQ0RCUFAyNF9QQUNLRUQgICAgKDYgPDwgMSkKPiA+ ID4gKwo+ID4gPiArI2VuZGlmIC8qIEFNQkFfQ0xDRF9SRUdTX0ggKi8KPiA+ID4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvbGludXgvYW1iYS9jbGNkLmggYi9pbmNsdWRlL2xpbnV4L2FtYmEvY2xjZC5o Cj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uYjZl MGNiZWFmNTMzCj4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4gKysrIGIvaW5jbHVkZS9saW51eC9h bWJhL2NsY2QuaAo+ID4gPiBAQCAtMCwwICsxLDI5MCBAQAo+ID4gPiArLyoKPiA+ID4gKyAqIGxp bnV4L2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9hbWJhX2NsY2QuaCAtLSBJbnRlZ3JhdG9yIExD RCBwYW5lbC4KPiA+ID4gKyAqCj4gPiA+ICsgKiBEYXZpZCBBIFJ1c2xpbmcKPiA+ID4gKyAqCj4g PiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMDEgQVJNIExpbWl0ZWQKPiA+ID4gKyAqCj4gPiA+ICsg KiBUaGlzIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYwo+ID4gPiArICogTGljZW5zZS4gIFNlZSB0aGUgZmlsZSBDT1BZ SU5HIGluIHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0aGlzIGFyY2hpdmUKPiA+ID4gKyAqIGZvciBt b3JlIGRldGFpbHMuCj4gPiA+ICsgKi8KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9mYi5oPgo+ID4g PiArI2luY2x1ZGUgPGxpbnV4L2FtYmEvY2xjZC1yZWdzLmg+Cj4gPiA+ICsKPiA+ID4gK2VudW0g ewo+ID4gPiArICAgLyogaW5kaXZpZHVhbCBmb3JtYXRzICovCj4gPiA+ICsgICBDTENEX0NBUF9S R0I0NDQgICAgICAgICA9ICgxIDw8IDApLAo+ID4gPiArICAgQ0xDRF9DQVBfUkdCNTU1MSAgICAg ICAgPSAoMSA8PCAxKSwKPiA+ID4gKyAgIENMQ0RfQ0FQX1JHQjU2NSAgICAgICAgID0gKDEgPDwg MiksCj4gPiA+ICsgICBDTENEX0NBUF9SR0I4ODggICAgICAgICA9ICgxIDw8IDMpLAo+ID4gPiAr ICAgQ0xDRF9DQVBfQkdSNDQ0ICAgICAgICAgPSAoMSA8PCA0KSwKPiA+ID4gKyAgIENMQ0RfQ0FQ X0JHUjU1NTEgICAgICAgID0gKDEgPDwgNSksCj4gPiA+ICsgICBDTENEX0NBUF9CR1I1NjUgICAg ICAgICA9ICgxIDw8IDYpLAo+ID4gPiArICAgQ0xDRF9DQVBfQkdSODg4ICAgICAgICAgPSAoMSA8 PCA3KSwKPiA+ID4gKwo+ID4gPiArICAgLyogY29ubmVjdGlvbiBsYXlvdXRzICovCj4gPiA+ICsg ICBDTENEX0NBUF80NDQgICAgICAgICAgICA9IENMQ0RfQ0FQX1JHQjQ0NCB8IENMQ0RfQ0FQX0JH UjQ0NCwKPiA+ID4gKyAgIENMQ0RfQ0FQXzU1NTEgICAgICAgICAgID0gQ0xDRF9DQVBfUkdCNTU1 MSB8IENMQ0RfQ0FQX0JHUjU1NTEsCj4gPiA+ICsgICBDTENEX0NBUF81NjUgICAgICAgICAgICA9 IENMQ0RfQ0FQX1JHQjU2NSB8IENMQ0RfQ0FQX0JHUjU2NSwKPiA+ID4gKyAgIENMQ0RfQ0FQXzg4 OCAgICAgICAgICAgID0gQ0xDRF9DQVBfUkdCODg4IHwgQ0xDRF9DQVBfQkdSODg4LAo+ID4gPiAr Cj4gPiA+ICsgICAvKiByZWQvYmx1ZSBvcmRlcmluZyAqLwo+ID4gPiArICAgQ0xDRF9DQVBfUkdC ICAgICAgICAgICAgPSBDTENEX0NBUF9SR0I0NDQgfCBDTENEX0NBUF9SR0I1NTUxIHwKPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xDRF9DQVBfUkdCNTY1IHwgQ0xDRF9DQVBf UkdCODg4LAo+ID4gPiArICAgQ0xDRF9DQVBfQkdSICAgICAgICAgICAgPSBDTENEX0NBUF9CR1I0 NDQgfCBDTENEX0NBUF9CR1I1NTUxIHwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQ0xDRF9DQVBfQkdSNTY1IHwgQ0xDRF9DQVBfQkdSODg4LAo+ID4gPiArCj4gPiA+ICsgICBD TENEX0NBUF9BTEwgICAgICAgICAgICA9IENMQ0RfQ0FQX0JHUiB8IENMQ0RfQ0FQX1JHQiwKPiA+ ID4gK307Cj4gPiA+ICsKPiA+ID4gK3N0cnVjdCBiYWNrbGlnaHRfZGV2aWNlOwo+ID4gPiArCj4g PiA+ICtzdHJ1Y3QgY2xjZF9wYW5lbCB7Cj4gPiA+ICsgICBzdHJ1Y3QgZmJfdmlkZW9tb2RlICAg ICBtb2RlOwo+ID4gPiArICAgc2lnbmVkIHNob3J0ICAgICAgICAgICAgd2lkdGg7ICAvKiB3aWR0 aCBpbiBtbSAqLwo+ID4gPiArICAgc2lnbmVkIHNob3J0ICAgICAgICAgICAgaGVpZ2h0OyAvKiBo ZWlnaHQgaW4gbW0gKi8KPiA+ID4gKyAgIHUzMiAgICAgICAgICAgICAgICAgICAgIHRpbTI7Cj4g PiA+ICsgICB1MzIgICAgICAgICAgICAgICAgICAgICB0aW0zOwo+ID4gPiArICAgdTMyICAgICAg ICAgICAgICAgICAgICAgY250bDsKPiA+ID4gKyAgIHUzMiAgICAgICAgICAgICAgICAgICAgIGNh cHM7Cj4gPiA+ICsgICB1bnNpZ25lZCBpbnQgICAgICAgICAgICBicHA6OCwKPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZpeGVkdGltaW5nczoxLAo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ3JheXNjYWxlOjE7Cj4gPiA+ICsgICB1bnNpZ25lZCBpbnQgICAgICAg ICAgICBjb25uZWN0b3I7Cj4gPiA+ICsgICBzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmFja2xp Z2h0Owo+ID4gPiArICAgLyoKPiA+ID4gKyAgICAqIElmIHRoZSBCL1IgbGluZXMgYXJlIHN3aXRj aGVkIGJldHdlZW4gdGhlIENMQ0QKPiA+ID4gKyAgICAqIGFuZCB0aGUgcGFuZWwgd2UgbmVlZCB0 byBrbm93IHRoaXMgYW5kIG5vdCB0cnkgdG8KPiA+ID4gKyAgICAqIGNvbXBlbnNhdGUgd2l0aCB0 aGUgQkdSIGJpdCBpbiB0aGUgY29udHJvbCByZWdpc3Rlci4KPiA+ID4gKyAgICAqLwo+ID4gPiAr ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgYmdyX2Nvbm5lY3Rpb247Cj4gPiA+ICt9Owo+ID4g PiArCj4gPiA+ICtzdHJ1Y3QgY2xjZF9yZWdzIHsKPiA+ID4gKyAgIHUzMiAgICAgICAgICAgICAg ICAgICAgIHRpbTA7Cj4gPiA+ICsgICB1MzIgICAgICAgICAgICAgICAgICAgICB0aW0xOwo+ID4g PiArICAgdTMyICAgICAgICAgICAgICAgICAgICAgdGltMjsKPiA+ID4gKyAgIHUzMiAgICAgICAg ICAgICAgICAgICAgIHRpbTM7Cj4gPiA+ICsgICB1MzIgICAgICAgICAgICAgICAgICAgICBjbnRs Owo+ID4gPiArICAgdW5zaWduZWQgbG9uZyAgICAgICAgICAgcGl4Y2xvY2s7Cj4gPiA+ICt9Owo+ ID4gPiArCj4gPiA+ICtzdHJ1Y3QgY2xjZF9mYjsKPiA+ID4gKwo+ID4gPiArLyoKPiA+ID4gKyAq IHRoZSBib2FyZC10eXBlIHNwZWNpZmljIHJvdXRpbmVzCj4gPiA+ICsgKi8KPiA+ID4gK3N0cnVj dCBjbGNkX2JvYXJkIHsKPiA+ID4gKyAgIGNvbnN0IGNoYXIgKm5hbWU7Cj4gPiA+ICsKPiA+ID4g KyAgIC8qCj4gPiA+ICsgICAgKiBPcHRpb25hbC4gIEhhcmR3YXJlIGNhcGFiaWxpdHkgZmxhZ3Mu Cj4gPiA+ICsgICAgKi8KPiA+ID4gKyAgIHUzMiAgICAgY2FwczsKPiA+ID4gKwo+ID4gPiArICAg LyoKPiA+ID4gKyAgICAqIE9wdGlvbmFsLiAgQ2hlY2sgd2hldGhlciB0aGUgdmFyIHN0cnVjdHVy ZSBpcyBhY2NlcHRhYmxlCj4gPiA+ICsgICAgKiBmb3IgdGhpcyBkaXNwbGF5Lgo+ID4gPiArICAg ICovCj4gPiA+ICsgICBpbnQgICAgICgqY2hlY2spKHN0cnVjdCBjbGNkX2ZiICpmYiwgc3RydWN0 IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIpOwo+ID4gPiArCj4gPiA+ICsgICAvKgo+ID4gPiArICAg ICogQ29tcHVsc29yeS4gIERlY29kZSBmYi0+ZmIudmFyIGludG8gcmVncy0+Ki4gIEluIHRoZSBj YXNlIG9mCj4gPiA+ICsgICAgKiBmaXhlZCB0aW1pbmcsIHNldCByZWdzLT4qIHRvIHRoZSByZWdp c3RlciB2YWx1ZXMgcmVxdWlyZWQuCj4gPiA+ICsgICAgKi8KPiA+ID4gKyAgIHZvaWQgICAgKCpk ZWNvZGUpKHN0cnVjdCBjbGNkX2ZiICpmYiwgc3RydWN0IGNsY2RfcmVncyAqcmVncyk7Cj4gPiA+ ICsKPiA+ID4gKyAgIC8qCj4gPiA+ICsgICAgKiBPcHRpb25hbC4gIERpc2FibGUgYW55IGV4dHJh IGRpc3BsYXkgaGFyZHdhcmUuCj4gPiA+ICsgICAgKi8KPiA+ID4gKyAgIHZvaWQgICAgKCpkaXNh YmxlKShzdHJ1Y3QgY2xjZF9mYiAqKTsKPiA+ID4gKwo+ID4gPiArICAgLyoKPiA+ID4gKyAgICAq IE9wdGlvbmFsLiAgRW5hYmxlIGFueSBleHRyYSBkaXNwbGF5IGhhcmR3YXJlLgo+ID4gPiArICAg ICovCj4gPiA+ICsgICB2b2lkICAgICgqZW5hYmxlKShzdHJ1Y3QgY2xjZF9mYiAqKTsKPiA+ID4g Kwo+ID4gPiArICAgLyoKPiA+ID4gKyAgICAqIFNldHVwIHBsYXRmb3JtIHNwZWNpZmljIHBhcnRz IG9mIENMQ0QgZHJpdmVyCj4gPiA+ICsgICAgKi8KPiA+ID4gKyAgIGludCAgICAgKCpzZXR1cCko c3RydWN0IGNsY2RfZmIgKik7Cj4gPiA+ICsKPiA+ID4gKyAgIC8qCj4gPiA+ICsgICAgKiBtbWFw IHRoZSBmcmFtZWJ1ZmZlciBtZW1vcnkKPiA+ID4gKyAgICAqLwo+ID4gPiArICAgaW50ICAgICAo Km1tYXApKHN0cnVjdCBjbGNkX2ZiICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKPiA+ID4g Kwo+ID4gPiArICAgLyoKPiA+ID4gKyAgICAqIFJlbW92ZSBwbGF0Zm9ybSBzcGVjaWZpYyBwYXJ0 cyBvZiBDTENEIGRyaXZlcgo+ID4gPiArICAgICovCj4gPiA+ICsgICB2b2lkICAgICgqcmVtb3Zl KShzdHJ1Y3QgY2xjZF9mYiAqKTsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gK3N0cnVjdCBhbWJh X2RldmljZTsKPiA+ID4gK3N0cnVjdCBjbGs7Cj4gPiA+ICsKPiA+ID4gKy8qIHRoaXMgZGF0YSBz dHJ1Y3R1cmUgZGVzY3JpYmVzIGVhY2ggZnJhbWUgYnVmZmVyIGRldmljZSB3ZSBmaW5kICovCj4g PiA+ICtzdHJ1Y3QgY2xjZF9mYiB7Cj4gPiA+ICsgICBzdHJ1Y3QgZmJfaW5mbyAgICAgICAgICBm YjsKPiA+ID4gKyAgIHN0cnVjdCBhbWJhX2RldmljZSAgICAgICpkZXY7Cj4gPiA+ICsgICBzdHJ1 Y3QgY2xrICAgICAgICAgICAgICAqY2xrOwo+ID4gPiArICAgc3RydWN0IGNsY2RfcGFuZWwgICAg ICAgKnBhbmVsOwo+ID4gPiArICAgc3RydWN0IGNsY2RfYm9hcmQgICAgICAgKmJvYXJkOwo+ID4g PiArICAgdm9pZCAgICAgICAgICAgICAgICAgICAgKmJvYXJkX2RhdGE7Cj4gPiA+ICsgICB2b2lk IF9faW9tZW0gICAgICAgICAgICAqcmVnczsKPiA+ID4gKyAgIHUxNiAgICAgICAgICAgICAgICAg ICAgIG9mZl9pZW5iOwo+ID4gPiArICAgdTE2ICAgICAgICAgICAgICAgICAgICAgb2ZmX2NudGw7 Cj4gPiA+ICsgICB1MzIgICAgICAgICAgICAgICAgICAgICBjbGNkX2NudGw7Cj4gPiA+ICsgICB1 MzIgICAgICAgICAgICAgICAgICAgICBjbWFwWzE2XTsKPiA+ID4gKyAgIGJvb2wgICAgICAgICAg ICAgICAgICAgIGNsa19lbmFibGVkOwo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArc3RhdGljIGlu bGluZSB2b2lkIGNsY2RmYl9kZWNvZGUoc3RydWN0IGNsY2RfZmIgKmZiLCBzdHJ1Y3QgY2xjZF9y ZWdzICpyZWdzKQo+ID4gPiArewo+ID4gPiArICAgc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2 YXIgPSAmZmItPmZiLnZhcjsKPiA+ID4gKyAgIHUzMiB2YWwsIGNwbDsKPiA+ID4gKwo+ID4gPiAr ICAgLyoKPiA+ID4gKyAgICAqIFByb2dyYW0gdGhlIENMQ0QgY29udHJvbGxlciByZWdpc3RlcnMg YW5kIHN0YXJ0IHRoZSBDTENECj4gPiA+ICsgICAgKi8KPiA+ID4gKyAgIHZhbCA9ICgodmFyLT54 cmVzIC8gMTYpIC0gMSkgPDwgMjsKPiA+ID4gKyAgIHZhbCB8PSAodmFyLT5oc3luY19sZW4gLSAx KSA8PCA4Owo+ID4gPiArICAgdmFsIHw9ICh2YXItPnJpZ2h0X21hcmdpbiAtIDEpIDw8IDE2Owo+ ID4gPiArICAgdmFsIHw9ICh2YXItPmxlZnRfbWFyZ2luIC0gMSkgPDwgMjQ7Cj4gPiA+ICsgICBy ZWdzLT50aW0wID0gdmFsOwo+ID4gPiArCj4gPiA+ICsgICB2YWwgPSB2YXItPnlyZXM7Cj4gPiA+ ICsgICBpZiAoZmItPnBhbmVsLT5jbnRsICYgQ05UTF9MQ0REVUFMKQo+ID4gPiArICAgICAgICAg ICB2YWwgLz0gMjsKPiA+ID4gKyAgIHZhbCAtPSAxOwo+ID4gPiArICAgdmFsIHw9ICh2YXItPnZz eW5jX2xlbiAtIDEpIDw8IDEwOwo+ID4gPiArICAgdmFsIHw9IHZhci0+bG93ZXJfbWFyZ2luIDw8 IDE2Owo+ID4gPiArICAgdmFsIHw9IHZhci0+dXBwZXJfbWFyZ2luIDw8IDI0Owo+ID4gPiArICAg cmVncy0+dGltMSA9IHZhbDsKPiA+ID4gKwo+ID4gPiArICAgdmFsID0gZmItPnBhbmVsLT50aW0y Owo+ID4gPiArICAgdmFsIHw9IHZhci0+c3luYyAmIEZCX1NZTkNfSE9SX0hJR0hfQUNUICA/IDAg OiBUSU0yX0lIUzsKPiA+ID4gKyAgIHZhbCB8PSB2YXItPnN5bmMgJiBGQl9TWU5DX1ZFUlRfSElH SF9BQ1QgPyAwIDogVElNMl9JVlM7Cj4gPiA+ICsKPiA+ID4gKyAgIGNwbCA9IHZhci0+eHJlc192 aXJ0dWFsOwo+ID4gPiArICAgaWYgKGZiLT5wYW5lbC0+Y250bCAmIENOVExfTENEVEZUKSAgICAg ICAgLyogVEZUICovCj4gPiA+ICsgICAgICAgICAgIC8qIC8gMSAqLzsKPiA+ID4gKyAgIGVsc2Ug aWYgKCF2YXItPmdyYXlzY2FsZSkgICAgICAgICAgICAgICAgIC8qIFNUTiBjb2xvciAqLwo+ID4g PiArICAgICAgICAgICBjcGwgPSBjcGwgKiA4IC8gMzsKPiA+ID4gKyAgIGVsc2UgaWYgKGZiLT5w YW5lbC0+Y250bCAmIENOVExfTENETU9OTzgpIC8qIFNUTiBtb25vY2hyb21lLCA4Yml0ICovCj4g PiA+ICsgICAgICAgICAgIGNwbCAvPSA4Owo+ID4gPiArICAgZWxzZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogU1ROIG1vbm9jaHJvbWUsIDRiaXQgKi8KPiA+ID4gKyAg ICAgICAgICAgY3BsIC89IDQ7Cj4gPiA+ICsKPiA+ID4gKyAgIHJlZ3MtPnRpbTIgPSB2YWwgfCAo KGNwbCAtIDEpIDw8IDE2KTsKPiA+ID4gKwo+ID4gPiArICAgcmVncy0+dGltMyA9IGZiLT5wYW5l bC0+dGltMzsKPiA+ID4gKwo+ID4gPiArICAgdmFsID0gZmItPnBhbmVsLT5jbnRsOwo+ID4gPiAr ICAgaWYgKHZhci0+Z3JheXNjYWxlKQo+ID4gPiArICAgICAgICAgICB2YWwgfD0gQ05UTF9MQ0RC VzsKPiA+ID4gKwo+ID4gPiArICAgaWYgKGZiLT5wYW5lbC0+Y2FwcyAmJiBmYi0+Ym9hcmQtPmNh cHMgJiYgdmFyLT5iaXRzX3Blcl9waXhlbCA+PSAxNikgewo+ID4gPiArICAgICAgICAgICAvKgo+ ID4gPiArICAgICAgICAgICAgKiBpZiBib2FyZCBhbmQgcGFuZWwgc3VwcGx5IGNhcGFiaWxpdGll cywgd2UgY2FuIHN1cHBvcnQKPiA+ID4gKyAgICAgICAgICAgICogY2hhbmdpbmcgQkdSL1JHQiBk ZXBlbmRpbmcgb24gc3VwcGxpZWQgcGFyYW1ldGVycy4gSGVyZQo+ID4gPiArICAgICAgICAgICAg KiB3ZSBzd2l0Y2ggdG8gd2hhdCB0aGUgZnJhbWVidWZmZXIgaXMgcHJvdmlkaW5nIGlmIG5lZWQK PiA+ID4gKyAgICAgICAgICAgICogYmUsIHNvIGlmIHRoZSBmcmFtZWJ1ZmZlciBpcyBCR1IgYnV0 IHRoZSBkaXNwbGF5IGNvbm5lY3Rpb24KPiA+ID4gKyAgICAgICAgICAgICogaXMgUkdCIChmaXJz dCBjYXNlKSB3ZSBzd2l0Y2ggaXQgYXJvdW5kLiBWaWNlIHZlcnNhIG11dGF0aXMKPiA+ID4gKyAg ICAgICAgICAgICogbXV0YW5kaXMgaWYgdGhlIGZyYW1lYnVmZmVyIGlzIFJHQiBidXQgdGhlIGRp c3BsYXkgY29ubmVjdGlvbgo+ID4gPiArICAgICAgICAgICAgKiBpcyBCR1IsIHdlIGZsaXAgaXQg YXJvdW5kLgo+ID4gPiArICAgICAgICAgICAgKi8KPiA+ID4gKyAgICAgICAgICAgaWYgKHZhci0+ cmVkLm9mZnNldCA9PSAwKQo+ID4gPiArICAgICAgICAgICAgICAgICAgIHZhbCAmPSB+Q05UTF9C R1I7Cj4gPiA+ICsgICAgICAgICAgIGVsc2UKPiA+ID4gKyAgICAgICAgICAgICAgICAgICB2YWwg fD0gQ05UTF9CR1I7Cj4gPiA+ICsgICAgICAgICAgIGlmIChmYi0+cGFuZWwtPmJncl9jb25uZWN0 aW9uKQo+ID4gPiArICAgICAgICAgICAgICAgICAgIHZhbCBePSBDTlRMX0JHUjsKPiA+ID4gKyAg IH0KPiA+ID4gKwo+ID4gPiArICAgc3dpdGNoICh2YXItPmJpdHNfcGVyX3BpeGVsKSB7Cj4gPiA+ ICsgICBjYXNlIDE6Cj4gPiA+ICsgICAgICAgICAgIHZhbCB8PSBDTlRMX0xDREJQUDE7Cj4gPiA+ ICsgICAgICAgICAgIGJyZWFrOwo+ID4gPiArICAgY2FzZSAyOgo+ID4gPiArICAgICAgICAgICB2 YWwgfD0gQ05UTF9MQ0RCUFAyOwo+ID4gPiArICAgICAgICAgICBicmVhazsKPiA+ID4gKyAgIGNh c2UgNDoKPiA+ID4gKyAgICAgICAgICAgdmFsIHw9IENOVExfTENEQlBQNDsKPiA+ID4gKyAgICAg ICAgICAgYnJlYWs7Cj4gPiA+ICsgICBjYXNlIDg6Cj4gPiA+ICsgICAgICAgICAgIHZhbCB8PSBD TlRMX0xDREJQUDg7Cj4gPiA+ICsgICAgICAgICAgIGJyZWFrOwo+ID4gPiArICAgY2FzZSAxNjoK PiA+ID4gKyAgICAgICAgICAgLyoKPiA+ID4gKyAgICAgICAgICAgICogUEwxMTAgY2Fubm90IGNo b29zZSBiZXR3ZWVuIDU1NTEgYW5kIDU2NSBtb2RlcyBpbiBpdHMKPiA+ID4gKyAgICAgICAgICAg ICogY29udHJvbCByZWdpc3Rlci4gIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSA1NjUgd2l0aAo+ID4g PiArICAgICAgICAgICAgKiBjdXN0b20gZXh0ZXJuYWwgd2lyaW5nLgo+ID4gPiArICAgICAgICAg ICAgKi8KPiA+ID4gKyAgICAgICAgICAgaWYgKGFtYmFfcGFydChmYi0+ZGV2KSA9PSAweDExMCB8 fAo+ID4gPiArICAgICAgICAgICAgICAgdmFyLT5ncmVlbi5sZW5ndGggPT0gNSkKPiA+ID4gKyAg ICAgICAgICAgICAgICAgICB2YWwgfD0gQ05UTF9MQ0RCUFAxNjsKPiA+ID4gKyAgICAgICAgICAg ZWxzZSBpZiAodmFyLT5ncmVlbi5sZW5ndGggPT0gNikKPiA+ID4gKyAgICAgICAgICAgICAgICAg ICB2YWwgfD0gQ05UTF9MQ0RCUFAxNl81NjU7Cj4gPiA+ICsgICAgICAgICAgIGVsc2UKPiA+ID4g KyAgICAgICAgICAgICAgICAgICB2YWwgfD0gQ05UTF9MQ0RCUFAxNl80NDQ7Cj4gPiA+ICsgICAg ICAgICAgIGJyZWFrOwo+ID4gPiArICAgY2FzZSAzMjoKPiA+ID4gKyAgICAgICAgICAgdmFsIHw9 IENOVExfTENEQlBQMjQ7Cj4gPiA+ICsgICAgICAgICAgIGJyZWFrOwo+ID4gPiArICAgfQo+ID4g PiArCj4gPiA+ICsgICByZWdzLT5jbnRsID0gdmFsOwo+ID4gPiArICAgcmVncy0+cGl4Y2xvY2sg PSB2YXItPnBpeGNsb2NrOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW5saW5lIGlu dCBjbGNkZmJfY2hlY2soc3RydWN0IGNsY2RfZmIgKmZiLCBzdHJ1Y3QgZmJfdmFyX3NjcmVlbmlu Zm8gKnZhcikKPiA+ID4gK3sKPiA+ID4gKyAgIHZhci0+eHJlc192aXJ0dWFsID0gdmFyLT54cmVz ID0gKHZhci0+eHJlcyArIDE1KSAmIH4xNTsKPiA+ID4gKyAgIHZhci0+eXJlc192aXJ0dWFsID0g dmFyLT55cmVzID0gKHZhci0+eXJlcyArIDEpICYgfjE7Cj4gPiA+ICsKPiA+ID4gKyNkZWZpbmUg Q0hFQ0soZSxsLGgpICh2YXItPmUgPCBsIHx8IHZhci0+ZSA+IGgpCj4gPiA+ICsgICBpZiAoQ0hF Q0socmlnaHRfbWFyZ2luLCAoNSsxKSwgMjU2KSB8fCAgLyogYmFjayBwb3JjaCAqLwo+ID4gPiAr ICAgICAgIENIRUNLKGxlZnRfbWFyZ2luLCAoNSsxKSwgMjU2KSB8fCAgIC8qIGZyb250IHBvcmNo ICovCj4gPiA+ICsgICAgICAgQ0hFQ0soaHN5bmNfbGVuLCAoNSsxKSwgMjU2KSB8fAo+ID4gPiAr ICAgICAgIHZhci0+eHJlcyA+IDQwOTYgfHwKPiA+ID4gKyAgICAgICB2YXItPmxvd2VyX21hcmdp biA+IDI1NSB8fCAgICAgICAgICAvKiBiYWNrIHBvcmNoICovCj4gPiA+ICsgICAgICAgdmFyLT51 cHBlcl9tYXJnaW4gPiAyNTUgfHwgICAgICAgICAgLyogZnJvbnQgcG9yY2ggKi8KPiA+ID4gKyAg ICAgICB2YXItPnZzeW5jX2xlbiA+IDMyIHx8Cj4gPiA+ICsgICAgICAgdmFyLT55cmVzID4gMTAy NCkKPiA+ID4gKyAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ICsjdW5kZWYgQ0hFQ0sK PiA+ID4gKwo+ID4gPiArICAgLyogc2luZ2xlIHBhbmVsIG1vZGU6IFBDRCA9IG1heChQQ0QsIDEp ICovCj4gPiA+ICsgICAvKiBkdWFsIHBhbmVsIG1vZGU6IFBDRCA9IG1heChQQ0QsIDUpICovCj4g PiA+ICsKPiA+ID4gKyAgIC8qCj4gPiA+ICsgICAgKiBZb3UgY2FuJ3QgY2hhbmdlIHRoZSBncmF5 c2NhbGUgc2V0dGluZywgYW5kCj4gPiA+ICsgICAgKiB3ZSBjYW4gb25seSBkbyBub24taW50ZXJs YWNlZCB2aWRlby4KPiA+ID4gKyAgICAqLwo+ID4gPiArICAgaWYgKHZhci0+Z3JheXNjYWxlICE9 IGZiLT5mYi52YXIuZ3JheXNjYWxlIHx8Cj4gPiA+ICsgICAgICAgKHZhci0+dm1vZGUgJiBGQl9W TU9ERV9NQVNLKSAhPSBGQl9WTU9ERV9OT05JTlRFUkxBQ0VEKQo+ID4gPiArICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKPiA+ID4gKwo+ID4gPiArI2RlZmluZSBDSEVDSyhlKSAodmFyLT5lICE9 IGZiLT5mYi52YXIuZSkKPiA+ID4gKyAgIGlmIChmYi0+cGFuZWwtPmZpeGVkdGltaW5ncyAmJgo+ ID4gPiArICAgICAgIChDSEVDSyh4cmVzKSAgICAgICAgICAgICAgICB8fAo+ID4gPiArICAgICAg ICBDSEVDSyh5cmVzKSAgICAgICAgICAgICAgICB8fAo+ID4gPiArICAgICAgICBDSEVDSyhiaXRz X3Blcl9waXhlbCkgICAgICB8fAo+ID4gPiArICAgICAgICBDSEVDSyhwaXhjbG9jaykgICAgICAg ICAgICB8fAo+ID4gPiArICAgICAgICBDSEVDSyhsZWZ0X21hcmdpbikgICAgICAgICB8fAo+ID4g PiArICAgICAgICBDSEVDSyhyaWdodF9tYXJnaW4pICAgICAgICB8fAo+ID4gPiArICAgICAgICBD SEVDSyh1cHBlcl9tYXJnaW4pICAgICAgICB8fAo+ID4gPiArICAgICAgICBDSEVDSyhsb3dlcl9t YXJnaW4pICAgICAgICB8fAo+ID4gPiArICAgICAgICBDSEVDSyhoc3luY19sZW4pICAgICAgICAg ICB8fAo+ID4gPiArICAgICAgICBDSEVDSyh2c3luY19sZW4pICAgICAgICAgICB8fAo+ID4gPiAr ICAgICAgICBDSEVDSyhzeW5jKSkpCj4gPiA+ICsgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ ID4gPiArI3VuZGVmIENIRUNLCj4gPiA+ICsKPiA+ID4gKyAgIHZhci0+bm9uc3RkID0gMDsKPiA+ ID4gKyAgIHZhci0+YWNjZWxfZmxhZ3MgPSAwOwo+ID4gPiArCj4gPiA+ICsgICByZXR1cm4gMDsK PiA+ID4gK30KPiA+ID4KPiA+Cj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+ID4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+ID4gZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwKPgo+IC0tCj4gRGFuaWVsIFZldHRlcgo+IFNvZnR3YXJl IEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+IGh0dHA6Ly9ibG9nLmZmd2xsLmNoCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2Vy bmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVs Cg==